Cisco & Juniper: IPv6 link-local addresses used between ISIS neighbours

ipv6is-is

I am configuring IPv6 between a Juniper MX80 and Cisco 7206VXR which already happily run IPv4 over ISIS and iBGP.

ISIS is carrying IPv6 routes between the two devices but I have what I believe is a problem. If we imagine a network like the following;

A 3rd Router -- MX80 -- 7206

ISIS is of course only carrying loop back addresses and core interface addresses, the rest is in iBGP. Now on my 7206 I look at the route to the loopback interface of a random 3rd router attached to the other side of the MX80;

7206#show ipv6 route 2a01:xxx::yyy:yyy:yyy:133
Routing entry for 2A01:xxx::yyy:yyy:yyy:133/128
  Known via "isis", distance 115, metric 10, type level-2
  Route count is 1/1, share count 0
  Routing paths:
    FE80::5E5E:AB00:300:D1C0, GigabitEthernet0/2
      Last updated 3w1d ago

My problem here is that it lists the next hop as the link-local address and not the configured public routable address.

Is this a native behavior of ISIS here or have I missed a configuration command somewhere?

7206#show run int gi0/2
Building configuration...

Current configuration : 336 bytes
!
interface GigabitEthernet0/2
 mtu 1540
 ip address xxxx
 ip router isis 
 media-type rj45
 speed auto
 duplex auto
 negotiation auto
 ipv6 address 2A01:xxx:xxx:xxx:yyy:yyy:yyy:yyy/64
 ipv6 nd ra suppress
 ipv6 router isis 
 mpls ip
 isis metric 10
 isis ipv6 metric 10
end

mx80# show interfaces ae0.3 
description "xxxx";
vlan-id 3;
family inet {
    address x.x.x.x/30;
}
family iso;
family inet6 {
    address 2A01:xxx:xxx:xxx:yyy:yyy:yyy:yyy/64;
}
family mpls;

Looking on the 7206 ISIS sees the MX80 as that Link-Local address for it's IPv6 address, which ties in with the above output, but why? ;

7206#show isis neighbors detail 

System Id      Type Interface   IP Address      State Holdtime Circuit Id
mx80           L2   Gi0/2       89.21.224.1     UP    7        mx80.03     
  Area Address(es): 49.1234.5678
  SNPA: 5c5e.ab00.d1c0      
  IPv6 Address(es): FE80::5E5E:AB00:300:D1C0
  State Changed: 3w1d
  LAN Priority: 64
  Format: Phase V
  Remote TID: 0, 2
  Local TID:  0, 2
  Interface name: GigabitEthernet0/2

Best Answer

Most IPv6 routing protocols use the link-local address of the next hop. Remember that the only purpose of the next hop address is to determine the MAC address of that next hop (on ethernet at least. Other media use similar mechanisms). Except for this lookup the address itself is never used. So it doesn't matter that you only see the link-local address. It is enough for routing purposes.

And that also means that if you want you can build your whole core network using only link-locals and loopbacks. Mught be a bit harder to debug though :)