n0-computer / n0-computer/noq

Space for PATH_ACKs and CONNECTION_CLOSE in close packets

Open
#367 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

compliance multipath
Dominant language
Rust
Stars
413
Forks
63
Avg merge
4d 14m
Merged PRs (30d)
4

Description

Whenever we send a CONNECTION_CLOSE frame we also include ACK frames, to give the peer a chance to get the best picture of which packets were received and which were not. The (PATH_)ACK frames are sent before the CONNECTION_CLOSE frame itself to maximise the chance that they are processed by the peer.

However to correctly follow the close procedure we MUST ensure that each packet has sufficient space for the CONNECTION_CLOSE frame, which can include some variable-length data due to the reason. This used to be essentially statically ensured when there was only a single path. However with multipath there is no real static limit on the space that PATH_ACK frames would occupy.

We should improve the building of the packets with CONNECTION_CLOSE so that we only put in enough (PATH_)ACK frames that we can still write a usable CONNECTION_CLOSE frame into the packet.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Locate the packet-building path that emits CONNECTION_CLOSE together with ACK and PATH_ACK frames. Trace how available packet space and variable-length close reasons are handled, then verify that every close packet retains enough room for a usable CONNECTION_CLOSE frame, including with multipath.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.