3 ms·
"so if you have a packet destined to fe80::4, how do you disambiguate it?" Routing tables get you to the destination but I think the question is about which so
by gerdesj 4mo ago
"so if you have a packet destined to fe80::4, how do you disambiguate it?"
Routing tables get you to the destination but I think the question is about which source address to use ie which network card/interface to use as source - after all, they are all in fe80::.
For a destination in fe80:: the OS will pick the one on the right interface (in effect the IPv6 version of ARP).
You never use fe80:: as a source for a network beyond fe80:: because it and they are link local addresses. You'll send to the default gateway/GoLR/etc unless you have more explicit routes and set your source address as your IPv6 "identity" which might be one of many.
Anyway, here's your problem:
"But if you try to parse this as a URL in Go, you get an error:"
Go needs fixing!
- Dagger2 4mo agoRouting tables don't work here, because the routing table looks something like: fe80::/64 dev eth0 proto kernel metric 256 pref medium fe80::/64 dev eth0.11 proto kernel metric 256 pref medium fe80::/64 dev eth0.13 proto kernel metric 256 pref medium fe80::/64 dev eth0.14 proto kernel metric 256 pref medium fe80::/64 dev eth0.15 proto kernel metric 256 pref medium fe80::/64 dev eth0.16 proto kernel metric 256 pref medium Which interface's fe80::4 are you talking about? They all have an fe80::4.
- gerdesj 4mo agoWhat do you do in IPv4 or 6 when the metric is the same? That is literally the reason for the metric. You set it if you need your routes to be deterministic. You need to direct your IP stack which routes are important to you - your IP stack cannot read your mind! You could use a routing protocol and daemon to do the job for you but someone needs to tell it how to work.
- themafia 4mo ago> in effect the IPv6 version of ARP NDP. That's a discovery protocol not an elimination protocol. There's no guarantee that a link local address isn't available on multiple networks. > the OS will pick the one Linux will simply pick the first entry in the routing table. It may make this appear as if it's working by default or some underlying magic; however, it's literally just the very first entry that matches.