Summary

  • Пакеты нашли место в бесконечном складе, но не успели доехать до адресата. RFC 970 выводит этот парадокс для длительной перегрузки, FIFO, конечного времени жизни и как минимум двух коммутаторов.
  • Нейгл увидел на практике очередь из 916 IP-датаграмм между Ethernet и линией на 9600 бод. TCP сдался раньше, чем наступил расчётный предел: тотальное отбрасывание осталось выводом модели, а не измерением опыта.

Безразмерный склад всё равно обслуживает через узкую дверь. В описанной Джоном Нейглом схеме пакеты приходят быстрее, чем линия их отправляет. Пока они стоят, убывает срок жизни. Из первого коммутатора при устойчивой перегрузке выходят пакеты с одной оставшейся единицей. Следующий коммутатор уменьшает её до нуля и выбрасывает пакет. Память не закончилась. Доставка закончилась.

Так RFC 970, опубликованный в декабре 1985 года, отделил перегрузку от исчерпания буфера. Расчёт требует конкретного набора условий: бесконечного хранения, очереди по порядку поступления, ограниченного срока жизни, минимум двух коммутаторов и длительного избытка входящего потока. Это вывод модели, а не свидетельство того, что тогда вся сеть Интернет потеряла каждый пакет.

Нейгл привёл числовой пример. Четыре линии по 56 килобит в секунду и максимальный срок жизни 15 секунд давали в его расчёте предел очереди 420 килобайт. Такой запас памяти устраняет потери от нехватки буферов для этой схемы. Он не гарантирует, что пакет доживёт до следующего узла. В тексте 1985 года время жизни в модели отсчитывается оставшимися секундами; современное толкование через число переходов нельзя подставлять в старый расчёт.

Аппаратный опыт показал другую, более узкую картину. Коммутатор с несколькими мегабайтами памяти стоял между Ethernet и линией на 9600 бод. В очереди накопилось до 916 IP-датаграмм. Из-за выросшего времени обхода TCP-соединение истекло до того, как очередь достигла предсказанного устойчивого режима. Наблюдались большой затор и сбой транспорта. Всеобщее отбрасывание оставалось результатом анализа.

Нейгл перенёс спор с объёма памяти на порядок обслуживания. Единая FIFO-очередь позволяет самому говорливому отправителю занять больше мест и получить больше передач. Каждый стремится послать больше, а общая полезная пропускная способность падает. Предложение — отдельная очередь для каждого узла-источника и последовательное обслуживание непустых очередей, по одному ещё живому пакету. Лишние посылки растят собственную задержку, но не покупают дополнительные ходы. Сигнал Source Quench после примерно двух пакетов в очереди источника должен был подсказать ему снизить нагрузку. Это историческое предложение, а не описание нынешнего развёртывания.

Автор назвал и способ обмана: подделав много адресов источника, один участник может получить много долей. Справедливость одного коммутатора не обеспечивает справедливость всей сети. Идея особенно уместна на входе из быстрой локальной сети в ограниченный дальний канал. Официальная запись RFC относит документ к обсуждению; введение не объявляет решение стандартом. Правило очереди распределяет право на следующий выход — именно там находилась настоящая власть.

Sources