Skip to main content

5. Rationale

QProt assigns blame for queuing, not blame for rate by itself. It accumulates the product of packet size and the congestion level probNative at the instant each packet arrives. This approximates the rate at which the flow contributes to congestion, called congestion-rate.

Constant aging is needed because even well-behaved scalable congestion controllers create a low level of congestion while tracking available capacity. Scalable controllers tend to hold the product of congestion window and congestion probability roughly constant, so a fixed AGING allowance can avoid sanctioning well-behaved scalable flows.

The score is transformed into time units by dividing each packet's score by AGING. The bucket then stores expiry time t_exp rather than an explicitly aged byte score. This makes aging implicit as time passes.

Policy conditions require actual harm. A packet is sanctioned only if qdelay exceeds CRITICALqL and the flow's queuing score, scaled by qdelay/CRITICALqL, exceeds CRITICALqLSCORE, or if qLSCORE_MAX is reached. This avoids sanctioning rate without queue harm, and it reduces unnecessary sanctions against VPN traffic.

The DOCSIS action is reclassification into the Classic queue. That creates mild deliberate harm, such as higher delay or possible reordering, giving senders incentive to identify packets correctly. Whole-flow redirection is discussed as possible future work but is outside RFC 9957.