Настройка BGP на Cisco и диагностика
Представляем Вам пример как настроить BGP на роутере Cisco в базовом варианте с комментариями. Так же будут рассмотрены особенности работы протокола BGP в крупных корпоративных сетях.
Базовая настройка BGP:
ID маршрутизатора в BGP берется из следующих источников, в порядке предпочтения:
- Команда bgp router-id
- Наибольший IP петлевого (loopback) интерфейса
- Наибольший IP физического интерфейса
В BGP маршруты по умолчанию суммируются до границ своего класса. Отключается это командой: no auto-summary .
Маршруты, объявляемые вручную, указываются следующей командой:
Маршруты, добавленные вручную командой network, помечаются как маршруты, происходящие из IGP, вот так — «i». Маршруты, которые получены при редистрибуции, помечаются как маршруты с неизвестным происхождением — вот так:»?».
BGP-маршрутизатор может отдавать своим соседям маршрут по умолчанию:
Требование синхронизации маршрутов можно отключить, позволив тем самым BGP импортировать в свою таблицу внутренние маршруты, не известные IGP:
В маршрутах, рассылаемых iBGP-пирам, атрибут «next hop» можно подменять на адрес роутера, который объявляет эти маршруты. Вот так:
Регулировка таймеров (в секундах):
Исходный адрес, от имени которого устанавливаются связи с соседями, можно указать вручную. Это особенно полезно, если исходный адрес висит на Loopback-интерфейсе:
TTL в eBGP по умолчанию равно 1. Чтобы увеличить это значение, используется команда «eBGP multihop»:
«eBGP multihop» обязателен, если используются петлевые интерфейсы.
Агрегация маршрутов BGP
Есть два способа рассылки агрегированных маршрутов:
Агрегация с помощью статических маршрутов:
Router(config)# ip route 192.168.0.0 255.255.0.0 Null0
…
Router(config-router)# network 192.168.0.0 mask 255.255.0.0
Агрегация с помощью команды «aggregate-address»:
Если используется ключевое слово summary-only , тогда объявляется только агрегированный маршрут. Если же это ключевое слово не используется, то наряду с агрегированным маршрутом рассылаются и more-specific (морспецифики, более конкретные маршруты).
С другой стороны, отдельные морспецифики можно фильтровать при помощи «подавления» (suppress map):
С целью изменения атрибутов агрегированному адресу можно назначить attribute map (например, для установки origin — происхождения маршрута):
В агрегированный маршрут по умолчанию не включается «AS Set». Включается этот атрибут вот так:
При включении «AS Set» агрегированный маршрут наследует все атрибуты включенных в него маршрутов. Для наследования атрибутов только от избранных маршрутов используется «advertise map«:
Управление BGP-соединениями
Для удобства каждому соседу можно назначить описание:
Соединение с отдельным соседом можно спрятать под пароль (хэш MD5 включается в BGP-пакеты):
Для каждого соседа можно настроить интервал рассылки (advertisement interval), регулируя тем самым время ожидания перед отправкой объявлений (0-600 секунд):
Переговоры между соседями об использовании версии BGP можно отключить, указав версию вручную:
Можно настроить маршрутизатор таким образом, чтобы в процессе выбора наилучшего маршрута не учитывалась длина «AS Path»:
Количество префиксов, получаемых от соседа, можно ограничить:
Здесь порог предупреждения (warning threshold) определяет процент от максимального количества префиксов, при превышении которого генерируется предупреждение. Ключевое слово warning-only позволяет соединению продолжать работу, даже если пир превысил максимальный порог префиксов.
Для временного отключения соседа без удаления его конфигурации используется команда neighbor shutdown .
Правила маршрутизации
Для фильтрации принимаемых или рассылаемых маршрутов применяются списки дистрибуции (distribute list):
Для фильтрации маршрутов, основываясь на их «AS Path», применяются списки фильтрации (filter list):
Вместо списков дистрибуции или фильтрации можно использовать роутмапы (route map), которые позволяют производить более гибкую настройку и, в добавок, позволяют менять атрибуты. Применение route-map к соседу:
Административный вес влияет на предпочтения среди маршрутов, полученных от BGP-пиров. Маршрутам от отдельного соседа этот вес (0-65535) можно назначить локально:
По умолчанию маршрутам, имеющим локальное происхождение, назначается вес 32768, в то время как вес всех остальных равен 0. Вес можно назначать и избранным маршрутам, применяя роутмапы или используя ключевое слово weightпосле параметра filter-list:
Административная дистанция отличается от веса тем, что влияет на предпочтения среди маршрутов, полученных от разных протоколов маршрутизации. Чем меньше дистанция, тем предпочтительней. Административная дистанция внешних BGP-маршрутов равна 20. Дистанция внутренних и локальных (генерируемых данным роутером при помощи команды network) BGP-маршрутов равна 200.
Бэкдор (backdoor link, черный ход) — приватное соединение между AS, которому должно отдаваться предпочтение перед eBGP-маршрутами. Для чего административная дистанция внешнего маршрута должна быть искусственно завышена включением в BGP-процесс необходимой сети с ключевым словом backdoor:
Маршрут к указанной сети будет считаться локальным с административной дистанцией 200, из-за чего предпочтение будет отдаваться маршрутам, полученным из IGP, который работает в этом приватном линке, и трафик вместо внешнего маршрута потечет по бэкдору.
Кроме того, iBGP-пиры обмениваются друг с другом локальными предпочтениями (local preference, 32-битная величина, по умолчанию равная 100). Это значение можно установить командой ip default local-preference, либо set local-preference в роутмапе. В отличие от административного веса, действие локалпрефов распространяется за пределы локального роутера.
Влияние на путь, которым трафик будет заходить в вашу AS из соседней, при наличии нескольких точек входа, оказывает MED (или «метрика»). Для установки MED BGP-маршрута равным значению метрики такого же маршрута из IGP, в роутмапе можно воспользоваться командой set metric-type internal. Для принудительного сравнения MED нескольких маршрутов к одному адресату, даже если они происходят из разных AS, в BGP-процессе применяется команда bgp always-compare-med.
MED влияет только на поведение соседней AS. Повлиять аналогичным образом на поведение удаленных AS можно при помощи искусственного увеличения «AS Path» маршрутов. Для этого в роутмапе используется команда set as-path prepend. Обычно локальная AS «препендится» один или несколько раз. Например, для маршрутов AS 123:
Для сохранения BGP-информации в процессе редистрибуции в/из IGP используется тегирование маршрутов (route tagging). По умолчанию маршруты, передаваемые из BGP в IGP, тегируются собственным «AS Path». В тег можно добавить ещё происхождение маршрута командой set automatic-tag в роутмапе. Для автоматической установки атрибута «AS Path» из тега при редистрибуции маршрута из IGP обратно в BGP применяется команда set as-path tag в роутмапе. Также теги маршрутов могут применяться для хранения BGP-коммьюнити.
Включение подавления маршрутов:
Посмотреть подавленные маршруты можно командой show ip bgp dampened-paths. Команда show ip bgp flap-statistics позволяет просмотреть все текущие подавленные маршруты вместе с маршрутами, которые вообще когда-либо подавлялись. Команда clear ip bgp dampening возвращает подавленные маршруты обратно в обслуживание. Командой clear ip bgp flap-statistics стирается вся история «мигания» маршрутов.
Особенности настройки BGP в больших сетях
Пример организации пиринговой группы:
Router(config-router)# neighbor BRANCHES peer-group
Router(config-router)# neighbor BRANCHES ebgp-multihop 2
Router(config-router)# neighbor BRANCHES update-source Loopback 0
Router(config-router)# neighbor 10.1.0.84 peer-group BRANCHES
Router(config-router)# neighbor 10.1.0.84 remote-as 123
У правил, применяемых к отдельному члену пиринговой группы, приоритет выше, чем у правил, применяемых ко всей группе.
Коммьюнити
Коммьюнити (сообщество) можно установить в роутмапах командой: set community . В добавок, для включения атрибута «community» в рассылку, каждый сосед или пиринговая группа должны быть настроены с опцией send-community.
- no-export — передается с маршрутом, рассылаемым eBGP-пирам, инструктируя их не рекламировать этот маршрут дальше, за пределы собственной AS
- no-advertise — рассылается iBGP-пирам с целью предотвращения дальнейшей рассылки маршрута
- local-as — используется для ограничения рассылки маршрута пределами конфедерации
Пользовательские коммьюнити устанавливаются либо в десятичном формате, либо в форме AA:NN (ASN:число).
Организация стандартного списка сообществ (community list):
Router(config)# ip community-list 1
Критерий сравнения по коммьюнити-листу в роутмапе можно включать командой match community. Коммьюнити можно добавлять к маршруту без изменения уже присвоенных ему коммьюнити при помощи ключевого слова additive команды set community. Определенные коммьюнити, совпадающие с коммьюнити-листом, можно удалять командой set comm-list delete.
Номера приватных AS
Частные ASN находятся в промежутке с 64512 по 65535. В настройках соседа командой remove-private-as можно стереть из маршрутов этого соседа все частные ASN в атрибуте «AS Path»:
Конфедерации
Конфедерация — это AS, поделенная на более мелкие локальные автономные системы, обычно использующие приватную нумерацию. Между этими мелкими AS работает eBGP. Маршрутизаторы внутри конфедерации должны быть соответствующим образом настроены для её распознавания:
Плюс маршрутизаторы, пирящиеся с другими локальными AS, должны быть в курсе, что эти AS также принадлежат одной конфедерации:
Роут-рефлекторы BGP
На роут-рефлекторе должны быть указаны внутренние пиры, которым он должен отражать маршруты:
Роут-рефлектор добавляет к маршрутам «Originator ID», указывающий на происхождение маршрута, и «Cluster List», определяющий рефлект-кластер во избежание появления маршрутных петель. По умолчанию роут-рефлектор добавляет свой ID в список кластера. Но ID кластера можно указать вручную командой bgp cluster-id. Это необходимо, если в кластере несколько рефлекторов.
Если клиенты рефлектора полносвязны между собой, для отключения отражения маршрутов между клиентами используется команда: no bgp client-to-client reflection. Маршруты извне кластера будут продолжать отражаться обычным образом.