Summary

We need support for multiple network interfaces per instance for libvirt. Our vision based on http://wiki.openstack.org/multi-nic specification. with some additions.

Release Note

This is implementation same functionality as in https://blueprints.launchpad.net/nova/+spec/multi-nic for libvirt. Multiple NIC for libvirt allows users to have instances connected to several networks. Implementation of this blueprint is first step in add support multi-nics for libvirt.

Rationale

User stories

Assumptions

Design

https://blueprints.launchpad.net/nova/+spec/multi-nic GD PoC branches: https://code.launchpad.net/~ilyaalekseyev/nova/libvirt-multinic-experemental

Implementation

UI Changes

Code Changes

  1. libvirt connection changes
    • changes in libvirt_con.to_xml() propagate NIC data
  2. firewall rules changes
    • All firewall drivers would be changed to support multiple networks per instance. iptable rules should be changed.
  3. network managers changes
    1. FlatManager: open question - seems it is not required to be changed, but we need to check it

    2. FlatDHCPManager should be changed to support multiple networks
    3. VlanManager should be changed to support multiple networks

  4. template changes
    • Add support of several NICs to template:
         1 #for $nic in $nics
         2         <interface type='bridge'>
         3             <source bridge='$nic.bridge_name'/>
         4             <mac address='$nic.mac_address'/>
         5             <!--   <model type='virtio'/>  CANT RUN virtio network right now -->
         6             <filterref filter="nova-instance-$nic.name">
         7                 <parameter name="IP" value="$nic.ip_address" />
         8                 <parameter name="DHCPSERVER" value="$nic.dhcp_server" />           
         9 #if $getVar('extra_params', False)
        10                 $nic.extra_params
        11 #end if
        12 #if $getVar('ra_server', False)
        13                 <parameter name="RASERVER" value="$nic.ra_server" />
        14 #end if
        15             </filterref>
        16         </interface>
        17 #end for
        18 
      

Migration

Test/Demo Plan

We need both unit and integration tests. Second is more important.

Unresolved issues

BoF agenda and discussion

http://ietherpad.com/arRVMd2Lwl


CategorySpec

Wiki: multinic-libvirt (last edited 2011-04-07 17:22:31 by EldarNugaev)