FAQ¶
Does tcpcc replace the host kernel?¶
No. It runs a small upstream Linux networking stack as a hosted userspace process for the public TCP endpoint.
Does the host need BBR?¶
No. The outer host only needs the packet-path prerequisites. Hosted Linux owns the public socket and selects its congestion control.
Is tcpcc a proxy?¶
It has a proxy-like operator interface and relays application bytes after terminating public TCP, but it is not an HTTP/SOCKS proxy and does not reinterpret application protocols.
Why use TUN instead of just accepting a normal host socket?¶
A normal host socket would already be owned by the outer host TCP stack, so its congestion control would remain the host's concern. TUN preserves raw IP packets until hosted Linux owns the TCP endpoint.
Can the backend be remote?¶
Not currently. The backend contract is 127.0.0.1:PORT.
Can one process serve several ports?¶
Yes. Repeat --forward LISTEN=BACKEND or add multiple [[forward]] tables.
Can one process serve both IPv4 and IPv6?¶
Not currently. All public listeners in one process must use one address family.
Does --memory-mib 512 consume 512 MiB immediately?¶
No. It defines guest-visible capacity. The anonymous arena is demand-backed and host resident memory grows as pages are touched.
Is there a default config file?¶
No. tcpcc never loads one implicitly. Use --config FILE explicitly.
Is config hot reload supported?¶
No. Configuration is startup-only.
Why are BBR/CUBIC source files protected from normal project changes?¶
Because tcpcc's purpose is to run upstream Linux TCP behavior under a different ownership boundary, not to fork congestion-control semantics.