BGP
Техподдержка Фактор-ТСBGP обеспечивает маршрутизацию без петель между автономными системами (AS), RFC 4271 «A Border Gateway Protocol 4 (BGP-4)».
Маршрутизаторы используют протоколы внутренней маршрутизации (IGP) внутри AS, а вне AS - протокол BGP.
Когда BGP работает между маршрутизаторами в одной AS, это называется внутренний BGP (IBGP). Когда BGP работает между маршрутизаторами, которые принадлежат к разным AS, это называется внешний BGP (EBGP). BGP использует TCP в качестве транспорта (порт 179). Два BGP-маршрутизатора устанавливают TCP-соединения между собой. Такие маршрутизаторы называются соседними маршрутизаторам (соседями).
В приведенном примере применена типовая схема коммутации № 10
Первое, что требуется для начала настройки BGP, это включить BGP-маршрутизатор. Сделать это можно командой:
NX-1(config)# router bgp <AS>
<AS> - номер AS, в которую входит настраиваемый BGP-маршрутизатор.
После ввода команды система переходит в режим конфигурирования BGP, в котором вводятся остальные команды настройки BGP-маршрутизатора.
Пример включения BGP-маршрутизатора, который входит в AS с номером 65000.
NX-1(config)# router bgp 65000
NX-1(config-bgp-65000)#
BGP-соединение устанавливается между двумя соседями. Пример настройки IBGP-соединения между NX-1 из AS 65000 с IP-адресом 192.168.10.1 и NX-2 из AS 65000 c IP-адресом 192.168.10.2:
NX-1(config-bgp-65000)# neighbor 192.168.10.2 remote-as 65000
NX-2(config-bgp-65000)# neighbor 192.168.10.1 remote-as 65000
Чтобы указать сети, которые нужно анонсировать соседнему маршрутизатору необходимо добавить следующие параметры:
NX-1(config-bgp-65000)# address-family ipv4 unicast
NX-1(config-bgp-65000-af4-unicast)# network 192.168.1.0/24
NX-2(config-bgp-65000)# address-family ipv4 unicast
NX-2(config-bgp-65000-af4-unicast)# network 192.168.2.0/24
С помощью «address-family» указываем какие сети будут доступны соседнему маршрутизатору.
После настройки необходимо посмотреть добавились ли маршруты, которыми должны обменяться маршрутизаторы в их таблицы маршрутизации:
NX-1# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
F - PBR,
> - selected route, * - FIB route
C>* 192.168.1.0/24 is directly connected, ethernet1, 5d05h06m
B>* 192.168.2.0/24 [200/0] via 192.168.10.2, ethernet3, 00:03:57
C>* 192.168.10.0/24 is directly connected, ethernet3, 01:11:53
NX-2# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
F - PBR,
> - selected route, * - FIB route
B>* 192.168.1.0/24 [200/0] via 192.168.10.1, ethernet3, 00:05:30
C>* 192.168.2.0/24 is directly connected, ethernet1, 00:43:35
C>* 192.168.10.0/24 is directly connected, ethernet3, 01:14:05
Согласно таблицам маршрутизации - маршрутизаторы передали друг другу информацию о сетях. Также в таблице маршрутизации указано, что при передаче данных в новую сеть используется протокол BGP.
Для проверки корректной работы протокола BGP в одной AS необходимо запустить ping с NX-1 на ПК-2
NX-1# ping 192.168.2.2
PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.
64 bytes from 192.168.2.2: icmp_seq=1 ttl=127 time=0.461 ms
64 bytes from 192.168.2.2: icmp_seq=2 ttl=127 time=0.304 ms
64 bytes from 192.168.2.2: icmp_seq=3 ttl=127 time=0.309 ms
64 bytes from 192.168.2.2: icmp_seq=4 ttl=127 time=0.318 ms
64 bytes from 192.168.2.2: icmp_seq=5 ttl=127 time=0.355 ms
--- 192.168.2.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 63ms
rtt min/avg/max/mdev = 0.304/0.349/0.461/0.060 ms
В данном случае NX-1 и NX-2 находятся в одной AS – об этом свидетельствует административная дистанция в таблице маршрутизации – «200/0» и данные, которые показывает команда «show router bgp neighbors»:
NX-1# show router bgp neighbors
BGP neighbor is 192.168.10.2, remote AS 65000, local AS 65000, internal link
Hostname: bgpd
BGP version 4, remote router ID 192.168.10.2, local router ID 192.168.10.1
BGP state = Established, up for 00:23:56
Last read 00:00:56, Last write 00:00:56
Hold time is 180, keepalive interval is 60 seconds
Neighbor capabilities:
4 Byte AS: advertised and received
AddPath:
IPv4 Unicast: RX advertised IPv4 Unicast and received
Route refresh: advertised and received(old & new)
Address Family IPv4 Unicast: advertised and received
Hostname Capability: advertised (name: bgpd,domain name: n/a) received (name: bgpd,domain name: n/a)
Graceful Restart Capabilty: advertised and received
Remote Restart timer is 120 seconds
Address families by peer:
None
Graceful restart informations:
End-of-RIB send: IPv4 Unicast
End-of-RIB received: IPv4 Unicast
Message statistics:
Inq depth is 0
Outq depth is 0
Sent Rcvd
Opens: 2 2
Notifications: 0 2
Updates: 3 3
Keepalives: 25 25
Route Refresh: 0 0
Capability: 0 0
Total: 30 32
Minimum time between advertisement runs is 0 seconds
For address family: IPv4 Unicast
Update group 2, subgroup 2
Packet Queue length 0
Community attribute sent to this neighbor(all)
1 accepted prefixes
Connections established 2; dropped 1
Last reset 00:23:58, due to NOTIFICATION received (Cease/Peer Unconfigured)
Local host: 192.168.10.1, Local port: 52046
Foreign host: 192.168.10.2, Foreign port: 179
Nexthop: 192.168.10.1
Nexthop global: ::
Nexthop local: ::
BGP connection: shared network
BGP Connect Retry Timer in Seconds: 120
Read thread: on Write thread: on
Чтобы настроить маршрутизацию BGP между NX-1 и NX-2, находящихся в разных AS, необходимо изменить конфигурацию «router bgp» на данных маршрутизаторах:
NX-2(config)# no router bgp 65000
NX-2(config)# router bgp 65001
На NX-2 необходимо создать новый router bgp с новой AS, при этом другие настройки оставить неизменными
NX-2(config-bgp-65001)# neighbor 192.168.10.1 remote-as 65000
NX-2(config-bgp-65001)# address-family ipv4 unicast
NX-2(config-bgp-65001-af4-unicast)# network 192.168.2.0/24
NX-1(config)# router bgp 65000
NX-1(config-bgp-65000)# no neighbor 192.168.10.2
На NX-1 необходимо изменить только настройки соседнего BGP маршрутизатора, изменив номер AS
NX-1(config-bgp-65000)# neighbor 192.168.10.2 remote-as 65001
После проведенных изменений необходимо посмотреть таблицы маршрутизации на NX-1 и NX-2
NX-1# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
F - PBR,
> - selected route, * - FIB route
C>* 192.168.1.0/24 is directly connected, ethernet1, 5d05h29m
B>* 192.168.2.0/24 [20/0] via 192.168.10.2, ethernet3, 00:08:44
C>* 192.168.10.0/24 is directly connected, ethernet3, 01:34:49
NX-2# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
F - PBR,
> - selected route, * - FIB route
B>* 192.168.1.0/24 [20/0] via 192.168.10.1, ethernet3, 00:10:17
C>* 192.168.2.0/24 is directly connected, ethernet1, 01:05:36
C>* 192.168.10.0/24 is directly connected, ethernet3, 01:36:06
Согласно таблицам маршрутизации, маршрутизаторы передали друг другу информацию о сетях. Также в таблице маршрутизации указано, что при передаче данных в новую сеть используется протокол BGP.
Для проверки корректной работы протокола BGP между разными AS необходимо запустить ping с NX-1 на ПК-2
@NX-1# ping 192.168.2.2
PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.
64 bytes from 192.168.2.2: icmp_seq=1 ttl=127 time=0.408 ms
64 bytes from 192.168.2.2: icmp_seq=2 ttl=127 time=0.313 ms
64 bytes from 192.168.2.2: icmp_seq=3 ttl=127 time=0.296 ms
64 bytes from 192.168.2.2: icmp_seq=4 ttl=127 time=0.309 ms
64 bytes from 192.168.2.2: icmp_seq=5 ttl=127 time=0.303 ms
--- 192.168.2.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 66ms
rtt min/avg/max/mdev = 0.296/0.325/0.408/0.047 ms
В данном случае NX-1 и NX-2 находятся в разных AS – об этом свидетельствует административная дистанция в таблице маршрутизации – «20/0» и данные, которые показывает команда «show router bgp neighbors»:
NX-1# show router bgp neighbors
BGP neighbor is 192.168.10.2, remote AS 65001, local AS 65000, external link
Hostname: bgpd
BGP version 4, remote router ID 192.168.10.2, local router ID 192.168.10.1
BGP state = Established, up for 00:13:12
Last read 00:00:12, Last write 00:00:12
Hold time is 180, keepalive interval is 60 seconds
Neighbor capabilities:
4 Byte AS: advertised and received
AddPath:
IPv4 Unicast: RX advertised IPv4 Unicast and received
Route refresh: advertised and received(old & new)
Address Family IPv4 Unicast: advertised and received
Hostname Capability: advertised (name: bgpd,domain name: n/a) received (name: bgpd,domain name: n/a)
Graceful Restart Capabilty: advertised and received
Remote Restart timer is 120 seconds
Address families by peer:
none
Graceful restart informations:
End-of-RIB send: IPv4 Unicast
End-of-RIB received: IPv4 Unicast
Message statistics:
Inq depth is 0
Outq depth is 0
Sent Rcvd
Opens: 4 4
Notifications: 6 0
Updates: 3 3
Keepalives: 14 14
Route Refresh: 0 0
Capability: 0 0
Total: 27 21
Minimum time between advertisement runs is 0 seconds
For address family: IPv4 Unicast
Update group 3, subgroup 3
Packet Queue length 0
Community attribute sent to this neighbor(all)
1 accepted prefixes
Connections established 1; dropped 0
Last reset 00:14:38, due to NOTIFICATION sent (OPEN Message Error/Bad Peer AS)
Local host: 192.168.10.1, Local port: 179
Foreign host: 192.168.10.2, Foreign port: 34286
Nexthop: 192.168.10.1
Nexthop global: ::
Nexthop local: ::
BGP connection: shared network
BGP Connect Retry Timer in Seconds: 120
Read thread: on Write thread: on