In this post we will be taking a look at the Inter AS Option C variation. Like our previous posts, having an intra AS VPLS deployment already, enables this setup to be easily scaled. This design is similar to that of L3 VPN, the main concept that the RRs in each AS need to form an eBGP peering to exchange routing information is still true. There isn't much on this topic documented online, so it took some trial and error to get working. The only reference material available is Nick Russo's CCIE SPv4 Comprehensive Guide. In his guide, he lays out a complex implementation that changes mid stride to fix an issue he intercepted and implemented a work around. The theory that a VPLS PE also running eBGP that the router would assume that it wasn't an Option C RR, this may be true.
Several of the configurations from Option B carry over, the ASBR AC MPLS configurations stay, "mpls ip, "mpls bgp forwarding", "mpls ldp discovery-address interface". We end up needing to enable the IPv4 unicast AFI between the RRs to the ASBRs and between the ASBRs. This allows us to propagate the RR loopbacks to each other to form the eBGP peering. The IPv4 AFI is just used to advertise the RRs loopbacks so that ASBRs advertise them to the remote ASN. The RRs will form an L2VPN VPLS eBGP peering. Most of the configuration is done on the RR and ASBR but I'll add in all of the configurations as there is nothing online I could that lays it out.
PEs
CSR1, CSR4, CSR10, CSR11 and CSR12
ASBRs
CSR2 and CSR14
RRs
CSR5 and XRv10
CSR1
mpls ldp discovery targeted-hello accept
!
!
l2vpn vfi context VPLS
vpn id 100
autodiscovery bgp signaling ldp template TMP_VPLS
vpls-id 100:200
route-target import 100:100
route-target import 200:200
route-target import 100:200
encapsulation mpls
!
bridge-domain 1
member GigabitEthernet3 service-instance 1
member vfi VPLS
!
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.5 remote-as 100
neighbor 1.1.1.5 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family vpnv4
neighbor 1.1.1.5 activate
neighbor 1.1.1.5 send-community extended
exit-address-family
!
address-family l2vpn vpls
neighbor 1.1.1.5 activate
exit-address-family
CSR4
mpls ldp discovery targeted-hello accept
!
l2vpn vfi context VPLS
vpn id 100
autodiscovery bgp signaling ldp template TMP_VPLS
vpls-id 100:200
route-target import 100:100
route-target import 200:200
route-target import 100:200
encapsulation mpls
!
bridge-domain 1
member GigabitEthernet3 service-instance 1
member vfi VPLS
!
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.5 remote-as 100
neighbor 1.1.1.5 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family vpnv4
neighbor 1.1.1.5 activate
neighbor 1.1.1.5 send-community extended
exit-address-family
!
address-family l2vpn vpls
neighbor 1.1.1.5 activate
exit-address-family
CSR2
mpls ldp discovery targeted-hello accept
!
interface GigabitEthernet4
ip address 90.2.14.2 255.255.255.0
negotiation auto
mpls ip
mpls ldp discovery transport-address interface
mpls bgp forwarding
!
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.5 remote-as 100
neighbor 1.1.1.5 update-source Loopback0
neighbor 90.2.14.14 remote-as 200
!
address-family ipv4
neighbor 1.1.1.5 activate
neighbor 1.1.1.5 next-hop-self
neighbor 90.2.14.14 activate
neighbor 90.2.14.14 send-label
exit-address-family
!
address-family l2vpn vpls
no bgp default route-target filter
neighbor 1.1.1.5 activate
neighbor 1.1.1.5 next-hop-self
neighbor 90.2.14.14 activate
exit-address-family
CSR5
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor IBGP peer-group
neighbor IBGP remote-as 100
neighbor IBGP update-source Loopback0
neighbor 1.1.1.1 peer-group IBGP
neighbor 1.1.1.2 peer-group IBGP
neighbor 1.1.1.4 peer-group IBGP
neighbor 1.1.1.6 peer-group IBGP
neighbor 1.1.1.14 peer-group IBGP
neighbor 2.2.2.100 remote-as 200
neighbor 2.2.2.100 ebgp-multihop 255
neighbor 2.2.2.100 update-source Loopback0
!
address-family ipv4
network 1.1.1.5 mask 255.255.255.255
neighbor IBGP route-reflector-client
neighbor 1.1.1.2 activate
exit-address-family
!
address-family vpnv4
neighbor IBGP send-community extended
neighbor IBGP route-reflector-client
neighbor 1.1.1.1 activate
neighbor 1.1.1.2 activate
neighbor 1.1.1.4 activate
neighbor 1.1.1.6 activate
neighbor 1.1.1.14 activate
exit-address-family
!
address-family l2vpn vpls
neighbor IBGP send-community extended
neighbor IBGP route-reflector-client
neighbor 1.1.1.1 activate
neighbor 1.1.1.2 activate
neighbor 1.1.1.4 activate
neighbor 1.1.1.6 activate
neighbor 1.1.1.14 activate
neighbor 1.1.1.14 prefix-length-size 2
neighbor 2.2.2.100 activate
neighbor 2.2.2.100 send-community extended
neighbor 2.2.2.100 prefix-length-size 2
neighbor 2.2.2.100 next-hop-unchanged
exit-address-family
CSR10
mpls ldp discovery targeted-hello accept
!
l2vpn
logging pseudowire status
!
l2vpn vfi context VPLS
vpn id 200
autodiscovery bgp signaling ldp template TMP_VPLS
vpls-id 100:200
route-target import 200:200
route-target import 100:100
route-target import 100:200
encapsulation mpls
!
bridge-domain 200
member GigabitEthernet3 service-instance 1
member vfi VPLS
!
router bgp 200
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.14 remote-as 200
neighbor 2.2.2.14 update-source Loopback0
neighbor 2.2.2.100 remote-as 200
neighbor 2.2.2.100 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family l2vpn vpls
neighbor 2.2.2.14 activate
neighbor 2.2.2.100 activate
neighbor 2.2.2.100 prefix-length-size 2
exit-address-family
CSR11
mpls ldp discovery targeted-hello accept
!
l2vpn
logging pseudowire status
!
l2vpn vfi context VPLS
vpn id 200
autodiscovery bgp signaling ldp template TMP_VPLS
vpls-id 100:200
route-target import 200:200
route-target import 100:100
route-target import 100:200
!
bridge-domain 200
member GigabitEthernet3 service-instance 1
member vfi VPLS
!
router bgp 200
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.14 remote-as 200
neighbor 2.2.2.14 update-source Loopback0
neighbor 2.2.2.100 remote-as 200
neighbor 2.2.2.100 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family l2vpn vpls
neighbor 2.2.2.14 activate
neighbor 2.2.2.100 activate
neighbor 2.2.2.100 prefix-length-size 2
exit-address-family
CSR12
mpls ldp discovery targeted-hello accept
!
l2vpn
logging pseudowire status
!
l2vpn vfi context VPLS
vpn id 200
autodiscovery bgp signaling ldp template TMP_VPLS
vpls-id 100:200
route-target import 200:200
route-target import 100:100
route-target import 100:200
!
bridge-domain 200
member GigabitEthernet3 service-instance 1
member vfi VPLS
!
router bgp 200
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.14 remote-as 200
neighbor 2.2.2.14 update-source Loopback0
neighbor 2.2.2.100 remote-as 200
neighbor 2.2.2.100 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family l2vpn vpls
neighbor 2.2.2.14 activate
neighbor 2.2.2.100 activate
neighbor 2.2.2.100 prefix-length-size 2
exit-address-family
CSR14
mpls ldp discovery targeted-hello accept
!
l2vpn
logging pseudowire status
redundancy predictive enabled
!
interface GigabitEthernet3
ip address 90.2.14.14 255.255.255.0
negotiation auto
mpls ip
mpls ldp discovery transport-address interface
mpls bgp forwarding
!
router bgp 200
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.10 remote-as 200
neighbor 2.2.2.10 update-source Loopback0
neighbor 2.2.2.11 remote-as 200
neighbor 2.2.2.11 update-source Loopback0
neighbor 2.2.2.12 remote-as 200
neighbor 2.2.2.12 update-source Loopback0
neighbor 2.2.2.100 remote-as 200
neighbor 2.2.2.100 update-source Loopback0
neighbor 90.2.14.2 remote-as 100
!
address-family ipv4
neighbor 2.2.2.100 activate
neighbor 2.2.2.100 next-hop-self
neighbor 90.2.14.2 activate
neighbor 90.2.14.2 send-label
exit-address-family
!
address-family l2vpn vpls
no bgp default route-target filter
neighbor 2.2.2.10 activate
neighbor 2.2.2.10 next-hop-self
neighbor 2.2.2.11 activate
neighbor 2.2.2.11 next-hop-self
neighbor 2.2.2.12 activate
neighbor 2.2.2.12 next-hop-self
neighbor 2.2.2.100 activate
neighbor 2.2.2.100 prefix-length-size 2
neighbor 90.2.14.2 activate
exit-address-family
XRv10
router bgp 200
address-family ipv4 unicast
network 2.2.2.100/32
!
address-family l2vpn vpls-vpws
retain route-target all
!
neighbor 1.1.1.5
remote-as 100
ebgp-multihop 255
update-source Loopback0
address-family l2vpn vpls-vpws
route-policy PASS in
route-policy PASS out
next-hop-unchanged
!
!
neighbor 2.2.2.10
remote-as 200
update-source Loopback0
address-family l2vpn vpls-vpws
route-reflector-client
!
!
neighbor 2.2.2.11
remote-as 200
update-source Loopback0
address-family l2vpn vpls-vpws
route-reflector-client
!
!
neighbor 2.2.2.12
remote-as 200
update-source Loopback0
address-family l2vpn vpls-vpws
route-reflector-client
!
!
neighbor 2.2.2.14
remote-as 200
update-source Loopback0
address-family ipv4 unicast
route-reflector-client
!
address-family l2vpn vpls-vpws
route-reflector-client
!
!
!
mpls ldp
CSR5#show bgp ipv4 unicast
BGP table version is 4, local router ID is 1.1.1.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.5/32 0.0.0.0 0 32768 i
*>i 2.2.2.100/32 1.1.1.2 0 100 0 200 i
CSR5 shows an eBGP peering to XRv10, so we know that the RRs loopbacks are being leaked between ASNs.
RP/0/0/CPU0:XRv10#show bgp ipv4 unicast
Fri Nov 30 22:07:47.749 UTC
BGP router identifier 2.2.2.100, local AS number 200
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0xe0000000 RD version: 4
BGP main routing table version 4
BGP NSR Initial initsync version 2 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs
Status codes: s suppressed, d damped, h history, * valid, > best
i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>i1.1.1.5/32 2.2.2.14 0 100 0 100 i
*> 2.2.2.100/32 0.0.0.0 0 32768 i
Processed 2 prefixes, 2 paths
XRv10 shows the same thing, an eBGP peering with CSR5
CSR14#show l2vpn atom vc
Service
Interface Peer ID VC ID Type Name Status
--------- --------------- ---------- ------ ------------------------ ----------
pw100115 1.1.1.1 1001 p2p mpls 1.1.1.1:1001 UP
pw100117 1.1.1.1 1002 p2p mpls 2.2.2.10:1002 UP
pw100119 1.1.1.1 1003 p2p mpls 2.2.2.12:1003 UP
pw100121 1.1.1.4 1002 p2p mpls 2.2.2.11:1002 UP
pw100125 1.1.1.4 1004 p2p mpls 2.2.2.12:1004 UP
pw100122 2.2.2.10 1002 p2p mpls 2.2.2.10:1002 UP
pw100124 2.2.2.11 1001 p2p mpls 1.1.1.1:1001 UP
pw100118 2.2.2.11 1002 p2p mpls 2.2.2.11:1002 UP
pw100120 2.2.2.12 1003 p2p mpls 2.2.2.12:1003 UP
pw100126 2.2.2.12 1004 p2p mpls 2.2.2.12:1004 UP
CSR2#show l2vpn atom vc
Service
Interface Peer ID VC ID Type Name Status
--------- --------------- ---------- ------ ------------------------ ----------
pw100101 1.1.1.1 1001 p2p mpls 1.1.1.1:1001 UP
pw100103 1.1.1.1 1002 p2p mpls 1.1.1.1:1002 UP
pw100105 1.1.1.1 1003 p2p mpls 1.1.1.1:1003 UP
pw100109 1.1.1.4 1001 p2p mpls 2.2.2.12:1001 UP
pw100107 1.1.1.4 1002 p2p mpls 2.2.2.11:1002 UP
pw100142 2.2.2.10 1001 p2p mpls 1.1.1.1:1001 UP
pw100104 2.2.2.11 1002 p2p mpls 2.2.2.11:1002 UP
pw100144 2.2.2.11 1003 p2p mpls 1.1.1.1:1003 UP
pw100141 2.2.2.12 1001 p2p mpls 2.2.2.12:1001 UP
pw100146 2.2.2.12 1002 p2p mpls 1.1.1.1:1002 UP
CSR2 and CSR14 both show end to end LSP PWs setup between all of the PEs.
CSR1#show l2vpn atom vc
Service
Interface Peer ID VC ID Type Name Status
--------- --------------- ---------- ------ ------------------------ ----------
pw100003 1.1.1.4 100 vfi VPLS UP
pw100004 2.2.2.10 100 vfi VPLS UP
pw100006 2.2.2.11 100 vfi VPLS UP
pw100005 2.2.2.12 100 vfi VPLS UP
CSR1 shows 1 local PW and 3 remote PWs, we know the remote ones based on the Peer ID being 2.2.2.x and all of them are in the UP status.
CSR1#show bridge-domain 1
Bridge-domain 1 (5 ports in all)
State: UP Mac learning: Enabled
Aging-Timer: 300 second(s)
GigabitEthernet3 service instance 1
vfi VPLS neighbor 1.1.1.4 100
vfi VPLS neighbor 2.2.2.10 100
vfi VPLS neighbor 2.2.2.11 100
vfi VPLS neighbor 2.2.2.12 100
AED MAC address Policy Tag Age Pseudoport
0 5000.001F.0001 forward dynamic 300 VPLS.1004036
0 5000.0022.0000 forward dynamic 295 VPLS.1004035
0 5000.0019.0001 forward dynamic 299 VPLS.1004033
0 5000.0018.0001 forward dynamic 297 GigabitEthernet3.EFP1
0 5000.0021.0001 forward dynamic 300 VPLS.1004034
CSR1 is a PE hosting a bridge domain, we see 4 PW connections and 1 EFP.
CSR12#show l2vpn atom vc
Service
Interface Peer ID VC ID Type Name Status
--------- --------------- ---------- ------ ------------------------ ----------
pw100018 1.1.1.1 200 vfi VPLS UP
pw100014 1.1.1.4 200 vfi VPLS UP
pw100006 2.2.2.10 200 vfi VPLS UP
pw100007 2.2.2.11 200 vfi VPLS UP
CSR12#show bridge-domain 200
Bridge-domain 200 (5 ports in all)
State: UP Mac learning: Enabled
Aging-Timer: 300 second(s)
GigabitEthernet3 service instance 1
vfi VPLS neighbor 1.1.1.1 200
vfi VPLS neighbor 2.2.2.10 200
vfi VPLS neighbor 2.2.2.11 200
vfi VPLS neighbor 1.1.1.4 200
AED MAC address Policy Tag Age Pseudoport
0 5000.001F.0001 forward dynamic 300 GigabitEthernet3.EFP1
0 5000.0019.0001 forward dynamic 296 VPLS.100402a
0 5000.0018.0001 forward dynamic 297 VPLS.1004029
0 5000.0022.0000 forward dynamic 296 VPLS.100401f
0 5000.0021.0001 forward dynamic 296 VPLS.100401e
CSR12 shows the same outputs.
CSR5#show bgp l2vpn vpls all summary | b Neighbor
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
1.1.1.1 4 100 519 532 92 0 0 07:50:04 1
1.1.1.2 4 100 110 114 92 0 0 01:34:38 3
1.1.1.4 4 100 522 548 92 0 0 07:56:49 1
1.1.1.6 4 100 0 0 1 0 0 never (NoNeg)
1.1.1.14 4 100 6979 7768 92 0 0 4d22h 1
2.2.2.100 4 200 76 88 92 0 0 01:10:01 3
CSR5#show bgp l2vpn vpls all
BGP table version is 92, local router ID is 1.1.1.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 100:100
*>i 100:100:1.1.1.1/96
1.1.1.1 0 100 0 ?
*>i 100:100:1.1.1.4/96
1.1.1.4 0 100 0 ?
*>i 100:100:1.1.1.14/96
1.1.1.14 100 0 i
Route Distinguisher: 200:200
* 200:200:2.2.2.10/96
2.2.2.10 0 200 ?
*>i 1.1.1.2 0 100 0 200 ?
* 200:200:2.2.2.11/96
2.2.2.11 0 200 ?
*>i 1.1.1.2 0 100 0 200 ?
Network Next Hop Metric LocPrf Weight Path
* 200:200:2.2.2.12/96
2.2.2.12 0 200 ?
*>i 1.1.1.2 0 100 0 200 ?
CSR5 shows that it is learning 3 routes from XRv10.
CSR1#show bgp l2vpn vpls all
BGP table version is 42, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 100:100
*> 100:100:1.1.1.1/96
0.0.0.0 32768 ?
*>i 100:100:1.1.1.4/96
1.1.1.4 0 100 0 ?
Route Distinguisher: 200:200
*>i 200:200:2.2.2.10/96
1.1.1.2 0 100 0 200 ?
*>i 200:200:2.2.2.11/96
1.1.1.2 0 100 0 200 ?
*>i 200:200:2.2.2.12/96
1.1.1.2 0 100 0 200 ?
CSR1 shows that it is learning the routes from both SPs.
RP/0/0/CPU0:XRv10#show bgp l2vpn vpls summary | b Neighbor
Fri Nov 30 22:11:27.934 UTC
Neighbor Spk AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down St/PfxRcd
1.1.1.5 0 100 113 94 4 0 0 01:09:52 3
2.2.2.10 0 200 135 126 4 0 0 01:39:46 1
2.2.2.11 0 200 137 126 4 0 0 01:39:38 1
2.2.2.12 0 200 137 126 4 0 0 01:39:33 1
2.2.2.14 0 200 142 119 4 0 0 01:11:04 3
RP/0/0/CPU0:XRv10#show bgp l2vpn vpls
Fri Nov 30 22:11:30.604 UTC
BGP router identifier 2.2.2.100, local AS number 200
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0x0 RD version: 0
BGP main routing table version 4
BGP NSR Initial initsync version 4 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs
Status codes: s suppressed, d damped, h history, * valid, > best
i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Rcvd Label Local Label
Route Distinguisher: 100:100
* 1.1.1.1/32 1.1.1.1 nolabel nolabel
* i 90.2.14.2 nolabel nolabel
* 1.1.1.4/32 1.1.1.4 nolabel nolabel
* i 90.2.14.2 nolabel nolabel
* 1.1.1.14/32 1.1.1.14 nolabel nolabel
* i 90.2.14.2 nolabel nolabel
Route Distinguisher: 200:200
*>i2.2.2.10/32 2.2.2.10 nolabel nolabel
*>i2.2.2.11/32 2.2.2.11 nolabel nolabel
*>i2.2.2.12/32 2.2.2.12 nolabel nolabel
Processed 6 prefixes, 9 paths
XRv10 shows the same information.
IOSV1#show ip eigrp neighbors
EIGRP-IPv4 Neighbors for AS(1)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
3 10.1.1.7 Gi0/1 11 01:29:31 287 1722 0 31
2 10.1.1.9 Gi0/1 11 01:29:31 296 1776 0 29
1 10.1.1.10 Gi0/1 13 01:29:32 266 1596 0 3149
0 10.1.1.2 Gi0/1 10 07:18:14 302 1812 0 3345
IOv1 (CE) shows 4 active EIGRP adjacencies, proving that the Inter AS link is working as expected.
Thanks for stopping by!
Rob Riker, CCIE #50693
Friday, November 30, 2018
CCIE SPv4 MPLS L2VPN VPLS BGP-AD LDP Signaling Inter AS Option B
In this post we will be taking a look at Inter AS Option B for VPLS. I have to say, this was probably one of the most complicated L2VPN configurations I have dealt with thus far. There are a lot of moving parts and at first, it didn't work, one side of the topology would appear to be working but the other side would not. It made for some very tedious troubleshooting, rebuilding the lab a couple times due to reloading several CSRs after all the logical troubleshooting had been exhausted. I will be laying out all of the configuration I "threw" at the lab to get it to work.
Unlike Option A, where we are able to terminate the PWs at the ASBR and leverage the connection between the ASBRs as an AC. Option A is the easiest transition to any Inter AS design, L2 and L3 in my opinion. Option B is not so easy and very unforgiving if something isn't correctly configured. One key thing that I noticed was that if the PE to PE PWs that form when things are working, won't form if end to end connectivity isn't working correctly, it becomes a node by node troubleshooting scenario that becomes time consuming.
Like L3 VPN, there are 3 separate LSPs connecting the PEs together. PE to ASBR, ASBR to ASBR and ASBR to PE. Unline L3 VPN, tracing from the PE to PE or CE to CE doesn't expose the label binding or LSPs, since we are creating transparent L2 connectivity between two ISPs, we have to trace and ping between PEs to accomplish this. We'll focus on the verification at the end.
The logic we use for Intra AS VPLS still applies, so if you have an existing VPLS deployment, you can leverage that to play with Inter AS Option B. Some key things that need to be added, the ASBR to ASBR connectivity needs to be MPLS enabled, I added "mpls ip", "mpls bgp forwarding" and "mpls ldp discovery transport-address interface" to the interface facing the ASBRs. An eBGP L2VPN VPLS peering had to be created to allow the ASBRs to exchange BGP info from between the ASNs. MPLS needs to be enabled on the connected link, "mpls ip" does this. The ASBR need to be able to send/accept labeled packets over the configured interface, "mpls bgp forwarding" does this. The last command, "mpls ldp discovery transport-address interface" changes the discovery address from the loopback to the connected interface enabling LDP to form the adjacency. The last MPLS command that needs to be added is "mpls ldp discovery targeted-hello accept" which will allow multi-hop LDP peerings to be created, which will be needed for the PE to PE tLDP peerings.
The L2VPN configuration, normally the VFI configuration is enough, for Intra AS, but for Inter AS, there are some additional things that need to be added. On the PEs, we need to enable PW routing, specifically, "terminating-pe tie breaker", both PEs will be in active mode when forming the multi-segment PWs, with Option B, one of the two PEs needs to be in passive mode, the system determines this based on the TAII from BGP and the SAII in LDP from the local router. I applied the command to all PEs and ASBRs. On the ASBRs I applied the additional command "switching-point vcid 1 200000" which is used to switch between the MS PW setup. This is similar to creating an "xconnect context" and calling two PWs to allow manual MSPW to allow 2 PEs to form an end to end LSP for a L2 connection for the CEs.
Additionally a template was used on the PEs and ASBRs and applied to the L2VPN construct to provide consistent PW attributes.
In the above topology, CSR1, CSR4, CSR10, CSR11 and CSR12 (PEs); CSR2 and CSR14 (ASBR) are configured. I will show you the configs from CSR1, CSR2 and CSR11 since there is so much repeated configuration. Then we'll dive into the verification. ISP 1 is BGP 100 and ISP 2 is BGP 200. The routers in ISP 100 use VPN ID 100 and VPLS ID 100:200. The routers in ISP 200 use VPN ID 200 and VPLS ID 100:200. To ensure I would import the correct info, I made sure to import the variations of the RT that might be seen. After configuration is complete, it may be required to hard clear BGP, I needed to do this to get the PWs to form between the PEs.
CSR1
!
mpls ldp discovery targeted-hello accept
!
l2vpn
pseudowire routing
terminating-pe tie-breaker
!
l2vpn vfi context VPLS
vpn id 100
autodiscovery bgp signaling ldp template TMP_VPLS
vpls-id 100:200
route-target import 100:100
route-target import 200:200
route-target import 100:200
!
template type pseudowire TMP_VPLS
encapsulation mpls
sequencing both
control-word include
!
bridge-domain 1
member GigabitEthernet3 service-instance 1
member vfi VPLS
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
ip router isis 1
!
interface GigabitEthernet1
ip address 10.1.13.1 255.255.255.0
ip router isis 1
negotiation auto
!
interface GigabitEthernet3
no ip address
negotiation auto
service instance 1 ethernet
encapsulation default
!
router isis 1
net 00.0000.0000.0001.00
mpls ldp autoconfig
!
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.5 remote-as 100
neighbor 1.1.1.5 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family vpnv4
neighbor 1.1.1.5 activate
neighbor 1.1.1.5 send-community extended
exit-address-family
!
address-family l2vpn vpls
neighbor 1.1.1.5 activate
exit-address-family
CSR2 (ASBR)
!
mpls ldp discovery targeted-hello accept
!
l2vpn
logging pseudowire status
redundancy predictive enabled
pseudowire routing
switching-point vcid 1 200000
terminating-pe tie-breaker
!
interface Loopback0
ip address 1.1.1.2 255.255.255.255
ip router isis 1
!
interface GigabitEthernet1
ip address 10.2.11.2 255.255.255.0
ip router isis 1
negotiation auto
!
interface GigabitEthernet4
ip address 90.2.14.2 255.255.255.0
negotiation auto
mpls ip
mpls ldp discovery transport-address interface
mpls bgp forwarding
!
router isis 1
net 00.0000.0000.0002.00
mpls ldp autoconfig
!
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.5 remote-as 100
neighbor 1.1.1.5 update-source Loopback0
neighbor 90.2.14.14 remote-as 200
!
address-family ipv4
exit-address-family
!
address-family l2vpn vpls
no bgp default route-target filter
neighbor 1.1.1.5 activate
neighbor 1.1.1.5 next-hop-self
neighbor 90.2.14.14 activate
exit-address-family
CSR11
!
mpls ldp discovery targeted-hello accept
!
!
multilink bundle-name authenticated
l2vpn
logging pseudowire status
pseudowire routing
terminating-pe tie-breaker
!
l2vpn vfi context VPLS
vpn id 200
autodiscovery bgp signaling ldp template TMP_VPLS
vpls-id 100:200
route-target import 200:200
route-target import 100:100
route-target import 100:200
!
template type pseudowire TMP_VPLS
encapsulation mpls
sequencing both
control-word include
!
redundancy
bridge-domain 200
member GigabitEthernet3 service-instance 1
member vfi VPLS
!
interface Loopback0
ip address 2.2.2.11 255.255.255.255
!
interface GigabitEthernet1
ip address 10.11.10.11 255.255.255.0
negotiation auto
!
interface GigabitEthernet3
no ip address
negotiation auto
service instance 1 ethernet
encapsulation default
!
router ospf 1
network 2.2.2.0 0.0.0.255 area 0
network 10.0.0.0 0.255.255.255 area 0
mpls ldp autoconfig
!
router bgp 200
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.14 remote-as 200
neighbor 2.2.2.14 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family l2vpn vpls
neighbor 2.2.2.14 activate
exit-address-family
CSR1#show l2vpn atom vc
Service
Interface Peer ID VC ID Type Name Status
--------- --------------- ---------- ------ ------------------------ ----------
pw100003 1.1.1.4 100 vfi VPLS UP
pw100004 2.2.2.10 100 vfi VPLS UP
pw100006 2.2.2.11 100 vfi VPLS UP
pw100005 2.2.2.12 100 vfi VPLS UP
CSR1#show bridge-domain 1
Bridge-domain 1 (5 ports in all)
State: UP Mac learning: Enabled
Aging-Timer: 300 second(s)
GigabitEthernet3 service instance 1
vfi VPLS neighbor 1.1.1.4 100
vfi VPLS neighbor 2.2.2.10 100
vfi VPLS neighbor 2.2.2.12 100
vfi VPLS neighbor 2.2.2.11 100
AED MAC address Policy Tag Age Pseudoport
0 5000.001F.0001 forward dynamic 297 VPLS.1004014
0 5000.0022.0000 forward dynamic 299 VPLS.1004015
0 5000.0019.0001 forward dynamic 297 VPLS.1004012
0 5000.0018.0001 forward dynamic 298 GigabitEthernet3.EFP1
0 5000.0021.0001 forward dynamic 296 VPLS.1004013
CSR2# show l2vpn atom vc
Service
Interface Peer ID VC ID Type Name Status
--------- --------------- ---------- ------ ------------------------ ----------
pw100009 1.1.1.1 1 p2p mpls 2.2.2.10:1 UP
pw100007 1.1.1.1 2 p2p mpls 2.2.2.11:2 UP
pw100011 1.1.1.1 4 p2p mpls 2.2.2.12:4 UP
pw100001 1.1.1.4 1 p2p mpls 2.2.2.11:1 UP
pw100003 1.1.1.4 2 p2p mpls 2.2.2.10:2 UP
pw100005 1.1.1.4 3 p2p mpls 2.2.2.12:3 UP
pw100010 2.2.2.10 1 p2p mpls 2.2.2.10:1 UP
pw100004 2.2.2.10 2 p2p mpls 2.2.2.10:2 UP
pw100002 2.2.2.11 1 p2p mpls 2.2.2.11:1 UP
pw100008 2.2.2.11 2 p2p mpls 2.2.2.11:2 UP
pw100006 2.2.2.12 3 p2p mpls 2.2.2.12:3 UP
pw100012 2.2.2.12 4 p2p mpls 2.2.2.12:4 UP
CSR11#show l2vpn atom vc
Service
Interface Peer ID VC ID Type Name Status
--------- --------------- ---------- ------ ------------------------ ----------
pw100018 1.1.1.1 200 vfi VPLS UP
pw100014 1.1.1.4 200 vfi VPLS UP
pw100006 2.2.2.10 200 vfi VPLS UP
pw100011 2.2.2.12 200 vfi VPLS UP
CSR11#show bridge-domain 200
Bridge-domain 200 (5 ports in all)
State: UP Mac learning: Enabled
Aging-Timer: 300 second(s)
GigabitEthernet3 service instance 1
vfi VPLS neighbor 1.1.1.4 200
vfi VPLS neighbor 2.2.2.10 200
vfi VPLS neighbor 2.2.2.12 200
vfi VPLS neighbor 1.1.1.1 200
AED MAC address Policy Tag Age Pseudoport
0 5000.001F.0001 forward dynamic 297 VPLS.100401f
0 5000.0019.0001 forward dynamic 299 VPLS.100401d
0 5000.0018.0001 forward dynamic 297 VPLS.1004020
0 5000.0022.0000 forward dynamic 298 GigabitEthernet3.EFP1
0 5000.0021.0001 forward dynamic 300 VPLS.100401e
IOSv1 (CE)
router eigrp 1
network 10.1.1.0 0.0.0.255
IOSV1#show ip eigrp nei
EIGRP-IPv4 Neighbors for AS(1)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
3 10.1.1.7 Gi0/1 12 02:25:49 1371 5000 0 24
2 10.1.1.9 Gi0/1 14 02:25:49 134 804 0 22
1 10.1.1.10 Gi0/1 12 02:25:49 128 768 0 3146
0 10.1.1.2 Gi0/1 12 02:25:49 302 1812 0 3345
CSR1#ping mpls pseudowire 2.2.2.10 100
%Total number of MS-PW segments is less than segment number; Adjusting the segment number to 3
Sending 5, 72-byte MPLS Echos to 2.2.2.10,
timeout is 2 seconds, send interval is 0 msec:
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 57/152/289 ms
Total Time Elapsed 800 ms
CSR1#traceroute mpls pseudowire 2.2.2.10 100 segment 3
Tracing MS-PW segments within range [1-3] peer address 2.2.2.10 and timeout 2 seconds
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
L 1 10.2.11.2 55 ms [Labels: 40 Exp: 0]
local 1.1.1.1 remote 2.2.2.10 vc id 100
L 2 90.2.14.14 115 ms [Labels: 41 Exp: 0]
local 1.1.1.2 remote 2.2.2.14 vc id 1
! 3 10.10.10.10 105 ms [Labels: 25 Exp: 0]
local 2.2.2.14 remote 2.2.2.10 vc id 1
Thanks for stopping by!
Rob Riker, CCIE #50693
Unlike Option A, where we are able to terminate the PWs at the ASBR and leverage the connection between the ASBRs as an AC. Option A is the easiest transition to any Inter AS design, L2 and L3 in my opinion. Option B is not so easy and very unforgiving if something isn't correctly configured. One key thing that I noticed was that if the PE to PE PWs that form when things are working, won't form if end to end connectivity isn't working correctly, it becomes a node by node troubleshooting scenario that becomes time consuming.
Like L3 VPN, there are 3 separate LSPs connecting the PEs together. PE to ASBR, ASBR to ASBR and ASBR to PE. Unline L3 VPN, tracing from the PE to PE or CE to CE doesn't expose the label binding or LSPs, since we are creating transparent L2 connectivity between two ISPs, we have to trace and ping between PEs to accomplish this. We'll focus on the verification at the end.
The logic we use for Intra AS VPLS still applies, so if you have an existing VPLS deployment, you can leverage that to play with Inter AS Option B. Some key things that need to be added, the ASBR to ASBR connectivity needs to be MPLS enabled, I added "mpls ip", "mpls bgp forwarding" and "mpls ldp discovery transport-address interface" to the interface facing the ASBRs. An eBGP L2VPN VPLS peering had to be created to allow the ASBRs to exchange BGP info from between the ASNs. MPLS needs to be enabled on the connected link, "mpls ip" does this. The ASBR need to be able to send/accept labeled packets over the configured interface, "mpls bgp forwarding" does this. The last command, "mpls ldp discovery transport-address interface" changes the discovery address from the loopback to the connected interface enabling LDP to form the adjacency. The last MPLS command that needs to be added is "mpls ldp discovery targeted-hello accept" which will allow multi-hop LDP peerings to be created, which will be needed for the PE to PE tLDP peerings.
The L2VPN configuration, normally the VFI configuration is enough, for Intra AS, but for Inter AS, there are some additional things that need to be added. On the PEs, we need to enable PW routing, specifically, "terminating-pe tie breaker", both PEs will be in active mode when forming the multi-segment PWs, with Option B, one of the two PEs needs to be in passive mode, the system determines this based on the TAII from BGP and the SAII in LDP from the local router. I applied the command to all PEs and ASBRs. On the ASBRs I applied the additional command "switching-point vcid 1 200000" which is used to switch between the MS PW setup. This is similar to creating an "xconnect context" and calling two PWs to allow manual MSPW to allow 2 PEs to form an end to end LSP for a L2 connection for the CEs.
Additionally a template was used on the PEs and ASBRs and applied to the L2VPN construct to provide consistent PW attributes.
In the above topology, CSR1, CSR4, CSR10, CSR11 and CSR12 (PEs); CSR2 and CSR14 (ASBR) are configured. I will show you the configs from CSR1, CSR2 and CSR11 since there is so much repeated configuration. Then we'll dive into the verification. ISP 1 is BGP 100 and ISP 2 is BGP 200. The routers in ISP 100 use VPN ID 100 and VPLS ID 100:200. The routers in ISP 200 use VPN ID 200 and VPLS ID 100:200. To ensure I would import the correct info, I made sure to import the variations of the RT that might be seen. After configuration is complete, it may be required to hard clear BGP, I needed to do this to get the PWs to form between the PEs.
CSR1
!
mpls ldp discovery targeted-hello accept
!
l2vpn
pseudowire routing
terminating-pe tie-breaker
!
l2vpn vfi context VPLS
vpn id 100
autodiscovery bgp signaling ldp template TMP_VPLS
vpls-id 100:200
route-target import 100:100
route-target import 200:200
route-target import 100:200
!
template type pseudowire TMP_VPLS
encapsulation mpls
sequencing both
control-word include
!
bridge-domain 1
member GigabitEthernet3 service-instance 1
member vfi VPLS
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
ip router isis 1
!
interface GigabitEthernet1
ip address 10.1.13.1 255.255.255.0
ip router isis 1
negotiation auto
!
interface GigabitEthernet3
no ip address
negotiation auto
service instance 1 ethernet
encapsulation default
!
router isis 1
net 00.0000.0000.0001.00
mpls ldp autoconfig
!
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.5 remote-as 100
neighbor 1.1.1.5 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family vpnv4
neighbor 1.1.1.5 activate
neighbor 1.1.1.5 send-community extended
exit-address-family
!
address-family l2vpn vpls
neighbor 1.1.1.5 activate
exit-address-family
CSR2 (ASBR)
!
mpls ldp discovery targeted-hello accept
!
l2vpn
logging pseudowire status
redundancy predictive enabled
pseudowire routing
switching-point vcid 1 200000
terminating-pe tie-breaker
!
interface Loopback0
ip address 1.1.1.2 255.255.255.255
ip router isis 1
!
interface GigabitEthernet1
ip address 10.2.11.2 255.255.255.0
ip router isis 1
negotiation auto
!
interface GigabitEthernet4
ip address 90.2.14.2 255.255.255.0
negotiation auto
mpls ip
mpls ldp discovery transport-address interface
mpls bgp forwarding
!
router isis 1
net 00.0000.0000.0002.00
mpls ldp autoconfig
!
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.5 remote-as 100
neighbor 1.1.1.5 update-source Loopback0
neighbor 90.2.14.14 remote-as 200
!
address-family ipv4
exit-address-family
!
address-family l2vpn vpls
no bgp default route-target filter
neighbor 1.1.1.5 activate
neighbor 1.1.1.5 next-hop-self
neighbor 90.2.14.14 activate
exit-address-family
CSR11
!
mpls ldp discovery targeted-hello accept
!
!
multilink bundle-name authenticated
l2vpn
logging pseudowire status
pseudowire routing
terminating-pe tie-breaker
!
l2vpn vfi context VPLS
vpn id 200
autodiscovery bgp signaling ldp template TMP_VPLS
vpls-id 100:200
route-target import 200:200
route-target import 100:100
route-target import 100:200
!
template type pseudowire TMP_VPLS
encapsulation mpls
sequencing both
control-word include
!
redundancy
bridge-domain 200
member GigabitEthernet3 service-instance 1
member vfi VPLS
!
interface Loopback0
ip address 2.2.2.11 255.255.255.255
!
interface GigabitEthernet1
ip address 10.11.10.11 255.255.255.0
negotiation auto
!
interface GigabitEthernet3
no ip address
negotiation auto
service instance 1 ethernet
encapsulation default
!
router ospf 1
network 2.2.2.0 0.0.0.255 area 0
network 10.0.0.0 0.255.255.255 area 0
mpls ldp autoconfig
!
router bgp 200
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.14 remote-as 200
neighbor 2.2.2.14 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family l2vpn vpls
neighbor 2.2.2.14 activate
exit-address-family
CSR1#show l2vpn atom vc
Service
Interface Peer ID VC ID Type Name Status
--------- --------------- ---------- ------ ------------------------ ----------
pw100003 1.1.1.4 100 vfi VPLS UP
pw100004 2.2.2.10 100 vfi VPLS UP
pw100006 2.2.2.11 100 vfi VPLS UP
pw100005 2.2.2.12 100 vfi VPLS UP
CSR1#show bridge-domain 1
Bridge-domain 1 (5 ports in all)
State: UP Mac learning: Enabled
Aging-Timer: 300 second(s)
GigabitEthernet3 service instance 1
vfi VPLS neighbor 1.1.1.4 100
vfi VPLS neighbor 2.2.2.10 100
vfi VPLS neighbor 2.2.2.12 100
vfi VPLS neighbor 2.2.2.11 100
AED MAC address Policy Tag Age Pseudoport
0 5000.001F.0001 forward dynamic 297 VPLS.1004014
0 5000.0022.0000 forward dynamic 299 VPLS.1004015
0 5000.0019.0001 forward dynamic 297 VPLS.1004012
0 5000.0018.0001 forward dynamic 298 GigabitEthernet3.EFP1
0 5000.0021.0001 forward dynamic 296 VPLS.1004013
CSR2# show l2vpn atom vc
Service
Interface Peer ID VC ID Type Name Status
--------- --------------- ---------- ------ ------------------------ ----------
pw100009 1.1.1.1 1 p2p mpls 2.2.2.10:1 UP
pw100007 1.1.1.1 2 p2p mpls 2.2.2.11:2 UP
pw100011 1.1.1.1 4 p2p mpls 2.2.2.12:4 UP
pw100001 1.1.1.4 1 p2p mpls 2.2.2.11:1 UP
pw100003 1.1.1.4 2 p2p mpls 2.2.2.10:2 UP
pw100005 1.1.1.4 3 p2p mpls 2.2.2.12:3 UP
pw100010 2.2.2.10 1 p2p mpls 2.2.2.10:1 UP
pw100004 2.2.2.10 2 p2p mpls 2.2.2.10:2 UP
pw100002 2.2.2.11 1 p2p mpls 2.2.2.11:1 UP
pw100008 2.2.2.11 2 p2p mpls 2.2.2.11:2 UP
pw100006 2.2.2.12 3 p2p mpls 2.2.2.12:3 UP
pw100012 2.2.2.12 4 p2p mpls 2.2.2.12:4 UP
CSR11#show l2vpn atom vc
Service
Interface Peer ID VC ID Type Name Status
--------- --------------- ---------- ------ ------------------------ ----------
pw100018 1.1.1.1 200 vfi VPLS UP
pw100014 1.1.1.4 200 vfi VPLS UP
pw100006 2.2.2.10 200 vfi VPLS UP
pw100011 2.2.2.12 200 vfi VPLS UP
CSR11#show bridge-domain 200
Bridge-domain 200 (5 ports in all)
State: UP Mac learning: Enabled
Aging-Timer: 300 second(s)
GigabitEthernet3 service instance 1
vfi VPLS neighbor 1.1.1.4 200
vfi VPLS neighbor 2.2.2.10 200
vfi VPLS neighbor 2.2.2.12 200
vfi VPLS neighbor 1.1.1.1 200
AED MAC address Policy Tag Age Pseudoport
0 5000.001F.0001 forward dynamic 297 VPLS.100401f
0 5000.0019.0001 forward dynamic 299 VPLS.100401d
0 5000.0018.0001 forward dynamic 297 VPLS.1004020
0 5000.0022.0000 forward dynamic 298 GigabitEthernet3.EFP1
0 5000.0021.0001 forward dynamic 300 VPLS.100401e
IOSv1 (CE)
router eigrp 1
network 10.1.1.0 0.0.0.255
IOSV1#show ip eigrp nei
EIGRP-IPv4 Neighbors for AS(1)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
3 10.1.1.7 Gi0/1 12 02:25:49 1371 5000 0 24
2 10.1.1.9 Gi0/1 14 02:25:49 134 804 0 22
1 10.1.1.10 Gi0/1 12 02:25:49 128 768 0 3146
0 10.1.1.2 Gi0/1 12 02:25:49 302 1812 0 3345
CSR1#ping mpls pseudowire 2.2.2.10 100
%Total number of MS-PW segments is less than segment number; Adjusting the segment number to 3
Sending 5, 72-byte MPLS Echos to 2.2.2.10,
timeout is 2 seconds, send interval is 0 msec:
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 57/152/289 ms
Total Time Elapsed 800 ms
CSR1#traceroute mpls pseudowire 2.2.2.10 100 segment 3
Tracing MS-PW segments within range [1-3] peer address 2.2.2.10 and timeout 2 seconds
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
L 1 10.2.11.2 55 ms [Labels: 40 Exp: 0]
local 1.1.1.1 remote 2.2.2.10 vc id 100
L 2 90.2.14.14 115 ms [Labels: 41 Exp: 0]
local 1.1.1.2 remote 2.2.2.14 vc id 1
! 3 10.10.10.10 105 ms [Labels: 25 Exp: 0]
local 2.2.2.14 remote 2.2.2.10 vc id 1
Thanks for stopping by!
Rob Riker, CCIE #50693
Sunday, November 25, 2018
CCIE SPv4 MPLS L2VPN VPLS BGP-AD LDP Signaling Inter AS Option A
Howdy folks!
It's been a long time in the making but I am finally back on the SP trail, this time for good and to finally finish what I started what seems like ages ago. I want to finally get done with CCIE SPv4, earn my second CCIE and move to other tracks once and for all. I have always enjoy SP topics, MPLS VPN, L2 and L3 especially, this time around I am attacking the blueprint from more of a review aspect rather than learning it for the first time.
I have also moved to running EVE-NG, after spending an entire weekend getting it up and running. It's not quite as responsive as VMs running in ESXi, but the flexibility can't be beat.
I have already covered L2VPN VPLS BGP AD with both LDP and BGP signaling in previous posts so I won't be diving into that as much. I find recluse topics like Inter AS L2VPN to not be widely documented so I figured as continue plowing through the technologies, I'll pick up where I left off with SP content.
The last time we checked out VPLS with BGP AD LDP/BGP signaling, it was in a single AS, which makes it pretty easy to work with. I liken L2VPN Option A to L3VPN Option A, the ASBRs treat each other as CE devices and create ACs on the attached connections. All that is really needed is a service instance and encapsulation to get it to work. If you were to take the previous posts on VPLS, you could pretty easily get Inter AS L2VPN up and running.
In the above screen shot, we have our topology, which is quite large, but gives us lots of flexibility to test different technologies out with. In the large SP, CSR5 is a BGP Route Reflector, CSR1, CSR4, CSR2 and XRv4 are PEs configured to run VPLS BGP AD with LDP signaling. In the SP in the upper right, CSR14 is a BGP Route Reflector, CSR11, CSR10 and CSR12 are configured to run VPLS BGP AD with LDP signaling. CSR2 and CSR14 are physically wired to each other and their locally connected interfaces are configured to be ACs to the remote ASBR. XRv doesn't support L2VPN in the data plane, the configuration is shown only for reference.
I'll lay out the configuration from left to right then show the verification and show the EIGRP adjacencies the CE routers have between each other.
SP 100
CSR5 (BGP Route Reflector)
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor IBGP peer-group
neighbor IBGP remote-as 100
neighbor IBGP update-source Loopback0
neighbor 1.1.1.1 peer-group IBGP
neighbor 1.1.1.2 peer-group IBGP
neighbor 1.1.1.4 peer-group IBGP
neighbor 1.1.1.6 peer-group IBGP
neighbor 1.1.1.14 peer-group IBGP
!
address-family ipv4
exit-address-family
!
address-family vpnv4
exit-address-family
!
address-family l2vpn vpls
neighbor IBGP send-community extended
neighbor IBGP route-reflector-client
neighbor 1.1.1.1 activate
neighbor 1.1.1.2 activate
neighbor 1.1.1.4 activate
neighbor 1.1.1.6 activate
neighbor 1.1.1.14 activate
neighbor 1.1.1.14 prefix-length-size 2
exit-address-family
CSR1, CSR4
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.5 remote-as 100
neighbor 1.1.1.5 update-source Loopback0
neighbor 1.1.1.11 remote-as 100
neighbor 1.1.1.11 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family vpnv4
exit-address-family
!
address-family l2vpn vpls
neighbor 1.1.1.5 activate
neighbor 1.1.1.5 send-community extended
neighbor 1.1.1.11 activate
neighbor 1.1.1.11 send-community extended
exit-address-family
!
interface GigabitEthernet3
service instance 1 ethernet
encapsulation default
!
l2vpn vfi context VPLS_AD_LDP
vpn id 100
autodiscovery bgp signaling ldp
!
bridge-domain 100
member GigabitEthernet3 service-instance 1
member vfi VPLS_AD_LDP
CSR2 (SP ASBR)
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.5 remote-as 100
neighbor 1.1.1.5 update-source Loopback0
neighbor 1.1.1.11 remote-as 100
neighbor 1.1.1.11 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family vpnv4
exit-address-family
!
address-family l2vpn vpls
neighbor 1.1.1.5 activate
neighbor 1.1.1.5 send-community extended
neighbor 1.1.1.11 activate
neighbor 1.1.1.11 send-community extended
exit-address-family
!
l2vpn vfi context VPLS_AD_LDP
vpn id 100
autodiscovery bgp signaling ldp
!
bridge-domain 100
member GigabitEthernet3 service-instance 1
member GigabitEthernet4 service-instance 1
member vfi VPLS_AD_LDP
!
interface GigabitEthernet3
service instance 1 ethernet
encapsulation default
!
interface GigabitEthernet4
service instance 1 ethernet
encapsulation default
XRv4
router bgp 100
address-family vpnv4 unicast
!
address-family l2vpn vpls-vpws
!
neighbor 1.1.1.5
remote-as 100
update-source Loopback0
session-open-mode active-only
address-family vpnv4 unicast
!
address-family l2vpn vpls-vpws
Signalling bgp disable
!
interface GigabitEthernet0/0/0/3
l2transport
!
l2vpn
logging
pseudowire
!
bridge group VPLS_AD_LDP
bridge-domain VPLS_AD_LDP
interface GigabitEthernet0/0/0/3
!
vfi VPLS_AD_LDP
vpn-id 100
autodiscovery bgp
rd 100:100
route-target import 100:100
route-target export 100:100
signaling-protocol ldp
SP 200
CSR14 (BGP Route Reflector)
router bgp 200
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.10 remote-as 200
neighbor 2.2.2.10 update-source Loopback0
neighbor 2.2.2.11 remote-as 200
neighbor 2.2.2.11 update-source Loopback0
neighbor 2.2.2.12 remote-as 200
neighbor 2.2.2.12 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family l2vpn vpls
neighbor 2.2.2.10 activate
neighbor 2.2.2.10 route-reflector-client
neighbor 2.2.2.11 activate
neighbor 2.2.2.11 route-reflector-client
neighbor 2.2.2.12 activate
neighbor 2.2.2.12 route-reflector-client
exit-address-family
!
interface GigabitEthernet3
no ip address
negotiation auto
service instance 1 ethernet
encapsulation default
!
l2vpn vfi context VPLS_AD_LDP
vpn id 100
autodiscovery bgp signaling ldp
!
bridge-domain 100
member GigabitEthernet3 service-instance 1
member vfi VPLS_AD_LDP
CSR11
router bgp 200
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.14 remote-as 200
neighbor 2.2.2.14 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family l2vpn vpls
neighbor 2.2.2.14 activate
exit-address-family
!
interface GigabitEthernet3
service instance 1 ethernet
encapsulation default
!
l2vpn vfi context VPLS_AD_LDP
vpn id 100
autodiscovery bgp signaling ldp
!
bridge-domain 100
member GigabitEthernet3 service-instance 1
member vfi VPLS_AD_LDP
CSR10 and CSR12
router bgp 200
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.14 remote-as 200
neighbor 2.2.2.14 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family l2vpn vpls
neighbor 2.2.2.14 activate
exit-address-family
!
interface GigabitEthernet3
service instance 1 ethernet
encapsulation default
!
l2vpn vfi context VPLS_AD_LDP
vpn id 100
autodiscovery bgp signaling ldp
!
bridge-domain 100
member GigabitEthernet3 service-instance 1
member vfi VPLS_AD_LDP
With the configuration complete, we can now begin verification. We'll look at CSR2, XRv4 and CSR11 then check a couple CEs.
CSR2#show mpls l2transport vc
Local intf Local circuit Dest address VC ID Status
------------- -------------------------- --------------- ---------- ----------
VFI VPLS_AD_LDP \
vfi 1.1.1.1 100 UP
VFI VPLS_AD_LDP \
vfi 1.1.1.4 100 UP
VFI VPLS_AD_LDP \
vfi 1.1.1.14 100 UP
CSR2#show l2vpn vfi
Legend: RT=Route-target, S=Split-horizon, Y=Yes, N=No
VFI name: VPLS_AD_LDP, state: up, type: multipoint, signaling: LDP
VPN ID: 100, VPLS-ID: 100:100
RD: 100:100, RT: 100:100,
Bridge-Domain 100 attachment circuits:
Pseudo-port interface: pseudowire100001
Interface Peer Address VC ID Discovered Router ID S
pseudowire100004 1.1.1.14 100 1.1.1.14 Y
pseudowire100003 1.1.1.4 100 1.1.1.4 Y
pseudowire100002 1.1.1.1 100 1.1.1.1 Y
CSR2#show l2vpn atom vc
Service
Interface Peer ID VC ID Type Name Status
--------- --------------- ---------- ------ ------------------------ ----------
pw100002 1.1.1.1 100 vfi VPLS_AD_LDP UP
pw100003 1.1.1.4 100 vfi VPLS_AD_LDP UP
pw100004 1.1.1.14 100 vfi VPLS_AD_LDP UP
The outputs above are different methods of looking at the same thing. The PWs are up and working. The Transport label, PE to PE connectivity is allocated via LDP, the PW label, is also allocated by LDP when the PW forms. We are not creating PWs manually here, we are leveraging BGP to Auto Discover PEs enabled for VPLS and then creating PWs on demand. You'll notice that the PW numbers start at 100000.
CSR2#show bridge-domain 100
Bridge-domain 100 (5 ports in all)
State: UP Mac learning: Enabled
Aging-Timer: 300 second(s)
GigabitEthernet3 service instance 1
GigabitEthernet4 service instance 1
vfi VPLS_AD_LDP neighbor 1.1.1.1 100
vfi VPLS_AD_LDP neighbor 1.1.1.4 100
vfi VPLS_AD_LDP neighbor 1.1.1.14 100
AED MAC address Policy Tag Age Pseudoport
0 5000.0019.0001 forward dynamic 299 VPLS_AD_LDP.1004012
0 5000.001C.0001 forward dynamic 295 GigabitEthernet3.EFP1
0 5000.001F.0001 forward dynamic 296 GigabitEthernet4.EFP1
0 5000.0018.0001 forward dynamic 295 VPLS_AD_LDP.1004011
0 5000.0022.0000 forward dynamic 297 GigabitEthernet4.EFP1
0 5000.0021.0001 forward dynamic 296 GigabitEthernet4.EFP1
The above output shows CSR2, which is a PE and ASBR, connection to another SP, shows several MAC addresses being learned. VPLS_AD_LDP indicates a MAC learned over a PW created on demand. The GigabitEthernet3.EFP1 indicates that the MAC was learned in on the AC from the either the CE or ASBR.
RP/0/0/CPU0:XRv4#show l2vpn atom-db
Mon Nov 26 00:00:53.156 UTC
Peer ID Source VC ID Encap SIG FEC AD
_______________________________________________________________________________
1.1.1.1 1.1.1.14 100:100 MPLS LDP 129 BGP
1.1.1.2 1.1.1.14 100:100 MPLS LDP 129 BGP
1.1.1.4 1.1.1.14 100:100 MPLS LDP 129 BGP
RP/0/0/CPU0:XRv4#show l2vpn bridge-domain
Mon Nov 26 00:01:35.403 UTC
Legend: pp = Partially Programmed.
Bridge group: VPLS_AD_LDP, bridge-domain: VPLS_AD_LDP, id: 0, state: up, ShgId: 0, MSTi: 0
Aging: 300 s, MAC limit: 4000, Action: none, Notification: syslog
Filter MAC addresses: 0
ACs: 1 (1 up), VFIs: 1, PWs: 3 (3 up), PBBs: 0 (0 up)
List of ACs:
Gi0/0/0/3, state: up, Static MAC addresses: 0
List of Access PWs:
List of VFIs:
VFI VPLS_AD_LDP (up)
Neighbor 1.1.1.1 pw-id 100:100, state: up, Static MAC addresses: 0
Neighbor 1.1.1.2 pw-id 100:100, state: up, Static MAC addresses: 0
Neighbor 1.1.1.4 pw-id 100:100, state: up, Static MAC addresses: 0
IOS XR has similar outputs, the fitst of which shows the PWs are up and running. The control Plane is working. The Bridge Domain on the other hand shows no MACs being learned. I have read that the XRv9000 in later code, 6.4 and later will support L2VPN in the data plane, I haven't tested this out. You could be tested on this in the lab, so it's worth knowing how to configure it.
CSR11#show mpls l2transport vc
Local intf Local circuit Dest address VC ID Status
------------- -------------------------- --------------- ---------- ----------
VFI VPLS_AD_LDP \
vfi 2.2.2.10 100 UP
VFI VPLS_AD_LDP \
vfi 2.2.2.12 100 UP
VFI VPLS_AD_LDP \
vfi 2.2.2.14 100 UP
CSR11#show bridge-domain 100
Bridge-domain 100 (4 ports in all)
State: UP Mac learning: Enabled
Aging-Timer: 300 second(s)
GigabitEthernet3 service instance 1
vfi VPLS_AD_LDP neighbor 2.2.2.10 100
vfi VPLS_AD_LDP neighbor 2.2.2.14 100
vfi VPLS_AD_LDP neighbor 2.2.2.12 100
AED MAC address Policy Tag Age Pseudoport
0 5000.0019.0001 forward dynamic 295 VPLS_AD_LDP.1004012
0 5000.001C.0001 forward dynamic 296 VPLS_AD_LDP.1004012
0 5000.001F.0001 forward dynamic 296 VPLS_AD_LDP.1004013
0 5000.0018.0001 forward dynamic 297 VPLS_AD_LDP.1004012
0 5000.0022.0000 forward dynamic 298 GigabitEthernet3.EFP1
0 5000.0021.0001 forward dynamic 296 VPLS_AD_LDP.1004011
CSR11 shows very similar output as CSR2 except this is strictly a PE.
IOSV1#sh ip eigrp nei
EIGRP-IPv4 Neighbors for AS(1)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
4 10.1.1.10 Gi0/1 12 01:34:11 62 372 0 7
3 10.1.1.9 Gi0/1 14 01:34:18 139 834 0 7
2 10.1.1.7 Gi0/1 13 01:34:22 81 486 0 6
1 10.1.1.5 Gi0/1 10 01:34:28 40 240 0 4
0 10.1.1.2 Gi0/1 12 01:34:33 1168 5000 0 1
IOSv1 has 5 EIGRP peerings setup, this is done to keep the MACs in the BDs on the PEs and ASBRs as well as to prove that the data plane is working.
Thanks for stopping by!
Rob Riker, CCIE #50693
It's been a long time in the making but I am finally back on the SP trail, this time for good and to finally finish what I started what seems like ages ago. I want to finally get done with CCIE SPv4, earn my second CCIE and move to other tracks once and for all. I have always enjoy SP topics, MPLS VPN, L2 and L3 especially, this time around I am attacking the blueprint from more of a review aspect rather than learning it for the first time.
I have also moved to running EVE-NG, after spending an entire weekend getting it up and running. It's not quite as responsive as VMs running in ESXi, but the flexibility can't be beat.
I have already covered L2VPN VPLS BGP AD with both LDP and BGP signaling in previous posts so I won't be diving into that as much. I find recluse topics like Inter AS L2VPN to not be widely documented so I figured as continue plowing through the technologies, I'll pick up where I left off with SP content.
The last time we checked out VPLS with BGP AD LDP/BGP signaling, it was in a single AS, which makes it pretty easy to work with. I liken L2VPN Option A to L3VPN Option A, the ASBRs treat each other as CE devices and create ACs on the attached connections. All that is really needed is a service instance and encapsulation to get it to work. If you were to take the previous posts on VPLS, you could pretty easily get Inter AS L2VPN up and running.
In the above screen shot, we have our topology, which is quite large, but gives us lots of flexibility to test different technologies out with. In the large SP, CSR5 is a BGP Route Reflector, CSR1, CSR4, CSR2 and XRv4 are PEs configured to run VPLS BGP AD with LDP signaling. In the SP in the upper right, CSR14 is a BGP Route Reflector, CSR11, CSR10 and CSR12 are configured to run VPLS BGP AD with LDP signaling. CSR2 and CSR14 are physically wired to each other and their locally connected interfaces are configured to be ACs to the remote ASBR. XRv doesn't support L2VPN in the data plane, the configuration is shown only for reference.
I'll lay out the configuration from left to right then show the verification and show the EIGRP adjacencies the CE routers have between each other.
SP 100
CSR5 (BGP Route Reflector)
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor IBGP peer-group
neighbor IBGP remote-as 100
neighbor IBGP update-source Loopback0
neighbor 1.1.1.1 peer-group IBGP
neighbor 1.1.1.2 peer-group IBGP
neighbor 1.1.1.4 peer-group IBGP
neighbor 1.1.1.6 peer-group IBGP
neighbor 1.1.1.14 peer-group IBGP
!
address-family ipv4
exit-address-family
!
address-family vpnv4
exit-address-family
!
address-family l2vpn vpls
neighbor IBGP send-community extended
neighbor IBGP route-reflector-client
neighbor 1.1.1.1 activate
neighbor 1.1.1.2 activate
neighbor 1.1.1.4 activate
neighbor 1.1.1.6 activate
neighbor 1.1.1.14 activate
neighbor 1.1.1.14 prefix-length-size 2
exit-address-family
CSR1, CSR4
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.5 remote-as 100
neighbor 1.1.1.5 update-source Loopback0
neighbor 1.1.1.11 remote-as 100
neighbor 1.1.1.11 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family vpnv4
exit-address-family
!
address-family l2vpn vpls
neighbor 1.1.1.5 activate
neighbor 1.1.1.5 send-community extended
neighbor 1.1.1.11 activate
neighbor 1.1.1.11 send-community extended
exit-address-family
!
interface GigabitEthernet3
service instance 1 ethernet
encapsulation default
!
l2vpn vfi context VPLS_AD_LDP
vpn id 100
autodiscovery bgp signaling ldp
!
bridge-domain 100
member GigabitEthernet3 service-instance 1
member vfi VPLS_AD_LDP
CSR2 (SP ASBR)
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.5 remote-as 100
neighbor 1.1.1.5 update-source Loopback0
neighbor 1.1.1.11 remote-as 100
neighbor 1.1.1.11 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family vpnv4
exit-address-family
!
address-family l2vpn vpls
neighbor 1.1.1.5 activate
neighbor 1.1.1.5 send-community extended
neighbor 1.1.1.11 activate
neighbor 1.1.1.11 send-community extended
exit-address-family
!
l2vpn vfi context VPLS_AD_LDP
vpn id 100
autodiscovery bgp signaling ldp
!
bridge-domain 100
member GigabitEthernet3 service-instance 1
member GigabitEthernet4 service-instance 1
member vfi VPLS_AD_LDP
!
interface GigabitEthernet3
service instance 1 ethernet
encapsulation default
!
interface GigabitEthernet4
service instance 1 ethernet
encapsulation default
XRv4
router bgp 100
address-family vpnv4 unicast
!
address-family l2vpn vpls-vpws
!
neighbor 1.1.1.5
remote-as 100
update-source Loopback0
session-open-mode active-only
address-family vpnv4 unicast
!
address-family l2vpn vpls-vpws
Signalling bgp disable
!
interface GigabitEthernet0/0/0/3
l2transport
!
l2vpn
logging
pseudowire
!
bridge group VPLS_AD_LDP
bridge-domain VPLS_AD_LDP
interface GigabitEthernet0/0/0/3
!
vfi VPLS_AD_LDP
vpn-id 100
autodiscovery bgp
rd 100:100
route-target import 100:100
route-target export 100:100
signaling-protocol ldp
SP 200
CSR14 (BGP Route Reflector)
router bgp 200
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.10 remote-as 200
neighbor 2.2.2.10 update-source Loopback0
neighbor 2.2.2.11 remote-as 200
neighbor 2.2.2.11 update-source Loopback0
neighbor 2.2.2.12 remote-as 200
neighbor 2.2.2.12 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family l2vpn vpls
neighbor 2.2.2.10 activate
neighbor 2.2.2.10 route-reflector-client
neighbor 2.2.2.11 activate
neighbor 2.2.2.11 route-reflector-client
neighbor 2.2.2.12 activate
neighbor 2.2.2.12 route-reflector-client
exit-address-family
!
interface GigabitEthernet3
no ip address
negotiation auto
service instance 1 ethernet
encapsulation default
!
l2vpn vfi context VPLS_AD_LDP
vpn id 100
autodiscovery bgp signaling ldp
!
bridge-domain 100
member GigabitEthernet3 service-instance 1
member vfi VPLS_AD_LDP
CSR11
router bgp 200
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.14 remote-as 200
neighbor 2.2.2.14 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family l2vpn vpls
neighbor 2.2.2.14 activate
exit-address-family
!
interface GigabitEthernet3
service instance 1 ethernet
encapsulation default
!
l2vpn vfi context VPLS_AD_LDP
vpn id 100
autodiscovery bgp signaling ldp
!
bridge-domain 100
member GigabitEthernet3 service-instance 1
member vfi VPLS_AD_LDP
CSR10 and CSR12
router bgp 200
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.14 remote-as 200
neighbor 2.2.2.14 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family l2vpn vpls
neighbor 2.2.2.14 activate
exit-address-family
!
interface GigabitEthernet3
service instance 1 ethernet
encapsulation default
!
l2vpn vfi context VPLS_AD_LDP
vpn id 100
autodiscovery bgp signaling ldp
!
bridge-domain 100
member GigabitEthernet3 service-instance 1
member vfi VPLS_AD_LDP
With the configuration complete, we can now begin verification. We'll look at CSR2, XRv4 and CSR11 then check a couple CEs.
CSR2#show mpls l2transport vc
Local intf Local circuit Dest address VC ID Status
------------- -------------------------- --------------- ---------- ----------
VFI VPLS_AD_LDP \
vfi 1.1.1.1 100 UP
VFI VPLS_AD_LDP \
vfi 1.1.1.4 100 UP
VFI VPLS_AD_LDP \
vfi 1.1.1.14 100 UP
CSR2#show l2vpn vfi
Legend: RT=Route-target, S=Split-horizon, Y=Yes, N=No
VFI name: VPLS_AD_LDP, state: up, type: multipoint, signaling: LDP
VPN ID: 100, VPLS-ID: 100:100
RD: 100:100, RT: 100:100,
Bridge-Domain 100 attachment circuits:
Pseudo-port interface: pseudowire100001
Interface Peer Address VC ID Discovered Router ID S
pseudowire100004 1.1.1.14 100 1.1.1.14 Y
pseudowire100003 1.1.1.4 100 1.1.1.4 Y
pseudowire100002 1.1.1.1 100 1.1.1.1 Y
CSR2#show l2vpn atom vc
Service
Interface Peer ID VC ID Type Name Status
--------- --------------- ---------- ------ ------------------------ ----------
pw100002 1.1.1.1 100 vfi VPLS_AD_LDP UP
pw100003 1.1.1.4 100 vfi VPLS_AD_LDP UP
pw100004 1.1.1.14 100 vfi VPLS_AD_LDP UP
The outputs above are different methods of looking at the same thing. The PWs are up and working. The Transport label, PE to PE connectivity is allocated via LDP, the PW label, is also allocated by LDP when the PW forms. We are not creating PWs manually here, we are leveraging BGP to Auto Discover PEs enabled for VPLS and then creating PWs on demand. You'll notice that the PW numbers start at 100000.
CSR2#show bridge-domain 100
Bridge-domain 100 (5 ports in all)
State: UP Mac learning: Enabled
Aging-Timer: 300 second(s)
GigabitEthernet3 service instance 1
GigabitEthernet4 service instance 1
vfi VPLS_AD_LDP neighbor 1.1.1.1 100
vfi VPLS_AD_LDP neighbor 1.1.1.4 100
vfi VPLS_AD_LDP neighbor 1.1.1.14 100
AED MAC address Policy Tag Age Pseudoport
0 5000.0019.0001 forward dynamic 299 VPLS_AD_LDP.1004012
0 5000.001C.0001 forward dynamic 295 GigabitEthernet3.EFP1
0 5000.001F.0001 forward dynamic 296 GigabitEthernet4.EFP1
0 5000.0018.0001 forward dynamic 295 VPLS_AD_LDP.1004011
0 5000.0022.0000 forward dynamic 297 GigabitEthernet4.EFP1
0 5000.0021.0001 forward dynamic 296 GigabitEthernet4.EFP1
The above output shows CSR2, which is a PE and ASBR, connection to another SP, shows several MAC addresses being learned. VPLS_AD_LDP indicates a MAC learned over a PW created on demand. The GigabitEthernet3.EFP1 indicates that the MAC was learned in on the AC from the either the CE or ASBR.
RP/0/0/CPU0:XRv4#show l2vpn atom-db
Mon Nov 26 00:00:53.156 UTC
Peer ID Source VC ID Encap SIG FEC AD
_______________________________________________________________________________
1.1.1.1 1.1.1.14 100:100 MPLS LDP 129 BGP
1.1.1.2 1.1.1.14 100:100 MPLS LDP 129 BGP
1.1.1.4 1.1.1.14 100:100 MPLS LDP 129 BGP
RP/0/0/CPU0:XRv4#show l2vpn bridge-domain
Mon Nov 26 00:01:35.403 UTC
Legend: pp = Partially Programmed.
Bridge group: VPLS_AD_LDP, bridge-domain: VPLS_AD_LDP, id: 0, state: up, ShgId: 0, MSTi: 0
Aging: 300 s, MAC limit: 4000, Action: none, Notification: syslog
Filter MAC addresses: 0
ACs: 1 (1 up), VFIs: 1, PWs: 3 (3 up), PBBs: 0 (0 up)
List of ACs:
Gi0/0/0/3, state: up, Static MAC addresses: 0
List of Access PWs:
List of VFIs:
VFI VPLS_AD_LDP (up)
Neighbor 1.1.1.1 pw-id 100:100, state: up, Static MAC addresses: 0
Neighbor 1.1.1.2 pw-id 100:100, state: up, Static MAC addresses: 0
Neighbor 1.1.1.4 pw-id 100:100, state: up, Static MAC addresses: 0
IOS XR has similar outputs, the fitst of which shows the PWs are up and running. The control Plane is working. The Bridge Domain on the other hand shows no MACs being learned. I have read that the XRv9000 in later code, 6.4 and later will support L2VPN in the data plane, I haven't tested this out. You could be tested on this in the lab, so it's worth knowing how to configure it.
CSR11#show mpls l2transport vc
Local intf Local circuit Dest address VC ID Status
------------- -------------------------- --------------- ---------- ----------
VFI VPLS_AD_LDP \
vfi 2.2.2.10 100 UP
VFI VPLS_AD_LDP \
vfi 2.2.2.12 100 UP
VFI VPLS_AD_LDP \
vfi 2.2.2.14 100 UP
CSR11#show bridge-domain 100
Bridge-domain 100 (4 ports in all)
State: UP Mac learning: Enabled
Aging-Timer: 300 second(s)
GigabitEthernet3 service instance 1
vfi VPLS_AD_LDP neighbor 2.2.2.10 100
vfi VPLS_AD_LDP neighbor 2.2.2.14 100
vfi VPLS_AD_LDP neighbor 2.2.2.12 100
AED MAC address Policy Tag Age Pseudoport
0 5000.0019.0001 forward dynamic 295 VPLS_AD_LDP.1004012
0 5000.001C.0001 forward dynamic 296 VPLS_AD_LDP.1004012
0 5000.001F.0001 forward dynamic 296 VPLS_AD_LDP.1004013
0 5000.0018.0001 forward dynamic 297 VPLS_AD_LDP.1004012
0 5000.0022.0000 forward dynamic 298 GigabitEthernet3.EFP1
0 5000.0021.0001 forward dynamic 296 VPLS_AD_LDP.1004011
CSR11 shows very similar output as CSR2 except this is strictly a PE.
IOSV1#sh ip eigrp nei
EIGRP-IPv4 Neighbors for AS(1)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
4 10.1.1.10 Gi0/1 12 01:34:11 62 372 0 7
3 10.1.1.9 Gi0/1 14 01:34:18 139 834 0 7
2 10.1.1.7 Gi0/1 13 01:34:22 81 486 0 6
1 10.1.1.5 Gi0/1 10 01:34:28 40 240 0 4
0 10.1.1.2 Gi0/1 12 01:34:33 1168 5000 0 1
IOSv1 has 5 EIGRP peerings setup, this is done to keep the MACs in the BDs on the PEs and ASBRs as well as to prove that the data plane is working.
Thanks for stopping by!
Rob Riker, CCIE #50693
Subscribe to:
Posts (Atom)