Inter-AS L3VPN Pt. 4, Option C
Option C involves cooperation between the two SPs to a much greater extent than Option A or B. In Option C, the vpnv4 unicast table becomes globally significant. The LSP is end-to-end, as the VPN label advertised by PE in SP2 is learned by SP1. To accomplish this, the RRs in each SP peer with one another. In order for the RRs to peer and for PEs to have reachability to the vpnv4 routes advertised by the PEs in the other SP, the ASBRs advertise the loopbacks of the PEs to each other. This traffic has to be labeled of course, so instead of running LDP you run BGP-LU. Each /32 loopback IP that is advertised has a label associated with it, which is allocated by each ASBR.
I’m sure this sounds a little confusing, so let’s configure this and see how it works.
Lab
First we’ll remove the vpnv4 unicast neighborship between the ASBRs. We’ll create a BGP-LU session and redistribute /32s from OSPF into BGP, allocating a label for them.
#SP1_R3
ip prefix-list LOOPBACKS_PL permit 0.0.0.0/0 ge 32
!
route-map PE_LOOPBACKS
match ip address prefix-list LOOPBACKS_PL
!
router bgp 100
no address-family vpnv4
redistribute ospf 1 route-map PE_LOOPBACKS
neighbor 100.1.1.2 send-label
#SP2_XR1
route-policy PE_LOOPBACKS
if destination in ( 0.0.0.0/0 eq 32 ) then
pass
exit
end-policy
!
router bgp 200
address-family ipv4 unicast
allocate-label route-policy PE_LOOPBACKS
redistribute isis 1 route-policy PE_LOOPBACKS
neighbor 100.1.1.1
no address-family vpnv4 unicast
address-family ipv4 labeled-unicast
route-policy PE_LOOPBACKS in
route-policy PE_LOOPBACKS outThe problem is that the PEs of both SPs share the same private loopback IPs. In the real world, you would need to coordinate this which would be quite a lot of work, or you would use public IP address space for your loopbacks, which uses up valueable IPv4 space. Let’s simply change the loopbacks of SP2 to 20.X.X.X for simplicity in this lab. Right now SP2_XR1 is not acting as a PE so we’ll just remove the session to the RR as well.
The ASBRs have learned the PE loopbacks and labels for these loopbacks via BGP-LU
Now we’ll redistribute these into the IGP.
The RRs should be able to now peer with each other on the vpnv4 unicast addres-family. We need to set the RRs to leave the nexthop unchanged so that the RRs are not inserted into the traffic flow. This is an eBGP session, so by default the router will change the nexthop to itself. (With normal Intra-AS L3VPN, the RR would not change the nexthop on an iBGP learned route that is reflected to an iBGP client, so this is not an issue).
CE1 can now reach CE2:
Notice above that the VPN label (18) is carried all the way through the LSP. SP1_XR1 has the route that SP2_R3 injected into the vpnv4 unicast table.
Conclusion
Option C requires a lot of trust between the two SPs, and for this reason I would assume it is not used very often. SPs have to share routes to their PE loopbacks, which in itself has some issues you must account for. Each SP then exchanges its vpnv4 table through the RRs instead of through the ASBRs. This allows for more flexibility, as the ASBRs don’t need to exchange routes for vpnv4 unicast any longer. However this has more complexity than Option B given the need to exchange PE loopbacks and labels for these loopbacks over BGP-LU.
Last updated