The 6PE solution allows IPv6 traffic to traverse an existing IPv4 MPLS network without requiring the MPLS core to support IPv6 natively. In this section, we will explain the underlying mechanics of 6PE and provide a Cisco-based configuration example to demonstrate its implementation in a practical, real-world scenario.
Table of Contents
6PE Fundamental
6PE vs. 6VPE
One application of IPv6-over-IPv4 tunneling is in service provider networks, where customer sites are interconnected through IPv4 MPLS services like MPLS VPN and VPLS. But what happens when the customers of such a provider decide to exchange IPv6 traffic between their sites?
Migrating to an IPv6 backbone can be a complex and resource-intensive process for service providers, especially given the current limitations of MPLS in IPv6 networks.
To address this challenge without requiring a complete backbone migration, service providers can use two key solutions: 6PE and 6VPE.
Concept | Description |
---|---|
Challenge | Service providers face difficulty exchanging IPv6 traffic between customer sites using IPv4 MPLS services like MPLS VPN and VPLS. |
Solution | Migrating to an IPv6 backbone is complex. Two solutions, 6PE and 6VPE, help address this without a complete migration. |
6PE |
|
6VPE |
|
6PE (IPv6 Provider Edge):
In 6PE, customer traffic is routed without isolating customers using VRFs. Consequently, overlapping addresses are not supported between different customers. However, in the IPv6 world, overlapping addresses are rarely needed, as there is enough IPv6 address space available for each customer. This lesson focuses on 6PE.
6VPE (IPv6 VPN Provider Edge):
In contrast, 6VPE isolates different customers using VRFs, which enables support for overlapping addresses. The details of 6VPE will be covered in the next lesson.
6PE Core Concept
What is the Core Concept of 6PE (and 6VPE)?
Understanding 6PE and 6VPE is significantly easier if you have a foundational knowledge of MPLS and MPLS VPNs. It is highly recommended that you familiarize yourself with these concepts before delving into the detail configuration of 6PE and 6VPE mechanisms.
In 6PE:
Control Plane: IPv4-based BGP is used to advertise IPv6 routes between Provider Edge (PE) routers.
Data Plane: IPv6 packets are encapsulated within MPLS labels for transport across the IPv4 MPLS backbone.
How Does 6PE Work?
Route Advertisement: PE routers use IPv4-based BGP to learn which PE router is responsible for each IPv6 subnet.
Encapsulation: Once this information is available, PE routers encapsulate IPv6 traffic destined for that specific subnet within MPLS labels or Label Switched Paths (LSPs) to the corresponding PE router.
Traffic Forwarding: Encapsulated IPv6 packets are forwarded across the IPv4 MPLS backbone using these labels.
Cisco 6PE Configuration Example
To better understand 6PE (IPv6 Provider Edge), I’ve prepared a topology similar to the one used in the 6PE operation example. In this setup, there are one P router, two PE routers and a single customer with two sites, where each site is connected to one PE router.
This is the procedure to implement 6PE:
1. Configure IPv4 Addressing and OSPF in the IPv4 Backbone:
Set up IPv4 addressing and configure OSPF routing on the IPv4 backbone.
Ensure that the loopback addresses of the PE routers are reachable from each other to verify basic connectivity.
!!! PE1 interface Loopback0 ip address 10.10.10.1 255.255.255.255 ! interface Ethernet0/0 no shutdown ip address 10.1.1.2 255.255.255.0 ! interface Ethernet0/1 no shutdown ipv6 address 2001:BEBE:1:1::1/64 ! router ospf 1 router-id 10.10.10.1 network 10.0.0.0 0.255.255.255 area 0
!!! PE2 interface Loopback0 ip address 10.10.10.2 255.255.255.255 ! interface Ethernet0/0 no shutdown ip address 10.1.2.2 255.255.255.0 ! interface Ethernet0/1 no shutdown ipv6 address 2001:BEBE:1:2::1/64 ! router ospf 1 router-id 10.10.10.2 network 10.0.0.0 0.255.255.255 area 0
!!! P interface Loopback0 ip address 10.10.10.10 255.255.255.255 ! interface Ethernet0/0 no shutdown ip address 10.1.1.1 255.255.255.0 ! interface Ethernet0/1 no shutdown ip address 10.1.2.1 255.255.255.0 ! router ospf 1 router-id 10.10.10.10 network 10.0.0.0 0.255.255.255 area 0
PE1#ping 10.10.10.2 source 10.10.10.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.10.10.2, timeout is 2 seconds: Packet sent with a source address of 10.10.10.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/5/7 ms
2. Enable MPLS in the Service Provider’s IPv4 Backbone:
Configure MPLS in the IPv4 backbone of the service provider.
Use the
traceroute
command to confirm that traffic between the PE routers is being forwarded with MPLS labels.
!!! PE1 ip cef ! mpls label protocol ldp ! interface Ethernet0/0 mpls ip ! mpls ldp router-id Loopback0
!!! PE2 ip cef ! mpls label protocol ldp ! interface Ethernet0/0 mpls ip ! mpls ldp router-id Loopback0
!!! P ip cef ! mpls label protocol ldp ! interface Ethernet0/0 mpls ip ! interface Ethernet0/1 mpls ip ! mpls ldp router-id Loopback0
PE1#traceroute 10.10.10.2 source 10.10.10.1 Type escape sequence to abort. Tracing the route to 10.10.10.2 VRF info: (vrf in name/id, vrf out name/id) 1 10.1.1.1 [MPLS: Label 16 Exp 0] 10 msec 5 msec 6 msec 2 10.1.2.2 8 msec 6 msec 5 msec
3. Configure IPv4 BGP Between PE Routers:
Set up IPv4 BGP peering between the PE routers.
Ensure that the BGP neighborship is established correctly by checking the BGP status.
!!! PE1 router bgp 1 bgp router-id 10.10.10.1 bgp log-neighbor-changes neighbor 10.10.10.2 remote-as 1 neighbor 10.10.10.2 update-source Loopback0 ! address-family ipv4 neighbor 10.10.10.2 activate neighbor 10.10.10.2 next-hop-self exit-address-family
!!! PE2 router bgp 1 bgp router-id 10.10.10.2 bgp log-neighbor-changes neighbor 10.10.10.1 remote-as 1 neighbor 10.10.10.1 update-source Loopback0 ! address-family ipv4 neighbor 10.10.10.1 activate neighbor 10.10.10.1 next-hop-self exit-address-family
PE1#show ip bgp summary BGP router identifier 10.10.10.1, local AS number 1 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.10.10.2 4 1 736 743 1 0 0 11:06:00 0
4. Enable BGP to Advertise IPv6 Routes and MPLS Labels:
Activate BGP to advertise IPv6 routes and the corresponding MPLS labels for each route.
Verify that the IPv6 routes and MPLS labels are correctly exchanged between the PE routers.
!!! PE1 router bgp 1 address-family ipv6 network 2001:BEBE:1:1::/64 neighbor 10.10.10.2 activate neighbor 10.10.10.2 send-community both neighbor 10.10.10.2 send-label exit-address-family
!!! PE2 router bgp 1 address-family ipv6 network 2001:BEBE:1:2::/64 neighbor 10.10.10.1 activate neighbor 10.10.10.1 send-community both neighbor 10.10.10.1 send-label exit-address-family
PE1#show bgp ipv6 unicast BGP table version is 3, local router ID is 10.10.10.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 *> 2001:BEBE:1:1::/64 :: 0 32768 i *>i 2001:BEBE:1:2::/64 ::FFFF:10.10.10.2 0 100 0 i
PE1#show bgp ipv6 unicast labels Network Next Hop In label/Out label 2001:BEBE:1:1::/64 :: 19/nolabel 2001:BEBE:1:2::/64 ::FFFF:10.10.10.2 nolabel/19
5. Configure IPv6 Connectivity for Customer Sites:
Set up IPv6 addressing for the customer’s sites (CE routers) and configure IPv6 routing between the PE and CE routers.
Configure an IPv6 default route to ensure that all IPv6 traffic is forwarded to the appropriate PE router.
!!! PE1 ipv6 unicast-routing ipv6 cef ! interface Ethernet0/1 no shutdown ipv6 address 2001:BEBE:1:1::1/64
!!! PE2 ipv6 unicast-routing ipv6 cef ! interface Ethernet0/1 no shutdown ipv6 address 2001:BEBE:1:2::1/64
!!!! CE1 interface Ethernet0/0 no shutdown ipv6 address 2001:BEBE:1:1::2/64 ! ipv6 route ::/0 2001:BEBE:1:1::1
!!!! CE2 interface Ethernet0/0 no shutdown ipv6 address 2001:BEBE:1:2::2/64 ! ipv6 route ::/0 2001:BEBE:1:2::1
6. Verify End-to-End Connectivity:
Use
ping
andtraceroute
commands to test end-to-end IPv6 connectivity between the PE routers and ensure proper forwarding of traffic.
CE1#ping 2001:BEBE:1:2::2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2001:BEBE:1:2::2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/5 ms
CE1#traceroute 2001:BEBE:1:2::2 Type escape sequence to abort. Tracing the route to 2001:BEBE:1:2::2 1 2001:BEBE:1:1::1 0 msec 5 msec 5 msec 2 ::FFFF:10.1.1.1 [MPLS: Labels 16/19 Exp 0] 1 msec 2 msec 1 msec 3 2001:BEBE:1:2::1 0 msec 0 msec 5 msec 4 2001:BEBE:1:2::2 5 msec 5 msec 4 msec
This is the complete configuration code that consolidates all the necessary configurations.
!!! PE1 hostname PE1 ! ip cef ipv6 unicast-routing ipv6 cef ! mpls label protocol ldp ! interface Loopback0 ip address 10.10.10.1 255.255.255.255 ! interface Ethernet0/0 no shutdown ip address 10.1.1.2 255.255.255.0 mpls ip ! interface Ethernet0/1 no shutdown ipv6 address 2001:BEBE:1:1::1/64 ! router ospf 1 router-id 10.10.10.1 network 10.0.0.0 0.255.255.255 area 0 ! router bgp 1 bgp router-id 10.10.10.1 bgp log-neighbor-changes neighbor 10.10.10.2 remote-as 1 neighbor 10.10.10.2 update-source Loopback0 ! address-family ipv4 neighbor 10.10.10.2 activate neighbor 10.10.10.2 next-hop-self exit-address-family ! address-family ipv6 network 2001:BEBE:1:1::/64 neighbor 10.10.10.2 activate neighbor 10.10.10.2 send-community both neighbor 10.10.10.2 send-label exit-address-family ! mpls ldp router-id Loopback0
!!! PE2 hostname PE2 ! ip cef ipv6 unicast-routing ipv6 cef ! mpls label protocol ldp ! interface Loopback0 ip address 10.10.10.2 255.255.255.255 ! interface Ethernet0/0 no shutdown ip address 10.1.2.2 255.255.255.0 mpls ip ! interface Ethernet0/1 no shutdown ipv6 address 2001:BEBE:1:2::1/64 ! router ospf 1 router-id 10.10.10.2 network 10.0.0.0 0.255.255.255 area 0 ! router bgp 1 bgp router-id 10.10.10.2 bgp log-neighbor-changes neighbor 10.10.10.1 remote-as 1 neighbor 10.10.10.1 update-source Loopback0 ! address-family ipv4 neighbor 10.10.10.1 activate neighbor 10.10.10.1 next-hop-self exit-address-family ! address-family ipv6 network 2001:BEBE:1:2::/64 neighbor 10.10.10.1 activate neighbor 10.10.10.1 send-community both neighbor 10.10.10.1 send-label exit-address-family ! mpls ldp router-id Loopback0
!!! P hostname P ! ip cef ipv6 unicast-routing ipv6 cef ! mpls label protocol ldp ! interface Loopback0 ip address 10.10.10.10 255.255.255.255 ! interface Ethernet0/0 no shutdown ip address 10.1.1.1 255.255.255.0 mpls ip ! interface Ethernet0/1 no shutdown ip address 10.1.2.1 255.255.255.0 mpls ip ! router ospf 1 router-id 10.10.10.10 network 10.0.0.0 0.255.255.255 area 0 ! mpls ldp router-id Loopback0