
Recent model-based congestion control algorithms such as BBR use repeated measurements at the endpoint to build a model of the network connection and use it to achieve optimal throughput with low queuing delay. Conversely, applying this model-based approach to Active Queue Management (AQM) has so far received less attention. We propose the new AQM scheduler cocoa based on fair queuing, which adapts the buffer size depending on the needs of each flow without requiring active participation from the endpoint. We implement this scheduler for the Linux kernel and show that it interacts well with the most common congestion control algorithms and can significantly increase throughput compared to fair CoDel while avoiding overbuffering.
Effective congestion control for data center networks is becoming increasingly challenging with a growing amount of latency sensitive traffic, much fatter links, and extremely bursty traffic. Widely deployed algorithms, such as DCTCP and DCQCN, are still far from optimal in many plausible scenarios, particularly for tail latency. Many operators compensate by running their networks at low average utilization, dramatically increasing costs. In this paper, we argue that we have reached the practical limits of end-to-end congestion control. Instead, we propose, implement, and evaluate a new congestion control architecture called Backpressure Flow Control (BFC). BFC provides per-hop per-flow flow control, but with bounded state, constant-time switch operations, and careful use of buffers. We demonstrate BFC's feasibility by implementing it on Tofino2, a state-of-the-art P4-based programmable hardware switch. In simulation, we show that BFC achieves near optimal throughput and tail latency behavior even under challenging conditions such as high network load and incast cross traffic. Compared to existing end-to-end schemes, BFC achieves 2.3 - 60 X lower tail latency for short flows and 1.6 - 5 X better average completion time for long flows.
There exists an extensive body of work, spanning more than two decades, on congestion control schemes and signaling mechanisms. The majority of prior work does not, however, entertain the notion of network-assisted feedback for congestion control. The scope of the remaining work has also been, unfortunately, rather narrow: Some efforts limit themselves to using weak signals (involving a few bits in the header) and relying on receivers to reflect such signals to the sender; few others maintain per-flow statistics or explicitly set the rates the senders should use. Virtually all suggested network-assisted congestion feedback mechanisms are ineffective, not scalable, or limited to data-center contexts. In this proposal, we exploit data-plane programmability of P4 switches as well as hardware-supported priority classes to present a novel network-assisted congestion feedback (NCF) mechanism. The feedback entails NACKs that are directly sent to the sender, and does not involve the receiver; it is, hence, quick and efficient. We propose sending such NACKs during periods of congestion to senders of elephant flows and outline a scalable approach to identify elephant flows. Unlike prior work, NCF is applicable to both data-centers as well as Internet-wide.
In this paper we report on measurement of Netflix video traffic, to understand how the size of router buffers affects the quality of video seen by the end-user (i.e. video QoE). In certain locations, Netflix streams video over TCP New Reno from racks of servers that are directly connected to large routers, which in turn directly peer with commercial ISPs. We vary the size of the router buffers during periods of persistent congestion, and log metrics such as the number of rebuffering events, video quality, and video play delay. We observe buffers that are too small and too large, both of which worsen video QoE. Our results are for a specific, but we believe interesting, case: a router carrying large numbers of long-lived TCP flows, shedding light on how buffers should be sized by CDNs and video content providers. We find that the generality of our results is limited by the specific internal workings of the VOQ-based chassis routers used in our experiments, which have a different buffer architecture than prior work. We conclude that the routers complicate---and potentially mask---our clear understanding of buffer sizing.
Conventional buffer sizing techniques consider an output port with multiple queues in isolation and provide guidelines for the size of the queue. In practice, however, switches consist of several ports that share a buffering chip. Hence, chip manufacturers, such as Broadcom, are left to devise a set of proprietary resource sharing algorithms to allocate buffers across ports. This algorithm dynamically adjusts the buffer size for output queues and directly impacts the packet loss and latency of individual queues. We show that the problem of allocating buffers across ports, although less known, is indeed responsible for fundamental inefficiencies in today's devices. In particular, the per-port buffer allocation is an ad-hoc decision that (at best) depends on the remaining buffer cells on the chip instead of the type of traffic. In this work, we advocate for a flow-aware and device-wide buffer sharing scheme (FAB), which is practical today in programmable devices. We tested FAB on two specific workloads and showed that it can improve the tail flow completion time by an order of magnitude compared to conventional buffer management techniques.