Э. Таненбаум - Компьютерные сети. (4-е издание) (DJVU) (1130092), страница 121
Текст из файла (страница 121)
Эта договоренность обычно описывает объем и форму трафика, требуемое качество обслуживания и другие параметры. В качестве выполнения своей части соглашения подсеть обычно резервирует ресурсы на пути следования создаваемого канала. К этим ресурсам относятся память для буферов и таблиц маршрутизаторов и пропускная способность линий. При таком подходе возникновение перегрузки в новом виртуальном канале маловероятно, так как все необходимые ресурсы были зарезервированы и их доступность гарантируется. Подобное резервирование может выполняться как в виде постоянной стандартной процедуры, так и в виде действия, выполняемого только при возникновении перегрузки.
Недостаток постоянного резервирования заключается в том, что на эту процедуру расходуются вычислительные ресурсы. Если шесть виртуальных каналов, которым разрешено использовать по 1 Мбит/с, проходят по одной и той же физической линии с пропускной способностью 6 Мбит/с, линия должна быть помечена как полная, хотя маловероятно, что все шесть виртуальных каналов передают данные одновременно, да еще и используют всю доступную пропускную способность.
Следовательно, платой за резервирование будет неиспользованная пропускная способность. Борьба с перегрузкой а дейтаграммных подсетях Теперь обратимся к методу, применяемому в дейтаграммных подсетях (впрочем, он может использоваться и в подсетях с виртуальным каналом). Каждый маршрутизатор может запросто следить за использованием своих выходных линий и других ресурсов. Например, с каждой линией может быть связана вещественная переменная и, значение которой в пределах от 0,0 до 1,0 отражало бы использование линии за последнее время. Такую усредненную оценку загруженности линии можно получить с помошью несложных вычислений, периодически замеряя мгновенную загруженность линии Г" (О либо 1) и рассчитывая новое значение переменной и по формуле и„„ = аи„ + (1 — а)У, где константа а определяет, насколько быстро маршрутизатор забывает свое пропиое.
Когда значение переменной и начинает превышать некий пороговый Уровень, это означает, что линия переходит в опасное состояние. Каждый приходяший пакет проходит проверку: если ему предстоит следовать по линии, находяшейс" в близком к перегрузке состоянии, то выполняется одно из нескольких действий Далее мы обсудим, как именно маршрутизатор может отреагировать на эту си туацию. 462 Глава б.
Свтввой уровень Биты предупреждение В старой архитектуре ПЕСТУЕТ сигнализация опасного состояния производилась путем установки специального бита в заголовке пакета. То же самое делается в технологии ретрансляции кадров, Пакет доходит до места назначения, и в подтверждение о его доставке, отсылаемое источнику, включается бит предупреждения, увидев который, источник должен снизить график. Продолжая находиться в опасном состоянии, маршрутизатор устанавливает биты предупреждения во все проходящие мимо него пакеты. Это означает, что хосты-источники информируются о проблеме.
Со своей стороны источники изучают ту часть подтверждений, в которой установлены биты предупреждения, и соответствующим образом подстраивают свою скорость передачи. Если такие подтверждения продолжают прибывать, источник продолжает снижать скорость.
Достигнув такой скорости, когда пакеты еле-еле просачиваются по линии, хост может начать увеличивать скорость. Обратите внимание: бит предупреждения может установить любой маршрутизатор, поэтому трафик может начать повышаться только тогда, когда со всеми маршрутизаторами все в порядке. Сдерживающие пакеты Предыдущий алгоритм борьбы с перегрузкой действует довольно хитро: он использует окольные средства для сообщения источнику о том, что неплохо бы умерить пыл.
Но почему бы не сказать ему об этом прямо? Такая идея привела к созданию подхода, при котором маршрутизатор сам отправляет источнику сдерживающий пакет. Информация об источнике берется из задержанного пакета. Исходный пакет помечается (специальный бит в его заголовке устанавливается в единицу), чтобы он больше не порождал сдерживающих пакетов на пути следования, и отправляется дальше по своему обычному маршруту. Когда хост-отправитель получает сдерживающий пакет, он должен уменьшить трафик к указанному получателю на некоторый процент Х. Поскольку другие пакеты, направляющиеся к тому же адресату, скорее всего, в этот момент уже находятся в пути, они также породят сдерживающие пакеты.
Поэтому в течение фиксированного интервала времени хост должен игнорировать сдерживающие пакеты, относящиеся к тому же получателю. По истечении этого периода времени хост начинает прослушивать другой интервал на предмет сдерживающих пакетов. Если приходит хотя бы один, это означает, что линия все еще перегружена, поэтому хост еше сильнее снижает выходной поток и снова начинает игнорировать последующие сдерживающие пакеты. Если в течение второго интервала вРемени (периода ожидания сдерживающих пакетов) сдерживающие пакеты не приходят, хост может снова увеличить поток. Обратная связь, присутствующая в данном протоколе, может помочь предотвратить перегрузку, не ограничивая поток до тех пор, пока не возникнет необходимость.
Хосты могут уменьшать трафик, изменяя свои стратегические параметры, например размер окна. Обычно первый сдерживающий пакет уменьшает скорость передачи данных в два раза, следующий — в четыре и т. д. Увеличения скорости производятся меньшими приращениями, чтобы избежать слишком быстрого повторения перегрузки. Алгоритмы борьбы с перегрузкой 4БЗ Существуют различные варианты этого алгоритма борьбы с перегрузкой. В одном из них маршрутизаторами применяется несколько пороговых уровней загруженности линии. В зависимости от того, какой нз порогов пересечен, сдерживающие пакеты могут содержать мягкое или строгое предупреждение либо ультиматум.
В качестве варианта может измеряться длина очереди или объем свободной памяти маршрутизатора. При этом можно использовать ту же экспоненциальную весовую функцию, что и для и, Сдерживающие пакеты для ретрансляционных участков При больших скоростях передачи данных и при сильной удаленности хостов с отправкой сдерживающих пакетов возникают проблемы, поскольку реакция на них оказывается крайне запоздалой. Рассмотрим, к примеру, хост в Сан-Франциско (маршрутизатор А на рис.
5.25), посылающий поток данных на хост, расположенный в Нью-Йорке (маршутизатор Р на рис. 5.25), со скоростью 155 Мбит/с. Если у нью-йоркского хоста станет кончаться буферная память, сдерживающему пакету потребуется около 30 мс на то, чтобы добраться обратно в Сан-Франциско и сообщить о том, что необходимо снизить объем трафика. Распространение сдерживающего пакета схематично показано на второй, третьей и четвертой диаграммах рис.
5.25, а. За те 30 мс, пока этот пакет движется по сети, в сторону ньюйоркского маршрутизатора передается еще 4,6 Мбит данных, с которыми тоже надо как-то совладать. Только к седьмой диаграмме (рис. 5.25, а) маршрутизатор заметит начавшееся снижение потока. Однако есть альтернативный метод, позволяющий бороться с этой проблемой. Он заключается в том, что сдерживающий пакет влияет на трафик каждого маршрутизатора, через который он проходит. Это показано на последовательности диаграмм на рис, 5.25, б.
Как только сдерживающий пакет достигает точки Г, поток данных от Г в сторону Р должен быть уменьшен. Таким образом, Г резервирует для потока большее количество буферной памяти: источник все еще продолжает заваливать это направление своими данными. Нагрузка на Р мгновенно спадает, как головная боль у страдальца, рекламирующего по телевизору чудодейственные пилюли.
На следующем шаге сдерживающий пакет, продолжая свой путь, достигает Е и приказывает уменьшить поток в сторону Е В результате в течение какого-то времени точке Е приходится выдерживать повышенную нагрузку, но зато мгновенно освобождается от своего бремени точка Е Наконец, победный марш сдерживающего пакета приводит его к источнику всех бед— точке А, и теперь поток снижается на самом деле. Результатом применения метода сдерживания трафика на ретрансляционных участках является максимально быстрое устранение перегрузки в самой горячей точке за счет использования большего объема буферной памяти промежуточных маршрутизаторов.
Таким образом, перегрузка пресекается без потери пакетов. Эта идея обсуждается более подробно у (М1зЬга и Капаыа, 1992). 454 Глава 5. Сетевой уровень 1 — сильный поток 2 — сдерживаемый пакет 3 — уменьшенный поток 4 — поток все еще на максимальном уровне б — лоток уменьшен Рис.
5.25. Сдерживающий пакет влияет только на источник (ей сдерживающий пакет влияет на все промежуточные участки (б) Сброс нагрузки Когда ни один из описанных ранее методов не помогает в борьбе с перегрузкой, маршрутизаторы могут ввести в бой тяжелую артиллерию — сброс нагрузки Сбросом нагрузки называется простое игнорирование маршрутизаторами пакетов, которые они не могут обработать. Своим происхождением этот термин обя- Алгоритмы борьбы с перегрузкой 456 зан системам электроснабжения, где он означает отключение в случае перегрузок отдельных участков во избежание выхода из строя всей системы. Обычно такое происходит в морозные зимние дни, когда потребности в электроэнергии для обогревателей резко возрастают.