Sau khi BGP adjacency được thiết lập thành công, các BGP router bắt đầu trao đổi thông tin định tuyến với nhau. Tuy nhiên, trạng thái neighbor đã Established không có nghĩa là mọi route đều xuất hiện trong BGP Table hoặc được cài đặt vào Routing Table.
Khi troubleshooting BGP, cần phân biệt hai câu hỏi rất quan trọng:
Route có vào BGP Table không?
và
Route có được chọn để đưa vào Routing Table không? 1. Những nguyên nhân phổ biến khiến BGP route bị thiếu
Sai hoặc thiếu lệnh network
Muốn quảng bá một prefix bằng BGP, lệnh network phải khớp với route đang tồn tại trong Routing Table, bao gồm cả subnet mask.
Ví dụ:
router bgp 65001
network 10.10.10.0 mask 255.255.255.0
Router phải có route 10.10.10.0/24 trong Routing Table. Nếu chỉ tồn tại 10.10.10.0/25 thì BGP sẽ không originate 10.10.10.0/24 bằng lệnh trên.
BGP Next-Hop không reachable
Một BGP route có thể xuất hiện trong BGP Table nhưng không sử dụng được nếu router không tìm được đường đến địa chỉ Next Hop.
Kiểm tra:
show bgp ipv4 unicast
show ip route <next-hop>
Đây là lỗi rất thường gặp trong iBGP, đặc biệt khi route được học từ eBGP rồi quảng bá sang iBGP mà next-hop vẫn được giữ nguyên.
Một giải pháp thường gặp là:
neighbor 10.1.1.2 next-hop-self
Quy tắc BGP Split Horizon của iBGP
Một nguyên tắc cực kỳ quan trọng:
Ví dụ:
R1 ----iBGP---- R2 ----iBGP---- R3
Nếu R2 học route từ R1 qua iBGP, mặc định R2 không quảng bá route đó cho R3.
Trong mạng lớn, vấn đề này thường được giải quyết bằng iBGP Full Mesh hoặc Route Reflector (RR).
Có nguồn định tuyến tốt hơn
Một prefix có thể tồn tại trong BGP Table nhưng không được cài vào Routing Table nếu router đã học chính prefix đó từ một nguồn có Administrative Distance tốt hơn.
Ví dụ, cùng một prefix được học từ OSPF và iBGP:
OSPF = AD 110
iBGP = AD 200
Trong trường hợp này, route OSPF thường được ưu tiên đưa vào Routing Table.
Route Filtering
Prefix có thể bị chặn bởi các chính sách như:
prefix-list
route-map
filter-list
distribute-list
Do đó khi neighbor đã Established nhưng route vẫn mất, hãy kiểm tra cả policy theo hai chiều inbound và outbound. 2. Kiểm tra BGP Table
Lệnh quan trọng:
show bgp ipv4 unicast
Tương đương với lệnh truyền thống:
show ip bgp
Một route có thể xuất hiện trong BGP Table vì một trong các nguyên nhân: được BGP neighbor quảng bá tới, được đưa vào bằng network, được redistribute từ giao thức khác, hoặc được tạo thành aggregate/summary. 3. Đọc Next Hop và Origin Code
Nếu trong BGP Table:
Next Hop = 0.0.0.0
thì route được router cục bộ originate vào BGP.
Nếu Next Hop là một địa chỉ khác, chẳng hạn:
10.1.12.1
thì route thường được học từ một BGP peer.
Cuối cột Path, bạn cũng thường thấy Origin Code:
i
?
Trong đó:
i – IGP Origin: prefix được originate vào BGP bằng network hoặc cơ chế aggregate/summary phù hợp.
? – Incomplete: BGP không biết rõ nguồn gốc ban đầu theo cơ chế origin của BGP; trường hợp điển hình là route được đưa vào BGP bằng redistribution.
Lưu ý: chữ i ở Origin Code không có nghĩa route được học qua iBGP. Đây là hai khái niệm hoàn toàn khác nhau. 4. Quy trình troubleshooting nên nhớ
Khi neighbor đã Established nhưng không thấy route, có thể kiểm tra theo chuỗi:
Neighbor → BGP Table → Next Hop → Best Path → Routing Table → Filtering
Ví dụ:
show bgp ipv4 unicast summary
show bgp ipv4 unicast
show bgp ipv4 unicast 172.16.10.0/24
show ip route 172.16.10.0
show ip route <next-hop>
show running-config | section router bgp
Điểm quan trọng nhất khi troubleshooting BGP là: Established chỉ chứng minh hai router đã hình thành BGP session. Nó không chứng minh route đã được quảng bá, được chấp nhận, trở thành best path hay được cài vào Routing Table.
Đó là lý do kỹ sư mạng nên troubleshooting BGP theo từng lớp: Peer → Prefix → Next-Hop → Policy → Best Path → RIB.
Khi troubleshooting BGP, cần phân biệt hai câu hỏi rất quan trọng:
Route có vào BGP Table không?
và
Route có được chọn để đưa vào Routing Table không? 1. Những nguyên nhân phổ biến khiến BGP route bị thiếu
Sai hoặc thiếu lệnh network
Muốn quảng bá một prefix bằng BGP, lệnh network phải khớp với route đang tồn tại trong Routing Table, bao gồm cả subnet mask.
Ví dụ:
router bgp 65001
network 10.10.10.0 mask 255.255.255.0
Router phải có route 10.10.10.0/24 trong Routing Table. Nếu chỉ tồn tại 10.10.10.0/25 thì BGP sẽ không originate 10.10.10.0/24 bằng lệnh trên.
BGP Next-Hop không reachable
Một BGP route có thể xuất hiện trong BGP Table nhưng không sử dụng được nếu router không tìm được đường đến địa chỉ Next Hop.
Kiểm tra:
show bgp ipv4 unicast
show ip route <next-hop>
Đây là lỗi rất thường gặp trong iBGP, đặc biệt khi route được học từ eBGP rồi quảng bá sang iBGP mà next-hop vẫn được giữ nguyên.
Một giải pháp thường gặp là:
neighbor 10.1.1.2 next-hop-self
Quy tắc BGP Split Horizon của iBGP
Một nguyên tắc cực kỳ quan trọng:
Route học từ một iBGP peer sẽ không được quảng bá tiếp cho một iBGP peer khác.
Ví dụ:
R1 ----iBGP---- R2 ----iBGP---- R3
Nếu R2 học route từ R1 qua iBGP, mặc định R2 không quảng bá route đó cho R3.
Trong mạng lớn, vấn đề này thường được giải quyết bằng iBGP Full Mesh hoặc Route Reflector (RR).
Có nguồn định tuyến tốt hơn
Một prefix có thể tồn tại trong BGP Table nhưng không được cài vào Routing Table nếu router đã học chính prefix đó từ một nguồn có Administrative Distance tốt hơn.
Ví dụ, cùng một prefix được học từ OSPF và iBGP:
OSPF = AD 110
iBGP = AD 200
Trong trường hợp này, route OSPF thường được ưu tiên đưa vào Routing Table.
Route Filtering
Prefix có thể bị chặn bởi các chính sách như:
prefix-list
route-map
filter-list
distribute-list
Do đó khi neighbor đã Established nhưng route vẫn mất, hãy kiểm tra cả policy theo hai chiều inbound và outbound. 2. Kiểm tra BGP Table
Lệnh quan trọng:
show bgp ipv4 unicast
Tương đương với lệnh truyền thống:
show ip bgp
Một route có thể xuất hiện trong BGP Table vì một trong các nguyên nhân: được BGP neighbor quảng bá tới, được đưa vào bằng network, được redistribute từ giao thức khác, hoặc được tạo thành aggregate/summary. 3. Đọc Next Hop và Origin Code
Nếu trong BGP Table:
Next Hop = 0.0.0.0
thì route được router cục bộ originate vào BGP.
Nếu Next Hop là một địa chỉ khác, chẳng hạn:
10.1.12.1
thì route thường được học từ một BGP peer.
Cuối cột Path, bạn cũng thường thấy Origin Code:
i
?
Trong đó:
i – IGP Origin: prefix được originate vào BGP bằng network hoặc cơ chế aggregate/summary phù hợp.
? – Incomplete: BGP không biết rõ nguồn gốc ban đầu theo cơ chế origin của BGP; trường hợp điển hình là route được đưa vào BGP bằng redistribution.
Lưu ý: chữ i ở Origin Code không có nghĩa route được học qua iBGP. Đây là hai khái niệm hoàn toàn khác nhau. 4. Quy trình troubleshooting nên nhớ
Khi neighbor đã Established nhưng không thấy route, có thể kiểm tra theo chuỗi:
Neighbor → BGP Table → Next Hop → Best Path → Routing Table → Filtering
Ví dụ:
show bgp ipv4 unicast summary
show bgp ipv4 unicast
show bgp ipv4 unicast 172.16.10.0/24
show ip route 172.16.10.0
show ip route <next-hop>
show running-config | section router bgp
Điểm quan trọng nhất khi troubleshooting BGP là: Established chỉ chứng minh hai router đã hình thành BGP session. Nó không chứng minh route đã được quảng bá, được chấp nhận, trở thành best path hay được cài vào Routing Table.
Đó là lý do kỹ sư mạng nên troubleshooting BGP theo từng lớp: Peer → Prefix → Next-Hop → Policy → Best Path → RIB.