第11章 MTU の設定
11.1. MTU の概要
OpenStack Networking は、インスタンスに安全に適用することができる許容最大 MTU サイズの計算が可能です。MTU の値は、単一のネットワークパケットで転送できる最大データ量を指定します。この数は、アプリケーションに最も適したサイズによって変わります。たとえば、NFS 共有で必要な MTU サイズは VoIP アプリケーションで必要なサイズとは異なる場合があります。
OpenStack Networking では、許容最大 MTU 値を計算して、neutron net-show
コマンドで表示することができます。net-mtu
は neutron API の拡張機能なので、一部の実装には含まれていない可能性があります。インスタンスがサポートしている場合には、必要な MTU 値を DHCPv4 クライアントに通知して自動設定を行うことが可能です。また、ルーター広告 (RA) パケットを使用して IPv6 クライアントに通知することも可能です。ルーター広告を送信するには、ネットワークがルーターに接続されている必要がある点に注意してください。
MTU 設定を正しく機能させるにはエンドツーエンドで一貫して設定する必要があります。つまり、MTU 設定は、仮想マシン自体、仮想ネットワークのインフラストラクチャー、物理ネットワーク、宛先のサーバー自体など、パケットが通過するすべてのポイントで同じサイズに指定する必要があります。
たとえば、以下の図の丸印は、インスタンスと物理サーバーの間のトラフィックに合わせて MTU 値を調節する必要があるポイントを示しています。ネットワークトラフィックを処理する全インターフェースの MTU 値は、特定の MTU サイズのパケットに対応するように変更する必要があります。トラフィックがインスタンス 192.168.200.15 から物理サーバー 10.20.15.25 に伝送されることが想定される場合には、この変更が必要です。
MTU 値に一貫性がないと、ネットワークにさまざまな問題が発生します。最も一般的な問題は、ランダムなパケットロスにより接続が中断して、ネットワークのパフォーマンスが低下することです。このような問題は、可能なすべてのネットワークポイントを特定してから、正しい MTU 値が設定されていることを検証する必要があるため、トラブルシューティングが困難です。
11.1.1. MTU 広告の設定
MTU 広告により、自動化された DHCP 設定や IPv6 RA 設定のレルムに MTU 設定が移動されるため、MTU 設定プロセスが簡素化されます。その結果、DHCPv4 または IPv6 RA を使用してインスタンスに最適な MTU サイズが広告されます。
MTU 広告は /etc/neutron/neutron.conf で有効にします。
advertise_mtu = True
このオプションは、Mitaka ではデフォルトで有効化されていますが、Newton では非推奨となり、今後のリリースでは削除される見込みです。このオプションを設定した場合には、テナントネットワークの設定済み MTU オプションが DHCPv4 および IPv6 RA を使用してインスタンスに広告されます。
すべての DHCPv4 クライアントが MTU 値の自動設定をサポートしている訳ではありません。
11.1.2. テナントネットワークの設定
Red Hat OpenStack Platform 10 director により、ネットワーク環境ファイルの 1 つのパラメーターを使用して、すべてのテナントネットワークのデフォルト MTU を定義することができます。これにより、設定を物理 MTU に容易に整合させることができます。
-
NeutronTenantMtu
: 物理ネットワークの機能を反映したベース MTU を設定します。neutron はこのベース値を使用して、管理するネットワークの MTU を計算します。たとえば、VLAN およびフラットネットワークでは、値はそのまま使用されますが、VXLAN および GRE ネットワークでは、トンネルヘッダーのオーバーヘッド分を確保するために値が低く抑えられます。VXLAN/GRE トンネリングを使用する場合、これは物理ネットワーク上で動作している MTU と同じでなければなりません。
11.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}
11.1.4. MTU 計算の確認
計算された MTU 値を確認します。これは、インスタンスが使用可能な MTU の最大許容値を計算した結果です。次に、ネットワークトラフィックの経路で関連する全インターフェースにこの値を設定して先に進むことができます。
# neutron net-show <network>