跳转到: 导航, 搜索

Neutron/Spec-NVPPlugin-L3-API

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 特定的单元测试,以验证插件中的代码。