I perceive how TCP goes about this – via varied strategies corresponding to Congestion Window (CWND), Sliding Window, Sluggish Begin and Quick Restoration – it is mainly constructed into the protocol. I perceive that when shaping or MSS clamping is utilized alongside the trail, TCP can adapt its section measurement and switch charge accordingly.
I additionally perceive that QUIC (which runs over UDP) implements its personal model of loss detection and congestion management. QUIC is kind of like a highly-tuned, low-latency, extra extensible model of TCP, constructed for HTTP3, however it could additionally transport another utility information.
Nevertheless it isn’t clear to me how purposes – which don’t use QUIC – can decide:
- What number of UDP datagrams could be despatched without delay
- How massive every UDP datagram could be (if PMTUD doesn’t work as a result of ICMP replies being disabled/blocked by middleboxes)
It is not likely clear to me how UDP, being a greatest effort protocol, does not simply flood the hyperlink/path between the sender and recipient, leading to important packet loss.
Or put in different means: How can an utility, which must ship a excessive quantity of knowledge, both statically or dynamically decide the out there bandwidth on the trail between the sender and receiver, and alter its datagram measurement and switch charge accordingly?*
I perceive that RTP has issues like RTCP that enable it to restrict/improve movement charges or change codecs to cut back/improve packet sizes, for high quality management. When working Iperf exams utilizing UDP, you possibly can set the out there bandwidth with the “-b” attribute. DNS and DHCP, which use UDP, have comparatively tiny datagram sizes, and can simply retry till they obtain a response or day trip.
*The reply, primarily based on my present understanding, could be: The applying would simply be designed to make use of TCP if it wanted to ship/obtain a excessive quantity of knowledge (corresponding to backups or high-definition streaming), and easily would not use UDP except it additionally had a supporting out-of-band protocol like RTCP or might be sure of the bandwidth out there (i.e. set by the person, like with Iperf).