Troubleshooting BGP Neighbor Adjacencies
Khác với EIGRP hay OSPF có khả năng tự động phát hiện láng giềng, BGP yêu cầu cấu hình neighbor thủ công. Điều này giúp kiểm soát tốt hơn nhưng cũng khiến BGP dễ gặp lỗi do cấu hình sai. Ngoài ra, BGP có hai loại phiên kết nối:
Hiểu rõ sự khác biệt giữa hai loại phiên này sẽ giúp việc troubleshooting nhanh và chính xác hơn.
Kiểm tra trạng thái BGP Neighbor
Lệnh đầu tiên nên sử dụng là:
show bgp ipv4 unicast summary
(hoặc show ip bgp summary trên các phiên bản IOS cũ).
Đây là lệnh hiển thị ngắn gọn tình trạng của tất cả các BGP neighbor. Trong khi đó, show bgp ipv4 unicast neighbors cung cấp rất nhiều thông tin chi tiết và thường chỉ dùng khi cần phân tích sâu.
Ví dụ:
R1# show bgp ipv4 unicast summary
BGP router identifier 10.1.13.1, local AS number 65501
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.12.2 4 65502 16 16 1 0 0 00:11:25 0
10.1.13.3 4 65502 15 12 1 0 0 00:09:51 0
Hai neighbor đều thuộc AS 65502, trong khi R1 thuộc AS 65501, nên đây là các phiên eBGP.
Hãy tập trung vào cột State/PfxRcd:
Khi neighbor lên thành công, router cũng sinh ra bản tin Syslog như:
%BGP-5-ADJCHANGE: neighbor 10.1.12.2 Up
Các nguyên nhân phổ biến khiến BGP Neighbor không hình thành
Interface bị Down
Điều kiện đầu tiên là interface phải ở trạng thái up/up.
Kiểm tra bằng:
show ip interface brief
Mất kết nối Layer 3
Hai router phải ping được địa chỉ IP của nhau.
ping 10.1.12.2
Nếu ping thất bại, hãy kiểm tra IP, VLAN, routing hoặc ARP.
Chỉ đi được qua Default Route
Cisco khuyến nghị neighbor nên được học thông qua một route cụ thể, không chỉ dựa vào default route.
Kiểm tra:
show ip route
Neighbor không có đường quay lại
BGP sử dụng TCP nên cả hai router đều phải có route đến nhau. Chỉ một chiều có kết nối là chưa đủ.
Sai câu lệnh Neighbor
Đây là lỗi gặp nhiều nhất.
neighbor 10.1.12.2 remote-as 65502
Hãy kiểm tra:
Chỉ cần sai một trong hai, phiên BGP sẽ không thể hình thành.
ACL hoặc Firewall chặn TCP Port 179
BGP hoạt động trên TCP port 179. Nếu ACL hoặc Firewall chặn cổng này, phiên BGP sẽ thất bại.
Kiểm tra:
show access-lists
Gói BGP được gửi từ sai địa chỉ nguồn
Khi sử dụng Loopback để thiết lập neighbor, cần cấu hình:
neighbor x.x.x.x update-source Loopback0
Nếu không, router có thể gửi gói BGP từ interface vật lý và neighbor sẽ từ chối kết nối.
TTL của gói BGP hết hạn
Mặc định, eBGP sử dụng TTL = 1, nên hai router phải kết nối trực tiếp.
Nếu neighbor ở nhiều hop, cần cấu hình:
neighbor x.x.x.x ebgp-multihop 2
hoặc giá trị lớn hơn tùy khoảng cách.
Sai thông số Authentication
Nếu sử dụng xác thực MD5, cả hai router phải dùng cùng mật khẩu.
neighbor 10.1.12.2 password Cisco123
Peer Group cấu hình sai
Peer Group giúp đơn giản hóa cấu hình nhưng nếu khai báo sai, nhiều neighbor có thể đồng thời không lên hoặc không học được route.
Timer không tương thích
Thông thường Keepalive và Hold Timer không cần giống nhau. Tuy nhiên, nếu sử dụng các tùy chọn như minimum holdtime from neighbor, sự khác biệt về timer có thể khiến phiên BGP không được thiết lập.
Quy trình Troubleshooting đề xuất
Khi BGP Neighbor không lên, hãy kiểm tra theo thứ tự sau:
Đây là quy trình troubleshooting chuẩn mà các kỹ sư CCNP Enterprise và CCIE Enterprise thường áp dụng để nhanh chóng xác định nguyên nhân khiến phiên BGP Neighbor không thể hình thành.
Khác với EIGRP hay OSPF có khả năng tự động phát hiện láng giềng, BGP yêu cầu cấu hình neighbor thủ công. Điều này giúp kiểm soát tốt hơn nhưng cũng khiến BGP dễ gặp lỗi do cấu hình sai. Ngoài ra, BGP có hai loại phiên kết nối:
- iBGP (Internal BGP): Neighbor cùng Autonomous System (AS).
- eBGP (External BGP): Neighbor thuộc AS khác.
Hiểu rõ sự khác biệt giữa hai loại phiên này sẽ giúp việc troubleshooting nhanh và chính xác hơn.
Kiểm tra trạng thái BGP Neighbor
Lệnh đầu tiên nên sử dụng là:
show bgp ipv4 unicast summary
(hoặc show ip bgp summary trên các phiên bản IOS cũ).
Đây là lệnh hiển thị ngắn gọn tình trạng của tất cả các BGP neighbor. Trong khi đó, show bgp ipv4 unicast neighbors cung cấp rất nhiều thông tin chi tiết và thường chỉ dùng khi cần phân tích sâu.
Ví dụ:
R1# show bgp ipv4 unicast summary
BGP router identifier 10.1.13.1, local AS number 65501
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.12.2 4 65502 16 16 1 0 0 00:11:25 0
10.1.13.3 4 65502 15 12 1 0 0 00:09:51 0
Hai neighbor đều thuộc AS 65502, trong khi R1 thuộc AS 65501, nên đây là các phiên eBGP.
Hãy tập trung vào cột State/PfxRcd:
- Nếu hiển thị một con số, phiên BGP đã được thiết lập thành công. Con số đó là số lượng prefix nhận được từ neighbor.
- Nếu hiển thị Idle, Active hoặc các trạng thái khác, phiên BGP chưa hình thành và cần tiếp tục kiểm tra.
Khi neighbor lên thành công, router cũng sinh ra bản tin Syslog như:
%BGP-5-ADJCHANGE: neighbor 10.1.12.2 Up
Các nguyên nhân phổ biến khiến BGP Neighbor không hình thành
Interface bị Down
Điều kiện đầu tiên là interface phải ở trạng thái up/up.
Kiểm tra bằng:
show ip interface brief
Mất kết nối Layer 3
Hai router phải ping được địa chỉ IP của nhau.
ping 10.1.12.2
Nếu ping thất bại, hãy kiểm tra IP, VLAN, routing hoặc ARP.
Chỉ đi được qua Default Route
Cisco khuyến nghị neighbor nên được học thông qua một route cụ thể, không chỉ dựa vào default route.
Kiểm tra:
show ip route
Neighbor không có đường quay lại
BGP sử dụng TCP nên cả hai router đều phải có route đến nhau. Chỉ một chiều có kết nối là chưa đủ.
Sai câu lệnh Neighbor
Đây là lỗi gặp nhiều nhất.
neighbor 10.1.12.2 remote-as 65502
Hãy kiểm tra:
- Địa chỉ IP neighbor.
- Giá trị remote-as.
Chỉ cần sai một trong hai, phiên BGP sẽ không thể hình thành.
ACL hoặc Firewall chặn TCP Port 179
BGP hoạt động trên TCP port 179. Nếu ACL hoặc Firewall chặn cổng này, phiên BGP sẽ thất bại.
Kiểm tra:
show access-lists
Gói BGP được gửi từ sai địa chỉ nguồn
Khi sử dụng Loopback để thiết lập neighbor, cần cấu hình:
neighbor x.x.x.x update-source Loopback0
Nếu không, router có thể gửi gói BGP từ interface vật lý và neighbor sẽ từ chối kết nối.
TTL của gói BGP hết hạn
Mặc định, eBGP sử dụng TTL = 1, nên hai router phải kết nối trực tiếp.
Nếu neighbor ở nhiều hop, cần cấu hình:
neighbor x.x.x.x ebgp-multihop 2
hoặc giá trị lớn hơn tùy khoảng cách.
Sai thông số Authentication
Nếu sử dụng xác thực MD5, cả hai router phải dùng cùng mật khẩu.
neighbor 10.1.12.2 password Cisco123
Peer Group cấu hình sai
Peer Group giúp đơn giản hóa cấu hình nhưng nếu khai báo sai, nhiều neighbor có thể đồng thời không lên hoặc không học được route.
Timer không tương thích
Thông thường Keepalive và Hold Timer không cần giống nhau. Tuy nhiên, nếu sử dụng các tùy chọn như minimum holdtime from neighbor, sự khác biệt về timer có thể khiến phiên BGP không được thiết lập.
Quy trình Troubleshooting đề xuất
Khi BGP Neighbor không lên, hãy kiểm tra theo thứ tự sau:
- Interface đã up/up chưa?
- Hai router có ping được nhau không?
- Cả hai có route đến nhau không?
- Cấu hình neighbor và remote-as có chính xác không?
- ACL hoặc Firewall có chặn TCP port 179 không?
- Có cần update-source khi dùng Loopback không?
- Có cần ebgp-multihop nếu neighbor không kết nối trực tiếp không?
- Kiểm tra Authentication, Peer Group và Timer.
- Cuối cùng, sử dụng show bgp ipv4 unicast summary, show bgp ipv4 unicast neighbors hoặc debug ip bgp (trong môi trường lab) để xác định nguyên nhân chi tiết.
Đây là quy trình troubleshooting chuẩn mà các kỹ sư CCNP Enterprise và CCIE Enterprise thường áp dụng để nhanh chóng xác định nguyên nhân khiến phiên BGP Neighbor không thể hình thành.