why rtsold ?

神明達哉 jinmei at wide.ad.jp
Thu Oct 18 15:57:30 UTC 2018


At Thu, 18 Oct 2018 08:53:14 +0700,
Victor Sudakov <vas at mpeks.tomsk.su> wrote:

> > The router may send a router advertisement whenever it wants.  That's
why
> > your machine seems to work even without rtsold.  However, SLAAC
addresses
> > expire after a certain amount of time.  rtsold will ask the router for a
> > new advertisement before your address expires.
>
> Who actually processes these router advertisements: the rtsold daemon
> or the kernel itself?
>
> Is this passage:
>
> 8.1.1.4. Plug and Play
>
> Most of the IPv6 stateless address autoconfiguration is implemented in
> the kernel. Neighbor Discovery functions are implemented in the kernel
> as a whole. Router Advertisement (RA) input for hosts is implemented
> in the kernel. Router Solicitation (RS) output for endhosts, RS input
> for routers, and RA output for routers are implemented in the
> userland.
>
> still correct?
> (from https://www.freebsd.org/doc/en/books/developers-handbook/ipv6.html)

It's slightly outdated.  "RA input for hosts" was originally limited
to what's described in RFC4862, but it's been extended over time.  The
RFC4862-side (aka SLAAC) is still implemented in the kernel, but DNS
configuration options (RFC8106, although the FreeBSD implementation
may still only conform to RFC6106) are used in the user space.  The
current trend seems to introduce more such high level config
information to RA, so I'd expect these will also be handled in the
user space.

BTW, regarding the original topic of 'why rtsold', my understanding is
that its original motivation is to help hosts moving links.  At least
at the time of development, there was no sophisticated detection
mechanism when a host is connected to a new link, so no one else could
send RS to get new network configuration information.  rtsold monitors
link status and invokes new RS-RA exchanges when it detects a change
of the link status from off to on.  Address lifetime expiration is not
usually an issue since routers are supposed to send RAs periodically
(with sufficiently short intervals to prevent accidental expiration);
and in any case (AFAIK) rtsold doesn't help that situation, as it
doesn't send RSes based on address lifetimes.

Today, we now use DNS config information provided via RA in the user
space, so another role of rtsold is to reflect any changes to it while
the host is still connected to the same link.   Routers are supposed
to advertise RAs with new information, but without rtsold (or
something equivalent) no one in the user space listens to those RAs to
apply the configuration change.

--
JINMEI, Tatuya


More information about the freebsd-net mailing list