Heya, Took the liberty of copying the proposal into email as this makes discussion much easier. Comment inline like a regular email.
> IPv6 Support > > 1 Background > CloudStack does not support IPv6 today. Users/Customers are starting to ask > for IPv6 support in CloudStack. With some users running out of IPv4 > addresses, this should be a important requirement. With complete IPv6 > support, customers would be able to deploy Public/Private clouds on both IPv4 > and IPv6 environments Agreed, we are already running out of IPv4 space today. So I've also been working on getting some IPv6 support into CloudStack, mainly for isolated networks. > > 2 Requirements > Moved all of the requirements from the following JIRA ticket. > > https://issues.apache.org/jira/browse/CLOUDSTACK-452 > > This is quite a large feature, but we are lacking complete IPv6 support at > this moment. > > We should support IPv6 for: > - The Management server itself > - Communication with the Hypervisors > - Communication with the System VMs > > Those three are probably the easiest work, we also need to support IPv6 for > instances. > > In both the Advanced and Basic zone Instances should be able to get a non-NAT > true and native IPv6 address. > > We should also not limit them to having one IP, they should be able to get > multiple IPv6 addresses. > > In the basic zone it can be done pretty easily by having the Virtual Router > also hand out IPv6 over DHCPv6 and have your router in the network handle the > gateway work. Technically this is a very sound idea, but scale needs to be discussed. Having static assignments in a database like we do for IPv4 could have potential impact as the address space available is multitudes bigger than in IPv4. Technically one can have 18.446.744.073.709.551.616 hosts in a single /64 network, you don't want to be doing a database query on such a table to lookup the IP for a host. (Not that it's very reasonable to assume this we would ever see networks this size) My thinking was more geared to using SLAAC for determining addressing to get this burden away from cloudstack management server, but this would make other configuration like the firewall a lot more difficult. The other issue with using DHCPv6 is the pseuso addressing that a lot of systems use a the moment, lots of relatively short lived IPv6 addresses on an interface in addition to the one IPv6 address that is based on the modified EUI-64. This might be a feature that we would want to encourage for security reasons, but again this makes firewalls potentially more difficult. > > > In the advanced zone it becomes more difficult. > > One way could be that the network admin creates a static route for a /48 > towards a Virtual Router and then the VR can hand out /64s to Instances. > > But static routing can become a problem, so you might want to use OSPF, LISP > or even iBGP for getting those prefixes to the VR. Not many network admins I know would be comfortable with dynamic routing protocols for this purpose. Especially in a cloud where the number of changes could potentially be very high. (People constantly creating and destroying networks and VR's) This would trigger to much calculations and require serious power of the routers dealing with those networks. With a sizable number of VRs this could cripple the device. Out of the three my vote would be the (i)BGP solution, but I foar more prefer a static setup. The admin prepares a set of "public ip", "route" mappings in the router(s) and the database, CloudStack can then allocate this public ip to a VR and the associated route will be there on the external router to route the traffic. A nice additional feature would be an option to add the external router to the orchestration and dynamically provision and remove the routes. > > This is a big feature, but I think the Basic zone is the easiest for now. I would vote for thinking up a good solution for both and doing the advanced zone in one go. But that is very simply because my use case is for advanced networking together with IPv6, we do not use basic networking in any of our deployments. > > In the Advanced Zone you COULD keep everything behind the VR IPv4 and have > the VR do IPv6 loadbalancing, but that would still not be true IPv6 > connectivity. This is probably not a good idea :-) In my experience this will work, but give all kinds of unexpected failures (like protocols where the IP is passed inside the protocol). Think about the application that is connected on an IPv4 socket but receives (or is requested to return) an IPv6 addy in the protocol. > > NAT in the VR seems like a firewall, but a true statefull firewall in the VR > could do the same while the Instances still have publicly routeable IPv6 > addresses. I think we should focus on true statefull firewalls. This would encourage people to think more on security and allows the use of IPv6 privacy extensions right from the host. > > There is no functional spec on this yet, but we have to keep this in mind > that we need IPv6 support. People are running out of IPv4 space. What would be considered a functional spec? I think that there are more than enough use cases to which I can add my personal use case that I can't get an IPv4 allocation to extend the public ip range on one of my clouds at the moment. The shortage is real and causing problems for me already. That said, simply enabling IPv6 will not "fix" the problem until there is a widespread adoption of IPv6 by endusers. Still let's not play the chicken and egg game, but fix IPv6 in CloudStack and take the lead. > > 3 UI / UX Requirements > All fields (input fields and display fields) that take IP Addresses would > need to support both IPv4 and IPv6 I think it's bigger than this. Do we need service offerings to tell if a network should have IPv6, IPv4 or both? In that case we need to be able to tell what kind of addressing needs to be configured and how. Depending on the solution we choose we need configuration for the static routes and mappings to public addresses. It probably also ties in with the multiple address per nic configuration and this also has UI implications. We would need configuration screens to configure privacy extensions (ipsec, replacing the VPNs). Firewall configurations will become more complex and might need additional screens for IPv6 statefull firewall configuration. Also the exisiting network configuration might need to be tuned to the type of networking, we don't need to give the user the possibility to configure portforwarding on an IPv6 only network for example. In addition simple stuff like the count for available public IP addresses might need to be revisited to make the difference between IPv4 and IPv6 clear in the UI. > > 4 Upgrade Scenarios > Following upgrade scenarios should be supported: > > No upgrade scenarios need to be handled, as this is a new functionality. We might need to consider a scenario where a user might want to add IPv6 support to an existing network. If we change service offerings to determine support for IPv4 or IPv6 we need to convert existing network offerings to support IPv4. > > -----Original Message----- > From: Manan Shah [mailto:manan.s...@citrix.com] > Sent: Wednesday, December 19, 2012 8:13 PM > To: cloudstack-dev@incubator.apache.org > Subject: [ASFCS41] IPv6 Support > > Hi, > > I would like to update the existing JIRA ticket on IPv6 support and I have > also > added a requirements page to track this feature. Please provide feedback on > the requirements. > > JIRA Ticket: https://issues.apache.org/jira/browse/CLOUDSTACK-452 > Requirements: > https://cwiki.apache.org/confluence/display/CLOUDSTACK/IPv6+Support+in > +CloudStack > > Regards, > Manan Shah