Hacker News new | ask | show | jobs
by jsnell 3171 days ago
First, DCTCP will degrade gracefully if ECN isn't working. Ok, so you won't get the early warning about congestion. But eventually congestion would cause packet loss, and DCTCP would react to it appropriately.

Second, Linux allows setting the congestion control algorithm per-route. So you could set up DCTCP for communicating with the IPs in the same data center, and use the default CC algorithm for everything else. And what if you can't use/don't want to use per-route settings? Well, you'll generally have two classes of machines anyway. Frontends that can communicate with the outside world, and backends that can't. So you could set up different congestion control based on the role of the machine.

Solving this in the switches seems tricky. Sure, per-flow rather than global or per-port queues could be used to solve the mice vs. elephants problem. But it does not help with TCP incast unless you also add huge buffers. You want switches to be simple, fast and cheap. A switch with per-flow queueing and huge buffers seems like the opposite.