Во-первых, позвольте мне уточнить, что Neutron - это всего лишь уровень API, и ему всегда требуется служба бэкэнда (настроенная как подключаемый модуль Neutron) для реализации реальной сети для облака OpenStack. Во многих случаях подключаемый модуль Open vSwitch (OVS) настраивается «из коробки», и люди смешивают Neutron и фактическую реализацию Neutron на основе OVS.
Чтобы ответить на ваш вопрос: OpenStack и Neutron - все о выборе. Если решение OVS для Neutron достаточно хорошо для вас, то отлично - вам не нужны ни SDN, ни OpenDaylight в миксе. Но некоторые считают это решение недостаточно хорошим для них, как правило, из-за отсутствия таких функций, как управление виртуальной и физической сетью из одного места, мостовое соединение между оверлейными сетями Neutron (обычно VNI VXLAN) и существующими сетями в центре обработки данных (VLAN, IP / MPLS и т. Д.), Связывание проектов OpenStack с другой (не OpenStack) инфраструктурой (например, VMware, публичное облако) и т. Д. Именно здесь решение OVS заменяется другим «SDN».
Вокруг времен Icehouse была введена концепция модульного уровня 2 (ML2). Многие SDN-решения подключаются к Neutron через этот интерфейс ML2 и драйвер механизма.
Следует отметить, что ML2 сфокусирован на нейтронных ресурсах L2. Для реализации ресурсов L3 (таких как маршрутизация, NAT) необходим сервисный плагин L3. Аналогично, существуют отдельные интерфейсы драйверов для ресурсов L4-L7, таких как LBaaS, VPNaaS, FWaaS, BGP / VPN и так далее. Таким образом, в зависимости от решения SDN и его возможностей вы можете увидеть комбинацию драйвера механизма, служебного модуля L3 и драйверов L4-L7. В качестве примера, плагин OpenDaylight для Neutron (также называемый network-odl) включает в себя драйвер механизма ML2, а также несколько других драйверов для сервисов L3-L7, см. https://github.com/openstack/networking-odl.