Сетевые инженеры Google диагностировали и разработали патч для ошибки, около десяти лет остававшейся неисправленной в TCP-стеке ядра Linux и приводившей к снижению эффективности передачи данных. Проблема негативно влияет на приложения, в которых интенсивный трафик чередуется с короткими периодами приостановки передачи, например, подобное поведение характерно для некоторой активности в Web, в частности, для потокового вещания.


TCP/IP

Ошибка присутствовала в реализации алгоритма контроля перегрузки Cubic, используемого по умолчанию во многих дистрибутивах Linux. Проблема заключалась в неверной обработке состояния приостановки передачи данных приложением, что приводило к неверному трактованию параметров перегрузки (во время приостановки передачи информация о перегрузке не поступает, что воспринималось алгоритмом как незагруженность сети и возможность нарастить скорость передачи, хотя фактически полоса пропускания не изменилась). В итоге, когда приложение возобновляло передачу данных после паузы, отправка пакетов производилась слишком быстро, что не соответствовало реальной полосе пропускания и могло привести к потере пакетов и инициированию их повторной передачи, а как следствие потере скорости и задержкам в приложении.


Источник opennet.ru