跳转到: 导航, 搜索

Neutron/ML2/ALE-Omniswitch

< Neutron‎ | ML2

OmniSwitch 插件,用于 OpenStack

OpenStack 的 OmniSwitch OpenStack 网络插件 (OONP) 通过协调 Alcatel-Lucent OmniSwitch 作为底层物理网络,为 OpenStack 逻辑网络提供基础设施服务。与 OpenVSwitch 插件结合使用时,可以通过 OpenStack Networking (Quantum/ Neutron) 实现端到端的多租户网络配置。

该插件旨在安装在现有的 OpenStack 环境中,以配置其云网络操作的底层物理网络。

  • 注意:此 OONP 版本仅支持基本插件功能,例如链路聚合、虚拟底盘、基于 VPA 的网络以及对 Telnet 和 REST 的驱动程序支持。目前不支持高级功能,例如 UNP、MVRP、SPB 和 QoS。


OmniSwitch OpenStack 网络插件架构

OpenStack Networking ML2 插件提供了一个可扩展的架构,支持各种机制驱动程序来配置物理网络。该架构提供了一个环境,可以使用多个独立的驱动程序来配置来自不同供应商的不同网络设备。每个驱动程序使用其自身的内部机制与其各自的网络元素进行通信。从 OpenStack Neutron-server 的角度来看,通过单个接口提供所需的网络服务,以提供给 OpenStack 云应用程序。这允许 OpenStack Networking 配置物理网络以及在超visor 上运行的虚拟交换机实例。此外,OpenStack Networking L3-agent 和 DHCP-agent 均完全受支持。

OmniSwitch ML2 机制驱动程序与 OVS ML2 驱动程序一起工作

OmniSwitch ML2 机制驱动程序支持以下硬件平台及其各自的 AOS 软件版本。

  • OS6900 和 OS10K,AOS 732-R01 SW 版本及以上
  • OS685X 和 OS9000,AOS 645-R02 SW 版本及以上
  • OS6250 和 OS6450,AOS 664-R01 及以上,仅限于此平台上支持的功能
  • OS6860 和 OS6860E,AOS 811-R01。


Basic topology.png

在此部署场景中,OmniSwitch ML2 机制驱动程序使用来自 OpenVSwitch 数据库的配置元素,以确保配置一致性以及在它和 OVSNeutronPluginV2 插件之间一致的 VLAN ID 分配。


基于 VLAN 的租户网络

该插件支持 VLAN 网络类型。这意味着逻辑网络(也称为“租户网络”)在 OmniSwitch 中使用 VLAN 实现;因此,在 OpenStack Networking 中执行的与租户网络相关的所有操作都将被转换为并在 OmniSwitch 中使用 VLAN 进行配置。VLAN ID 从插件配置文件中定义的保留 VLAN 范围内获得。

VLAN ID 分配在交换机端口上高效且智能地使用,通过在创建和销毁连接到租户网络的虚拟机时在交换机之间配置和取消配置 VLAN 来实现。

此外,计算主机到物理网络的连接被桥接,以仅允许从主机上配置的 VLAN 发送流量。

计算主机 VLAN 桥接配置在 OmniSwitch 上通过使用 Alcatel-Lucent VNP 机制自动完成。VNP 分类基于以下任一方法执行:虚拟机的 MAC 地址;或 VLAN 标签。虽然两种方法都受支持,但一个 OpenStack 安装实例中只能使用一种。网络节点连接(DHCP 和 L3 服务)使用 VLAN-Port-Assignment 自动管理。


其他支持的功能

此版本中还支持以下其他功能。

特定设备的 switch_access_method

此功能允许对拓扑中的每个设备使用不同的访问方法(TELNET 或 REST)。如果意外地将 AOS 6.X 设备配置为使用 REST 接口,将记录 ALERT 消息,并且对于这些设备将自动使用 TELNET。

  • 注意:此参数作为现有设备配置中的附加条目添加。请参阅 .ini 文件以获取正确的格式。

基于 VPA 的主机分类方法

除了在连接到计算节点的接口上支持边缘交换机上的 UNP 配置文件外,还支持静态 802.1q 标记的纯 Vlan-Port-Association (VPA) 方法。这主要用于支持 OS6450 作为边缘交换机。

交换机保存配置间隔

定期保存交换机配置的时间间隔范围定义为 600-1800 秒。如果配置的值超出此范围,将记录 ALERT 消息,并且自动使用最小值(600 秒)。


OmniSwitch OpenStack 网络插件 (OONP) 概述

OmniSwitch OpenStack 网络插件 (OONP) 为 OpenStack Networking (Neutron) 提供管理 OmniSwitch 设备的 Layer-2 配置的能力。OONP 插件支持以下功能

  • 802.1q VLAN 基于租户的网络。
  • 多种物理拓扑 - 从单个交换机到基于多交换机的核心-边缘和 spine-leaf 拓扑。
  • 基于 VLAN 端口分配 (VPA) 的边缘端口(主机 VM 连接)自动配置。以下产品矩阵显示了哪些功能受支持/用于物理 OmniSwitch 配置


功能模式/产品 OS10K/OS6900 OS6860/6860E OS6850E/OS6850 OS6450
交换机访问方法 ReST/Telnet ReST/Telnet Telnet Telnet
边缘端口配置 VPA VPA VPA VPA
上行端口配置 VPA VPA VPA VPA


虽然插件支持交换机功能的组合,但 OpenStack 配置中只能使用一种端口配置方法。例如,如果您选择使用 MVRP 配置上行端口,则所有交换机都必须支持 MVRP 功能。这同样适用于边缘端口配置和上行端口配置参数。


OmniSwitch OpenStack 网络插件安装

该插件作为 tar.gz 文件提供,其中包含可在 pypi 站点上找到的 python 模块和支持应用程序

https://pypi.python.org/pypi/networking-ale-omniswitch

该插件安装在 OpenStack 控制节点上,可以使用 pip 命令执行

 pip install networking-ale-ominiswitch

现在必须配置 Neutron 以使用 OONP。典型的安装将结合使用 OONP 和 OVS 插件。插件配置在 Ubuntu 环境中的控制节点上的两个 (2) 文件中定义

1. /etc/init/neutron-server.conf

 script
 [ -x "/usr/bin/neutron-server" ] || exit 0
 [ -r /etc/default/openstack ] && . /etc/default/openstack
 [ -r /etc/default/neutron-server ] && . /etc/default/neutron-server
 [ -r "$NEUTRON_PLUGIN_CONFIG" ] && DAEMON_ARGS="$DAEMON_ARGS --config-file=$NEUTRON_PLUGIN_CONFIG"
 [ "x$USE_SYSLOG" = "xyes" ] && DAEMON_ARGS="$DAEMON_ARGS --use-syslog"
 [ "x$USE_LOGFILE" != "xno" ] && DAEMON_ARGS="$DAEMON_ARGS --log-file=/var/log/neutron/neutron-server.log"
 exec start-stop-daemon --start --chuid neutron --exec /usr/bin/neutron-server -- \
   --config-file=/etc/neutron/neutron.conf --config-file=/etc/neutron/plugins/ml2/omniswitch_network_plugin.ini ${DAEMON_ARGS}
end script

2. /etc/neutron/neutron.conf - 使用以下条目指定插件配置

  core_plugin = ml2

Neutron 配置所需的手动更改

成功安装 OONP 插件后,需要对 Neutron 的配置进行手动更改。所需的更改以红色标记如下

1. 在“/etc/neutron/plugins/ml2/ml2_conf.ini”中,更新以下行以包含 omniswitch,如下所示。

  mechanism_drivers = openvswitch,omniswitch

2. 使用您想要使用的拓扑详细信息和配置选项更新 OONP 的配置文件。

  /etc/neutron/plugins/ml2/omniswitch_network_plugin.ini

3. 重新启动 neutron-server。

  > service neutron-server restart

运行上述步骤后,您现在可以使用 Openstack Neutron API 和/或 Horizon Web UI 或 CLI 来管理云网络。

OmniSwitch OpenStack 网络插件配置

该插件需要有关插件操作详细信息、设备的详细信息、物理网络拓扑以及用于提供核心和边缘网络交换机之间端到端连接的机制的配置数据。

安装插件时,配置文件将具有其中的“默认”值。必须在开始使用插件之前由用户修改这些值。

运行时配置文件中的任何更改都需要重新启动 Neutron-server 才能生效。

以下是 omniswitch_network_plugin.ini 文件的示例。此外,请参阅“OmniSwitch OONP 安装和多交换机边缘-核心拓扑示例”章节,了解示例拓扑及其相关的配置参数。

  [ml2_ale_omniswitch]
  
  # This is used to define the edge switches and which ports the compute/network
  # nodes are attached to. The entry may contain 1 or more device definitions.
  # The definition is:
  # <switch-ip>:<switch-type>:<user-name>:<password>:<command-prompt>:<access_method>
  # <node-interaces>:<core-interfaces>, with blank entries for user-name, password,
  # or command-prompt specifying default values. A blank value for access_method will
  # result in using the global switch_access_method
  
  omni_edge_devices = 192.168.222.33:OS6900:	:	:	:	:TELNET:1/19,
  192.168.222.35:OS6900:	:	:	:	:TELNET:1/16:1/20
  
  # Used to define 0, or more, core switch configurations; the entry follows the same
  # format as that of the omni_edge_device.
  
  omni_core_devices = 192.168.222.34:OS6900:	:	:	:	:TELNET:1/19 1/20
  
  # This is used to specify which switch and port the DHCP server (network node) is
  # connected.
  
  dhcp_server_interface = 192.168.222.33:	:	:	:	:TELNET:1/18
  
  # The default global method to access devices if not overridden by the
  # switch_access_method
  # parameter of the omni_edge_devices, omni_core_devices, and/or
  # dhcp_server_interface.
  # <TELNET|REST>
  
  switch_access_method = TELNET
  
  
  # SWITCH_SAVE_CONFIG_INTERVAL:
  # This is used to specify how often (in seconds) the config changes in the switches
  # are to be saved.
  # The valid range is 600 - 1800 seconds. If value is out of range, it will default
  # to 600 seconds. switch_save_config_interval = 600

拓扑示例

本章介绍了带有相关 OmniSwitch OpenStack 网络插件 (OONP) 配置的示例 OpenStack 拓扑。所呈现的配置基于两种 (2) 拓扑变体

  • 单个 OS6900 交换机
  • 多个 OS6900 交换机。

网络配置和管理是通过结合使用 OONP 配置物理交换机和 OpenVSwitch (OVS) 配置计算和网络节点来实现的。

OONP 支持使用 VLAN 进行租户网络隔离;因此,通常必须将 OpenStack 实例配置为使用 VLAN。这些配置不使用 flat-dhcp 或基于隧道(GRE 或 VxLAN)的租户拓扑。

OONP 支持多种 OmniSwitch 产品系列以及各种配置和管理方法。通常,在给定的 OpenStack 实例中只能使用一种分类方法和一种上行链路管理方法。例如,如果选择 VLAN 分类作为边缘端口配置方法,则它将用于所有边缘交换机配置。同样,如果选择 MVRP 作为上行端口配置方法,MVRP 将用于所有交换机。这导致 OONP 配置使用物理拓扑内所有交换机的通用配置选项。

本文档中提供的配置基于 OpenStack Liberty 的包版本。


OmniSwitch OONP 安装和多交换机边缘-核心拓扑示例

此拓扑使用三个 (3) OmniSwitch 6900 在核心-边缘配置中。由于在此拓扑中同构地使用 OS9600 交换机,因此可以使用 MVRP 和 vNP 的高级配置功能。

物理网络由两个 (2)“边缘交换机”组成,它们提供端站连接;以及一个 (1)“核心交换机”。需要注意的是,“边缘交换机”连接了 OpenStack 节点(以及其他计算设备);而“核心交换机”仅连接到其他交换机,无论是“核心”还是“边缘”。

计算节点 VLAN 桥接配置在 OmniSwitch 上通过使用 Alcatel-Lucent vNP 机制自动完成。VM mac 地址将用于识别并在边缘端口上创建正确的 802.1q VLAN 标签配置。(称为 mac 地址分类)。

网络节点 VLAN 桥接配置由 OmniSwitch 插件使用 VLAN-Port-Assignment (VPA) 管理。(这是必需的,因为 vNP 分类发生在入口处,并且位于网络节点上的 dhcp 服务器必须具有静态 VLAN 连接才能接收租户 VM dhcp DISCOVER 广播消息)。

边缘交换机和核心交换机之间的 VLAN 上行链路连接使用 MVRP 自动学习和配置。

此示例提供了安装和配置 OONP 的步骤。物理配置由以下组成:两个 (2) 计算节点;一个 (1) 网络节点;以及一个单独的控制器节点。有三个 (3) 物理网络(请参阅 “图:多交换机边缘-核心拓扑"

  • “公共”网络,它连接到控制器和网络节点
  • 内部管理网络,它连接到所有设备和节点
  • “私有”租户网络,它连接到计算和网络节点


示例中使用的交换机配置假设如下

  • 管理/admin 网络为 10.1.2.0/24
  • EMP 用作管理接口
  • 租户 VLAN 范围为 1005-1015
  • OmniSwitch 设备插件将使用工厂默认凭据登录到交换机 (admin:switch)
  • 配置假定所有交换机上的工厂默认提示符 (->)
  • OmniSwitch 设备插件将使用 telnet 驱动程序与交换机通信。


有关以下参数,请参阅多交换机拓扑 OONP 配置文件示例

  • 选择 MAC_ADDRESS 资格、MVRP 配置和 TELNET 交换机通信方法的通用 OmniSwitch 插件配置元素以绿色显示。
  • VLAN 范围配置,映射 VLAN 1005-1015 的使用以红色显示。

“图:多交换机边缘-核心拓扑" 中的交换机连接拓扑直接映射到 omni_edge_device、omni_core_device 和 dhcp_server_interface 配置参数中,示例 OONP 配置文件中以蓝色显示。每个参数可以有多个交换机定义,用逗号“,”分隔。交换机定义的配置属性如下

  <Switch-IP>:<Switch-Type>:<User>:<Password>:<Prompt>:
  <Switch-access-method>:<Node-interfaces>:<Core-interfaces>

在本例中,工厂默认值用于身份验证凭据和默认 CLI 提示符。此外,插件全局 switch_access_method 将被使用;产生以下格式的条目:

  n.n.n.n:OS6900: : : : :X:Y, where;

n.n.n.n 是交换机管理 IP 地址,

X 是计算或网络节点端点连接端口(以插槽/端口格式),Y 是互连(上行链路)连接端口。

  • 注意:设备规范可以包括用于端点和互连接口的多个接口端口,用空格分隔。此外,网络节点在 dhcp_server_interface 参数中单独指定,不应包含在 *_device 配置参数中。

此示例中相应的 OVS 代理配置文件如下所示。需要注意的是,tenant_network_type 和 network_vlan_ranges 参数重复了控制器节点上 OONP 配置文件中的定义。

Multi-Switch Edge-Core Topo.jpg

omniswitch_network_plugin.ini 条目

  [ml2_ale_omniswitch]
 omni_edge_devices = 10.1.2.33:OS6900: : : : :TELNET:1/16:1/19,
 10.1.2.35:OS6900: : : : :TELNET:1/16:1/20
 omni_core_devices = 10.1.2.34:OS6900: : : : :TELNET:1/19 1/20
 dhcp_server_interface = 10.1.2.33:OS6900: : : : :TELNET:1/15
 switch_access_method = TELNET
 switch_save_config_interval = 600
 

ml2_conf.ini 条目

 [OVS]
 bridge_mappings = physnet1:br-eth1
 integration_bridge = br-int
 tenant_network_type = vlan
 network_vlan_ranges = physnet1:1005:1015
 
 [SECURITYGROUP]
 firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
 root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf

安装和配置 OONP

要安装和配置 OONP 插件,请执行以下操作。

1. 使用 pip 命令下载并安装 OONP 插件

  pip install networking-ale-ominiswitch

2. 编辑 Neutron-server 的配置文件以使用 OmniSwitch 网络插件。编辑“/etc/ neutron/neutron.conf”并更新“core_plugin”参数如下

  core_plugin = ml2

3. 编辑“/etc/default/neutron-server”以指示 Neutron-server 插件配置文件。使用以下内容更新文件

  NEUTRON_PLUGIN_CONFIG= /etc/neutron/plugins/ml2/ml2_conf.ini
  # Edits for OONP plugin conf file inclusion
  OONP_CONFIG="--config_file /etc/neutron/plugins/ml2/omniswitch_network_plugin.ini"
  NEUTRON_PLUGIN_CONFIG="${NEUTRON_PLUGIN_CONFIG} ${OONP_CONFIG}"

4. 编辑 /etc/neutron/plugins/ml2/omniswitch_network_plugin.ini 文件以匹配 Liberty 拓扑端口配置。

5. 重启控制器上的 neutron 服务器(以 root 用户身份运行“service neutron-server restart”)。

多交换机全边缘拓扑示例

此拓扑由三个 (3) OmniSwitch OS6900 组成一个网状互连。每个交换机至少连接一个 (1) OpenStack 节点(计算或网络)。此配置不包含核心交换机,因此配置文件将不会包含 omni_core_devices 配置元素。

计算节点 VLAN trunk 配置通过使用 Alcatel-Lucent vNP 机制自动完成。传入的 802.1q 标签将被用于识别并在边缘端口上创建正确的 802.1q VLAN 标签配置。(称为 VLAN 分类)

与之前的拓扑一样,网络节点 VLAN trunk 配置由 OmniS-witch 插件使用 VPA 管理。

交换机间链路 802.1q 配置也使用 VPA 管理。

Multi-Switch all Edge Topo.jpg

从一个可用的 OpenStack Liberty 配置开始(具有可用的 Neutron OVS 网络基础设施)。该实例由以下组成:三个 (3) 计算节点;网络节点和控制器。该实例由三个 (3) 网络组成

交换机间链路 802.1q 配置也使用 VPA 管理。

  • “public” 网络,它同时连接到控制器和网络节点
  • 内部管理网络,它连接到所有设备和节点
  • “private” 租户网络,它连接到计算和网络节点


示例中使用的交换机配置假设如下

  • 管理/admin 网络是 192.168.2.0/24
  • EMP 用作管理接口
  • 租户 VLAN 范围为 1005-1015
  • OmniSwitch 设备插件将使用 OpenStack 的用户名和密码 secret 登录到交换机
  • 配置假定所有交换机上的工厂默认提示符 (->)
  • OmniSwitch 设备插件将使用 telnet 驱动程序与所有交换机通信(如插件全局 switch_access_method 中指定)。但是,REST 方法将用于控制 192.168.2.51 处的交换机。


有关以下参数,请参阅多交换机拓扑 OONP 配置文件示例

  • 通用的 OmniSwitch 插件配置元素,选择:VLAN 资格;VPA 配置;和 TELNET 交换机通信方法,显示为绿色。
  • VLAN 范围配置,映射 VLAN 1005-1015 的使用以红色显示。


交换机连接拓扑在 “图:多交换机全边缘拓扑” 中直接映射到 omni_edge_device 和 dhcp_server_interface 配置参数,在示例 OONP 配置文件中显示为蓝色。请注意,omni_core_device 元素缺失于配置中。交换机定义的配置属性如下

在此示例中,使用 openstack:secret 的身份验证凭据和默认 CLI 提示符,生成以下格式的条目

n.n.n.n:OS6900:openstack:secret: : :X:Y,其中;
n.n.n.n 是交换机管理 IP 地址,
X 是计算或网络节点端点连接端口(以插槽/端口格式),Y 是互连(上行链路)连接端口。

omniswitch_network_plugin.ini 条目

  [ml2_ale_omniswitch]
  omni_edge_devices = 192.168.2.50:OS6900:openstack:secret: : :TELNET:1/16:1/19 1/20,
                       192.168.2.51:OS6900:openstack:secret: : :REST:1/16:1/19 1/20,
                       192.168.2.52:OS6900:openstack:secret: : :TELNET:1/16:1/19 1/20 
  dhcp_server_interface = 192.168.2.50:OS6900:openstack:secret: : :TELNET:1/15
  switch_access_method = TELNET
  switch_save_config_interval = 600

ml2_conf.ini 条目

  [OVS]
  bridge_mappings = physnet1:br-eth1
  integration_bridge = br-int
  tenant_network_type = vlan
  network_vlan_ranges = physnet1:1005:1015
 
  [SECURITYGROUP]
  firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
  root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf

单交换机拓扑示例

此配置使用单个 OmniSwitch OS6900 来提供 OpenStack 租户网络互连。该配置限制为单个“边缘”交换机。

计算节点 VLAN trunk 配置通过使用 Alcatel-Lucent vNP 机制自动完成。VM mac 地址将被用于识别并在主机端口上创建正确的 802.1q VLAN 标签配置。

网络节点 VLAN trunk 配置由 OmniSwitch 插件使用 VLAN-Port-Assignment 管理。(这是必需的,因为 vNP 分类发生在入站,并且位于网络节点上的 dhcp 服务器必须具有 VLAN 连接才能接收租户 VM dhcp DISCOVER 广播消息)

从一个可用的 OpenStack Liberty 配置开始(具有可用的 Neutron OVS 网络基础设施)。该实例由以下组成:两个 (2) 计算节点;以及一个组合的控制器/网络节点。该实例由三个 (3) 网络组成

  • “public” 网络,它连接到控制器/网络节点;
  • 内部管理网络,它连接到 OmniSwitch 设备和节点;
  • “private” 数据网络,连接到计算和控制器/网络节点。


示例中使用的交换机配置假设如下

  • 管理/admin 网络是 192.168.1.0/24
  • EMP 用作管理接口
  • 租户 VLAN 范围为 1005-1015
  • OmniSwitch 设备插件将使用工厂默认凭据登录到交换机 (admin:switch)
  • 配置假定交换机上的工厂默认提示符
  • OmniSwitch 设备插件将使用 telnet 驱动程序与交换机通信


请参阅单交换机拓扑 OONP 配置文件示例以获取以下参数

Single Switch Topo.jpg

  • 通用的 OmniSwitch 插件配置元素,选择:MAC_ADDRESS 资格和 TELNET 交换机通信方法,显示为绿色。
  • VLAN 范围配置,映射 VLAN 1005-1015 的使用以红色显示。

交换机连接拓扑在 “图:单交换机拓扑” 中直接映射到 omni_edge_devices 和 dhcp_server_interface 配置参数,在示例 OONP 配置文件中显示为蓝色。

在此示例中,身份验证凭据使用工厂默认值,并且默认 CLI 提示符;此外,插件全局 switch_access_method 将被使用,但是;此示例不使用核心交换机连接,生成以下格式的条目:n.n.n.n:OS6900: : : : :x:,其中;

n.n.n.n 是交换机管理 IP 地址,
x 是计算或网络节点端点连接端口(以 slot/port 格式),
请注意,交换机间(上行链路)连接端口留空。
  • 注意。设备规范包括用于端点接口的多个接口端口,用空格 ' ' 分隔。此外,网络节点在 dhcp_server_interface 参数中单独指定,不应包含在 *_device 配置参数中。

在此示例中显示了相应的 OVS 代理配置文件。应该注意的是,tenant_network_type 和 network_vlan_ranges 参数反映了控制器节点上 OONP 配置文件中的定义。还要特别注意缺少 omni_core_devices 和 core_network_config 配置元素。

omniswitch_network_plugin.ini 条目

  [ml2_ale_omniswitch]
  omni_edge_devices = 192.168.1.10:OS6900: : : : :TELNET:1/15 1/16:
  dhcp_server_interface = 192.168.1.10:OS6900: : : : :TELNET:1/20
  switch_access_method = TELNET
  switch_save_config_interval = 600

ml2_conf.ini 条目

  [OVS]
  bridge_mappings = physnet1:br-eth1
  integration_bridge = br-int
  tenant_network_type = vlan
  network_vlan_ranges = physnet1:1005:1015
  
  [SECURITYGROUP]
  firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
  root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf

具有 LACP 的虚拟底盘拓扑

此配置使用链路聚合和虚拟底盘功能的组合来提供网络冗余。该示例使用一对 OmniSwitch OS6900 实现。概述的拓扑结构限制为单个“边缘”交换机,以简化配置;但是,这是呈现的最复杂的配置。

在使用之前,交换机必须配置为虚拟底盘。

Single-Switch.jpg

链路聚合功能也必须在 OpenStack 实例使用之前在交换机上启用和配置。LACP 用于管理聚合链路上的网络流量。以下命令将实现链路聚合配置

  linkagg lacp agg 50 size 2 admin-state enable
  linkagg lacp agg 50 name "OpenStack LACP testing nova02"
  linkagg lacp agg 50 actor admin-key 50
  linkagg lacp agg 51 size 2 admin-state enable
  linkagg lacp agg 51 name "OpenStack LACP testing nova01"
  linkagg lacp agg 51 actor admin-key 51
  linkagg lacp agg 52 size 2 admin-state enable
  linkagg lacp port 1/1/19 actor admin-key 51
  linkagg lacp port 1/1/20 actor admin-key 50
  linkagg lacp port 2/1/16 actor admin-key 51
  linkagg lacp port 2/1/17 actor admin-key 50
  unp linkagg 50
  unp linkagg 50 classification enable
  unp linkagg 51
  unp linkagg 51 classification enable

计算主机也需要专门的配置来支持 LACP。虽然 OVS 直接支持链路聚合(和 LACP),但在与 802.1x VLAN 标记结合使用时存在问题。因此,linux bonding 驱动程序用于提供 LACP 支持;OVS 配置为使用 bond 接口。接口绑定由以下 /etc/network/interfaces 配置元素描述

  auto eth0
  allow-bond0 eth0
  iface eth2 inet manual
        bond-master bond0
  auto eth2
  allow-bond0 eth2
  iface eth2 inet manual
        bond-master bond0
  auto bond0
  iface bond0 inet manual
        bond-mode 802.3ad
        bond-slaves none
        bond-miimon 100
        bond-lacp-rate fast

需要使用的 OpenVSwitch 配置是利用定义的 bond0 接口

  ovs-vsctl show
  dbb9cf7f-3c38-42b2-831f-4ebf940d7c43
     Bridge "br-bond0"
        Port "bond0"
           Interface "bond0"
        Port "phy-br-bond0"
           Interface "phy-br-bond0"
        Port "br-bond0"
           Interface "br-bond0"
              type: internal
     Bridge br-int
        Port br-int
           Interface br-int
              type: internal
        Port "int-br-bond0"
           Interface "int-br-bond0"
  ovs_version: "1.10.2"

OONP 将使用 vNP 和 mac 地址分类机制管理计算节点 802.1q VLAN 配置,如之前的配置。

omniswitch_network_plugin.ini 条目

  [ml2_ale_omniswitch]
  omni_edge_devices = 10.255.205.106:OS6900: : : : :TELNET:50 51:
  dhcp_server_interface = 10.255.205.106:OS6900: : : : :TELNET:2/1/10
  switch_save_config_interval = 600

ml2_conf.ini 条目

  [OVS]
  bridge_mappings = physnet1:br-eth1
  integration_bridge = br-int
  tenant_network_type = vlan
  network_vlan_ranges = physnet1:1100:1110
  
  [SECURITYGROUP]
 
  firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
  root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf

具有 LACP 的虚拟底盘计算节点 OVS 配置文件

ml2_conf.ini 条目

  [OVS]
  bridge_mappings = physnet1:br-bond0
  integration_bridge = br-int
  tenant_network_type = vlan
  network_vlan_ranges = physnet1:1100:1110
  
  [SECURITYGROUP]
  firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
  root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf

具有 LACP 的虚拟底盘网络节点 OVS 配置文件

ml2_conf.ini 条目

  [OVS]
  bridge_mappings = physnet1:br-eth1
  integration_bridge = br-int
  tenant_network_type = vlan
  network_vlan_ranges = physnet1:1100:1110
  
  [SECURITYGROUP]
  firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
  root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf

示例 ml2_conf.ini 文件

请参阅此链接:ml2_conf.ini 文件