XenServer 添加对 neutron 安全组的支持

包含您的 Launchpad 蓝图的 URL

https://blueprints.launchpad.net/nova/+spec/support-neutron-security-group

此蓝图旨在支持 neutron 安全组。

问题描述

XenServer 作为计算驱动程序,缺乏对 neutron 安全组的支持。正如我们所知,neutron 的安全组是通过使用 iptables 实现的,这些 iptables 规则应用于每个 VIF 的 Linux 网桥。然而,XenServer 计算驱动程序在启动实例时不会为 VIF 创建 Linux 网桥,这导致 neutron 无法应用 iptables 规则,因此 neutron 中的防火墙驱动程序目前只能配置为 NoopFirewallDriver。

用例

最常见的用例是在使用 neutron 网络和 neutron 安全组的 OpenStack 环境中部署,然后启动一个实例并检查实例的网络连接。

提议的变更

提议的更改是在启动新实例时为每个 VIF 添加 Linux 网桥。此实现或多或少与 libvirt 所做的事情相同。启动实例时,xen nova 计算驱动程序将始终为每个 VIF 创建 Linux 网桥 qbr,并使 qbr 连接到计算节点中的集成网桥(例如 br-int)。因此,计算节点中的连接将如下所示

VIF-1 -> LinuxBridge(qbr-1) ->
VM OvsBridge(br-int) -> OvsBridge(br-eth)
VIF-2 -> LinuxBridge(qbr-2) ->

因此,有了新添加的 Linux 网桥 qbr,在 neutron 侧,它可以自动检测这些网桥 qbr-XXX,并在每个 VIF 的 Linux 网桥 qbr-XXX 上应用安全组规则。 新添加的 Linux 网桥将在部署 neutron 的情况下始终创建,不会添加新的配置设置。 此更改不会对 nova 网络产生任何影响(即,如果部署 nova 网络,则不会创建 qbr-XXX Linux 网桥)。然后,当 neutron 的 conf 文件中防火墙驱动程序为 OVSHybridIptablesFirewallDriver 时,neutron 安全组将正常工作。

备选方案

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

此实现是为了支持 XenSerer 的 neutron 安全组功能,就像其他 hypervisor 一样。 如果要使用此功能,主要的部署更改是

  1. 在 OpenStack 环境中部署 neutron

  2. 修改 nova.conf,应指定以下配置项

    [DEFAULT]
    use_neutron = True
    firewall_driver = nova.virt.firewall.NoopFirewallDriver
    
  3. 修改 neutron 配置文件 ml2_conf.ini

    [securitygroup]
    firewall_driver = \
        neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
    enable_security_group = true
    

开发人员影响

实现

负责人

主要负责人

huanxie

其他贡献者

工作项

  1. 在启动实例时为每个 vif 创建 Linux 网桥

  2. 在 VIF 和 Linux 网桥之间创建 tap 设备

  3. 在 Linux 网桥和 Ovs 网桥之间创建 veth 对

依赖项

这取决于一个 bug 修复 https://bugs.launchpad.net/neutron/+bug/1268955

测试

  • 场景测试将手动或使用 tempest 自动完成。 当它实现时,我们可以使用 neutron VLAN 网络部署一个环境,启用 neutron 安全组,并在计算节点中的 neutron 的 ml2_conf.ini 文件中设置正确的 firewall_driver。

  • XenServer Neutron CI 也会更新,以通过现有的 tempest 测试来测试安全组。 当代码补丁集准备好后,我们将更改上述一些配置,并启动完整的 tempest 来检查功能并确保没有负面影响。 测试报告将公开可访问。

文档影响

参考资料

历史