1

When setting up loopback interfaces with IPv6 addresses with static routes between two directly connected routers through their interfaces. It does not work to specify it with the outgoing physical interface rather than the next hop (the IPv6 address of the adjacent interface).

For reference this is the IOSv version for both running in GNS3 with the following configs for IPv6 addresses and routing with ipv6 unicast-routing enabled:

R1#sh ver
Cisco IOS Software, IOSv Software (VIOS-ADVENTERPRISEK9-M), Version 15.9(3)M4, RELEASE SOFTWARE (fc3)
[ ... cut output ... ]

R1 lo0: 2001:db8:254::1/128
R1 ge0/1: 2001:db8:254:14::5/126

R4 lo0: 2001:db8:254::4/128
R4 ge0/0: 2001:db8:254:14::6/126

R1#sh ipv6 int br
GigabitEthernet0/1     [up/up]
    FE80::E81:BFF:FEE7:1
    2001:DB8:254:14::5
Loopback0              [up/up]
    FE80::E81:BFF:FEE7:0
    2001:DB8:254::1
R1# ! (I cut irrelevant intfs from output)
R4#sh ipv6 int br
GigabitEthernet0/0     [up/up]
    FE80::E7F:FAFF:FE78:0
    2001:DB8:254:14::6
Loopback0              [up/up]
    FE80::E7F:FAFF:FE78:0
    2001:DB8:254::4
R4# ! (I cut irrelevant intfs from output)

This doesn't work:

R1#sh run | i ipv6 route
ipv6 route 2001:DB8:254::4/128 GigabitEthernet0/1 name R4
R4#sh run | i ipv6 route
ipv6 route 2001:DB8:254::1/128 GigabitEthernet0/0 name R1
R1#ping 2001:db8:254::4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:254::4, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)

But this does!

R1#sh run | i ipv6 route
ipv6 route 2001:DB8:254::4/128 2001:DB8:254:14::6 name R4
R4#sh run | i ipv6 route
ipv6 route 2001:DB8:254::1/128 2001:DB8:254:14::5 name R1
R1#ping 2001:db8:254::4          
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:254::4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

Why?

Changing the source for pinging doesn't change anything either (nor would I expect it, both routes via loopback and the physical interface have routes to and from).

Let's see IPv4:

R1#sh ip int br ! (Again, irrelevent interfaces removed)  
Interface                  IP-Address      OK? Method Status                Protocol 
GigabitEthernet0/1         10.0.0.5        YES NVRAM  up                    up
Loopback0                  1.1.1.1         YES manual up                    up      
R1#sh run | i ip route                                  
ip route 4.4.4.4 255.255.255.255 GigabitEthernet0/1 name R4
R4#sh ip int br ! (Again, irrelevent interfaces removed)
Interface                  IP-Address      OK? Method Status                Protocol
GigabitEthernet0/0         10.0.0.6        YES NVRAM  up                    up  
Loopback0                  4.4.4.4         YES manual up                    up      
R4#sh run | i ip route
ip route 1.1.1.1 255.255.255.255 GigabitEthernet0/0 name R1
R1#ping 4.4.4.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms

Huh? Why will specifying the outgoing physical interface work for a static route with IPv4 and not for IPv6?

1

1 Answer 1

1

Short answer: v4 works because of proxy-arp. v6 has no such thing.

v4 and v6 are different things; stop thinking about v6 in v4 terms. ::4 is NOT on g0/1, but is behind ::6. In the default v4 world, proxy-arp handles that missing bit -- turn off proxy-arp and it'll be broken with v4 as well. Your configuration says ::4 is out on g0/1 somewhere, but IPv6 does not have ARP or proxy-arp. Because nothing on the g0/1 link has the address ::4, nothing will answer the ND request.

(It's technically incorrect to do that in v4, but due to 40yo backwards behavior, it "works". But it leads to this sort of confusion when people don't understand this. In the worst case, people use a default route to an interface and then wonder why everything is so slow -- their ARP table has 40,000 entries.)

Not the answer you're looking for? Browse other questions tagged or ask your own question.