John Hay jhay at meraka.org.za
Mon Apr 5 08:31:04 UTC 2010

On Mon, Apr 05, 2010 at 02:42:52PM +0900, Hiroki Sato wrote:
> Doug Barton <dougb at FreeBSD.org> wrote
>   in <4BB7E224.6020508 at FreeBSD.org>:
> do> As we've discussed previously, you and I have a lot of disagreement on
> do> some of these principles. I'm going to outline my responses in some
> do> detail, however I'm also interested in what others have to say since I'd
> do> ultimately like to see some consensus from the community on how this
> do> should be configured.
>  Yes, I agree that it is good to have discussion with more people.
> do> I'm just about the biggest rc.d purist there is, and even I don't agree
> do> with this. :)  I also disagree with your idea that "the original design
> do> of rc.d scripts" didn't intend for concepts like this.
>  Sorry for the noise.  This involves my preference and was a different
>  story.  Please ignore this for IPv6 discussion for the moment.
> do> >  Second, if people need a way to disable IPv6 protocol, they have
> do> >  already the way; no IPv6 configuration in /etc/rc.conf.  If you need
> do> >  a handy way for on-and-off, separating the IPv6 configuration from
> do> >  rc.conf to rc.conf.ipv6 and putting a line ". /etc/rc.conf.ipv6" into
> do> >  /etc/rc.conf should be enough, for example.
> do>
> do> Even if I agreed with this idea (and I don't necessarily have strong
> do> DISagreement with it) the knob has existed since the beginning of IPv6
> do> support in FreeBSD, and shouldn't be removed lightly. Personally I find
> do> it handy to be able to configure things in rc.conf and turn them on and
> do> off with one knob without having to comment or uncomment a bunch of stuff.
>  I didn't removed it *lightly*.  My motivation for that is I want to
>  enable IPv6 by default without making trouble for IPv4-only people.
>  I also committed several kernel-level measures for people who want
>  IPv4-only, IPv6-only, and the both to live without the knob at that
>  time.
>  Enabling/disabling IPv6 by using rc.d script was quite complex and
>  the switching will be incomplete with no kernel support.  My
>  conclusion for integration of the network_ipv6->netif changes was
>  "depend on if adding an GUA or not" and it works fine for
>  asynchronous invocation of rc.d/netif as well as needs no reboot for
>  the switch (see another email for the whole story).  Some processing
>  which were in network_ipv6 (calculating $rtsol_interface and so on)
>  are intentionally removed thanks to this assumption.  If you want to
>  go back to the old days and enable receiving RA by default, we must
>  look into the whole process carefully again.
>  If people want to disable IPv6 GUA assignment in per-AF manner, it
>  should be done by per-AF global knobs for $ifconfig_* because the GUA
>  assignment involves $ifconfig_* knobs only for the user as explained
>  in another email.
>  Let me summarize what I agree and disagree again:
>  a. I agree that it is useful to have a knob for disabling all of
>     ifconfig_IF_ipv6 handling.  However, I disagree with using the
>     name "ipv6_enable" just for the purpose.  ipv6_enable=NO never
>     means disabling IPv6 functionality in the kernel, and it will
>     cause people tend to think IPv6 is disabled completely.
>     If we want to disable ifconfig_IF_AF lines in a handy manner,
>     implementing ifconfig_DEFAULT_AF is more consistent and where we
>     should go.  All of AF-specific parameters for an interface are in
>     $ifconfig_IF_AF, and having a global knob to define the default
>     for all interfaces are quite reasonable to me.  I do not want to
>     go back to AF-specific handling like ipv6_* wherever possible.
>     I think this policy is compatible with David Horn's suggestions.
>     "ifconfig_DEFAULT_ipv6=DHCP" for DHCPv6 by default,
>     "ifconfig_DEFAULT_ipv6=accept_rtadv" for SLAAC by default,
>     "ifconfig_fxp0_ipv6=-accept_rtadv" for no-SLAAC for fxp0, for
>     example (note that I do not stick to these keywords.  "slaac"
>     would also be a good candidate).  No concern for
>     conflicting/confusing with IPv4; this is orthogonal among AFs.  We
>     can support another new method by just adding a keyword.
>     Note that SLAAC and DHCPv6 are exclusive.  Combinations of
>     DHCPv6-NA + SLAAC, or DHCPv6-PD + SLAAC are not extreme (the
>     latter is rather popular).  This is one of the reasons I stick to
>     the per-IF/per-AF solution here.
>  b. Disagree with disabling IPv6 by default.  I think there is no
>     technical and security reason to go back to the old days.
> do> >  Also, we should not consider IPv6 as special.
> do>
> do> I wish that were so, but I disagree. I think we need to make it as easy
> do> as possible for users to take advantage of IPv6, but there are a lot of
> do> reasons why it is actually special. Primarily because unlike some of our
> do> other networking protocols it's "on the cusp" of being something that
> do> everyone will need someday, but isn't quite ready for prime time.
>  IMO, at least for handling in rc.d scripts, it is not necessary to
>  consider IPv6 as a special AF after I added AF-specific $ifconfig_*
>  knobs, rc.d/netoptions changes, and so on.
>  And, well, please let me suggest something for the further discussion
>  here.  Whether we have $ipv6_enable or not, whether we enable
>  $ipv6_enable by default or not, and whether receiving RA by default
>  or not, are separated topics from each other.  So, I would like
>  everyone's opinions for the following points separately:
>  1. Do we need a knob to disable IPv6?  If so, which in the following
>     is expected for that knob?
>     1-a) Disable ifconfig_IF_ipv6 processing only.  This means people
>          can still do manual configuration for IPv6.
>     1-b) Disable IPv6 functionlity completely.
>  2. If we have a knob described in 1, what should be the default
>     value?
>  3. Do we go for "accept RAs by default"?  We can break down this in
>     the following way related to 2:
>     3-a) Enable IPv6 functionality and accept RAs by default.
>     3-b) Enable IPv6 functionality and not accept RAs by default
>     3-c) Disable IPv6 functionality by default and accept RAs if one
>          enables IPv6 in rc.conf.
>     3-d) Disable IPv6 functionality by default and not accept RAs even
>          if one enables IPv6 in rc.conf.
>  My answers for them are:
>  1. No objection for 1-a, but if so the name $ipv6_enable is wrong to
>     me.  If people needs 1-b, it should be $ipv6_enable.  I have no
>     strong opinion on whether we have one of or both of them.  If we
>     can reach a consensus to have 1-b, I am ready to implement the
>     necessary changes.
>  2. I am for "enabled by default" regardless of 1-a or 1-b.
>  3. I am for 3-b.

These questions actually start more questions for me. :-) Maybe we should
also think from the user perspective and list a few use cases and what a
user need to put in rc.conf to make that work?

Your normal desktop/notebook user on a ipv6 radv network, what does he
need to do to have his machine ipv6 usable?

A network server that does not accept radv, what should its ipv6 config
in rc.conf look like?

What about a server that accept radv (so that it can get router info)
and have fixed addresses for it services?

A router kind of box, what should it look like?

Maybe by stating these, and other, use-cases, it will make it easier to
work back to what should happen under the hood? :-) And maybe if we can
document this well in rc.conf(5) for instance, it would make it easier
for people to start with ipv6.

BTW I have been running an ipv6 network for 10+ years, but the SLAAC
acronym is still strange to me. :-)

BTW2 RA on the network has bitten us a few times on the network, but it
always turned out to be innocent mistakes. We have also had rogue DHCP 
servers, which also was innocent mistakes, so I doubt if just moving
from RA to DHCP6 will be the answer. :-)

John Hay -- jhay at meraka.csir.co.za / jhay at FreeBSD.org

More information about the freebsd-current mailing list