# IPv6 NDP: source address selection in NS



## jurgenting (May 17, 2013)

Hi,

I also have a problem with the source IP selection in the neighbour solicitation packet. *H*ere is my scenario:

FreeBSD Node1 
EL0 
2FFE:300:0:0:0:0:0:113/64                    
2FFE:900:0:0:0:0:0:113/64

FreeBSD Node2
EL0
2FFE:900:0:0:0:0:0:111/64                    
2FFE:400:0:0:0:0:0:115/64

Then I do ping from Node2 to Node1: `ping 2FFE:300:0:0:0:0:0:113`. Obviously ping could not get out because of no route to 2FFE:300:0:0/64 in Node2 and no route to host returned.

But if I do the following first on Node1 before pinging from Node2: `ping 2FFE:900:0:0:0:0:0:111 src 2FFE:300:0:0:0:0:0:113` with Wireshark, I found the source IP address in neighbour solicitation derived from Node1 is 2FFE:300:0:0:0:0:0:113, then after receiving this, a link layer route item will be installed in Node2:

```
ndp,-a
Neighbor Linklayer Address Netif
2ffe:300::113 0:50:56:9d:4f:94 el0

netstat -nr
Internet6:
Destination Gateway
2ffe:300::113 00:50:56:9d:4f:94
```
Now, ping again from Node2 to Node1: `ping 2FFE:300:0:0:0:0:0:113`, ping works successfully.

*I* know little about OpenBSD, but in FreeBSD, link-layer route items are at the same radix tree as layer-3 route items, so with the above scenario, the route could be found even if there's still no layer-3 route to destination 2FFE:300:0:0:0:0/64.

Do you think this is reasonable or not?


----------

