第9章 MTU の設定

9.1. MTU の概要

Red Hat OpenStack Platform 9 (Mitaka) では、OpenStack Networking は、インスタンスに安全に適用することができる許容最大 MTU サイズの計算が可能です。MTU の値は、単一のネットワークパケットで転送できる最大データ量を指定します。この数は、アプリケーションに最も適したサイズによって変わります。たとえば、NFS 共有で必要な MTU サイズは VoIP アプリケーションで必要なサイズとは異なる場合があります。

注記

Red Hat OpenStack Platform 9 (Mitaka) では、OpenStack Networking が最大許容 MTU 値を計算することが可能です。この値は、neutron net-show コマンドで表示することができます。必要な MTU 値は、インスタンスがサポートしている場合には自動設定のために DHCPv4 クライアントに広告されます。

MTU 設定を正しく機能させるにはエンドツーエンドで一貫して設定する必要があります。つまり、MTU 設定は、仮想マシン自体、仮想ネットワークのインフラストラクチャー、物理ネットワーク、宛先のサーバー自体など、パケットがパススルーするすべてのポイントで同じサイズに指定する必要があります。

たとえば、以下の図の赤の点は、インスタンスと物理サーバーの間のトラフィックに合わせて MTU 値を調節する必要があるポイントを示しています。ネットワークトラフィックを処理するインターフェースの MTU 値はすべて、特定の MTU サイズのパケットに対応するように変更する必要があります。トラフィックが 192.168.200.15 から物理サーバー 10.20.15.25 に伝送されることが想定され、その過程に断片化が発生するのを防ぐには、この変更が必要です。

MTU settings

MTU 値に一貫性がないと、ネットワークに複数の問題が発生します。最も一般的な問題は、ネットワークのパフォーマンスが低下することです。このような問題は、各ネットワークポイントを特定してから、正しい MTU 値が設定されていることを検証する必要があるため、トラブルシューティングが困難です。

9.1.1. MTU 広告の設定

MTU 広告により、自動化された DHCP 設定のレルムに MTU 設定が移動されるため、MTU 設定プロセスが簡素化されます。その結果、DHCPv4 を使用してインスタンスに最適な MTU サイズが通知されます。/etc/neutron/neutron.conf で MTU 広告を有効にします。

advertise_mtu = True

True に設定されている場合は、DHCPv4を使用してテナントネットワークに設定されている MTU オプションについてインスタンスに通知します。

注記

すべての DHCPv4 クライアントが MTU 値の自動設定をサポートしているわけではありません。

9.1.2. テナントネットワークの設定

Red Hat OpenStack Platform 9 director では、ネットワーク環境ファイルで単一のパラメーターを使用して全テナントネットワークのデフォルト MTU を定義することができます。これにより、設定を物理 MTU とより簡単に合わせることができます。

  • NeutronTenantMtu: 仮想イーサネットデバイスの MTU サイズを設定します。VXLAN/GRE トンネリングを使用している場合には、この値は物理ネットワークで設定している MTU よりも少なくとも 50 バイト小さくすべきです。デフォルト値は 1400 です。
9.1.3. director での MTU の設定

以下の例では、NIC 設定テンプレートを使用した MTU の設定方法について説明します。MTU は、ブリッジ、ボンディング (該当する場合)、インターフェース、VLAN で設定する必要があります。

            -
              type: ovs_bridge
              name: br-isolated
              use_dhcp: false
              mtu: 9000    # <--- Set MTU
              members:
                -
                  type: ovs_bond
                  name: bond1
                  mtu: 9000    # <--- Set MTU
                  ovs_options: {get_param: BondInterfaceOvsOptions}
                  members:
                    -
                      type: interface
                      name: ens15f0
                      mtu: 9000    # <--- Set MTU
                      primary: true
                    -
                      type: interface
                      name: enp131s0f0
                      mtu: 9000    # <--- Set MTU
                -
                  type: vlan
                  device: bond1
                  vlan_id: {get_param: InternalApiNetworkVlanID}
                  mtu: 9000    # <--- Set MTU
                  addresses:
                  -
                    ip_netmask: {get_param: InternalApiIpSubnet}
                -
                  type: vlan
                  device: bond1
                  mtu: 9000    # <--- Set MTU
                  vlan_id: {get_param: TenantNetworkVlanID}
                  addresses:
                  -
                    ip_netmask: {get_param: TenantIpSubnet}
9.1.4. MTU 計算の確認

計算された MTU 値を確認します。これは、インスタンスが使用可能な MTU の最大許容値を計算した結果です。次に、ネットワークトラフィックの経路で関連する全インターフェースにこの値を設定して先に進むことができます。

# neutron net-show <network>
注記

現在は、インスタンス内の MTU 値を 1500 バイト未満 (例: 1450 バイト) に低減することを推奨します。このように値を小さくするのは、Open vSwitch がルーティング目的でさらにヘッダーを追加するためです。