Better document router requirements for IPv6

In order for IPv6 to function correctly for instances, a router
must be created and added to a subnet. Update the documentation
to better highlight this as it wasn't clear a router was
required on an isolated subnet such that Router Advertisements
messages would be sent.

Change-Id: I4aca67c98ae77bbc4c130764af5a92515b95443a
Closes-bug: #1886116
This commit is contained in:
Brian Haley 2020-07-07 16:29:29 -04:00
parent a3c7aad790
commit a3ecaf6a10
1 changed files with 44 additions and 30 deletions

View File

@ -4,7 +4,8 @@
IPv6
====
This section describes the following items:
This section describes the OpenStack Networking reference implementation
for IPv6, including the following items:
* How to enable dual-stack (IPv4 and IPv6 enabled) instances.
* How those instances receive an IPv6 address.
@ -67,12 +68,12 @@ advertisements for a subnet.
The IPv6 Protocol uses Internet Control Message Protocol packets
(ICMPv6) as a way to distribute information about networking. ICMPv6
packets with the type flag set to 134 are called "Router
Advertisement" packets, which contain information about the router
Advertisement" messages, which contain information about the router
and the route that can be used by guest instances to send network
traffic.
The ``ipv6_ra_mode`` is used to specify if the Networking service should
generate Router Advertisement packets for a subnet.
generate Router Advertisement messages for a subnet.
ipv6_ra_mode and ipv6_address_mode combinations
-----------------------------------------------
@ -212,24 +213,24 @@ IPv6 supports three different addressing schemes for address configuration and
for providing optional network information.
Stateless Address Auto Configuration (SLAAC)
Address configuration using Router Advertisement (RA).
Address configuration using Router Advertisements.
DHCPv6-stateless
Address configuration using RA and optional information
Address configuration using Router Advertisements and optional information
using DHCPv6.
DHCPv6-stateful
Address configuration and optional information using DHCPv6.
OpenStack can be setup such that OpenStack Networking directly
provides RA, DHCP
provides Router Advertisements, DHCP
relay and DHCPv6 address and optional information for their networks
or this can be delegated to external routers and services based on the
drivers that are in use. There are two neutron subnet attributes -
``ipv6_ra_mode`` and ``ipv6_address_mode`` that determine how IPv6
addressing and network information is provided to project instances:
* ``ipv6_ra_mode``: Determines who sends RA.
* ``ipv6_ra_mode``: Determines who sends Router Advertisements.
* ``ipv6_address_mode``: Determines how instances obtain IPv6 address,
default gateway, or optional information.
@ -258,10 +259,10 @@ When using SLAAC, the currently supported combinations for ``ipv6_ra_mode`` and
- Address are assigned using EUI-64, and OpenStack Networking
provides routing.
Setting ``ipv6_ra_mode`` to ``slaac`` will result in OpenStack Networking
routers being configured to send RA packets, when they are created.
This results in the following values set for the address configuration
flags in the RA messages:
Setting SLAAC for ``ipv6_ra_mode`` configures the neutron
router with an radvd agent to send Router Advertisements. The list below
captures the values set for the address configuration flags in the Router
Advertisement messages in this scenario.
* Auto Configuration Flag = 1
* Managed Configuration Flag = 0
@ -269,12 +270,18 @@ flags in the RA messages:
New or existing neutron networks that contain a SLAAC enabled IPv6 subnet will
result in all neutron ports attached to the network receiving IPv6 addresses.
This is because when RA broadcast messages are sent out on a neutron
network, they are received by all IPv6 capable ports on the network,
This is because when Router Advertisement messages are multicast on a
neutron network, they are received by all IPv6 capable ports on the network,
and each port will then configure an IPv6 address based on the
information contained in the RA packet. In some cases, an IPv6 SLAAC
address will be added to a port, in addition to other IPv4 and IPv6 addresses
that the port already has been assigned.
information contained in the Router Advertisement messages. In some cases, an
IPv6 SLAAC address will be added to a port, in addition to other IPv4 and IPv6
addresses that the port already has been assigned.
.. note::
If a router is not created and added to the subnet, SLAAC addressing will
not succeed for instances since no Router Advertisement messages will
be generated.
DHCPv6
------
@ -291,16 +298,16 @@ follows:
- Result
* - DHCPv6-stateless
- DHCPv6-stateless
- Addresses are assigned through RAs (see SLAAC above) and optional
information is delivered through DHCPv6.
- Addresses are assigned through Router Advertisements (see SLAAC above)
and optional information is delivered through DHCPv6.
* - DHCPv6-stateful
- DHCPv6-stateful
- Addresses and optional information are assigned using DHCPv6.
Setting DHCPv6-stateless for ``ipv6_ra_mode`` configures the neutron
router with radvd agent to send RAs. The list below captures the
values set for the address configuration flags in the RA packet in
this scenario. Similarly, setting DHCPv6-stateless for
router with an radvd agent to send Router Advertisements. The list below
captures the values set for the address configuration flags in the Router
Advertisement messages in this scenario. Similarly, setting DHCPv6-stateless for
``ipv6_address_mode`` configures neutron DHCP implementation to provide
the additional network information.
@ -309,9 +316,9 @@ the additional network information.
* Other Configuration Flag = 1
Setting DHCPv6-stateful for ``ipv6_ra_mode`` configures the neutron
router with radvd agent to send RAs. The list below captures the
values set for the address configuration flags in the RA packet in
this scenario. Similarly, setting DHCPv6-stateful for
router with an radvd agent to send Router Advertisements. The list below
captures the values set for the address configuration flags in the Router
Advertisements messages in this scenario. Similarly, setting DHCPv6-stateful for
``ipv6_address_mode`` configures neutron DHCP implementation to provide
addresses and additional network information through DHCPv6.
@ -319,6 +326,12 @@ addresses and additional network information through DHCPv6.
* Managed Configuration Flag = 1
* Other Configuration Flag = 1
.. note::
If a router is not created and added to the subnet, DHCPv6 addressing will
not succeed for instances since no Router Advertisement messages will
be generated.
Router support
~~~~~~~~~~~~~~
@ -345,16 +358,17 @@ modified so that an IPv6 subnet is not required for the external network that
is associated with the neutron router. The LLA address of the upstream router
can be learned in two ways.
#. In the absence of an upstream RA support, ``ipv6_gateway`` flag can be set
#. In the absence of an upstream Router Advertisement message, the
``ipv6_gateway`` flag can be set
with the external router gateway LLA in the neutron L3 agent configuration
file. This also requires that no subnet is associated with that port.
#. The upstream router can send an RA and the neutron router will
automatically learn the next-hop LLA, provided again that no subnet is
#. The upstream router can send a Router Advertisement and the neutron router
will automatically learn the next-hop LLA, provided again that no subnet is
assigned and the ``ipv6_gateway`` flag is not set.
Effectively the ``ipv6_gateway`` flag takes precedence over an RA that
is received from the upstream router. If it is desired to use a GUA
next hop that is accomplished by allocating a subnet to the external
Effectively the ``ipv6_gateway`` flag takes precedence over a Router
Advertisements that is received from the upstream router. If it is desired to
use a GUA next hop that is accomplished by allocating a subnet to the external
router port and assigning the upstream routers GUA address as the
gateway for the subnet.