最大伝送単位

Virtual Private Cloud(VPC)ネットワークのデフォルトの最大伝送単位(MTU)は 1,460 バイトです。ただし、MTU が異なる VPC ネットワークを構成できます。

MTU は、ネットワーク レイヤ プロトコルでサポートされる、ヘッダーとデータの両方を含めた最大パケットのサイズ(バイト単位)です。Google Cloud では、VPC ネットワークごとに MTU を構成できます。そのネットワークを使用する VM インターフェースも、その MTU を使用するように構成する必要があります。この MTU 値は、IP パケット(データグラム)のサイズを表します。イーサネット ヘッダーは含みません。

有効な MTU

VPC ネットワークにはデフォルトの MTU 1460 がありますが、MTU として 1500(標準イーサネット)、最大 8896(ジャンボ フレーム)、最小 1300 をサポートするように構成できます。

次の表に、VM が別の VM と通信する際に使用できる最大パケットサイズを示します。

宛先 VM のロケーション IP アドレスの種類 許可されるパケットサイズ
送信側の VM と同じ VPC ネットワークか、Google Cloud の内部 IP アドレスを使用する VPC ネットワーク ピアリングで接続されたピアリング済みの VPC ネットワーク。 IPv4 または IPv6(ルートまたは転送ルールを使用して到達可能な IP アドレスを含む)。 8896 両方の VM インターフェースの MTU がネットワークと同じで、送信側と受信側の VPC ネットワークが 8896 の MTU を使用している場合、TCP トラフィックと UDP トラフィックの両方がネットワーク MTU で送信されます。
受信側の VM が、送信側の VM よりも小さい MTU の VPC ネットワークにある場合。 内部 IPv4 または IPv6 1600
  • TCP: TCP 接続は TCP-MSS フィールドを使用して、TCP 接続を送信側と受信側の両方の VM の最小 MTU に制限します。

    VM が 1,600 バイトを超える TCP パケットを送信すると、Google Cloud はパケットをドロップし、宛先 VM の VPC ネットワークの MTU を含む ICMP Fragmentation-Needed メッセージを返します。ネットワーク MTU が 1,600 バイトより小さい場合は 1600 を返します。

  • UDP: VM が 1,600 バイトを超える IP データグラムを送信すると、Google Cloud はパケットをドロップし、宛先 VPC ネットワークの MTU を含む ICMP Fragmentation-Needed メッセージを返します。ネットワーク MTU が 1,600 バイトより小さい場合は 1600 を返します。

インターネット

別の VM の外部 IP アドレス

外部 IPv4 または IPv6 1500。ただし、最大 1,600 バイトまでのパケットはドロップされません。
  • TCP: VM が MSS を含む TCP SYN または SYN ACK パケットを送信し、データグラムのサイズが 1,500 バイトを超える場合、Google Cloud は、データグラムのサイズが 1500 になるように MSS 値を書き換えて MSS クランプを行います。

    VM が 1,600 バイトを超える TCP パケットを送信すると、Google Cloud はパケットをドロップし、1500 のインターネット宛先の MTU を含む ICMP Fragmentation-Needed メッセージを返します。

  • UDP: VM が 1,600 バイトを超える IP データグラムを送信すると、Google Cloud はパケットをドロップし、1500 のインターネット宛先の MTU を含む ICMP Fragmentation-Needed メッセージを返します。
Cloud VPN に接続されたオンプレミス環境 内部 1460 Cloud VPN での MTU の違いをご覧ください。
Cloud Interconnect に接続されたオンプレミス環境 内部 1440 または 1500 Cloud Interconnect での MTU の違いをご覧ください。

MTU を超えるパケットの処理

MTU は、UDP トラフィックと TCP トラフィックの両方に影響します。

  • すべての IP プロトコル: Don't-Fragment(DF)ビットが設定されている場合、IP パケットが宛先パスにあるリンクの MTU を超えると、パケットがドロップされます。また、リンクが Google Cloud 内にある場合は、DF ビットが設定されていなくてもパケットがドロップされます。パケットがドロップされると、リンクで受け入れ可能な MTU を示すタイプ 3 コード 4 Fragmentation-Needed の ICMP パケットが送信側に返されます。パス検出の詳細については、パス MTU 検出(PMTUD)をご覧ください。
  • TCP: 接続の確立中に、両方のシステムが独自の最大接続セグメント サイズ(MSS)をアドバタイズします。MSS は、TCP ヘッダーと IP ヘッダーを除いて、システムが TCP セグメントで受け入れる最大データ量を表します。MSS + TCP ヘッダー(20~60 バイト)と IP ヘッダー(20 バイト)は、ネットワーク パスの MTU 以下でなければなりません。VPC ネットワークは IP の断片化をサポートしていないため、送信側は TCP セグメントを MTU に適した MSS 以下になるように適切にサイズ調整する必要があります。一部のネットワーク パスでは、Google Cloud は MSS クランプを実行します。これにより、送信者のアドバタイズされた SYN パケットの MSS 値、または受信者のアドバタイズされた SYN-ACK パケットの MSS 値が低くなります。

VM と MTU の設定

Google 提供の OS イメージに基づく Linux VM の場合、その作成時に VPC ネットワークの MTU がインターフェースの MTU に自動的に設定されます。VM に複数のネットワーク インターフェースがある場合、接続されたネットワークの MTU が各インターフェースに設定されます。VM を実行している VPC の MTU を変更する場合は、VM を停止して再起動し、新しい MTU を取得する必要があります。VM が再起動すると、変更されたネットワーク MTU が DHCP から通知されます。DHCP オプション 26 にネットワークの MTU が含まれます。

Windows VM のインターフェースは、起動時に VPC ネットワークの MTU を使用するように自動的に構成されません。代わりに、Google 提供の OS イメージに基づく Windows VM には固定の MTU 1460 が構成されています。Google 提供の OS イメージに基づく Windows VM が存在する VPC ネットワークの MTU を変更する場合は、Windows VM の MTU 設定を変更する必要があります。

カスタム イメージを使用する VM で MTU 設定を確認します。VPC ネットワークの MTU が優先される可能性もありますが、MTU が固定値に設定されている可能性もあります。

手順については、VPC ネットワークの MTU 設定を変更するをご覧ください。

GKE と MTU の設定

Pod インターフェースに選択される MTU は、クラスタノードで使用される Container Network Interface(CNI)と、基盤となる VPC MTU の設定によって異なります。詳細については、Pod をご覧ください。

Pod インターフェースの MTU 値は 1460 か、ノードのプライマリ インターフェースから継承されます。

CNI MTU GKE Standard
kubenet 1460 デフォルト
kubenet
(GKE バージョン 1.26.1 以降)
継承 デフォルト
Calico 1460

--enable-network-policy を使用して有効にします。

詳細については、ネットワーク ポリシーを使用して Pod と Service 間の通信を制御するをご覧ください。

netd 継承 次のいずれかを使用して有効にします。
GKE Dataplane V2 継承

--enable-dataplane-v2 を使用して有効にします。

詳細については、GKE Dataplane V2 の使用をご覧ください。

MTU の不一致

MTU の不一致は、通信を行う 2 つの VM で MTU の設定が異なる状態を意味します。これにより、接続の問題が発生することがあります。インスタンスをルーターとして使用し、VM 内で Kubernetes を使用しているケースもあります。

ほとんどの場合、異なる MTU のインスタンス間の TCP 接続は、MSS ネゴシエーションによって成功しますが、その場合、接続の両端で低いほうの MTU が使用されます。

これは、2 つの VM が同じネットワークかピアリングされたネットワークかに関係なく適用されます。

Cloud VPN での MTU の違い

Cloud VPN では常に 1,460 バイトの MTU が使用されます。トンネルの片側の VM とネットワークで MTU が高い場合、Google Cloud は MSS クランプを使用して TCP MTU を 1,460 に減らします。

VM が、構成で処理可能なサイズを超える TCP または UDP パケットを送信すると、Google Cloud はパケットをドロップし、PMTUD を有効にするために ICMP エラー メッセージを送信して UDP パケットの MTU を低く設定します。

Cloud VPN と MTU の詳細については、トンネル MTUMTU に関する考慮事項をご覧ください。

Cloud Interconnect での MTU の違い

Cloud Interconnect の MTU には 1440 または 1500 を指定できます。

通信する VM の MTU が 1460 より高く、VLAN アタッチメントの MTU が 1440 の場合は、MSS クランプにより TCP 接続の MTU が 1440 に設定され、TCP トラフィックが送信されます。

MSS クランプは UDP パケットに影響しないため、VPC ネットワークの MTU が 1460 より高く、VLAN アタッチメントの MTU が 1440 の場合、1,412 バイトを超える UDP データグラム(1,412 バイトの UDP データ + 8 バイトの UDP ヘッダー + 20 バイトの IPv4 ヘッダー = 1,440 バイト)はドロップされます。その場合、次のいずれかを行います。

  • 接続された VPC ネットワークの MTU を 1460 に下げる。
  • 小さい UDP パケットを送信するようにアプリケーションを調整する。
  • VPC ネットワークの MTU が 1500 の場合、既存の VLAN アタッチメントの MTU を変更するか(1,500 バイトに変更)、MTU が 1,500 バイトの新しい VLAN アタッチメントを作成できます。

Cloud Interconnect と MTU の詳細については、Cloud Interconnect MTU をご覧ください。

次のステップ

使ってみる

Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの VPC のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。

VPC 無料トライアル