Для предотвращения появления петель маршрутизации и зацикливания пакетов протоколы маршрутизации используют метод расщепления горизонта .Также эту проблему можно решать по средствам служебных сообщений, таймеров, и удаления маршрутов в обратном направлении, но в этой статье мы попытаемся пролить свет именно на технологию split horizon.
Использование метода расщепления горизонта основано на том, что , как правило, нет необходимости в отправке информации о маршруте в обратном направлении, точнее в том направлении, по которому этот маршрут поступил. С точки зрения здравого смысла и правил маршрутизации такой подход является оптимальным.
Но в некоторых конфигурациях сетей может оказаться целесообразным отключение механизма расщепления горизонта: отключение производится для каждого отдельного интерфейса отдельно!
Для отключения механизма используется команда split horizon совместно с ключевым словом no.
На одной из олимпиад по сетевым технологиям стояла задача по решению именно такой проблемы. И так, перейдем к примеру:
На схеме frame-relay облако и и serial – интерфейсы, подключенные к нему, под облаком подразумеваются глобальные линии связи , с различными протоколами маршрутизации и разными сетевыми технологиями, но с помощью packet tracert мы можем заменить это небольшой настройкой. Также настроен протокол маршрутизации RIP , и выглядит настройка следующим образом:
R0:
Router>en Router#conf t Router(config)#hostname R0 |
Конфигурируем интерфейсы:
R0(config)#interface fastEthernet 0/0 R0(config-if)#ip address 50.0.0.1 255.255.0.0 R0(config-if)#no shutdown R0(config)#interface serial 0/1/0 R0(config-if)#ip address 22.0.0.1 255.255.255.0 R0(config-if)#no shutdown |
Задаем тип инкапсуляции:
R0(config-if)#encapsulation frame-relay |
Далее указываем идентификаторы (DLCI), которые будут принадлежать этому интерфейсу, и с помощью которых другие устройства смогут взаимодействовать с настраиваемым.
R0(config-if)#frame-relay interface-dlci 100 R0(config-if)#frame-relay interface-dlci 200 |
Настраиваем мапинг для frame-relay, где число после ip – адреса – это уникальный идентификатор ,DLCI, номер должен быть уникальным, ключевое слово broadcast позволяет маршрутизатору рассылать широковещательные сообщения через уникальный идентификатор DLCI соседнему устройству (устройствам).
R0(config-if)#frame-relay map ip 22.0.0.2 100 broadcast R0(config-if)#frame-relay map ip 22.0.0.3 200 broadcast |
Настраиваем протокол маршрутизации:
R0(config)#router rip R0(config-router)#network 50.0.0.0 R0(config-router)#network 22.0.0.0 |
R1:
Router>en Router#conf t Router(config)#hostname R1 |
Конфигурируем интерфейсы:
R1(config)#interface fa 0/0 R1(config-if)#ip address 100.0.0.1 255.255.0.0 R1(config-if)#no shutdown R1(config)#interface serial 0/1/0 R1(config-if)#ip address 22.0.0.2 255.255.255.0 R1(config-if)#no shutdown |
Задаем тип инкапсуляции:
R1(config-if)#encapsulation frame-relay |
Указываем DLCI на интерфейсе:
R1(config-if)#frame-relay interface-dlci 101 |
Настраиваем мапинг:
R1(config-if)#frame-relay map ip 22.0.0.1 101 broadcast |
Настраиваем протокол маршрутизации:
R1(config)#router rip R1(config-router)#network 22.0.0.0 R1(config-router)#network 100.0.0.0 |
R2:
Router>en Router#conf t Router(config)#hostname R2 |
Конфигурируем интерфейсы:
R2(config)#interface fastEthernet 0/0 R2(config-if)#ip address 150.0.0.1 255.255.0.0 R2(config-if)#no shutdown R2(config)#interface serial 0/1/0 R2(config-if)#ip address 22.0.0.3 255.255.255.0 R2(config-if)#no shutdown |
Задаем тип инкапсуляции:
R2(config-if)#encapsulation frame-relay |
Указываем DLCI на интерфейсе:
R1(config-if)#frame-relay interface-dlci 201 |
Настраиваем мапинг:
R2(config-if)#frame-relay map ip 22.0.0.1 201 broadcast |
Настраиваем протокол маршрутизации:
R2(config)#router rip R2(config-router)#network 150.0.0.0 R2(config-router)#network 22.0.0.0 |
Далее настроим облако так, чтобы DLCI на интерфейсах маршрутизаторов совпадали с DLCI на условных интерфейсах в облаке. Условных по тому что в нашем случае облако играет роль глобальных линий связи (internet):
И последняя настройка – это настройка взаимодействия DLCI внутри облака, нужно настроить так, чтобы R0 взаимодействовал с R1 и R2, при этом R1 и R2 не должны взаимодействовать между собой.
Из всех этих настроек видно что маршрутизация между сетью 100.0.0.0/16 и 150.0.0.0/16 происходит через R0, чему свидетельствует таблица маршрутизации :
Посмотреть таблицы маршрутизации можно командой :
show ip route |
Также для диагностики вводим команду для просмотра мапинга frame-relay :
show frame-relay map |
В то время как остальные маршрутизаторы могут обмениваться пакетами только с R0:
Из вывода мы видим что хосты из сети 50.0.0.0 могут взаимодействовать со всеми хостами:
Но из следующего вывода видно что маршрутизаторы R1 и R2 не получают информацию друг о друге и следовательно сети 100.0.0.0 и 150.0.0.0 не взаимодействуют !
В силу вступила технология расщепления горизонта, тем самым заблокировав работу сети. Маршрутная информация, приходя на R0 не уходила дальше, так как во всех этих процессах был задействован один интерфейс, который был и приемником и передатчиком.
Для исправления этой ситуации следует отменить split horizon на маршрутизаторе R0:
R0(config)#interface serial 0/1/0 R0(config-if)#no ip split-horizon |
Надеюсь что материал получился понятным. Лабораторную с данной конфигурацией можно скачать внизу статьи.
Примечание :
Для нормальной работы конфигурации , после отключения и включения технологии расщепления горизонта,стоит очистить таблицу маршрутизации командой :
clear ip route * |