Page tree
Skip to end of metadata
Go to start of metadata

Протокол BGP - протокол динамической маршрутизации, основная его  задача  состоит в том, чтобы обмениваться маршрутами между автономными системами AS (eBGP), а также в пределах одной системы (iBGP). Данный протокол поддерживается всей линейкой L3-коммутаторов SNR. 

Базовая настройка BGP

Схема сети:

Схема сети










Конфигурация коммутатора R2:

router bgp 10  
 bgp router-id 1.1.1.2  
 network 1.1.1.0/30  
 network 2.2.2.0/30  
 neighbor 1.1.1.1 remote-as 10  
 neighbor 2.2.2.2 remote-as 20     

Коммутатор R1 и R3 настраиваем аналогичным образом, но изменяется router-id и адреса соседей.  Анонсировать подсети 1.1.1.0/30 и 2.2.2.0/30 -  также не требуется.

Проверяем, что все работает:

show ip bgp summary:
Neighbor        V          AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
1.1.1.1         4          10       2       3       34    0    0 00:00:06       0
2.2.2.2         4          20       7       9       34    0    0 00:05:26       0 

show ip route:
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       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, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default
C       1.1.1.0/30 is directly connected, Vlan10  tag:0
C       2.2.2.0/30 is directly connected, Vlan20  tag:0   

Настройка BFD (Bidirectional Forwarding Detection)

При падении линка или потере связности между устройствами, BGP-сессия исчезает не сразу. Она остается активной еще некоторое время. Для быстрой сходимости сети используют протокол BFD. Данный протокол обнаруживает проблемы связности на IP-уровне и обеспечивает быструю сходимость сети. Обращаем внимание на то, что для каждого соседа он включается отдельно, при этом настройка таймеров производится на VLAN-интерфейсе.

router bgp 10
 neighbor 1.1.1.2 bfd

Настройка атрибутов MED, Weight, Community

Атрибут MED (multi-exit discriminator) предназначен для определения наилучшего пути, по которому другие AS могут взаимодействовать с нашей AS. Данный атрибут не локальный, он передается между AS. Если вам требуется чтобы всегда происходило сравнение значения метрики между разными AS, то необходимо добавить в конфигурацию команду bgp always-compare-med.

route-map metric permit 10
 set metric 50
!
router bgp 10
 bgp always-compare-med
 neighbor 1.1.1.1 remote-as 10
 neighbor 1.1.1.1 route-map metric out

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

router bgp 20
 neighbor 2.2.2.1 weight 150

Атрибут BGP community предназначен для маркировки маршрутов с целью последующей их обработки по специальным правилам. У маршрутов может быть несколько community. К примеру, на основе данного атрибута можно фильтровать трафик. Также, данный атрибут применяется для балансировки и распределения нагрузки. Принцип его работы почти аналогичен работе ip access-list:

access-list 1 permit 2.0.0.0 0.255.255.255
access-list 2 permit any-source
!
router bgp 10
 neighbor 2.2.2.2 route-map set-community out
!
route-map set-community permit 10
 match ip address 1
 set community 1111
!
route-map set-community permit 20
 match ip address 2

После данной настройки,  коммутатор будет отправлять атрибут Community 0:1111 для соседа 2.2.2.2

Примечание

После изменений необходимо применить команду clear ip bgp <neighbor_ip> soft, иначе они вступят в силу не сразу.

Настройка BGP confederation

Для масштабирования сети можно использовать функционал BGP Confederation. Суть заключается в том, чтобы разделить большую автономную систему AS на несколько подсистем (подуровней AS). Это позволяет всем iBGP-соседям изучить все iBGP-маршруты в AS, не используя при этом полносвязную топологию между всеми устройствами в сети. Для других AS конфедерация будет отображаться только под своим глобальным номером AS.

Схема сети:

Конфигурация устройств:

!
router bgp 10
 bgp router-id 1.1.1.2 
 bgp confederation identifier 100
 bgp confederation peers 30
 neighbor 1.1.1.1 remote-as 30
!
router bgp 30
 bgp router-id 1.1.1.1
 bgp confederation identifier 100
 bgp confederation peers 10
 neighbor 1.1.1.2 remote-as 10
 neighbor 2.2.2.2 remote-as 20

Настройка коммутатора в роли Route Reflector

Данный коммутатор будет выступать в роли "зеркала" и каждый коммутатор будет связан с ним только одним линком. При такой схеме мы получаем, что Route Reflector отправляет своим клиентам маршруты, а клиент не пересылает их дальше, т.к. является конечной точкой, ведь у него нет ни с кем более линков. RR-устройств может быть несколько.  Логика работы этого устройства будет следующей:

  • Если маршрут был получен от своего клиента, то маршрут будет отправлен всем.
  • Если RR получил маршрут не от клиента, то такой маршрут будет отправлен только своим клиентам.
  • Если RR получил маршрут от eBGP-соседа, то он пересылает этот маршрут всем.

Всех iBGP-соседей на RR коммутаторе нужно указать как route-reflector-client:

router bgp 10
 bgp router-id 1.1.1.1
 network 1.1.1.0/30
 redistribute connected
 neighbor 1.1.1.2 remote-as 10
 neighbor 1.1.1.2 route-reflector-client

Настройка BGP VPN

Часто для изоляции трафика используется VPN, а для их обслуживания создаются VRF . Для обмена маршрутной информацией между VRF разных граничных маршрутизаторов применяется протокол BGP, а сам BGP в свою очередь оперирует VPN-IPv4 маршрутами. Важно отметить, что VRF - локален для каждого маршрутизатора. Для определения VRF, в который требуется передать маршрут, используется уникальный идентификатор RT. Данный атрибут анонсируется в обновлениях BGP, как атрибут BGP extended community. А чтобы отличать принадлежность маршрута к определенному VPN, к префиксу подсети также добавляется идентификатор RD, который также передается в BGP extended community.

Схема сети:

Конфигурация устройств:

mpls enable
!
vlan 100
name TEST_VRF
!
ip vrf VRF-A
rd 100:10
route-target both 100:10
!
ip vrf VRF-B
rd 100:20
route-target both 100:20
!
interface Vlan100
mtu 2000
label-switching
ldp enable
ip address 10.10.10.1 255.255.255.252
!
interface Loopback100
ip address 1.1.1.1 255.255.255.255
!
interface Loopback101
ip vrf forwarding VRF-A
ip address 192.168.100.1 255.255.255.255
!
interface Loopback102
ip vrf forwarding VRF-B
ip address 192.168.120.1 255.255.255.255
!
router bgp 10
redistribute connected
redistribute static
neighbor 2.2.2.2 remote-as 10
neighbor 2.2.2.2 update-source 1.1.1.1
address-family vpnv4 unicast
neighbor 2.2.2.2 activate
exit-address-family
address-family ipv4 vrf VRF-A
redistribute connected
redistribute static
exit-address-family
address-family ipv4 vrf VRF-B
redistribute connected
redistribute static
exit-address-family

На другом коммутаторе R2 настройка идентична, изменится только используемая адресация. Проверим, что все работает:

show ip route
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       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, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default
C       1.1.1.1/32 is directly connected, Loopback100  tag:0
O E2    2.2.2.2/32 [110/20] via 10.10.10.2, Vlan100, 01:35:58  tag:0
C       10.10.10.0/30 is directly connected, Vlan100  tag:0

show ip route vrf VRF-A
C       192.168.100.1/32 is directly connected, Loopback101  tag:0
B       192.168.200.1/32 [200/0] via 2.2.2.2, 01:38:42  tag:0

show ip route vrf VRF-B
C       192.168.120.1/32 is directly connected, Loopback102  tag:0
B       192.168.220.1/32 [200/0] via 2.2.2.2, 01:38:47  tag:0 

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