跳转到: 导航, 搜索

Multinic-libvirt

  • Launchpad 条目: NovaSpec:multinic-libvirt
  • 创建者: Ilya Alekseyev
  • 贡献者: Eldar Nugaev, Ilya Alekseyev

总结

我们需要为 libvirt 提供每个实例多个网络接口的支持。我们的愿景基于 https://wiki.openstack.org/multi-nic 规范,并进行了一些补充。

发布说明

此实现与 https://blueprints.launchpad.net/nova/+spec/multi-nic 中的功能相同,用于 libvirt。 libvirt 的多个 NIC 允许用户将实例连接到多个网络。 实现此蓝图是为 libvirt 添加多 NIC 支持的第一步。

原理

用户故事

前提条件

设计

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

实现

UI 变更

代码变更

I. libvirt connection changes
   changes in libvirt_con.to_xml() propagate NIC data
I. firewall rules changes
   All firewall drivers would be changed to support multiple networks per instance. iptable rules should be changed.
I. network managers changes
  1. FlatManager:开放问题 - 似乎不需要更改,但我们需要检查一下
  2. FlatDHCPManager 应更改以支持多个网络
  3. VlanManager 应更改以支持多个网络
I. template changes
  Add support of several NICs to template:
  
#!highlight xml
#for $nic in $nics
        <interface type='bridge'>
            <source bridge='$nic.bridge_name'/>
            <mac address='$nic.mac_address'/>
            <!--   <model type='virtio'/>  CANT RUN virtio network right now -->
            <filterref filter="nova-instance-$nic.name">
                <parameter name="IP" value="$nic.ip_address" />
                <parameter name="DHCPSERVER" value="$nic.dhcp_server" />           
#if $getVar('extra_params', False)
                $nic.extra_params
#end if
#if $getVar('ra_server', False)
                <parameter name="RASERVER" value="$nic.ra_server" />
#end if
            </filterref>
        </interface>
#end for


迁移

测试/演示计划

我们需要单元测试和集成测试。后者更重要。

未解决的问题

BoF 议程和讨论

http://ietherpad.com/arRVMd2Lwl