On-Demand маршрутизация

Материал из Cisco CCNP
Перейти к навигации Перейти к поиску

Резюме

  • Статические маршруты необходимо конфигурировать и обновлять в ручную при изменении топологии.
  • Недостаток динамических протоколов, что они используют полосу пропускания и ресурсы маршрутизатора (память и процессор).
  • Динамическая маршрутизация может быть требовательна к ресурсам.
  • Третий путь - использовать Cisco On-Demand Routing (ODR)
  • ODR использует миньше ресурсов в сравнении с протоколами динамической маршрутизации и требует меньше ручного конфигурирования, чем статические маршруты.
  • Подходит для использования только в топологии hub-and-spoke (каждый spoke примыкает только к hub).
  • ODR использует протокол CDP для передачи маршрутной информации между маршрутизаторами spoke (или, как его ещё называют, stub) и hub.
  • Цетральный маршрутизатор (hub) рассылает spoke'ам стандартный маршрут, указывающий на него самого и вносит в свою таблицу маршрутизации информацию о stub-сетях, которые ему сообщил ODR (Центральный маршрутизатор может затем быть сконфигурирован для редистрибьюции маршрутов ODR в какой-либо динамический протокол маршрутизации). То есть, другими словами, в таблице маршрутизации каждого spoke содержаться только его напрямую подключённые сети и статический маршрут, полученный по ODR от центрального маршрутизатора.
  • Поддерживает VLSM
  • Обновления CDP рассылаются мультикастом. Используются SNAP-фреймы. Стандартный интервал рассылки 60 сек (настраивается командой cdp timer).
  • Не является, в полном смысле слова, протоколом маршрутизации.
  • Конфигурируется
    • CDP на всех маршрутизаторах должен быть включён (должен быть запущен на линках между центральным и spoke-маршрутизаторами);
    • На центральном должен быть запущен глобальной командой router odr;
    • На stub-маршрутизаторах не должна быть запущена маршрутизация.
    • (Опционально) команда timers basic { update | invalid | holddown | flush | sleeptime } для настройки таймеров ODR.
  • В таблице маршрутизации помечается буквой o, имеет административную дистанцию 160.
  • Не сообщает метрику маршрута (на центральном маршрутизаторе всегда 1 хоп до spoke).

Подробно

ODR (On Demand Routing) - проприетарном решении Cisco, которое позволяет решать проблемы маршрутизации в некоторых специфических случаях без применения протоколов внутренней маршрутизации, таких как RIP/OSPF/ISIS/EIGRP. Фактически ODR не протокол маршрутизации, это расширение CDP для переноса ограниченной маршрутной информации. Как известно формат CDP пакета базируется на TLV подходе, т.е. каждая "порция" информации представлена в виде трех полей: Type, Lenght, Value. Тип указывает, что именно передается, длина указывает как много информации передается (включая и поля Type и само поле Lenght), Value содержит собственно информацию. Подобный подход применяется для передачи IPv4 опций, TCP опций, DHCP/BOOTP опций и т.д., преимущество такого подхода вместо фиксации в заголовке полей для передачи каждого типа информации в том, что TLV подход, во-первых, легко расширяем, т.е. можно легко добавить новые опции, во-вторых, если получатель не поддерживает какой-то Type, то базируясь на поле Lenght может просто пропустить такую опцию и начать декодировать следующую, а в-третьих такой подход экономнее, так как обычно конкретный пакет CDP (как и DHCP к примеру), содержит далеко не все возможные поля. Для функционирования ODR Cisco добавила в CDP новый Type (0х00 07), с помощью которого маршрутизаторы могут весьма специфическим способом, о котором сейчас пойдет речь, ограниченно обмениваться маршрутами. В этом смысле ODR действительно не протокол маршрутизации, а всего лишь один из возможных TLV в CDP сообщении, кроме того, как станет ясно ниже, слова "весьма специфическим" и "ограничено" выделены не зря: полноценного обмена маршрутами, как в классических IGP, ODR не позволяет. Область применения ODR весьма ограничена, вы можете применить эту технологию только в hub-and-spoke топологии, причем spoke маршрутизаторы должны быть строго тупиковыми, иными словами не должны иметь никаких других линков с маршрутизаторами за исключением линков в хабом/хабами. Ответ на вопрос "почему только в этой ситуации" крайне прост :) достаточно понять, как работает технология, что мы сейчас и сделаем. В качестве примера рассмотрим топологию, представленную на рисунке:

OnDemand topology.png

Изначально таблица маршрутизации Hub содержит информацию о подключенных сетях и не содержит сведений о loopback на маршрутизаторах SpokeA и SpokeB, для того, чтобы соответствующие маршруты оказались в таблице маршрутизации Hub, нужно либо запустить IGP между маршрутизаторами, либо настроить статическую маршрутизацию. Соответственно, таблица маршрутизации spoke также содержит только сведения о подключенных сетях, в частности SpokeA не имеет маршрутов к loopback SpokeB и линку между Hub и SpokeB.

Hub>sh ip route 
Gateway of last resort is not set
    192.168.0.0/30 is subnetted, 2 subnets
C       192.168.0.0 is directly connected, Serial1/0
C       192.168.0.4 is directly connected, Serial1/1
SpokeA#sh ip route 
Gateway of last resort is not set
     192.168.0.0/30 is subnetted, 1 subnets
C       192.168.0.0 is directly connected, Serial1/0
C    192.168.1.0/24 is directly connected, Loopback0
C    192.168.2.0/24 is directly connected, Loopback1

OnDemand Routing позволяет избежать как полноценной настройки динамической маршрутизации в этой системе, так и настройки статических маршрутов, вам вообще не придется ничего настраивать на spoke устройствах, равно как и не понадобится поддержка IGP на spoke устройствах. Включим ODR на Hub, для этого введем команды:

Router(config)#router odr
Router(config-router)#network 192.168.0.0

Первая команда переводит консоль в режим конфигурирования ODR, а вторая команда указывает (как это принято в OSPF/EIGRP/ISIS/RIP) интерфейсы, на которых должен стартовать ODR. Посмотрим теперь, как выглядит пакет CDP, посылаемый Hub:

Cdp1.jpg

Через интерфейс s1/0 Hub посылает CDP сообщение с TLV "ODR Default gateway", чем сообщает spoke, что для него маршрутом по умолчанию является адрес 192.168.0.1, аналогично через интерфейс s1/1 будет послано подобное сообщение, но адрес будет 192.168.0.5. Как видим, Hub не сообщает spoke точные маршруты, вместо этого передает только информацию о шлюзе по умолчанию. Что нужно сделать на Spoke, чтобы активировать ODR, и, тем самым принять передаваемый маршрут по-умолчанию? НИЧЕГО! На Spoke ВООБЩЕ ничего не нужно делать, получение CDP пакета с Типом 0х00 07 автоматически активирует на маршрутизаторе ODR. Но! При этом на spoke должно выполняться следующее условие (разумеется, помимо поддержки ODR): на spoke не должно быть настроено никаких протоколов маршрутизации, настройка любого протокола маршрутизации на spoke автоматически отключает ODR. SpokeA, получая показанный выше CDP пакет, добавляет в свою таблицу маршрутизации запись о маршруте по умолчанию:

SpokeA#sh ip route 
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
    ..................
       o - ODR, P - periodic downloaded static route
 
Gateway of last resort is 192.168.0.1 to network 0.0.0.0
     192.168.0.0/30 is subnetted, 1 subnets
C       192.168.0.0 is directly connected, Serial1/0
C    192.168.1.0/24 is directly connected, Loopback0
C    192.168.2.0/24 is directly connected, Loopback1
o*   0.0.0.0/0 [160/1] via 192.168.0.1, 00:00:31, Serial1/0

Отметим, что код записи в таблице маршрутизации o - ODR (не путать с O - OSPF). Ясно, маршрута у spoke устройств недостаточно, помимо этого Hub должен от каждого Spoke получить маршруты в подключенные сети spoke. Рассмотрим, как это происходит. Когда spoke получает CDP пакет с опцией типа 0х00 07 (и spoke поддерживает ODR + не имеет настроенных протоколов маршрутизации), он в свою очередь тоже включает в свои сообщения опцию с тем же типом, но формат поля Value в этой опции отличается от того, который использует Hub. Hub, как мы видели выше, в качестве данных в опции указывает 4-х байтовое значение собственного IP адреса, который следует использовать для маршрутизации по умолчанию. Spoke в качестве данных передает некоторое количество 5-ти байтовых порций данных, каждая из которых состоит из 4-х байтового номера сети, подключенной (это очень важно!) к spoke и однобайтового префикса этой сети. В нашем примере таких 5-ти байтовых порций SpokeA передает 2, по количеству подключенных loopback:

Cdp2.jpg

Таким образом в этом CDP пакете SpokeA сообщил Hub о том, что через этот spoke (т.е. через Source IP address в этом CDP пакете) можно отправлять пакеты в сети 192.168.1.0/24 и 192.168.2.0/24. После получения такого пакета, таблица маршрутизации Hub принимает следующий вид:

 Hub>sh ip route 
 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
      ..................
        o - ODR, P - periodic downloaded static route
 
 Gateway of last resort is not set
 
      192.168.0.0/30 is subnetted, 2 subnets
 C       192.168.0.0 is directly connected, Serial1/0
 C       192.168.0.4 is directly connected, Serial1/1
 o    192.168.1.0/24 [160/1] via 192.168.0.2, 00:00:22, Serial1/0
 o    192.168.2.0/24 [160/1] via 192.168.0.2, 00:00:22, Serial1/0

Как видно из иллюстрации, у Hub появляются точные записи о маршрутах сообразно количеству объявлений в CDP пакете, посланном spoke. Если сконфигурировать и SpokeB, то таблица маршрутизации Hub примет окончательный вид:

 Hub>sh ip route 
 Gateway of last resort is not set
      192.168.0.0/30 is subnetted, 2 subnets
 C       192.168.0.0 is directly connected, Serial1/0
 C       192.168.0.4 is directly connected, Serial1/1
 o    192.168.1.0/24 [160/1] via 192.168.0.2, 00:00:49, Serial1/0
 o    192.168.2.0/24 [160/1] via 192.168.0.2, 00:00:49, Serial1/0
 o    192.168.3.0/24 [160/1] via 192.168.0.6, 00:00:17, Serial1/1
 o    192.168.4.0/24 [160/1] via 192.168.0.6, 00:00:17, Serial1/1

Важное замечание: spoke включает в свои CDP пакеты информацию только о подключенных сетях, следовательно наличие за spoke какой-либо маршрутизируемой среды не совместимо с ODR: маршруты в сети за spoke (если они к нему не подключены) не могут передаваться по ODR к хабу.

Подведем итоги:

  • У всех маршрутизаторов сформированы таблицы маршрутизации, позволяющие полноценно обмениваться трафиком
  • У Spoke маршрутизаторов в таблицах маршрутизации присутствуют только маршруты по-умолчанию
  • У Hub в таблице присутствуют точные маршруты ко всем удаленным сетям
  • Никаких настроек spoke маршрутизаторов вообще не нужно для работы ODR


Источник