OpenDaylight SDN 控制器与 Neutron 集成

日期:

2017-06-08 11:00

标签:

opendaylight, neutron, SDN, openvswitch

Launchpad 蓝图

本规范介绍将 OpenDaylight (ODL) SDN 控制器作为 Neutron 后端部署所需的工作,使用 networking-odl ML2 机制驱动程序连接到 Neutron。

本规范还涵盖将 OpenvSwitch (OvS) 连接到 OpenDaylight。

问题描述

OpenStack 网络 (Neutron) 使用模块化方法,允许使用不同的后端,通过机制驱动程序实现。虽然 Neutron 可以处理简单的部署,但更高级的网络功能最好通过高级 SDN 控制器(如 OpenDaylight)来解决。

提议的变更

拟议的更改包括使用现有的 OpenDaylight Ansible 角色,并选择性地将其与 Neutron 一起部署。OpenDaylight 和 Neutron 的连接是通过使用 networking-odl ML2 机制驱动程序完成的,并配置 Neutron 以使用它。

安装 OpenDaylight 和 networking-odl 后,需要在 ml2.ini 文件中进行一些配置,以指示 Neutron 使用该机制驱动程序,以及设置 OpenDaylight 的端点和凭据。

最后一步是将流量转发元素与 OpenDaylight 控制器连接起来。本规范将使用 OpenvSwitch 来完成此任务。此外,需要停止并禁用 neutron-openvswitch-agent,因为 OpenDaylight 负责数据平面管理。

备选方案

已经有其他 Neutron 网络后端可与 Openstack-Ansible 一起使用,即 Calico (https://www.projectcalico.org/tag/openstack/) 和 DragonFlow (https://wiki.openstack.org/wiki/Dragonflow)。这些后端会根据传递给 os_neutron Ansible 角色的 ML2 配置而选择性部署。

Playbook/Role 影响

os_neutron 角色将被修改为选择性部署 OpenDaylight。建议采用与 DragonFlow 相同的方法:当 neutron_plugin_type 变量设置为 ml2.opendaylight 时,OpenDaylight 将被用作 Neutron 后端。将有一个新的任务文件,neutron_opendaylight_setup.yml,当满足上述条件时,它将被包含在 os_neutron 的 playbook 中。

OpenvSwitch 场景将被利用来与 OpenDaylight 协同工作,OvS 将是第一个版本中唯一支持的交换机。

升级影响

这是 OpenDaylight 与 Openstack-Ansible 的首次实现,因此目前没有升级问题。

安全影响

Networking-odl 配置需要为 OpenDaylight 的北向认证设置用户名和密码。部署者应该能够配置这些凭据。

默认情况下,控制器和交换机之间的通信将不安全。使用 TLS 来保护通信被认为是一个扩展目标,部署者需要在生产环境中考虑这种安全隐患。有关 OpenDaylight 和 OpenvSwitch 之间安全通信的更多信息,请参阅 参考文献

性能影响

对于选择采用这种部署方法的人员,需要在系统上安装一些额外的软件包,这将使安装过程稍长一些。

还需要额外的资源来在系统上运行 OpenDaylight SDN 控制器。但是,Neutron API 调用的性能应该至少保持不变。

最终用户影响

最终用户将通过 OpenDaylight 获得新的网络 API。这将使他们能够创建高级网络场景(例如服务功能链)。这将需要一些文档,其中包含故障排除步骤,以验证 OpenDaylight 是否正常工作,以及指向 OpenDaylight 官方文档的指针。

预计不会对 Horizon 或其他 OpenStack 组件进行更改。

部署者影响

正在部署新的工件,即 OpenDaylight 的 Karaf 运行时和 networking-odl pip 包。OpenDaylight 需要大约 2.5G 的 RAM 才能正常工作,在使用 OpenStack 时,需要在部署 OpenDaylight 的主机上考虑这一点。

部署者还需要确保在所有网络节点(即计算主机和运行 neutron agent 的主机)上部署 OpenvSwitch。

开发人员影响

开发人员的影响非常小,OpenDaylight 部署的所有任务都是可选的,在扩展或修改 Neutron 角色时可以忽略。

依赖项

没有依赖关系

实现

负责人

主要负责人

Juan Vidal (jvidal)

其他贡献者

Fatih Degirmenci (fdegir) Daniel Farrell (dfarrell07)

工作项

  1. 安装 OpenDaylight SDN 控制器

  2. 配置 Neutron 以使用 OpenDaylight

  3. 部署并配置 OpenvSwitch 以与 OpenDaylight 协同工作

  4. 将 OpenDaylight 设置为 OpenvSwitch 管理器

  5. 创建一个新的测试并验证它是否通过

  6. 记录新的场景

测试

作为 Neutron 后端的替代方案,这个新场景应该提供与现有后端相同的功能,因此应该运行现有的测试。

也可以实现一个专门针对 OpenDaylight 的测试,就像目前 Calico 或 DragonFlow 的测试一样。

文档影响

新的场景 *OpenDaylight+OpenvSwitch* 应该被记录下来,解释部署它所需的配置参数。

参考资料

使用 Ansible 部署 OpenDaylight

OpenDaylight 的 Ansible 角色

在 OpenStack 上设置 OpenDaylight

Networking-odl 机制驱动程序

Networking-odl 安装和配置

Openstack-Ansible 中的 OpenvSwitch 场景

OpenDaylight OpenFlow 插件上的 TLS 支持

OpenFlow 交换机和控制器之间的安全通信