为什么有人会在 OpenStack 云中添加 OpenDaylight 控制器?

Why would someone add an OpenDaylight controller in an OpenStack cloud?

我看到很多人说 OpenDaylight 是 OpenStack 最好的 SDN 控制器。虽然我了解软件定义网络的好处,但我看不出 ODL 在 OpenStack 云中比 Neutron 有何优势。

在这两种情况下,Open vSwitch 都是自动配置的(通过 Neutron 或 ODL),最终用户只需使用常规的 OpenStack 在线界面或命令行来创建他的网络和 VM。

那么,为什么人们要在像 OpenStack 这样的云中添加 SDN 控制器,尤其是 OpenDaylight?

提前致谢。

首先,让我澄清一下,Neutron 只是一个 API 层,并且始终需要一个后端(配置为 Neutron 插件)服务,以便为 OpenStack 云实现实际的网络。在许多情况下,Open vSwitch (OVS) 插件是开箱即用的配置,人们混合使用 Neutron 和基于 OVS 的实际 Neutron 实现。

回答你的问题:OpenStack 和 Neutron 都是关于选择的。如果 Neutron 的 OVS 解决方案对您来说足够好,那就太好了——您不需要 "SDN" 或 OpenDaylight。但有些人发现这个解决方案对他们来说不够好,通常是因为缺少一些功能,比如从一个地方同时控制虚拟和物理网络,桥接 Neutron 覆盖网络(通常是 VXLAN VNI)和数据中心的现有网络(VLAN,IP/MPLS,等等),将 OpenStack 项目与其他(非 OpenStack)基础架构(例如 VMware、public 云)连接起来,等等。这是 OVS 解决方案被另一个 "SDN" 替代的地方。

在 Icehouse 时间框架内,引入了模块化第 2 层 (ML2) 的概念。许多 SDN 解决方案通过此 ML2 接口和机制驱动程序插入到 Neutron 中。

需要注意的是,ML2 专注于 L2 Neutron 资源。为了实现 L3 资源(如路由、NAT),需要 L3 服务插件。同样,LBaaS、VPNaaS、FWaaS、BGP/VPN等L4-L7资源也有单独的驱动接口。因此,根据 SDN 解决方案及其功能,您可能会看到机制驱动程序、L3 服务插件和 L4-L7 驱动程序的组合。例如,用于 Neutron 的 OpenDaylight 插件(aka networking-odl)包括一个 ML2 机制驱动程序,但也包括一组用于 L3-L7 服务的其他驱动程序,请参阅 https://github.com/openstack/networking-odl