Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

第 13 章 网络接口绑定

本章定义了在自定义网络配置中使用的一些绑定选项。

13.1. 网络接口绑定和链路聚合控制协议(LACP)

您可以将多个物理 NIC 捆绑到一起组成一个逻辑频道,称为绑定。您可以配置绑定来为高可用性系统或增加吞吐量提供冗余。

重要

不支持在绑定接口中使用单根 I/O 虚拟化(SR-IOV)。

Red Hat OpenStack Platform 支持 Linux 绑定、Open vSwitch (OVS)内核绑定和 OVS-DPDK 绑定。

绑定可与可选链路聚合控制协议(LACP)一起使用。LACP 是一个协商协议,可为负载平衡和容错创建动态绑定。

红帽建议使用 Linux 内核绑定(bond type: linux_bond) over OvS 内核绑定(bond type: ovs_bond)。用户模式绑定(bond type:ovs_dpdk_bond)必须与用户模式桥接(type: ovs_user_bridge)一同使用,而不是内核模式网桥(type: ovs_bridge)。但是,不要在同一节点上组合 ovs_bridge 和 ovs_user_bridge。

在控制和存储网络上,红帽建议使用带有 VLAN 和 LACP 的 Linux 绑定,因为 OVS 绑定增加了在 OVS 或 neutron 代理重启时出现 control plane 中断的可能性。Linux 绑定/LACP/VLAN 配置在不出现 OVS 中断的情况下提供 NIC 管理。

以下是一个使用 VLAN 的 Linux 绑定配置示例。

params:
            $network_config:
              network_config:

              - type: linux_bond
                name: bond_api
                bonding_options: "mode=active-backup"
                use_dhcp: false
                dns_servers:
                  get_param: DnsServers
                members:
                - type: interface
                  name: nic3
                  primary: true
                - type: interface
                  name: nic4

              - type: vlan
                vlan_id:
                  get_param: InternalApiNetworkVlanID
                device: bond_api
                addresses:
                - ip_netmask:
                    get_param: InternalApiIpSubnet

以下示例显示了将 Linux 绑定插入到 OVS 网桥中

params:
            $network_config:
              network_config:

            -  type: ovs_bridge
                name: br-tenant
                use_dhcp: false
                mtu: 9000
                members:
                  - type: linux_bond
                    name: bond_tenant
                    bonding_options: "mode=802.3ad updelay=1000 miimon=100"
                    use_dhcp: false
                    dns_servers:
                      get_param: DnsServers
                    members:
                    - type: interface
                      name: p1p1
                      primary: true
                    - type: interface
                      name: p1p2
                  - type: vlan
                    device: bond_tenant
                    vlan_id: {get_param: TenantNetworkVlanID}
                    addresses:
                      -
                        ip_netmask: {get_param: TenantIpSubnet}

以下示例显示了 OVS 用户空间网桥:

params:
            $network_config:
              network_config:

          -    type: ovs_user_bridge
                name: br-ex
                use_dhcp: false
                members:
                - type: ovs_dpdk_bond
                  name: dpdkbond0
                  mtu: 2140
                  ovs_options: {get_param: BondInterfaceOvsOptions}
                  #ovs_extra:
                  #- set interface dpdk0 mtu_request=$MTU
                  #- set interface dpdk1 mtu_request=$MTU
                  rx_queue:
                    get_param: NumDpdkInterfaceRxQueues
                  members:
                  - type: ovs_dpdk_port
                    name: dpdk0
                    mtu: 2140
                    members:
                    - type: interface
                      name: p1p1
                  - type: ovs_dpdk_port
                    name: dpdk1
                    mtu: 2140
                    members:
                    - type: interface
                      name: p1p2