Conntrack 区域支持

https://blueprints.launchpad.net/neutron/+spec/conntrack-in-security-group

问题描述

由于为某个网络创建的安全组可能会影响其他网络端口之间的连接,如果它们与初始网络上的端口具有相同的 IP 地址,因此网络隔离可能会被破坏。

通过 IP 在 conntrack 中强制关闭连接会破坏与正在强制执行的安全组无关的网络上的现有连接。

请参阅 [1] 获取参考。

提议的变更

目标是添加对 conntrack 区域的支持,该区域允许在 conntrack 和 NAT 中处理具有相同标识的多个连接。

区域只是与网络设备关联的数字标识符,它被合并到各种哈希中,并用于除了连接元组之外,以区分条目。 此外,它还用于分隔 conntrack 分片队列。 可以使用原始表中的 iptables 目标来代替网络设备,以将 conntrack 条目分配给区域。 请参阅 [3] 以获取更多信息。

在安全组的情况下,每个 conntrack 区域应对应于一个 neutron 网络。 添加某种网络标识符使连接元组唯一。

事实上,这已经在 ovs 代理中完成,其中存在本地 VLAN 映射。 可以将完全相同的策略应用于 conntrack 区域。 可以使用本地 VLAN ID 作为 conntrack 区域 ID。

防火墙驱动程序需要进行更改。 它应该保留当前的 network-to-zone 映射,并使用此附加参数应用端口防火墙规则。 在 ovs 代理启动/重新启动时,可以从本地 VLAN 映射填充此映射。 更改区域标识是可以的,因为 iptables 规则在 ovs 代理重新启动后会更新。

这也可以由其他代理利用,例如 OFAgent。

数据模型影响

REST API 影响

安全影响

此功能实际上应该通过修复租户网络隔离来提高安全性。

通知影响

其他最终用户影响

性能影响

无或微不足道。

IPv6 影响

其他部署者影响

开发人员影响

社区影响

备选方案

实现

负责人

yangxurong

工作项

  1. ovs 代理的实现。 请参阅 [2]

  2. 功能测试。

  3. 其他受影响代理的实现。

依赖项

测试

Tempest 测试

功能测试

需要功能测试。

API 测试

文档影响

用户文档

开发人员文档

参考资料

[1] https://bugs.launchpad.net/neutron/+bug/1359523 [2] https://review.openstack.org/#/c/118274/ [3] http://lwn.net/Articles/370152/