Mặc định BGP chỉ quảng bá một best path cho mỗi prefix. Route reflector (RR) chọn best path theo góc nhìn của nó rồi chỉ reflect path đó, nên client mất thông tin về path thứ hai. Hệ quả: khi PE đang là next-hop hỏng, client phải chờ RR chọn và gửi lại path mới, rồi mới cập nhật lại FIB cho hàng trăm nghìn prefix. Add-Path giải quyết phần "thiếu path", PIC (Prefix Independent Convergence) giải quyết phần "cập nhật FIB chậm".
Luồng hội tụ khi PE1 hỏng
flowchart LR PE1["PE1 (next-hop chính)"] -.->|"down"| R["PE-xa"] PE2["PE2 (next-hop backup)"] --> R R --> F["FIB: primary PE1, backup PE2"] F -->|"IGP báo PE1 mất"| S["Đổi 1 pointer sang PE2"]
Khi IGP báo loopback của PE1 mất, router chỉ cần đổi next-hop đã dựng sẵn (một thao tác theo BGP path-list / pointer), không phải ghi lại từng prefix. Thời gian hội tụ vì thế gần như không phụ thuộc số prefix.
Add-Path và PIC khác nhau thế nào
| Tiêu chí | BGP Add-Path (RFC 7911) | BGP PIC (edge/core) |
|---|---|---|
| Giải quyết | Router không biết path thứ hai | Có path thứ hai nhưng đổi FIB chậm |
| Hoạt động ở | Control plane (quảng bá giữa các speaker) | Data plane (FIB hierarchical, backup next-hop) |
| Cần thoả thuận capability | Có, hai bên bật send/receive |
Không, chỉ cấu hình cục bộ |
| Tiền đề | Mỗi path có path-id riêng trong UPDATE | Phải có ít nhất hai path hợp lệ trong BGP table |
| Thường dùng cùng nhau | Có: Add-Path đưa path backup tới PE, PIC dựng backup trong FIB |
Hai khái niệm PIC:
- PIC core: next-hop BGP (loopback PE) vẫn còn nhưng đường IGP tới nó đổi hoặc mất một nhánh ECMP. FIB có sẵn đường IGP backup (ví dụ nhờ TI-LFA), tất cả prefix dùng chung next-hop nên đổi cùng lúc.
- PIC edge: mất hẳn PE/next-hop BGP chính (hoặc link eBGP). Router đổi sang path BGP backup đã có sẵn. Cần path backup trong BGP table, thường nhờ Add-Path, best-external hoặc RD khác nhau mỗi PE trong L3VPN.
Cách có path backup trong BGP table
| Cách | Mô tả | Lưu ý |
|---|---|---|
| RD duy nhất mỗi PE (VPN) | Mỗi PE dùng RD khác nhau nên RR coi là prefix khác, reflect cả hai | Tốn bộ nhớ RR theo số PE, nhưng không cần capability mới |
| Add-Path | RR/ASBR quảng bá thêm path (best + backup hoặc tất cả) | Cần cả hai phía hỗ trợ, tăng số route trong BGP table |
| Best-external | PE có path eBGP tốt nhất nhưng đang chọn path iBGP vẫn quảng bá path eBGP | Chỉ phủ trường hợp PE ở biên |
| Multipath | Cả hai path active (ECMP), mất một thì còn một | Chỉ khi attribute đủ giống nhau |
Add-Path làm số path trong BGP table nhân lên. Đừng bật all paths cho toàn bộ bảng định tuyến Internet. Giới hạn theo số path (path-count hoặc policy chỉ chọn một backup) và theo prefix cần bảo vệ.
Cấu hình cơ bản
IOS XR – Add-Path
route-policy ADDPATH-BACKUP
set path-selection backup 1 advertise
end-policy
!
router bgp 65000
address-family ipv4 unicast
additional-paths receive
additional-paths send
additional-paths selection route-policy ADDPATH-BACKUP
!
neighbor 192.0.2.2
remote-as 65000
update-source Loopback0
address-family ipv4 unicast
additional-paths receive
additional-paths send
!
!
!Policy set path-selection có các kiểu thường gặp: backup N, all, group-best; kèm từ khoá advertise (quảng bá path đó cho peer) và install (cài path vào RIB/FIB làm backup). Kiểm tra bằng show bgp ipv4 unicast 203.0.113.0/24 (xem nhiều path và nhãn backup) và show bgp neighbors 192.0.2.2 (capability Additional-paths đã thoả thuận).
Junos – Add-Path
set protocols bgp group IBGP type internal
set protocols bgp group IBGP local-address 192.0.2.1
set protocols bgp group IBGP family inet unicast add-path receive
set protocols bgp group IBGP family inet unicast add-path send path-count 2path-count là số path tối đa gửi cho mỗi prefix. Ngoài ra Junos có path-selection-mode (all-paths hoặc equal-cost-paths) và prefix-policy để chỉ áp cho một số prefix. Kiểm tra: show bgp neighbor 192.0.2.2 (dòng Addpath), show route 203.0.113.0/24 extensive.
PIC trên thiết bị
PIC chủ yếu là hành vi của forwarding plane và phụ thuộc phần cứng, phiên bản:
- IOS XR: BGP PIC edge/core thường có sẵn trên các nền tảng hỗ trợ (CEF hierarchical,
BGP path-list), điều kiện chính là phải có path backup trong BGP. Kiểm tra bằngshow cef 203.0.113.0/24 detail(có entry backup) vàshow bgp 203.0.113.0/24(path đánh dấu backup). - Junos: bật protection bằng
set routing-options protect core(và tương ứng trong routing-instance cho VPN), cần thiết khi chạy PIC. Xemshow route 203.0.113.0/24 extensive(next-hopIndirectvàNext hopcó backup).
Kiểm tra kết quả bằng cách ngắt thử next-hop chính trong lab (shutdown loopback PE1 hoặc link), chạy ping/iperf liên tục tới prefix, đếm số gói mất.
Khi nào dùng
- Backbone có RR, mỗi prefix có từ hai PE trở lên nhận (multi-homing, dual-PE L3VPN, ASBR kép): bật Add-Path giới hạn (
backup 1hoặcpath-count 2) để client biết path thứ hai. - Bảng route lớn (hàng trăm nghìn prefix trở lên) và yêu cầu hội tụ dưới 1 giây: dùng PIC kết hợp BFD để phát hiện mất next-hop nhanh.
- Không cần khi mạng nhỏ, hội tụ vài giây vẫn chấp nhận được, hoặc RR/PE chưa hỗ trợ capability (Add-Path cần hai phía). Hãy kiểm tra phiên bản phần mềm và license trước khi bật.
- Troubleshooting thêm: BGP session không lên, không nhận route.