Brocade Vyatta VPN 服务和 Neutron 设备驱动程序

https://blueprints.launchpad.net/neutron/+spec/brocade-vyatta-vpnaas-plugin

引入 Brocade Vyatta VPN 服务和设备驱动程序,使用作为 Neutron 路由器的 Vyatta vRouter VM 提供 VPNaaS 解决方案。

问题描述

Brocade Vyatta vRouter 是一种多服务产品,提供各种 L3 和 L4 服务,如路由、NAT、防火墙、VPN 等。虽然使用 Brocade Vyatta L3 插件 [1] 可以获得基本的 neutron 路由器 L3 功能,但当前的 Neutron VPN API 无法配置 vRouter 的 IPSec 站点到站点 VPN 功能。

如果可用,云服务提供商将能够创建站点到站点 IPSec VPN,使用 Vyatta vRouter 将租户网络连接到远程数据中心网络。

提议的变更

此蓝图提出为 Neutron VPN 插件和代理添加新的供应商服务和设备驱动程序。

+----------------------+                  +----------------------+
|                      |                  |   Neutron L3 Agent   |
|                      |                  |                      |
|                      |                  |                      |
| +------------------+ |                  | +------------------+ |
| |       VPN        | |                  | |    VPN Agent     | |
| |  Service Plugin  | |                  | +------------------+ |
| +------------------+ |                  | |   Vyatta VPN     | |
| |   Vyatta VPN     | |        RPC       | |  Device Driver   | |
| | Service Driver   | + <--------------> | |                  | |
+-+------------------+-+                  +-+--------+---------+-+
                                                     |
                                                     |
                                                     | REST API
                                                     |
                                            +--------v---------+
                                            |                  |
                                            |                  |
                                            |  Vyatta vRouter  |
                                            |                  |
                                            |                  |
                                            |                  |
                                            |                  |
                                            +------------------+

Vyatta VPN 服务驱动程序将继承自参考 ipsec 服务驱动程序,但它将使用唯一的 topic 进行与 Vyatta VPN 设备驱动程序之间的 RPC。这是为了与现有的服务类型框架保持一致,该框架已经部分到位,并且预计如果 neutron flavor 框架 [4] 实现,此蓝图提出的功能将原样工作。

Vyatta VPN 设备驱动程序将执行以下功能

  1. 处理来自 vpn service-plugin 的 RPC 消息,指示站点到站点 vpn 连接的 CRUD 操作

  2. 使用 RPC 调用从 service-plugin 获取 VPN 服务列表

  3. 根据本地 service-cache 条目准备新的、删除的和更新的 vpn 连接列表

  4. 使用 vRouter 的 REST API 接口将上述列表处理为生效

  5. 更新本地 service-cache 以反映新的更改

  6. 将 vpn 连接的状态报告回 vpn service-plugin

所有这些功能都类似于现有的参考 vpn 设备驱动程序实现。

此外,在 L3 Agent 启动期间,设备驱动程序将使用其 REST API 读取 vRouter VPN 配置,以重建本地 service-cache。重建完成后,将重复步骤 2 到 6。这有助于使 vRouter VPN 配置与插件 DB 中的更改(如果有)同步,而 L3 agent 处于关闭状态时。

请注意,我们意识到 Kilo [3] 中提出的当前的 L3 agent 重构。鉴于计划保持设备驱动程序接口不变,此蓝图提出的更改将以最小的影响集成到重构中。

这项工作是更广泛的一系列蓝图的一部分,旨在提供使用 Vyatta vRouter VM 的 Neutron L3 和 L4 服务

  • [1] 引入使用 Vyatta vRouter 的 neutron 路由器功能

  • [2] 引入使用 Vyatta vRouter 的防火墙服务。

数据模型影响

无。

REST API 影响

无。

安全影响

设备驱动程序将使用通用的 RESTapi 客户端库,该库使用 basic-auth 身份验证连接到 Vyatta vRouter。

通知影响

无。

其他最终用户影响

当租户使用 Neutron API 创建 VPN 时,它将在载波级的 Vyatta vRouter 上创建。

性能影响

无。

IPv6 影响

预计可以与 IPv6 协同工作

其他部署者影响

操作员应首先按照 [1] 中所述配置 Brocade Vyatta L3 插件。然后,他们可以配置新的 vpn 服务和设备驱动程序,以使用 Neutron API 提供 Vyatta VPN,如下所示

  • 编辑 /etc/neutron/neutron.conf 并指定 Vyatta VPN 服务驱动程序作为 VPN 的默认服务提供程序。

>> [service_providers]
>> service_provider=VPN:brocade:neutron.services.vpn.service_drivers.vyatta_ipsec.BrocadeVyattaIPsecVPNDriver:default
  • 编辑 /etc/neutron/vpn_agent.ini 并指定 Vyatta VPN 设备驱动程序。

>> [vpnagent]
>> vpn_device_driver=neutron.services.vpn.device_drivers.vyatta_ipsec.VyattaIPSecDriver

开发人员影响

无。

社区影响

使用多个供应商(包括 Brocade 的这个)验证 Neutron VPN API 将有助于将这些 API 移出当前的实验状态。

备选方案

无。

实现

负责人

主要负责人

srics-r

其他贡献者

工作项

  • 为 VPN 服务插件添加新的 vyatta 服务驱动程序(当前计划为 neutron/services/vpn/service_drivers/vyatta_ipsec.py)

  • 为 VPN 代理添加新的 vyatta 设备驱动程序(当前计划为 neutron/services/vpn/device_drivers/vyatta_ipsec.py)

  • 添加测试新代码所需的单元测试

  • 为新的场景添加 tempest 测试

依赖项

  • Brocade Vyatta L3 插件 [1]

测试

Tempest 测试

  • 将提供第三方测试(Brocade Vyatta CI)

  • Brocade Vyatta CI 将报告影响此插件的所有更改

  • 使用 devstack 和 Vyatta vRouter 进行测试

功能测试

API 测试

由于此蓝图未更改任何 API,因此不计划新的 API 测试。

文档影响

无。

用户文档

Brocade 特定文档将在 Neutron 和 vpn_device_driver 配置中提供此功能的可用性更新,以启用它。

开发人员文档

无。

参考资料