Рассмотрим примеры типичных ошибок при настройке протокола BGPи способы их устранения.
1. Базовая настройка. Сначала поднимем интерфейсы и назначим IPадреса:
AR1
interface GigabitEthernet 0/0/0
ip address 10.1.12.1 255.255.255.0
interface loopback 0
ip address 1.1.1.1 255.255.255.255
AR2
interface GigabitEthernet 0/0/0
ip address 10.1.12.2 255.255.255.0
interface GigabitEthernet 0/0/1
ip address 10.1.23.2 255.255.255.0
interface loopback 0
ip address 2.2.2.2 255.255.255.255
AR3
interface GigabitEthernet 0/0/1
ip address 10.1.23.3 255.255.255.0
interface loopback 0
ip address 3.3.3.3 255.255.255.255
После этого настроим протоколы маршрутизации. Между маршрутизаторами AR1 и AR2 настроим OSPF в качестве протокола внутренней маршрутизации.
AR1
router id 1.1.1.1
ospf 1
area 0
network 10.1.12.1 0.0.0.0
network 1.1.1.1 0.0.0.0
AR2
router id 2.2.2.2
ospf 1
area 0
network 10.1.12.2 0.0.0.0
network 2.2.2.2 0.0.0.0
Далее между AR1 и AR2 настроим iBGP соседство, а между AR2 и AR3 eBGP соседство. Соседство они будут устанавливать при помощи адресов своих loopback интерфейсов. Также для примера мы настроим неправильную AS для пира 2.2.2.2 на маршрутизаторе AR3.
AR1
bgp 64512
peer 2.2.2.2 as-number 64512
AR2
bgp 64512
peer 1.1.1.1 as-number 64512
peer 1.1.1.1 next-hop-local
peer 3.3.3.3 as-number 64513
AR3
router id 3.3.3.3
bgp 64513
peer 2.2.2.2 as-number 64514
2. Проверка конфигурации и поиск неисправностей. После настройки первым делом проверим соседство между устройствами. Начнем с AR2:
[AR2] display bgp peer
BGP local router ID : 2.2.2.2
Local AS number : 64512
Total number of peers : 2 Peers in established state : 0
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
1.1.1.1 4 64512 0 0 0 00:01:03 Active 0
3.3.3.3 4 64513 0 0 0 00:01:02 Idle 0
Вывод показывает, что статус соседства с AR1 значится как Active, а с AR3 как Idle. При правильной настройке статус должен отображаться как Established. Начнем поиск неисправностей. Обычно, если IP адрес удаленного устройсва недоступен, то статус будет отображаться как Idle. Маршрутизатор не может установить TCPсессию с удаленным устройством. Если IP адрес удаленного устройства доступен, но возникает ошибка при установлении TCP сессии, статус соседства будет оставаться как Active. Сначала проверим доступность loopbackадресов маршрутизаторов AR2 и AR3:
[AR2] ping -a 2.2.2.2 3.3.3.3
PING 3.3.3.3: 56 data bytes, press CTRL_C to break
Request time out
Request time out
Request time out
Request time out
--- 3.3.3.3 ping statistics ---
4 packet(s) transmitted
0 packet(s) received
100.00% packet loss
Как видим, соединения нет. Проверим таблицу маршрутизации на AR2 и AR3:
[AR2] display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 12 Routes : 12
Destination/Mask Proto Pre Cost Flags NextHop Interface
1.1.1.1/32 OSPF 10 1 D 10.1.12.1 GigabitEthernet0/0/0
2.2.2.2/32 Direct 0 0 D 127.0.0.1 LoopBack0
10.1.12.0/24 Direct 0 0 D 10.1.12.2 GigabitEthernet0/0/0
10.1.12.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
10.1.12.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
10.1.23.0/24 Direct 0 0 D 10.1.23.2 GigabitEthernet0/0/1
10.1.23.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
10.1.23.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
[AR3] display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 8 Routes : 8
Destination/Mask Proto Pre Cost Flags NextHop Interface
3.3.3.3/32 Direct 0 0 D 127.0.0.1 LoopBack0
10.1.23.0/24 Direct 0 0 D 10.1.23.3 GigabitEthernet0/0/1
10.1.23.3/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
10.1.23.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
Как видим, AR2 не знает маршрута до loopback интерфейсаAR3 и наоборот. Для решения данной проблемы мы можем прописать статические маршруты:
AR2
ip route-static 3.3.3.3 32 10.1.23.3
AR3
ip route-static 2.2.2.2 32 10.1.23.2
Теперь снова проверим соединение между AR2 и AR3:
[AR2] ping -a 2.2.2.2 3.3.3.3
PING 3.3.3.3: 56 data bytes, press CTRL_C to break
Reply from 3.3.3.3: bytes=56 Sequence=1 ttl=255 time=90 ms
Reply from 3.3.3.3: bytes=56 Sequence=2 ttl=255 time=20 ms
Reply from 3.3.3.3: bytes=56 Sequence=3 ttl=255 time=20 ms
Reply from 3.3.3.3: bytes=56 Sequence=4 ttl=255 time=30 ms
Reply from 3.3.3.3: bytes=56 Sequence=5 ttl=255 time=30 ms
--- 3.3.3.3 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 20/38/90 ms
А также проверим статус соседства на AR2:
[AR2] display bgp peer
BGP local router ID : 2.2.2.2
Local AS number : 64512
Total number of peers : 2 Peers in established state : 0
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
1.1.1.1 4 64512 0 0 0 00:09:18 Active 0
3.3.3.3 4 64513 0 0 0 00:09:17 Active 0
Статус сменился с Idle на Active. Сейчас перейдем к проблеме междуAR1 и AR2. Как мы знаем, BGP используетTCP порт 179. Проверим доступность порта на обоих маршрутизаторах:
[AR1] display tcp status
TCPCB Tid/Soid Local Add:port Foreign Add:port VPNID State
b4adcef8 6 /1 0.0.0.0:23 0.0.0.0:0 23553 Listening
b4add180 164/2 0.0.0.0:179 2.2.2.2:0 0 Listening
[AR2] display tcp status
TCPCB Tid/Soid Local Add:port Foreign Add:port VPNID State
b4ba9ef8 6 /1 0.0.0.0:23 0.0.0.0:0 23553 Listening
b4baa2c4 164/2 0.0.0.0:179 1.1.1.1:0 0 Listening
b4baa54c 164/4 0.0.0.0:179 3.3.3.3:0 0 Listening
Как видим, на обоих устройствах порт 179 открыт и принимает пакеты. Введем команды для дебагинга TCP пакетов и посмотрим, получает ли AR1BGP пакеты от AR2:
<AR1> terminal monitor
<AR1> terminal debugging
<AR1> debugging tcp packet
Jun 14 2019 16:36:08.410.1-08:00 AR1 SOCKET/7/TCP PACKET:
TCP debug packet information:
1560530168: Input: no port,
(src = 10.1.12.2:50419,dst = 1.1.1.1:179,VrfIndex = 0,seq = 3729781767,
ack = 0,datalen = 0,optlen = 67108864,flag = SYN ,window = 4194304,ttl = 0,tos = 0,MSS = 0)
Как видим, адрес источника значится как 10.1.12.2. Для установления BGP соседства мы использовали IPадреса loopbackинтерфейсов. В результате соседство не может быть установлено. Для решения данной проблемы мы должны дать команду connect-interface чтобы обозначить с какого адреса устанавливать BGP сосесдтво:
AR1
bgp 64512
peer 2.2.2.2 connect-interface loopback 0
AR2
bgp 64512
peer 1.1.1.1 connect-interface loopback 0
peer 3.3.3.3 connect-interface loopback 0
AR3
bgp 64513
peer 2.2.2.2 connect-interface loopback 0
Снова проверим статус соседства наAR2:
[AR2] display bgp peer
BGP local router ID : 2.2.2.2
Local AS number : 64512
Total number of peers : 2 Peers in established state : 1
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
1.1.1.1 4 64512 2 4 0 00:00:31 Established 0
3.3.3.3 4 64513 0 0 0 00:00:19 Idle 0
Между AR1 и AR2 установилось соседство. Теперь введем команды для дебагинга ipпакетов на AR3:
<AR3> terminal monitor
<AR3> terminal debugging
<AR3> debugging ip packet
Jun 14 2019 17:01:21.193.7-08:00 AR3 IP/7/debug_case:
Delivering, interface = GE0/0/1, version = 4, headlen = 20, tos = 192,
pktlen = 40, pktid = 4752, offset = 0, ttl = 1, protocol = 6,
checksum = 52395, s = 2.2.2.2, d = 3.3.3.3
prompt: Packet is before IP_Reass before really deliver to up.
Как видим, TTL пакета равен 1. Это значение по умолчанию. В нашем сценарии AR2 и AR3 устанавливают соседство при помощи адресов loopbackинтерфейсов. Так как между интерфейсами два хопа, BGP пакеты не доходят до нужного адреса и просто отбрасываются, так как истекает TTL. Для решения данной проблемы изменим значение TLL:
AR2
bgp 64512
peer 3.3.3.3 ebgp-max-hop 2
AR3
bgp 64513
peer 2.2.2.2 ebgp-max-hop 2
Проверим статус соседства:
[AR2] display bgp peer
BGP local router ID : 2.2.2.2
Local AS number : 64512
Total number of peers : 2 Peers in established state : 1
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
1.1.1.1 4 64512 4 4 0 00:02:10 Established 0
3.3.3.3 4 64513 0 1 0 00:00:37 Active 0
Как видим, статус соседства остается на стадии Active. Проверим BGPошибки на AR3:
[AR3] display bgp error
Error Type : Peer Error
Date/Time : 2019/06/14 17:09:02 UTC-08:00
Peer Address : 2.2.2.2
VRF Name : Public
Error Info : Incorrect remote AS
Error Type : Peer Error
Date/Time : 2019/06/14 17:09:34 UTC-08:00
Peer Address : 2.2.2.2
VRF Name : Public
Error Info : Incorrect remote AS
Error Type : Peer Error
Date/Time : 2019/06/14 17:07:56 UTC-08:00
Peer Address : 2.2.2.2
VRF Name : Public
Error Info : Incorrect remote AS
<AR3> terminal debugging
<AR3> debugging bgp packet
Jun 14 2019 17:11:10.168.4-08:00 AR3 RM/6/RMDEBUG:
BGP.Public: Err/SubErr: 2/2 Errdata: 41040000fc00
Identified in OPEN MSG from 2.2.2.2.
Вывод говорит, что ошибка возникает из-за неправильно настроенного номера AS. Также из дебага bgpпакетов видим ошибку с кодом номер 2, это также свидетельствует об ошибке в номере AS. Исправим ошибку, которую мы допустили при настройке AR3:
AR3
bgp 64513
undo peer 2.2.2.2
peer 2.2.2.2 as-number 64512
peer 2.2.2.2 ebgp-max-hop 2
peer 2.2.2.2 connect-interface LoopBack0
[AR2] display bgp peer
BGP local router ID : 2.2.2.2
Local AS number : 64512
Total number of peers : 2 Peers in established state : 2
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
1.1.1.1 4 64512 10 10 0 00:08:15 Established 0
3.3.3.3 4 64513 3 4 0 00:01:04 Established 0
Как видим, теперь соседство успешно установилось.