ЧТО ТАМ, ЗА ГОРИЗОНТОМ?
Для предотвращения образования ложных маршрутов используется несколько методов, один из них - метод расщепления горизонта (split-horizon). Данное правило не так сложно, как может показаться из названия: "Если известно, что путь до узла X лежит через соседний узел Y, то узлу Y не надо посылать объявления маршрута до X".
Мы рассмотрим тот же пример, что и на Рисунке 2, но в условиях, когда действует правило расщепления горизонта. После выхода из строя маршрутизатора А узел В узнает о недееспособности А при первом же обмене. Узлу С правило расщепления горизонта запрещает посылать информацию об А на В, так как путь к А лежит через В. Таким образом, узел С не может теперь (непреднамеренно) обманывать своего соседа слева, и узел В тут же помечает маршрутизатор А как недоступный. После следующего обмена уже С узнает от В о недоступности А, вместе с тем ложная информация от узла D, который все еще считает маршрутизатор А действующим, на С не поступит.
Таблица 1. Значения поля TOS для различных приложений
Приложение | Минимальная задержка | Максимальная полоса | Максимальная надежность | Минимальная стоимость |
Telnet/Rlogin | 1 | 0 | 0 | 0 |
FTP: | ||||
Команды | 1 | 0 | 0 | 0 |
Данные | 0 | 1 | 0 | 0 |
SMTP: | ||||
Команды | 1 | 0 | 0 | 0 |
Данные | 0 | 1 | 0 | 0 |
DNS: | ||||
Запрос TCP | 0 | 0 | 0 | 0 |
Запрос UDP | 1 | 0 | 0 | 0 |
Как видим, с введением правила расщепления горизонта плохая новость распространяется в нашей сети так же быстро, как и хорошая. При этом никаких петель не возникает. К сожалению, даже при минимальном усложнении топологии правило расщепления горизонта перестает действовать.
Рисунок 3. Пример ситуации, когда правило расщепления горизонта не действует.
Рассмотрим пример сети с избыточной топологией (см. Рисунок 3). В начальный момент времени А и B знают, что расстояние до узла D равно "2". После выхода D из строя маршрутизатор C, не получив от D сообщения, определяет, что узел D недоступен. А и В продолжают считать D доступным, но правило расщепления горизонта запрещает им сообщать эту ложную информацию маршрутизатору С. При следующем обмене C уведомляет A и B о недоступности D. Но одновременно с этим узел А получает от В сообщение о пути до D стоимостью "2", а узел В получает аналогичное сообщение от А.
Информация об аварии на D не будет услышана. Проблема возрастания до бесконечности возникла вновь.