跳转到: 导航, 搜索

Neutron/L3ServiceTypeFrameworkIntegration

简介

在Havana版本中,L3路由器服务从核心插件中移除,成为一个独立的插件服务。本蓝图旨在将此工作进一步推进,将L3服务与服务类型框架集成。此功能使操作员能够向客户提供来自多个厂商的路由服务。

蓝图

L3路由器与服务类型框架集成

概述

LBaaS是第一个支持服务类型框架的高级服务。FWaaS和VPNaaS集成正在讨论中。为了支持多个厂商,所有高级服务都采用“一个服务插件/多个驱动”模型。租户用户在创建资源时指定提供商。服务插件根据提供商设置将调用分派给厂商实现的驱动程序。LBaaS服务插件引入了插件端驱动程序的概念。插件端驱动程序与控制节点上的服务插件共存,并可以直接访问数据库。

在本蓝图中,我们计划采取的方法与LBaaS与服务框架集成的方案一致。L3路由器插件将成为一个插件端驱动程序。参考设计l3-agent位于agent端,几乎保持不变。

设计考量

今天大多数厂商的L3服务都是作为其自身核心插件的一部分开发的。除了监控路由器配置更改外,这些实现还会执行诸如管理数据库、创建/删除端口以及与后端服务通信等活动。所有这些功能都应允许在服务框架集成中实现。服务插件本身应该是一个非常薄的层,仅用于分派调用并维护必要的状态以确保数据一致性。

本蓝图的目的是支持在一个服务插件下使用多个厂商。如何暴露厂商特定的功能是一个重要的考量。这些功能通常通过扩展来支持。由于服务插件隐藏了厂商实现,这似乎意味着当厂商开始添加其驱动程序和功能时,服务插件将不得不实现所有扩展接口。这个问题也可能发生在其他高级服务中。

依赖项

没有新的依赖关系,也没有CLI或数据库模式更改。

配置

service_plugins = neutron.services.l3_router.l3_router_plugin.L3RouterPlugin

[service_providers]
service_provider=L3_ROUTER_NAT:linux:neutron.services.l3_router.drivers.linux.l3_router_driver.L3RouterDriver:default
service_provider=L3_ROUTER_NAT:vendor1:neutron.services.l3_router.drivers.vendor1.vendor1_l3_driver.L3Driver