MTU 考虑事项

网络服务使用底层物理网络的 MTU 来计算虚拟网络组件(包括实例网络接口)的 MTU。默认情况下,它假定底层物理网络的标准 MTU 为 1500 字节。

网络服务仅引用底层物理网络的 MTU。更改底层物理网络设备的 MTU 需要配置物理网络设备,例如交换机和路由器。

巨帧

网络服务支持使用巨帧的底层物理网络,并允许实例使用巨帧减去任何覆盖协议开销。例如,具有 9000 字节 MTU 的底层物理网络,对于使用 IPv4 端点的 VXLAN 网络,实例的 MTU 为 8950 字节。使用 IPv6 端点进行覆盖网络会增加 20 字节的开销,适用于任何协议。

网络服务支持以下底层物理网络架构。案例 1 指的是最常见的架构。通常,应避免案例 2 和 3。

注意

在调整 neutron.confml2_conf.ini 中的 MTU 配置选项后,应更新需要新 MTU 的所有现有网络的 mtu 属性。(网络 MTU 更新适用于实现 net-mtu-writable API 扩展的所有核心插件。)

案例 1

对于实现单个 MTU 值的典型底层物理网络架构,可以使用两种选项来利用巨帧,一种在 neutron.conf 文件中,另一种在 ml2_conf.ini 文件中。大多数环境应使用此配置。

例如,引用具有 9000 字节 MTU 的底层物理网络

  1. neutron.conf 文件中

    [DEFAULT]
    global_physnet_mtu = 9000
    
  2. ml2_conf.ini 文件中

    [ml2]
    path_mtu = 9000
    

案例 2

某些底层物理网络架构包含具有不同 MTU 值的多个 Layer-2 网络。您可以配置桥接或接口映射选项的 Layer-2 代理中的每个扁平或 VLAN 提供程序网络,以引用唯一的 MTU 值。

例如,引用 provider2 的 4000 字节 MTU,provider3 的 1500 字节 MTU,以及使用 Open vSwitch 代理的其他网络的 9000 字节 MTU

  1. neutron.conf 文件中

    [DEFAULT]
    global_physnet_mtu = 9000
    
  2. openvswitch_agent.ini 文件中

    [ovs]
    bridge_mappings = provider1:eth1,provider2:eth2,provider3:eth3
    
  3. ml2_conf.ini 文件中

    [ml2]
    physical_network_mtus = provider2:4000,provider3:1500
    path_mtu = 9000
    

案例 3

某些底层物理网络架构包含一个用于使用 VXLAN 和 GRE 等协议的覆盖网络的唯一 Layer-2 网络。

例如,引用覆盖网络的 4000 字节 MTU 和其他网络的 9000 字节 MTU

  1. neutron.conf 文件中

    [DEFAULT]
    global_physnet_mtu = 9000
    
  2. ml2_conf.ini 文件中

    [ml2]
    path_mtu = 4000
    

    注意

    其他网络,包括提供程序网络和扁平或 VLAN 自助服务网络,假定 global_physnet_mtu 选项的值。

实例网络接口 (VIF)

DHCP 代理使用 IPv4 向实例提供适当的 MTU 值,而 L3 代理使用 IPv6 向实例提供适当的 MTU 值。IPv6 使用通过 L3 代理的 RA,因为 DHCP 代理仅支持 IPv4。使用 IPv4 和 IPv6 的实例应获得相同的 MTU 值,无论使用哪种方法。

注意

如果网络上的 MTU 值低于 1280,请在创建任何子网之前阅读 IPv6 配置指南 中列出的警告。

启用 VLAN 透明度的网络

对于启用 VLAN 透明度的网络,如果在来宾 VM 内部配置了额外的 VLAN 标签,则必须将 MTU 降低 4 字节,以便在数据包的标头中为额外的 VLAN 标签腾出空间。例如,如果网络的 MTU 设置为 1500,则应手动将来宾 VM 中接口配置的值设置为 1496 字节或更少。