Support IPv6 DHCPv6 Stateful mode in dnsmasq

Registered by Shixiong Shang

Based on ipv6-two-attributes blueprints, this blueprint tries to cover the following three scenarios:

1) If end user chooses DHCPV6 Stateful as IPv6 RA mode and IPv6 Address mode, via either Dashboard or Neutron CLI, then OpenStack will send out RA to tenant network with A bit set to 0 and LMO bits set to 1. In addition, dnsmasq driven by OpenStack will also act as DHCPv6 Stateful server so tenant VM can use its service for address assignment and optional information. At the same time, VM will continue to rely on RA for default route.

2) If end user chooses DHCPV6 Stateful as IPv6 RA mode and set IPv6 Address mode to OFF, via either Dashboard or Neutron CLI, then OpenStack will send out RA to tenant network with A bit set to 0 and LMO bits set to 1. As the result, VM will continue to rely on RA for default route. However, OpenStack will NOT provide DHCPv6 Stateful server for address assignment and optional information. In this case, we assume that some devices out of OpenStack's control will provide address assignment and optional information.

It is worth mentioning that, the scenario 1) and the scenario 2) are only supported if tenant network is routable, i.e. the corresponding IPv6 subnet is attached to a neutron router and a router port is created for tenant gateway. When tenant subnet is NOT attached to any neutron router, (i.e. does NOT have gateway port), OpenStack should NOT be responsible for sending IPv6 RA.

3) If end user sets IPv6 RA mode to OFF and choose DHCPv6 Stateful as IPv6 Address mode, via either Dashboard or Neutron CLI, then dnsmasq driven by OpenStack will only act as DHCPv6 Stateful server for address assignment and optional information. The dnsmasq process is NOT responsible for sending any RA to tenant network. In this case, we assume that some devices out of OpenStack's control will announce IPv6 RA to tenant network.

It is worth mentioning that, the scenario 3) is only supported if tenant network is private or provider network. In other words, the tenant subnet is NOT attached to any neutron router and does NOT have gateway port on neutron router.

Blueprint information

Status:
Complete
Approver:
Mark McClain
Priority:
Medium
Drafter:
Shixiong Shang
Direction:
Approved
Assignee:
Shixiong Shang
Definition:
Approved
Series goal:
Accepted for juno
Implementation:
Implemented
Milestone target:
milestone icon 2014.2
Started by
Shixiong Shang
Completed by
Kyle Mestery

Related branches

Sprints

Whiteboard

July-25 (mestery): Approving for Juno-3.

18-Mar (markmcclain): Deferring until Juno

Gerrit topic: https://review.openstack.org/#q,topic:bp/ipv6-two-attributes,n,z

Addressed by: https://review.openstack.org/70649
    Add support to DHCP agent for BP ipv6-two-attributes

SridharG: When OpenStack dnsmasq is acting in the Stateful mode, the IPV6 addresses to be served to the tenant VMs are pre-determined by the dnsmasq server. In IPV6 scenario, DHCPV6 clients are uniquely identified using their DUIDs instead of MAC addresses. Can you give some details on how dnsmasq identifies the client using the DUID as DUID can be generated by DHCPV6 clients in three different ways (i.e., Link Layer Address with time, Vendor Assigned Unique ID and Link Layer Address).

Gerrit topic: https://review.openstack.org/#q,topic:bp/dnsmasq-ipv6-dhcpv6-stateless,n,z

Addressed by: https://review.openstack.org/99595
    Specification for Dnsmasq DHCPv6

Addressed by: https://review.openstack.org/102411
    Specification for Dnsmasq DHCPv6

Gerrit topic: https://review.openstack.org/#q,topic:bp/dnsmasq-ipv6-dhcpv6-stateful,n,z

Addressed by: https://review.openstack.org/106299
    Support Stateful DHCPv6 by dnsmasq

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.