Чтение онлайн

ЖАНРЫ

Настройка сетей Microsoft дома и в офисе. Учебный курс

Сергеев Александр

Шрифт:

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

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

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

Суть этой методики заключается в том, что переполнение буферной памяти маршрутизатора приводит к тому, что все новые дейтаграммы просто отклоняются. Эта методика необычным образом сказывается на работе протокола 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).

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

 

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

Каким же образом в алгоритме RED определять более высокую вероятность отклонения дейтаграмм по мере увеличении размера внутренней очереди и при этом сделать так, чтобы без крайней необходимости не отклонялись дейтаграммы в блоках, вызвавших перегрузку? Для ответа на этот вопрос необходимо вспомнить метод, примененный в протоколе TCP. Суть его состоит в том, что при вычислениях в каждый момент времени не следует использовать реальный размер очереди. Вместо этого в алгоритме RED определяется средневзвешенное значение размера внутренней очереди, которое используется для вычисления вероятности потери дейтаграмм. Величина средневзвешенного значения изменяется по экспоненциальному закону и корректируется каждый раз при получении очередной дейтаграммы.

Поделиться с друзьями: