mirror of
https://github.com/slackhq/nebula.git
synced 2026-08-15 12:46:58 +02:00
ecn: CE-mark on decap when the receive queue runs deep (nebula-as-AQM)
The tunnel's real bottleneck queue - the UDP receive buffer feeding the decrypt loop - is invisible to every kernel AQM, so under overload it regulates ECN-capable flows with tail-drop loss like it's 1993. Sample SK_MEMINFO once per recvmmsg batch (tunnels.ecn_mark_threshold, fraction of rcvbuf, 0=off) and treat depth beyond the threshold as an outer CE: the existing RFC 6040 fold then CE-marks ECT inner packets and senders back off without loss.
This commit is contained in:
+6
-4
@@ -10,11 +10,13 @@ import (
|
||||
_ "net/http/pprof" // registers pprof handlers on http.DefaultServeMux
|
||||
)
|
||||
|
||||
// startPprofServer serves net/http/pprof on :6060 for the life of ctx. It is
|
||||
// only compiled into debug builds (`-tags debug`, `make debug`), so a debug
|
||||
// build announces itself with the Info line below.
|
||||
// startPprofServer serves net/http/pprof on localhost:6060 for the life of
|
||||
// ctx. It is only compiled into debug builds (`-tags debug`, `make debug`),
|
||||
// so a debug build announces itself with the Info line below. Loopback only:
|
||||
// a wildcard bind would expose profiles (peer addresses, config-derived
|
||||
// state) to anything that can reach the host, the overlay included.
|
||||
func startPprofServer(ctx context.Context, l *slog.Logger) {
|
||||
server := &http.Server{Addr: ":6060", Handler: nil}
|
||||
server := &http.Server{Addr: "localhost:6060", Handler: nil}
|
||||
l.Info("Starting pprof debug server (debug build)", "addr", server.Addr)
|
||||
|
||||
go func() {
|
||||
|
||||
Reference in New Issue
Block a user