Giter Site home page Giter Site logo

Comments (5)

martinthomson avatar martinthomson commented on August 24, 2024

The QUIC DT on this subject has come up with a different design:

  1. you use a new connection ID when you observe a path change
  2. endpoints need to provide their peers enough connection IDs that they shouldn't run out
  3. when an endpoint stops using a connection ID, there is a new "retire connection ID" message that is used to signal that it is no longer needed
  4. endpoints that receive this "retire connection ID" are expected to replenish the supply of connection IDs at their peer

from dtls13-spec.

ekr avatar ekr commented on August 24, 2024

Point (1) is sort of implicit in the text, and I agree we should add it.

Points (2)-(4) are about ensuring that the other side has enough CIDs. In QUIC, this is the server's job and there's no real way for the client to say that it doesn't have enough CIDs or tell the server how many. It can just say that it is done using some set of CIDs and this tells the server to send more, but the server has no idea how many. By contrast, the DTLS design is for the client to tell the server when it wants more CIDs and the server gets to retire them. ISTM that this is a more flexible design in that the server can change CIDs whenever it wants (e.g., for rekeying of the CID encryption key).

IIRC much of the motivation for the design with QUIC was not to have to interlock with the ACK, and in this respect the situation here is the same as with the KeyUpdate, which is that the QUIC design has the advantage that it doesn't need to interlock with the ACK to know when things have change. But that doesn't apply here for the same reason as with #63.

So I think my proposed resolution is just to add that you should change CIDs whenever you change paths and should request enough CIDs that you have a hot spare. I could imagine a way for the server to say what specific keys it wants to invalidate, but I'm not sure that's necessary. I do think we should enhance RequestConnectionId to have a count.

from dtls13-spec.

ekr avatar ekr commented on August 24, 2024

@ekinnear

from dtls13-spec.

ekr avatar ekr commented on August 24, 2024

@erickinnear

from dtls13-spec.

erickinnear avatar erickinnear commented on August 24, 2024

(Just noting my earlier thoughts here so they're saved somewhere)

Overall, only concern is around the rate at which you can send additional connection IDs to the peer vs. the rate at which you retire them. My understanding is that they are all retired at once, but need to be provided independently.
It seems like there could be situations, especially for a sender that needs to migrate rapidly (say away from and then back to some specific interface), where this leaves the sender without a CID to switch to.
Allowing multiple CIDs in the messages as in #65 looks like it generally resolves this.

Also noting that infinite looping in response to peer changes is covered by the sequence number.

from dtls13-spec.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.