Summary: | Rapid convergence to a desired allocation of network
resources to endpoint traffic is a difficult problem. The
reason is that congestion control decisions are distributed
across the endpoints, which vary their offered load in
response to changes in application demand and network
feedback on a packet-by-packet basis. We propose a different approach for datacenter networks, flowlet control,
in which congestion control decisions are made at the
granularity of a flowlet, not a packet. With flowlet control, allocations have to change only when flowlets arrive
or leave. We have implemented this idea in a system
called Flowtune using a centralized allocator that receives
flowlet start and end notifications from endpoints. The
allocator computes optimal rates using a new, fast method
for network utility maximization, and updates endpoint
congestion-control parameters. Experiments show that
Flowtune outperforms DCTCP, pFabric, sfqCoDel, and
XCP on tail packet delays in various settings, converging
to optimal rates within a few packets rather than over
several RTTs. Benchmarks on an EC2 deployment show
a fairer rate allocation than Linux’s Cubic. A data aggregation benchmark shows 1.61× lower p95 coflow completion time.
|