IPv6 RA vs DHCPv6 - The chosen one?

Hi,

IPv6 devices (routers and hosts) can obtain configuration information
about default routers, on-link prefixes and addresses from Router
Advertisements as defined in Neighbor Discovery. I have been told
that in some deployments, there is a strong desire not to use Router
Advertisements at all and to perform all configuration via DHCPv6.
There are thus similar IETF standards to get everything that you can
get from RAs, by using DHCPv6 instead.

As a result of this we see new proposals in IETF that try to do
similar things by either extending RA mechanisms or by introducing new
options in DHCPv6.

We thus have draft-droms-dhc-dhcpv6-default-router-00 that extends
DHCPv6 to do what RA does. And now, we have
draft-bcd-6man-ntp-server-ra-opt-00.txt that extends RA to advertise
the NTP information that is currently done via DHCPv6.

My question is, that which then is the more preferred option for the
operators? Do they prefer extending RA so that the new information
loaded on top of the RA messages gets known in the single shot when
routers do neighbor discovery. Or do they prefer all the extra
information to be learnt via DHCPv6? What are the pros and cons in
each approach and when would people favor one over the other?

I can see some advantages with the loading information to RA since
then one is not dependent on the DHCPv6 server. However, the latter
provides its own benefits.

Regards,
Ravi D.

Different operators will have different preferences in different environments.

Ideally, the IETF should provide complete solutions based on DHCPv6 and
on RA and let the operators decide what they want to use in their environments.

Owen

Different operators will have different preferences in different environments.

Ideally, the IETF should provide complete solutions based on DHCPv6 and
on RA and let the operators decide what they want to use in their environments.

Agree. Selection also influenced by the availability of the particular feature on a particular environments and habits of the operators.
   Best Regards,
     Janos Mohacsi

When a router needs to learn information from another router it will
*usually* use the RA messages and not DHCPv6, as the latter is
*usually* meant for Router - Host communication. However, it is NOT
uncommon to see hosts also learning the information using RA messages.
Router's afaik dont usually act as DHCP clients and thus information
that can only be passed in DHCPv6 may not be available to the routers,
and you may need an alternate mechanism.

Glen

I had some trouble parsing what Glen was saying, so, I'll provide some
clarification of how things actually work today and what I think would be
desirable in future development:

1. In IPv6, it is not uncommon for certain types of routers to be DHCP clients.
  DHCPv6-PD is relatively useless except when talking to a router.

2. Routers rarely listen to RAs and mostly generate them. There's no
  reason for router A to listen to RAs from router B on the same link.
  Router A doesn't care that Router B can be a default gateway. If
  Router A needs a default gateway, router A shouldn't be advertising
  himself with RAs and should know about Router B from a static
  route or some routing protocol.

  RAs are only useful (as far as routing is concerned) for routers to
  announce themselves as default gateways. They do not provide
  any mechanism for advertising more specific routes.

3. As it currently stands, RAs can provide the following information:

  + Default Router (anything sending an RA should be a valid
    default router).
  + Router Priority (High/Medium/Low)
  + Prefixes (must be /64) for SLAAC
    * Desired Lifetime
    * Valid Lifetime
  + DHCP Server Address
  + DNS Resolver Address[1]
  + M-Bit (Network is managed, host should ask DHCP server for
    some configuration information)
  + A-Bit (DHCP server is authoritative for addressing, do not use
    SLAAC to generate unicast addresses from prefixes)

[1] Requires recent extensions to SLAAC and RA. Not available in all
  implementations.

4. As it currently stands, a DHCPv6 server can provide most of the things
  you're used to a DHCP server providing.

  It cannot provide any information about routing whatsoever.

  There is currently no mechanism for a host to ask a DHCPv6 server
  for configuration information unless and until it receives an RA with
  at least the M-Bit set. (You currently can't use DHCP without RA).

  Currently, many clients support only SLAAC and Static for configuring
  IPv6 information. If you have such clients in your environment, setting
  the A-bit is generally self-destructive.

  Short of some form of NAC[2], there is currently no mechanism for
  preventing a host which uses SLAAC in spite of the A-bit being
  present (nefariously or erroneously) from making use of the network
  with that address. (i.e. you can't force a host to use DHCPv6 if it
  is not well behaved).

[2] Network Admission Control -- A process which does not place clients
  into functional VLANs on the switch until certain policy defined
  criteria have been met.

5. What I'd like to see:

  1. A mechanism for DHCP to be used without requiring RA at all.
  2. A mechanism for DHCP to provide zero or more copies of an
    optional attribute called "Routing Information". Said attribute's
    value would be a structure containing:
      Prefix (128 bits)
      Masklen (8 bits)
      Next-Hop (128 bits)
      Metric (16 bits)

    A default router would be specified as:
      Prefix 0::0/128
      Masklen 0
      Next-Hop pfx::gateway

    A static routing table with specific routes could be built as:

      Prefix 2001:0db8:0:32::
      Masklen 64
      Next-Hop 2001:0db8:0:7::1

      Prefix 2001:0db8:0:64:
      Masklen 60
      Next-Hop 2001:0db8:0:7::5

      Prefix ::
      Masklen 0
      Next-Hop 2001:0db8:0:7:feed:beef:cafe:babe

  3. Extensions to SLAAC to provide for NTP, "next-server", "boot-file",
    and certain other key elements available from DHCP, but, not possible
    in the current specification for SLAAC.

Yes, this will annoy those purists who believe there should be one true way
to do each thing. That's OK, they're entitled to their opinion, but, this is mine.
DIfferent operators have different preferences and different environments
sometimes work better or adapt better to different solutions.

Currently, most significant environments have to cobble together a complete
solution from remnants of SLAAC and DHCP. This is far from ideal.
Far better for organizations to look at 2 complete solutions and pick the
solution that works best for them in their environment.

Owen

* Owen DeLong

  RAs are only useful (as far as routing is concerned) for routers to
  announce themselves as default gateways. They do not provide
  any mechanism for advertising more specific routes.

They do, actually. See RFC 4191.

+1

I would like to see a simple presentation of the different ways of setting up a small network at the edge with the features, benefits and issues, of each method.

My interest is in networks with 2 to 20 devices in them. ie, small business and home.

I would also like to see a survey of how people are setting up their small networks. While some are interested in the purest way of setting them up, I'm not. I'm interested in how people are setting them up. When setting up networks for customers, I'm interested in doing it in the most common way.

What I don't want is to end up with a bad name because I set up stuff 'the right way' but in such a way that the next tech the customer calls gets annoyed that what I've done is so complex that it will cost the customer $$$$$ to fix a fault.

I'm sure these comments have been made by others in the past, I'm just adding a voice.

D

Agree that in the long term support for more flexibility is good.

Acknowledge that change is slow, and we're just at a point now where
popular host systems even include mature DHCPv6 (but without route
options).

Both of the features discussed would be useful in specific
applications, but more often than not what get's used is what most
host implementations support, so the horse may have already left the
barn on that one, at least for the next 5 years or so.

RA + SLAAC is great for residential environments and automatic discovery.

For a more controlled environment, RA + DHCPv6 is increasingly
attractive, especially in a dual-stack environment where having a
similar operational model for both protocols can simplify operations
and support, and allow for a phased deployment.

Remember, an RFC is just an idea on how things should work; it's not a
standard until most people choose to implement it.

"The nice thing about standards is that you have so many to choose from."

Hi,

- SLAAC/RA is totally useless, does not bring any benefit at all
  and should be removed from IPv6 specs
- DHCPv6 should be extended by route options as proposed in
  http://tools.ietf.org/html/draft-ietf-mif-dhcpv6-route-option-03
- DHCPv6 should be extended by layer 2 address to identify
  client's L2 address (something that we can see in RFC 6221)
- DHCPv6 should be the common way to autoconfigure an address
  in a IPv6 environment

The long answer is:

I completely disagree with opinion that both DHCPv6 and RA (SLAAC)
should be supported. It is easy to say that both have place but it has
some consequences. I and my colleagues have been working on deploying
IPv6 for a few years and from the operation perspective we conclude into
a quite clear opinion in that area. Both SLAAC and DHCPv6 uses a
opposite principles although the goal is just one. DHCPv6 is based on a
central DHCPv6 server that assigns addresses. SLAAC does opposite -
leaves the decision about the address on a client side. However we have
to run both of them in a network to provide all necessary pieces of
information to the clients (default route and DNS). This brings many
implementation and operational complications.

- Clients have to support both SLAAC and DHCPv6 to be able to work in
  both environments
- There must be solved a situation what to do when SLAAC and DHCPv6
  provides some conflict information (quite long thread with various
opinions
  can be found at
http://www.ietf.org/mail-archive/web/ipv6/current/msg14949.html)
- The first hop security have to be solved twice - for SLAAC and for
DHCPv6. Both
  of then uses a differed communication way. SLAAC is part of ICMPv6,
but DHCPv6
  uses "own" UDP communication what does not make things easier.
- SLAAC is usually processed in a kernel, DHCPv6 is usually run as a
  process in the user space. Diagnostic and troubleshooting is more
complicated.
- DHCPv6 is currently tied with SLAAC (M,O flags), what means that
  a DHCPv6 client have to wait until some RA message arrives to start DHCPv6
  discovery. That unnecessary prolongs whole autoconfiguration process.

Some other issues are also described in [1].

I personally prefer to bury SLAAC once forever for several reasons:
- In fact SLAAC does nothing more what DHCPv6 can do.
- SLAAC is quite difficult to secure. One (really only ONE) RA packet
can destroy
  the IPv6 connection for all clients in a local network just in a few
milliseconds.
  It also happens accidentally by "connection sharing" in Vista, Win7

(https://openwiki.uninett.no//_media/geantcampus:2011-gn3na3t4-ipv6-gregr.pdf)
- The full protection against that behavior it's impossible today.
RA-Guard or
  PACL can be bypassed using extension headers or fragmentation
  (http://www.mh-sec.de/downloads/mh-ipv6_vulnerabilities.pdf)
- With SLAAC is difficult to implement security features like ARP/ND
  protection/inspection, IP source guard/Dynamic lock down, because
  all this techniques are based on a MAC-IP database created during
  a communication with a DHCP server. There are some attempts (ND
protection, SAVI)
  but it does not provide the same level of security.
- Just the same technique was introduced in IPv4 as Router Discovery
(RFC 1256).
  Nobody uses it today. Do we really need go through same death way again?
  (Oh right, we are already going :frowning: )

Comparing to SLAAC, DHCPv6 have several advantages:
- DHCPv6 is very similar to DHCP(v4) and many people are used to using it.
- DHCPv6 can potentially do much more - for example handle an information
  for PXE, options for IP phones, prefix delegation.
- DHCPv6 allows handle an information only for some hosts or group of
  hosts (differed lease time, search list, DNS atc.). With SLAAC it is
  impossible and all host on a subnet have to share the same set of
  the configuration information.
- Frankly said, I have not found any significant benefit that SLAAC brings.

Unfortunately there is another issue with DUIDs in DHCPv6. But it is a
little bit differed tale.

At the beginning the autoconfiguration was meant as easy to use and easy
to configure but the result turned out into kind of nightmare. For those
who do not know what I am talking about I prepared two images. The first
one shows necessary communication before first regular packet can be
send over IPv4 (http://hawk.cis.vutbr.cz/~tpoder/tmp/autoconf/IPv4.png)
and just the same thing in IPv6
(http://hawk.cis.vutbr.cz/~tpoder/tmp/autoconf/IPv4.png). In IPv4 we
have very simple answer if somebody asks for autoconfiguration = use
DHCP. In IPv6 the description how things work have to be written into
more than 10 pages [1]. I believe that is not what we really wanted.

For those who are interested in that area there are several
articles/presentations where we mentioned that topic.

[1] IPv6 Autoconfiguration - Best Practice Document
http://www.terena.org/activities/campus-bp/pdf/gn3-na3-t4-cbpd117.pdf

[2] IPv6 - security threads
http://www.fit.vutbr.cz/research/view_pub.php?id=9835

[3] Deploying IPv6 in University Campus Network - Practical Problems
http://www.fit.vutbr.cz/research/view_pub.php?id=9836

Regards,
    Tomas Podermanski

I'm afraid you're about 10 years too late for this opinion to make
much difference. :wink:

We have been running IPv6 in production for several years (2008) as
well (answering this email over IPv6 now, actually) yet I have
completely different conclusions about the role of RA and DHCPv6.
Weird.

Hi,

Hi,

from my perspective the short answer for this never-ending story is:

To be fair, SLAAC was designed as a light weight method to configure addressing on the hosts.

Hosts. We don't have hosts on the internet anymore, we stopped using dialup ages ago (or so it seems). We now address routers, and those have very different requirements, like needing routing and firewalling and some way to get subnets routed to them, that is where dhcp6 prefix delegation comes in. SLAAC serves no purpose for routers bar making the configure process awkward and error prone.

That wasn't what we needed.

I recently had a conversation with a promoter of the SLAAC method.

"A 64KB ram device can configure a address and work as a autonomous sensor".

I raised the concern that the device might need to connect to a host, since you couldn't find it in a /64 of address space. He honestly suggested that you could just configure to have it connect to a static address.

Really, and nobody renumbers networks, at all? That's false.

And that is still a host, not a router.

And since then we've come a lot farther then 64KB sensor devices. Considering we can buy (wireless) routers at the local mall that have more ram and processing power then we used to have in a computer in the 90s now in a tablet, phone or other embedded device.

Having built DHCP6 support in a open source firewall I agree that the (+IPv6) configuration of routers has become overly complicated and error prone, even more so due to possible renumbering. RA will have one thought, and the DHCP6 client another, not even going into multiple (possible differing) feeds of both IPv4 and IPv6 DNS servers.

It was intended for hosts, not really minding that, but please, can we stop using it for routers?

Regards,

Seth

from my perspective the short answer for this never-ending story is:

- SLAAC/RA is totally useless, does not bring any benefit at all
and should be removed from IPv6 specs

I'm afraid you're about 10 years too late for this opinion to make
much difference. :wink:

I won't go so far as to say SLAAC should be removed from the IPv6 spec
but it's never too late to deprecate a protocol that doesn't pan out.
I'm with Owen:

And that's a very good reason not to deprecate SLAAC. Tomas may prefer DHCPv6, and he may provide reasons others may prefer DHCPv6. But he hasn't provided justification for deprecating SLAAC.

Many of us have been working with IPv6 for years and have found SLAAC to be quite useful. The biggest benefit it provides, which Tomas did not acknowledge, is the ability to autoconfigure hosts without running a central server. That said, I have also found DHCPv6 to be quite useful.

I also agree with Owen: Provide two complete solutions, and let operators choose based on their needs. That implies fixing DHCPv6 so I don't have to go in and disable the autonomous flag on my routers and run RAs just to get a default route. But it also implies not deprecating either SLAAC or DHCPv6.

michael

Hi,

from my perspective the short answer for this never-ending story is:

- SLAAC/RA is totally useless, does not bring any benefit at all
and should be removed from IPv6 specs

Except that there are many environments where that's not true.

- DHCPv6 should be extended by route options as proposed in
draft-ietf-mif-dhcpv6-route-option-03

I haven't read the particular draft, but, I do think dhcpv6 route options
should be added.

- DHCPv6 should be extended by layer 2 address to identify
client's L2 address (something that we can see in RFC 6221)

I'm neutral on this one. Once you get used to dealing with it, using DUIDs
isn't so bad. It does (at least potentially) allow you to identify the same client
across a NIC replacement, which can be useful in some environments.

- DHCPv6 should be the common way to autoconfigure an address
in a IPv6 environment

DHCPv6 should be a common option for operators that want to use it, but
there is no reason to take SLAAC away from operators that are happy with
it.

The long answer is:

I completely disagree with opinion that both DHCPv6 and RA (SLAAC)
should be supported. It is easy to say that both have place but it has
some consequences. I and my colleagues have been working on deploying
IPv6 for a few years and from the operation perspective we conclude into
a quite clear opinion in that area. Both SLAAC and DHCPv6 uses a
opposite principles although the goal is just one. DHCPv6 is based on a
central DHCPv6 server that assigns addresses. SLAAC does opposite -
leaves the decision about the address on a client side. However we have
to run both of them in a network to provide all necessary pieces of
information to the clients (default route and DNS). This brings many
implementation and operational complications.

I agree that the requirement to run both is broken. I don't agree that this
means we should remove the option of using SLAAC in environments
where it makes sense.

- Clients have to support both SLAAC and DHCPv6 to be able to work in
both environments

So?

- There must be solved a situation what to do when SLAAC and DHCPv6
provides some conflict information (quite long thread with various
opinions
can be found at
Conflict between RA and DHCP in MIF case)

SLAAC and DHCPv6 can't really provide conflicting information unless
the router is misconfigured. Even if a host gets different answers for the
same prefixes from SLAAC and DHCP, it should be able to use both
host addresses. There's the question of source address selection, but,
the answer to that question at the IETF level should only be a matter
of what the default answer is. There are configuration options for setting
host source address selection priorities.

- The first hop security have to be solved twice - for SLAAC and for
DHCPv6. Both
of then uses a differed communication way. SLAAC is part of ICMPv6,
but DHCPv6
uses "own" UDP communication what does not make things easier.

Solved for SLAAC -- SEND.
Allegedly, there is Secure DHCPv6 for DHCP, but, I haven't seen any
actual implementations yet.

- SLAAC is usually processed in a kernel, DHCPv6 is usually run as a
process in the user space. Diagnostic and troubleshooting is more
complicated.

That seems like an argument for SLAAC, if anything.

- DHCPv6 is currently tied with SLAAC (M,O flags), what means that
a DHCPv6 client have to wait until some RA message arrives to start DHCPv6
discovery. That unnecessary prolongs whole autoconfiguration process.

While I agree with you that the standard is broken in this regard, there is at
least one OS vendor that already violates that rule anyway.

Some other issues are also described in [1].

I personally prefer to bury SLAAC once forever for several reasons:
- In fact SLAAC does nothing more what DHCPv6 can do.

Yes, but, it does it in a much simpler way with a lot less overhead which
can be a benefit in some environments.

- SLAAC is quite difficult to secure. One (really only ONE) RA packet
can destroy
the IPv6 connection for all clients in a local network just in a few
milliseconds.

This is what RA-Guard is for and it's quite simple to deploy. SEND makes
it even better, but is a bit more complicated.

It also happens accidentally by "connection sharing" in Vista, Win7

This is an argument for burying Windows, not an argument for burying
SLAAC. It's not like ICS in IPv4 didn't create rogue DHCP servers. If you
were to bury SLAAC, Micr0$0ft would simply switch to breaking DHCPv6
instead of breaking SLAAC.

(https://openwiki.uninett.no//_media/geantcampus:2011-gn3na3t4-ipv6-gregr.pdf)
- The full protection against that behavior it's impossible today.
RA-Guard or
PACL can be bypassed using extension headers or fragmentation
(http://www.mh-sec.de/downloads/mh-ipv6_vulnerabilities.pdf)

Yes and no. RA Guard implementations are getting better at addressing
those issues.

- With SLAAC is difficult to implement security features like ARP/ND
protection/inspection, IP source guard/Dynamic lock down, because
all this techniques are based on a MAC-IP database created during
a communication with a DHCP server. There are some attempts (ND
protection, SAVI)
but it does not provide the same level of security.

Most sites don't need that level of security. I agree there should be a
way to disable SLAAC reliably at a site as a policy matter, but, frankly
the techniques you're talking about come in one of two flavors:

  1. They dynamically enable the switch to accept packets from
    a client, in which case, SLAAC based clients would be blocked
    until they registered with DHCP anyway.
or
  2. They don't effectively block an attacker who cobbles his own
    address even without SLAAC.

In the former case, you get the security you want and force DHCP anyway,
so I don't see a problem. In the latter case, you only had the illusion of
security to begin with, so, SLAAC just makes it easy to disillusion you.

- Just the same technique was introduced in IPv4 as Router Discovery
(RFC 1256).
Nobody uses it today. Do we really need go through same death way again?
(Oh right, we are already going :frowning: )

Not a fair comparison. There were a number of additional issues with 1256 that
prevented it from gaining acceptance in IPv4.

Comparing to SLAAC, DHCPv6 have several advantages:
- DHCPv6 is very similar to DHCP(v4) and many people are used to using it.

That just makes it familiar, not necessarily better for all environments.

- DHCPv6 can potentially do much more - for example handle an information
for PXE, options for IP phones, prefix delegation.

True, but, that comes at a cost of complexity and overhead which may not be
desirable in all environments.

- DHCPv6 allows handle an information only for some hosts or group of
hosts (differed lease time, search list, DNS atc.). With SLAAC it is
impossible and all host on a subnet have to share the same set of
the configuration information.

Which is not an issue in 99+% of environments.

- Frankly said, I have not found any significant benefit that SLAAC brings.

Perhaps you have not, but, others have. I have seen environments where
SLAAC is much more useful than DHCPv6. I've seen environments where
DHCPv6 is needed.

Unfortunately there is another issue with DUIDs in DHCPv6. But it is a
little bit differed tale.

At the beginning the autoconfiguration was meant as easy to use and easy
to configure but the result turned out into kind of nightmare. For those
who do not know what I am talking about I prepared two images. The first
one shows necessary communication before first regular packet can be
send over IPv4 (http://hawk.cis.vutbr.cz/~tpoder/tmp/autoconf/IPv4.png)
and just the same thing in IPv6
(http://hawk.cis.vutbr.cz/~tpoder/tmp/autoconf/IPv4.png). In IPv4 we
have very simple answer if somebody asks for autoconfiguration = use
DHCP. In IPv6 the description how things work have to be written into
more than 10 pages [1]. I believe that is not what we really wanted.

That's no really a fair characterization. Yes, DHCPv6 is more complex
than DHCPv4, but, not significantly so.

In reality it can be summed up relatively quickly:

1. Choose link local address (fe80::EUI64)
2. Send RS packet to all-routers multicast address
3. Receive one or more RA packets.
  a. if Packet contains prefix information:
    i. Set timers, apply addresses to interfaces
      (first regular packet can be sent at this point)
  b. If packet has O bit set:
    i. Send DHCPv6 request to DHCP server
    ii. Get response
    iii. Configure accordingly.
      (If a was false (a and b are not mutually exclusive), then
      you can now send your first regular packet).

Yes, there are a few corner cases not completely addressed above,
but, unless you're building the software to implement the standards,
they are mostly irrelevant. Even if you add them in (interactions between
the M, A, and O bits), you can still describe it in about a page, not
ten.

Owen

Ravi Duggal wrote:

We thus have draft-droms-dhc-dhcpv6-default-router-00 that extends
DHCPv6 to do what RA does. And now, we have
draft-bcd-6man-ntp-server-ra-opt-00.txt that extends RA to advertise
the NTP information that is currently done via DHCPv6.

My question is, that which then is the more preferred option for the
operators?

In many environments RA is a catastrophic disaster. Some operators need
to be able to do everything with RA turned off on routers, disabled on
hosts and filtered on switches.

- Kevin

OK, I'll name names. If you have end users still running WinXP, getting them
at least somewhat working under SLAAC/DHCPv4 is a lot less headache than trying
to DHCPv6 them.

Anybody managed to stamp out WinXP in their end user population yet?

"Yes."

We want both. We'll try both. And in a couple years when the
percentage Internet use of IPv6 is out of the single digits, we'll let
you know what worked in which situations.

We probably don't need one configuration protocol to rule them all.
IPv4 has PAP/CHAP over PPP and DHCP over Ethernet plus a number of
more minor ones like bootp (DHCP's semi-compatible predecessor) and
rarp. We really don't suffer for the choice.

Regards,
Bill Herrin

Look at that, for once I agree with Owen on all points made. :wink:

Heh. I haven't manage to stamp out WinXP in _my_ usage.

Microsoft's "Services for Unix" doesn't run on on anything but the obsecenely
high-priced top-end versions of their newer releases. In addition to the
significantly increased hardware requirements to get the same "user app"
performance, this makes upgrading a 'show stopper'.

In many environments RA is a catastrophic disaster. Some operators need
to be able to do everything with RA turned off on routers, disabled on
hosts and filtered on switches.

While in some environments, typically with small number of devices,
its indispensable. Small businesses may not want the complexity of
setting up a central server (for DHCP) - SLAAC works very well in such
environments.

Today, we can get NTP server information only with DHCP (DNS info is
supported by both DHCP and RAs). DHCP only works after RAs have been
processed. In some environments (mobile IPv6) delays in acquiring NTP
and other servers information is critical and waiting for DHCP to come
up may not be acceptable.

Glen