Case 3 --two global addresses and two default routers--

interface rtk0 down



(1)At first

Route of going and return decide at random. When going pass trough Power2, return can pass through Power3. Now, at first Dyna1 choose Power3 as the default router. Packet of "ping6" go trough Power3. And echo reply return trough Power3. Because, Dyna1 use 2001:200:0:8411:208:dff:fe76:f414 as the source address.

routing tables

Dyna1
Power1
Power2
Power3

ndp entry at Dyna1

Dyna1

(2)interface rtk0 down

Dyna1 don't change route, and sent packet to Power3. Power3 have routing table to go [2001:200:08410::/64].

(2)Route table exchange between interface rtk0 of Power2 and Power3

I try to exchanged routing table between interface rtk0 of Power2 and Power3. And I expected that ping6 go Power3. And Power3 send ICMP redirect message to Power1. And Power1 send same massage to Power2.

But, Power2 display
nd6_storelladder sdl_alen=0, dst=2001:200:0:8411:208:dff:fe76:f414 if=wm0


I found the place to print that. The place is /kame/kame/kame/sys/netinet6/¤Īnd6.c
In line 2419, it said this.
/* this should be impossible, but we bark here for debugging */
  printf("nd6_storelladdr: sdl_alen == 0, dst=%s, if=%s\n",
        ip6_sprintf(&SIN6(dst)->sin6_addr), if_name(ifp));
It is problem that in spite of Dyna1 using 2001:200:0:8411:208:dff:fe76:f414, ICMP echo reply of ping6 return trought Power2.


routing table

Dyna1
Power1
Power2
Power3

ndp entry of Dyna1

Dyna1