Настройка сетей Microsoft дома и в офисе. Учебный курс
Шрифт:
Чтобы не допустить слишком быстрого увеличения размеров окна и возникновения перегрузки, в протокол TCP введено дополнительное ограничение. Как только размер окна перегрузки достигнет половины своего первоначального значения, экземпляр протокола TCP переходит к фазе аннулирования перегрузки и снижает скорость нарастания размеров этого окна. Во время этой фазы размер окна перегрузки увеличивается на единицу только в том случае, если для всех сегментов, находящихся в окне, будут получены сигналы подтверждения приема.
Ранее уже отмечалось, что коммуникационные протоколы разделены на логические уровни, благодаря чему значительно облегчается их дальнейшая разработка и модернизация. Однако разделение на уровни
Отсутствие методов взаимодействия между уровнями часто приводит к тому, что изменение алгоритма работы или программы реализации на одном из уровней кардинальным образом влияет на производительность более высоких уровней. В случае с протоколом TCP от алгоритмов, которые используют маршрутизаторы для обработки дейтаграмм, в значительной степени зависит как производительность одного TCP-соединения, так и суммарная пропускная способность всех соединений. Например, если при обработке одних дейтаграмм в маршрутизаторе будет возникать большая задержка, чем при обработке других, то это приведет к увеличению тайм-аута при повторной передаче данных протоколом TCP. Если эта задержка превысит величину тайм-аута, будет считаться, что в сети возникла перегрузка. Поэтому, несмотря на то что стандарты протоколов каждого уровня определены независимо от стандартов остальных уровней, разработчики попытались продумать и реализовать механизм взаимодействия между протоколами разных уровней.
Одно из основных взаимодействий между модулями протоколов IP и TCP происходит в случае перегрузки маршрутизатора, из-за которой теряются дейтаграммы. Поскольку маршрутизатор помещает каждую вновь прибывшую дейтаграмму в очередь на обработку, основное внимание инженеров было сосредоточено на алгоритмах манипуляции элементами этой очереди. Если скорость поступления дейтаграмм превышает скорость их обработки в маршрутизаторе, размер очереди будет постоянно увеличиваться. Если же маршрутизатор перенаправляет дейтаграммы быстрее, чем они поступают, размер очереди сокращается. Поскольку объем оперативной памяти маршрутизатора ограничен, размер очереди не может увеличиваться до бесконечности. Поэтому в ранних версиях программного обеспечения маршрутизаторов при переполнении очереди использовалась методика усечения хвоста очереди.
Суть этой методики заключается в том, что переполнение буферной памяти маршрутизатора приводит к тому, что все новые дейтаграммы просто отклоняются. Эта методика необычным образом сказывается на работе протокола TCP. В простейшем случае, когда в проходящих через маршрутизатор дейтаграммах содержатся сегменты, относящиеся к одному TCP-соединению, потеря дейтаграмм приводит к использованию методики медленного запуска. В результате производительность TCP-соединения падает до тех пор, пока не начнут приходить сигналы подтверждения приема. Если через маршрутизатор проходят дейтаграммы,
Чтобы понять суть проблемы, следует отметить, что обычно дейтаграммы поступают на маршрутизатор вперемешку (то есть друг за другом могут быть получены дейтаграммы от разных компьютеров-отправителей). Поэтому усечение хвоста очереди в этом случае вызывает потерю одного сегмента в каждом из N соединений, а не потерю N сегментов, относящихся к одному соединению. Потеря сегментов во всех N соединениях заставляет модули протоколов TCP этих соединений одновременно переходить к медленному запуску.
Как же избежать эффекта глобальной синхронизации в маршрутизаторе? Для этого необходим алгоритм, который позволит избежать усечения хвоста очереди там, где это возможно. И такой алгоритм был найден (RED, Random Early Detection). Для описания принципов работы этого алгоритма применяются три простых правила:
– если количество дейтаграмм в очереди не превышает значение Т1, новая дейтаграмма добавляется в конец очереди;
– если количество дейтаграмм в очереди попадает в диапазон между Т1 и Т2, отклоняется одна из дейтаграмм, выбор которой осуществляется случайным образом с некоей вероятностью;
– если количество дейтаграмм в очереди превышает Т2, все вновь поступившие диаграммы отбрасываются.
Благодаря методике случайного выбора, заложенной в RED, маршрутизатор по мере увеличения перегрузки переходит к постепенному и случайному удалению дейтаграмм. В этом ее коренное отличие от алгоритма усечения хвоста очереди, при использовании которого в случае переполнения очереди большое количество TCP-соединений переводится в состояние медленного запуска.
Суть метода RED, используемого маршрутизаторами, заключается в следующем. Если входная очередь дейтаграмм переполнена, то все вновь поступающие дейтаграммы отклоняются. Если же входная очередь не заполнена до конца, но ее размер превышает заранее установленный минимальный порог, то, во избежание эффекта глобальной синхронизации, отменяется одна из поступивших дейтаграмм, выбранная случайным образом в соответствии с заданной долей вероятности. Ключом к эффективной работе метода RED является правильный выбор пороговых значений Т1 и Т2, а также величины вероятности потери дейтаграммы.
Значение Т1 должно быть достаточно большим, чтобы обеспечить высокую пропускную способность выходного канала связи. Когда размер очереди превосходит Т2, алгоритм RED работает так же, как и алгоритм усечения хвоста очереди. Поэтому значение Т2 должно быть больше Т1 по крайней мере на среднюю величину увеличения размера очереди за время одной полной доставки ТСР-сег-мента. В противном случае использование алгоритма RED может привести к тем же глобальным колебаниям трафика в сети, что и при использовании метода усечения хвоста очереди.
Самой сложной задачей в алгоритме RED является нахождение значения вероятности потери дейтаграммы. Очевидно, что эта величина не может быть постоянной и должна вычисляться заново для каждой из вновь прибывших дейтаграмм. Ее значение зависит от текущего размера очереди и установленных пороговых значений Т1 и Т2. Применяемая в этом случае идея будет понятнее, если описать алгоритм, используемый в RED, с вероятностной точки зрения.
Если размер очереди меньше величины, определяемой параметром Т1, потери дейтаграмм не происходит. Поэтому можно считать, что в этом случае значение вероятности потерь равно нулю. Когда же размер очереди превышает Т2, отклоняются все дейтаграммы. Поэтому в последнем случае значение вероятности равно единице. Если размер очереди колеблется между Т1 и Т2, значение вероятности отклонения дейтаграммы изменяется по линейному закону (в промежутке между 0 и 1).