Tóm tắt: Mỗi khách hàng một VRF (XR vrf, Junos routing-instances ... instance-type vrf). RD làm route VPN duy nhất, RT quyết định import/export. PE trao đổi route VPNv4 qua iBGP (thường qua RR), next-hop là loopback PE và phải có LSP (LDP hoặc SR-MPLS) tới đó.
Topo ví dụ: PE1 (IOS XR, lo 192.0.2.1) và PE2 (Junos, lo 192.0.2.2) peer VPNv4 với RR 192.0.2.10, AS 64500. Khách hàng CUST-A, RD/RT 64500:100, hai site CE dùng AS 65001.
Luồng hoạt động
flowchart LR CE1["CE1 AS65001"] -->|"eBGP IPv4"| PE1["PE1 IOS XR VRF CUST-A"] PE1 -->|"VPNv4 RD 64500:100 RT export"| RR["RR 192.0.2.10"] RR -->|VPNv4| PE2["PE2 Junos VRF CUST-A"] PE2 -->|"eBGP IPv4"| CE2["CE2 AS65001"] PE1 -.-|"LSP LDP/SR"| PE2
Gói dữ liệu từ CE2 sang CE1 mang hai label: transport label (tới loopback PE1) ở ngoài và VPN label (do PE1 cấp cho prefix/VRF) ở trong.
Cấu hình
IOS XR (PE1)
vrf CUST-A
address-family ipv4 unicast
import route-target
64500:100
!
export route-target
64500:100
!
!
!
interface GigabitEthernet0/0/0/1
vrf CUST-A
ipv4 address 198.51.100.1 255.255.255.252
!
route-policy PASS
pass
end-policy
!
router bgp 64500
bgp router-id 192.0.2.1
address-family vpnv4 unicast
!
neighbor 192.0.2.10
remote-as 64500
update-source Loopback0
address-family vpnv4 unicast
!
!
vrf CUST-A
rd 64500:100
address-family ipv4 unicast
label mode per-vrf
!
neighbor 198.51.100.2
remote-as 65001
address-family ipv4 unicast
route-policy PASS in
route-policy PASS out
as-override
!
!
!
!Junos (PE2)
set interfaces ge-0/0/1 unit 0 family inet address 198.51.100.5/30
set routing-instances CUST-A instance-type vrf
set routing-instances CUST-A interface ge-0/0/1.0
set routing-instances CUST-A route-distinguisher 64500:100
set routing-instances CUST-A vrf-target target:64500:100
set routing-instances CUST-A vrf-table-label
set routing-instances CUST-A protocols bgp group CE type external
set routing-instances CUST-A protocols bgp group CE peer-as 65001
set routing-instances CUST-A protocols bgp group CE as-override
set routing-instances CUST-A protocols bgp group CE neighbor 198.51.100.6
set protocols bgp group RR type internal
set protocols bgp group RR local-address 192.0.2.2
set protocols bgp group RR family inet unicast
set protocols bgp group RR family inet-vpn unicast
set protocols bgp group RR neighbor 192.0.2.10PE trong lab dùng chung RD cho mọi site là đủ. Trong production nên dùng RD riêng cho mỗi PE (ví dụ 192.0.2.1:100) để RR không gộp path, CE multihomed có đường dự phòng sẵn trên PE xa.
Ghi chú thiết kế
| Mục | IOS XR | Junos |
|---|---|---|
| RT import/export khác nhau (hub-spoke, extranet) | import route-target / export route-target riêng |
vrf-import / vrf-export policy với community ... members target:... thay cho vrf-target |
| Một label cho cả VRF | label mode per-vrf |
vrf-table-label |
| Hai site CE cùng AS | as-override trên PE (hoặc allowas-in trên CE) |
as-override trong group CE |
| Policy eBGP với CE | Bắt buộc route-policy in/out (RFC 8212) |
Không bắt buộc, nên có import/export |
Lệnh kiểm tra
| Mục đích | IOS XR | Junos |
|---|---|---|
| VRF và interface | show vrf CUST-A detail |
show route instance CUST-A detail |
| Session PE-CE | show bgp vrf CUST-A summary |
show bgp summary instance CUST-A |
| Session VPNv4 với RR | show bgp vpnv4 unicast summary |
show bgp summary |
| Route trong VRF | show route vrf CUST-A |
show route table CUST-A.inet.0 |
| Route VPNv4 theo RD | show bgp vpnv4 unicast rd 64500:100 |
show route table bgp.l3vpn.0 |
| Label của một prefix VPN | show bgp vpnv4 unicast rd 64500:100 203.0.113.0/24 |
show route table CUST-A.inet.0 203.0.113.0/24 extensive |
| FIB/label stack thực tế | show cef vrf CUST-A 203.0.113.0/24 |
dòng trên đã có Label operation và next-hop |
| LSP tới PE xa | show mpls forwarding prefix 192.0.2.2/32 |
show route table inet.3 192.0.2.1/32 |
| Ping trong VRF | ping vrf CUST-A 198.51.100.2 |
ping routing-instance CUST-A 198.51.100.6 |
Lỗi thường gặp
| Triệu chứng | Nguyên nhân | Cách xử lý |
|---|---|---|
Junos: route VPN nằm trong bgp.l3vpn.0 ở dạng hidden |
Không có route tới next-hop PE trong inet.3 (thiếu LDP/SR/RSVP) |
show route table bgp.l3vpn.0 hidden extensive; kiểm tra inet.3 |
| XR: route VPNv4 có nhưng không vào VRF | RT import không khớp RT export của PE kia | show bgp vpnv4 unicast rd ... <prefix> xem Extended community: RT: |
Junos: mất IPv4 unicast trên iBGP sau khi thêm family inet-vpn |
Khai family tường minh thì Junos chỉ chạy các family được liệt kê |
Thêm family inet unicast |
| CE site B không nhận route site A | Cùng AS 65001, CE loại route có AS của mình | as-override trên PE hoặc allowas-in trên CE |
| XR: session PE-CE lên nhưng 0 prefix | Thiếu route-policy in/out cho eBGP |
Gắn policy, clear bgp vrf CUST-A ipv4 unicast 198.51.100.2 soft |
| Ping trong VRF được, traffic lớn rớt | MTU core không đủ cho 2 label (+8 byte) | Tăng MTU core |
| Ping PE-CE từ global table thất bại | Quên chỉ định VRF | ping vrf / ping routing-instance |
Tham khảo
- RFC 4364: BGP/MPLS IP VPNs
- Lệnh BGP chung: BGP CLI cheatsheet
- Khi session không lên: BGP troubleshooting