Triệu chứng chính: show bgp summary thấy neighbor ở Idle, Active, Connect hoặc nhảy OpenSent liên tục; hoặc session Established nhưng nhận/gửi 0 prefix; hoặc session tự down kèm log maximum prefix.
Lỗi thường gặp
| Triệu chứng | Nguyên nhân | Cách xử lý |
|---|---|---|
Idle, không thử kết nối |
Neighbor bị shutdown/deactivate, không có route tới địa chỉ peer, hoặc đang chờ sau max-prefix |
show route 198.51.100.2; XR bỏ shutdown; Junos show configuration protocols bgp xem có inactive: |
Active / Connect kéo dài |
TCP/179 không thành: sai IP peer, ACL/filter lo0 chặn, thiếu update-source / local-address khi peer bằng loopback |
Ping từ chính source IP; XR update-source Loopback0; Junos local-address 192.0.2.1; kiểm tra filter lo0 / LPTS |
| eBGP qua loopback không lên | TTL eBGP mặc định 1 | XR ebgp-multihop 2; Junos multihop ttl 2 |
Nhảy OpenSent → Idle, log bad peer AS |
Sai remote-as / peer-as (NOTIFICATION 2/2) |
Đối chiếu ASN hai bên, chú ý local-as |
| NOTIFICATION 4/0 Hold timer expired | Mất keepalive: link nghẽn, CPU cao, MTU path chặn update lớn | Kiểm tra drop trên link, MSS/MTU; cân nhắc BFD thay vì giảm hold-time |
| Session lên rồi rớt ngay khi gửi update lớn | MTU mismatch, TCP segment lớn bị drop | Ping size lớn + do-not-fragment; xem BFD, LAG, MTU |
| Lỗi xác thực, không có log rõ | MD5/TCP-AO sai hoặc chỉ cấu hình một bên | XR password / Junos authentication-key khớp hai bên |
| XR: eBGP Established nhưng 0 prefix nhận/gửi | IOS XR không nhận/gửi gì với eBGP khi thiếu route-policy in/out (RFC 8212) |
Gắn route-policy ... in và ... out dưới address-family của neighbor |
| Nhận route nhưng không thành best/không vào RIB | Next-hop không resolve (iBGP thiếu next-hop-self), AS_PATH chứa AS của mình |
XR show bgp ... 203.0.113.0/24; Junos show route ... hidden extensive xem Next hop type: Unusable |
Junos: route nằm trong hidden |
Import policy reject, next-hop không resolve, AS loop |
show route receive-protocol bgp 198.51.100.2 hidden detail; test policy ISP-A-IN 203.0.113.0/24 |
| Không gửi prefix của mình ra ngoài | Prefix không có trong RIB (BGP chỉ quảng bá route đang có), export policy không match | XR kiểm network + show route; Junos cần static discard + term export match |
Session down, log maximum prefix (NOTIFICATION 6/1) |
Peer gửi vượt maximum-prefix / prefix-limit |
Liên hệ peer; tăng limit; XR clear bgp ipv4 unicast 198.51.100.2; Junos clear bgp neighbor 198.51.100.2 |
| Sửa policy nhưng route không đổi (XR) | Chưa yêu cầu route-refresh | clear bgp ipv4 unicast 198.51.100.2 soft in |
Các bước khoanh vùng
flowchart TD A["show bgp summary"] --> B{"State?"} B -->|Idle/Active/Connect| C["Ping peer từ source IP, kiểm ACL/TTL/update-source"] B -->|OpenSent lặp| D["Xem NOTIFICATION: AS, auth, capability"] B -->|Established| E{"Có prefix?"} E -->|Không| F["Kiểm route-policy in/out, max-prefix"] E -->|Có nhưng không active| G["Kiểm next-hop, hidden routes, best path"]
- Xem state và lý do reset gần nhất: XR
show bgp neighbor 198.51.100.2(dòngLast reset), Junosshow bgp neighbor 198.51.100.2(dòngLast error,Last State). - Session chưa lên: kiểm tra lớp IP/TCP trước (route, ping từ đúng source, filter), sau đó mới tới cấu hình BGP.
- Session lên nhưng thiếu route: so route nhận trước và sau policy, rồi đọc policy. Lệnh đầy đủ ở BGP CLI cheatsheet.
Cấu hình đúng
eBGP tới upstream có policy hai chiều và max-prefix.
! IOS XR
prefix-set OUR-PREFIXES
203.0.113.0/24
end-set
!
route-policy ISP-A-IN
if destination in (0.0.0.0/0 le 7, 0.0.0.0/0 ge 25) then
drop
endif
pass
end-policy
!
route-policy ISP-A-OUT
if destination in OUR-PREFIXES then
pass
else
drop
endif
end-policy
!
router bgp 64500
bgp router-id 192.0.2.1
address-family ipv4 unicast
network 203.0.113.0/24
!
neighbor 198.51.100.2
remote-as 64510
description ISP-A
address-family ipv4 unicast
route-policy ISP-A-IN in
route-policy ISP-A-OUT out
maximum-prefix 1000 80 restart 15
!
!
!
router static
address-family ipv4 unicast
203.0.113.0/24 Null0# Junos
set routing-options autonomous-system 64500
set routing-options router-id 192.0.2.1
set routing-options static route 203.0.113.0/24 discard
set policy-options prefix-list OUR-PREFIXES 203.0.113.0/24
set policy-options policy-statement ISP-A-IN term BOGON-LEN from route-filter 0.0.0.0/0 upto /7
set policy-options policy-statement ISP-A-IN term BOGON-LEN from route-filter 0.0.0.0/0 prefix-length-range /25-/32
set policy-options policy-statement ISP-A-IN term BOGON-LEN then reject
set policy-options policy-statement ISP-A-IN term ACCEPT then accept
set policy-options policy-statement ISP-A-OUT term OURS from prefix-list OUR-PREFIXES
set policy-options policy-statement ISP-A-OUT term OURS then accept
set policy-options policy-statement ISP-A-OUT term REST then reject
set protocols bgp group ISP-A type external
set protocols bgp group ISP-A peer-as 64510
set protocols bgp group ISP-A import ISP-A-IN
set protocols bgp group ISP-A export ISP-A-OUT
set protocols bgp group ISP-A neighbor 198.51.100.2 family inet unicast prefix-limit maximum 1000
set protocols bgp group ISP-A neighbor 198.51.100.2 family inet unicast prefix-limit teardown 80 idle-timeout 15restart 15 (XR) và idle-timeout 15 (Junos) tính bằng phút: session tự thử lại sau 15 phút. Bỏ đi thì phải clear bằng tay. Chỉ muốn cảnh báo mà không cắt session: XR maximum-prefix 1000 80 warning-only, Junos bỏ teardown (chỉ log khi vượt maximum).
Kiểm tra nhanh
! IOS XR
show bgp ipv4 unicast summary
show bgp neighbor 198.51.100.2 | include "BGP state|Last reset|Maximum prefixes"
show bgp ipv4 unicast neighbor 198.51.100.2 routes
show bgp ipv4 unicast neighbor 198.51.100.2 advertised-routes
show bgp ipv4 unicast 203.0.113.0/24 bestpath-compare
show rpl route-policy ISP-A-IN# Junos
show bgp summary
show bgp neighbor 198.51.100.2 | match "State|Last error|Prefix"
show route receive-protocol bgp 198.51.100.2
show route receive-protocol bgp 198.51.100.2 hidden detail
show route advertising-protocol bgp 198.51.100.2
test policy ISP-A-IN 203.0.113.0/24