Кратко

  • RFC 2140 вышел в апреле 1997 года как информационный меморандум. Он предлагал связывать отдельные наблюдения из блока управления TCP с парой узлов, чтобы новые короткие соединения не оценивали MSS и RTT полностью заново. Документ не устанавливал стандарт Интернета и не доказывал массовое ускорение.
  • Временное разделение использует данные уже закрытого соединения; разделение ансамбля касается одновременно работающих соединений. Копировать значение MSS или RTT — не то же самое, что выдавать каждому новое полное окно перегрузки: суммарная нагрузка от этого растёт.
  • Общее состояние может передавать и ошибку. Меморандум требовал проверки минимальных допустимых значений, изоляции изменённого приложением состояния и исключения номеров последовательности TCP из общей памяти.

У каждого поля свой хозяин

В блоке управления TCP рядом находятся совершенно разные сведения. Указатели на буферы, очередь повторных передач, номера портов, таймеры и состояние протокола относятся к определённому разговору приложений. Полученный от удалённого узла MSS и измеренное время кругового прохода способны служить отправной оценкой для другого разговора той же пары узлов. RFC 2140 предлагал не переносить весь блок целиком, а отделить потенциально общие наблюдения от частной жизни соединения.

Информация об окне образует третью категорию. Величина отдельного окна влияет на общую нагрузку, которую несколько соединений направляют по предполагаемо общему пути. Поэтому в тексте MSS и RTT названы связанными с парой узлов напрямую, а сведения об окнах — связанными с ней в совокупности. Так автор пытался сократить переходный период многочисленных коротких и параллельных веб-соединений, не меняя поведение TCP после выхода соединения на устойчивый режим. Это инженерный аргумент, а не представленное исследование скорости реальной сети.

Два случая и разные часы

При временном разделении старое соединение уже закрыто. RFC 2140 описывал расширения T/TCP для SunOS 4.1.3 и порт для FreeBSD как ограниченные примеры сохранения MSS и параметров RTT. Значение MSS обновлялось при получении соответствующей опции; RTT и разброс времени — при закрытии. Повторное использование snd_cwnd в этом примере обсуждалось, но ещё не было реализовано. Меморандум также предупреждал: усреднение RTT между соединениями не совпадает с расчётом внутри одного соединения, так что получившаяся оценка может оказаться неподходящей.

При разделении ансамбля соединения ещё работают. Если несколько новых соединений открылись до первого закрытия, запись в кэш только в конце никому из них не передаст свежего наблюдения. Отсюда идея более раннего обновления. Но копирование окна перегрузки потребовало бы особого учёта: даже начальное окно в один сегмент, о котором говорил документ применительно к тогдашнему TCP, увеличивает сумму окон при появлении ещё одного потока. Копия большего старого окна увеличила бы её сильнее.

В качестве альтернативы RFC 2140 рассматривал деление суммарного окна между N+1 соединениями с уменьшением долей прежних N. Автор прямо оговаривал, что равные доли могут не соответствовать нужной функции, и призывал исследовать гипотезу дальше. Это не утверждение о проверенной справедливости и не свидетельство внедрения. Оно показывает, почему одна оценка доступной передачи не может служить несколькими независимыми кредитами.

Ошибка тоже получает наследника

Если в общую память попадёт ложное маленькое или нулевое окно, последующие соединения могут начать медленнее. Для коротких обменов ущерб особенно заметен: исправить плохую исходную оценку они могут не успеть. В разделе безопасности RFC 2140 требовал сверять общие параметры со стандартными нижними пределами при создании нового блока, ограничивать влияние входящих данных на состояние работающих соединений и не передавать состояние, напрямую изменённое приложением либо полученное без аутентификации, без явного разрешения. Номера последовательности — не разделяемые показатели производительности.

Одинаковая пара узлов не удостоверяет неизменность маршрута или свободную ёмкость. RFC 9040 в 2021 году заменил RFC 2140 и уточнил описание. Позднейшее уточнение не превращает гипотезы 1997 года в тогдашнюю практику. Историческое содержание старого меморандума — вопрос о происхождении, времени записи и границах доверия к измерению, которым воспользуется уже другое соединение.

Источники и границы

  • RFC 2140 — первичный текст о состоянии TCP, двух видах разделения и мерах безопасности.
  • RFC 1644 — предыстория T/TCP, на которую ссылается RFC 2140.
  • RFC 9040 — последующий заменяющий меморандум.

Эти источники не дают сегодняшних замеров ускорения, данных о всеобщем внедрении или доказательства, что два соединения всегда проходят один и тот же узкий участок пути.