Low Latency, Low Loss, and Scalable Throughput (L4S) Internet Service: RFC 9330
datatracker.ietf.org
datatracker.ietf.org
It requires an additional bit to be inserted into IP packets, to carry information about when buffers are full (I think?), but it actually works. It feels like living in the future!
https://datatracker.ietf.org/meeting/interim-2020-tsvwg-01/s...
https://mailarchive.ietf.org/arch/msg/tsvwg/rXWRHAyGOuu_qOGM...
https://youtube.com/watch?t=4900&v=RWjbrXxpzVU
(1hr21m for anyone whom the time link doesn't work for)
EDIT: Never mind, that's their hackathon recap. Still searching, this is not an easy conf to find talks for!
Essentially the details are documented in https://www.rfc-editor.org/info/rfc3168
The simple answer is that there are more than just one flag. From what i gather there are three flags. One flag that the sender sets to inform the routers that it can handle ECN. A second flag is used by the router to tell the recipient that the router was congested. And a third flag is set in by the recipient when it sends an ACK package back to the sender.
For more details, here is the relevant section:
* An ECT codepoint is set in packets transmitted by the sender to indicate that ECN is supported by the transport entities for these packets.
* An ECN-capable router detects impending congestion and detects that an ECT codepoint is set in the packet it is about to drop. Instead of dropping the packet, the router chooses to set the CE codepoint in the IP header and forwards the packet.
* The receiver receives the packet with the CE codepoint set, and sets the ECN-Echo flag in its next TCP ACK sent to the sender.
* The sender receives the TCP ACK with ECN-Echo set, and reacts to the congestion as if a packet had been dropped.
* The sender sets the CWR flag in the TCP header of the next packet sent to the receiver to acknowledge its receipt of and reaction to the ECN-Echo flag.
http://www.sigcomm.org/sites/default/files/ccr/papers/2007/A...
Slide deck below explains it:
https://datatracker.ietf.org/meeting/118/materials/slides-11...
Not sure where this leads but I guess ISPs will start charging toll for express lanes
Also, when the congestion signal disappears you can try to push the transfer speed up immediately, rather than slowly ramping back up like with TCP.
L4S actually includes an extra bit of information in IP packets that routers can mutate to explicitly say when they are congested.
This means that you (a) don't need to play exponential backoff games, (b), don't need to re-send redundant packets, and (c) don't need big buffers in routers.
You need big buffers in routers because otherwise exponential backoff goes crazy. But when you add big buffers, you get latency, which is another kind of suck.
In order to avoid latency, you need to avoid buffers, which is hard unless you avoid exponential backoff. To avoid exponential backoff, you need routers to actually communicate their congestion, by sending more information. L4S does that by using an unallocated bit in IP packets.
Which feels much easier and much less heavy-handed than what you can to today. Which technically is a great thing but just wondering about misuse aspect.
Doubtful IMO. I think latency becomes another competitive differentiator, much like throughput/speed is today. (this is a personal comment but I work at Comcast)
This can be solved by complementing L4S with fair queuing (e.g. fq_codel) and by making sure that congestion control can detect the presence of fair queuing (https://github.com/muxamilian/fair-queuing-aware-congestion-...).
The FQ thing is a part of a larger dispute. Without FQ is is already the case that, irrespective of L4S, fairness is implemented by end hosts, and an end host (eg a server) can ignore congestion responses and take more than a fair share. This is not an issue which L4S introduces, but some argue that L4S "makes it easier" to take a larger share.
The people behind FQ argue that the network should guarantee fair sharing, but not everyone believes they have chosen the right fairness metric. In particular one of the main proponents of L4S does not, as can be seen from his paper linked here: https://news.ycombinator.com/item?id=38598023
This really should have an asterisk (*). There is generally a limit on what an ISP will advertise, and what they will provide (usually ~110% of advertised).
However, it's also extremely common that they overprovision segments on their network.
In the case of a Coax network like Comcast, or Spectrum, they will overprovision the actual last-mile capacity so that _most_ times of the day, you'll receive your ~110% of advertised speeds, but during peak (mid-evening), it's extremely unlikely that you're going to receive even your advertised speeds, usually only ~70%.
In the case for L4S, it would absolutely help "perceptively" resolve these kinds of congestion points, but the "evil take" would be that ISPs can extend their network upgrades further.
I guess you are right that buffer bloat problems could pressure ISPs to avoid overprovisioning, and any solution to bufferbloat could take the pressure off. But you can also get bufferbloat and other latency issues without overprovisioning, so it doesn't seem to me to be a good reason to hold off implementing solutions to them.
The need for <3 Mbps bitrates means tough trade offs between quality, bitrate, CPU time, and latency. Bitrate is the hardest constraint. Commodity laptops have slower CPUs or if they have 6 core CPUs they keep them clocked down when on battery. Hardware accelerated video encoding is not universal. So quality and latency are sacrificed.
Wi-Fi adds latency, especially when a laptop is on battery
To deal with NAT many video chat services relay through cloud servers adding latency.
https://hpbn.co/wifi/#measuring-and-optimizing-wifi-performa...
However, from a brief look, uTP is designed for background transfers for which latency is not important, so there is no particular need to do so.
Only skimmed the proposal but looks like it isolates traffic using the new protocol by giving it a dedicated buffer, and the explicit congestion notification protocol would then keep the size of this queue much smaller at steady state when the link is saturated.
> Center TCP (DCTCP) [RFC8257] and a Dual-Queue Coupled AQM [RFC9332]
this only exists to ask that cable modems (and maybe mobile phones?) use that too
Ofc, ISPs would have to aggressively limit this type of traffic as it would be abused otherwise (video game gameplay traffic, and voice call streams).
There are built in ways for the TCP protocol to handle congestion, but it doesn't allow a router to signal congestion. The router just has to hope for the sender to detect the congestion fast enough.
Scalable variants are
under consideration for more recent transport protocols (e.g.,
QUIC), and the L4S ECN part of BBRv2 [BBRv2] [BBR-CC] is a
Scalable congestion control intended for the TCP and QUIC
transports, amongst others.