Post B8xjoZpP833tWkiOiu by wolf480pl@mstdn.io
(DIR) More posts by wolf480pl@mstdn.io
(DIR) Post #B8wHEGZKGWJlUo8FMG by wolf480pl@mstdn.io
0 likes, 0 repeats
@amonakov what rough edges have you found so far?
(DIR) Post #B8xjLLS1VHhUXVq8i8 by amonakov@mastodon.gamedev.place
0 likes, 0 repeats
@wolf480pl I don't know where to find good docs, and building intuition from disparate snippets is rough. For instance, it is apparently normal for a router not to have an address from the delegated subnet on its uplink? https://serverfault.com/questions/684455/ipv6-differences-between-routed-prefix-and-link-prefix
(DIR) Post #B8xjoZpP833tWkiOiu by wolf480pl@mstdn.io
0 likes, 0 repeats
@amonakov damn it, wish there was a doc I could recommend to you but... building intuition from disparate snippets is my superpower :/I did read a few RFCs around Neighbour Discovery Protocol that were quite interesting, and from those plus wikipedia, plus maybe some fragments of other RFCs, I pieced together an idea of how this works.As for routed vs link prefix, and not having an address from the routed prefix on the upstream link - I thought that's how it'd work in NAT-less IPv4 too?
(DIR) Post #B8xk89cyFeSC3kEbtA by wolf480pl@mstdn.io
0 likes, 0 repeats
@amonakov Anyway, for me the key observation to understanding both IPv4 and IPv6 is the following:If a route* tells you that packets to destination D should be sent through interface F, then either:A) interface F is on a point-to-point link, you need no extra information, there's no ARP/NDP, `via` doesn't matter, orB) interface F is on a mutliple-access link - there are many neighbours, you need to find the right neighbour's a link-layer address1/
(DIR) Post #B8xkQU0JEO76T5tHyy by wolf480pl@mstdn.io
0 likes, 0 repeats
@amonakov B1) destination D is "on-link" -> the destination address belongs to your neighbours, look it up with with ARP/NDP, that's your LL addressB2) there route is via gateway G -> look up G with ARP/NDP and use its LL addressThat "on-link" concept was kinda implicit in IPv4 (anything matching your address & netmask is on-link), but IPv6 makes it explicit.2/2
(DIR) Post #B8xkcOy3mWPoK7WQZk by wolf480pl@mstdn.io
0 likes, 0 repeats
@amonakov *actually, more like forwarding table entry, after any recursive `via`-s have been resolved
(DIR) Post #B8xlwEDjY6Eyjms4oa by amonakov@mastodon.gamedev.place
0 likes, 0 repeats
@wolf480pl thanks, I appreciate the info.Other rough edges:1) inverse behavior of forwarding sysctls on Linux (need net.ipv6.conf.all.forwarding=1, doing net.ipv6.conf.<iface>.forwarding=1 for two interfaces doesn't work, while for ipv4 it does)2) software being opinionated (while insufficiently documenting the behavior) about using ipv6 on dual-stack (looking at you, Firefox)
(DIR) Post #B8xm5q6E5MMsp5wUrI by wolf480pl@mstdn.io
0 likes, 0 repeats
@amonakov yeah, add to the second one the IPV6_V6ONLY sockopt...