适用于 Cisco 虚拟路由器的 FWaaS 实现

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

添加基于 Cisco 虚拟路由器实现的厂商 FWaaS 支持。

问题描述

Cisco 虚拟路由器实现 (CSR1kv) 除了路由之外,还支持防火墙服务。CSR1kv 后端允许将防火墙应用于其任何接口上的特定方向的流量。此蓝图针对 neutron 对此用例的支持。

提议的变更

本蓝图提出了 CSR1kv 防火墙的插件和 Agent/驱动程序的支持。参考实现中的任何资源均未更改。OpenStack 资源被转换为后端实现,并且与后端资源的映射关系得以维护。

支持 CSR1kv 需要:* 额外的厂商属性,用于指定防火墙插入点(neutron port_id 对应于路由器接口以及相关的方向)。虽然这被提议为厂商扩展,但新的框架将被采用来取代扩展,或者根据其可用性的时间线进行演进。“extraroute”方法将被采用,以在不更改 neutron 客户端的情况下添加端口和方向所需的属性。* 在厂商插件中引入新的表来跟踪防火墙资源的插入点。* 与 CSR1kv 路由服务插件[1]交互,仅限于查询托管 VM 和验证附加接口。* 添加属性验证器,以符合厂商实现约束。* 基于 Cisco Config Agent[2]构建的防火墙 Agent 支持,作为服务 Agent 处理与插件的通信,以及大部分与参考实现类似的通信接口(防火墙字典、插件 API 和 Agent API)。* 使用现有的厂商 REST 通信库进行 Agent 到后端的通信。

实现将作为服务插件进行定位,一旦对该工作有清晰的认识,将重构以与 Flavor 框架对齐。此外,作为厂商服务插件,该工作将在服务拆分讨论最终确定后进行重构或重新调整。此外,如果 Kilo 中重新提交服务插入 BP[3] 或类似提案,此工作将与社区方向保持一致。

数据模型影响

没有计划更改现有的防火墙资源(FirewallRule、FirewallPolicy 和 Firewalls)。通过引入新的表 CiscoFirewallAssociation 来跟踪插入点属性

  • firewall_id - 逻辑防火墙资源的 uuid

  • port_id - 对应于路由器接口的 neutron port 的 uuid

  • direction - 在 portid 上应用防火墙的流量方向
    可以是
    • ingress

    • egress

    • bidirectional

REST API 影响

没有引入新的 REST API。

安全影响

无。

通知影响

对现有 API 没有影响。插件和 Agent 之间的消息传递需要新的主题。

其他最终用户影响

无。

性能影响

无。

IPv6 影响

预计可以与 IPv6 协同工作。

其他部署者影响

部署者必须启用 CSR1kv 路由服务插件、Cisco Config Agent 以及此处提出的 CSR1kv 防火墙服务插件。如果未启用,则对社区实现没有影响。Agent/后端驱动程序源自服务插件,最终源自 flavor,并通过 Config Agent 进行消息传递,从而避免了单独的 .ini 文件。

开发人员影响

无。

社区影响

该规范在 Juno 周期中经过审查和批准。它被提议作为厂商服务插件,并将重构以与该领域的任何社区工作对齐。

备选方案

理想的方法是基于 flavor 框架和服务插入 BP。但鉴于这些尚未确定,因此将其作为服务插件提出,并在可用时重构为与社区模型对齐。

实现

下图表示 CSR1kv 组件和交互。CSR1kv 路由服务插件 [1] 和 Cisco Config Agent[2] 已在 Juno 中上游。此处针对的工作是后缀为‘*’的两个项目及其与现有组件的接口。

Neutron Server
+---+---------------------+--------+             +-----------+
|   +---------------------+        |             |Cisco Cfg  |
|   | CSR1kv Routing      |        |             |  Agent    |
|   | Service Plugin      |        |             |           |
|   |                     |        |             |           |
|   |                     |        |             |           |
|   +---------------------+        |             +------+----+
|           ^                      |             |CSR1kv|
|           |                      |             |  FW  |
|           |          +------------------------>|Agent*|<-----+
|           v          |           |             +------+      |
|   +------------------v--+        |                           v
|   | CSR1kv Firewall     |        |                      +-----------+
|   | Service Plugin*     |        |                      |REST Client|
|   |                     |        |                      |   lib     |
|   |                     |        |                      +-----------+
|   +---------------------+        |                            |
|                                  |                            v
|                                  |                         +----------+
|                                  |                         |          |
|                                  |                         |  CSR1kv  |
|                                  |                         |    VM    |
+----------------------------------+                         +----------+

负责人

主要负责人:skandasw 其他贡献者:yanping

工作项

带有防火墙资源厂商扩展属性的服务插件。厂商特定扩展的 API 和数据库更改。Cisco CSR1kv FWaaS 服务 Agent 添加到 Cisco config Agent[2]。REST 客户端库重构,以与 Cisco FWaaS 和 VPN 实现协同工作。

依赖项

没有。所有 CSR 特定组件都已上游。

测试

正在添加单元测试以解决这些更改。

Tempest 测试

将添加针对厂商实现的测试,以及 CI 支持。

功能测试

将添加测试,以验证 CSR FWaaS 实现与 CSR 路由实现的关联。

API 测试

将添加针对所提出的厂商扩展的测试。

文档影响

用户文档

需要 Cisco 部分的新文档。

开发人员文档

虽然正在提出 API 扩展,但这些是厂商扩展,将据此进行记录。API 更改没有其他消费者。

参考资料

[1]https://blueprints.launchpad.net/neutron/+spec/cisco-routing-service-vm [2]https://blueprints.launchpad.net/neutron/+spec/cisco-config-agent [3]https://blueprints.launchpad.net/neutron/+spec/service-base-class-and-insertion