Рассмотрим, как настроить резервирование с помощью функции BGP additional-paths. Маршрутизаторы BGP рассылают лучший маршрут своим соседям. Когда найден наилучший маршрут, он заменяет текущий маршрут. Рассылка маршрута и замена его новым называется неявным отзывом (implicit withdraw).
Поскольку рассылается только лучший маршрут, многие другие возможные маршруты неизвестны остальным маршрутизаторам. Это называется скрытием пути (path hiding).
У path hiding есть несколько недостатков:
- невозможно использовать протокол Multipath для BGP;
- вероятность появления субоптимальной маршрутизации;
- колебание атрибута MED в eBGP (RFC 3345).
Кроме того, возможный сбой next hop означает, что BGP должен переформироваться, прежде чем трафик снова сможет быть перенаправлен.
Содержание:
- Введение
- Топология
- Балансировка нагрузки
- Субоптимальная маршрутизация
- Применение функции additional-path
- Выводы
Введение
Благодаря инструменту additional paths, BGP рассылает несколько маршрутов для одной и той же сети. Это называется «разнообразие» маршрутов (path diversity). Additional paths — это расширение для BGP, которое добавляет уникальный идентификатор маршрута (path identifier) к каждому маршруту.
Path identifier похож на то, как в MPLS VPN работает RD (Route Distinguisher), за исключением того, что идентификаторы маршрутов могут использоваться в любом семействе адресов BGP.
Функция additional-paths может использоваться только для iBGP, и для её реализации необходимо выполнить три основных шага:
- Настроить маршрутизаторы так, чтобы они могли отправлять и получать дополнительные пути (additional paths).
- Настроить глобальные критерии выбора (global selection criterion) на маршрутизаторе, чтобы определить, какие additional paths должны быть выбраны вместе с лучшим маршрутом.
- Разослать каждому соседу набор или наборы additional paths, которые были ранее выбраны в качестве маршрутов-кандидатов.
Существует три варианта выбора additional paths:
- Best N: это лучший и второй лучший маршрут. Второй лучший маршрут выбирается путем устранения следующего / наилучшего маршрута, а затем выбора следующего наилучшего маршрута.
- Group-best: набор маршрутов, которые являются лучшими маршрутами от каждой AS.
- All: все маршруты, которые имеют уникальный next hop, могут использоваться как additional paths.
Топология
Исследуемая топология состоит из шести маршрутизаторов (Cisco 1941 с образом Cisco IOS Release 15.4 IP Base). Допускается использование маршрутизаторов других моделей, а также других версий операционной системы Cisco IOS. В зависимости от модели устройства и версии Cisco IOS, доступные команды и результаты их выполнения могут отличаться от тех, которые показаны в этой статье.
Схема топологии следующая:
В примере представлены пять маршрутизаторов в AS 4, где R2 — отражатель маршрутов (Router Reflector, RR), и шестой маршрутизатор R6 с сетью loopback 6.6.6.0/24, которая рассылается в BGP.
Настройки маршрутизатора R1
Настройки маршрутизатора R2
Настройки маршрутизатора R3
Настройки маршрутизатора R4
Настройки маршрутизатора R5
Настройки маршрутизатора R6
Балансировка нагрузки
Давайте посмотрим, что «знают» маршрутизаторы на данный момент. R4 и R5 узнали о 6.6.6.0/24 от R6:
Маршрутизатор R4:
Маршрутизатор R5:
R4 и R5 рассылают сеть 6.6.6.0/24 на отражатель маршрута R2:
R2 содержит оба маршрута в своей таблице BGP, но устанавливает маршрут только к R4. Он рассылает этот лучший маршрут своим соседям. Давайте рассмотрим два сценария, где это может стать проблемой.
Сначала посмотрим на таблицу BGP R1:
Поскольку R2 рассылает только свой лучший маршрут, R1 знает только о маршруте через R4. Как решается проблема со следующим переходом (next hop)? Давайте посмотрим на таблицу маршрутизации R1:
Маршрут 4.4.4.4 является лучшим к маршрутизатору R2, поэтому R1 никогда не будет использовать маршрут через R3. Поскольку R2 «скрывает» маршрут, присутствуют две проблемы:
- балансировка нагрузки отсутствует, R1 мог использовать R3, чтобы добраться к сети 6.6.6.0/24;
- при сбое next hop 4.4.4.4 BGP должен будет переформироваться, прежде чем возобновиться передача трафика.
Субоптимальная маршрутизация
Давайте проверим R3:
R3 также использует 4.4.4.4 в качестве next hop, чтобы добраться к loopback-интерфейсу 6.6.6.6. Как решить проблему с 4.4.4.4? Посмотрим на таблицу маршрутизации R3:
R3 использует два разных маршрута, чтобы добраться к сети 4.4.4.0/24, а именно: маршруты проходят через R2 или R5. Маршрут через R2 не является самым оптимальным, так как он содержит ещё один переход по сравнению с маршрутом через R5.
Кроме того, когда 4.4.4.4 выходит из строя, BGP должен переформироваться.
Применение функции additional-path
Давайте включим функцию additional-paths. Начнем с R2. Посмотрим на следующую команду в конфигурации BGP:
Активируем additional-paths для целого семейства адресов, в данном случае — IPv4 . Есть несколько вариантов, как это можно сделать. Начнем с включения самого расширения:
Для каждого соседа можно определить, нужно отправлять и / или получать дополнительные пути (additional-paths). Настроим R2 для отправки additional-paths как к R1, так и к R3:
R1 и R3, в свою очередь, должны быть настроены для приема additional-paths:
Маршрутизатор R1:
Маршрутизатор R3:
Следующее, что нужно сделать, это настроить R2 для глобального выбора additional-paths с помощью команды bgp additional-paths select
:
Укажем маршрутизатору R2 использовать все доступные маршруты в качестве additional-paths:
После ввода этой команды изменяется таблица BGP:
Обратите внимание на «a» в выводе выше. Это не влияет на таблицу маршрутизации и / или таблицу переадресации для R2:
По-прежнему виден только один маршрут. Последнее, что нужно сделать на R2 — указать additional-paths (ранее выбранные глобально), которые нужно рассылать соседям:
В выводе выше видно, что есть только три варианта. Давайте упростим задачу и настроим R2 для объявления всех additional-paths:
На маршрутизаторе R2 используем команду clear ip bgp *
и ещё раз посмотрим на таблицу BGP R1:
Теперь у R1 есть два варианта, которые указывают, что R2 рассылает два маршрута. R1 выбрал 4.4.4.4 в качестве следующего перехода (next hop), но также можно было бы использовать 5.5.5.5. Давайте подробнее рассмотрим таблицу BGP R1 для сети 6.6.6.0/24:
В выводе выше можно увидеть полученные идентификаторы маршрутов (path ID), а именно rx pathid: 0x0 и rx pathid: 0x1. Это два разных значения, которые делают каждый маршрут уникальным.
Теперь можно настроить R1 на использование multipath для обоих маршрутов. Но поскольку уже есть пример с настройкой BGP Multipath, попробуем настроить маршрут через R3 как резервный маршрут (backup path).
Примечание: как и зачем использовать резервные маршруты в BGP, подробно объясняется в этой статье.
Потребуются две команды: сначала команда bgp additional-paths select all
, чтобы указать R1, какие дополнительные пути использовать, и вторая команда — фактическая установка дополнительного пути:
Давайте снова проверим таблицу BGP R1:
В выводе выше показано, что второй маршрут (5.5.5.5 (metric 3) from 2.2.2.2 (2.2.2.2)) — это маршрут резервного копирования / восстановления (backup / repair). Также это можно проверить в таблице CEF:
Когда маршрут через 4.4.4.4 по каким-то причинам выходит из строя, можно сразу же перейти к резервному маршруту через 5.5.5.5, не дожидаясь, пока BGP переформируется.
Как насчет R3? Давайте посмотрим:
Поскольку на R3 настроен additional-path, теперь он может выбрать лучший маршрут. Он установил 5.5.5.5 в качестве следующего перехода.
Это очень практичная идея — настроить R3 для использования другого маршрута в качестве пути резервного копирования / восстановления:
Давайте взглянем на таблицу BGP R3:
И на таблицу CEF R3:
В итоге R5 — лучший маршрут, а R4 — резервный.
Выводы
Спасибо за уделенное время на прочтение статьи. Теперь Вы умеете настраивать резервирование с помощью функции BGP additional-paths на маршрутизаторах Cisco.
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet (программируемые сети) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.