Comments (4)
If a server does not provide a preferred address, but provides NEW_CONNECTION_ID frames with sequence numbers 2, 3, and 4, the client treats this as a connection error of CONNECTION_ID_LIMIT_ERROR. I believe that this is incorrect as the preferred address connection doesn't count toward the limit when it is not provided.
Sounds like we disagree about the interpretation of the spec.
Quoting from RFC 9000 section 5.1.1:
The sequence number of the initial connection ID is 0. If the preferred_address transport parameter is sent, the sequence number of the supplied connection ID is 1.
Additional connection IDs are communicated to the peer using NEW_CONNECTION_ID frames (Section 19.15). The sequence number on each newly issued connection ID MUST increase by 1.
My interpretation of this text is that, unless the server sends preferred_address TP, sequence number of the the first NEW_CONNECTION_ID frame to be sent by the server is 1.
It seems to me that the current text was adopted as part of quicwg/base-drafts#1821, following the discussion at 18-09 Interim. I "think" we adopted quicwg/base-drafts#1484 (comment), but I could well be wrong.
from quicly.
@martinthomson -- my interpretation of the text is the same as @kazuho's. I believe that the text is actually unambiguous on this point, that seq num 1 is only consumed by the SPA if an SPA is sent, and 1 is available otherwise for NEW_CONNECTION_ID frames.
from quicly.
OK, that interpretation is easy enough to adopt (I hope), so I'll do that in my implementation.
@kazuho, @janaiyengar, do you think that the text in RFC 9000 is sufficiently clear? I don't think that it is. Should we raise this on the list? An erratum might be necessary.
from quicly.
I would say that it is more natural to interpret the text that way. There's no point in having that if clause if CID1 was going to be absent when preferred_address TP is omitted.
At the same time, I think it would make sense to consult the list.
from quicly.
Related Issues (20)
- QUIC version HOT 2
- Disable encryption HOT 1
- ping-pong of STREAM_DATA_BLOCKED and MAX_STREAM_DATA
- Quicly library encapsulates Datagram
- Store preferred_address.connection_id like any other new connection ID
- Quicly in non-http3 applications
- Warning variable 'is_late_ack' set but not used
- Assertion in 'do_send' (quicly.c) HOT 2
- BUG: Unknown Frame wrongly returned error code HOT 2
- BUG: Receipt of NEW_TOKEN by a server is not handled correctly HOT 3
- Queries regarding Encryption Offload API
- The "new unidirectional limit 0 decreases the current limit: 3" error HOT 1
- Decryption Offload: Connection ID(cid) encryption/decryption
- Generating qlog files when using quicly as a library
- Support for layer 2 Raw Sockets
- The example-echo sometimes not work when run on the same host
- datagram TP must be remembered
- Assertion `s != -1' failed
- Whether there are plans to support FEC or mutipath HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from quicly.