<p dir="ltr">With UDP, you're at the mercy of the application using it. With TCP, you're merely at the mercy of the operating system.</p>
<p dir="ltr">AQM acts on UDP packets in the same way as TCP packets - in fact it can't tell them apart. So any application which detects and responds to UDP packet loss in the same way as TCP does, will back off just the same.</p>
<p dir="ltr">In practice, UDP is used for several different types of application:</p>
<p dir="ltr">- simple request response, such as DNS and NTP, where eliminating TCP's connection setup overhead is important. In any case, TCP's congestion control doesn't get a chance to do any good on such s short-lived connection. Packet loss in this situation is tolerated by retry, with exponential backoff as an alternative congestion control measure.</p>
<p dir="ltr">- latency sensitive and often isochronous (inelastic) flows like VoIP. Packet loss may lead to a loss of quality, but there is little the application can do to reduce its loss except dropping the call completely.</p>
<p dir="ltr">- as a way to implement delay sensitive and pacific congestion control algorithms, as in uTP.</p>
<p dir="ltr">A flow isolation system, such as that in fq_codel, will often leave UDP flows alone completely, because they tend not to be the ones using the bulk of the bandwidth. Conversely, if a single UDP flow was responsible for the congestion, it would let the other traffic bypass it. This is why fq_codel is better than just plain codel, if you can get it.</p>
<p dir="ltr"> - Jonathan Morton<br>
</p>