Inter-AS Option C connects an L3VPN across two providers without a VPN session between the ASBRs. The ASBRs exchange labelled PE and route reflector loopbacks over eBGP, and the route reflectors of the two providers exchange the VPN routes over a multihop eBGP session. The LSP runs from PE to PE through both providers, and the VPN label allocated by the far PE reaches it unchanged.
CustD is a new customer with two sites. We simulate them without adding dedicated CE routers: a loopback in VRF CustD on A-PE1 in SP-A stands for one site, and a loopback in the same VRF on B-PE2 in SP-B stands for the other. In this stage, A-ASBR and B-ASBR exchange the labelled PE and route reflector loopbacks over a third sub-interface on the link from the Option A post, and A-RR and B-RR exchange CustD’s routes.
At the end of the stage, A-PE1’s traceroute to B-PE2’s CustD loopback looks as below:
A-PE1#traceroute vrf CustD 10.40.0.2 source lo40
Type escape sequence to abort.
Tracing the route to 10.40.0.2
VRF info: (vrf in name/id, vrf out name/id)
1 10.1.1.21 [MPLS: Labels 17800/1813/24018 Exp 0] 4 msec 4 msec 3 msec
2 10.1.1.42 [MPLS: Labels 1813/24018 Exp 0] 3 msec 3 msec 4 msec
3 10.255.0.10 [MPLS: Labels 24/24018 Exp 0] 3 msec 3 msec 3 msec
4 10.2.1.41 [MPLS: Labels 16600/24018 Exp 0] 3 msec 4 msec 3 msec
5 10.2.1.14 [MPLS: Labels 16600/24018 Exp 0] 3 msec 3 msec *
6 *
10.2.1.30 15 msec *
A-PE1#
Topology file: topology.clab.yml · Addressing: ipam.md · Stage configs, 6 nodes (A-PE1, B-PE2, A-ASBR, B-ASBR, A-RR, B-RR): stage_configs/lab04-s2-interas-optc/
VRF CustD on the PEs
Each PE has VRF CustD with a Loopback40 in it and redistributes the loopback into BGP. A-PE1:
vrf definition CustD
rd 10.1.0.5:40
!
address-family ipv4
route-target export 64501:40
route-target import 64501:40
route-target import 64502:40
exit-address-family
!
address-family ipv6
route-target export 64501:40
route-target import 64501:40
route-target import 64502:40
exit-address-family
!
interface Loopback40
vrf forwarding CustD
ip address 10.40.0.1 255.255.255.255
ipv6 address 2001:DB8:40::1/128
!
router bgp 64501
address-family ipv4 vrf CustD
redistribute connected
exit-address-family
!
address-family ipv6 vrf CustD
redistribute connected
exit-address-family
!
B-PE2 has the same in IOS-XR form, with the route distinguisher under router bgp:
vrf CustD
address-family ipv4 unicast
import route-target
64501:40
64502:40
!
export route-target
64502:40
!
!
address-family ipv6 unicast
import route-target
64501:40
64502:40
!
export route-target
64502:40
!
!
!
interface Loopback40
vrf CustD
ipv4 address 10.40.0.2 255.255.255.255
ipv6 address 2001:db8:40::2/128
!
router bgp 64502
vrf CustD
rd 10.2.0.6:40
address-family ipv4 unicast
redistribute connected
!
address-family ipv6 unicast
redistribute connected
!
!
!
Each PE exports the route target of its own provider and imports both. In the Option B post, the ASBRs rewrite CustA’s route target between the providers. CustD’s route targets cross unchanged.
Labelled Loopbacks Between the ASBRs
The ASBRs peer over Gi4.254, a dot1Q sub-interface in the global table. A-ASBR:
interface GigabitEthernet4.254
encapsulation dot1Q 254
ip address 10.255.0.9 255.255.255.252
ipv6 address 2001:DB8:FF:FE::1/64
!
ip prefix-list PL-SPA-LU-EXPORT seq 5 permit 10.1.0.5/32
ip prefix-list PL-SPA-LU-EXPORT seq 10 permit 10.1.0.7/32
!
route-map RM-LU-OUT permit 10
match ip address prefix-list PL-SPA-LU-EXPORT
set mpls-label
!
router bgp 64501
neighbor 10.255.0.10 remote-as 64502
!
address-family ipv4
neighbor 10.255.0.10 activate
neighbor 10.255.0.10 route-map RM-LU-OUT out
neighbor 10.255.0.10 send-label
exit-address-family
!
router bgp 64501
address-family ipv4
neighbor 10.1.0.7 next-hop-self
exit-address-family
!
send-label makes this eBGP session carry labels, and set mpls-label in the route map sends the permitted routes with a label. The prefix list permits two loopbacks: 10.1.0.5, A-PE1, the next hop of its VPN routes, and 10.1.0.7, A-RR, one end of the session between the route reflectors. B-ASBR has the same configuration for B-PE2’s loopback, 10.2.0.6, and B-RR’s, 10.2.0.7.
A-ASBR learns SP-B’s loopbacks with next hop 10.255.0.10, an address that is not in SP-A’s OSPF. next-hop-self on the session to A-RR changes the next hop to A-ASBR’s loopback, 10.1.0.8.
As on Gi4.255 in the Option B post, IOS-XE adds mpls bgp forwarding to Gi4.254 by itself when the labelled eBGP session comes up:
A-ASBR#show run int gi4.254
Building configuration...
Current configuration : 158 bytes
!
interface GigabitEthernet4.254
encapsulation dot1Q 254
ip address 10.255.0.9 255.255.255.252
ipv6 address 2001:DB8:FF:FE::1/64
mpls bgp forwarding
end
A-ASBR’s labelled unicast table has B-PE2’s and B-RR’s loopbacks from 10.255.0.10:
A-ASBR#show bgp ipv4 unicast labels
Network Next Hop In label/Out label
10.1.0.5/32 10.1.0.5 1807/imp-null
10.1.0.6/32 10.1.0.6 nolabel/imp-null
10.1.0.7/32 10.1.0.7 1809/imp-null
10.1.0.8/32 0.0.0.0 imp-null/nolabel
10.2.0.6/32 10.255.0.10 1813/24
10.2.0.7/32 10.255.0.10 1810/37
B-ASBR’s has A-PE1’s and A-RR’s from 10.255.0.9:
B-ASBR#show bgp ipv4 unicast labels
Network Next Hop In label/Out label
10.1.0.5/32 10.255.0.9 31/1807
10.1.0.7/32 10.255.0.9 36/1809
10.2.0.5/32 10.2.0.5 nolabel/imp-null
10.2.0.6/32 10.2.0.6 24/imp-null
10.2.0.7/32 10.2.0.7 37/imp-null
10.2.0.8/32 0.0.0.0 imp-null/nolabel
For B-PE2’s loopback, 10.2.0.6, the Out label on A-ASBR is 24, the In label on B-ASBR. The Out label on B-ASBR is imp-null, the label B-PE2 advertised for itself. A-PE2’s loopback, 10.1.0.6, is not in A-ASBR’s prefix list, so A-ASBR does not advertise it with itself as the next hop, and its In label is nolabel.
The Route Reflectors
The session between A-RR and B-RR runs between their loopbacks, so each loopback has to be reachable from the other provider. In the previous post, the route reflectors originated no prefixes. In this stage, each one advertises its own loopback. A-RR:
router bgp 64501
address-family ipv4 unicast
network 10.1.0.7/32
B-RR has the same line for 10.2.0.7. IOS-XR sends a prefix as labelled unicast only when the prefix has a local label, so this line needs allocate-label all from the previous post. In a later test, A-RR without allocate-label all removed 10.1.0.7/32 from its labelled unicast table, and the session to B-RR came back only after the line was restored.
A-RR’s session to B-RR uses two route policies:
route-policy PASS
pass
end-policy
!
extcommunity-set rt RT_CUSTD
64501:40,
64502:40
end-set
!
route-policy SCOPE_CUSTD_OUT
if extcommunity rt matches-any RT_CUSTD then
pass
else
drop
endif
end-policy
Below is A-RR’s neighbour configuration. B-RR has the same toward A-RR:
RP/0/RP0/CPU0:A-RR#show run router bgp 64501 neigh 10.2.0.7
Tue Aug 4 13:14:53.723 UTC
router bgp 64501
neighbor 10.2.0.7
remote-as 64502
ebgp-multihop 255
update-source Loopback0
address-family vpnv4 unicast
route-policy PASS in
route-policy SCOPE_CUSTD_OUT out
next-hop-unchanged
!
address-family vpnv6 unicast
route-policy PASS in
route-policy SCOPE_CUSTD_OUT out
next-hop-unchanged
!
!
!
ebgp-multihop allows an eBGP peer more than one hop away. 255 is the maximum TTL, and any value that covers the path would work. VPNv6 runs on the same IPv4 session, as in the Option B post.
By default, IOS-XR drops routes on an eBGP session in a direction with no route policy, so PASS is applied inbound. Outbound, SCOPE_CUSTD_OUT sends only the routes with CustD’s route targets, so CustA stays on Option B and CustC on Option A.
next-hop-unchanged keeps the PE’s loopback as the next hop of the VPN routes. By default, eBGP changes the next hop to the route reflector, and traffic would go through it.
A-RR receives one route per address family from B-RR, 10.2.0.7. The sessions to its three clients did not restart, because adding a neighbour changes no capability on them:
! trimmed to the timestamps and the neighbour tables
RP/0/RP0/CPU0:A-RR#show bgp vpnv4 unicast sum
Tue Aug 4 13:14:15.690 UTC
Neighbor Spk AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down St/PfxRcd
10.1.0.5 0 64501 30690 28145 136 0 0 1w1d 3
10.1.0.6 0 64501 30718 28111 136 0 0 1w1d 3
10.1.0.8 0 64501 30719 28001 136 0 0 1w1d 4
10.2.0.7 0 64502 7080 7080 136 0 0 4d21h 1
RP/0/RP0/CPU0:A-RR#show bgp vpnv6 unicast sum
Tue Aug 4 13:14:23.080 UTC
Neighbor Spk AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down St/PfxRcd
10.1.0.5 0 64501 30690 28146 98 0 0 1w1d 2
10.1.0.6 0 64501 30718 28112 98 0 0 1w1d 2
10.1.0.8 0 64501 30720 28002 98 0 0 1w1d 4
10.2.0.7 0 64502 7081 7080 98 0 0 4d21h 1
A-PE1 has B-PE2’s routes with B-PE2’s loopback, 10.2.0.6, as the next hop, and IOS-XE prints the IPv6 next hop as an IPv4-mapped address:
A-PE1#show bgp vpnv4 unicast vrf CustD 10.40.0.2/32
BGP routing table entry for 10.1.0.5:40:10.40.0.2/32, version 180
Paths: (1 available, best #1, table CustD)
Flag: 0x100
Not advertised to any peer
Refresh Epoch 1
64502, imported path from 10.2.0.6:40:10.40.0.2/32 (global)
10.2.0.6 (metric 3) (via default) from 10.1.0.7 (10.1.0.7)
Origin incomplete, localpref 100, valid, internal, best
Extended Community: RT:64502:40
mpls labels in/out nolabel/24018
rx pathid: 0, tx pathid: 0x0
A-PE1#show bgp vpnv6 unicast vrf CustD 2001:db8:40::2/128
BGP routing table entry for [10.1.0.5:40]2001:DB8:40::2/128, version 115
Paths: (1 available, best #1, table CustD)
Flag: 0x100
Not advertised to any peer
Refresh Epoch 1
64502, imported path from [10.2.0.6:40]2001:DB8:40::2/128 (global)
::FFFF:10.2.0.6 (metric 3) (via default) from 10.1.0.7 (10.1.0.7)
Origin incomplete, localpref 100, valid, internal, best
Extended Community: RT:64502:40
mpls labels in/out nolabel/24017
rx pathid: 0, tx pathid: 0x0
B-PE2 has A-PE1’s routes with A-PE1’s loopback, 10.1.0.5, as the next hop, and IOS-XR prints the IPv6 next hop as a plain IPv4 address:
! trimmed to the timestamps and the paths
RP/0/RP0/CPU0:B-PE2#show bgp vpnv4 unicast vrf CustD 10.40.0.1/32
Tue Aug 4 13:16:45.136 UTC
BGP routing table entry for 10.40.0.1/32, Route Distinguisher: 10.2.0.6:40
64501
10.1.0.5 (metric 20) from 10.2.0.7 (10.2.0.7)
Received Label 1523
Origin incomplete, localpref 100, valid, internal, best, group-best, import-candidate, imported
Received Path ID 0, Local Path ID 1, version 68
Extended community: RT:64501:40
Source AFI: VPNv4 Unicast, Source VRF: default, Source Route Distinguisher: 10.1.0.5:40
RP/0/RP0/CPU0:B-PE2#show bgp vpnv6 unicast vrf CustD 2001:db8:40::1/128
Tue Aug 4 13:17:06.609 UTC
BGP routing table entry for 2001:db8:40::1/128, Route Distinguisher: 10.2.0.6:40
64501
10.1.0.5 (metric 20) from 10.2.0.7 (10.2.0.7)
Received Label 1524
Origin incomplete, localpref 100, valid, internal, best, group-best, import-candidate, imported
Received Path ID 0, Local Path ID 1, version 66
Extended community: RT:64501:40
Source AFI: VPNv6 Unicast, Source VRF: default, Source Route Distinguisher: 10.1.0.5:40
The Path Between the Sites
A-PE1 resolves 10.40.0.2 through B-PE2’s loopback with VPN label 24018, and that loopback through A-ASBR’s loopback, 10.1.0.8, with labelled unicast label 1813. The top label is 17800, A-PE1’s SR label for 10.1.0.8 from the SR/LDP post:
A-PE1#show ip cef vrf CustD 10.40.0.2 detail
10.40.0.2/32, epoch 0, flags [rib defined all labels]
recursive via 10.2.0.6 label 24018
recursive via 10.1.0.8 label 1813
nexthop 10.1.1.21 GigabitEthernet2 label [17800|17800]-(local:17800)
repair: attached-nexthop 10.1.1.25 GigabitEthernet3
nexthop 10.1.1.25 GigabitEthernet3 label 17800-(local:17800), repair
A-PE1’s traceroute from the first output shows the stack each router receives:
A-PE1#traceroute vrf CustD 10.40.0.2 source lo40
Type escape sequence to abort.
Tracing the route to 10.40.0.2
VRF info: (vrf in name/id, vrf out name/id)
1 10.1.1.21 [MPLS: Labels 17800/1813/24018 Exp 0] 4 msec 4 msec 3 msec
2 10.1.1.42 [MPLS: Labels 1813/24018 Exp 0] 3 msec 3 msec 4 msec
3 10.255.0.10 [MPLS: Labels 24/24018 Exp 0] 3 msec 3 msec 3 msec
4 10.2.1.41 [MPLS: Labels 16600/24018 Exp 0] 3 msec 4 msec 3 msec
5 10.2.1.14 [MPLS: Labels 16600/24018 Exp 0] 3 msec 3 msec *
6 *
10.2.1.30 15 msec *
A-PE1#
- Hop 1, A-P1, 10.1.1.21, receives all three labels. It removes 17800, because the next router, A-ASBR, is the end of that LSP.
- Hop 2, A-ASBR, 10.1.1.42, receives 1813 and 24018 and swaps 1813 for 24, B-ASBR’s label.
- Hop 3, B-ASBR, 10.255.0.10, receives 24 and 24018. B-PE2 advertised implicit-null for its loopback, so B-ASBR removes 24 and sends the packet on with 16600, the SR label for 10.2.0.6.
- Hop 4, B-P1, 10.2.1.41, receives 16600 and 24018 and sends the same two labels to B-P4.
- Hop 5, B-P4, 10.2.1.14, receives 16600 and 24018 and removes 16600 toward B-PE2.
- Hop 6, B-PE2, replies from 10.2.1.30, its address on the link to B-P3. The packet arrived on the link from B-P4.
24018 is at the bottom of the stack on every hop. In the Option B post, each ASBR swaps the VPN label for its own.
16600 is B-PE2’s SR label in algorithm 0, and 16650 is its label in algorithm 128, as B-PE1’s route to 10.2.0.6 shows:
RP/0/RP0/CPU0:B-PE1#show route 10.2.0.6/32 detail
Routing entry for 10.2.0.6/32
Known via "isis 1", distance 115, metric 30, labeled SR, type level-2
Installed Aug 4 10:50:38.289 for 03:07:36
10.2.1.21, via GigabitEthernet0/0/0/0, Backup (Local-LFA) Label: 0x40d8 (16600)
10.2.1.25, via GigabitEthernet0/0/0/1, Protected Label: 0x40d8 (16600)
Local Label: 0x40d8 (16600)
Local Label Algo Set (ID, Label, Metric): (128, 16650, 200)
SET_COLOR_128 from the SR-TE post matches only CustC’s route target, 64502:30, so CustD’s routes have no colour and follow algorithm 0.
On B-PE2, 24018 and the IPv6 label 24017 end as Aggregate entries for VRF CustD. B-PE2 removes the label and looks up the destination in the VRF:
! the other SR entries are trimmed
RP/0/RP0/CPU0:B-PE2#show mpls forwarding
Local Outgoing Prefix Outgoing Next Hop Bytes
Label Label or ID Interface Switched
------ ----------- ------------------ ------------ --------------- ------------
16800 16800 SR Pfx (idx 800) Gi0/0/0/1 10.2.1.33 13080
24009 31 10.1.0.5/32 10.2.0.8 0
24010 Unlabelled 2001:db8:30::3/128[V] \
Gi0/0/0/3 fe80::e00:f2ff:feea:d401 \
1000
24011 Unlabelled 10.30.0.3/32[V] Gi0/0/0/3 10.2.12.6 0
24015 36 10.1.0.7/32 10.2.0.8 0
24017 Aggregate CustD: Per-VRF Aggr[V] \
CustD 1520
24018 Aggregate CustD: Per-VRF Aggr[V] \
CustD 12230
In the other direction, B-PE2 imposes 1523, A-PE1’s VPN label, then 31, B-ASBR’s label for 10.1.0.5, and 16800, the SR label for B-ASBR’s loopback:
! trimmed to the route and the imposed labels
RP/0/RP0/CPU0:B-PE2#show cef vrf CustD 10.40.0.1/32 detail
Tue Aug 4 13:17:30.100 UTC
10.40.0.1/32, version 3, internal 0x5000001 0x30 (ptr 0xe70a640) [1], 0x600 (0xdb79ad0), 0xa08 (0xf683ac8)
via 10.1.0.5/32, 5 dependencies, recursive [flags 0x6000]
next hop 10.1.0.5/32 via 24009/0/21
next hop 10.2.1.33/32 Gi0/0/0/1 labels imposed {16800 31 1523}

A-PE1’s ping to B-PE2’s CustD loopback got 5 of 5 replies in both address families:
A-PE1#ping vrf CustD 10.40.0.2 source lo40
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.40.0.2, timeout is 2 seconds:
Packet sent with a source address of 10.40.0.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 5/7/15 ms
A-PE1#ping vrf CustD 2001:db8:40::2 source lo40
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:40::2, timeout is 2 seconds:
Packet sent with a source address of 2001:DB8:40::1%CustD
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/8/23 ms
A-PE1#
B-PE2’s ping in the other direction got the same:
RP/0/RP0/CPU0:B-PE2#ping vrf CustD 10.40.0.1 source lo40
Tue Aug 4 13:22:58.811 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.40.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/5/8 ms
RP/0/RP0/CPU0:B-PE2#ping vrf CustD 2001:db8:40::1 source lo40
Tue Aug 4 13:23:12.982 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:db8:40::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 11/23/38 ms
RP/0/RP0/CPU0:B-PE2#
Three Options on A-ASBR
Gi4 on A-ASBR now has a sub-interface for each option, and its forwarding table shows all three:
A-ASBR#show mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
1800 Pop Label 10.1.0.100/32 0 Gi2 10.1.1.41
1801 Pop Label 10.1.0.4/32 19809998 Gi3 10.1.1.45
1802 1105 10.1.0.3/32 0 Gi2 10.1.1.41
1401 10.1.0.3/32 0 Gi3 10.1.1.45
1803 1106 10.1.0.2/32 0 Gi2 10.1.1.41
1804 Pop Label 10.1.0.1/32 19818190 Gi2 10.1.1.41
1805 1404 10.1.0.106/32 0 Gi3 10.1.1.45
1806 1405 10.1.0.6/32 0 Gi3 10.1.1.45
1807 1103 10.1.0.5/32 4758 Gi2 10.1.1.41
1808 Pop Label 10.255.0.2/32 0 Gi4.255 10.255.0.2
1809 1118 10.1.0.7/32 1027289 Gi2 10.1.1.41
1810 37 10.2.0.7/32 1075669 Gi4.254 10.255.0.10
1813 24 10.2.0.6/32 5040 Gi4.254 10.255.0.10
1816 25 10.2.0.5:10:10.2.10.0/30 \
0 Gi4.255 10.255.0.2
1817 26 10.2.0.5:10:10.10.0.3/32 \
1830 Gi4.255 10.255.0.2
1820 Pop Label 10.255.0.10/32 0 Gi4.254 10.255.0.10
1823 27 [167903237:10]2001:DB8:2:20::/64 \
0 Gi4.255 10.255.0.2
1824 28 [167903237:10]2001:DB8:10::3/128 \
1830 Gi4.255 10.255.0.2
1828 1517 10.1.0.5:10:10.1.10.0/30 \
0 Gi2 10.1.1.41
1829 1518 10.1.0.5:10:10.10.0.1/32 \
1830 Gi2 10.1.1.41
1830 1614 10.1.0.6:10:10.1.10.4/30 \
0 Gi3 10.1.1.45
1831 1615 10.1.0.6:10:10.10.0.2/32 \
0 Gi3 10.1.1.45
1832 1519 [167837701:10]2001:DB8:10::1/128 \
1586 Gi2 10.1.1.41
1833 1612 [167837702:10]2001:DB8:10::2/128 \
0 Gi3 10.1.1.45
1837 No Label 2001:DB8:30::3/128[V] \
0 Gi4.30 FE80::E00:86FF:FEF3:D403
1838 No Label 2001:DB8:30::2/128[V] \
0 Gi4.30 FE80::E00:86FF:FEF3:D403
1841 No Label 10.30.0.3/32[V] 0 Gi4.30 10.255.0.6
1842 No Label 10.30.0.2/32[V] 0 Gi4.30 10.255.0.6
- Gi4.30 is Option A: CustC’s prefixes in the VRF, marked
[V], leave withNo Label. - Gi4.255 is Option B: CustA’s VPN prefixes, shown with their route distinguisher, leave with B-ASBR’s VPN labels, 25 to 28.
- Gi4.254 is Option C: B-RR’s and B-PE2’s loopbacks leave with B-ASBR’s labelled unicast labels, 37 and 24. Traffic to B-RR’s loopback, including the session between the route reflectors, arrives with label 1810 and leaves with 37.
[167903237:10] is the route distinguisher 10.2.0.5:10, with the IP address printed as one decimal number. The Pop Label entries for 10.255.0.2 and 10.255.0.10 are the next hops of the eBGP sessions on Gi4.255 and Gi4.254.
A-ASBR has no VRF CustD. However, its VPNv4 table has both CustD routes:
A-ASBR#show vrf
Name Default RD Protocols Interfaces
CustC 10.1.0.8:30 ipv4,ipv6 Gi4.30
clab-mgmt <not set> ipv4 Gi1
A-ASBR#show bgp vpnv4 unicast all | i 10.40|:40
Route Distinguisher: 10.1.0.5:40
*>i 10.40.0.1/32 10.1.0.5 0 100 0 ?
Route Distinguisher: 10.2.0.6:40
*>i 10.40.0.2/32 10.2.0.6 100 0 64502 ?
A-ASBR#show ip route vrf CustD
% IP routing table vrf CustD does not exist
A-RR reflects them over its VPNv4 session to A-ASBR, which Options A and B use, since SCOPE_CUSTD_OUT applies only toward B-RR. With Option C alone, an ASBR needs no VPN session. no bgp default route-target filter, from the Option B post, keeps them:
A-ASBR#show run | i route-target filter
no bgp default route-target filter
BGP allocates a label for a VPN route when it changes the route’s next hop. RM-OPTB-OUT from the Option B post sends B-ASBR only the routes with route target 64501:10, so A-ASBR leaves the next hop of the CustD routes unchanged and allocates no label for them. The forwarding table above has no CustD entry.
A-ASBR’s entry for A-PE1’s route reads Not advertised to any peer, with nolabel as the in label. This capture is from a later date, when A-PE1’s VPN label for the route had changed from 1523 to 1519:
A-ASBR#show bgp vpnv4 unicast rd 10.1.0.5:40 10.40.0.1/32
BGP routing table entry for 10.1.0.5:40:10.40.0.1/32, version 34
Paths: (1 available, best #1, no table)
Not advertised to any peer
Refresh Epoch 1
Local
10.1.0.5 (metric 3) (via default) from 10.1.0.7 (10.1.0.7)
Origin incomplete, metric 0, localpref 100, valid, internal, best
Extended Community: RT:64501:40
Originator: 10.1.0.5, Cluster list: 10.1.0.7
mpls labels in/out nolabel/1519
rx pathid: 0, tx pathid: 0x0
A-ASBR#
Adding Option C did not break the existing setup. CustA-HQ’s ping to CustA-Br2, over the path from the Option B post, got 5 of 5 replies in both address families:
CustA-HQ#ping 10.10.0.3 source lo0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.10.0.3, timeout is 2 seconds:
Packet sent with a source address of 10.10.0.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 5/7/11 ms
CustA-HQ#ping 2001:db8:10::3 source lo0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:10::3, timeout is 2 seconds:
Packet sent with a source address of 2001:DB8:10::1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/5/8 ms
CustA-HQ#
What’s Next
The next post adds Inter-AS Option AB for a new customer, on the same physical link.
Leave a Reply