Re: Import dhcpcd(8) into FreeBSD base

From: Franco Fichtner <franco_at_opnsense.org>
Date: Mon, 08 Aug 2022 07:19:53 UTC
Hi Ben,

> On 7. Aug 2022, at 11:27 AM, Ben Woods <woodsb02@freebsd.org> wrote:
> 
> FreeBSD doesn’t have DHCPv6 support in base today, and therefore should decide the best way to add it. I appreciate you’ve spent years supporting dhcp6c and the existing tools, and we are therefore looking at this problem space differently.

While that is true what put me off here was the notion that
dhclient could be easily replaced.  I don't actually mind so
much for solving the IPv6 part (it is highly welcome) and
even replacing/obsoleting rtsold is good.

> For me, dhcpcd has been reliably working for a decade, with the remaining sandboxing security added years ago. It’s not a new implementation that is yet to go through teething issues. From my point of view, a single daemon that manages dynamic ip addressing makes sense, rather than 3 that have to combine to manage this separately. I appreciate that this would require re-work to integrate into the management layer of downstream products that have found alternative solutions in the mean time.

While I understand the dhcpcd motivation the goal here seems
to be deferring maintainership in the hope not having to deal
with this as much, going through upstream release cycles and
potentially unrelated regressions is also a risk that increases
the need for local maintenance and native patch inclusion, see
below.

> What I would ask is that you try dhcpcd for yourself (if you haven’t already), and provide feedback on your experience.

The hooks seem nice.  There should be a way to circumvent
the hooks in the base system and there must be support
for running multiple interfaces through dhcpcd (I couldn't
find any reference in the docs so far) for mixed environments.
People using FreeBSD as routers often have multiple ISP
connections (both IPv4 and IPv6) that need to work in tandem.

For dhclient this was never an issue but dhcp6c uses listening
facilities that prevent multiple daemons from working.
Depending on code ancestry this could be an issue in dhcpcd.

> Also, would be keen to hear some of the perks of dhclient and rtsold - is it existing integration into your downstream management layer? (Not meant sarcastically).

Rtsold is currently the only source of a router address to
the client.  Even dhcp6c cannot currently provide this.

https://github.com/freebsd/freebsd-src/commit/02508a3d4e17

dhclient revently added VLAN 0 reading support:

https://github.com/freebsd/freebsd-src/commit/abf5bff71d

dhclient VLAN priority support for certain ISPs:

https://github.com/freebsd/freebsd-src/commit/1e7fe2fbb9c0

There could be more changes relevant to day-to-day ISP
connectivity that eludes most "home lab" use where dhcpcd
works well.  I know this is tempting but also confirmation
bias having worked with a lot of users over the years on
their (nasty) ISP connectivity.


Cheers,
Franco