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

Proposal: PATH_SETUP frame #180

Open
michael-eriksson opened this issue Feb 24, 2023 · 1 comment
Open

Proposal: PATH_SETUP frame #180

michael-eriksson opened this issue Feb 24, 2023 · 1 comment

Comments

@michael-eriksson
Copy link

Introduction

The setup of a new path should be explicit with a separate frame type.

Design

A new frame type, PATH_SETUP is introduced and used to set up new paths. The frame is sent by the initiating endpoint and includes relevant information (see below). When received by the peer, the peer responds with a PATH_SETUP frame in the opposite direction with reciprocal information (an alternative is to have a separate frame type for the path setup response).

If there is a worry that the protocol specifications will run out of single-byte (6-bit) frame types, the new frame type could be given a type number in the two-byte (14-bit) range since it will be sent very infrequently.

Frame content

Path identifier

There are good reasons for a stable path identifier (see #179). Having the same path identifier in both directions simplify both the implementations and things like correlating traces taken at the two endpoints (#170).

The unique identifier for the new path is selected by the endpoint that initiates the new path. To simplify path initiation also from the server, clients use even path identifiers and servers use odd path identifiers when they initiate new paths. Path identifiers are never reused.

Path status

The PATH_STATUS frame is used to set the status of an existing path (available or standby). The status of a new path should be signaled directly at path setup, otherwise the peer might start to use a new path that is intended to be standby before it gets the PATH_STATUS frame.

Path parameters

Some parameters of a new path can be different from what was negotiated for the original path at connection setup. They are signaled in the PATH_SETUP frame.

Examples of per-path parameters: max_udp_payload_size, max_idle_timeout, max_ack_delay.

@mirjak mirjak added the design label Mar 3, 2023
@qdeconinck
Copy link
Contributor

Discussed at IETF 116, proposal is to delegate such a frame to a separate extension.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants