Subject: [quicwg/base-drafts] Retire My Own CID (#2645)

From: Nick Banks <[email-masked]>
Date: Tue, 23 Apr 2019 13:20:23 -0700

I think the protocol should allow for the originator of a CID to retire it and once that packet has been acknowledged by the peer, remove it from its lookup table.

I have a scenario where I want to move a connection from one "partition" to another "partition" on the same machine. I use some bits from the CID to indicate the partition ID. My problem is, I've already sent out a CID to the peer indicating the old partition ID. If I change, I'm going to get a cross-partition lookup perf-hit for the rest of time on this connection.

So, I'd like to be able to pick a new partition ID, generate a new CID and send out a NEW_CONN_ID and a RETIRE_CONN_ID for the old CID. Once the peer acknowledges this, I remove the old CID from my look up.

With this design, if I need to change partitions for any reason, I only pay a perf penalty for 1 or 2 RTT.

Another option instead of supporting RETIRE for my own, could be a REPLACE_CONN_ID [orignal_sequence_number]. That might be a little less disruptive for implementations to manage. Just copy over the old one with the new one and go about your business.

-- 
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/2645

---

From: Mike Bishop <[email-masked]>
Date: Tue, 23 Apr 2019 13:27:23 -0700

Would https://mikebishop.github.io/please-retire/draft-bishop-quic-please-retire.html meet your needs, other than the fact that it's an extension rather than core protocol functionality?

-- 
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/2645#issuecomment-485961359

---

From: Nick Banks <[email-masked]>
Date: Tue, 23 Apr 2019 13:32:14 -0700

@MikeBishop it might but I don't like the idea that it's a request. If the peer doesn't do this, it is causing two partitions to have cross-partition access for an extended period of time. I don't want the peer to have that type of control. With the extension, even if it claims support, what's stopping it from not actually implementing it?

If the act of acknowledging the packet allows me to drop the CID, then they have a great incentive to do it properly. Otherwise the connection dies.

And finally, yes, I want it in the spec. Not optional. Back to the whole problem of I don't want the peer to control my perf.

-- 
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/2645#issuecomment-485962999

---

From: ianswett <[email-masked]>
Date: Tue, 23 Apr 2019 13:35:41 -0700

I'd be happy with adding a "If it's acknowledged and a packet with an equal or larger packet number uses the CID, you MAY close the connection."

ie: A receiver MUST honor it, the sender MAY enforce it.

-- 
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/2645#issuecomment-485964175

---

From: Nick Banks <[email-masked]>
Date: Tue, 23 Apr 2019 13:45:41 -0700

That would definitely make things better, but only if they actually supported the extension.

-- 
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/2645#issuecomment-485967580

---

From: Eric Kinnear <[email-masked]>
Date: Tue, 23 Apr 2019 14:27:25 -0700

This goes back to a lot of the core concept around vending a CID and having that be a commitment that you're willing for the other side to use it. If we're going to add a bunch of extra machinery around it, maybe it's worth reopening the original conversation? 

On the flip side, it also seems like a lot of these issues would be resolved by a "here's a bunch of new ones, please kill *all* of the old ones", since in almost all of these situations we're saying "I encoded something in the old ones that is no longer valid or helpful". 

-- 
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/2645#issuecomment-485981399

---

From: Nick Banks <[email-masked]>
Date: Tue, 23 Apr 2019 14:53:00 -0700

@erickinnear that's why I kind of like the idea of REPLACE_CONN_ID. Just replace the bytes from whatever CID was previously shared.

-- 
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/2645#issuecomment-485988811