Freescale SDN 机制驱动程序,用于 Neutron ML2 插件

https://blueprints.launchpad.net/neutron/+spec/fsl-sdn-os-mech-driver

FSL-SDN MD:Freescale SDN 机制驱动程序

CRD云资源发现服务 - 类似于 neutron,

使用 keystone 身份验证进行所有 ReSTful 调用。

Freescale SDN (FSL-SDN) 机制驱动程序代理来自 Neutron 的 ML2 插件到 CRD 服务的 ReSTful 调用(格式化为 CRD 服务)。

它通过将网络、子网和端口的创建/更新/删除数据更新到 CRD 数据库来支持云资源发现 (CRD) 服务。

CRD 服务管理网络节点、虚拟网络设备和 openflow 控制器网络应用程序。

基本工作流程如下所示。

+---------------------------------+
|                                 |
|       Neutron Server            |
|      (with ML2 plugin)          |
|                                 |
| +-------------------------------+
| |        Freescale SDN          |
| |       Mechanism Driver        |
+-+--------+----------------------+
           |
           |  ReST API
           |
+----------+-------------+
|      CRD server        |
+------------------------+

问题描述

CRD 服务需要基于 Openstack neutron 的网络和端口信息来管理虚拟网络设备和 openflow 控制器应用程序。

为了将此信息从 neutron 服务发送出去,需要一个新的 ML2 机制驱动程序来将 _postcommit 数据发布到 CRD 服务。

提议的变更

Freescale 机制驱动程序处理以下 postcommit 操作。

网络创建/更新/删除 子网创建/更新/删除 端口创建/删除

FSL OF 控制器支持的网络类型包括 vlan 和 vxlan。

Freescale SDN 机制驱动程序在机制驱动程序内部处理 VM 端口绑定(如 ODL MD)。

‘bind_port’ 函数验证支持的网络类型(vlan,vxlan)并使用绑定详细信息调用 context.set_binding。

Freescale Openflow 控制器管理 OVS 上所需的流。

create_network 事件的序列流程如下

create_network
{
  neutron    ->  ML2_plugin
  ML2_plugin ->  FSL-SDN-MD
  FSL-SDN-MD ->  crd_service
  FSL-SDN-MD <-- crd_service
  ML2_plugin <-- FSL-SDN-MD
  neutron    <-- ML2_plugin
 }

端口绑定任务在机制驱动程序内部处理,因此在启用此机制驱动程序时不需要 OVS 代理驱动程序。

备选方案

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

可忽略/无

虽然数据从机制驱动程序发送到 CRD 服务,但性能影响可以忽略不计(小于 1%)或没有影响。

其他部署者影响

此更改不会立即生效。

要与此更改一起工作,需要将 neutron 配置为 ml2,并将 fslsdn 配置为机制驱动程序,同时运行 CRD 服务。

要启用 Freescale SDN 机制驱动程序,需要进行以下配置更改。

在 /etc/neutron/plugins/ml2/ml2_conf.ini 的 [ml2] 部分,修改 ‘mechanism_drivers’ 属性为:

mechanism_drivers = fslsdn

更新 /etc/neutron/plugins/ml2/ml2_conf_fslsdn.ini,如下所示。

[ml2_fslsdn]
crd_auth_strategy = keystone
crd_url = http://127.0.0.1:9797
crd_auth_url = http://127.0.0.1:5000/v2.0/
crd_tenant_name = service
crd_password = <-service-password->
crd_user_name = <-service-username->

CRD 服务必须在 Controller 上运行。

开发人员影响

无。

实现

负责人

主要负责人

trinath-somanchi

其他贡献者

工作项

  • 机制驱动程序 (mechanism_fslsdn.py)

依赖项

测试

  • 包含代码的完整单元测试覆盖率。

  • 对于 tempest 测试覆盖率,提供第三方测试(Freesacle CI)。

  • Freescale CI 报告所有影响此驱动程序的更改。

  • 使用 devstack 和 CRD 服务进行测试。

  • CRD 服务日志也发布到 CI 日志存储库。

文档影响

配置参考指南将从代码中更新。

参考资料