Jump to: navigation, search

FlatManagerIPv6Support

Revision as of 21:57, 2 February 2011 by Tpatil (talk)
  • Launchpad Entry: NovaSpec:cactus-flatmanager-ipv6-support
  • Created:2 February, 2011
  • Contributors: Hisaharu Ishii, Nachi Ueno, Koji Iida, Tushar Patil

Summary

IPV6 is already supported for FlatDHCP and VLAN network model in Bexar release. Add support to Flat network model also

Release Note

TBD

Rationale

  • IPV4 address exhaustion

User stories

Assumptions

  • Currently nova support FlatManager with single bridge that you specify in flat_network_bridge (br100 by default). This bridge needs to be created on all compute hosts by the user.
  • Creating multiple networks is currently not supported
  • If flat_injected is True, the compute host will attempt to inject network config into the guest. It attempts to modify /etc/network/interfaces and currently only works on debian based systems. To support a wider range of OSes, some other method may need to be devised to let the guest know which ip it should be using so that it can configure itself.

Design

  • Add database column addressV6 in the fixed_ips database table.
  • Add database column netmaskV6 in the networks database table.
  • Modify ra_server database column of networks tables to gatewayV6.
    • Reason : When we implemented IPv6 support for FlatDHCP and Vlan network model, we added new ra_server column in the networks database table. However we think for Flat network model, this name ra_server column is not suitable. Because for all 3 network models, routers acts as a gateway which forwards the packets from inside and outside of the cloud and for only VlanManager or FlatDHCPManager, routers advertises RA messages. Then in generally, those routers should be called as not "RA server" but just "gateway".
  • Populate netmaskV6, gatewayV6 columns when you create networks using nova-manage network create commmand.
  • Add new method _create_fixed_ips_for_ipv6 or make changes in the existing method _create_fixed_ips to add fixed_ips for ipv6 address based on the use_ipv6 flag and populate addressV6 column of fixed_ips.
  • Add new methods to the nova/db/sqlalchemy to get/set addressV6/netmaskV6/gatewayV6
  • Modify the interfaces.template to include following
    • ###Start IPV6 static configuration
      • iface eth0 inet6 static
      • pre-up modprobe ipv6
      • address %(addressV6)s
      • netmask %(netmaskV6)s
      • gateway %(gatewayV6)s
  • ###END IPV6
    • If use_ipv6 flag is set to True, then only the above IPV6 configuration will be injected in the /etc/network/interfaces of the VM instance.
  • Modify libvirt_conn.py for filtering security groups

Implementation

UI Changes

  • There should be no visible changes to the end users, all this work will be behind the network/compute servers.

Code Changes

Migration

  • Database migration is required for the newly added and modified columns to the networks and fixed_ips database tables.

Test/Demo Plan

  • Unit tests will be added as the code is developed. System testing will be on Ubuntu Lucid.

Unresolved issues

None

BoF agenda and discussion