aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--writeups/ipv6/rfc4191/rfc4191.md19
1 files changed, 18 insertions, 1 deletions
diff --git a/writeups/ipv6/rfc4191/rfc4191.md b/writeups/ipv6/rfc4191/rfc4191.md
index 415f7b7..1f20722 100644
--- a/writeups/ipv6/rfc4191/rfc4191.md
+++ b/writeups/ipv6/rfc4191/rfc4191.md
@@ -18,12 +18,29 @@ and add the prefixes in the routing table.
| OS | Support | Since | Note |
| - | - | - | - |
| Windows | YES | ? | First mention in [Windows Server 2012 doc](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/jj574227(v=ws.11)) |
-| Linux | MAYBE | [v2.6.17-rc1](https://github.com/torvalds/linux/blame/4236f913808cebef1b9e078726a4e5d56064f7ad/net/ipv6/ndisc.c#L258) | `CONFIG_IPV6_ROUTE_INFO` disabled by default, but most distros enable it |
+| Linux | (SEE BELOW) | | |
| Android | YES | [4.2](https://en.wikipedia.org/wiki/Comparison_of_IPv6_support_in_operating_systems) ? | Linux support predates Android, so it could have been supported since 4.2 |
| XNU(IOS, macos) | YES | [xnu-7195.50.7.100.1](https://github.com/apple-oss-distributions/xnu/blame/8d741a5de7ff4191bf97d57b9f54c2f6d4a15585/bsd/netinet6/nd6_rtr.c#L490) | https://theapplewiki.com/wiki/Kernel#Versions |
| FreeBSD | [NO](https://github.com/freebsd/freebsd-src/blob/47ca5d103f229b090899379ce449af5e89faf627/sys/netinet6/nd6.c#L507) | - | Router discovery implemented in userspace "rtsold" |
| OpenBSD | [NO](https://github.com/openbsd/src/blob/36a0e83f909d48cbb69156be916b6356c14b9ae5/sbin/slaacd/engine.c#L1555) | - | Router discovery implemented in userspace "slaacd" |
+### Linux
+There are 3 RA implementations in Linux:
+
+ 1. The kernel (`CONFIG_IPV6_ROUTE_INFO`)
+ 2. NetworkManager
+ 3. Systemd-networkd
+
+The kernel's RIO support(introduced in
+[v2.6.17-rc1](https://github.com/torvalds/linux/blame/4236f913808cebef1b9e078726a4e5d56064f7ad/net/ipv6/ndisc.c#L258))
+is optional and disabled by default, but most distros build the kernels with
+`CONFIG_IPV6_ROUTE_INFO`.
+
+However, since the RDNSS and NTP options need to be dealt with in the userspace,
+the kernel implementation is rarely used in most cases, except for embedded
+systems. `accept_ra = 0` will be the most common setting on most systems. Both
+NetworkManager and Systemd-networkd support RIO.
+
## RFC 4191 in Action
<img src="../radvd/drawing-a.svg" style="background: grey;">