microsoft / microsoft/demikernel

[inetstack] Buffer Data Received on SYN Segments for Later Use

Open
#1,115 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement wontfix
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

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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.