VPLS with LDP/BGP-AD and XRv RR

Load basic.vpls.ldp.init.cfg

#IOS-XE (R1-R6, CE1-3)
config replace flash:basic.vpls.ldp.init.cfg

#IOS-XR (XR1, XR2)
configure
load basic.vpls.ldp.init.cfg
commit replace
y

The CE routers CE1-3 are preconfigured with EIGRP.

  • Configure VPLS and verify that the EIGRP neighborships come up.

  • Use LDP for the signaling of the service label, but do not manually specify neighbors under the VFI.

  • Use XR1 as the RR for BGP-AD.

  • Turn the CW off for all dynamically discovered tLDP sessions.

Answer

#XR1
router bgp 65000
 add l2vpn vpls
 !
 neighbor-group IBGP
  remote-as 65000
  update-source Loopback0
  address-family l2vpn vpls-vpws
   route-reflector-client
   Signalling bgp disable
 !
 neighbor 1.1.1.1 use neighbor-group IBGP
 neighbor 3.3.3.3 use neighbor-group IBGP
 neighbor 5.5.5.5 use neighbor-group IBGP

#R1
router bgp 65000
 neighbor 11.11.11.11 remote-as 65000
 neighbor 11.11.11.11 update-so lo0
 add l2vpn vpls
  neighbor 11.11.11.11 activate
  neighbor 11.11.11.11 prefix-length-size 2
!
int gi4
 service instance 1 eth
  encap default
 exit
!
template type pseudowire NO_CW
 encapsulation mpls
 control-word exclude
!
l2vpn vfi context VPLS1
 vpn id 100
 autodiscovery bgp signaling ldp template NO_CW
!
bridge-domain 100
 member gi4 service-instance 1
 member vfi VPLS1

#R3, R5
router bgp 65000
 neighbor 11.11.11.11 remote-as 65000
 neighbor 11.11.11.11 update-so lo0
 add l2vpn vpls
  neighbor 11.11.11.11 activate
  neighbor 11.11.11.11 prefix-length-size 2
!
int gi6
 service instance 1 eth
  encap default
 exit
!
template type pseudowire NO_CW
 encapsulation mpls
 control-word exclude
!
l2vpn vfi context VPLS1
 vpn id 100
 autodiscovery bgp signaling ldp template NO_CW
!
bridge-domain 100
 member gi6 service-instance 1
 member vfi VPLS1

Explanation

IOS-XR uses negative logic for the signaling protocol under l2vpn/vpls. To use LDP, you use signaling bgp disable. To use BGP, you use signaling ldp disable.

In this lab, we are using BGP for auto-discovery, and LDP for signaling, therefore we use the following config on the XR RR:

router bgp 65000
 neighbor-group IBGP
  address-family l2vpn vpls-vpws
   route-reflector-client
   Signalling bgp disable

IOS-XE simply uses LDP by default, and uses BGP with disable-signaling-protocol ldp. Therefore we don't need any special command on the IOS-XE RR clients.

However, we must fix an interoperability issue between XE and XR. The XE routers must specify the XR neighbor as prefix-length-size 2. The original implementation of IOS BGP AD only used 1 byte for prefix length, but XR is expecting 2 bytes.

router bgp 65000
 add l2vpn vpls
  neighbor 11.11.11.11 prefix-length-size 2

Finally, we can associate pseudowire templates with the autodiscovery command. This allows us to toggle specific features, such as the CW.

template type pseudowire NO_CW
 encapsulation mpls
 control-word exclude
!
l2vpn vfi context VPLS1
 vpn id 100
 autodiscovery bgp signaling ldp template NO_CW

We can verify that the CW is off:

Last updated