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: