Почему контроль перегрузок развернут на конечных хостах
Почему процесс контроля перегрузки развернут на узлах отправителя?
Я знаю, что одно из ограничений, которое позволяет избежать развертывания управления перегрузкой на маршрутизаторах, заключается в том, что маршрутизаторам необходимо поддерживать состояния потоков, что увеличивает нагрузку на маршрутизаторы. Оставьте это в стороне. Есть ли какие-либо другие дефекты, ограничивающие развертывание заторов на стороне маршрутизатора?
1 ответ
Действительно, существуют средства управления перегрузкой, которые либо требуют поддержки, либо развертываются в маршрутизаторах. Примером является XCP ( https://www.ietf.org/proceedings/61/slides/tsvwg-5.pdf), в котором маршрутизаторы распределяют пропускную способность без сохранения состояния для каждого потока. Другой - это датацентр TCP, который использует ECN-метки, предоставленные маршрутизаторами для определения степени перегрузки. Эти два примера предназначены для сетей с одним полномочием. В интернете много авторитетов / актеров с разными целями. Если бы мы включили контроль перегрузки в маршрутизаторах, какую политику контроля перегрузки мы бы выбрали?
Представьте, что у вас есть два потока, A и B, и два маршрутизатора, R1 и R2. R1 имеет пропускную способность 100 Мбит / с, а R2 - 10 Мбит / с. Поток A проходит только через R1, а поток B проходит через R1 и R2. Допустим, мы разделяем емкость R1 поровну, A и B получают по 50 Мбит / с каждый. B проходит через R2, который имеет только 10 Мбит / с, поэтому он не может использовать 50 Мбит / с, предоставленные ему R1. Что должно произойти в этом случае? R1, вероятно, должен изменить распределение, но как? Если маршрутизаторы находятся в разных доменах, которые не доверяют друг другу, об этом не может быть и речи. Маршрутизаторы не доверяют конечным системам, поэтому конечные системы не могут сообщить о распределении маршрутизаторам.
На мой взгляд, основная проблема заключается в определении политики контроля за перегрузкой, которую принимают все участники Интернета. Сильный аргумент в пользу наличия контроля перегрузки в конечной системе - это сквозной принцип. Управление перегрузкой TCP является функциональностью транспортного уровня и не должно быть реализовано на интернет-уровне, поскольку не используется всеми алгоритмами транспортного уровня (UDP).