複数のネットワーク インターフェース

このページでは、Compute Engine VM インスタンスの複数のネットワーク インターフェースの概要について説明します。複数のネットワーク インターフェースを持つインスタンスは、マルチ NIC インスタンスと呼ばれます。

インスタンスには、常に少なくとも 1 つの仮想ネットワーク インターフェース(vNIC)があります。マシンタイプによっては、追加のネットワーク インターフェースを構成できます。

ユースケース

マルチ NIC インスタンスは、次のようなシナリオで役立ちます。

  • 別々の VPC ネットワーク内のリソースに接続する: マルチ NIC インスタンスは、VPC ネットワーク ピアリングまたは Network Connectivity Center を介して相互に接続されていない、異なる VPC ネットワークにあるリソースに接続できます。

    • マルチ NIC インスタンスの各インターフェースは個別の VPC ネットワークにあるため、各インターフェースを固有の目的に使用できます。たとえば、一部のインターフェースを、本番環境トラフィックを伝送する VPC ネットワーク間でのパケット ルーティングに使用し、別のインターフェースを管理または構成に使用できます。

    • 各マルチ NIC インスタンスのゲスト OS 内で、ルートポリシーとローカル ルートテーブルを構成する必要があります。

  • VPC ネットワーク間のパケット ルーティング: マルチ NIC インスタンスは、2 つ以上の VPC ネットワークを接続するルートのネクストホップとして使用できます。

    • マルチ NIC インスタンスのゲスト OS 内で実行されているソフトウェアは、パケット検査、ネットワーク アドレス変換(NAT)、その他のネットワーク セキュリティ機能を実行できます。

    • マルチ NIC インスタンスを使用して VPC ネットワークを接続する場合は、2 つ以上のマルチ NIC インスタンスを構成し、各 VPC ネットワークの内部パススルー ネットワーク ロードバランサのバックエンドとして使用することをおすすめします。詳細については、ネクストホップとしての内部パススルー ネットワーク ロードバランサのドキュメントでユースケースをご覧ください。

Private Service Connect インターフェースを備えたマルチ NIC インスタンスを使用して、異なるプロジェクトのサービス プロデューサー ネットワークとコンシューマー ネットワークを接続することもできます。

ネットワーク インターフェースのタイプ

Google Cloud は、次のタイプのネットワーク インターフェースをサポートしています。

  • vNIC: Compute Engine インスタンスの仮想ネットワーク インターフェース。各インスタンスには、少なくとも 1 つの vNIC が必要です。通常の VPC ネットワークの vNIC は、GVNICVIRTIO_NETIDPF のいずれかになります。vNIC を構成できるのは、インスタンスの作成時のみです。

  • Dynamic NIC: 親 vNIC の子インターフェース。Dynamic NIC は、インスタンスの作成時に構成することも、後で追加することもできます。詳細については、Dynamic NIC をご覧ください。

RDMA ネットワーク インターフェース(IRDMA または MRDMA)を含むマシンタイプを使用してマルチ NIC インスタンスを構成することもできます。この場合、RDMA ネットワーク プロファイルを持つ VPC ネットワークに接続する必要があります。RDMA ネットワーク プロファイルを持つ VPC ネットワークでは、Dynamic NIC などの他のネットワーク インターフェース タイプはサポートされていません。

仕様

複数のネットワーク インターフェースを持つインスタンスには、次の仕様が適用されます。

  • インスタンスとネットワーク インターフェース: すべてのインスタンスに nic0 インターフェースがあります。ネットワーク インターフェースの最大数は、インスタンスのマシンタイプによって異なります。

    • 各インターフェースにはスタックタイプが関連付けられています。このスタックタイプによって、サポートされるサブネット スタックタイプと IP アドレスのバージョンが決まります。詳細については、スタックタイプと IP アドレスをご覧ください。
  • 各ネットワーク インターフェースに一意のネットワーク: RDMA ネットワーク プロファイルを使用して作成された VPC ネットワークを除き、各ネットワーク インターフェースは一意の VPC ネットワーク内のサブネットを使用する必要があります。

    • RDMA ネットワーク プロファイルを使用して作成された VPC ネットワークの場合、各 RDMA NIC が一意のサブネットを使用している限り、複数の RDMA NIC で同じ VPC ネットワークを使用できます。

    • ネットワーク インターフェースでネットワークとサブネットを使用するインスタンスを作成するには、VPC ネットワークとサブネットが存在している必要があります。ネットワークとサブネットの作成の詳細については、VPC ネットワークの作成と管理をご覧ください。

  • インスタンスとサブネットのプロジェクト: スタンドアロン プロジェクトのマルチ NIC インスタンスの場合、各ネットワーク インターフェースでは、インスタンスと同じプロジェクトにあるサブネットを使用する必要があります。

  • IP 転送、MTU、ルーティングに関する考慮事項: マルチ NIC インスタンスでは、次のインスタンスとインターフェース固有の構成オプションを慎重に計画する必要があります。

    • IP 転送オプションはインスタンスごとに構成可能で、すべてのネットワーク インターフェースに適用されます。詳細については、インスタンスの IP 転送を有効にするをご覧ください。

    • 各ネットワーク インターフェースは、関連付けられた VPC ネットワークの MTU に一致する一意の最大伝送単位(MTU)を使用できます。詳細については、最大伝送単位をご覧ください。

    • 各インスタンスは、RFC 3442 で定義されている DHCP オプション 121 を使用してデフォルト ルートを受け取ります。デフォルト ルートは nic0 に関連付けられています。インスタンスから送信されるトラフィックは、宛先が直接接続されているサブネット以外の場合、手動で別途構成しない限り nic0 のデフォルト ルートを経由します。

      Linux システムでは、/etc/iproute2/rt_tables ファイルと ip rule および ip route コマンドを使用して、ゲスト OS 内でカスタムルールとカスタムルートを構成できます。詳細については、ゲスト OS のドキュメントをご覧ください。例については、追加のインターフェースのルーティングを構成するチュートリアルをご覧ください。

Dynamic NIC

ユースケースで次のいずれかが必要な場合は、Dynamic NIC を使用します。Dynamic NIC のプロパティ制限事項も確認してください。

  • 既存のインスタンスにネットワーク インターフェースを追加するか、既存のインスタンスからネットワーク インターフェースを削除する必要がある。Dynamic NIC の追加または削除に、インスタンスの再起動や再作成は必要ありません。

  • ネットワーク インターフェースがさらに必要。 Google Cloud のほとんどのマシンタイプで、vNIC の最大数は 10 です。ただし、Dynamic NIC を使用すると、最大 16 個のインターフェースを構成できます。詳細については、ネットワーク インターフェースの最大数をご覧ください。

  • vNIC が 1 つしかないマルチ NIC Compute Engine ベアメタル インスタンスを構成する必要がある。

Dynamic NIC のプロパティ

Dynamic NIC のプロパティについては、次の情報をご覧ください。

  • Dynamic NIC は、IEEE 802.1Q 標準パケット形式を使用する VLAN インターフェースです。次の考慮事項をご覧ください。

    • Dynamic NIC の VLAN ID は、2~255 の整数にする必要があります。
    • Dynamic NIC の VLAN ID は、親 vNIC 内で一意である必要があります。ただし、異なる親 vNIC に属する Dynamic NIC では同じ VLAN ID を使用できます。
  • Google Cloud では、Dynamic NIC の名前として nicNUMBER.VLAN_ID という形式が使用されます。ここで

    • nicNUMBER は、親 vNIC の名前です(例: nic0)。
    • VLAN_ID は、設定した VLAN ID です(4 など)。

    たとえば、Dynamic NIC の名前は nic0.4 のようになります。

  • Dynamic NIC を使用してインスタンスを作成するか、既存のインスタンスに Dynamic NIC を追加するには、ゲスト OS で対応する VLAN インターフェースをインストールして管理するための追加の手順が必要です。次のいずれかの方法を使用できます。

    • ゲスト エージェントを使用して、Dynamic NIC の自動管理を構成します。

    • ゲスト OS を手動で構成します。

    詳細については、Dynamic NIC 用にゲスト OS を構成するをご覧ください。

  • Dynamic NIC は、親 vNIC の帯域幅を共有します。ネットワーク インターフェースが帯域幅をすべて消費しないようにするには、ゲスト OS でアプリケーション固有のトラフィック ポリシーを作成して、Linux Traffic Control(TC)などの方法でトラフィックの優先順位付けや分散を行う必要があります。

  • Dynamic NIC は、親 vNIC と同じ受信キューと送信キューを共有します。異なる受信キューと送信キューを使用するようにネットワーク インターフェースを構成するには、Dynamic NIC ではなく vNIC を使用します。

  • Dynamic NIC のスタックタイプは、親 vNIC と同じでも、異なっていてもかまいません。たとえば、IPv4 専用の親 vNIC の下に IPv6 専用とデュアルスタックの Dynamic NIC を作成できます。

Dynamic NIC の制限事項

Dynamic NIC には次の制限があります。

スタックタイプと IP アドレス

ネットワーク インターフェースを作成するときに、次のいずれかのインターフェース スタックタイプを指定します。

  • IPv4 のみ
  • デュアルスタック
  • IPv6 のみ

VM インスタンスには、スタックタイプが異なるネットワーク インターフェースを設定できます。

次の表に、サポートされているサブネット スタックタイプと、各インターフェース スタックタイプの IP アドレスの詳細を示します。

インターフェース IPv4 のみのサブネット デュアルスタック サブネット IPv6 のみのサブネット IP アドレスの詳細
IPv4 のみ(シングル スタック) IPv4 アドレスのみ。IPv4 アドレスの詳細をご覧ください。
IPv4 と IPv6(デュアル スタック) IPv4 アドレスと IPv6 アドレスの両方。IPv4 アドレスの詳細IPv6 アドレスの詳細をご覧ください。
IPv6 のみ(シングル スタック) IPv6 アドレスのみ。IPv6 アドレスの詳細をご覧ください。

ネットワーク インターフェースのスタックタイプの変更

ネットワーク インターフェースのスタックタイプを変更するには、次の操作を行います。

  • インターフェースのサブネットがデュアルスタック サブネットの場合、またはインスタンスを停止してインターフェースをデュアルスタック サブネットに割り当てる場合は、IPv4 のみのインターフェースをデュアルスタックに変換できます。

  • デュアルスタック インターフェースは IPv4 のみに変換できます。

IPv6 のみのインターフェースのスタックタイプは変更できません。IPv6 のみのインターフェースの場合、スタックタイプはインスタンスの作成時にのみ設定できます。

IPv4 アドレスの詳細

IPv4 のみまたはデュアルスタックの各ネットワーク インターフェースには、プライマリ内部 IPv4 アドレスが割り当てられます。各インターフェースは、必要に応じてエイリアス IP 範囲と外部 IPv4 アドレスをサポートします。IPv4 の仕様と要件は次のとおりです。

  • プライマリ内部 IPv4 アドレス: Compute Engine は、インターフェースのサブネットのプライマリ IPv4 アドレス範囲から、ネットワーク インターフェースにプライマリ内部 IPv4 アドレスを割り当てます。プライマリ内部 IPv4 アドレスは DHCP によって割り振られます。

    • 割り当てられるプライマリ内部 IPv4 アドレスを制御するには、静的内部 IPv4 アドレスを構成するか、カスタム エフェメラル内部 IPv4 アドレスを指定します。

    • VPC ネットワーク内では、各 VM ネットワーク インターフェースのプライマリ内部 IPv4 アドレスは一意です。

  • エイリアス IP 範囲: 必要に応じて、インターフェースに 1 つ以上のエイリアス IP 範囲を割り当てることができます。各エイリアス IP 範囲は、インターフェースのサブネットのプライマリ IPv4 アドレス範囲またはセカンダリ IPv4 アドレス範囲のいずれかから取得できます。

    • VPC ネットワーク内では、各インターフェースのエイリアス IP 範囲は一意である必要があります。
  • 外部 IPv4 アドレス: 必要に応じて、インターフェースにエフェメラルまたは予約済みの外部 IPv4 アドレスを割り当てることができます。 Google Cloud は、各外部 IPv4 アドレスの一意性を保証します。

IPv6 アドレスの詳細

Compute Engine は、デュアルスタックまたは IPv6 のみの各ネットワーク インターフェースに、インターフェースのサブネットの /96 IPv6 アドレス範囲から /64 IPv6 アドレス範囲を割り当てます。

  • /96 IPv6 アドレス範囲が内部か外部かは、インターフェースのサブネットの IPv6 アクセスタイプによって決まります。 Google Cloud は、内部と外部の各 IPv6 アドレス範囲の一意性を保証します。詳細については、IPv6 の仕様をご覧ください。

    • インスタンスに内部 IPv6 アドレス範囲と外部 IPv6 アドレス範囲の両方が必要な場合: 2 つのデュアルスタック インターフェース、2 つの IPv6 のみのインターフェース、または 1 つのデュアルスタック インターフェースと 1 つの IPv6 のみのインターフェースを構成する必要があります。1 つのインターフェースで使用されるサブネットには外部 IPv6 アドレス範囲が必要で、もう一方のインターフェースで使用されるサブネットには内部 IPv6 アドレス範囲が必要です。
  • 最初の IPv6 アドレス(/128)は、DHCP によってインターフェースに構成されます。詳細については、IPv6 アドレスの割り当てをご覧ください。

  • 静的な内部または外部 IPv6 アドレス範囲を構成することで、割り当てられる /96 IPv6 アドレス範囲を制御できます。内部 IPv6 アドレスの場合は、カスタム エフェメラル内部 IPv6 アドレスを指定できます。

IPv6 アドレスを使用してインスタンスを複数のネットワークに接続する場合は、google-guest-agent バージョン 20220603.00 以降をインストールします。詳細については、セカンダリ インターフェースの IPv6 アドレスに接続できないをご覧ください。

ネットワーク インターフェースの最大数

ほとんどのマシンタイプでは、インスタンスに接続可能なネットワーク インターフェースの最大数は、次の表に示すように、vCPU の数に応じてスケーリングされます。

マシン固有の例外は次のとおりです。

  • Compute Engine ベアメタル インスタンスは、単一の vNIC をサポートします。

  • A3、A4、A4X などの一部のアクセラレータ最適化マシンタイプでは、vNIC の最大数が異なります。詳細については、アクセラレータ最適化マシン ファミリーをご覧ください。

インターフェースの最大数

次の表を使用して、インスタンスに接続できるネットワーク インターフェース数を判断してください。

vCPU 数 vNIC の最大数 Dynamic NIC の最大数 ネットワーク インターフェースの最大数
(vNIC + Dynamic NIC)
2 以下 2 1 2
4 4 3 4
6 6 5 6
8 8 7 8
10 10 9 10
12 10 10 11
14 10 11 12
16 10 12 13
18 10 13 14
20 10 14 15
22 以上 10 15 16

参照数式

次の表に、インスタンスのネットワーク インターフェースの最大数を計算するために使用される式を示します。この式は vCPU の数によって異なります。

vCPU 数(X) vNIC の最大数 Dynamic NIC の最大数 ネットワーク インターフェースの最大数
(vNIC + Dynamic NIC)
X=1 2 1 2
2 ≤ X ≤ 10 X (X-1) X