microsoft / microsoft/demikernel
[inetstack] Buffer Data Received on SYN Segments for Later Use
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 1.2k
- Forks
- 151
- PR merge metrics
- No merged PRs in 30d
Description
Context
From RFC 793 Section 3.4:
Several examples of connection initiation follow. Although these examples do not show connection synchronization using data-carrying segments, this is perfectly legitimate, so long as the receiving TCP doesn't deliver the data to the user until it is clear the data is valid (i.e., the data must be buffered at the receiver until the connection reaches the ESTABLISHED state).
Demikernel does accepts SYN segments, but it does not buffer any data for future use.
Proposed Solution
Buffer any data received while connection is being established.
This may improve performance of applications that establish connections to only a few amount of data.
Alternative Solution
Leave the implementation as it is, because buffering data for non-established connection may enable DoS attacks.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating inetstack's handling of data-bearing SYN segments and the connection-establishment path, then read RFC 793 Section 3.4. Determine how received data could be retained until the connection reaches ESTABLISHED and consider the stated denial-of-service concern. Done means the proposed buffering behavior is implemented and its effect on applications and resource usage is addressed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- networking
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100