跳转到: 导航, 搜索

Neutron/ML2

Neutron ML2

模块化第二层 (ml2) 插件是一个框架,允许 OpenStack Networking 同时利用复杂现实世界数据中心中发现的各种第二层网络技术。它当前适用于现有的 openvswitch、linuxbridge 和 hyperv L2 代理,并旨在取代与这些 L2 代理相关的单体插件。ml2 框架还旨在大大简化对新技术支持的添加,所需的初始和持续工作量远小于添加新的单体核心插件。可以作为后续工作开发模块化代理。

ML2 驱动程序

ml2 中的驱动程序实现单独的可扩展网络类型和访问这些类型网络的机制。与 metaplugin 不同,可以使用多种机制同时访问同一虚拟网络的不同端口。机制可以通过 RPC 利用 L2 代理,和/或使用机制驱动程序与外部设备或控制器交互。类型和机制驱动程序作为 python 入口点使用 stevedore 库加载。

类型驱动程序

每个可用的网络类型都由 ml2 TypeDriver 管理。TypeDriver 维护任何需要的特定类型网络状态,并执行提供商网络验证和租户网络分配。ml2 插件当前包括用于 local、flat、vlan、gre 和 vxlan 网络类型的驱动程序。

机制驱动程序

每个网络机制都由 ml2 MechanismDriver 管理。MechanismDriver 负责获取 TypeDriver 建立的信息,并确保根据启用的特定网络机制正确应用它。

MechanismDriver 接口当前支持创建、更新和删除网络和端口资源。对于可以对资源采取的每个操作,机制驱动程序都会公开两种方法 - ACTION_RESOURCE_precommit,它在数据库事务上下文中调用,以及 ACTION_RESOURCE_postcommit,在数据库事务完成后调用。precommit 方法由机制驱动程序用于验证所采取的操作并对机制驱动程序的私有数据库进行任何必要的更改。precommit 方法不应阻塞,因此不能与 Neutron 之外的任何内容通信。postcommit 方法负责适当地将更改推送到资源,以供负责应用该更改的实体。例如,postcommit 方法会将更改推送到外部网络控制器,然后该控制器将负责根据更改适当地更新网络资源。

在预发布 Havana 版本中,对机制驱动程序的支持目前正在进行中,并且该接口在 Havana 发布之前可能会发生变化。在未来的版本中,还将调用机制驱动程序接口来建立端口绑定,确定要使用的 VIF 类型和网络段。

ALE Omniswitch 机制驱动程序
https://wiki.openstack.org/wiki/Neutron/ML2/ALE-Omniswitch
Arista 机制驱动程序
https://wiki.openstack.org/wiki/Arista-neutron-ml2-driver
Avaya Networking 机制驱动程序
https://wiki.openstack.org/wiki/Neutron/ML2/AvayaML2Mechanism
Brocade 机制驱动程序
https://wiki.openstack.org/wiki/Neutron/ML2/BrocadeML2Mechanism
Cisco Nexus 机制驱动程序
https://wiki.openstack.org/wiki/Neutron/ML2/MechCiscoNexus
DCFabric 机制驱动程序
https://wiki.openstack.org/wiki/DCFabric-neutron-plugin
Lenovo Networking 机制驱动程序
https://wiki.openstack.org/wiki/Neutron/ML2/LenovoML2Mechanism

多段网络

虚拟网络可以由相同或不同类型的多个段组成。数据库模式和驱动程序 API 支持多段网络,但多段网络的客户端 API 尚未实现。

ML2 配置

在 Devstack 中使用 ML2

ML2 插件完全支持 Devstack。支持配置 VLAN、GRE 和 VXLAN 网络。这些步骤在此处介绍。

配置 Devstack 以使用 VLAN 的 ML2

这里显示了一个控制节点和计算节点的 localrc 文件示例,用于配置 ML2 以使用 VLAN 与 Devstack 运行。这等效于以 VLAN 模式运行 OVS 或 LinuxBridge 插件。

将以下内容添加到您的控制节点 localrc
Q_PLUGIN=ml2
ENABLE_TENANT_VLANS=True
ML2_VLAN_RANGES=mynetwork:100:200

要为 VLAN TypeDriver 设置特殊 VLAN 参数,可以使用 localrc 中的以下变量。这是一个空格分隔的赋值值列表
Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS=(network_vlan_ranges=600:700)

配置 Devstack 以使用隧道网络的 ML2

这里显示了一个控制节点和计算节点的 localrc 文件示例,用于配置 ML2 以使用隧道网络与 Devstack 运行。这是配置 ML2的最基本形式,等效于使用 GRE 隧道运行 OVS 插件。

将以下内容添加到您的控制节点 localrc
Q_PLUGIN=ml2
ENABLE_TENANT_TUNNELS=True

在您的计算节点上,将以下内容添加到您的 localrc
Q_PLUGIN=ml2
ENABLE_TENANT_TUNNELS=True

要更改用于隧道密钥的 GRE 密钥范围,请将以下内容添加到 localrc
TENANT_TUNNEL_RANGE=50:100

以上将启用使用 OVS 的 GRE 隧道。如果您想使用 OVS 的 VXLAN,请确保您正在运行 OVS 版本 1.10 或更高版本,包括来自上游 OVS 项目的 Open vSwitch KLM。完成此操作后,以下内容将启用使用 VXLAN 隧道的 ML2

将以下内容添加到您的控制节点 localrc
Q_PLUGIN=ml2
Q_ML2_TENANT_NETWORK_TYPE=vxlan

在您的计算节点上,将以下内容添加到您的 localrc
Q_PLUGIN=ml2
Q_ML2_TENANT_NETWORK_TYPE=vxlan

要更改要使用的 VXLAN VNI 范围,请将以下内容添加到 localrc
Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS=(vni_ranges=400:500)

Devstack 中的高级 ML2 配置

默认情况下,Devstack 将使用 OVS 代理运行 ML2。要使用不同的代理,请在 localrc 中设置以下内容
Q_AGENT=linuxbridge

默认情况下,ML2 不会加载任何 MechanismDriver,并且仅适用于 OVS、LinuxBridge 和 Hyper-V 代理。要更改此设置,请在 localrc 中设置以下内容。有效值是您想要使用的 MechanismDriver 的名称
Q_ML2_PLUGIN_MECHANISM_DRIVERS=<MechansimDrivers 列表>

默认情况下,ML2 会加载所有 TypeDriver。要更改此行为,请在 localrc 中设置以下内容。此选项的有效选项如下:local、flat、vlan、gre、vxlan。
Q_ML2_PLUGIN_TYPE_DRIVERS=vlan,gre


Meetings

可以在这里找到会议信息

https://wiki.openstack.org/wiki/Meetings/ML2

演示文稿