Skip to end of metadata
Go to start of metadata

Please add tips about implementing 6PE to provide IPv6 access services across an MPLS core.

6PE is described in RFC 4798. It is very similar to BGP/MPLS IP VPNs RFC 4364 (obsoleted RFC 2547).

The first key difference is that the IPv6 traffic is not within an IP VPN in the MPLS PE router, it is in the Global Routing Table (GRT). Like with BGP/MPLS IP VPNs the traffic forwarding between PEs is based on label swapping the top MPLS label in the label stack as the packet is forwarded across the network, which besides for the PE routers does not have to be dual-stacked. In a correctly configured BGP/MPLS IP VPN network these labels will already exist and have been signalled by LDP or RSVP-TE. The specific label switched paths (LSPs) of interest are between the BGP next-hop addresses of the PEs. The second difference is that unlike with BGP/MPLS IP VPNs there is no automatic signalling of an inner service label for the IPv6 packet. The BGP configuration for the IPv6 address family in BGP must be explicitly configured to send this label.

Note that the BGP neighbors are IPv4 and the LSPs are based on IPv4 signalling protocols, thus IPv4 and IPv6 traffic between pairs of PEs will follow congruent paths. The ease with which this can be configured and that it is based on BGP/MPLS IP VPNs which service providers are highly familar with, makes 6PE an attractive and low risk way to start supporting IPv6 in the core network before making a later transition to native IPv6 interior routing protocol (IGP) support. The priority for service providers at this stage of the IPv6 transition should be to connect IPv6 users at the edge.

Cisco example

The key extra bit of configuration is send-label. This will result in traffic to destinations learned from PEs (that also have the send-label neighbor argument) being label swapped across the network.

The network statement is used to advertise an IPv6 loopback address to have an end-point to use with ping testing.

interface Loopback0
description *** Loopback Address for PE4***
ip address
ipv6 address 2001:DB8:C:4::1/64
router bgp 5466
neighbor REFLECTOR update-source Loopback0
neighbor REFLECTOR version 4
neighbor peer-group REFLECTOR
neighbor description ipv4 peering to rr1
address-family ipv6
neighbor REFLECTOR send-label
neighbor activate
network 2001:DB8:C:4::/64

Note in the above example a BGP Route Reflector is used. The RR should also have the send-label command so that it reflects the inner service label of the IPv6 packet.

Alcatel-Lucent Example

With ALU the extra bit of configuration is the advertise-label ipv6 command.

configure router
 interface "system"
   address 2001:DB8:A:11::1/128
exit all
configure router policy-options
   prefix-list "ipv6-system"
     prefix 2001:DB8:A::/48 through 128
  policy-statement bgp_internal_out
     entry 10
        protocol direct
         prefix-list "ipv6-system"
       action accept
        origin incomplete
exit all
configure router
  group "internal"
   family ipv4 ipv6
   min-route-advertisement 2
   type internal
   export "bgp_internal_out"
     advertise-label ipv6
exit all

Note when using Route Reflector with ALU SR OS it is necessary to enable MPLS on the RR even though the RR is not involved in the forwarding process. 

Juniper JUNOSe Example

license ipv6 "v6$Ru5le!s"
interface loopback 0
 ip address
 ipv6 address 2001:db8:e:17::1/128
mpls ldp
mpls ldp advertise-labels host-only
router bgp 5466
address-family ipv6 unicast
no auto-summary
neighbor REFLECTOR activate
no neighbor REFLECTOR shutdown
neighbor REFLECTOR description Standard Route Reflector
neighbor REFLECTOR graceful-restart
neighbor REFLECTOR send-label
neighbor peer-group REFLECTOR
no neighbor shutdown
network 2001:db8:e:17::1/128

There is also something called 6VPE which runs over MPLS and is used to provide VPN routing. More info is available in RFC 4659.

This is even easier to use as inner service label exchange is automatic. 

  • No labels