BGP в Cisco

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

Автор: Наташа Самойленко

На этой странице описывается настройка BGP на маршрутизаторах Cisco.

На странице BGP/config представлена схема и конфигурационные файлы для сети, которая рассматривается на этой странице.

Содержание

[править] Выбор пути

Характеристики процедуры выбора пути протоколом BGP:

  • В таблице BGP хранятся все известные пути, а в таблице маршрутизации — лучшие.
  • Пути выбираются на основании политик.
  • Пути не выбираются на основании пропускной способности.

Сначала проверяется:

  • Доступен ли next-hop (Route Resolvability Condition)
    Для того чтобы next-hop считался доступным (accessible), необходимо чтобы в таблице маршрутизации был IGP-маршрут, который ведет к нему.

На маршрутизаторе Cisco, если не настроены никакие политики выбора пути, выбор пути происходит таким образом (на каждый следующий шаг маршрутизатор переходит только при совпадении значений на предыдущем):

  1. Максимальное значение weight (локально для маршрутизатора).
  2. Максимальное значение local preference (для всей AS).
  3. Предпочесть локальный маршрут маршрутизатора (next hop = 0.0.0.0).
  4. Кратчайший путь через автономные системы. (самый короткий AS_PATH)
  5. Минимальное значение origin code (IGP < EGP < incomplete).
  6. Минимальное значение MED (распространяется между автономными системами).
  7. Путь eBGP лучше чем путь iBGP.
  8. Выбрать путь через ближайшего IGP-соседа.
  9. Выбрать самый старый маршрут для eBGP-пути.
  10. Выбрать путь через соседа с наименьшим BGP router ID.
  11. Выбрать путь через соседа с наименьшим IP-адресом.

Icon-caution.gif

Только лучшие пути из таблицы BGP анонсируется BGP-соседям и помещается в таблицу маршрутизации (если другой маршрут не выиграет по значению AD).

[править] Создание процесса BGP

Пример топологии

Создание процесса BGP:

dyn3(config)# router bgp <1-65535>

Параметры:

  • <1-65535> номер автономной системы, который принадлежит локальный маршрутизатор (приватный диапазон 64512-65535). Сравнивая этот номер с номерами автономных систем соседей, маршрутизатор будет использовать iBGP или eBGP.

В отличие от протоколов IGP, команда router bgp не включает работу BGP на маршрутизаторе. На маршрутизаторе может существовать только один процесс BGP.

[править] Выбор идентификатора маршрутизатора (Router ID)

Router ID можно назначить административно выполнив команду:

dyn3(config-router)# bgp router-id <ip-address>

Если RID не был назначен административно, то он выбирается автоматически (в момент создания процесса BGP), в зависимости от настроек маршрутизатора, по таким правилам:

  1. Наибольший IP-адрес присвоенный loopback-интерфейсу (в состоянии up/up) будет Router ID.
  2. Наибольший IP-адрес из всех других интерфейсов (в состоянии up/up) будет Router ID.

[править] Соседи BGP

Создать соседа BGP (эта команда активирует сессию BGP с указанным соседом):

dyn3(config-router)# neighbor <ip-address | peer-group-name>  remote-as <as-number>

Параметры команды neighbor:

  • ip-address — идентифицирует соседний маршрутизатор. Это тот адрес, который будет указан как получатель в BGP-пакетах. У локального маршрутизатора обязательно должен быть маршрут к этому соседу для того, чтобы он смог установить отношения соседства с ним.
  • peer-group-name — группа маршрутизаторов BGP, которые используют одинаковую политику обновлений.
  • remote-as <as-number> — номер автономной системы соседа.

Команда neighbor используется для указания и внутренних соседей и внешних:

  • Если указывается адрес внутреннего соседа (номер AS соседа совпадает с номером AS локального маршрутизатора), то он не обязательно должен быть непосредственно присоединен к маршрутизатору (но маршрут к соседу прописан должен быть).
  • Если указывается адрес внешнего соседа (номер AS соседа отличается от номера AS локального маршрутизатора), то он должен быть непосредственно присоединен к маршрутизатору, по умолчанию.

Пример задания соседей на маршрутизаторе dyn3:

dyn3(config)#router bgp 65000 
dyn3(config-router)# neighbor 192.168.4.3 remote-as 65000
dyn3(config-router)# neighbor 192.168.2.1 remote-as 65000
dyn3(config-router)# neighbor 192.168.3.4 remote-as 65000
dyn3(config-router)# neighbor 192.168.5.6 remote-as 65006

При необходимости можно указать описание для соседа:

dyn3(config-router)# neighbor <ip-address> description <text>

[править] Настройка адреса для отправки обновлений

Для тех случаев, когда в сети iBGP есть несколько путей между соседями и в качестве отправителя могут быть разные интерфейсы, рекомендуется настраивать loopback-интерфейсы. Соседи будут указываться по их loopback-интерфейсам.

Для того чтобы пакеты BGP отправлялись с адресом отправителя loopback-интерфейсом, необходимо это явно указать:

dyn3(config-router)# neighbor <ip-address | peer-group-name>  update-source <interface-type interface-number>

После выполнение этой команды, пакеты соседу с указанным IP-адресом, будут отправляться с адресом отправителя равным IP-адресу loopback-интерфейса. Сети loopback-интерфейсов должны быть доступны соседям.

[править] Настройка eBGP-соседей через loopback

Если loopback-интерфейсы используются как отправители пакетов BGP, то для eBGP-соседей необходимо разрешить коммуникации с соседями, которые находятся не в непосредственно присоединенных сетях. Это можно сделать увеличив TTL в пакетах с помощью команды ebgp-multihop или отменив проверку connected маршрутов.

Увеличение TTL:

dyn3(config-router)# neighbor <ip-address | peer-group-name>  ebgp-multihop [ttl]

Note-icon.gif

По умолчанию BGP проверяет находится ли eBGP-сосед в непосредственно присоединенной сети локального маршрутизатора. Эту проверку отключает параметр disable-connected-check.

Если EBGP-соседи непосредственно соединены, но сессия BGP поднята между loopback-интерфейсами, то можно отключить проверку connected-маршрутов (значение TTL остается прежним = 1). В таком случае сессия не будет установлена, если EBGP-сессия будет передаваться через другие устройства.

Пример настройки:

router bgp 20
 neighbor 192.1.4.4 remote-as 10
 neighbor 192.1.4.4 disable-connected-check
 neighbor 192.1.4.4 update-source Loopback0

Note-icon.gif

Маршрутизатор не уменьшает TTL в пакетах, которые предназначены ему самому

[править] Аутентификация

Аутентификация с соседом (группой соседей):

dyn3(config-router)# neighbor <ip-address | peer-group-name>  password <string>

После указания пароля, к каждому TCP-сегменту, который отправляется соседу, будет добавляться значение MD5-хеша взятое с таких входных данных:

  • IP-адрес отправителя, IP-адрес получателя, номер протокола дополненный нулями, размер сегмента
  • заголовок TCP, исключая опции и предполагая нулевое значение контрольной суммы
  • данные сегмента TCP
  • указанный ключ или пароль, известный обеим сторонам соединения TCP

[править] Изменение значения таймеров keepalive и hold

Для каждого соседа может быть указано уникальное значение таймеров keepalive и hold. BGP выполняет проверку таймеров keepalive и hold, однако несовпадение этих параметров не влияет на установку отношений соседства.

По умолчанию значение таймеров:

  • Hold — 180 секунд,
  • Keepalive — 60 секунд.

В сообщениях Open передается только значение таймера Hold. Если значения таймеров не совпадают, то каждый маршрутизатор будет использовать меньшее значение таймера Hold.

Если выбранное значение таймера Hold равно нулю, то сообщения Keepalive отправляться не будут.

Так как значение таймера keepalive не передается, то оно должно быть каким-то образом получено. Маршрутизатор выбирает значение таймера keepalive таким образом:

  • Если был выбран таймер hold, который настроен на локальном маршрутизаторе, то используется локальное значение таймера keepalive;
  • Если был выбран таймер hold, который настроен на соседнем маршрутизаторе и значение локально настроенного таймера keepalive меньше чем 1/3 выбранного таймера hold, то используется локальное значение таймера keepalive;
  • Если был выбран таймер hold, который настроен на соседнем маршрутизаторе и значение локально настроенного таймера keepalive больше чем 1/3 выбранного таймера hold, то используется целое число, которое меньше чем 1/3 выбранного таймера hold.

Изменение таймеров для процесса BGP:

dyn3(config-router)# timers bgp <keepalive> <holdtime>

Изменение таймеров для соседа или группы соседей (эти значения более приоритетные чем значения таймеров для процесса):

dyn3(config-router)# neighbor <ip-address | peer-group-name> timers <keepalive> <holdtime>

[править] Разрыв связи с соседом

Административно разорвать связь с соседом (используется при внесении изменений для того чтобы избежать route flapping):

dyn3(config-router)# neighbor <ip-address | peer-group-name>  shutdown

Восстановить административно разорванную связь с соседом:

dyn3(config-router)# no neighbor <ip-address | peer-group-name>  shutdown

Icon-caution.gif

Когда маршрутизатор создает BGP-пакет, IP-адрес указанный в команде neighbor определяет адрес назначения в пакете, а исходящий интерфейс — адрес отправителя.

Когда BGP-пакет получен для новой сессии, адрес отправителя в пакете сравнивается с IP-адресами соседей:

  • Если совпадение найдено, то связь устанавливается,
  • Если нет — пакет игнорируется

[править] Группа соседей

Объединение соседей в группы не добавляет новый функционал. Группы позволяют сократить количество настроек, которые относятся к соседям и оптимизировать производительность маршрутизатора.

После объединения соседей в группу:

  • Параметры можно задавать для группы соседей
  • Для группы должна быть одинаковая исходящая политика (outbound policy)
  • Входящая политика (inbound policy) для группы может быть различной
  • Обновления генерируются один раз для всей группы
  • Соседний маршрутизатор может принадлежать только одной группе соседей
  • Группа соседей имеет локальное значение, эта настройка никак не передается соседям
  • В группе нельзя смешивать iBGP и EBGP соседей.

Соседи, которые принадлежат группе, всегда наследуют такие параметры группы (настройка этих параметров для конкретного соседа не перебивает настройки сделанные для группы):

  • remote-as
  • version
  • update-source
  • out-route-map
  • out-filter-list
  • out-dist-list
  • minimum-advertisement-interval
  • next-hop-self

Создание группы соседей:

dyn3(config-router)# neighbor <peer-group-name> peer-group

Добавить соседа в созданную группу:

dyn3(config-router)# neighbor <ip-address>  peer-group <peer-group-name> 

Questionmark.jpg

Написать о BGP Dynamic Update Peer-Groups и Peer Templates

[править] TTL security check

dyn(config-router)# neighbor <address>  ttl-security hops <hop-count> 

[править] Построение таблицы BGP

В таблице BGP, которая также называется таблица топологии BGP или BGP Routing Information Base (RIB), хранится информация о сетях (NLRI), которые выучены BGP и соответствующие атрибуты пути.

Маршрутизатор может поместить запись в таблицу BGP таким образом:

  • используя команду network,
  • получив обновление от соседа,
  • перераспределив маршруты из другого источника.

Просмотр таблицы BGP:

show ip bgp

[править] Команда network

Указать какие сети анонсировать по протоколу BGP (если сеть присутствует в таблице маршрутизации):

dyn3(config-router)# network <network-number> [mask <network-mask>] [route-map <map-tag>]

Параметр route-map позволяет изменить параметры маршрута перед тем как он будет помещен в таблицу BGP. Например, можно изменить такие параметры:

  • Weight,
  • Community,
  • Local preference,
  • MED.

Команда network в BGP отличается от аналогичной команды в IGP-протоколах. В BGP эта команда говорит процессу BGP:

  • Найти в текущей таблице маршрутизации маршрут, который в точности совпадает с параметрами команды network. Если такой маршрут существует, то поместить соответствующую NLRI в локальную BGP-таблицу.

Свойства команды:

  • Указывает какую сеть поместить в таблицу BGP и затем анонсировать соседям,
  • Без указания маски BGP анонсирует классовую сеть,
  • При включенном no auto-summary — BGP ищет полное совпадение префикса и длины префикса с маршрутами в таблице маршрутизации,
  • При включенном auto-summary — если в команде network указана классовая сеть, то совпадением считается ситуация, когда в таблице маршрутизации существует хотя бы одна подсеть этой классовой сети,
  • Максимально возможное число команд network в процессе BGP — 200.

Отличия от протоколов IGP:

  • Не включает BGP на интерфейсе,
  • Указываются не только непосредственно присоединенные сети, а все сети, которые должны быть анонсированы,
  • Если указанная сеть не найдена в таблице маршрутизации, то сеть анонсироваться не будет.

Note-icon.gif

Команда neighbor указывает BGP кому анонсировать, а команда network — что анонсировать.

В ситуациях когда необходимо анонсировать маршрут, которого нет в таблице маршрутизации, создают статический маршрут в null 0. Например, на маршрутизатор приходят по IGP протоколу подсети суммарной сети 77.7.0.0/16. Самой суммарной сети в таблице маршрутизации нет, но в BGP необходимо анонсировать именно её.

Настройка будет выглядеть так:

dyn(config-router)# network 77.7.0.0 mask 255.255.0.0
dyn(config)# ip route 77.7.0.0 255.255.0.0 null 0 

Суммарный маршрут будет анонсироваться всегда, так как интерфейс null 0 доступен всегда. Пришедшие пакеты будут отправляться по маршрутам полученным по IGP. Если маршрута в определенную сеть нет, то пакет будет отброшен.

[править] Перераспределение маршрутов

В BGP с помощью команды redistribute можно перераспределить маршруты:

  • статические,
  • присоединенные,
  • выученные с помощью IGP протоколов.
dyn3(config-router)#redistribute ?
  bgp        Border Gateway Protocol (BGP)
  connected  Connected
  dvmrp      Redistribution of DVMRP into BGP IPv4 Multicast
  eigrp      Enhanced Interior Gateway Routing Protocol (EIGRP)
  isis       ISO IS-IS
  iso-igrp   IGRP for OSI networks
  mobile     Mobile routes
  odr        On Demand stub Routes
  ospf       Open Shortest Path First (OSPF)
  rip        Routing Information Protocol (RIP)
  static     Static routes

При перераспределении маршрутов из IGP протоколов в BGP:

  • Перераспределяются два типа маршрутов из таблицы маршрутизации:
    • выученные по соответствующему IGP протоколу,
    • присоединенные маршруты совпадающие с указанной командой network в IGP,
  • Метрика перераспределенных маршрутов:
    • может не указываться:
      • BGP использует отличный от протоколов IGP механизм выбора лучшего маршрута,
      • по умолчанию метрика протокола IGP переходит в атрибут MED,
    • если указывается, то это значение атрибута MED.

[править] Перераспределение маршрутов OSPF

Схема будет использоваться для объяснения настройки перераспределения маршрутов OSPF в BGP:

BGP ospf redis.png

[править] Начальные условия

На маршрутизаторе dyn3 такая таблица маршрутизации:

dyn3# sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.4.0/24 is directly connected, FastEthernet1/0
O IA 192.168.1.0/24 [110/2] via 192.168.2.1, 00:47:06, FastEthernet0/0
C    192.168.2.0/24 is directly connected, FastEthernet0/0
O E1 192.168.3.0/24 [110/22] via 192.168.2.1, 00:47:06, FastEthernet0/0

Настройка OSPF на dyn3:

router ospf 1
 network 192.168.2.0 0.0.0.255 area 0
[править] Перераспределение маршрутов без задания метрики

По умолчанию, если в команде redistribute не указан тип маршрута, то перераспределяются внутризональные и межзональные маршруты OSPF. Опция команды -- internal.

Note-icon.gif

Внутренними (internal) маршруты называются по тому принципу, что все они сгенерированы процессом OSPF, при совпадении сети интерфейса с сетью указанной в команде network.

Перераспределение внутризональных и межзональных маршрутов OSPF в BGP:

dyn3(config)# router bgp 65000
dyn3(config-router)# redistribute ospf 1

Таблица BGP на dyn3 после перераспределения внутренних маршрутов:

dyn3# sh ip bgp  
BGP table version is 7, local router ID is 192.168.4.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 192.168.1.0      192.168.2.1              2         32768 ?
*> 192.168.2.0      0.0.0.0                  0         32768 ?

Таблица BGP на dyn5 после перераспределения внутренних маршрутов:

dyn5# sh ip bgp  
BGP table version is 7, local router ID is 192.168.5.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*>i192.168.1.0      192.168.2.1              2    100      0 ?
*>i192.168.2.0      192.168.4.3              0    100      0 ?

Перераспределение маршрутов других типов:

router(config-router)# redistribute ospf 1 match <internal | external <1|2> | nssa-external <1|2>>

Например, на dyn3 перераспределение маршрутов типа E1:

dyn3(config)# router bgp 65000   
dyn3(config-router)# redistribute ospf 1 match external 1

Если до этого было выполнено перераспределение маршрутов командой redistribute ospf 1, то теперь будут перераспределяться маршруты:

  • внутризональные и межзональные,
  • типа external 1.

Note-icon.gif

При перераспределении маршрутов новая команда redistribute с параметром match не переписывает предыдущие настройки, а добавляет новый тип маршрута.

Конфигурация dyn3:

router bgp 65000
 no synchronization
 bgp log-neighbor-changes
 redistribute ospf 1 match internal external 1
 neighbor 192.168.4.5 remote-as 65000
 no auto-summary

Таблица BGP на dyn3 после перераспределения внутренних и E1 маршрутов:

dyn3# sh ip bgp
BGP table version is 8, local router ID is 192.168.4.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 192.168.1.0      192.168.2.1              2         32768 ?
*> 192.168.2.0      0.0.0.0                  0         32768 ?
*> 192.168.3.0      192.168.2.1             22         32768 ?

Таблица BGP на dyn5 после перераспределения внутренних и E1 маршрутов:

dyn5# sh ip bgp
BGP table version is 8, local router ID is 192.168.5.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*>i192.168.1.0      192.168.2.1              2    100      0 ?
*>i192.168.2.0      192.168.4.3              0    100      0 ?
*>i192.168.3.0      192.168.2.1             22    100      0 ?

Таблица маршрутизации на dyn5 после перераспределения внутренних и E1 маршрутов:

dyn5# sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.4.0/24 is directly connected, FastEthernet0/0
C    192.168.5.0/24 is directly connected, FastEthernet1/0
B    192.168.1.0/24 [200/2] via 192.168.2.1, 00:06:02
B    192.168.2.0/24 [200/0] via 192.168.4.3, 00:06:07
B    192.168.3.0/24 [200/22] via 192.168.2.1, 00:00:03
[править] Перераспределение маршрутов и задание метрики (атрибута MED)

Изменение метрики (атрибут MED) для маршрутов перераспределенных из OSPF:

dyn3(config)# router bgp 65000                              
dyn3(config-router)# redistribute ospf 1 metric 85

Таблица BGP на dyn3 после перераспределения:

dyn3# sh ip bgp
BGP table version is 10, local router ID is 192.168.4.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 192.168.1.0      192.168.2.1             85         32768 ?
*> 192.168.2.0      0.0.0.0                  0         32768 ?
*> 192.168.3.0      192.168.2.1             85         32768 ?

Таблица BGP на dyn5 после перераспределения:

dyn5# sh ip bgp  
BGP table version is 10, local router ID is 192.168.5.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*>i192.168.1.0      192.168.2.1             85    100      0 ?
*>i192.168.2.0      192.168.4.3              0    100      0 ?
*>i192.168.3.0      192.168.2.1             85    100      0 ?
[править] Удаление настроек перераспределения маршрутов

Если необходимо удалить настроенное перераспределение определенных маршрутов, например, оставить только маршруты E1 и удалить внутренние:

dyn3(config-router)# no redistribute ospf 1 match internal

Теперь в таблице BGP только маршрут E1:

dyn3# sh ip bgp
BGP table version is 19, local router ID is 192.168.4.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 192.168.3.0      192.168.2.1             22         32768 ?

Note-icon.gif

На сайте cisco указано, что после удаления всех ключевых слов (internal, external и др) в команде redistribute, остается команда redistribute ospf 1 и при этом перераспределяются внутренние маршруты. Команда остается, но маршруты перестают перераспределяться. Если просто повторить команду, то они перераспределяются. Далее демонстрация этого поведения.

Для того чтобы удалить перераспределение полностью необходимо использовать команду no redistribute ospf 1.

Настроено перераспределение внутренних маршрутов:

dyn3(config-router)#redistribute ospf 1                             

Таблица BGP с перераспределенными внутренними маршрутами:

dyn3(config-router)#do sh ip bgp                                    
BGP table version is 40, local router ID is 192.168.4.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 192.168.1.0      192.168.2.1              2         32768 ?
*> 192.168.2.0      0.0.0.0                  0         32768 ?

Настроено перераспределение E1 маршрутов:

dyn3(config-router)#redistribute ospf 1 match  external 1

Таблица BGP с перераспределенными внутренними и E1 маршрутами:

        
dyn3(config-router)#do sh ip bgp                         
BGP table version is 41, local router ID is 192.168.4.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 192.168.1.0      192.168.2.1              2         32768 ?
*> 192.168.2.0      0.0.0.0                  0         32768 ?
*> 192.168.3.0      192.168.2.1             22         32768 ?

Конфигурация маршрутизатора:

dyn3(config-router)#do sh run | i redis                  
 redistribute ospf 1 match internal external 1

Если полностью удалить всё настроенное перераспределение таким образом:

dyn3(config-router)#no redistribute ospf 1 match internal external 1

то на маршрутизаторе всё равно остается такая настройка:

dyn3(config-router)#do sh run | i redis                             
 redistribute ospf 1

Однако маршруты более не перераспределяются:

dyn3(config-router)#do sh ip bgp                                    

После повторения команды:

dyn3(config-router)# redistribute ospf 1

Внутренние маршруты опять перераспределяются:

dyn3(config-router)#do sh ip bgp        
BGP table version is 46, local router ID is 192.168.4.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 192.168.1.0      192.168.2.1              2         32768 ?
*> 192.168.2.0      0.0.0.0                  0         32768 ?

[править] Автоматическое суммирование (команда auto-summary)

Команда auto-summary по-разному проявляет себя при использовании её с командами redistribute и network.

При включенной команде auto-summary:

  • команда redistribute добавляет только соответствующую классовую сеть в BGP-таблицу,
  • команда network добавляет соответствующую классовую сеть и подсети (если они есть в таблице маршрутизации) в BGP-таблицу.

При выключенной команде no auto-summary:

  • команда redistribute добавляет соответствующие подсети в BGP-таблицу,
  • команда network добавляет подсети в BGP-таблицу, если они есть в таблице маршрутизации.

[править] Суммирование маршрутов

Создание суммарного маршрута:

dyn(config-router)# aggregate-address address mask [as-set] [summary-only] [suppress-map map-name] 
[advertise-map map-name] [attribute-map map-name] 

Параметры команды:

  • as-set — если настроена эта опция, маршрутизатор создает поле AS_SET для суммарного маршрута, но только в том случае, если поле AS_SEQ суммарного маршрута равно 0;
  • summary-only — если задана эта опция, маршрутизатор анонсирует суммарный маршрут и не анонсирует его компоненты. По умолчанию все компоненты суммарного маршрута анонсируются;
  • suppress-map — если задана эта опция, маршрутизатор анонсирует суммарный маршрут и подмножество его компонентов, за исключением тех которые явно указаны, наличие опции summary-only при этом игнорируется;

Логика команды aggregate-address:

  • Суммарный маршрут не создается, если в таблице BGP нет ни одного маршрута для NLRI внутри суммарного маршрута
  • Если из таблицы BGP исчезнут все подсети суммарного маршрута, будет удален и суммарный маршрут (маршрутизатор сообщит соседям, что маршрут более не действителен)
  • По умолчанию анонсирует суммарный маршрут и все компоненты маршрута
  • Если суммарный маршрут анонсируется eBGP-соседу, то маршрутизатор добавляет номер своей автономной системы в поле AS_SEQ перед отправкой сообщения Update
  • Next-hop адрес:
    • Устанавливает Next-hop адрес суммарного маршрута в локальной таблице BGP равным 0.0.0.0
    • Устанавливает Next-hop адрес суммарного маршрута, при анонсировании его соседям, равным IP-адресу, который указан как источник обновлений для соответствующих соседей
  • AS path:
    • Если у всех компонентов суммарного маршрута одинаковое значение поля AS_SEQ, то для суммарного маршрута значение этого поля будет таким же
    • Если у компонентов суммарного маршрута отличается значение поля AS_SEQ, то для суммарного маршрута значение этого поля будет установлено равным 0 (так как маршрутизатор не может указать корректное значение этого поля для суммарного маршрута)
      • Установка поля AS_SEQ равным 0 может привести к образованию петель, так как BGP обнаруживает петли просматривая атрибут AS path. Поле AS_SET (параметр as-set) решает эту проблему, указывая все автономные системы через которые проходил любой из компонентов суммарного маршрута.

[править] Маршрут по умолчанию

В BGP маршрут по умолчанию может быть добавлен с помощью команд:

  • network — маршрут по умолчанию должен существовать в таблице маршрутизации;
  • redistribute — маршрут по умолчанию должен существовать в таблице маршрутизации. И надо указать команду default-information originate;
  • neighbor default-originate — не добавляет маршрут по умолчанию в локальную таблицу BGP, но анонсирует маршрут соседям. По умолчанию не проверяет существует ли маршрут по умолчанию в таблице маршрутизации (можно указать чтобы проверка выполнялась задав route-map).

Добавление маршрута по умолчанию:

dyn(config-router)# neighbor <address>  default-originate [route-map <map-name>] 

[править] Conditional route injection

dyn(config-router)# bgp inject-map <inject-map-name> exist-map <exist-map-name> [copy-attributes]

[править] Анонсирование маршрутов соседям

Для того чтобы маршрутизатор анонсировал маршруты соседям, необходимо чтобы они были в таблице BGP. В предыдущем разделе описывались варианты с помощью которых маршрут может быть помещен в таблицу BGP. В этом разделе описываются правила, используя которые, маршрутизатор решает анонсировать маршрут из таблицы BGP или нет.

[править] Правила анонсирования маршрутов

При выборе какой маршрут должен быть отправлен соседу в сообщении Update, BGP использует такие правила:

  • Отправлять только лучшие маршруты из таблицы BGP
  • Для iBGP-соседей — не анонсировать маршруты, которые были выучены от других iBGP-соседей
  • Для eBGP-соседей — не анонсировать маршруты для которых номер AS соседа уже находится в атрибуте AS path
  • Не анонсировать suppressed или dampened маршруты
  • Не анонсировать маршруты, которые отфильтрованы настройками

Note-icon.gif

Если маршрут BGP не попал в таблицу маршрутизации из-за того, что есть маршрут от источника с лучшим значением AD, то маршрут всё равно анонсируется всем соседям BGP. Это можно изменить с помощью bgp suppress-inactive.

[править] Построение таблицы маршрутизации

[править] Рекурсивная маршрутизация (recursive routing)

Next-hop в BGP отличается от IGP протоколов. В BGP next-hop, как правило, указывает на eBGP-соседа, который отправил обновление в локальную автономную систему. Соответственно, для iBGP-маршрутизаторов, next-hop находится не в непосредственно присоединенной сети.

Для того чтобы полученный маршрут был выбран как лучший в таблице BGP и был помещён в таблицу маршрутизации, необходимо чтобы указанный next-hop был доступен. Проверка доступности next-hop фактически заставляет маршрутизатор дважды просматривать таблицу маршрутизации для того чтобы определить доступность пришедшего маршрута — это и называется рекурсивной маршрутизацией. Для того чтобы проверка доступности next-hop была пройдена, необходимо чтобы в IGP протоколе, который работает в локальной автономной системе, был маршрут к этому next-hop.

Если next-hop для определенного маршрута не доступен, то этот маршрут будет сохранен в таблице BGP, но он не может быть помещён а таблицу маршрутизации.

[править] Изменение AD

Изменение значений AD для всех маршрутов:

dyn3(config-router)# distance bgp <external-distance> <internal-distance> <local-distance>

Note-icon.gif

Новое значение AD применяется только для маршрутов, которые были получены после того как была выполнена команда.

Настройка значения AD отличного от значения по умолчанию для маршрутов, которые пришли от определенного соседа:

dyn3(config-router)# distance <AD-value> <ip-address> <mask> [access-list] 

Параметры команды:

  • AD-value — значение AD,
  • ip-address — IP-адрес, который используется в команде neighbor для указания соседа,
  • access-list — ACL, который указывает для каких маршрутов полученных от соседа установить значение AD (если сеть совпадает с правилом permit, то AD будет изменено).

Пример задания AD 5 для сети 192.168.100.0/24 полученной от соседа 192.168.4.5:

dyn3(config)# ip access-list standard BGP-AD
dyn3(config-std-nacl)# permit 192.168.100.0 0.0.0.255
dyn3(config-std-nacl)# exit
dyn3(config)# router bgp 65000                  
dyn3(config-router)# distance 5 192.168.4.5 0.0.0.0 BGP-AD

Значение AD на маршрутизаторе:

dyn3# sh ip protocol
Routing Protocol is "bgp 65000"
 Outgoing update filter list for all interfaces is not set
 Incoming update filter list for all interfaces is not set
 IGP synchronization is disabled
 Automatic route summarization is disabled
 Redistributing: ospf 1
 Neighbor(s):
   Address          FiltIn FiltOut DistIn DistOut Weight RouteMap
   192.168.4.5                                          
 Maximum path: 1
 Routing Information Sources:
   Gateway         Distance      Last Update
 Distance: external 20 internal 200 local 200
   Address         Wild mask       Distance  List
   192.168.4.5             0.0.0.0        5  BGP-AD

Таблица маршрутизации (получено два маршрута от соседа):

dyn3(config)#do sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
      D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
      N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
      E1 - OSPF external type 1, E2 - OSPF external type 2
      i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
      ia - IS-IS inter area, * - candidate default, U - per-user static route
      o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.4.0/24 is directly connected, FastEthernet1/0
B    192.168.5.0/24 [200/0] via 192.168.4.5, 00:00:06
O IA 192.168.1.0/24 [110/2] via 192.168.2.1, 09:16:36, FastEthernet0/0
C    192.168.2.0/24 is directly connected, FastEthernet0/0
B    192.168.100.0/24 [5/0] via 192.168.4.5, 00:00:06
O E1 192.168.3.0/24 [110/22] via 192.168.2.1, 09:16:36, FastEthernet0/0

[править] Добавление eBGP-маршрутов в таблицу маршрутизации

Маршрут eBGP будет добавлен в таблицу маршрутизации, если:

  • маршрут выбран в таблице BGP как лучший маршрут,
  • AD маршрута меньше, чем AD других источников аналогичного маршрута.

[править] backdoor маршруты

Команда network backdoor влияет на маршруты eBGP таким образом:

  • Для указанной сети маршрутизатор будет использовать значение local AD (по умолчанию 200) для маршрутов полученных по eBGP
  • Маршрутизатор не будет анонсировать указанную сеть по BGP
dyn3(config-router)# network <network> backdoor

[править] Добавление iBGP-маршрутов в таблицу маршрутизации

Маршрут iBGP будет добавлен в таблицу маршрутизации, если:

  • маршрут выбран в таблице BGP как лучший маршрут,
  • AD маршрута меньше, чем AD других источников аналогичного маршрута.

[править] Синхронизация BGP

Правило синхронизации:

  • iBGP маршрут считается лучшим в таблице BGP, только если он был выучен по протоколу IGP и находится в таблице маршрутизации. Или, другими словами: не использовать или не анонсировать внешним соседям маршрут, выученный по iBGP, до тех пор пока соответствующий маршрут не будет выучен от IGP. По умолчанию выключено.

Включить синхронизацию BGP:

dyn3(config-router)# synchronization

Note-icon.gif

Для OSPF кроме синхронизации маршрутов должно выполняться ещё одно правило:

  • Router ID маршрутизатора для OSPF и для BGP должны совпадать.

Синхронизация может быть выключена в тех случаях когда все маршрутизаторы в транзитной зоне работают в full mesh iBGP. Если синхронизация выключена, то все маршруты внутри автономной системы должны передаваться с помощью iBGP.

Для обхода правила, которое требует чтобы между iBGP-маршрутизаторами в автономной системе было полносвязное соединение, используется два механизма:

  • Конфедерации (confederation)
  • Route reflectors

Как правило, синхронизация не включается. При включенном правиле синхронизации все маршруты BGP должны быть получены и по протоколу IGP. То есть, должно быть настроено перераспределение маршрутов BGP в протокол IGP.

[править] Конфедерации (confederation)

Создание конфедерации позволяет:

  • избежать необходимости создания полносвязной топологии между всеми iBGP-соседями,
  • всем iBGP-соседям выучить все iBGP-маршруты в AS,
  • предотвратить образование петель.

При использовании конфедераций BGP, автономная система разбивается на подавтономные системы (sub-AS). Маршрутизаторы, которые находятся в одной sub-AS называются confederation iBGP-соседи, а маршрутизаторы в разных sub-AS называются confederation eBGP-соседи.

Правила работы маршрутизаторов в конфедерации:

  • iBGP-соседи в конфедерации должны быть соединены в полносвязную топологию (full mesh). Они, как и обычные iBGP-соседи, не передают iBGP-маршруты друг другу.
  • eBGP-соседи в конфедерации:
    • как и eBGP-соседи анонсируют iBGP-маршруты выученные внутри sub-AS конфедерации в другую sub-AS,
    • как и eBGP-соседи по умолчанию используют для пакетов TTL 1 (изменяется neighbor ebgp-multihop),
    • во всех остальных случаях работают как обычные iBGP-соседи (например, next-hop по умолчанию не изменяется).
  • Внутри конфедераций для предотвращения петель используется атрибут AS Path. Маршрутизаторы, которые находятся в конфедерации добавляют в атрибут сегменты AS_CONFED_SEQ и AS_CONFED_SET.
  • Когда маршрутизатор выбирает лучший маршрут на основании атрибута AS Path, номера автономных систем конфедераций не учитываются.
  • Когда обновление отправляется маршрутизатору, который не находится в конфедерации, то номера конфедераций удаляются.
[править] Пример настройки конфедерации

Схема сети:

BGP confed.png

Конфигурация BGP на dyn1:

router bgp 65001
 no synchronization
 bgp log-neighbor-changes
 bgp confederation identifier 500
 bgp confederation peers 65035 
 network 192.168.1.0
 network 192.168.2.0
 neighbor 192.168.1.2 remote-as 402
 neighbor 192.168.2.3 remote-as 65035
 no auto-summary

Конфигурация BGP на dyn3:

router bgp 65035
 no synchronization
 bgp log-neighbor-changes
 bgp confederation identifier 500
 bgp confederation peers 65001 
 network 192.168.2.0
 network 192.168.4.0
 neighbor 192.168.2.1 remote-as 65001
 neighbor 192.168.4.5 remote-as 65035
 no auto-summary

Конфигурация BGP на dyn5:

router bgp 65035
 no synchronization
 bgp log-neighbor-changes
 bgp confederation identifier 500
 bgp confederation peers 65001 
 network 192.168.4.0
 network 192.168.5.0
 network 192.168.100.0
 neighbor 192.168.4.3 remote-as 65035
 neighbor 192.168.5.6 remote-as 406
 no auto-summary

Конфигурация BGP на qua6:

router bgp 406
 bgp router-id 192.168.5.6
 network 192.168.5.0/24
 neighbor 192.168.5.5 remote-as 500
[править] Просмотр информации

Таблица BGP на маршрутизаторе dyn1, который находится внутри конфедерации (в скобках в столбце атрибута AS Path указана sub-AS):

dyn1# sh ip bgp 
BGP table version is 6, local router ID is 192.168.2.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*  192.168.1.0      192.168.1.2              0             0 402 i
*>                  0.0.0.0                  0         32768 i
*  192.168.2.0      192.168.2.3              0    100      0 (65035) i
*>                  0.0.0.0                  0         32768 i
*> 192.168.4.0      192.168.2.3              0    100      0 (65035) i
*> 192.168.5.0      192.168.4.5              0    100      0 (65035) i
*> 192.168.100.0    192.168.4.5              0    100      0 (65035) i

Таблица BGP на маршрутизаторе qua2, который находится за пределами конфедерации (за пределами конфедерации не видны номера sub-AS):

qua2# sh ip bgp
BGP table version is 0, local router ID is 192.168.1.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 192.168.1.0      0.0.0.0                  0         32768  i
*                   192.168.1.1              0             0 500 i
*> 192.168.2.0      192.168.1.1              0             0 500 i
*> 192.168.4.0      192.168.1.1                            0 500 i
*> 192.168.5.0      192.168.1.1                            0 500 i
*> 192.168.100.0    192.168.1.1                            0 500 i

Total number of prefixes 5

Более подробная информация о маршруте внутри конфедерации:

dyn3# sh ip bgp 192.168.100.0
BGP routing table entry for 192.168.100.0/24, version 8
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
        1
  Local
    192.168.4.5 from 192.168.4.5 (192.168.100.1)
      Origin IGP, metric 0, localpref 100, valid, confed-internal, best

Более подробная информация о маршруте вне конфедерации:

dyn3# sh ip bgp 192.168.1.0
BGP routing table entry for 192.168.1.0/24, version 2
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
        2
  (65001)
    192.168.2.1 from 192.168.2.1 (192.168.2.1)
      Origin IGP, metric 0, localpref 100, valid, confed-external, best

[править] Route reflectors

Route reflectors (RR) как и конфедерация позволяет:

  • избежать необходимости создания полносвязной топологии между всеми iBGP-соседями,
  • всем iBGP-соседям выучить все iBGP-маршруты в AS,
  • предотвратить образование петель.

При использовании RR для маршрутизаторов в AS определяются такие три роли:

  • RR сервер (RR Server, RR)
  • Клиент (Client)
  • Не клиент (Nonclient)

Только маршрутизатор работающий как RR использует логику отличную от обычного iBGP-маршрутизатора. Другие маршрутизаторы (клиент и не клиент) не изменяют правила работы и фактически даже не знают о существовании RR.

Правила, которыми руководствуется RR принимая решение отправлять маршруты соседу или нет:

Общая таблица сравнения различных режимов работы RR:

Источник от которого выучен префикс Анонсируется ли маршрут клиентам? Анонсируется ли маршрут не клиентам?
Клиент Да Да
Не клиент Да Нет
eBGP Да Да

Отличия в работе RR возникают при взаимодействии с маршрутизаторами, которые работают в роли клиентов. При взаимодействии с eBGP-соседями или с не клиентами, правила аналогичны обычному взаимодействию, с eBGP и iBGP маршрутизаторами, соответственно.

RR сервер (или несколько серверов) и его клиенты формируют один RR кластер (RR cluster). AS в которой используются RR может состоять из:

  • кластера с несколькими RR,
  • нескольких кластеров (использование нескольких кластеров имеет смысл, если существует физическая избыточность).

Когда используется несколько кластеров, то хотя бы один RR из кластера должен быть соседом с хотя бы одним RR в каждом из других кластеров. Как правило, все RR являются непосредственно присоединенными соседями и формируют между собой полносвязную топологию. Маршрутизаторы, которые не являются клиентами, также должны быть присоединены к полносвязной топологии из RR.

Для того чтобы предотвратить образование петель RR используют такие механизмы:

  • CLUSTER_LIST — RR добавляет идентификатор кластера (cluster ID) в атрибут CLUSTER_LIST прежде чем отправить обновление. При получении обновления RR отбрасывает те префиксы для которых идентификатор его кластера уже указан в атрибуте. Это предотвращает образование петель между кластерами.
  • ORIGINATOR_ID — этот атрибут указывает RID того маршрутизатора (не RR), который анонсировал маршрут внутри локальной AS. Если маршрутизатор получает обновление в котором указан его RID, то этот маршрут не используется и не передается далее соседям.
  • анонсируются только лучшие маршруты — RR передает маршрут далее только если если маршрут считается лучшим в его таблице BGP.
[править] Изменение процедуры выбора лучшего маршрута в AS с RR

В тех случаях, когда маршрутизаторы могут получить один и тот же маршрут от RR и от обычного маршрутизатора, правила выбора лучшего маршрута BGP немного изменяются:

  1. Первые шаги, в которых учитываются атрибуты weight, local preference, origin и MED — остаются без изменений,
  2. Если все предыдущие параметры одинаковы, то маршруты полученные от EBGP-соседей предпочтительней, чем маршруты полученные от IBGP-соседей,
  3. Выбрать путь через ближайшего IGP-соседа
  4. Выбрать путь через соседа с наименьшим BGP router ID. Если у префикса есть атрибут Originator ID, то вместо router ID сравнивается Originator ID.
  5. Reflected-маршруты с более коротким cluster-list предпочтительнее (длина cluster-list равна нулю, если маршрут без атрибута cluster-list),
  6. Выбрать путь через соседа с наименьшим IP-адресом
[править] Пример настройки RR

Схема сети:

BGP RR.png

На маршрутизаторах, которые выполняют роль клиентов никаких отличий в настройках BGP нет. Пример конфигурации BGP на dyn5:

router bgp 65000
 no synchronization
 bgp log-neighbor-changes
 network 192.168.4.0
 network 192.168.5.0
 neighbor 192.168.4.3 remote-as 65000
 neighbor 192.168.5.6 remote-as 406
 no auto-summary

Конфигурация BGP на dyn1:

router bgp 65000
 no synchronization
 bgp cluster-id 1
 bgp log-neighbor-changes
 network 192.168.1.0
 network 192.168.2.0
 neighbor 192.168.1.2 remote-as 65000
 neighbor 192.168.1.2 route-reflector-client
 neighbor 192.168.2.3 remote-as 65000
 no auto-summary

Конфигурация BGP на dyn3:

router bgp 65000
 no synchronization
 bgp cluster-id 2
 bgp log-neighbor-changes
 network 192.168.2.0
 network 192.168.4.0
 neighbor 192.168.2.1 remote-as 65000
 neighbor 192.168.4.5 remote-as 65000
 neighbor 192.168.4.5 route-reflector-client
 no auto-summary
[править] Просмотр информации

Подробная информация о маршруте, в том числе атрибуты относящиеся к RR:

dyn1# sh ip bgp 192.168.5.0
BGP routing table entry for 192.168.5.0/24, version 7
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
        2
  Local
    192.168.4.5 from 192.168.2.3 (192.168.4.3)
      Origin IGP, metric 0, localpref 100, valid, internal, best
      Originator: 192.168.100.1, Cluster list: 0.0.0.2

Подробная информация о маршруте на маршрутизаторе qua2, в том числе атрибуты относящиеся к RR (два кластера):

qua2# sh ip bgp 192.168.5.0
BGP routing table entry for 192.168.5.0/24
Paths: (1 available, no best path)
  Not advertised to any peer
  Local
    192.168.4.5 (inaccessible) from 192.168.1.1 (192.168.100.1)
      Origin IGP, metric 0, localpref 100, valid, internal
      Originator: 192.168.100.1, Cluster list: 0.0.0.1 0.0.0.2 
      Last update: Wed Jul 22 20:16:19 2009

Подробная информация о маршруте, в том числе информация о том, что одним из источников маршрута был RR-клиент:

dyn1# sh ip bgp 192.168.1.0
BGP routing table entry for 192.168.1.0/24, version 5
Paths: (2 available, best #2, table Default-IP-Routing-Table)
  Advertised to update-groups:
        1    2
  Local, (Received from a RR-client)
    192.168.1.2 from 192.168.1.2 (192.168.1.2)
      Origin IGP, metric 0, localpref 100, valid, internal
  Local
    0.0.0.0 from 0.0.0.0 (192.168.2.1)
      Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best

Политика распространения информации на RR:

dyn3# show ip bgp update-group
BGP version 4 update-group 1, internal, Address Family: IPv4 Unicast
 BGP Update version : 5/0, messages 0
 Update messages formatted 3, replicated 0
 Number of NLRIs in the update sent: max 1, min 1
 Minimum time between advertisement runs is 0 seconds
 Has 1 member (* indicates the members currently being sent updates):
  192.168.2.1

BGP version 4 update-group 2, internal, Address Family: IPv4 Unicast
 BGP Update version : 5/0, messages 0
 Route-Reflector Client
 Update messages formatted 3, replicated 0
 Number of NLRIs in the update sent: max 1, min 1
 Minimum time between advertisement runs is 0 seconds
 Has 1 member (* indicates the members currently being sent updates):
  192.168.4.5

[править] Изменение атрибутов пути

[править] Weight

dyn(config-router)# neighbor <ip-address | peer-group-name>  weight <weight>

Изменение weight с помощью route-map:

route-map <name> permit <sequence>
 match <condition>
 set weight <weight>

Применение route-map:

router bgp 65000
 neighbor <ip-address> route-map <name> in

[править] Local preference

По умолчанию значение local preference 100. Для того чтобы изменить значение по умолчанию можно использовать два варианта: команду bgp default local-preference или route-map.

Команда bgp default local-preference применяется для маршрутов в которых не установлено значение local preference:

  • маршрутов полученных от eBGP-соседей,
  • локальных маршрутов.

Изменение значения по умолчанию local preference:

dyn3(config-router)# bgp default local-preference <0-4294967295>

Все маршруты iBGP будут анонсироваться с новым значением local preference.

Изменение local preference с помощью route-map:

route-map <name> permit <sequence>
 match <condition>
 set local-preference <value>

Применение route-map:

router bgp 65000
 neighbor <ip-address> route-map <name> in | out

[править] Next-hop

Изменение атрибута next-hop зависит от того какому соседу анонсируется маршрут — iBGP или eBGP:

  • по умолчанию, когда маршрут анонсируется eBGP-соседу, атрибут next-hop меняется на IP-адрес маршрутизатора, который анонсирует маршрут;
  • по умолчанию, когда маршрут анонсируется iBGP-соседу, атрибут next-hop не изменяется.

Изменение поведения по умолчанию атрибута next-hop для iBGP-соседа — все обновления для соседа отправлять с указанием в качестве next-hop локального маршрутизатора:

dyn3(config-router)# neighbor <ip-address | peer-group-name>  next-hop-self 

Изменение поведения по умолчанию атрибута next-hop для eBGP-соседа — все обновления для соседа отправлять без изменения атрибута next-hop:

dyn3(config-router)# neighbor <ip-address | peer-group-name>  next-hop-unchanged


[править] AS path

set as-path prepend

[править] Origin

Атрибут Origin:

Значение Origin Код в таблице BGP Используется если маршрут введен с использованием следующих команд
IGP i
  • network
  • neighbor default-originate
  • aggregate-address в таких случаях:
    • если опция as-set не установлена
    • если опция as-set установлена и все компоненты суммарного маршрута используют код IGP (i)
EGP e Маршрут был выучен по протоколу EGP. Специфических команд нет
Incomplete  ?
  • redistribute
  • default-information originate
  • aggregate-address в таких случаях:
    • если опция as-set установлена и хотя бы у одной подсети суммарного маршрута используется код Incomplete (?)

Атрибут Origin может быть изменен в route-map. Параметр set origin позволяет указать какое значение атрибута будет у маршрутов совпадающих с критериями route-map:

dyn1(config-route-map)# set origin ?
 egp         remote EGP
 igp         local IGP
 incomplete  unknown heritage

[править] MED

Атрибут MED используется для информирования eBGP-соседей о том, какой путь в автономную систему более предпочтительный.

MED считается "слабым" атрибутом, так как для того чтобы он повлиял на выбор маршрута необходимо чтобы атрибуты Weight, local preference, AS-path и origin code были с одинаковым значением.

Особенности атрибута в IOS:

  • Атрибут MED в IOS называется метрикой (metric).
  • По умолчанию для маршрутизаторов Cisco равен 0.
  • По умолчанию атрибут MED не передается с маршрутами, так как это не обязательный атрибут.
    • Исключение из этого правила: маршруты, которые анонсируются локальным маршрутизатором (с помощью команды network или перераспределения маршрутов), и для которых есть полное совпадение в таблице маршрутизации. В таком случае маршрутизатор использует метрику в таблице маршрутизации как атрибут MED.

Изменение атрибута MED для перераспределенных маршрутов:

dyn(config-router)# default-metric <1-4294967295>

Изменение MED с помощью route-map:

route-map <name> permit <sequence>
 match <condition>
 set metric <value>

Применение route-map:

router bgp 65000
 neighbor <ip-address> route-map <name> in | out

Если необходимо указать определенное значение атрибута MED для всех маршрутов связанных с определенным соседом, то необходимо использовать route-map без критериев match.

[править] bgp always-compare-med

По умолчанию атрибут MED проверяется только при сравнении маршрутов из одной и той же AS. Команда always-compare-med меняет это поведение. После её задания, атрибут сравнивается и для маршрутов пришедших с разных AS. Такое поведение необходимо настроить на всех маршрутизаторах в AS. Иначе могут возникнуть петли.

Настройка always-compare-med:

dyn(config-router)# bgp always-compare-med

[править] bgp bestpath med missing-as-worst

В Cisco IOS если MED не указан для маршрута, то он считается равным 0 и, соответственно, считается лучшим значением MED. Команда med missing-as-worst позволяет указать, что, при отсутствии атрибута MED в маршруте, он будет равным 4294967295 (самым худшим).

Настройка такого поведения:

dyn1(config-router)# bgp bestpath med missing-as-worst 
[править] Пример изменения MED

Пример таблицы BGP до изменения поведения:

   Network          Next Hop            Metric LocPrf Weight Path
*> 192.168.1.0      0.0.0.0                  0         32768 i
*>i192.168.6.0      192.168.7.8              0    200      0 8 67 i
*                   192.168.20.8                           0 9 8 67 i
*                   192.168.20.8                           0 8 67 i
r>i192.168.7.0      192.168.7.8              0    200      0 8 67 i
r                   192.168.20.8                           0 9 8 67 i
r                   192.168.20.8                           0 8 67 i

Пример таблицы BGP после задания med missing-as-worst:

   Network          Next Hop            Metric LocPrf Weight Path
*> 192.168.1.0      0.0.0.0                  0         32768 i
*>i192.168.6.0      192.168.7.8              0    200      0 8 67 i
*                   192.168.20.8    4294967295             0 9 8 67 i
*                   192.168.20.8    4294967295             0 8 67 i
r>i192.168.7.0      192.168.7.8              0    200      0 8 67 i
r                   192.168.20.8    4294967295             0 9 8 67 i
r                   192.168.20.8    4294967295             0 8 67 i

[править] bgp bestpath med confed

По умолчанию атрибут MED проверяется только при сравнении маршрутов из одной и той же AS. Для того чтобы MED учитывался для маршрутов из конфедерации, необходимо задать команду med confed

dyn1(config-router)# bgp bestpath med confed 

[править] bgp deterministic-med

Команда bgp deterministic-med изменяет процесс выбора лучшего пути. После включения команды, значение атрибута MED будет проверяться сразу после проверки AS-path. До сравнения типов маршрутов BGP (internal или external) и метрики IGP до next-hop адресов.

dyn3(config-router)# bgp deterministic-med

[1] [2]

[править] Community

Изменение формата community с 32битного числа на пару 16битных чисел:

dyn(config)# ip bgp-community new-format 

По умолчанию community отбрасываются в исходящих обновлениях BGP. Даже если community указывались в соответствующей исходящей route-map. Для того чтобы изменить это, необходимо явно настроить отправку community соседям:

dyn(config-router)# neighbor <ip-address> send-community

[править] Community internet

В Cisco, кроме well-known значений community, используется также специальное значение internet. Для этого используется значение 0:0.

Community internet используется для обозначения всех маршрутизаторов, так как все маршрутизаторы принадлежат этой community. Например, если в community-list необходимо разрешить все community, кроме одного определенного значения, то permit internet будет использоваться как permit all в ACL.

Пример:

ip community-list 1 deny 100:37
ip community-list 1 permit internet

[править] community-list

Стандартный community-list:

dyn(config)# ip community-list <1-99> <permit | deny> <value>

Особенности стандартного community-list:

  • Для того чтобы указать совпадение со всеми community необходимо использовать ключевое слово internet.
  • Если в правиле ip community-list указано несколько значений community, то они все должны быть в пришедшем маршруте для того чтобы было совпадение с правилом.
  • Если совпадений в community-list не нашлось, то маршрут будет запрещен неявным правилом (как в ACL).

Расширенный community-list:

dyn(config)# ip community-list <100-199> <permit | deny> <regexp>

Особенности расширенного community-list:

  • Community присоединенные к маршруту упорядочиваются, конвертируются в строки и сравниваются с регулярными выражениями.
  • Для того чтобы указать совпадение со всеми community необходимо использовать регулярное выражение ".*".

Именованный community-list:

dyn(config)# ip community-list <standard|expanded> <name> <permit|deny> <value|regexp>

[править] Community в route-map

Использование community как критерия совпадения в route-map:

route-map <name> permit <sequence>
 match community <list-name|list-number> [exact]

Удаление community из входящих или исходящих обновлений BGP:

route-map <name> permit <sequence>
 set comm-list <list-name|list-number> delete

[править] Управление маршрутами

[править] Порядок применения фильтров в BGP

К обновлениям, которые приходят от соседей или отправляются им, могут быть применены несколько фильтров. Порядок применения фильтров указан ниже.

Icon-caution.gif

Если к соседу применены несколько фильтров в одном направлении, то все фильтры должны разрешить обновление, чтобы оно прошло.

Для входящих обновлений:

  1. route-map
  2. filter-list
  3. prefix-list, distribute-list

Для исходящих обновлений:

  1. prefix-list, distribute-list
  2. filter-list
  3. route-map

Если фильтр применен к соседу, но не создан в конфигурации, то по умолчанию:

  • Distribute list и prefix list пропустят любое обновление
  • Filter list и route map запретят обновление

Note-icon.gif

Фильтры prefix-list и distribute-list взаимоисключающие. Только один из них может быть применен в каждом направлении (входящем и исходящем) для конкретного соседа.



[править] Фильтрация маршрутов по AS path

Фильтрация маршрутов по AS path может использоваться в таких случаях:

  • Клиент подключен к двум провайдерам, у него настроен BGP, и необходимо фильтровать трафик таким образом, чтобы провайдерам анонсировались только сети клиента. Необходимо избежать ситуации, когда клиент может стать транзитной AS из-за того, что он анонсирует сети провайдеров друг другу. В этом случае правилом может быть: анонсировать только сети с пустым значением AS path (локальные сети клиента).
  • Для того чтобы повлиять на выбор лучшего маршрута, например, от конкретного соседа. Можно указывать какие номера автономных систем должны или не должны встречаться в маршруте.
  • Если необходимо повлиять на выбор пути в локальную автономную систему из других автономных систем. Может применяться AS prepending — добавление AS в атрибуте AS path.

Отобразить маршруты, которые совпадают с указанным регулярным выражением:

dyn# show ip bgp regexp <regexp>

Создание фильтра:

dyn(config)# ip as-path access-list 1 <permit | deny> regexp 

Пример настройки фильтра:

dyn(config)# ip as-path access-list 1 permit ^8_
dyn(config)# ip as-path access-list 1 permit _67_

Отобразить все настроенные фильтры или конкретный фильтр:

dyn# show ip as-path-access-list [number]

Отобразить маршруты, которые совпадают с указанным фильтром:

dyn# show ip bgp filter-list

Применение фильтра:

dyn(config-router)# neighbor <ip-address | peer-group-name>  filter-list <acl-number> <in | out>

[править] Регулярные выражения

Символы, которые используются в регулярных выражениях:

. любой символ, включая пробел
* ноль или больше совпадений с выражением
+ одно или больше совпадений с выражением
? ноль или одно совпадение с выражением
^ начало строки
$ конец строки
_ любой разделитель (включая, начало, конец, пробел, табуляцию, запятую)
\ не воспринимать следующий символ как специальный
[] совпадение с одним из символов в диапазоне
| логическое или

Примеры регулярных выражений:

_67_ маршруты проходящие через AS 67
^67$ маршруты из непосредственно присоединенной AS 67
_67$ маршруты отправленные из AS 67
^67_ сети находящиеся за AS 67
^$ маршруты локальной AS
.* любая строка

[править] Пример тестирования регулярного выражения

Для того чтобы проверить отработает ли регулярное выражение так, как предполагалось, можно выполнить команду:

dyn# show ip bgp regexp <regexp>

Например, есть такая таблица BGP:

dyn1# sh ip bgp  
BGP table version is 9, local router ID is 197.1.8.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 100.67.67.0/24   192.168.20.8                           0 8 67 i
*> 100.78.78.0/24   192.168.20.8                           0 8 67 i
*> 100.100.6.0/24   192.168.20.8                           0 8 67 i
*> 192.168.1.0      0.0.0.0                  0         32768 i
r> 192.168.20.0     192.168.20.8             0             0 8 i
*>i192.168.21.0     197.1.6.1                0    100      0 5 i
*> 197.1.0.0/16     0.0.0.0                  0         32768 i

Проверить как отработает регулярное выражение ^8_ (сети, которые находятся за автономной системой 8)

dyn1# sh ip bgp regexp ^8_
BGP table version is 9, local router ID is 197.1.8.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 100.67.67.0/24   192.168.20.8                           0 8 67 i
*> 100.78.78.0/24   192.168.20.8                           0 8 67 i
*> 100.100.6.0/24   192.168.20.8                           0 8 67 i
r> 192.168.20.0     192.168.20.8             0             0 8 i

Проверка регулярного выражения _67_ (маршруты проходящие через автономную систему 67):

dyn1# sh ip bgp regexp _67_
BGP table version is 9, local router ID is 197.1.8.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 100.67.67.0/24   192.168.20.8                           0 8 67 i
*> 100.78.78.0/24   192.168.20.8                           0 8 67 i
*> 100.100.6.0/24   192.168.20.8                           0 8 67 i

[править] Пример проверки работы фильтра

Например, на маршрутизаторе настроен такой фильтр:

dyn1# show ip as-path-access-list 1
AS path access list 1
    permit ^8_
    permit _67_

Отобразить маршруты, которые совпадают с фильтром 1 (используется тот же маршрутизатор, что и в предыдущем примере):

dyn1# show ip bgp filter-list 1        
BGP table version is 9, local router ID is 197.1.8.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 100.67.67.0/24   192.168.20.8                           0 8 67 i
*> 100.78.78.0/24   192.168.20.8                           0 8 67 i
*> 100.100.6.0/24   192.168.20.8                           0 8 67 i
r> 192.168.20.0     192.168.20.8             0             0 8 i

[править] Distribute list

dyn3(config-router)# distribute-list <acl> out

Сети разрешенные в acl, будут перераспределены.

[править] Prefix list

В каждом prefix list может быть несколько команд prefix-list, каждой из которых присвоен порядковый номер. Когда маршрутизатор обрабатывает prefix list, он просматривает все команды в соответствии с порядковыми номерами команд. Каждой команде соответствует действие permit или deny.

Синтаксис команды:

ip prefix-list <list-name> [seq <value>] <deny|permit> <network/length> [ge <value>] [le <value>]

Объяснение логики команды prefix-list на примере сети 10.0.0.0/8:

  • ip prefix-list 1 permit 10.0.0.0/8 — только сеть 10.0.0.0/8,
  • ip prefix-list 1 permit 10.0.0.0/8 le 11 — маршруты у которых первый октет 10, и префикс от 8 до 11,
  • ip prefix-list 1 permit 10.0.0.0/8 ge 11 — маршруты у которых первый октет 10, и префикс от 11 до 32,
  • ip prefix-list 1 permit 10.0.0.0/8 ge 11 le 13 — маршруты у которых первый октет 10, и префикс от 11 до 13.

[править] Применение prefix list

Фильтрует входящие или исходящие обновления BGP для указанного соседа:

dyn(config-router)# neighbor <ip-address | peer-group-name> prefix-list <list-name> <in|out>

Фильтрует маршруты перераспределенные из указанного процесса маршрутизации в BGP:

dyn(config-router)# distribute-list prefix-list <list-name> out <routing-process>

[править] Outbound route filtering

ORF4.png

Outbound route filtering (ORF) — функциональность BGP, которая позволяет маршрутизаторам обмениваться информацией о настроенных фильтрах обновлений BGP. Если оба маршрутизатора поддерживают эту функциональность и соответственно настроены, то они могут обмениваться информацией о том, какие фильтры у них настроены.

Возможности ORF:

  • Использует BGP ORF send и receive capabilities для уменьшения количества обновлений BGP, которые отправляются соседям.
  • Помогает уменьшить затрату системных ресурсов, которые необходимы для генерирования и обработки обновлений, фильтруя эти обновления на источнике.
  • Уменьшает количество ненужных обновлений BGP.
dyn(config-router)# neighbor <ip-address> capability orf prefix-list <receive|send|both>


router# show ip bgp neighbor <ip-address> received prefix-filter

[править] Карты маршрутов (route maps)

В каждой route map может быть несколько команд route-map, каждой из которых присвоен порядковый номер. Когда маршрутизатор обрабатывает route map, он просматривает все команды в соответствии с порядковыми номерами команд.

В каждой команде route-map указано действие permit или deny. Кроме того, с помощью команды match указываются параметры которые должны быть у маршрута для того чтобы он совпал с правилом. Для того чтобы указать весь трафик, в команде route-map просто не надо указывать команду match.

Если после параметра match идет несколько опций, то к ним применяется логика или, то есть должен совпасть один из перечисленных параметров. Если задано несколько параметров match в отдельных строках, то к ним применяется логика и, то есть должны совпасть все параметры.

В каждой команде route-map может быть одна или более команд set, которые используются для изменения каких-либо параметров проходящих маршрутов.

Route map позволяет фильтровать маршруты при перераспределении и изменять различные атрибуты маршрутов.

Пример изменения значения атрибута origin для сетей разрешенных в ACL 101:

dyn(config)# route-map NEW_Origin permit
dyn(config-route-map)# match ip address 101
dyn(config-route-map)# set origin igp

[править] Route-map Policy list

[править] Route-map continue

[править] Применение изменений в настройках политик BGP

Три способа инициировать отправку обновлений:

  • Hard reset
  • Soft reset
  • Обновление маршрутов (route refresh)

[править] Hard reset

Hard reset:

dyn3# clear ip bgp *

Результат выполнения команды clear ip bgp *:

  • Сброс всех BGP-соединений с этим маршрутизатором
  • Очищается таблица BGP
  • Сессии BGP переходят из состояния established в состояние idle
  • Вся информация должна быть заново выучена (сосед должен её заново отправить)

Hard reset для соседа:

dyn3# clear ip bgp <neighbor-address>

Результат выполнения команды clear ip bgp <neighbor>:

  • Сброс BGP-соединений только с соседом
  • Сессия BGP, установленная с этим соседом, переходит из состояния established в состояние idle
  • Вся информация от соседа должна быть заново выучена

[править] Soft reset

Soft reset — методы, которые позволяют обновить политики BGP не разрывая сессию с соседом.

[править] Outbound soft reset

Soft reset outbound (параметр soft необязательный, без его указания, команда clear ip bgp out, выполняет те же действия):

dyn3# clear ip bgp <neighbor-address>  [soft] out

Результат выполнения команды clear ip bgp <neighbor-address> soft out:

  • Маршруты выученные от указанного соседа не теряются
  • Версия таблицы (table version number) для соседа выставляется равной 0. При наступлении следующего интервала для отправки обновлений, маршрутизатор проверяет таблицу BGP и отправляет соседу все маршруты, так как у них версия больше чем ноль
  • Локальный маршрутизатор отправляет заново всю информацию BGP соседу, не разрывая соединения
  • Соединение не разрывается
  • Это команда нужна для случаев, когда обновляется исходящая политика
  • При изменении входящей политики, команда soft out не помогает

Какие маршруты анонсируются указанному соседу:

dyn3# show ip bgp neighbors <neighbor-address> advertised-routes

[править] Inbound soft reset

Выполнение inbound soft reset:

  1. Сохранить обновления полученные от соседа — команда neighbor <neighbor-address> soft-reconfiguration inbound
  2. Изменить входящую политику
  3. Заново сгенерировать обновления на локальном маршрутизаторе — команда clear ip bgp <neighbor-address> soft in

Icon-caution.gif

Вместо этой функции лучше использовать Dynamic inbound soft reset.

Сохранение всех обновлений полученных от указанного соседа:

dyn3(config-router)# neighbor  <neighbor-address>  soft-reconfiguration inbound

Результат выполнения команды neighbor soft-reconfiguration inbound:

  • Локальный маршрутизатор сохраняет все обновления полученные от указанного соседа
  • Применяется в случаях изменения входящей политики

Отобразить маршруты полученные от соседа и сохраненные в результате выполнения inbound soft reconfiguration:

dyn3# show ip bgp neighbours <neighbor-address> received-routes

После того как входящая политика была изменена, необходимо заново отправить обновления от этого соседа для применения политики. Маршрутизатор использует сохраненную информацию для того чтобы сгенерировать обновления от указанного соседа.

Inbound soft reset (параметр soft необязательный, без его указания, команда clear ip bgp in, выполняет те же действия):

dyn3# clear ip bgp <neighbor-address>  [soft] in

Результат выполнения команды clear ip bgp <neighbor-address> [soft] in (после сохранения обновлений от соседа):

  • Локальный маршрутизатор использует сохраненную информацию для того чтобы сгенерировать обновления от указанного соседа
  • Сосед не отправляет обновления, все обновления генерируются заново локально

[править] Inbound и outboung soft reset

Одновременный soft reset для входящих и исходящих обновлений:

dyn3# clear ip bgp <neighbor-address>  soft

[править] Обновление маршрутов (route refresh) или Dynamic inbound soft reset

Обновление маршрутов (route refresh) — улучшенный механизм inbound soft reset. Другое название — Dynamic inbound soft reset. Маршрутизатор отправляет соседу запрос на повторную отправку всех маршрутов. При этом не происходит разрыва сессии с соседом. По сравнению с inbound soft reset, когда требовалось сохранить все маршруты полученные от соседа, этот метод требует меньшей затраты ресурсов маршрутизатора.

Для использования route refresh, оба маршрутизатора должны поддерживать эту функцию. Информация о поддержке функции анонсируется в сообщениях Open.

Обновление маршрутов (команда улучшает механизм inbound soft reset):

dyn3# clear ip bgp <neighbor-address> in

Результат выполнения команды clear ip bgp <neighbor-address> in:

  • Маршруты отправленные соседу не убираются
  • Соединение не разрывается
  • Обновления не сохраняются локально
  • Сосед заново отправляет маршруты
  • Обновляет маршруты от соседа в таблице маршрутизации

[править] Просмотр информации

Просмотр краткой информации о соседях:

dyn3# show ip bgp summary

Таблица BGP:

dyn3# show ip bgp

Отобразить маршруты в таблице BGP, которые начинаются на 192.168.0.0:

dyn3# show ip bgp 192.168.0.0/16 longer-prefixes

Подробная информация о маршрутах к определенной сети:

dyn3# show ip bgp 192.168.1.0 mask 255.255.255.0

Маску можно указывать в формате CIDR:

dyn3# show ip bgp 192.168.1.0/24

Указывает какие сети не были помещены в RIB (routing information base) и почему они не были туда помещены:

dyn3# show ip bgp rib-failure

[править] Информация о соседях

Детальная информация о соседях:

dyn3# show ip bgp neighbors

Какие маршруты были получены от соседа:

dyn3# show ip bgp neighbours A.B.C.D routes

Отобразить маршруты полученные от соседа и сохраненные в результате выполнения inbound soft reconfiguration:

dyn3# show ip bgp neighbours A.B.C.D received-routes

Note-icon.gif

Для того чтобы можно было просмотреть какие маршруты были получены от соседа, надо чтобы для этого соседа была выполнена команда neighbor <neighbor-id> soft-reconfiguration inbound.

Какие маршруты анонсируются указанному соседу:

dyn3# show ip  bgp neighbors A.B.C.D advertised-routes

[править] Отображение маршрутов с определенной AS в AS Path

Пример таблицы BGP на маршрутизаторе:

dyn5# sh ip bgp
BGP table version is 5, local router ID is 192.168.100.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*>i192.168.1.0      192.168.2.1              0    100      0 i
*>i192.168.2.0      192.168.4.3              0    100      0 i
* i192.168.4.0      192.168.4.3              0    100      0 i
*>                  0.0.0.0                  0         32768 i
*  192.168.5.0      192.168.5.6              0             0 406 i
*>                  0.0.0.0                  0         32768 i

Показать маршруты у которых в AS Path встречается ASN 406:

dyn5#sh ip bgp regexp 406  
BGP table version is 5, local router ID is 192.168.100.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*  192.168.5.0      192.168.5.6              0             0 406 i

[править] Команды отладки (debug)

dyn# debug ip tcp transactions
dyn# debug ip bgp events
dyn# debug ip bgp keepalives

Информация об обновлениях BGP:

dyn# debug ip bgp updates

Отобразить все входящие и исходящие обновления для маршрутов совпадающих с ACL:

dyn# debug ip bgp updates <acl>

Отобразить все обновления полученные от или отправленные соседу (можно добавлять ACL):

dyn# debug ip bgp <ip-address> updates [acl]

[править] Разное

По умолчанию маршрутизатор отбрасывает обновление BGP, если видит в AS path номер своей автономной системы. Однако, можно разрешить маршрутизатору нарушать это правило:

dyn(config-router)# neighbor 199.1.1.1 allowas-in 

[3]

[править] BGP policy accounting

[править] Сходимость BGP

Процессы BGP:

  • BGP open
  • BGP I/O
  • BGP Scanner - проходит по таблице BGP и проверяет доступность next-hop. Проверяет condition advertisement. Выполняет route dampening. Запускается каждые 60 секунд.
  • BGP Router

Фильтр для просмотра информации о процессах связанных с BGP:

dyn1# show processes cpu | include BGP
 175      119076   2804506         42  0.00%  0.00%  0.00%   0 BGP Router       
 176      140408    163366        859  0.00%  0.00%  0.00%   0 BGP I/O          
 177     2982572     90228      33055  0.00%  0.55%  0.31%   0 BGP Scanner

[править] Конфигурационные файлы маршрутизаторов dyn1, dyn3, dyn5

Конфигурационные файлы на странице BGP/config.

[править] Дополнительная информация


Источник — «http://xgu.ru/wiki/BGP_%D0%B2_Cisco»