I have v4 mpls working fine but v6 refuses to work correctly.
Looking at the ipv6 routing table for the VRF we can see prefix's coming from the remote PE's
BGP is up in vpnv6 and ipv6 unicast.
Everything seems fine but I just cant seem to ping between the sites.
as mentioned, ipv4 works fine for the same vrf.
Any ideas on where I can start troubleshooting.
One thing that immediately caught my attention is the fact that the next hops towards the IPv6 routes are IPv6 addresses themselves. For example:
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 6656:113 (default for vrf TEST)
2A00:ED0::3C 0 100 0 ?
Note the next hop - it is 2A00:ED0::3C. In common 6VPE scenarios, this should be an IPv6-mapped IPv4 address, i.e. ::FFFF:X.X.X.X. This IPv4 address is then used to look up the upper label from the LFIB (the IPv4 routing in these networks is supposed to be already working and LDP should take care of disseminating label-to-prefix mappings).
However, to my best knowledge, Cisco does not yet support LDP for IPv6 (anyone feel free to correct me if I am wrong!). This means that while you are capable of looking up the bottom label (visible in the show ip bgp vpnv6 unicast ... labels), you are unable to look up the topmost label that's supposed to carry this packet via an appropriate LSP to the remote PE.
So in order for the 6VPE to actually work, you should configure your BGP neighbors using IPv4 addresses and use those IPv4 addresses in the address-family vpnv6 stanza as neighbor X.X.X.X activate. This will cause BGP to use IPv6-mapped IPv4 addresses as the next hops towards the IPv6 routes in the appropriate VRFs, and enabling the lookup of the topmost label in the IPv4 LFIB.
Does this make any sense? It's a convoluted concept.