ML2 插件¶
架构¶
模块化第二层 (ML2) neutron 插件是一个框架,允许 OpenStack Networking 同时使用复杂现实世界数据中心中发现的各种第二层网络技术。ML2 框架区分可以配置的两种类型的驱动程序
类型驱动程序
定义 OpenStack 网络的技术实现方式。例如:VXLAN
每个可用的网络类型都由一个 ML2 类型驱动程序管理。类型驱动程序维护任何需要的特定类型网络状态。它们验证提供程序网络的类型特定信息,并负责在项目网络中分配空闲段。
机制驱动程序
定义访问特定类型的 OpenStack 网络的机制。例如:Open vSwitch 机制驱动程序。
机制驱动程序负责获取类型驱动程序建立的信息,并确保根据启用的特定网络机制正确应用它。
机制驱动程序可以利用 L2 代理(通过 RPC)和/或直接与外部设备或控制器交互。
可以同时使用多个机制和类型驱动程序来访问同一虚拟网络的不同端口。
待办事项
显示关系的图
ML2 驱动程序支持矩阵¶
类型驱动程序 / 机制驱动程序 |
扁平 |
VLAN |
VXLAN |
GRE |
Geneve |
|---|---|---|---|---|---|
Open vSwitch |
是 |
是 |
是 |
是 |
是 |
OVN |
是 |
是 |
是(需要 OVN 20.09+) |
否 |
是 |
SRIOV |
是 |
是 |
否 |
否 |
否 |
MacVTap |
是 |
是 |
否 |
否 |
否 |
L2 填充 |
否 |
否 |
是 |
是 |
是 |
注意
L2 填充是一种特殊的机制驱动程序,可优化覆盖网络 VXLAN、GRE 和 Geneve 中的 BUM(广播、未知目标地址、多播)流量。它需要与 Open vSwitch 机制驱动程序结合使用,不能作为独立机制驱动程序使用。有关更多信息,请参阅下面的“机制驱动程序”部分。
配置¶
网络类型驱动程序¶
要在 ML2 插件中启用类型驱动程序,请编辑 /etc/neutron/plugins/ml2/ml2_conf.ini 文件
[ml2]
type_drivers = flat,vlan,vxlan,gre
注意
有关更多详细信息,请参阅 Bug 1567792。
有关更多详细信息,请参阅《配置参考》的 网络配置选项。
以下类型驱动程序可用
扁平
VLAN
GRE
VXLAN
提供程序网络类型¶
提供程序网络提供与项目网络类似的连接性。但只有管理(特权)用户可以管理这些网络,因为它们与物理网络基础设施接口。有关提供程序网络的更多信息,请参阅 OpenStack Networking。
项目网络类型¶
项目网络为特定项目中的实例提供连接性。常规(非特权)用户可以在管理员或操作员为他们定义的分配范围内管理项目网络。有关项目和提供程序网络的更多信息,请参阅 OpenStack Networking。
项目网络配置是在 neutron 服务器上的 /etc/neutron/plugins/ml2/ml2_conf.ini 配置文件中进行的
VLAN
GRE
VXLAN
注意
不支持用于项目分配的扁平网络。它们只能作为提供程序网络存在。
机制驱动程序¶
要在 ML2 插件中启用机制驱动程序,请编辑 neutron 服务器上的 /etc/neutron/plugins/ml2/ml2_conf.ini 文件
[ml2]
mechanism_drivers = ovs,l2pop
注意
有关更多详细信息,请参阅 Bug 1567792。
Open vSwitch
机制驱动程序不需要额外的配置。需要额外的代理配置。有关详细信息,请参阅下面的“L2 代理”部分。
OVN
管理员必须为机制驱动程序配置一些额外的配置选项。当使用此驱动程序时,集群中 Neutron 应用程序的架构与使用其他驱动程序(例如 Open vSwitch)时的架构不同。有关详细信息,请参阅 OVN 参考架构。
SRIOV
SRIOV 驱动程序接受所有 PCI 供应商设备。
MacVTap
机制驱动程序不需要额外的配置。需要额外的代理配置。请参阅相关部分。
L2 填充
专用
开源
除了 neutron 集成的参考实现之外,还存在外部开源机制驱动程序。这些驱动程序的配置不在本文档范围内。例如
OpenDaylight
OpenContrail
专有(供应商)
除了 neutron 集成的参考实现之外,还存在来自各种供应商的外部机制驱动程序。
这些驱动程序的配置不在本文档范围内。
支持的 VNIC 类型¶
使用 vnic_type_prohibit_list 选项从机制驱动程序的 supported_vnic_types 列表中删除值。
mech 驱动程序 / supported_vnic_types |
支持的 VNIC 类型 |
禁止可用 |
|---|---|---|
OVN |
normal, direct, direct_macvtap, direct_physical |
否 |
MacVTap |
macvtap |
否 |
Open vSwitch |
normal, direct |
是(ovs_driver vnic_type_prohibit_list,请参阅:配置参考) |
SRIOV |
direct, macvtap, direct_physical |
是(sriov_driver vnic_type_prohibit_list,请参阅:配置参考) |
扩展驱动程序¶
ML2 插件还支持扩展驱动程序,允许其他可插拔驱动程序扩展 ML2 插件中实现的核心资源(networks、ports 等)。扩展驱动程序的示例包括对 QoS、端口安全性的支持等。有关更多详细信息,请参阅《配置参考》中的 配置文件中的 extension_drivers 配置选项。
代理¶
L2 代理¶
L2 代理为 OpenStack 资源提供第二层(以太网)网络连接。它通常在每个网络节点和每个计算节点上运行。
Open vSwitch 代理
Open vSwitch 代理配置 Open vSwitch 以实现 OpenStack 资源的 L2 网络。
Open vSwitch 代理的配置通常在
openvswitch_agent.ini配置文件中完成。确保在代理启动时将此配置文件作为参数传递。SRIOV Nic Switch 代理
sriov nic switch 代理配置 PCI 虚拟功能以实现 OpenStack 实例的 L2 网络。不支持其他资源(如路由器、DHCP 等)的网络连接。
SRIOV nic switch 代理的配置通常在
sriov_agent.ini配置文件中完成。确保在代理启动时将此配置文件作为参数传递。MacVTap 代理
MacVTap 代理使用内核 MacVTap 设备来实现 OpenStack 实例的 L2 网络。不支持其他资源(如路由器、DHCP 等)的网络连接。
MacVTap 代理的配置通常在
macvtap_agent.ini配置文件中完成。确保在代理启动时将此配置文件作为参数传递。
L3 agent¶
L3 代理提供高级第三层服务,如虚拟路由器和浮动 IP。它需要并行运行的 L2 代理。
L3 代理的配置通常在 l3_agent.ini 配置文件中完成。确保在代理启动时将此配置文件作为参数传递。
DHCP 代理¶
DHCP 代理负责 DHCP(动态主机配置协议)和 RADVD(路由器通告守护程序)服务。它需要在同一节点上运行 L2 代理。
DHCP 代理的配置通常在 dhcp_agent.ini 配置文件中完成。确保在代理启动时将此配置文件作为参数传递。
Metadata agent¶
元数据代理允许实例通过网络访问 cloud-init 元数据和用户数据。它需要在同一节点上运行 L2 代理。
元数据代理的配置通常在 metadata_agent.ini 配置文件中完成。确保在代理启动时将此配置文件作为参数传递。
L3 计量代理¶
L3 计量代理启用第三层流量计量。它需要在同一节点上运行 L3 代理。
L3 计量代理的配置通常在 metering_agent.ini 配置文件中完成。确保在代理启动时将此配置文件作为参数传递。
安全¶
L2 代理支持一些重要的安全配置。
参考实现¶
概述¶
在本节中,机制驱动程序和 L2 代理的组合称为“参考实现”。下表列出了这些实现
机制驱动程序 |
L2 代理 |
|---|---|
Open vSwitch |
Open vSwitch 代理 |
OVN |
否(节点上运行 ovn-controller) |
SRIOV |
SRIOV nic switch 代理 |
MacVTap |
MacVTap 代理 |
L2 填充 |
Open vSwitch 代理 |
下表显示哪些参考实现支持哪些非 L2 neutron 代理
参考实现 |
L3 agent |
DHCP 代理 |
Metadata agent |
L3 计量代理 |
|---|---|---|---|---|
Open vSwitch & Open vSwitch 代理 |
是 |
是 |
是 |
是 |
OVN |
否(自有 L3 实现) |
否(DHCP 由 OVN 提供,完全分布式) |
是(在计算节点上运行,完全分布式) |
否 |
SRIOV 和 SRIOV 网卡交换代理 |
否 |
否 |
否 |
否 |
MacVTap 和 MacVTap 代理 |
否 |
否 |
否 |
否 |
购买指南¶
本指南描述了当前存在的 L2 参考实现。
Open vSwitch 机制和 Open vSwitch 代理
可用于实例网络连接,也可用于连接其他网络资源,如路由器、DHCP 等。
OVN 机制驱动程序
可用于实例网络连接,也可用于连接其他网络资源,如路由器、元数据端口等。
SRIOV 机制驱动程序和 SRIOV 网卡交换代理
只能用于实例网络连接 (device_owner = compute)。
与另一个机制驱动程序和 L2 代理(如 OVS)一起部署。它允许实例通过 PCI 虚拟功能 (VF) 直接访问网络适配器。这使实例可以直接访问硬件功能和高性能网络。
云用户可以通过 neutron API 的 VNIC_TYPE 属性决定实例是获得正常的 OVS 端口还是 SRIOV 端口。
由于直接连接,在使用 SRIOV 时某些功能不可用。例如,DVR、安全组、迁移。
有关更多信息,请参阅 SR-IOV。
MacVTap 机制驱动程序和 MacVTap 代理
只能用于实例网络连接 (device_owner = compute),不能用于连接其他资源,如路由器、DHCP 等。
它被定位为在计算节点上对 Open vSwitch 的替代方案,用于内部部署。
MacVTap 提供实例与适配器之间具有非常小开销的直接连接。当您需要性能至关重要的网络连接时,可以在计算节点上使用 MacVTap 代理。它不需要特定的硬件(如 SRIOV)。
由于直接连接,在计算节点上使用它时某些功能不可用。例如,DVR、安全组和 ARP 欺骗保护。