Mirja Kühlewind
Talk
Explicit Congestion Notification (ECN) is a TCP extension that allows networks to mark packets when congested instead of dropping them. While ECN provides a clear benefit by avoiding packet loss and subsequent retransmission delays, ECN was never widely deployed due to initial problems with network notes/home routers that would react incorrectly to ECN markings due to implementation errors. These initial problems were overcome and Apple announced in June 2016 that iOS and macOS devices would begin probabilistic attempts to negotiate ECN by default on the client side [1]. While they actually detected some additional deployment problems, leading to reordering or limited throughput with a small number of operators during their beta testing, these operators fixed their networks and no further problems were reported from Apple since.
In addition to the benefits provided by the ECN base extension, there is currently the More Accurate ECN (AccECN) extension under development in the IETF [2], providing more fine grained congestion feedback to the sender. AccECN introduces a new negotiation scheme that both endpoints have to support and changes the feedback format of the receiver to provide the exact number of markings observed to the sender, rather than just providing one indication of congestion per RTT. The sender can use this information as input for advanced and more scalable congestion control that reacts more gradually to the congestion level on the path. One example of such an congestion control, for data center environments, is Data Center TCP (DCTCP) [3]. One of the reasons that DCTCP can only be used in data centers is that there is no negotiation phase in DCTCP that ensures that both ends support the needed ECN feedback format. AccECN addresses this problem and can be easily integrated with DCTCP. Further, there are other current efforts in the IETF [4] that target deployment of more scalable congestion control in the Internet and would also require the more accurate feedback information provided by AccECN.
The AccECN development is basically completed in the IETF, facing the last processing steps before publication, and a proof-of-concept Linux implementation exists [5]. This talk presents AccECN as a proposal for integration in the Linux kernel and aims to foster a discussion on activating ECN by default on the client side, similar as already deployed by Apple, enabling ECN for a proportion of all connections together with careful monitoring and potentially error detection/fallback.