Bài viết chuyên đề
Cấu hình cơ bản BGP với Cisco IOS
29/11/2021 07:27:34
Cấu hình cơ bản BGP với Cisco IOS
Hình 1 – Sơ đồ bài lab.
Mô tả:
Trong bài viết trước, chúng ta đã cùng tìm hiểu về một số đặc điểm cơ bản nhất của giao thức định tuyến BGP. Trong bài viết này, chúng ta sẽ thực hiện một bài lab cơ bản về BGP để hiểu rõ hơn về giao thức này cũng như cách thiết lập một số thông số ban đầu cho một hệ thống chạy BGP.
Bài lab gồm 5 router được kết nối với nhau và đặt địa chỉ IP như trên hình 1. Trên sơ đồ lab này, chúng ta sẽ thực hiện các tác vụ như sau:
- Trên AS 123, chúng ta cho các router chạy một giao thức định tuyến trong đảm bảo mọi địa chỉ trên AS 123 thấy được nhau. Với bài lab này, giao thức định tuyến trong được chọn là giao thức OSPF, chỉ sử dụng một Area là Area 0.
- Cấu hình bật BGP và cho các router tham gia các AS như được chỉ ra. Trong đó: R1, R2, R3 tham gia AS 123; R4 tham gia AS 104 và R5 tham gia AS 105.
- Cũng trên AS 123, chúng ta thiết lập mạng lưới iBGP giữa các router R1, R2 và R3. Các BGP peering giữa các router được xây dựng dựa trên địa chỉ IP trên các cổng loopback của chúng.
- Với eBGP peering giữa các AS:
- eBGP peering giữa AS 104 và AS 123 được xây dựng dựa trên hai địa chỉ IP trên link kết nối trực tiếp giữa R4 và R1.
- eBGP peering giữa AS 105 và AS 123 được xây dựng dựa trên hai địa chỉ IP trên hai cổng loopback của R4 và R1.
- Sau khi mạng lưới BGP được xây dựng xong như ở các bước 3 và 4, hai router R4 và R5 thực hiện quảng bá các địa chỉ mạng 104.0.0.0/24 và 105.0.0.0/24 vào mạng lưới BGP này. Chúng ta cần kiểm tra xác nhận rằng hai mạng vừa nêu có thể đi đến nhau được thông qua định tuyến BGP.
Bài lab này được người viết thực hiện bằng Cisco IOL trên phần mềm giả lập EVE – NG.
Thực hiện:
Bước 1: Cấu hình định tuyến trong (IGP) trên AS 123
Trước khi chạy định tuyến ngoài BGP với các AS khác, bản thân mỗi AS đã là một hệ thống IGP đảm bảo mọi địa chỉ IP trên AS này có thể đi đến nhau được. Trong kịch bản lab này, AS 123 sẽ chạy định tuyến OSPF Area 0 để các địa chỉ trên AS có thể đi đến nhau. Cấu hình cơ bản về đặt hostname và địa chỉ IP trên các thiết bị không được trình bày lại ở đây.
Trên các router R1 và R3:
interface range e0/0,lo0
ip ospf 1 area 0
Trên router R2:
interface range e0/0 - 1,lo0
ip ospf 1 area 0
Sau khi cấu hình OSPF trên các router, chúng ta cần thực hiện một số thao tác kiểm tra.
Đầu tiên, chúng ta xác nhận rằng các router đã thiết lập quan hệ láng giềng OSPF đầy đủ:
R1#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
10.0.0.2 1 FULL/DR 00:00:36 192.168.12.2 Ethernet0/0
R2#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
10.0.0.3 1 FULL/DR 00:00:36 192.168.23.2 Ethernet0/1
10.0.0.1 1 FULL/BDR 00:00:34 192.168.12.1 Ethernet0/0
R3#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
10.0.0.2 1 FULL/BDR 00:00:34 192.168.23.1 Ethernet0/0
Kế tiếp, chúng ta kiểm tra rằng bảng định tuyến của các router trong AS 123 đều đã có đầy đủ thông tin về các địa chỉ IP cần thiết:
R1#show ip route ospf
(…)
10.0.0.0/32 is subnetted, 3 subnets
O 10.0.0.2 [110/11] via 192.168.12.2, 00:03:17, Ethernet0/0
O 10.0.0.3 [110/21] via 192.168.12.2, 00:03:07, Ethernet0/0
192.168.23.0/30 is subnetted, 1 subnets
O 192.168.23.0 [110/20] via 192.168.12.2, 00:03:07, Ethernet0/0
R2#show ip route ospf
(…)
10.0.0.0/32 is subnetted, 3 subnets
O 10.0.0.1 [110/11] via 192.168.12.1, 00:03:20, Ethernet0/0
O 10.0.0.3 [110/11] via 192.168.23.2, 00:03:10, Ethernet0/1
R3#show ip route ospf
(…)
10.0.0.0/32 is subnetted, 3 subnets
O 10.0.0.1 [110/21] via 192.168.23.1, 00:03:19, Ethernet0/0
O 10.0.0.2 [110/11] via 192.168.23.1, 00:03:19, Ethernet0/0
192.168.12.0/30 is subnetted, 1 subnets
O 192.168.12.0 [110/20] via 192.168.23.1, 00:03:19, Ethernet0/0
Các loopback 0 của các router đã có thể đi đến nhau từng đôi một:
R1#ping 10.0.0.2 source 10.0.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds:
Packet sent with a source address of 10.0.0.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
R1#ping 10.0.0.3 source 10.0.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.3, timeout is 2 seconds:
Packet sent with a source address of 10.0.0.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms
R2#ping 10.0.0.3 source 10.0.0.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.3, timeout is 2 seconds:
Packet sent with a source address of 10.0.0.2
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
Bước 2: Bật định tuyến BGP trên các router
Để cấu hình BGP trên một router, trước hết, chúng ta cần bật BGP và cho router tham gia vào một AS:
R(config)#router bgp ASN
R(config-router)#
Lưu ý rằng, mỗi router chỉ được tham gia vào một AS, do đó, nếu chúng ta muốn cho router tham gia lại vào một AS khác, tiến trình BGP với ASN cũ cần được gỡ bỏ và thay thế bởi tiến trình BGP với AS mới:
R(config)#no router bgp Old_ASN
R(config)#router bgp New_ASN
R(config-router)#
Cấu hình trên các router của bài lab:
R1(config)#router bgp 123
R1(config-router)#
R2(config)#router bgp 123
R2(config-router)#
R3(config)#router bgp 123
R3(config-router)#
R4(config)#router bgp 104
R4(config-router)#
R5(config)#router bgp 105
R5(config-router)#
Bước 3: Xây dựng mạng lưới iBGP trên AS 123
BGP chạy trên nền TCP sử dụng port 179, TCP không hỗ trợ truyền tải dữ liệu theo nhóm nên ta không thể để các router chạy BGP tự động thiết lập peering với nhau theo phương thức multicast như với các giao thức định tuyến trong. Một BGP session giữa hai router BGP bắt buộc phải được thiết lập thủ công. Do đó, bước tiếp theo sau khi cho router tham gia BGP là ta cần phải cấu hình khai báo các BGP neighbor cho router này:
R(config-router)#neighbor Địa_chỉ_IP_của_neighbor remote-as ASN_của_neighbor
Lưu ý rằng, các router BGP sẽ sử dụng địa chỉ IP của neighbor mà ta đã khai báo để làm Destination IP cho các gói tin BGP gửi đến neighbor này. Ở chiều ngược lại, một router khi nhận được các gói tin BGP, nó cũng sẽ kiểm tra xem destination IP của gói tin có nằm trong danh sách láng giềng đã khai báo không, nếu không, router sẽ drop bỏ gói tin này và gửi một thông điệp Notification báo lỗi về router đã phát ra gói BGP vừa nêu. Vì vậy, việc khai báo địa chỉ IP của các neighbor đòi hỏi phải đối xứng ở hai router muốn peering với nhau: router này phải sử dụng source IP là địa chỉ IP đã khai báo trong lệnh “neighbor” của router kia và ngược lại. Đối với các AS sử dụng mạng lưới router phức tạp, đảm bảo yêu cầu vừa nêu sẽ trở nên khó khăn. Cisco IOS cung cấp một tiện ích cho phép chọn source của gói tin BGP trong việc thiết lập BGP session, cho phép người quản trị dễ dàng đảm bảo sự đối xứng về địa chỉ IP trong thao tác peering:
R(config-router)#neighbor Địa_chỉ_IP_của_neighbor update-source Interface
Với câu lệnh trên, ta có thể chọn source cho mọi gói tin BGP gửi đến neighbor là IP trên Interface được chỉ ra trong câu lệnh. Mặc định, nếu ta không sử dụng lệnh này, gói tin BGP sẽ sử dụng địa chỉ IP trên cổng của router mà nó đi ra (outbound interface) để làm source của gói BGP.
Thông thường, khi sử dụng tính năng update – source, người ta hay chọn cổng source là cổng loopback vì những cổng này là những cổng luận lý không bao giờ down (trừ phi người quản trị shutdown cổng). Điều này giúp tăng tính ổn định cũng như dễ dàng đảm bảo tính HA của một session BGP.
Ta thực hiện cấu hình iBGP full – mesh trên AS 123 sử dụng IP để thiết lập các session BGP là địa chỉ IP trên các cổng loopback 0 của các router:
R1(config)#router bgp 123
R1(config-router)#neighbor 10.0.0.2 remote-as 123
R1(config-router)#neighbor 10.0.0.2 update-source lo 0
R1(config-router)#neighbor 10.0.0.3 remote-as 123
R1(config-router)#neighbor 10.0.0.3 update-source lo 0
R1(config-router)#exit
R2(config)#router bgp 123
R2(config-router)#neighbor 10.0.0.1 remote-as 123
R2(config-router)#neighbor 10.0.0.1 update-source lo 0
R2(config-router)#neighbor 10.0.0.3 remote-as 123
R2(config-router)#neighbor 10.0.0.3 update-source lo 0
R2(config-router)#exit
R3(config)#router bgp 123
R3(config-router)#neighbor 10.0.0.1 remote-as 123
R3(config-router)#neighbor 10.0.0.1 update-source lo 0
R3(config-router)#neighbor 10.0.0.2 remote-as 123
R3(config-router)#neighbor 10.0.0.2 update-source lo 0
R3(config-router)#exit
Bước 4: Xây dựng eBGP peering giữa các AS
Quan hệ eBGP peering giữa AS 104 và AS 123 được thiết lập dựa trên hai router R4 và R1 của hai AS này. Hai router này sẽ sử dụng hai địa chỉ IP trên đường link kết nối trực tiếp giữa chúng để xây dựng peering; do đó, địa chỉ IP được chỉ ra trong câu lệnh “neighbor” của mỗi router chính là địa chỉ IP đấu nối của router còn lại:
R1(config)#router bgp 123
R1(config-router)#neighbor 192.168.14.2 remote-as 104
R1(config-router)#exit
R4(config)#router bgp 104
R4(config-router)#neighbor 192.168.14.1 remote-as 123
R4(config-router)#exit
Tiếp theo, với eBGP peering giữa R3 và R5 của hai AS 123 và 105, theo như sơ đồ mô tả, hoạt động peering này phải được tiến hành bằng các địa chỉ IP nằm trên hai cổng loopback của hai router. Để làm được điều này, trước hết, chúng ta cần phải đảm bảo về mặt định tuyến, để IP trên hai loopback này có thể đi đến nhau. Chúng ta có thể sử dụng một hình thức định tuyến bất kỳ giữa R3 và R5, tuy nhiên, để đơn giản, chúng ta chỉ cần cấu hình định tuyến tĩnh trên hai router:
R3(config)#ip route 10.0.0.5 255.255.255.255 192.168.35.2
R5(config)#ip route 10.0.0.3 255.255.255.255 192.168.35.1
Kế tiếp, khi R3 và R5 khai báo nhau là neighbor, hoạt động khai báo cần phải sử dụng thêm tùy chọn “update-source” để hai route sử dụng địa chỉ IP trên loopback cho hoạt động thiết lập neighbor này:
R3(config)#router bgp 123
R3(config-router)#neighbor 10.0.0.5 remote-as 105
R3(config-router)#neighbor 10.0.0.5 update-source lo 0
R3(config-router)#exit
R5(config)#router bgp 105
R5(config-router)#neighbor 10.0.0.3 remote-as 123
R5(config-router)#neighbor 10.0.0.3 update-source lo 0
R5(config-router)#exit
Với eBGP peering, mặc định, các gói BGP được thiết lập giá trị TTL chỉ bằng 1 dẫn đến quan hệ láng giềng giữa hai BGP speaker chỉ có thể được xây dựng dựa trên hai địa chỉ IP cùng mạng, đấu nối trực tiếp. Để có thể sử dụng tính năng update – source vừa nêu ở trên, ta cần tăng giá trị TTL của các gói BGP lên ít nhất là 2. Cisco IOS cũng có một tùy chọn trong lệnh “neighbor” cho phép tăng giá trị TTL của gói tin BGP lên như vừa trình bày:
R(config-router)#neighbor Địa_chỉ_IP_của_neighbor ebgp-multihop [TTL]
Lưu ý rằng, với iBGP peering, giá trị TTL của các gói BGP mặc định được thiết lập là 255 (giá trị tối đa).
Cấu hình hiệu chỉnh giá trị TTL của các gói BGP mà R3 và R5 gửi cho nhau để eBGP peering có thể được thiết lập:
R3(config)#router bgp 123
R3(config-router)#neighbor 10.0.0.5 ebgp-multihop 2
R3(config-router)#exit
R5(config)#router bgp 105
R5(config-router)#neighbor 10.0.0.3 ebgp-multihop 2
R5(config-router)#exit
Đến đây, chúng ta đã hoàn thành xây dựng mạng lưới BGP như đã mô tả trong sơ đồ bài lab.
Thông thường, để dễ theo dõi và quản lý, bên cạnh sơ đồ đấu nối IP giữa các thiết bị như được chỉ ra trên hình 1, một sơ đồ khác mô tả mạng lưới BGP cũng được xây dựng và được gọi là sơ đồ BGP peering. Với cấu hình đã thực hiện ở các bước 3 và 4 ở trên, chúng ta có được một sơ đồ BGP peering như mô tả trong hình 2 ở dưới đây:
Hình 2 – Sơ đồ BGP.
Tiếp theo, chúng ta thực hiện kiểm tra xác nhận trên mỗi router của bài lab rằng các BGP peering đã được thiết lập thành công như yêu cầu đặt ra và giống như mô tả trên hình 2.
Để kiểm tra hiện trạng peering giữa hai router BGP, chúng ta có thể sử dụng câu lệnh “R#show ip bgp summary”.
Trên router R1:
R1#show ip bgp summary
BGP router identifier 10.0.0.1, local AS number 123
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.0.0.2 4 123 83 85 1 0 0 01:14:02 0
10.0.0.3 4 123 84 85 1 0 0 01:13:51 0
192.168.14.2 4 104 85 84 1 0 0 01:14:41 0
Trong kết quả show ở trên, R1 đã có 3 BGP neighbor trong danh sách. Địa chỉ các neighbor này được hiển thị trong cột “Neighbor”. Cột “AS” cho biết ASN của các neighbor này.
Để biết được một neighbor đã được thiết lập BGP session thành công hay chưa, chúng ta có thể quan sát cột cuối cùng của kết quả show “State/PfxRcd” (viết tắt của “State/Prefixes Received”). Nếu cột này hiển thị một con số, bất kể số nào, quan hệ láng giềng đã thiết lập thành công; ngược lại, nếu cột này báo hiệu một trạng thái khác (ví dụ: “Idle” hay “Active”), quan hệ láng giềng chưa thiết lập thành công, chúng ta cần phải troubleshoot để giải quyết vấn đề. Hai trạng thái lỗi thường gặp nhất:
- Idle: Router hiện chưa có route để đi đến địa chỉ IP của neighbor đã khai báo. Cần bổ sung về mặt định tuyến để có thể đi đến được IP này.
- Active: Router đã có route để đi đến được neighbor đã khai báo, tuy nhiên có sự không thống nhất về cấu hình hai đầu khiến lỗi xảy ra (ví dụ: không khai báo đúng ASN của láng giềng, IP hai đầu không đối xứng,…). Chúng ta cần phải kiểm tra lại cấu hình BGP ở hai bên và quan sát các thông điệp log BGP (thường có từ khóa “NOTIFICATION”) để xác định lỗi.
Trong kết quả ở trên, R1 đã thiết lập neighbor thành công với 3 router BGP speaker khác: 10.0.0.2 (R2), 10.0.0.3 (R3) và 192.168.14.2 (R4). Trong đó, chúng ta để ý rằng hai router R2 và R3 là hai iBGP peer, sử dụng IP trên các loopback 0 để xây dựng session và R4 là một eBGP peer, sử dụng địa chỉ IP đấu nối trực tiếp để thiết lập session. Ta có thể kiểm tra tương tự trên các router còn lại:
R2#show ip bgp summary
BGP router identifier 10.0.0.2, local AS number 123
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.0.0.1 4 123 105 103 1 0 0 01:32:39 0
10.0.0.3 4 123 104 105 1 0 0 01:32:39 0
R3#show ip bgp summary
BGP router identifier 10.0.0.3, local AS number 123
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.0.0.1 4 123 105 105 1 0 0 01:32:32 0
10.0.0.2 4 123 105 104 1 0 0 01:32:43 0
10.0.0.5 4 105 104 106 1 0 0 01:33:25 0
R4#show ip bgp summary
BGP router identifier 192.168.14.2, local AS number 104
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.168.14.1 4 123 104 106 1 0 0 01:33:26 0
R5#show ip bgp summary
BGP router identifier 10.0.0.5, local AS number 105
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.0.0.3 4 123 106 104 1 0 0 01:33:37 0
Kết quả show cho thấy các BGP session đều đã được thiết lập thành công giữa các router như được chỉ ra trong sơ đồ BGP ở hình 2.
Bước 5: Quảng bá các địa chỉ mạng (IP prefix) vào BGP
Sau khi đã xây dựng xong mạng lưới BGP, các router BGP đã có thể quảng bá các IP prefix của chúng vào mạng lưới này. Để quảng bá tường minh một IP prefix vào BGP, một router BGP có thể sử dụng lệnh:
R(config-router)#network IP_Prefix mask subnet_mask
Khi lệnh này được thực thi, tiến trình BGP trên router sẽ tìm kiếm chính xác IP prefix với subnet – mask đã chỉ ra trong câu lệnh để quảng bá mạng này vào BGP. Việc tìm kiếm sẽ được tiến hành trong bảng định tuyến của router với các route đã được xây dựng trước đó bởi các kỹ thuật định tuyến trong IGP (OSPF, EIGRP,…), static routing và connected route. Lưu ý rằng, để một IP prefix có thể được đưa vào BGP, IP prefix này phải tồn tại trước trong bảng định tuyến của router.
Trên R4 và R5:
R4(config)#router bgp 104
R4(config-router)#network 104.0.0.0 mask 255.255.255.0
R4(config-router)#exit
R5(config)#router bgp 105
R5(config-router)#network 105.0.0.0 mask 255.255.255.0
R5(config-router)#exit
Ta thấy rằng, theo yêu cầu đặt ra, hai router R4 và R5 phải quảng bá hai mạng 104.0.0.0/24 và 105.0.0.0/24 vào mạng lưới BGP. Vì đây là hai mạng connected của hai router nên hai mạng này đã nằm sẵn trong bảng định tuyến của R4 và R5:
R4#show ip route 104.0.0.0 255.255.255.0
Routing entry for 104.0.0.0/24
Known via "connected", distance 0, metric 0 (connected, via interface)
Advertised by bgp 104
Routing Descriptor Blocks:
* directly connected, via Ethernet0/1
Route metric is 0, traffic share count is 1
R5#show ip route 105.0.0.0 255.255.255.0
Routing entry for 105.0.0.0/24
Known via "connected", distance 0, metric 0 (connected, via interface)
Advertised by bgp 105
Routing Descriptor Blocks:
* directly connected, via Ethernet0/1
Route metric is 0, traffic share count is 1
Hai router R4 và R5 đã có thể quảng bá được hai mạng này vào mạng lưới BGP. Chúng ta có thể quan sát bảng BGP của hai router để xác nhận điều này:
R4#show ip bgp
BGP table version is 2, local router ID is 192.168.14.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 104.0.0.0/24 0.0.0.0 0 32768 i
R5#show ip bgp
BGP table version is 2, local router ID is 10.0.0.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 105.0.0.0/24 0.0.0.0 0 32768 i
Sự hiện diện của hai prefix trong bảng BGP của mỗi router cho thấy chúng đã được đưa vào BGP. Tuy nhiên, chúng ta thấy rằng hai router này chưa nhận được các mạng của nhau mà chỉ có được mạng do chính mình quảng bá vào BGP.
Ta tiếp tục quan sát bảng BGP của các router thuộc AS 123, là AS trung chuyển (Transit AS) cho hai AS 104 và 105:
R1#show ip bgp
BGP table version is 2, local router ID is 10.0.0.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 104.0.0.0/24 192.168.14.2 0 0 104 i
* i 105.0.0.0/24 10.0.0.5 0 100 0 105 i
R2#show ip bgp
BGP table version is 1, local router ID is 10.0.0.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
* i 104.0.0.0/24 192.168.14.2 0 100 0 104 i
* i 105.0.0.0/24 10.0.0.5 0 100 0 105 i
R3#show ip bgp
BGP table version is 2, local router ID is 10.0.0.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
* i 104.0.0.0/24 192.168.14.2 0 100 0 104 i
*> 105.0.0.0/24 10.0.0.5 0 0 105 i
Ta thấy, các router thuộc AS 123 đều đã nhận được hai prefix 104.0.0.0/24 và 105.0.0.0/24 nhưng lại không quảng bá tiếp tục các prefix này đến R4 thuộc AS 104 và R5 thuộc AS 105. Ví dụ: trong bảng BGP của router R1, ta thấy có mạng 104.0.0.0/24 và mạng 105.0.0.0/24 nhưng R1 lại không quảng bá tiếp mạng 105.0.0.0/24 sang cho R4, từ đó R4 không có được thông tin về mạng 105.0.0.0/24 của R5 và chưa thể route dữ liệu đi đến được mạng này.
Ta quan sát chi tiết thông tin về các prefix vừa nêu trên một router thuộc AS 123 để tìm hiểu nguyên nhân của hiện tượng trên:
R2#show ip bgp 104.0.0.0 255.255.255.0
BGP routing table entry for 104.0.0.0/24, version 0
Paths: (1 available, no best path)
Flag: 0x820
Not advertised to any peer
Refresh Epoch 1
104
192.168.14.2 (inaccessible) from 10.0.0.1 (10.0.0.1)
Origin IGP, metric 0, localpref 100, valid, internal
rx pathid: 0, tx pathid: 0
R2#show ip bgp 105.0.0.0 255.255.255.0
BGP routing table entry for 105.0.0.0/24, version 0
Paths: (1 available, no best path)
Flag: 0x820
Not advertised to any peer
Refresh Epoch 1
105
10.0.0.5 (inaccessible) from 10.0.0.3 (10.0.0.3)
Origin IGP, metric 0, localpref 100, valid, internal
rx pathid: 0, tx pathid: 0
Từ kết quả show trên R2 ta thấy router R2 nhận được route 104.0.0.0/24 từ R1 (“from 10.0.0.1 (10.0.0.1)” nhưng với next – hop là 192.168.14.2, lại là địa chỉ của R4. Tương tự như vậy, R2 nhận được route 105.0.0.0/24 từ R3 (“from 10.0.0.3 (10.0.0.3)” nhưng với next – hop là 10.0.0.5, lại là địa chỉ của R5. Vì các địa chỉ này của R4 và R5 không hề được quảng bá vào trong AS 123 nên R2 không có route để đi đến được các địa chỉ này và vì vậy, với R2, các địa chỉ next – hop của các prefix 104.0.0.0/24 và 105.0.0.0/24 là không thể đi đến được (“inaccessible”). Từ đó, R2 tuy nhận được thông tin nhưng không thể sử dụng được thông tin định tuyến cho các prefix 104.0.0.0/24 và 105.0.0.0/24.
Tình trạng tương tự cũng diễn ra với hai router R1 và R3:
R1#show ip bgp 105.0.0.0 255.255.255.0
BGP routing table entry for 105.0.0.0/24, version 0
Paths: (1 available, no best path)
Not advertised to any peer
Refresh Epoch 1
105
10.0.0.5 (inaccessible) from 10.0.0.3 (10.0.0.3)
Origin IGP, metric 0, localpref 100, valid, internal
rx pathid: 0, tx pathid: 0
R3#show ip bgp 104.0.0.0 255.255.255.0
BGP routing table entry for 104.0.0.0/24, version 0
Paths: (1 available, no best path)
Flag: 0x820
Not advertised to any peer
Refresh Epoch 1
104
192.168.14.2 (inaccessible) from 10.0.0.1 (10.0.0.1)
Origin IGP, metric 0, localpref 100, valid, internal
rx pathid: 0, tx pathid: 0
Ta thấy R1 nhận được mạng 105.0.0.0/24 từ R3 nhưng next – hop không thể đi đến được (“10.0.0.5 (inaccessible)”) và R3 nhận được mạng 104.0.0.0/24 từ R1 với next – hop cũng không thể đi đến được (“192.168.14.2 (inaccessible)”). Do đó, R1 và R3 sẽ không tiếp tục quảng bá các mạng này đến cho R4 và R5 vì chúng không sử dụng được thông tin định tuyến về các mạng này.
Để khắc phục hiện tượng vừa nêu, chúng ta cần phải chỉnh sửa cấu hình đã thực hiện để các router thuộc AS 123 không còn bị lỗi “next – hop is unreachable”. Lỗi này xảy ra do ảnh hưởng của ứng xử next – hop trên các router biên: khi một router biên của một AS nhận được một prefix từ một eBGP peer, nó sẽ giữ nguyên địa chỉ next – hop của prefix khi quảng bá tiếp tục vào các router iBGP bên trong AS. Cisco IOS có một tính năng cho phép thay đổi ứng xử này là tùy chọn “next-hop-self” trong lệnh khai báo neighbor:
R(config-router)#neighbor Địa_chỉ_IP_của_neighbor next-hop-self
Khi sử dụng tùy chọn “next-hop-self” cho một iBGP neighbor nào đó, router đang xét sẽ đổi giá trị next – hop của eBGP route mà nó nhận được thành địa chỉ của chính nó rồi quảng bá tiếp tục đến iBGP neighbor này. Vì địa chỉ của router đang xét chắc chắn router iBGP neighbor kia có thể đi đến được nên lỗi “next – hop is unreachable” được khắc phục.
Như vậy, với AS 123, chúng ta cần bổ sung thêm tùy chọn “next-hop-self” khi hai router biên R1 và R3 thiết lập neighbor với mọi router bên trong AS 123:
R1(config)#router bgp 123
R1(config-router)#neighbor 10.0.0.2 next-hop-self
R1(config-router)#neighbor 10.0.0.3 next-hop-self
R1(config-router)#exit
R3(config)#router bgp 123
R3(config-router)#neighbor 10.0.0.1 next-hop-self
R3(config-router)#neighbor 10.0.0.2 next-hop-self
R3(config-router)#exit
Vậy, khi khai báo iBGP neighbor trên các router biên của một AS, chúng ta đừng quên sử dụng “next-hop-self” để đảm bảo lỗi next – hop không xảy ra cho các eBGP route.
Tiếp theo, chúng ta kiểm tra kết quả của bước thứ 5 vừa thực hiện.
Chúng ta kiểm tra rằng lúc này các router của AS 123 đều đã sử dụng được thông tin định tuyến cho các prefix 104.0.0.0/24 và 105.0.0.0/24:
R1#show ip bgp
BGP table version is 3, local router ID is 10.0.0.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 104.0.0.0/24 192.168.14.2 0 0 104 i
*>i 105.0.0.0/24 10.0.0.3 0 100 0 105 i
R2#show ip bgp
BGP table version is 3, local router ID is 10.0.0.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*>i 104.0.0.0/24 10.0.0.1 0 100 0 104 i
*>i 105.0.0.0/24 10.0.0.3 0 100 0 105 i
R3#show ip bgp
BGP table version is 3, local router ID is 10.0.0.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*>i 104.0.0.0/24 10.0.0.1 0 100 0 104 i
*> 105.0.0.0/24 10.0.0.5 0 0 105 i
Ký hiệu “>” đặt trước các prefix trong bảng BGP cho thấy rằng các prefix này đã có thể được cài vào bảng định tuyến của router và quảng bá tiếp tục đi các router khác. Kết quả show ở trên cho thấy các router thuộc AS 123 đã có thể sử dụng được thông tin định tuyến đi đến các prefix 104.0.0.0/24 và 105.0.0.0/24.
Các router R4 và R5 lúc này cũng đã nhận được đầy đủ thông tin định tuyến:
R4#show ip bgp
BGP table version is 3, local router ID is 192.168.14.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 104.0.0.0/24 0.0.0.0 0 32768 i
*> 105.0.0.0/24 192.168.14.1 0 123 105 i
R5#show ip bgp
BGP table version is 3, local router ID is 10.0.0.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 104.0.0.0/24 10.0.0.3 0 123 104 i
*> 105.0.0.0/24 0.0.0.0 0 32768 i
Mạng 104.0.0.0/24 và 105.0.0.0/24 đều xuất hiện trong bảng định tuyến của các router:
R4#show ip route bgp
(…)
105.0.0.0/24 is subnetted, 1 subnets
B 105.0.0.0 [20/0] via 192.168.14.1, 00:08:44
R5#show ip route bgp
(…)
104.0.0.0/24 is subnetted, 1 subnets
B 104.0.0.0 [20/0] via 10.0.0.3, 00:09:17
R1#show ip route bgp
(…)
104.0.0.0/24 is subnetted, 1 subnets
B 104.0.0.0 [20/0] via 192.168.14.2, 00:45:21
105.0.0.0/24 is subnetted, 1 subnets
B 105.0.0.0 [200/0] via 10.0.0.3, 00:08:55
R2#show ip route bgp
(…)
104.0.0.0/24 is subnetted, 1 subnets
B 104.0.0.0 [200/0] via 10.0.0.1, 00:09:25
105.0.0.0/24 is subnetted, 1 subnets
B 105.0.0.0 [200/0] via 10.0.0.3, 00:08:58
R3#show ip route bgp
(…)
104.0.0.0/24 is subnetted, 1 subnets
B 104.0.0.0 [200/0] via 10.0.0.1, 00:09:28
105.0.0.0/24 is subnetted, 1 subnets
B 105.0.0.0 [20/0] via 10.0.0.5, 00:45:25
Lúc này, hai mạng 104.0.0.0/24 và 105.0.0.0/24 đã có thể đi đến nhau được:
R4#ping 105.0.0.1 source 104.0.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 105.0.0.1, timeout is 2 seconds:
Packet sent with a source address of 104.0.0.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms
Đến đây, chúng ta đã hoàn tất các yêu cầu của bài lab và đã thực hiện đầy đủ các thao tác kiểm tra xác nhận kết quả của quá trình làm bài lab này. Thông qua bài lab, mong rằng các bạn có thể có một hình dung ban đầu về cấu hình hiện thực hóa việc chạy BGP trên các thiết bị.
Trong các bài viết tiếp theo, chúng ta sẽ cùng đi vào các vấn đề chi tiết hơn của giao thức BGP.
Cảm ơn các bạn!
Hẹn gặp lại các bạn trong các bài viết tiếp theo!