IPv6 transition – MPLS 6VPE lab
Today we are going to work on an IPv6 transition mechanism called 6VPE.
6VPE/6PE uses the underlying IPv4 MPLS/MPLS VPN network to carry IPv6 packets.
To realize this lab, PE routers and route-reflectors need to be IPv6/VPNv6 ready. P routers forward packets based on MPLS information ignoring the layer 3.
Based on LACNIC drawings, here’s a brief explanation
The topology:
Pros:
– Only RR, PE and CPE need IPv6
– P core routers are left unchanged
– No need to run a dual stack network (IP/IPv6, OSPF/OSPFv3)
– Possible to have dual stack customers
– Non disruptive
Prerequisites:
– A MPLS VPN network
– RR, PE, and CPE IPv6 ready (hardware processing must be supported)
Steps:
– IPv6/VPNv6 compatible MP-BGP between RR1 and all the PEs,
– VRFs v6 for each customers on the PEs,
– IPv6 compatible (and supported…) routing protocol for PE-CE communication. It is also possible to set static routes (redistribute static and connected).
Route reflector configuration (activate IPv6 routing, VPNv6 peering)
ipv6 unicast-routing ! router bgp 65000 address-family vpnv6 neighbor RRCLIENT send-community both neighbor RRCLIENT route-reflector-client neighbor 5.5.5.5 activate neighbor 6.6.6.6 activate exit-address-family
PE configuration
ip vrf becomes vrf definition, ip vrf forwarding becomes vrf forwarding
The statement address-family ipv4 in the VRF definition is needed to use the command ping vrf X…
ipv6 unicast-routing ipv6 cef ! vrf definition A description Customer A rd 65000:3 ! address-family ipv4 exit-address-family ! address-family ipv6 route-target export 65000:3 route-target import 65000:3 exit-address-family ! interface FastEthernet1/0 vrf forwarding A no ip address duplex full speed 100 ipv6 address 2001::1/64 ipv6 address autoconfig ! router bgp 65000 address-family vpnv6 neighbor 1.1.1.1 activate neighbor 1.1.1.1 send-community both exit-address-family ! address-family ipv6 vrf A redistribute static redistribute connected no synchronization exit-address-family ! ipv6 route vrf A 2008::/64 2001::2
CPE configuration
ipv6 unicast-routing ! interface FastEthernet0/0 no ip address speed 100 full-duplex ipv6 address 2001::2/64 ipv6 address autoconfig ! ipv6 route ::/0 2001::1
Let’s have a closer look to the path
First the packet is sent out ACPE2 thanks to default route.
ACPE2#sh ipv route static IPv6 Routing Table - 7 entries S ::/0 [1/0] via 2001::1
It enters PE2 in VRF A. The VRF A routing table shows us a recursive lookup inside the default IPv4 routing table.
PE2#sh ipv route vrf A ... B 2002::/64 [200/0] via 6.6.6.6%default, indirectly connected B 2009::/64 [200/0] via 6.6.6.6%default, indirectly connected ... PE2#sh ip route 6.0.0.0 Routing entry for 6.0.0.0/32, 1 known subnets O 6.6.6.6 [110/4] via 52.52.52.2, 00:12:43, FastEthernet1/1
To reach the 6.6.6.6 the packet will use MPLS switching (label 28)
PE2#sh mpls forwarding-table 6.6.6.6 Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 22 28 6.6.6.6/32 0 Fa1/1 52.52.52.2
The MPLS VPN tag is 35
PE2#sh ip bgp vpnv6 unicast all labels Network Next Hop In label/Out label Route Distinguisher: 65000:3 (A) 2001::/64 :: 34/nolabel 2002::/64 ::FFFF:6.6.6.6 nolabel/34 2008::/64 2001::2 36/nolabel 2009::/64 ::FFFF:6.6.6.6 nolabel/35
To sum it up, the CEF entry
PE2#sh ipv cef vrf A 2009::/64 nexthop 52.52.52.2 FastEthernet1/1 label 28 35
On P1 the packet is switched
P1#sh mpls forwarding-table 6.6.6.6 Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 28 26 6.6.6.6/32 164380 Fa2/0 23.23.23.3
On P2 the tag is removed due to PHP. Only one tag remains, the VPN tag.
P2#sh mpls forwarding-table 6.6.6.6 Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 26 Pop tag 6.6.6.6/32 201008 Fa1/0 36.36.36.6
On PE3 the packet is transfered according the VPN tag:
PE3#sh mpls forwarding-table labels 35 Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 35 No Label 2009::/64[V] 182312 Fa1/1 2002::2
Troubleshooting commands
ping 2009::9 repeat 30 traceroute 2009::9 sh ipv6 int brief sh ipv6 route vrf A sh ipv6 cef vrf A sh mpls forwarding-table sh mpls forwarding-table vrf A sh mpls forwarding-table labels 35 sh ip bgp vpnv6 unicast all sh ip bgp vpnv6 unicast vrf A sh ip bgp vpnv6 unicast all labels
Special thanks to Romain that made me discover this technology.
Links
http://lacnic.net/documentos/seminarios/6PE_6VPE_LACNIC.pdf
http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6553/prod_presentation0900aecd80311df4.pdf
http://www.ietf.org/rfc/rfc4659.txt
http://tools.ietf.org/html/rfc4798
http://www.ipflow.utc.fr/index.php/6VPE_-_IPv6_VPN_over_MPLS