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
- FlatManager:开放问题 - 似乎不需要更改,但我们需要检查一下
- FlatDHCPManager 应更改以支持多个网络
- 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