第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 値に一貫性がないと、ネットワークに複数の問題が発生します。最も一般的な問題は、ネットワークのパフォーマンスが低下することです。このような問題は、各ネットワークポイントを特定してから、正しい 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 がルーティング目的でさらにヘッダーを追加するためです。
Comments