6VPE is a network technology that allows IPv6 routes to be included in L3VPN VRFs. A new address family, vpnv6 has been added to MP-BGP to support these operations. An existing IPv4+MPLS L3VPN core is used and this technology functions without IPv6 running on the P routers in the core. VPNv6 address-family neighbors are peered via IPv4 addresses just like vpnv4 address families.
The primary reason for this solution is as of this writing LDP does not support IPv6 prefixes. You can not create a fully functional label switched core using IPv6. This requires making use of an existing IPv4 label switched core in order to distribute IPv6 labels properly. 6VPE is a solution for using IPv6 inside of L3VPNs, while 6PE is a technology for using IPv6 in the global table on a label switched core.
Here is the network we will be using for this example:
Basic core configuration
The first step in setting up a network like this is to get the core configured with LDP and OSPF. The idea here is to give R1 the ability to ping R3 Loopback0 from R1 Loopback0, while making use of label switching. This will be the base that we build the L3VPN MP-BGP peering on later.
We will walk through the configuration of R1. Full router configs are included at the end of the article.
Configure loopback interface:
interface Loopback0 ip address 22.214.171.124 255.255.255.255 end
Enable MPLS and IP:
mpls ip mpls label protocol ldp mpls ldp router-id Loopback0
router ospf 123 router-id 126.96.36.199 log-adjacency-changes network 188.8.131.52 0.0.0.0 area 0 network 184.108.40.206 0.0.0.0 area 0
Provision PE-P link:
interface FastEthernet1/0 description ** Connection to R2 f1/0 ** ip address 220.127.116.11 255.255.255.0 speed auto duplex auto mpls ip end
This should give you a good idea of how we are configuring the core. Basically repeat this process on the other routers to get a complete end-to-end LSP (label switched path) between R1 and R3. You can verify this by reviewing a few pieces of information. Examples are below.
R3 routing table:
R3#sh ip route Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP + - replicated route, % - next hop override Gateway of last resort is not set 18.104.22.168/8 is variably subnetted, 6 subnets, 2 masks O 22.214.171.124/24 [110/2] via 126.96.36.199, 00:00:57, FastEthernet1/0 C 188.8.131.52/24 is directly connected, FastEthernet1/0 L 184.108.40.206/32 is directly connected, FastEthernet1/0 O 220.127.116.11/32 [110/3] via 18.104.22.168, 00:00:57, FastEthernet1/0 O 22.214.171.124/32 [110/2] via 126.96.36.199, 00:00:57, FastEthernet1/0 C 188.8.131.52/32 is directly connected, Loopback0 R3 mpls forwarding table R3#sh mpls forwarding-table Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 16 Pop Label 184.108.40.206/24 0 Fa1/0 220.127.116.11 17 16 18.104.22.168/32 0 Fa1/0 22.214.171.124 18 Pop Label 126.96.36.199/32 0 Fa1/0 188.8.131.52
Finally a traceroute to R1 Loopback0 from R3:
R3#trace 184.108.40.206 so lo0 Type escape sequence to abort. Tracing the route to 220.127.116.11 1 18.104.22.168 [MPLS: Label 16 Exp 0] 64 msec 84 msec 64 msec 2 22.214.171.124 120 msec 80 msec *
Based on the output from the verification commands we can see we have routes and labels between R1 and R3. This is necessary to be able to do MP-BGP peering between R1 and R3 for L3VPN label distribution. With proper connectivity now established we’ll move onto getting VPNv6 peering configured and verified.
MP-BGP VPNv6 Peering
Now that we have our IPv4+MPLS core configured we can layer on the L3VPN configuration to support IPv6 transport.
Our configuration example will focus on R1. Full config files for the other routers are available at the end of this article.
Enable IPv6 on R1
ipv6 unicast-routing ipv6 cef
Configure VRF that will have IPv6 in it:
vrf definition 6vpe rd 123:1 route-target export 123:1 route-target import 123:3 ! address-family ipv4 exit-address-family ! address-family ipv6 exit-address-family
Configure CE facing interface with IPv6 and VRF defined
interface FastEthernet1/1 description ** Connection to R4 (VRF 6vpe) ** vrf forwarding 6vpe no ip address speed 10 duplex half ipv6 address FEC0::1/64 end
Configure MP-BGP peering for VPNv6 between R1 and R3
router bgp 123 no bgp default ipv4-unicast bgp log-neighbor-changes neighbor 126.96.36.199 remote-as 123 neighbor 188.8.131.52 update-source Loopback0 ! address-family ipv4 no synchronization no auto-summary exit-address-family ! address-family vpnv6 neighbor 184.108.40.206 activate neighbor 220.127.116.11 send-community both exit-address-family ! address-family ipv6 vrf 6vpe redistribute connected redistribute static no synchronization exit-address-family
Create static route on R1 to get to Loopback0 on R4
ipv6 route vrf 6vpe FEC0:0:0:1::/64 FEC0::2
This configuration is basically mirrored onto R3. Once the configs are complete the verification process can begin.
Verify mpls forwarding table on R1:
R1#sh mpls forwarding-table Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 16 Pop Label 18.104.22.168/32 0 Fa1/0 22.214.171.124 17 Pop Label 126.96.36.199/24 0 Fa1/0 188.8.131.52 18 19 184.108.40.206/32 0 Fa1/0 220.127.116.11 19 No Label FEC0::/64[V] 3108 aggregate/6vpe 20 No Label FEC0:0:0:1::/64[V] 3762 Fa1/1 FEC0::2
Traceroute from R1 to R3 on 6VPE vrf
R1#trace vrf 6vpe ipv6 fec0:0:0:3::1 Type escape sequence to abort. Tracing the route to FEC0:0:0:3::1 1 ::FFFF:18.104.22.168 [MPLS: Labels 19/20 Exp 0] 116 msec 104 msec 84 msec 2 FEC0:0:0:2::1 [MPLS: Label 20 Exp 0] 80 msec 68 msec 48 msec 3 FEC0:0:0:3::1 104 msec 56 msec 68 msec
Traceroute from R4 to R5 over the 6VPE L3VPN
R4#trace ipv6 fec0:0:0:3::1 Type escape sequence to abort. Tracing the route to FEC0:0:0:3::1 1 FEC0::1 56 msec 16 msec 12 msec 2 ::FFFF:22.214.171.124 40 msec 28 msec 16 msec 3 FEC0:0:0:2::1 48 msec 20 msec 32 msec 4 FEC0:0:0:3::1 48 msec 20 msec 24 msec
6VPE, at the moment, is the best solution for establishing IPv6 connectivity inside of existing IPv4 L3VPNs, or for creating IPv6-only L3VPNs. From a configuration stand-point its basically adding an IPv6 address family to the VRF, VPNv6 and IPv6 address family to BGP, and placing an IPv6 address on a VRF enabled interface. IPv6 traffic is labeled and transmitted across an IPv4+MPLS network using label switching.