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)
工作项¶
安装 OpenDaylight SDN 控制器
配置 Neutron 以使用 OpenDaylight
部署并配置 OpenvSwitch 以与 OpenDaylight 协同工作
将 OpenDaylight 设置为 OpenvSwitch 管理器
创建一个新的测试并验证它是否通过
记录新的场景
测试¶
作为 Neutron 后端的替代方案,这个新场景应该提供与现有后端相同的功能,因此应该运行现有的测试。
也可以实现一个专门针对 OpenDaylight 的测试,就像目前 Calico 或 DragonFlow 的测试一样。
文档影响¶
新的场景 *OpenDaylight+OpenvSwitch* 应该被记录下来,解释部署它所需的配置参数。
参考资料¶
使用 Ansible 部署 OpenDaylight
OpenDaylight 的 Ansible 角色
在 OpenStack 上设置 OpenDaylight
Networking-odl 机制驱动程序
Networking-odl 安装和配置
Openstack-Ansible 中的 OpenvSwitch 场景
OpenDaylight OpenFlow 插件上的 TLS 支持
OpenFlow 交换机和控制器之间的安全通信