Thanks Gorry! Very helpful! However, note that we are currently working on a 
mayor editorial pass which you can see on github. Therefore some of the things 
below are already gone. But there are a bunch of good comment about normative 
language. See below

From: Gorry Fairhurst <go...@erg.abdn.ac.uk>
Organisation: UNIVERSITY OF ABERDEEN
Date: Thursday, 13. March 2025 at 13:26
To: "draft-ietf-quic-multipath.auth...@ietf.org" 
<draft-ietf-quic-multipath.auth...@ietf.org>
Cc: Gorry Fairhurst <go...@erg.abdn.ac.uk>, QUIC WG <quic@ietf.org>
Subject: A few comments on draft-ietf-quic-multipath-13
Resent from: <alias-boun...@ietf.org>
Resent to: <olivier.bonavent...@uclouvain.be>, <huit...@huitema.net>, 
<miaoji....@alibaba-inc.com>, <mirja.kuehlew...@ericsson.com>, 
<quentin.deconi...@umons.ac.be>, <yunfei...@uber.com>
Resent date: Thursday, 13. March 2025 at 13:26


Thank you for writing this detailed I-D, it is a while since I have reviewed 
this draft. I read it on my journey towards Bangkok and the current I-D appears 
to me to be very developed and clear, but  I do have a few comments and just a 
few concerns about things that I think might be underspecified, see below.


Section 1

Editorial:
/also the port numbers/
… and other selectors such as the DSCP.

[MK] This sentence is gone.


Section 1.1
Each bullet deserves  a fullstop - please add some stops.

Proposal is to remove this section (see PR #504 
https://github.com/quicwg/multipath/pull/504)


Section 1.2
Path identifier  and “Path ID” are both used after the definition of Path 
ID.Could we move to use only Path ID?

[MK] I tried to use Path identifier as the term and Path ID as the field, but I 
also had this on my list to double-check and maybe only use Path ID. I will 
check and opened an editorial issue: 
https://github.com/quicwg/multipath/issues/510


Section 2
The section uses the words the “current version”  …  . What is the intention 
when published?

[MK] This should be replaced by the RFC editor with the IANA signed number.


Section 3.
OLD:
  However, establishment of additional paths from any local
   address to other peer addresses (e.g carried by peer’s
   preferred_address) is valid immediately.
- This reads odd, could we write something like:
  However, establishment of additional paths from any local
   address to other peer addresses (e.g carried by a peer’s
   preferred_address) is immediately valid .

[MK] I already changed this sentence in my edit pass (see PR #506 
https://github.com/quicwg/multipath/pull/506) remove the “any local address” as 
that is not needed. You only changed the “immediately valid”, right? I think we 
already fixed that somehow.


OLD:
 After receiving packets from the client on a new path, if the server
   decides to use the new path, the server MUST validate the peer's
   address before sending any data packets as described in (Section 8.2
   of [QUIC-TRANSPORT]), unless it has previously validated the 4-tuple
   used for that path.
- I found this confusing, is this better?
:
   After receiving packets from the client on a new path, a server
   can decides to use the new path. The server MUST validate the peer's
   address before sending any data packets as described in (Section 8.2
   of [QUIC-TRANSPORT]), unless it has previously validated the 4-tuple
  that is  used for that path.

[MK] I wouldn’t want to split this up into two sentences because the point is 
only if you plan to actually use the path meaning actually sending packets 
yourself, you have to validate. That’s what we discussed extensively in some 
meeting and this is the wording we had at the end, so I’s rather keep it as it.


OLD:
Similarly after a successful handshake,
   endpoints SHOULD also use the PATH_NEW_CONNECTION_ID frame to provide
   new connection IDs for Path ID 0 and, respectively, the
   PATH_RETIRE_CONNECTION_ID frame to retire connection IDs for Path ID
   0.
- what happens if this SHOULD is not obeyed?

[MK] Nothing. This is just a recommendation. We also discussed this extensively 
and we could agree to MUST, so we keep this as a (normative) preference.


OLD:
In such a case, the receiver reacts as
   specified in Section 9.3 of [QUIC-TRANSPORT] by initiating path
   validation but MUST use a new connection ID for the same Path ID.
- What does a receiver do if this MUST is not obeyed?

[MK] In you don’t use the same Path ID it’s not migration; it is opening a new 
path. If the server would try to open a new path, that’s actually not allowed, 
but that’s already part of RFC9000.


OLD:
To avoid issues when clients make the "wrong"
   choice, a server should issue a token that is capable of validating
   any of the previously validated addresses.  Further guidance on token
   usage can be found in Section 8.1.3 of [QUIC-TRANSPORT].
- Why is this optional if it could break things: Is this a place where the Spec 
could say “SHOULD”?

[MK] Yes, I think this was an oversight and I fixed this already in PR #507 
https://github.com/quicwg/multipath/pull/507/files


Concern:
 OLD:
If an endpoint starts using a path that was marked as "standby" by
   its peer because it has detected issues on the paths marked as
   "available", it is RECOMMENDED to update its own path state signaling
   such that the peer avoids using the broken path.
- why do you choose recommended rather than SHOULD, these seems like a protocol 
definition.

[MK] My understanding is that these are equivalent and it just a matter of 
sentence structure. See RFC2119: “SHOULD   This word, or the adjective 
"RECOMMENDED"”


OLD:
An endpoint that
   detects a path breakage can also explicitly close the path by sending
   a PATH_ABANDON frame (see Section 3.3) in order to
- “can also” is this really MAY?

[MK] This is not a recommendation or instruction, but a statement. When and how 
to decide to close a path is really a local decision and the protocol in this 
spec actually intends to not give any guidance about this part of muitpath 
usage.


Section 3.3
- can we be more explicit about what the receiver does (discard, process, etc) 
if the peer does receive packets after a path close.

[MK] I thought this is actually discussed in section 3.3.1 (Avoiding Spurious 
Stateless Resets). However, it’s the same that happens in RFC900 if you receive 
a packet with an unknow CID.


Concern:
OLD:
   PATH_ABANDON frames can be sent on any path, not only the path that
   is intended to be closed.  It is RECOMMENDED to send the PATH_ABANDON
   frames on another path, especially if connectivity on the to-be-
   abandoned path is expected to be broken.

- I thought and think I am unsure about what is intended. How does this relate 
to an active and inactive paths? I do wonder if some sort of guidance on how to 
do this is needed?

[MK] If you close a path (and not the whole connection), you need at least one 
more open path. However, we don’t give any guidance on which of these open 
paths to send the path_abandon. Why should we? Note that an active path (ID) is 
any path that is smaller than the max path ID. However, if we actually use the 
path by sending packets, we made sure we used the word “open” in the draft.


OLD:
   Over a given path, both endpoints use connection IDs associated to a
   given Path ID.  To initiate a path, each endpoint needs to advertise
   at least one connection ID for a given Path ID to its peer.
   Endpoints SHOULD NOT introduce discontinuity in the issuing of Path
   IDs through their connection ID advertisements as path initiation
   requires available connection IDs for the same Path ID on both sides.
- I think I understand, but I would like text to be sure.
- I can see about conservative of IDs, but is there more than simply not 
wasting the space?  - I’m trying to understand what breaks if the SHOULD NOT is 
not obeyed.

[MK] I also noted that with the recommendation above to send CIDs for all 
active Path ID. This advise is actually less needed, however, it might be still 
good to have it. This is to avoid the case where e.g. may path ID is 3 and e.g. 
only path 0 is open but one peer send only CIDs for path 1 and the other only 
for path 2. In this case each peer has issued one unused CID but because you 
need to use the same path ID to open a new path, you can’t open a new path. So 
to answer you question in short: you risk that you can’t open a new path, 
however, it does break the protocol.


Section 5
- I liked the examples. I think these examples are informative, if they are cam 
we  say so at the start of section 5, so there is no chance of a double 
definition from this section.
- Would it make sense to provide the examples after all the definitions? It 
certainly would have made reading easier  for me.

[MK] Yes I’m moved them already in latest version on github.


Section 6
- I liked the implementation considerations a lot. I think (?) this is 
informative, can we  say so at the start of section 6?

[MK] Yes we can say that explicitly.


Section 6.2
NiT: /also send/also sends/

[MK] I don’t find this. Can you give me the whole sentence.


Section 6.3
NiT: /This lower/This is lower/

[MK] Fixed a spart of #509 https://github.com/quicwg/multipath/pull/509/files


Concern:
OLD:
   It might be prudent
   for nodes to remember the path over which the PATH_ACK that produced
   the minimum RTT was received, and to restart the minimum RTT
   computation if that path is abandoned.
- I am glad this is noted.
- Some might say that was an oversight in QUIC, that the minRTT is not current 
for a path, i.e. if the path properties change with time, the minRTT is never 
increased- however, my comment  here is that the QUIC sender could actually 
just reset the minRTT periodically or better still reset this based on a 
minimum filter for several periods of time. My point is at least some QUIC 
implementations do not preserve the minRTT for the whole connection.

[MK] I think that is an issue for RFC9000. Or do you think anything is needed 
here?


Concern:

OLD:

 To avoid this pitfall, endpoints could adopt a

   simple coordination rule, such as only letting the client initiate

   closure of duplicate paths, or perhaps relying on the application

   protocol to decide which paths should be closed.

-

At the end of section 6 I see teh above worrying text. Why does the protocol 
not provide a recommendation in RFC2119 language that would avoid at least part 
of the misery from uncoordinated abandons? - I don’t see why this is only 
written as advice, rather than specified by the WG.

[MK] We discussed this in the group and decided that we only want to give no 
normative guidance and leave it to the implementation or application.


Section 7.4:

OLD:

   Note that the NEW_CONNECTION_ID frame can only be used to issue or

   retire connection IDs for the initial path with Path ID 0.

What is the required protocol action if the NEW CONNECTION ID frame is received 
with path ID 0?

[MK] Nothing. RFC9000 still applies. However, for other path ID than 0 you can 
only use the new frames.


Best wishes,
Gorry

Reply via email to