| <?xml version='1.0' encoding='utf-8' ?> |
| <!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ |
| <!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent"> |
| %BOOK_ENTITIES; |
| ]> |
| |
| <!-- Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| http://www.apache.org/licenses/LICENSE-2.0 |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| <section id="ipv6-support"> |
| <title>IPv6 Support in &PRODUCT;</title> |
| <para>&PRODUCT; supports Internet Protocol version 6 (IPv6), the recent version of the Internet |
| Protocol (IP) that defines routing the network traffic. IPv6 uses a 128-bit address that |
| exponentially expands the current address space that is available to the users. IPv6 addresses |
| consist of eight groups of four hexadecimal digits separated by colons, for example, |
| 5001:0dt8:83a3:1012:1000:8s2e:0870:7454. &PRODUCT; supports IPv6 for public IPs in shared |
| networks. With IPv6 support, VMs in shared networks can obtain both IPv4 and IPv6 addresses from |
| the DHCP server. You can deploy VMs either in a IPv6 or IPv4 network, or in a dual network |
| environment. If IPv6 network is used, the VM generates a link-local IPv6 address by itself, and |
| receives a stateful IPv6 address from the DHCPv6 server.</para> |
| <para>IPv6 is supported only on KVM and XenServer hypervisors. The IPv6 support is only an |
| experimental feature.</para> |
| <para>Here's the sequence of events when IPv6 is used: </para> |
| <orderedlist> |
| <listitem> |
| <para>The administrator creates an IPv6 shared network in an advanced zone.</para> |
| </listitem> |
| <listitem> |
| <para>The user deploys a VM in an IPv6 shared network.</para> |
| </listitem> |
| <listitem> |
| <para>The user VM generates an IPv6 link local address by itself, and gets an IPv6 global or |
| site local address through DHCPv6.</para> |
| <para>For information on API changes, see <xref linkend="changed-apicommands-4.1"/>.</para> |
| </listitem> |
| </orderedlist> |
| <section id="guidelines-ipv6"> |
| <title>Prerequisites and Guidelines</title> |
| <para>Consider the following:</para> |
| <itemizedlist> |
| <listitem> |
| <para>CIDR size must be 64 for IPv6 networks.</para> |
| </listitem> |
| <listitem> |
| <para>The DHCP client of the guest VMs should support generating DUID based on Link-layer |
| Address (DUID- LL). DUID-LL derives from the MAC address of guest VMs, and therefore the |
| user VM can be identified by using DUID. See <ulink |
| url="http://tools.ietf.org/html/rfc3315">Dynamic Host Configuration Protocol for IPv6 |
| </ulink>for more information.</para> |
| </listitem> |
| <listitem> |
| <para>The gateway of the guest network generates Router Advisement and Response messages to |
| Router Solicitation. The M (Managed Address Configuration) flag of Router Advisement |
| should enable stateful IP address configuration. Set the M flag to where the end nodes |
| receive their IPv6 addresses from the DHCPv6 server as opposed to the router or |
| switch.</para> |
| <note> |
| <para>The M flag is the 1-bit Managed Address Configuration flag for Router Advisement. |
| When set, Dynamic Host Configuration Protocol (DHCPv6) is available for address |
| configuration in addition to any IPs set by using stateless address |
| auto-configuration.</para> |
| </note> |
| </listitem> |
| <listitem> |
| <para>Use the System VM template exclusively designed to support IPv6. Download the System |
| VM template from <ulink url="http://cloudstack.apt-get.eu/systemvm/" |
| >http://cloudstack.apt-get.eu/systemvm/</ulink>.</para> |
| </listitem> |
| <listitem> |
| <para>The concept of Default Network applies to IPv6 networks. However, unlike IPv4 |
| &PRODUCT; does not control the routing information of IPv6 in shared network; the choice |
| of Default Network will not affect the routing in the user VM.</para> |
| </listitem> |
| <listitem> |
| <para>In a multiple shared network, the default route is set by the rack router, rather than |
| the DHCP server, which is out of &PRODUCT; control. Therefore, in order for the user VM to |
| get only the default route from the default NIC, modify the configuration of the user VM, |
| and set non-default NIC's <code>accept_ra</code> to 0 explicitly. The |
| <code>accept_ra</code> parameter accepts Router Advertisements and auto-configure |
| <code>/proc/sys/net/ipv6/conf/interface</code> with received data.</para> |
| </listitem> |
| </itemizedlist> |
| </section> |
| <section id="limitsipv6"> |
| <title>Limitations of IPv6 in &PRODUCT; </title> |
| <para>The following are not yet supported:</para> |
| <orderedlist> |
| <listitem> |
| <para>Security groups</para> |
| </listitem> |
| <listitem> |
| <para>Userdata and metadata</para> |
| </listitem> |
| <listitem> |
| <para>Passwords</para> |
| </listitem> |
| </orderedlist> |
| </section> |
| <section id="network-conf-dhcpv6"> |
| <title>Guest VM Configuration for DHCPv6</title> |
| <para>For the guest VMs to get IPv6 address, run dhclient command manually on each of the VMs. |
| Use DUID-LL to set up dhclient. </para> |
| <note><para>The IPv6 address is lost when a VM is stopped and started. Therefore, use the same procedure |
| to get an IPv6 address when a VM is stopped and started.</para></note> |
| <orderedlist> |
| <listitem> |
| <para>Set up dhclient by using DUID-LL.</para> |
| <para>Perform the following for DHCP Client 4.2 and above:</para> |
| <orderedlist numeration="loweralpha"> |
| <listitem> |
| <para>Run the following command on the selected VM to get the dhcpv6 offer from |
| VR:</para> |
| <programlisting>dhclient -6 -D LL <dev></programlisting> |
| </listitem> |
| </orderedlist> |
| <para>Perform the following for DHCP Client 4.1:</para> |
| <orderedlist numeration="loweralpha"> |
| <listitem> |
| <para>Open the following to the dhclient configuration file:</para> |
| <programlisting>vi /etc/dhcp/dhclient.conf</programlisting> |
| </listitem> |
| <listitem> |
| <para>Add the following to the dhclient configuration file:</para> |
| <programlisting>send dhcp6.client-id = concat(00:03:00, hardware);</programlisting> |
| </listitem> |
| </orderedlist> |
| </listitem> |
| <listitem> |
| <para>Get IPv6 address from DHCP server as part of the system or network restart.</para> |
| <para>Based on the operating systems, perform the following:</para> |
| <para>On CentOS 6.2:</para> |
| <orderedlist numeration="loweralpha"> |
| <listitem> |
| <para>Open the Ethernet interface configuration file:</para> |
| <programlisting>vi /etc/sysconfig/network-scripts/ifcfg-eth0</programlisting> |
| <para>The <code>ifcfg-eth0</code> file controls the first NIC in a system.</para> |
| </listitem> |
| <listitem> |
| <para>Make the necessary configuration changes, as given below:</para> |
| <programlisting>DEVICE=eth0 |
| HWADDR=06:A0:F0:00:00:38 |
| NM_CONTROLLED=no |
| ONBOOT=yes |
| BOOTPROTO=dhcp6 |
| TYPE=Ethernet |
| USERCTL=no |
| PEERDNS=yes |
| IPV6INIT=yes |
| DHCPV6C=yes</programlisting> |
| </listitem> |
| <listitem> |
| <para>Open the following:</para> |
| <programlisting>vi /etc/sysconfig/network</programlisting> |
| </listitem> |
| <listitem> |
| <para>Make the necessary configuration changes, as given below:</para> |
| <programlisting>NETWORKING=yes |
| HOSTNAME=centos62mgmt.lab.vmops.com |
| NETWORKING_IPV6=yes |
| IPV6_AUTOCONF=no</programlisting> |
| </listitem> |
| </orderedlist> |
| <para>On Ubuntu 12.10</para> |
| <orderedlist numeration="loweralpha"> |
| <listitem> |
| <para>Open the following:</para> |
| <programlisting>etc/network/interfaces:</programlisting> |
| </listitem> |
| <listitem> |
| <para>Make the necessary configuration changes, as given below:</para> |
| <programlisting>iface eth0 inet6 dhcp |
| autoconf 0 |
| accept_ra 1</programlisting> |
| </listitem> |
| </orderedlist> |
| </listitem> |
| </orderedlist> |
| </section> |
| </section> |