Introduction
Abiquo supports IPv6 networking for private, public, external and unmanaged IPv6 networks. It supports any valid IPv6 address format (short or long) and the creation of IP addresses with most of the transitional IPv6 technologies: IPv4-mapped, IPv4-compatible, Teredo and ISATAP. This first version has limitations on the number of IPv6 NICs per virtual machine.
To use Abiquo and a DHCPv6 server to assign addresses, IPv6 will require one DHCPv6 server for each datacenter. The DHCP and DHCPv6 servers may be running on the same machine. Cloud users will be able to work with IPv6 networks in the same way as IPv4 networks with addresses listed and selected through the user interface.
Full implementation diagram: ipv6.png
Abiquo supports two use cases of IPv6: "strict" networks that enforce EUI-64 IP address generation and manual address entry. See IPv6 use cases
Preparation for Abiquo IPv6
Router Advertisement System for All Networks
When you create networks in Abiquo, you must configure the networks in your router advertisement system. For unmanaged networks, you would usually configure your virtual machines to receive their IP addresses from this system.
In effect, with strict networks where the allocation of EUI64 addresses is enforced, the addresses that will be assigned by the router advertisement system based on the MAC are predictable. So the address generated and displayed in Abiquo should be the same as the one allocated by the router advertisement system. This means that the DHCP is not necessary for strict networks.
DHCP v6 Service
When you create a standard Abiquo datacenter, a DHCPv6 service is automatically added. Note that in strict networks the addresses assigned by the router advertisement system based on the MAC are predictable. So the address generated and displayed in Abiquo should be the same as the one allocated by the router advertisement system.
Change DHCP v6
You can change the DHCPv6 remote service to another server via the GUI or via the API. First delete the existing service, then use the GUI or an API request similar to the one below to add a new DHCPv6 server. Note that the remote service type is "DHCPv6".
Configure VM Templates to Use DHCPv6
Under IPv6, configure your virtual machine templates to use DHCPv6. First delete any existing DUID information from the templates as you would any other network or VM-specific information.
Configure your templates so that your virtual machines will run the DHCPv6 client to retrieve the assigned IP address. Note that with a suitable configuration of the DUID of the virtual machine template, more than one NIC with an IPv6 address can be assigned to a Linux virtual machine. But only one NIC with an IPv6 address can be assigned to a Windows virtual machine.
If you are using a Windows template, configure the DUID in the registry. If you are using a CentOS virtual machine template, remember to correctly configure SELinux and IP tables to ensure connectivity.
Create an IPv6 Network using the UI
Go to the Public or External Networks tab of your datacenter or the Private networks tab of your virtual datacenter to create an IPv6 network.
See Manage Public Networks, Manage External Networks, Manage Unmanaged Networks and Manage Private Networks for more information.
Create an IPv6 Network using the API
See Use the API to Manage IPv6 Networks
IPv6 Technical Notes
IPv6 Functionality Diagram
For a full Abiquo IPv6 functionality diagram see ipv6.png (use open in new window or tab to view with enlargement). Note that although the diagram shows that the unmanaged network details are written to the leases file on the DHCPv6 server if it is available, the DHCPv6 server is not required for unmanaged networks.
ULA Private Networks
An Abiquo private network uses a ULA (Unique Local Address) network. This is a pseudo-random address created from local MAC and time (NTP). This network can be configured with subnet masks of /48, /56, and /64. It is assumed to be unique. See http://tools.ietf.org/html/rfc4193.
Unmanaged Networks in IPv6
When you deploy a virtual machine in an unmanaged network, Abiquo generates an IP for the virtual machine. These IPs are registered in the Abiquo database and the DHCPv6 server as assigned to the virtual machine. However, Abiquo does not actually assign the IPs to the virtual machine. The IPs generated in this manner should be the same as the actual IPs obtained by the machines, because they are EUI64 IPs, based on the same network prefix and MAC address. This process enables Abiquo to display the IPs of virtual machines on unmanaged networks in the Abiquo GUI.
Limitation on Number of IP Addresses Received via DHCP
Non-standard DHCPv6 Leases
For functional reasons, the Abiquo DHCPv6 leases are non-standard under IPv6. Abiquo cannot guess the DUID of the virtual machine, so the leases are written using the MAC. There are differences in the Hardware Ethernet and Fixed Address values. A NIC is identified by the hardware ethernet field, which in Abiquo is the MAC address. For functional reasons, the fixed address in Abiquo is the IPv6 address represented as a series of 4 IPv4 addresses.
Limit of One IPv6 Address in Windows
Windows virtual machine templates can only receive one IP address through DHCPv6 because the virtual machines are identified by the MAC in the leases file.
More than One IPv6 Address in Unix
Modify the template to dynamically generate a DUID using a predictable method of DUID is equal to MAC. This means the template must generate the DUID of the DHCPv6 client with the method "DUID Based on Link-layer Address [DUID-LL]", to enable the Unix virtual machines to receive more than one IP address through DHCPv6.