Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[+] Explicit Path ID: Clarify that endpoints use the same Path ID in both directions. #315

Merged
merged 36 commits into from
May 24, 2024
Merged
Changes from 18 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
d1d6c6e
[+] Clarify that endpoints use the same Path ID for one specific path…
Yanmei-Liu Mar 17, 2024
a20fadb
[+] specify PATH_ABANDON cause all the CID allocated for the Path ID …
Yanmei-Liu Mar 17, 2024
34594ef
Update draft-ietf-quic-multipath.md
Yanmei-Liu Mar 17, 2024
4926786
Update draft-ietf-quic-multipath.md
Yanmei-Liu Mar 17, 2024
cab06c3
Update draft-ietf-quic-multipath.md
Yanmei-Liu Mar 20, 2024
e28e10e
[+] Clarify that endpoints use the same Path ID for one specific path…
Yanmei-Liu Mar 17, 2024
b74c5ae
[+] specify PATH_ABANDON cause all the CID allocated for the Path ID …
Yanmei-Liu Mar 17, 2024
fdbb95a
Update draft-ietf-quic-multipath.md
Yanmei-Liu Mar 17, 2024
982c03c
Update draft-ietf-quic-multipath.md
Yanmei-Liu Mar 17, 2024
aea4f81
Update draft-ietf-quic-multipath.md
Yanmei-Liu Mar 20, 2024
83b0725
Merge branch 'dev/path_id_for_both_direction' of https://github.com/q…
Yanmei-Liu Apr 1, 2024
0cdd559
Update draft-ietf-quic-multipath.md
Yanmei-Liu Apr 1, 2024
d7426a2
Merge branch 'main' into dev/path_id_for_both_direction
mirjak May 8, 2024
6c02f5e
fix-lint
mirjak May 14, 2024
479de5e
Update draft-ietf-quic-multipath.md
mirjak May 14, 2024
323f3cf
nits/typos
mirjak May 17, 2024
1dddecb
Update draft-ietf-quic-multipath.md
Yanmei-Liu May 17, 2024
d877959
Update draft-ietf-quic-multipath.md
Yanmei-Liu May 17, 2024
d20519b
whitespace
mirjak May 17, 2024
a77525b
Move text to initiation section
mirjak May 24, 2024
7f6c5b4
Merge branch 'main' into dev/path_id_for_both_direction
mirjak May 24, 2024
6bf2d85
Update draft-ietf-quic-multipath.md
mirjak May 24, 2024
6c8ea03
Update draft-ietf-quic-multipath.md
mirjak May 24, 2024
62d3678
Editorial clean up
mirjak May 24, 2024
60cf3fc
Update intro
mirjak May 24, 2024
f06069c
whitespace
mirjak May 24, 2024
06c8297
Update draft-ietf-quic-multipath.md
mirjak May 24, 2024
5bf27b0
Update draft-ietf-quic-multipath.md
mirjak May 24, 2024
b712f6b
Update draft-ietf-quic-multipath.md
Yanmei-Liu May 24, 2024
ed01cd8
Update draft-ietf-quic-multipath.md
Yanmei-Liu May 24, 2024
30a56a5
Update draft-ietf-quic-multipath.md
mirjak May 24, 2024
6af816c
Update draft-ietf-quic-multipath.md
mirjak May 24, 2024
46b44c3
Move sentence and editorial fixes
mirjak May 24, 2024
b22dbae
restructure path close section
mirjak May 24, 2024
902ab71
Update draft-ietf-quic-multipath.md
mirjak May 24, 2024
a865fea
whitespace
mirjak May 24, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
31 changes: 23 additions & 8 deletions draft-ietf-quic-multipath.md
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,19 @@ Each endpoint associates a Receiver Packet Number space to each Path Identifier
that it provides to the peer. Each endpoint associates a Sender Packet Number space
to each Path Identifier received from the peer.


Endpoints use the same Path ID for one specific path in both directions.
For a client-initiated path, the client decides which Path ID is used for the new path
by picking one of the server allocated CID with the specified Path ID.
Then, the client sends a PATH_CHALLENGE with the chosen CID. If the server receives the PATH_CHALLENGE,
it picks a Connection ID with the same path ID for sending the PATH_RESPONSE.

The client MUST choose a previously unused Path ID for which both endpoints have already issued at least one connection ID.
If the server receives a PATH_CHALLENGE before receiving a MP_NEW_CONNECTION_ID
for the specific path, it MAY choose to ignore the PATH_CHALLENGE, or it can
choose to send the PATH_RESPONSE frame upon reception of a
MP_NEW_CONNECTION_ID frame containing the corresponding Path ID.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the client should only try to open a path if it had send CIDs for that path ID (and the reception has been ack'ed). Then if the server received a path challenges for a path ID it doesn't have a CID for, it should either be an error or it should send a path abandon on another path.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the client should only try to open a path if it had send CIDs for that path ID (and the reception has been ack'ed).

We could be in the situation where the server has sent MP_NEW_CONNECTION_ID frames to the client, and the client wants to open a new path by sending a PATH_CHALLENGE along with a MP_NEW_CONNECTION_ID frame with the associated Path ID.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes sending it in the same packet is fine as well because than it cannot be lost or reordered separately.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually this issue is not resolved because if you send it in the same packet, it's "just" a matter of processing it the right order. However, otherwise I don't think it's a good idea to save the path challenge for later because then you also have to specify how long to wait.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed this text for now. I will create a separate PR (and issue) for this as soon as we have merged this PR.


The Path Identifier associated with the Destination Connection ID is used to
construct the packet protection nonce defined in {#multipath-aead}.

Expand Down Expand Up @@ -474,6 +487,12 @@ However, implicit signals such as idle time or packet losses might be
the only way for an endhost to detect path closure (see
{{idle-time-close}}).

PATH_ABANDON frame causes all CID allocated by both of the endpoints for the specified Path ID to be retired.
mirjak marked this conversation as resolved.
Show resolved Hide resolved

When path validation of a new path fails, the used Path ID is anyway consumed,
mirjak marked this conversation as resolved.
Show resolved Hide resolved
and the endpoint MUST abandon the path by sending a PATH_ABANDON frame
on another path to inform the peer that the Path ID cannot be used anymore.

Note that other explicit closing mechanisms of {{QUIC-TRANSPORT}} still
apply on the whole connection. In particular, the reception of either a
CONNECTION_CLOSE ({{Section 10.2 of QUIC-TRANSPORT}}) or a Stateless
Expand Down Expand Up @@ -1210,8 +1229,7 @@ PATH_ABANDON frames are formatted as shown in {{fig-path-abandon-format}}.
PATH_ABANDON frames contain the following fields:

Path Identifier:
: The Path Identifier of the Destination Connection ID used by the
receiver of the frame to send packets over the path to abandon.
: The Path Identifier to abandon.

Error Code:
: A variable-length integer that indicates the reason for abandoning
Expand Down Expand Up @@ -1253,9 +1271,8 @@ PATH_STANDBY frames are formatted as shown in {{fig-path-standby-format}}.
PATH_STANDBY Frames contain the following fields:

Path Identifier:
: The Path Identifier of the Destination Connection ID used by the
receiver of this frame to send packets over the path the status update
corresponds to. All Destination Connection IDs that have been issued
: The Path Identifier the status update corresponds to.
All Destination Connection IDs that have been issued
MAY be specified, even if they are not yet in use over a path.

Path Status sequence number:
Expand Down Expand Up @@ -1303,9 +1320,7 @@ PATH_AVAILABLE frames are formatted as shown in {{fig-path-available-format}}.
PATH_AVAILABLE frames contain the following fields:

Path Identifier:
: The Path Identifier of the Destination Connection ID used by the
receiver of this frame to send packets over the path the status update
corresponds to.
: The Path Identifier the status update corresponds to.

Path Status sequence number:
: A variable-length integer specifying
Expand Down