FWaaS 变更以支持分布式虚拟路由器(DVR)

https://blueprints.launchpad.net/neutron/+spec/neutron-dvr-fwaas

问题描述

随着我们转向 DVR 模型,当前基于 L3 的服务,例如依赖于在同一命名空间路由器上看到双向流量的 FWaaS,将会出现问题。FWaaS 的参考实现基于 iptables,并且是状态化的,即会跟踪连接。DVR 的设计意图是在计算节点的实例上分发路由功能,并且不再将所有流量路由通过集中式路由器,以实现可扩展性的目标。

提议的变更

为了在 DVR 部署的上下文中维护 FWaaS 功能,第一步(本提案的目标)是确保我们可以保留当前的边界防火墙功能(南北流量),并确保应用规则的方式不会破坏正常的 DVR 东-西流量。

DVR[1] 将南北流量分为两类

默认 SNAT 用例 - 流向外部网络的流量将通过网络/服务节点以及位于那里的 SNAT 命名空间进行处理,然后流出。响应流量将再次通过 SNAT 命名空间进行转换,然后直接切换到计算节点中的适当 VM。

具有浮动 IP(FIP) 的 VM 用例 - 流出的流量将通过内部路由器进行路由和转换,然后通过计算节点上的 br-ex 接口上的 FIP 命名空间流向外部网络。对于入站流量,流程同样是通过计算节点上的 br-ex 接口,然后是 FIP 命名空间,并通过内部路由器进行处理,后者也处理到 VM 的转换。

DVR 在网络节点和计算节点上运行 L3Agent。由于 FWaaS Agent 在 L3Agent 的上下文中运行,FWaaS 插件到 Agent 的消息传递已经可用。在上述两种用例的上下文中,网络/服务节点上的 FWaaS Agent 应该在 SNAT 命名空间中安装防火墙规则,而计算节点上的 FWaaS Agent 应该在 IR 命名空间中安装防火墙规则,以应用于通过 FIP 命名空间流动的流量(以确保不会影响东西向流量)。 这样,对于这两种用例,FWaaS 对看到双向流量的要求都得到了满足。FWaaS Agent 可以使用 agent_mode 配置选项来确定它是在网络/服务节点还是计算节点上,从而确定如何安装规则。

SNAT 接口在 SNAT 命名空间中以 ‘sq-’ 为前缀。IR 命名空间中感兴趣的接口具有 ‘rfp-’ 前缀。L3Agent 中 DVR 支持的一部分添加的 API[2] 将被 FWaaS Agent 用于确定如何适当地插入防火墙规则。

备选方案

无。这是必需的,因为 DVR - FWaaS 集成将会中断。

数据模型影响

无影响,更改在 Agent/iptables 驱动程序上。

REST API 影响

没有引入新的 REST API。

安全影响

努力尽量减少安全影响,因为 DVR 功能会破坏 FWaaS。覆盖南北流量,但不支持东西向流量,将在 Juno 之后的单独提案中解决。

通知影响

无对现有功能的影响。

其他最终用户影响

不支持 FWaaS 在东西向流量上的应用。

性能影响

无。

其他部署者影响

部署者应注意,这仅针对南北流量功能。

开发人员影响

无。

实现

负责人

主要负责人:skandasw / badveli_vishnuus / (待定) 其他贡献者:待定

工作项

  • FWaaS Agent 变更以识别 agent_mode,以识别适当的命名空间和接口。

  • 相应的 FWaaS 驱动程序变更。

依赖项

等待合并的补丁在 [1]。

测试

单元测试、Tempest API 测试。

文档影响

DVR 和 FWaaS 文档变更以反映需求。

参考资料

[1] https://blueprints.launchpad.net/neutron/+spec/neutron-ovs-dvr [2] https://review.openstack.org/#/c/89413/