4.2. 网络接口配置选项


使用下表了解在 OpenShift (RHOSO)环境中为 Red Hat OpenStack Services 配置网络接口的可用选项。

注意

RHOSO 不支持 Linux 网桥。反之,为 RHOSO 流量使用 Linux 绑定和专用 NIC 等方法。

4.2.1. interface

定义一个网络接口。网络接口名称使用实际接口名称(eth0eth1、 enp0s25)或一组编号的接口(nic1nic 2、nic3)。 当使用编号的接口(如 nic1 和 nic2),而不是命名的接口(如 eth0eno 2)时,角色中的主机的网络接口不必完全相同。例如,一个主机可能具有接口 em1em2,而另一个主机具有 eno1eno2,但您可以将两个主机的 NIC 指代为 nic1nic2

编号接口的顺序与指定网络接口类型的顺序对应:

  • ethX 接口,如 eth0eth1 等等。

    当在 udev 中关闭一致的设备命名时,名称会出现在这个格式中。

  • enoXemX 接口,如 eno 0、eno 1、 em0、em1 等等。

    这些通常是板载的接口。

  • enX 和任何其他接口,按字母顺序排序,如 enp3s0enp3s1、 ens3 等等。

    这些通常是附加接口。

编号的 NIC 方案仅包含实时接口,例如当接口有电缆连接到交换机时。如果您有一些主机具有四个接口,且一些有六个接口,请使用 nic1nic4,并且每个主机上仅连接四个电缆。

Expand
表 4.1. 接口 选项
选项默认描述

name

 

接口的名称。网络接口名称使用实际接口名称(eth0eth1、 enp0s25)或一组编号的接口(nic1nic 2、nic3)。

use_dhcp

False

使用 DHCP 获取 IP 地址。

use_dhcpv6

False

使用 DHCP 获取 v6 IP 地址。

addresses

 

分配给接口的 IP 地址列表。

Routes

 

分配给接口的路由列表。如需更多信息,请参阅 第 4.2.7 节 “Routes”

mtu

1500

连接的最大传输单元(MTU)。

primary

False

将接口定义为主接口。仅在接口是绑定的成员时才需要。

persist_mapping

False

编写设备别名配置而不是系统名称。

dhclient_args

None

要传递给 DHCP 客户端的参数。

dns_servers

None

要用于接口的 DNS 服务器列表。

ethtool_opts

 

将这个选项设置为 "rx-flow-hash udp4 sdfn",以便在某些 NIC 上使用 VXLAN 时提高吞吐量。

Example

...
        edpm_network_config_template: |
          ---
          {% set mtu_list = [ctlplane_mtu] %}
          {% for network in nodeset_networks %}
          {{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }}
          {%- endfor %}
          {% set min_viable_mtu = mtu_list | max %}
          network_config:
          - type: interface
            name: nic2
            ...
Copy to Clipboard Toggle word wrap

4.2.2. vlan

定义 VLAN。使用从 parameters 部分中传递的 VLAN ID 和子网。

Expand
表 4.2. VLAN 选项
选项默认描述

vlan_id

 

VLAN ID。

device

 

附加 VLAN 的父设备。当 VLAN 不是 OVS 网桥的成员时,请使用此参数。例如,使用此参数将 VLAN 附加到绑定接口设备。

use_dhcp

False

使用 DHCP 获取 IP 地址。

use_dhcpv6

False

使用 DHCP 获取 v6 IP 地址。

addresses

 

分配给 VLAN 的 IP 地址列表。

Routes

 

分配给 VLAN 的路由列表。如需更多信息,请参阅 第 4.2.7 节 “Routes”

mtu

1500

连接的最大传输单元(MTU)。

primary

False

将 VLAN 定义为主接口。

persist_mapping

False

编写设备别名配置而不是系统名称。

dhclient_args

要传递给 DHCP 客户端的参数。

dns_servers

要用于 VLAN 的 DNS 服务器列表。

Example

...
        edpm_network_config_template: |
          ---
          {% set mtu_list = [ctlplane_mtu] %}
          {% for network in nodeset_networks %}
          {{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
          {%- endfor %}
          {% set min_viable_mtu = mtu_list | max %}
          network_config:
          ...
            members:
            - type: vlan
              device: nic{{ loop.index + 1 }}
              mtu: {{ lookup(vars, networks_lower[network] ~ _mtu) }}
              vlan_id: {{ lookup(vars, networks_lower[network] ~ _vlan_id) }}
              addresses:
              - ip_netmask:
                  {{ lookup(vars, networks_lower[network] ~ _ip) }}/{{ lookup(vars, networks_lower[network] ~ _cidr) }}
              routes: {{ lookup(vars, networks_lower[network] ~ _host_routes) }}
...
Copy to Clipboard Toggle word wrap

4.2.3. ovs_bridge

在 Open vSwitch (OVS)中定义一个网桥,它将多个接口、ovs_bondvlan 对象连接在一起。

网络接口类型 ovs_bridge 采用 参数名称

重要

将控制组网络放置到 ovs_bridge 接口可能会导致停机。OVS 网桥连接到 Networking 服务(neutron)服务器,以获取配置数据。如果 OpenStack 控制流量(通常是 Control Plane 和内部 API 网络)位于 OVS 网桥上,那么每当您升级 OVS 时,任何时候都会丢失与 neutron 服务器的连接,或者由 admin 用户或进程重启 OVS 网桥。如果在这些情况下无法接受停机时间,您必须将 Control 组网络放在单独的接口或绑定中,而不是 OVS 网桥上:

  • 当您将内部 API 网络放在置备接口上的 VLAN 上时,您可以在第二个接口上获取最小设置。
  • 要实现绑定,至少需要两个绑定(我们的网络接口)。将控制组放在 Linux 绑定中。如果交换机不支持 LACP 回退到单一接口进行 PXE 引导,那么这个解决方案至少需要 5 个 NIC。
注意

如果您有多个网桥,则必须使用不同于接受 bridge_name 的默认网桥名称。如果您没有使用不同名称,那么在聚合阶段,两个网络绑定将放在同一个网桥中。

Expand
表 4.3. ovs_bridge options
选项默认描述

name

 

网桥的名称。

use_dhcp

False

使用 DHCP 获取 IP 地址。

use_dhcpv6

False

使用 DHCP 获取 v6 IP 地址。

addresses

 

分配给网桥的 IP 地址列表。

Routes

 

分配给网桥的路由列表。如需更多信息,请参阅 第 4.2.7 节 “Routes”

mtu

1500

连接的最大传输单元(MTU)。

成员

 

您要在桥接中使用的接口、VLAN 和绑定对象序列。

ovs_options

 

创建网桥时要传递给 OVS 的一组选项。

ovs_extra

 

将一组选项设置为网桥的网络配置文件中的 OVS_EXTRA 参数。

defroute

True

使用 DHCP 服务提供的默认路由。仅在启用 use_dhcpuse_dhcpv6 时应用。

persist_mapping

False

编写设备别名配置而不是系统名称。

dhclient_args

要传递给 DHCP 客户端的参数。

dns_servers

要用于网桥的 DNS 服务器列表。

Example

...
        edpm_network_config_template: |
          ---
          {% set mtu_list = [ctlplane_mtu] %}
          {% for network in nodeset_networks %}
          {{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
          {%- endfor %}
          {% set min_viable_mtu = mtu_list | max %}
          network_config:
          - type: ovs_bridge
            name: br-bond
            dns_servers: {{ ctlplane_dns_nameservers }}
            domain: {{ dns_search_domains }}
            members:
            - type: ovs_bond
              name: bond1
              mtu: {{ min_viable_mtu }}
              ovs_options: {{ bound_interface_ovs_options }}
              members:
              - type: interface
                name: nic2
                mtu: {{ min_viable_mtu }}
                primary: true
              - type: interface
                name: nic3
                mtu: {{ min_viable_mtu }}
                ...
Copy to Clipboard Toggle word wrap

4.2.4. 网络接口绑定

您可以将多个物理 NIC 捆绑在一起,形成一个名为绑定的单个逻辑通道。您可以配置绑定来为高可用性系统或增加吞吐量提供冗余。

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

Expand
表 4.4. 支持的接口绑定类型
绑定类型类型值允许网桥类型允许的成员

OVS 内核绑定

ovs_bond

ovs_bridge

interface

OVS-DPDK 绑定

ovs_dpdk_bond

ovs_user_bridge

ovs_dpdk_port

Linux 内核绑定

linux_bond

ovs_bridge

interface

重要

不要在同一节点上组合 ovs_bridgeovs_user_bridge

4.2.4.1. ovs_bond

在 Open vSwitch (OVS)中定义一个绑定,将两个或多个 接口 连接在一起。这有助于冗余,并增加带宽。

Expand
表 4.5. ovs_bond options
选项默认描述

name

 

绑定的名称。

use_dhcp

False

使用 DHCP 获取 IP 地址。

use_dhcpv6

False

使用 DHCP 获取 v6 IP 地址。

addresses

 

分配给绑定的 IP 地址列表。

Routes

 

分配给绑定的路由列表。如需更多信息,请参阅 第 4.2.7 节 “Routes”

mtu

1500

连接的最大传输单元(MTU)。

primary

False

将接口定义为主接口。

成员

 

要在绑定中使用的接口对象序列。

ovs_options

 

创建绑定时传递给 OVS 的一组选项。如需更多信息,请参阅 表 4.6 “OVS 绑定的 ovs_options 参数”

ovs_extra

 

在绑定的网络配置文件中设置为 OVS_EXTRA 参数的一组选项。

defroute

True

使用 DHCP 服务提供的默认路由。仅在启用 use_dhcpuse_dhcpv6 时应用。

persist_mapping

False

编写设备别名配置而不是系统名称。

dhclient_args

要传递给 DHCP 客户端的参数。

dns_servers

要用于绑定的 DNS 服务器列表。

Expand
表 4.6. OVS 绑定的 ovs_options 参数
ovs_option描述

bond_mode=balance-slb

源负载均衡(slb)根据源 MAC 地址和输出 VLAN 平衡流,并在流量模式发生变化时定期重新平衡。当您使用 balance-slb bonding 选项配置绑定时,远程交换机不需要配置。Networking 服务(neutron)将每个源 MAC 和 VLAN 对分配给一个链接,并通过该链接传输来自该 MAC 和 VLAN 的所有数据包。使用基于源 MAC 地址和 VLAN 号的简单哈希算法,随着流量模式的变化定期重新平衡。balance-slb 模式与 Linux 绑定驱动程序使用的模式 2 绑定类似。即使交换机没有配置为使用 LACP,也可以使用此模式来提供负载均衡。

bond_mode=active-backup

当您使用 active-backup 绑定模式配置绑定时,网络服务会将一个 NIC 保留为待机状态。当活跃连接失败时,待机 NIC 会恢复网络操作。物理交换机仅会显示一个 MAC 地址。这个模式不需要切换配置,链接连接到单独的交换机时可以正常工作。这个模式不提供负载均衡。

lacp=[active | passive | off]

控制链路聚合控制协议(LACP)行为。只有某些交换机支持 LACP。如果您的交换机不支持 LACP,请使用 bond_mode=balance-slbbond_mode=active-backup

other-config:lacp-fallback-ab=true

如果 LACP 失败,则将 active-backup 设置为绑定模式。

other_config:lacp-time=[fast | slow]

将 LACP heartbeat 设置为 1 秒 (fast) 或 30 秒 (slow)。默认设置会较慢。

other_config:bond-detect-mode=[miimon | carrier]

将链路检测设置为使用 miimon heartbeats (miimon)或监控载体(carrier)。默认值为载体。

other_config:bond-miimon-interval=100

如果使用 miimon,请设置心跳间隔(毫秒)。

bond_updelay=1000

设置链接必须激活的时间间隔(毫秒),以防止流量过长。

other_config:bond-rebalance-interval=10000

设置流在绑定成员间重新平衡的时间间隔(毫秒)。将此值设置为 0,以禁用绑定成员之间的流重新平衡。

示例 - OVS 绑定

...
        edpm_network_config_template: |
          ---
          {% set mtu_list = [ctlplane_mtu] %}
          {% for network in nodeset_networks %}
          {{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
          {%- endfor %}
          {% set min_viable_mtu = mtu_list | max %}
          network_config:
          ...
            members:
              - type: ovs_bond
                name: bond1
                mtu: {{ min_viable_mtu }}
                ovs_options: {{ bond_interface_ovs_options }}
                members:
                - type: interface
                  name: nic2
                  mtu: {{ min_viable_mtu }}
                  primary: true
                - type: interface
                  name: nic3
                  mtu: {{ min_viable_mtu }}
Copy to Clipboard Toggle word wrap

示例 - OVS DPDK 绑定

在本例中,绑定是作为 OVS 用户空间网桥的一部分创建的:

        edpm_network_config_template: |
          ---
          {% set mtu_list = [ctlplane_mtu] %}
          {% for network in nodeset_networks %}
          {{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
          {%- endfor %}
          {% set min_viable_mtu = mtu_list | max %}
          network_config:
          ...
            members:
            - type: ovs_user_bridge
              name: br-dpdk0
              members:
              - type: ovs_dpdk_bond
                name: dpdkbond0
                rx_queue: {{ num_dpdk_interface_rx_queues }}
                members:
                - type: ovs_dpdk_port
                  name: dpdk0
                  members:
                  - type: interface
                    name: nic4
                - type: ovs_dpdk_port
                  name: dpdk1
                  members:
                  - type: interface
                    name: nic5
Copy to Clipboard Toggle word wrap

4.2.5. 带有 OVS 绑定模式的 LACP

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

使用下表了解 OVS 内核和 OVS-DPDK 绑定接口与 LACP 选项的兼容性。

重要

通过使用带有 VLAN 和 LACP 的 Linux 绑定来避免 control plane 中断。如果您使用 OVS 绑定,并重启 OVS 或 neutron 代理进行更新、热修复和其他事件,则 control plane 会受到影响。

Expand
表 4.7. OVS 内核和 OVS-DPDK 绑定模式的 LACP 选项

目标

OVS 绑定模式

兼容 LACP 选项

备注

高可用性(主动-被动)

active-backup

主动,passive, 或 off

 

增加了吞吐量(主动-主动)

balance-slb

主动,passive, 或 off

  • 性能会受到每个数据包的额外解析的影响。
  • vhost-user 锁定争用可能会存在。

balance-tcp

主动被动

  • 与 balance-slb 一样,性能会受到每个数据包的额外解析的影响,且 vhost-user 锁定争用可能会存在。
  • 必须配置并启用 LACP。
  • 设置 lb-output-action=true。例如:

    ovs-vsctl set port <bond port> other_config:lb-output-action=true
    Copy to Clipboard Toggle word wrap

4.2.6. linux_bond

定义将两个或多个 接口 接合在一起的 Linux 绑定。这有助于冗余,并增加带宽。确保在 bonding_options 参数中包含基于内核的绑定选项。

Expand
表 4.8. linux_bond options
选项默认描述

name

 

绑定的名称。

use_dhcp

False

使用 DHCP 获取 IP 地址。

use_dhcpv6

False

使用 DHCP 获取 v6 IP 地址。

addresses

 

分配给绑定的 IP 地址列表。

Routes

 

分配给绑定的路由列表。请参阅 第 4.2.7 节 “Routes”

mtu

1500

连接的最大传输单元(MTU)。

成员

 

要在绑定中使用的接口对象序列。

bonding_options

 

创建绑定时的一组选项。请参阅 Linux bonds 的 bonding_options 参数

defroute

True

使用 DHCP 服务提供的默认路由。仅在启用 use_dhcpuse_dhcpv6 时应用。

persist_mapping

False

编写设备别名配置而不是系统名称。

dhclient_args

要传递给 DHCP 客户端的参数。

dns_servers

要用于绑定的 DNS 服务器列表。

Linux bonds 的 bonding_options 参数

bonding_options 参数为 Linux 绑定设置特定的绑定选项。请参阅以下表的 Linux 绑定示例:

Expand
bonding_options描述

模式

设置绑定模式,在示例中为 802.3ad 或 LACP 模式。有关 Linux 绑定模式的更多信息,请参阅 Red Hat Enterprise Linux 9 配置和管理网络 绑定

lacp_rate

定义 LACP 数据包是每 1 秒发送一次,或每 30 秒发送一次。

updelay

定义接口在用于流量前必须处于活跃状态的最短时间。这个最小配置有助于缓解端口中断。

miimon

使用驱动程序的 MIIMON 功能监控端口状态的时间间隔(毫秒)。

示例 - Linux 绑定

...
        edpm_network_config_template: |
          ---
          {% set mtu_list = [ctlplane_mtu] %}
          {% for network in nodeset_networks %}
          {{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
          {%- endfor %}
          {% set min_viable_mtu = mtu_list | max %}
          network_config:
          - type: linux_bond
            name: bond1
            mtu: {{ min_viable_mtu }}
            bonding_options: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100 xmit_hash_policy=layer3+4"
            members:
              type: interface
              name: ens1f0
              mtu: {{ min_viable_mtu }}
              primary: true
            type: interface
              name: ens1f1
              mtu: {{ min_viable_mtu }}
              ...
Copy to Clipboard Toggle word wrap

示例 - Linux bond:绑定两个接口

...
        edpm_network_config_template: |
          ---
          {% set mtu_list = [ctlplane_mtu] %}
          {% for network in nodeset_networks %}
          {{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
          {%- endfor %}
          {% set min_viable_mtu = mtu_list | max %}
          network_config:
          - type: linux_bond
            name: bond1
            members:
            - type: interface
              name: nic2
            - type: interface
              name: nic3
            bonding_options: "mode=802.3ad lacp_rate=[fast|slow] updelay=1000 miimon=100"
            ...
Copy to Clipboard Toggle word wrap

示例 - Linux 绑定设置为带有一个 VLAN 的 active-backup 模式

....
        edpm_network_config_template: |
          ---
          {% set mtu_list = [ctlplane_mtu] %}
          {% for network in nodeset_networks %}
          {{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
          {%- endfor %}
          {% set min_viable_mtu = mtu_list | max %}
          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
Copy to Clipboard Toggle word wrap

示例 - OVS 网桥上的 Linux 绑定

在本例中,绑定被设置为带有 LACP 模式的 802.3ad,以及一个 VLAN:

...
        edpm_network_config_template: |
          ---
          {% set mtu_list = [ctlplane_mtu] %}
          {% for network in nodeset_networks %}
          {{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
          {%- endfor %}
          {% set min_viable_mtu = mtu_list | max %}
          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}
                    ...
Copy to Clipboard Toggle word wrap

4.2.7. Routes

定义要应用到网络接口、VLAN、网桥或绑定的路由列表。

Expand
表 4.9. 路由选项
选项默认描述

ip_netmask

目标网络的 IP 和子网掩码。

default

False

将此路由设置为默认路由。等同于设置 ip_netmask: 0.0.0.0/0

next_hop

用于访问目标网络的路由器的 IP 地址。

示例 - routes

...
        edpm_network_config_template: |
          ---
          {% set mtu_list = [ctlplane_mtu] %}
          {% for network in nodeset_networks %}
          {{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
          {%- endfor %}
          {% set min_viable_mtu = mtu_list | max %}
          network_config:
          -  type: ovs_bridge
              name: br-tenant
              ...
              routes: {{ [ctlplane_host_routes] | flatten | unique }}
              ...
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat