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 设备驱动程序将执行以下功能
处理来自 vpn service-plugin 的 RPC 消息,指示站点到站点 vpn 连接的 CRUD 操作
使用 RPC 调用从 service-plugin 获取 VPN 服务列表
根据本地 service-cache 条目准备新的、删除的和更新的 vpn 连接列表
使用 vRouter 的 REST API 接口将上述列表处理为生效
更新本地 service-cache 以反映新的更改
将 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 配置中提供此功能的可用性更新,以启用它。
开发人员文档¶
无。