Экстернат |
Управление перегрузкой и основные алгоритмы работы TCP
Управление перегрузкой
Как мы уже говорили, Интернет — комбинация сетей и устройств связи, например, таких как маршрутизаторы. Пакет, стартующий от передатчика, может пройти через несколько маршрутизаторов, прежде чем достигнет своего конечного пункта назначения. Маршрутизатор имеет буфер, который накапливает входящие пакеты, обрабатывает их и передает их вперед. Если пакеты поступают к маршрутизатору быстрее, чем он может их обработать, может возникнуть перегрузка и некоторые пакеты могут быть потеряны. Если пакет не принят конечным пунктом, то конечный пункт не присылает подтверждения. Передатчик не имеет выбора, кроме как передать повторно потерянный пакет. Это может привести к перегрузке и увеличению пропадания пакетов, которое означает снова повторную передачу и большую перегрузку. Затем может быть достигнута точка, в которой система не сможет больше передавать данные. Поэтому TCP нуждается в механизмах, позволяющих избежать этой ситуации.
Выше рассматривалась ситуация управления потоком, когда в обмене участвуют только передатчик и приемник. В этом случае размер окна передатчика определяется доступным пространством буфера в приемнике. При этом полностью игнорируются другие устройства сети. Если сеть не может доставить данные так быстро, как они создаются передатчиком, она должна передать соответствующий сигнал передатчику, чтобы он замедлился. Другими словами, сеть может рассматриваться как одно из устройств, которое определяет размер окон передатчиков.
Окно перегрузки
Сегодня размер окна передатчика определяется не только приемником, но также перегрузкой в сети. Передатчик имеет два кванта информации: размер окна, объявленный приемником, и размер окна перегрузки. Действующий размер окна – минимальный из этих двух размеров.
Предотвращение перегрузки
Чтобы избежать перегрузки, передатчик TCP использует две стратегии. Мы называем одну медленный старт и дополнительное увеличение и вторую — мультипликативное уменьшение.
Медленный старт и увеличение прибавлением
Это – комбинация двух стратегий: медленного старта и дополнительного увеличения.
Медленный старт. В начале соединения TCP устанавливает размер окна перегрузки на максимальный размер сегмента. Для каждого сегмента, который подтвержден, TCP увеличивает размер окна перегрузки по одному максимальному размеру сегмента, пока он не достигнет порога половины разрешенного размера окна. Это называется медленным стартом, который полностью обманчив, потому что этот процесс не такой медленный. Размер окна перегрузки увеличивается экспоненциально. Передатчик посылает один сегмент, получает одно подтверждение, увеличивает размер до двух сегментов, посылает два сегмента, получает два сегмента, увеличивает размер до четырех сегментов, посылает четыре сегмента, получает подтверждение для четырех сегментов, увеличивает размер до восьми сегментов и так далее. Другими словами, после получения третьего подтверждения размер окна увеличивается до восьми сегментов. Скорость роста окна — экспоненциальная 23 = 8.
Увеличение прибавлением. Чтобы избежать перегрузки, прежде чем она возникнет, нужно замедлить этот экспоненциальный рост. После того как размер достигает порога, размер окна увеличивается на единицу для каждого подтверждения, даже если подтверждаются последовательные сегменты. Стратегия дополнительного увеличения продолжается, пока подтверждения прибывают прежде срабатывания их соответствующих тайм-аутов или пока размер окна перегрузки не достигнет значения окна приемника.
Мультипликативное уменьшение
Если возникнет перегрузка, окно перегрузки должно быть уменьшено. Передатчик может единственным путем предположить, что возникла перегрузка из-за потерянного сегмента. Если передатчик не получит подтверждение, прежде чем сработает его таймер повторной передачи, он предполагает, что это перегрузка. Поскольку сети сегодня имеют сравнительно малый уровень шума, более вероятно, что сегмент потерян, чем искажен. Стратегия гласит: если окончилось контрольное время, размер текущего окна должен быть установлен на величину половины размера последнего окна перегрузки, размер окна перегрузки должен опять начинаться с единицы. Другими словами, передатчик возвращается медленно к начальной фазе. Заметим, что размер порога уменьшается экспоненциально (мультипликативное уменьшение). Рис. 11.1. показывает идею мультипликативного уменьшения.
На Рис. 11.1. максимальный размер окна — 32 сегмента, а порог установлен до 16 сегментов (половина максимального значения размера окна). При процедуре медленный старт размер окна начинается от 1 и растет экспоненциально, пока не достигнет порога 16 при условии, что не истечет время тайм-аута.
После достижения порога процедура дополнительного увеличения позволяет наращивать линейно по 1 байту, пока не сработает тайм-аут или размер не достигнет максимального окна (32). На рисунке возник таймаут, когда был послан сегмент 8. В этот момент вступает в действие процедура мультипликативного уменьшения и уменьшает порог до половины предыдущего размера окна; предыдущий размер окна был 20, когда появился тайм-аут, так что новый порог теперь 10.
Этот цикл (медленный старт, дополнительное увеличение, мультиплексное уменьшение) продолжается с этим размером окна опять с единицы. Рис. 11.2. показывает ту же самую идею.