Skip to main content

CONNECTION_UNANSWERED_MULTIPLIER

Constant CONNECTION_UNANSWERED_MULTIPLIER 

Source
pub const CONNECTION_UNANSWERED_MULTIPLIER: u32 = 8;
Expand description

How many times over a connection may spend unanswered_packet_budget before its sessions are closed instead of muted.

The per-session budget is the RFC 9298 §7 mitigation and it is the right unit for one conversation: a handshake that legitimately needs several packets before the first reply must not break, and the default of 64 is generous for exactly that reason. What it does not bound is how many conversations a connection may start, so this multiplier is what turns the mitigation into a bound.

Eight, because a client with several targets that are slow or unreachable at once is ordinary (a resolver that is down, a peer-to-peer application probing a stale address list), and one that has spent eight full session budgets without a single target ever answering is not doing that any more. The product is what a connection can reflect at silent targets in its whole life: 512 packets at the defaults, against an unbounded number before this existed. A client that wants another allowance pays for another handshake, which is the price this server charges everywhere else.

Not a configuration key. unanswered_packet_budget already carries the meaning “how much this proxy will send into silence”, an operator who changes it moves both halves together, and zero switches both off. A second key would be a second thing to get wrong for a bound that is a multiple of the first (D86 counts the configuration surface as a cost).