The Issue
I’m writing this to give fellow Cisco Modeling Lab users a heads up about configuring VPLS on IOS XRd. I spent a lot of time troubleshooting this and there isn’t much information on the internet. In short the VPLS or EVPN data plane / forwarding plane does not work on the IOS XRd image. Only the control plane works.
What this means is that even if you configure the bridge group, bridge domain, and VFIs correctly data will not be forwarded. The Pseudowires and attachment circuits will come up as you can see in the screenshots below, but no MAC addresses will be learned. This can be confusing to troubleshoot since typical verification commands show everything is up. This is because they are up from a control plane standpoint.




If you try to send traffic through those Pseudowires it will not be forwarded. No MAC addresses will be learned by the bridge domains either. So if you’re trying to figure out why IOS XRd isn’t forwarding VPLS traffic this is why.
The only reference to this issue that I could find was a Cisco Community post from 2015: VPLS Not Working on Cisco IOS XR CRS 5.3. The user was having trouble configuring VPLS on IOS XRv and Cisco support confirmed that the VPLS data plane didn’t work on IOS XRv. IOS XRd is the successor to XRv and it seems to have inherited this disappointing trait.
This also applies to EVPN too. EVPN does not work on IOS XRd or XRv, it is control plane only as well. I was able to confirm this here: EVPN and Bridge domain not working in CML. No multipoint layer 2 VPNs work in IOS XRd or XRv. Point to Point (VPWS) L2VPNs do work without issue, you can see my lab write up on VPWS here: How to Build a Layer 2 VPN (VPWS) in Cisco Modeling Labs.
The Solution
If you need a workaround, IOS XE imaged like the CSR1000v or Cat8000v have functioning EVPN / VPLS data planes. I’ll warn you that they are more resource heavy compared to the containerized XRd image. Because of this I had to shrink my topology for my VPLS lab.
I really hope this can save people some time and stress. It took me a while to figure out why this was happening, partly because I was using AIs to troubleshoot and they weren’t aware of this issue since it’s not mentioned anywhere online (for XRd). Well, it is now.