Subject: [quicwg/base-drafts] CID change still required in response to migration? (#2778)

From: Tatsuhiro Tsujikawa <[email-masked]>
Date: Sun, 09 Jun 2019 18:26:11 -0700

There are bunch of changes in migration recently, and they suggests that new CID is required only when endpoint sends a packet from new local address and an endpoint of migrating peer is no longer required to change its CID when sending a packet using new path as long as its local address does not change.

But there are several lines of text left to suggest that an endpoint changes CID:

```
   An endpoint that initiates migration and requires non-zero-length
   connection IDs SHOULD ensure that the pool of connection IDs
   available to its peer allows the peer to use a new connection ID on
   migration, as the peer will close the connection if the pool is
   exhausted.
```
```
   An endpoint can change the connection ID it uses for a peer to
   another available one at any time during the connection.  An endpoint
   consumes connection IDs in response to a migrating peer, see
   Section 9.5 for more.
```

Are they just remnants of old text and should be removed?  or does changing CID in response to migration still a requirement?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2778

---

From: MikkelFJ <[email-masked]>
Date: Sun, 09 Jun 2019 23:47:10 -0700

Changing CID in response to migration is a soft requirement since it cannot always be enforced since NAT rebinding might happen without endpoint interference. It can hurt privacy though.

CID changes can also happen without migration. One reason is for the peer to do so after an idle period because the risk of NAT rebinding is high. Another reason is to ensure CIDs do not get stale on long living connections since the peers routing infrastructure might regroup or move valid CID patterns to a new epoch.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2778#issuecomment-500310603

---

From: Tatsuhiro Tsujikawa <[email-masked]>
Date: Mon, 10 Jun 2019 00:39:49 -0700

So what does implementation actually need to do in response to migrating peer?
Just keep using same CID or not?  Use same CID to do path validation?
I know that peer can change CID at anytime it likes.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2778#issuecomment-500322748

---

From: MikkelFJ <[email-masked]>
Date: Mon, 10 Jun 2019 01:55:48 -0700

The key principle is to not reuse a CID on a new path if it can be avoided. I'm not sure about the CID terminating if the pool is exhausted - in your quoted text. I think it may choose to do so (and is encouraged to do so) but I'm not sure it is required to.

Changing CID in response to a peers migration is therefore relevant but changing CID just because the peer changes CID is problematic because it might never end.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2778#issuecomment-500343188

---

From: Tatsuhiro Tsujikawa <[email-masked]>
Date: Mon, 10 Jun 2019 02:16:19 -0700

Thank you.  I thought that new CID should be used on new path, but I couldn't find normative text for it now.
Other than quoted text, draft says new CID is required if endpoint migrates to new local address.

I remember the discussion of changing CID in response to CID change which is not required and sorted out with the recent PRs.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2778#issuecomment-500349114

---

From: Eric Kinnear <[email-masked]>
Date: Mon, 10 Jun 2019 17:54:07 -0700

I think at one point we said "SHOULD change if the peer changes, but be careful not to loop". Otherwise it's pretty trivial to establish linkability, so everything is structured about trying to make sure you can do it, but not falling over too hard in the edge cases where you may not be able to.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2778#issuecomment-500645051

---

From: Martin Thomson <[email-masked]>
Date: Mon, 10 Jun 2019 17:56:18 -0700

We agreed that changing CID wouldn't trigger a change in response, but the only hard rule was "if you use a new path, use a new connection ID".

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2778#issuecomment-500645409

---

From: Eric Kinnear <[email-masked]>
Date: Mon, 10 Jun 2019 18:07:02 -0700

Ah, interesting. I thought you were still expected to *attempt* to change if you could

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2778#issuecomment-500647195

---

From: MikkelFJ <[email-masked]>
Date: Mon, 10 Jun 2019 22:45:01 -0700

... if you know that you change path - but you don’t always know.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2778#issuecomment-500695475

---

From: Mark Nottingham <[email-masked]>
Date: Tue, 11 Jun 2019 01:33:16 -0700

Is there an underling issue here, or has the question been answered?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2778#issuecomment-500743194

---

From: Tatsuhiro Tsujikawa <[email-masked]>
Date: Tue, 11 Jun 2019 01:44:49 -0700

I couldn't find the hard rule "if you use a new path, use a new connection ID" in the draft in clear manner.
What I found is endpoint MUST change CID when using new local address.   It does not mention about change on remote address.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2778#issuecomment-500747287

---

From: Tatsuhiro Tsujikawa <[email-masked]>
Date: Tue, 11 Jun 2019 01:51:38 -0700

Background context for this issue:
In NAT rebinding test, quic tracker does not send any NEW_CONNECTION_ID.
My server implementation refuses to use new path because there is no new CID left and cannot verify new path assuming that new CID is required for new path.
But they say that using NEW_CONNECTION_ID for new path is not written in draft as requirement, so server should follow the new path.
If using new CID for new path is a requirement, quic tracker should send NEW_CONNECTION_ID.
If it is just a recommendation, server probably should use new path with same CID.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2778#issuecomment-500749791