Congestion control

Where --cc applies

--cc is applied to each hosted public TCP listener.

tcpcc sets TCP_CONGESTION inside hosted Linux and reads it back before exposing the service. Accepted public sockets then inherit the listener's TCP state through the normal upstream Linux socket path.

The outer host does not need BBR

The outer host may use CUBIC and may not provide BBR at all. That does not prevent a tcpcc public listener from using hosted BBR, because the public TCP socket is not owned by the outer host TCP stack.

The outer host still provides the packet path: TUN, routing/forwarding, conntrack, and firewall support.

The backend leg is different

The connection from tcpcc to 127.0.0.1:<port> is an ordinary separate host TCP connection. Its congestion control is outside tcpcc's public-side contract.

Upstream implementation boundary

The project intentionally does not reimplement congestion-control algorithms. The following upstream implementation areas are treated as protected source and should remain unmodified during normal porting:

  • net/ipv4/tcp_bbr.c
  • net/ipv4/tcp_rate.c
  • Linux TCP recovery core
  • net/sched/sch_fq.c

Any exception requires an explicit design decision and dedicated review.

Why this matters

The project goal is not β€œan algorithm compatible with Linux BBR.” The goal is to run the relevant upstream Linux networking implementation under a different ownership boundary.