ML2 插件

架构

模块化第二层 (ML2) neutron 插件是一个框架,允许 OpenStack Networking 同时使用复杂现实世界数据中心中发现的各种第二层网络技术。ML2 框架区分可以配置的两种类型的驱动程序

  • 类型驱动程序

    定义 OpenStack 网络的技术实现方式。例如:VXLAN

    每个可用的网络类型都由一个 ML2 类型驱动程序管理。类型驱动程序维护任何需要的特定类型网络状态。它们验证提供程序网络的类型特定信息,并负责在项目网络中分配空闲段。

  • 机制驱动程序

    定义访问特定类型的 OpenStack 网络的机制。例如:Open vSwitch 机制驱动程序。

    机制驱动程序负责获取类型驱动程序建立的信息,并确保根据启用的特定网络机制正确应用它。

    机制驱动程序可以利用 L2 代理(通过 RPC)和/或直接与外部设备或控制器交互。

可以同时使用多个机制和类型驱动程序来访问同一虚拟网络的不同端口。

待办事项

显示关系的图

ML2 驱动程序支持矩阵

机制驱动程序和 L2 代理

类型驱动程序 / 机制驱动程序

扁平

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

  • 扁平

    管理员需要配置一个物理网络名称列表,这些名称可以用于提供程序网络。有关更多详细信息,请参阅《配置参考》中的相关部分

  • VLAN

    管理员需要配置一个物理网络名称列表,这些名称可以用于提供程序网络。有关更多详细信息,请参阅《配置参考》中的相关部分

  • GRE

    无需额外配置。

  • VXLAN

    管理员可以配置应使用的 VXLAN 多播组。

    注意

    VXLAN 多播组配置不适用于 Open vSwitch 代理。

项目网络类型

项目网络为特定项目中的实例提供连接性。常规(非特权)用户可以在管理员或操作员为他们定义的分配范围内管理项目网络。有关项目和提供程序网络的更多信息,请参阅 OpenStack Networking

项目网络配置是在 neutron 服务器上的 /etc/neutron/plugins/ml2/ml2_conf.ini 配置文件中进行的

  • VLAN

    管理员需要配置可用于项目网络分配的 VLAN ID 范围。有关更多详细信息,请参阅《配置参考》中的相关部分

  • GRE

    管理员需要配置可用于项目网络分配的隧道 ID 范围。有关更多详细信息,请参阅《配置参考》中的相关部分

  • VXLAN

    管理员需要配置可用于项目网络分配的 VXLAN ID 范围。有关更多详细信息,请参阅《配置参考》中的相关部分

注意

不支持用于项目分配的扁平网络。它们只能作为提供程序网络存在。

机制驱动程序

要在 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 列表中删除值。

机制驱动程序和支持的 VNIC 类型

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 插件中实现的核心资源(networksports 等)。扩展驱动程序的示例包括对 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 代理支持一些重要的安全配置。

  • 安全组

    有关更多详细信息,请参阅《配置参考》中的相关部分

  • ARP 欺骗预防

    配置在L2 代理配置中。

参考实现

概述

在本节中,机制驱动程序和 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 填充未在此处列出,因为它不是一个独立的机制。是否支持其他代理取决于用于绑定端口的联合机制驱动程序。

有关 L2 填充的更多信息,请参阅 OpenStack 手册

购买指南

本指南描述了当前存在的 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 欺骗保护。