SR-MPLS using IPv6
Load blank.v6.cfg
configure
load bootflash:blank.v6.cfg
commit replace
y
The core is now IPv6-only.
Configure ISIS in the core
Use a metric of 50 for dashed links and a metric of 10 for solid links
Using SR, configure a prefix SID for each router’s Lo1 using the router number as the index
Configure ISIS using a group
All nodes should be L2-only and belong to the same area
All Gig interfaces should be point-to-point
Answer
#R1-R10
group ISIS
router isis '1'
is-type level-2-only
add ipv6
segment-routing mpls
!
int 'GigabitEthernet.*'
point-to-point
add ipv6
end-group
#R1
router isis 1
apply-group ISIS
net 49.0001.0000.0000.0001.00
interface Loopback1
address-family ipv6 unicast
prefix-sid index 1
!
!
interface GigabitEthernet0/0/0/3
!
interface GigabitEthernet0/0/0/4
address-family ipv6 unicast
metric 50
#R2
router isis 1
apply-group ISIS
net 49.0001.0000.0000.0002.00
interface Loopback1
address-family ipv6 unicast
prefix-sid index 2
!
!
interface GigabitEthernet0/0/0/3
address-family ipv6 unicast
metric 50
!
!
interface GigabitEthernet0/0/0/4
#R3
router isis 1
apply-group ISIS
net 49.0001.0000.0000.0003.00
interface Loopback1
address-family ipv6 unicast
prefix-sid index 3
!
!
interface GigabitEthernet0/0/0/1
!
interface GigabitEthernet0/0/0/2
address-family ipv6 unicast
metric 50
!
!
interface GigabitEthernet0/0/0/4
address-family ipv6 unicast
metric 50
!
!
interface GigabitEthernet0/0/0/5
!
interface GigabitEthernet0/0/0/6
!
interface GigabitEthernet0/0/0/9
#R4
router isis 1
apply-group ISIS
net 49.0001.0000.0000.0004.00
interface Loopback1
address-family ipv6 unicast
prefix-sid index 4
!
!
interface GigabitEthernet0/0/0/1
address-family ipv6 unicast
metric 50
!
!
interface GigabitEthernet0/0/0/2
!
interface GigabitEthernet0/0/0/3
address-family ipv6 unicast
metric 50
!
!
interface GigabitEthernet0/0/0/5
!
interface GigabitEthernet0/0/0/6
!
interface GigabitEthernet0/0/0/10
#R5
router isis 1
apply-group ISIS
net 49.0001.0000.0000.0005.00
interface Loopback1
address-family ipv6 unicast
prefix-sid index 5
!
!
interface GigabitEthernet0/0/0/3
!
interface GigabitEthernet0/0/0/4
!
interface GigabitEthernet0/0/0/6
address-family ipv6 unicast
metric 50
!
!
interface GigabitEthernet0/0/0/7
!
interface GigabitEthernet0/0/0/8
address-family ipv6 unicast
metric 50
!
!
interface GigabitEthernet0/0/0/9
#R6
router isis 1
apply-group ISIS
net 49.0001.0000.0000.0006.00
interface Loopback1
address-family ipv6 unicast
prefix-sid index 6
!
!
interface GigabitEthernet0/0/0/3
!
interface GigabitEthernet0/0/0/4
!
interface GigabitEthernet0/0/0/5
address-family ipv6 unicast
metric 50
!
!
interface GigabitEthernet0/0/0/7
address-family ipv6 unicast
metric 50
!
!
interface GigabitEthernet0/0/0/8
!
interface GigabitEthernet0/0/0/10
#R7
router isis 1
apply-group ISIS
net 49.0001.0000.0000.0007.00
interface Loopback1
address-family ipv6 unicast
prefix-sid index 7
!
!
interface GigabitEthernet0/0/0/5
!
interface GigabitEthernet0/0/0/6
address-family ipv6 unicast
metric 50
#R8
router isis 1
apply-group ISIS
net 49.0001.0000.0000.0008.00
interface Loopback1
address-family ipv6 unicast
prefix-sid index 8
!
!
interface GigabitEthernet0/0/0/5
address-family ipv6 unicast
metric 50
!
!
interface GigabitEthernet0/0/0/6
#R9
router isis 1
apply-group ISIS
net 49.0001.0000.0000.0009.00
interface Loopback1
address-family ipv6 unicast
prefix-sid index 9
!
!
interface GigabitEthernet0/0/0/3
!
interface GigabitEthernet0/0/0/5
#R10
router isis 1
apply-group ISIS
net 49.0001.0000.0000.000a.00
interface Loopback1
address-family ipv6 unicast
prefix-sid index 10
!
!
interface GigabitEthernet0/0/0/4
!
interface GigabitEthernet0/0/0/6
Explanation
SR can use IPv6 with the MPLS dataplane, essentially replacing LDPv6. This allows you to use only IPv6 in your core. This might be used if you have a very large number of nodes, and you cannot realistically use RFC1918 space for loopback/internal addressing.
SR-MPLS with IPv6 must use ISIS, because SR for OSPFv3 is not available on IOS-XR. Using IPv6 for SR-MPLS is extremely similar to IPv4. The only real difference is that you are using the IPv6 address-family within ISIS. Everything else looks and feels exactly the same.
For example, we can see the label table using the ipv6 keyword on the familiar show command:

Adj-SIDs are reserved in the same manner as before, two per adjacency, one protected and one unprotected.

The Prefix SID and router capabilities is advertised in the same manner as well. There is now an IPv6 RID instead of an IPv4 RID.

The Adj-SIDs have the F flag set, to indicate they are for the IPv6 address family. This is to support single-topology and distinguish an IPv4 Adj-SID from an IPv6 Adj-SID on the same ISIS adjacency.

MPLS OAM tools work the same as we see in IPv4 as well. For example, we can run an MPLS OAM trace between two PEs by specifying the IPv6 loopback as the FEC. It seems that the fec-type must be specified as generic for this to work though.

Running IPv4 services over IPv6 SR-MPLS
Note that running VPNv4 over IPv6 SR-MPLS does not appear to be supported. The routers correctly advertised their nexthop as the loopback address on the VPNv4 route. But the receiving router marks this as RIB failure. It seems that the router should be able to see that it has a label for the nexthop from SR. Perhaps this is working on XRd or XRv9K 7.x.

Using SRv6 instead can get this to work though. Although that is a completely different data plane (IPv6 as the data plane instead of MPLS). So if you wanted to use VPNv4 over MPLS with IPv6, you are stuck.
I also cannot get this to work using VPNv6 with IPv6 nexthops. The router automatically tries to encode a v4 nexthop for VPNv6:

Last updated