Hi, I agree with Ole. The longest matching rule was already there in RFC 3484.
2013/10/20 Ole Troan <[email protected]>: > Mikael, > >> I'm trying to influence my source address selection. First I thought I'd >> figure out how it works by default. >> >> I have a /48. Let's call it 2001:db8:1::/48 >> >> I created three /64s on the same LAN with A-bit set so clients would do >> SLAAC within these: >> >> 2001:db8:1:0000:/64 >> 2001:db8:1:1000:/64 >> 2001:db8:1:2000:/64 >> >> Then I set up loopback addresses on my router: >> >> 2001:db8:1:0001:1/128 >> 2001:db8:1:1001:1/128 >> 2001:db8:1:2001:1/128 >> >> Then I tried pinging each loopback address from a host which has 2 addresses >> out of each /64. It now picked a source address within the same /56. I >> consistently both on a Ubuntu 13.04 and OSX 10.8.5 machine get the same >> behaviour. >> >> So above means that pinging 2001:db8:1:1fff::1 it would use the :1000: >> address, and pinging :2fff::1 would use the :2000::/64 address. >> >> If I ping outside my /48 it will consistently use the last created address >> (I tried adding a 4th lan, 8000, and it then uses that one), which I >> perfectly understand. >> >> When I ping :5000: and so on, it will sometimes use the :0000: address and >> not the :8000: that is used for the rest of global traffic. >> >> I have nothing /56 or /48 magic in routing table or "ip addrlabel list", but >> it still seems to be something special when it comes to the same /48 as the >> machine has addresses in. >> >> Any help understanding what is going on is appreciated. > > wouldn't this be RFC6724: > > Rule 8: Use longest matching prefix. > If CommonPrefixLen(SA, D) > CommonPrefixLen(SB, D), then prefer SA. > Similarly, if CommonPrefixLen(SB, D) > CommonPrefixLen(SA, D), then > prefer SB. > > cheers, > Ole
