tanenbaum_seti_all.pages (525408), страница 120
Текст из файла (страница 120)
В данной главе основное внимание будет уделено применению методов борьбы с перегрузкой на сетевом уровне. В следующей главе мы обсудим, что можно сделать на транспортном уровне. Алгоритмы борьбы о перегрузкой 449 Качнем рассмотрение различных стратегий с уровня передачи данных. Стратегия повторной передачи определяет, насколько быстро у отправитсля истекает время ожидания подтверждения и что он передает после того как время ожидания истекло. Нетерпеливый отправитель, у которого время ожидания истекает слишком быстро и который повторно посылает все неподтверждснныс пакеты с помошью алгоритма возврата на п, окажет более сильную нагрузку на сеть, нежели ленивый отправитель, используюший выборочный повтор. Тесно связана с этим стратегия кэширования. Если получатели просто игнорируют все пакеты, приходящие не в том порядке, то все проигнорнрованные пакеты придется передавать позднее еше рэз, что окажет дополнительную нагрузку на сеть.
Стратегия подтверждений также влияет на перегрузку. Если каждый пакет немедленно подтверждается получателем, то пакеты с подтверждениями образуют дополнительный трафик. Однако если подтверждения добираются обратно кверхом» на попутном потоке кадров, то количество трафика в сети снижается, зато увеличивается среднее время получения подтверждений, что может, в свою очередь, вызвать увеличение повторно переданных пакетов вследствие истечения времени ожидания подтверждений. Более жесткая схема управления потоком (например, с небольшим размером окна) уменьшает скорость передачи данных и помогает бороться с перегрузкой.
Сушествует также зависимость перегрузки от того, является ли сетевой уровень дейтаграммным или он основан на виртуальных каналах, так как многие алгоритмы борьбы с перегрузкой работают только в подсетях с виртуальным каналами. Политика очередей пакетов и обслуживания определяет количество очередей у каждого маршрутизатора — например, одна общая очередь для всех линий, нлн по очереди для каждой линии, или какой-нибудь комбинированный вариант. Она также определяет порядок обработки пакетов (например, поочередно или в порядке приоритетов). Политика игнорирования пакетов является правилом, определяюшим набор пакетов, подлежащих отвержению, когда не хватает памяти. Хорошо продуманная стратегия может облегчить симптомы перегрузки, тогда как неудачная политика может даже ухудшить ситуацию.
Хороший алгоритм выбора маршрута может помочь избежать локальной пеРегрузки, перераспределяя трафнк по всем линиям, тогда как неудачный алгоРитм может направить слишком большое количество пакетов по одной линии и вызвать затор. Наконец, управление временем жизни пакетов,определяет, как долго пакет может перемещаться по сети, прежде чем он будет проигнорирован очередным маршрутизатором. Если это время слишком велико, то потсряннъ!с пакеты могут засорять собою сеть, однако сели время жизни пакета слншколг мало, то пакеты не будут успевать достичь адресата, что приведет к необходимости повторных передач.
На транспортном уровне применяются те же стратегии, что и на уровне передачи данных, но к ним добавляется еще и проблема определения времени ожидания 'юдтверждения, что на транспортном уровне осуществить значительно сложнее, поскольку время пересечения всей сети предсказать значительно сложнее, чем время передачи пакета от какого-либо маршрутизатора до его соседа. Если этот интервал слишком короток, будут высылаться излишние повторные пакеты, 460 Глава 5. Сетевой уровень а если слишком велик — перегрузка снизится, но увеличится задержка в случае потери пакета. Борьба с перегрузкой в подсетях виртуальных каналов Описанные ранее методы борьбы с перегрузкой в основном являются методами без обратной связи: они в первую очередь пытаются предотвратить перегрузку, а не занимаются устранением уже возникшей перегрузки.
В данном разделе мы опишем несколько подходов к динамическому управлению перегрузкой в подсетях виртуальных каналов. В следующих двух разделах будут описаны методы, применимые в любой подсети. Широко применяемым методом недопущения ухудшения уже начавшейся перегрузки является управление допуском. Идея этого метода проста: когда приходит сигнал о перегрузке, никакие новые виртуальные каналы не создаются до тех пор, пока проблема не разрешится. То есть любые попытки установить новые соединения транспортного уровня пресекаются. Понятно, что если пустить в сеть, в которой уже возникла перегрузка, дополнительных пользователей, то ситуация только ухудшится, Хотя такой метод несколько прямолинеен и не эстетичен, зато он дешев, надежен и практичен.
В обычных телефонных системах этот метод тоже широко применяется: когда коммутатор оказывается перегруженным, вы поднимаете трубку и не слышите гудка. Альтернативный подход заключается в том, что создание новых виртуальных каналов разрешается, но зти каналы тщательно прокладываются в обход заторов, Для примера рассмотрим подсеть, показанную на рис. 5.24, в которой два маршрутизатора перегружены. ерегруэка е в Рис. в.в4. перегруженная подсеть (ей тв же подсеть с устраненной перегрузкой (бй Показан виртуальный канал между Д и В Предположим, что хост, соединенный с маршрутизатором А, хочет установить соединение с хостом, соединенным с маршрутизатором В. В нормальных условиях это соединение прошло бы через один из перегруженных маршрутизаторов.
Чтобы этого избежать, подсеть усекается, как показано на рис. 5.24, 6. При Алгоритмы борьбы с перегрузкой 451 этом из нее удаляются перегруженные маршрутизаторы и все их линии связи. Пунктирной линией показан возможный маршрут виртуального канала в обход перегруженных маршрутизаторов. Другая стратегия, связанная с виртуальными каналами, состоит в достижении соглашения между хостом н подсетью во время установки виртуального канала.
Эта договоренность обычно описывает объем и форму трафика, требуемое качество обслуживания и другие параметры. В качестве выполнения своей части соглашения подсеть обычно резервирует ресурсы на пути следования создаваемого канэла. К этим ресурсам относятся память для буферов и таблиц маршрутизаторов и пропускная способность линий. При таком подходе возникновение перегрузки в новом виртуальном канале маловероятно, так как все необходимые ресурсы были зарезервированы и их доступность гарантируется. Подобное резервирование может выполняться как в виде постоянной стандартной процедуры, так и в виде действия, выполняемого только при возникновении перегрузки.
Недостаток постоянного резервирования заключается в том, что на эту процедуру расходуются вычислительные ресурсы. Если шесть виртуальных каналов, которым разрешено использовать по 1 Мбит/с, проходят по одной и той же физической линии с пропускной способностью 6 Мбит/с, линия должна быть помечена как полная, хотя маловероятно, что все шесть виртуальных каналов передают данные одновременно, да еще и используют всю доступную пропускную способность. Следовательно, платой за резервирование будет неиспользованная пропускная способность.
Борьба с перегрузкой а дейтаграммных подсетях Теперь обратимся к методу, применяемому в дейтаграммных подсетях (впрочем, он может использоваться и в подсетях с виртуальным каналом). Кажлый маршрутизатор может запросто следить эа использованием своих выходных линий и других ресурсов. Например, с каждой линией может быть связана вещественная переменная и, значение которой в пределах от 0,0 до 1,0 отражало бы испольвование линии за последнее время.
Такую усредненную оценку загруженности линии можно получить с помощью несложных вычислений, периодически замеряя мгновенную загруженность линии/(О либо 1) и рассчитывая новое значение переменной и по формуле и„„,=аи„+ (1 — а)~, где константа а определяет, насколько быстро маршрутизатор забывает свое прошлое. Когда значение переменной и начинает превышать некий пороговый уровень, зто означает, что линия переходит в опасное состояние. Каждый приходящий пакет проходит проверку: если ему предстоит следовать по линии, находящейся в близком к перегрузке состоянии, то выполняется одно из нескольких дейстэн". Далее мы обсудим, как именно маршрутизатор может отреагировать на эту си туацию.
402 Глава 5. Сетевой у овень Виты предупреждение В старой архитектуре ПЕСТУЕТ сигнализация опасного состояния производилась путем установки специального бита в заголовке пакета. То жс самое делается в технологии ретрансляции кадров. Пакет доходит до места назначения, н в подтверждение о его доставке, отсылаемое источнику, включается бит предупреждения, увидев который, источник должен снизить трафик, Продолжая находиться в опасном состоянии, маршрутизатор устанавливает биты прелупреждения во все проходящие мимо него пакеты. Это означает, что хосты-источники информируются о проблеме.
Со своей стороны источники изучают ту часть подтверждений, в которой установлены биты предупреждения, и соответствующим образом подстраивают свою скорость передачи. Если такие подтверждения продолжают прибывать, источник продолжает снижать скорость. Достигнув такой скорости, когда пакеты еле-еле просачиваются по линии, хост может начать увеличивать скорость. Обратите внимание: бит предупреждения может установить любой маршрутизатор, поэтому трафик может начать повышаться только тогда, когда со всеми маршрутизаторами все в порядке. Сдерживающие пакеты Предыдущий алгоритм борьбы с перегрузкой действует довольно хитро: он использует окольные средства для сообщения источнику о том, что неплохо бы умерить пыл.