Neutron/Spec-NVPPlugin-L3-API
< Neutron
NVP 插件的 L3 API 支持
范围
此蓝图的目标是在 Nicira NVP 插件中实现对 L3 API 扩展的支持。
用例
此蓝图的使用场景与Folsom版本以来为Open vSwitch和Linux Bridge等插件实现的L3 API支持的使用场景完全相同。没有特定于NVP插件的使用场景。
实施此蓝图尤为重要,因为 L3 API 将成为 Grizzly 版本中核心 Quantum API 的一部分。
实现概述
该实现将使用与其他插件相同的方法进行,即:核心插件将被增强,将 quantum.db.l3_db.l3_Nat_Db_Mixin 添加到 NVP 插件的祖先类列表中。
即使允许 L2 和 L3 插件之间进行拆分,根据 https://blueprints.launchpad.net/quantum/+spec/quantum-l3-routing-plugin,我们认为应该并且仍然可以使同一个插件提供两个 API 子集的函数。出于这些原因,我们保持“mixin”方法,因为它似乎更适合此目的。
Nicira 插件将执行 quantum 路由器、浮动 IP 与 NVP API 之间的映射。这将导致创建以下对象
- 对于每个 Quantum 路由器,创建一个 NVP 逻辑路由器,并配置一个带有特殊“Layer3 Gateway”附件的单个逻辑路由器端口。
- 对于连接到路由器的每个接口,创建一个 NVP 逻辑路由器端口,连接到逻辑交换机上的相应端口(此端口在 Quantum 中任何地方都不可见)
- 外部网关端口 IP 以及外部网络子网的默认网关也将配置在 NVP 逻辑路由器上
- 对于每个 Quantum 浮动 IP,在 NVP 逻辑路由器上配置一对 SNAT/DNAT 规则
数据模型变更
无变更
配置变量
将向 /etc/plugins/nicira/nvp.ini 添加一个配置变量
用于此集群的默认 Layer 3 网关服务的 UUID。这是一个可选值,但如果计划使用具有外部网关的逻辑路由器,则应填写此值
default_l3_gw_service_uuid = <nvp_gateway_service_uuid>
这是一个集群级别变量,应插入到 [CLUSTER:<cluster_name>] 部分中。
API
无变更
测试用例
将向 test_nicira_plugin 模块添加 NVP 特定的单元测试,以验证插件中的代码。