|
Адаптация RIP-маршрутизаторов к
изменениям состояния сети
К новым маршрутам RIP-маршрутизаторы
приспосабливаются просто - они передают
новую информацию в очередном сообщении
своим соседям и постепенно эта информация
становится известна всем маршрутизаторам
сети. А вот к отрицательным изменениям,
связанным с потерей какого-либо маршрута,
RIP-маршрутиза-торы приспосабливаются
сложнее. Это связано с тем, что в формате
сообщений протокола RIP нет поля, которое бы
указывало на то, что путь к данной сети
больше не существует.
Вместо этого используются два
механизма уведомления о том, что некоторый
маршрут более недействителен:
истечение времени жизни
маршрута;
указание специального
расстояния (бесконечности) до сети, ставшей
недоступной.
Для отработки первого механизма
каждая запись таблицы маршрутизации (как и
записи таблицы продвижения моста/коммутатора),
полученная по протоколу RIP, имеет время
жизни (TTL). При поступлении очередного RIP-сообщения,
которое подтверждает справедливость
данной записи, таймер TTL устанавливается в
исходное состояние, а затем из него каждую
секунду вычитается единица. Если за время
тайм-аута не придет новое маршрутное
сообщение об этом маршруте, то он
помечается как недействительный.
Время тайм-аута связано с
периодом рассылки векторов по сети. В RIP IP
период рассылки выбран равным 30 секундам, а
в качестве тайм-аута выбрано шестикратное
значение периода рассылки, то есть 180 секунд.
Выбор достаточно малого времени периода
рассылки объясняется несколькими
причинами, которые станут понятны из
дальнейшего изложения. Шестикратный запас
времени нужен для уверенности в том, что
сеть действительно стала недоступна, а не
просто произошли потери RIP-сообщений (а это
возможно, так как RIP использует
транспортный протокол UDP, который не
обеспечивает надежной доставки сообщений).
Если какой-либо маршрутизатор
отказывает и перестает слать своим соседям
сообщения о сетях, которые можно достичь
через него, то через 180 секунд все записи,
которые породил этот маршрутизатор, станут
недействительными у его ближайших соседей.
После этого процесс повторится уже для
соседей ближайших соседей - они вычеркнут
подобные записи уже через 360 секунд, так как
первые 180 секунд ближайшие соседи еще
передавали сообщения об этих записях.
Как видно из объяснения, сведения
о недоступных через отказавший
маршрутизатор сетях распространяются по
сети не очень быстро, время распространения
кратно времени жизни записи, а коэффициент
кратности равен количеству хопов между
самыми дальними маршрутизаторами сети. В
этом заключается одна из причин выбора в
качестве периода рассылки небольшой
величины в 30 секунд.
Если отказывает не маршрутизатор,
а интерфейс или сеть, связывающие его с
каким-либо соседом, то ситуация сводится к
только что описанной - снова начинает
работать механизм тайм-аута и ставшие
недействительными маршруты постепенно
будут вычеркнуты из таблиц всех
маршрутизаторов сети.
Тайм-аут работает в тех случаях,
когда маршрутизатор не может послать
соседям сообщение об отказавшем маршруте,
так как либо он сам неработоспособен, либо
неработоспособна линия связи, по которой
можно было бы передать сообщение.
Когда же сообщение послать можно,
RIP-маршрутизаторы не используют
специальный признак в сообщении, а
указывают бесконечное расстояние до сети,
причем в протоколе RIP оно выбрано равным 16
хопам (при другой метрике необходимо
указать маршрутизатору ее значение,
считающееся бесконечностью). Получив
сообщение, в котором некоторая сеть
сопровождается расстоянием 16 (или 15, что
приводит к тому же результату, так как
маршрутизатор наращивает полученное
значение на 1), маршрутизатор должен
проверить, исходит ли эта «плохая»
информация о сети от того же маршрутизатора,
сообщение которого послужило в свое время
основанием для записи о данной сети в
таблице маршрутизации. Если это тот же
маршрутизатор, то информация считается
достоверной и маршрут помечается как
недоступный.
Такое небольшое значение «бесконечного»
расстояния вызвано тем, что в некоторых
случаях отказы связей в сети вызывают
длительные периоды некорректной работы RIP-маршрутизаторов,
выражающейся в зацикливании пакетов в
петлях сети. И чем меньше расстояние,
используемое в качестве «бесконечного»,
тем такие периоды становятся короче.
Рассмотрим случай зацикливания
пакетов на примере сети, изображенной на
рис. 5.26.
Пусть маршрутизатор Ml обнаружил,
что его связь с непосредственно
подключенной сетью 201.36.14.0 потеряна (например,
по причине отказа интерфейса 201.36.14.3). Ml
отметил в своей таблице маршрутизации, что
сеть 201.36.14.0 недоступна. В худшем случае он
обнаружил это сразу же после отправки
очередных RIP-сообщений, так что до начала
нового цикла его объявлений, в котором он
должен сообщить соседям, что расстояние до
сети 201.36.14.0 стало равным 16, остается почти 30
секунд.
Каждый маршрутизатор работает на
основании своего внутреннего таймера, не
синхронизируя работу по рассылке
объявлений с другими маршрутизаторами.
Поэтому весьма вероятно, маршрутизатор М2
опередил маршрутизатор Ml и передал ему свое
сообщение раньше, чем Ml успел передать
новость о недостижимости сети 201.36.14.0. А в
этом сообщении имеются данные, порожденные
следующей записью в таблице маршрутизации
М2 (табл. 5.18).
Таблица 5.18. Таблица маршрутизации
маршрутизатора М2
Эта запись была получена от
маршрутизатора Ml и корректна до отказа
интерфейса 201.36.14.3, а теперь она устарела, но
маршрутизатор М2 об этом не узнал.
Теперь маршрутизатор Ml получил
новую информацию о сети 201.36.14.0 - эта сеть
достижима через маршрутизатор М2 с метрикой
2. Раньше Ml также получал эту информацию от М2.
Но игнорировал ее, так как его собственная
метрика для 201.36.14.0 была лучше. Теперь Ml
должен принять данные о сети 201.36.14.0,
полученные от М2, и заменить запись в
таблице маршрутизации о недостижимости
этой сети (табл. 5.19).
Таблица 5.19. Таблица маршрутизации
маршрутизатора М1
В результате в сети образовалась
маршрутная петля: пакеты, направляемые
узлам сети 201.36.14.0, будут передаваться
маршрутизатором М2 маршрутизатору Ml, а
маршрутизатор Ml будет возвращать их
маршрутизатору М2. IP-пакеты будут
циркулировать по этой петле до тех пор, пока
не истечет время жизни каждого пакета.
Маршрутная петля будет
существовать в сети достаточно долго.
Рассмотрим периоды времени, кратные
времени жизни записей в таблицах
маршрутизаторов.
Время 0-180 с. После отказа
интерфейса в маршрутизаторах Ml и М2 будут
сохраняться некорректные записи,
приведенные выше. Маршрутизатор М2 по-прежнему
снабжает маршрутизатор Ml своей записью о
сети 201.36.14.0 с метрикой 2, так как ее время
жизни не истекло. Пакеты зацикливаются.
Время 180-360 с. В начале этого
периода у маршрутизатора М2 истекает время
жизни записи о сети 201.36.14.0 с метрикой 2, так
как маршрутизатор Ml в предыдущий период
посылал ему сообщения о сети 201.36.14.0 с худшей
метрикой, чем у М2, и они не могли
подтверждать эту запись. Теперь
маршрутизатор М2 принимает от
маршрутизатора Ml запись о сети 201.36.14.0 с
метрикой 3 и трансформирует ее в запись с
метрикой 4. Маршрутизатор Ml не получает
новых сообщений от маршрутизатора М2 о сети
201.36.14.0 с метрикой 2, поэтому время жизни его
записи начинает уменьшаться. Пакеты
продолжают зацикливаться.
Время 360-540 с. Теперь у
маршрутизатора Ml истекает время жизни
записи о сети 201.36.14.0 с метрикой 3.
Маршрутизаторы Ml и М2 опять меняются ролями
- М2 снабжает Ml устаревшей информацией о
пути к сети 201.36.14.0, уже с метрикой 4, которую
Ml преобразует в метрику 5. Пакеты продолжают
зацикливаться.
Если бы в протоколе RIP не было
выбрано расстояние 16 в качестве
недостижимого, то описанный процесс длился
бы до бесконечности (вернее, пока не была бы
исчерпана разрядная сетка поля расстояния
и не было бы зафиксировано переполнения при
очередном наращивании расстояния).
В результате маршрутизатор М2 на
очередном этапе описанного процесса
получает от маршрутизатора Ml метрику 15,
которая после наращивания, превращаясь в
метрику 16, фиксирует недостижимость сети.
Период нестабильной работы сети длился 36
минут!
Ограничение в 15 хопов сужает
область применения протокола RIP до сетей, в
которых число промежуточных
маршрутизаторов не может быть больше 15. Для
более масштабных сетей нужно применять
другие протоколы маршрутизации, например
OSPF, или разбивать сеть на автономные
области.
Приведенный пример хорошо
иллюстрирует главную причину нестабильной
работы маршрутизаторов, работающих по
протоколу RIP. Эта причина коренится в самом
принципе работы дистанционно-векторных
протоколов - пользовании информацией,
полученной из вторых рук. Действительно,
маршрутизатор М2 передал маршрутизатору Ml
информацию о достижимости сети 201.36.14.0, за
достоверность которой он сам не отвечает.
Искоренить эту причину полностью нельзя,
ведь сам способ построения таблиц
маршрутизации связан с передачей чужой
информации без указания источника ее
происхождения.
Не следует думать, что при любых
отказах интерфейсов и маршрутизаторов в
сетях возникают маршрутные петли. Если бы
маршрутизатор Ml успел передать сообщение о
недостижимости сети 201.36.14.0 раньше ложной
информации маршрутизатора М2, то маршрутная
петля не образовалась бы. Так что
маршрутные петли даже без дополнительных
методов борьбы с ними, описанными в
следующем разделе, возникают в среднем не
более чем в половине потенциально
возможных случаев.
|