ネットワーク帯域幅 (original) (raw)


Google Cloud では、仮想ネットワーク インターフェース(vNIC)や IP アドレスごとではなく、コンピューティング インスタンスごとの帯域幅が考慮されます。インスタンスのマシンタイプで最大限可能な下り(外向き)レートが定義されていますが、そのレートに達するのは特定の状況に限られます。

このページでは、デプロイ計画に役立つネットワーク帯域幅の上限について説明します。帯域幅は、次の 2 つの基準で分類されます。

仮想ネットワーク インターフェース(vNIC)や vNIC あたりの IP アドレスを追加しても、コンピューティング インスタンスの上り(内向き)または下り(外向き)の帯域幅は増加しません。たとえば、22 個の vCPU を備えた C3 VM では、下り(外向き)帯域幅の合計が 23 Gbps に制限されます。2 個の vNIC を使用して C3 VM を構成しても、VM の下り(外向き)帯域幅は vNIC あたり 23 Gbps ではなく、合計で 23 Gbps に制限されます。

上り(内向き)と下り(外向き)の帯域幅を最大限に確保するには、コンピューティング インスタンスの VM ごとの Tier_1 ネットワーキング パフォーマンスを構成します

このページの説明は、Compute Engine コンピューティング インスタンスと、Compute Engine インスタンスに依存するプロダクトを対象としています。たとえば、Google Kubernetes Engine ノードは Compute Engine インスタンスです。

帯域幅の概要

次の表に、パケットがコンピューティング インスタンスから送信される(下り)か、あるいはインスタンスで受信する(上り)かと、パケット ルーティングの方法に基づいて、可能な最大帯域幅を示します。

下り(外向き)帯域幅の上限

VPC ネットワーク内のルーティング 主に送信側インスタンスのマシンタイプと、Tier_1 ネットワーキングが有効にされているかどうかに基づき、インスタンスあたりの最大下り(外向き)帯域幅により定義されています。 Tier_1 ネットワーキングを備えた N2、N2D、C2、C2D、C4A VM では、最大 100 Gbps の下り(外向き)帯域幅の上限がサポートされます。 H3 VM では、最大 200 Gbps の VM 間下り(外向き)帯域幅の上限がサポートされます。 X4、A2、G2 インスタンスでは、最大 100 Gbps の下り(外向き)帯域幅の上限がサポートされます。 A4 インスタンスと A3 インスタンスでは、最大 3,600 Gbps の下り(外向き)帯域幅の上限がサポートされます。 Tier_1 ネットワーキング対応の M4、C4、C4D、C3、C3D、Z3 インスタンスでは、最大 200 Gbps の下り(外向き)帯域幅の上限がサポートされます。 その他の要因、定義、シナリオについては、VPC ネットワーク内でルーティング可能な宛先への下り(外向き)をご覧ください。
VPC ネットワーク外のルーティング 主に送信側インスタンスのマシンタイプと、Tier_1 ネットワーキングが有効にされているかどうかに基づき、インスタンスあたりの最大下り(外向き)帯域幅により定義されています。H3 VM を除き、VPC ネットワーク外の宛先への送信側インスタンスの最大限可能な下り(外向き)帯域幅には、次の上限が適用されます。 Tier_1 ネットワーキングが有効でない場合は合計 7 Gbps Tier_1 ネットワーキングが有効な場合は合計 25 Gbps フローごとに 3 Gbps その他の要因、定義、注意点については、VPC ネットワーク外の宛先への下り(外向き)をご覧ください。

上り(内向き)帯域幅の上限

VPC ネットワーク内のルーティング 通常、上り(内向き)レートは、マシンタイプに応じた下り(外向き)レートと同様です。 上り(内向き)帯域幅を可能な限り大きくするには、Tier_1 ネットワーキングを有効にします。 コンピューティング インスタンスのサイズ、サーバー NIC の容量、同じホスト ハードウェア上で稼働している他のゲスト VM へのトラフィック、ゲスト OS のネットワーク構成、インスタンスが実行するディスク読み取り操作の数は、いずれも上り(内向き)レートに影響する可能性があります。 Google Cloud では、VPC ネットワーク内の上り(内向き)レートに対して追加の制限を設けていません。 その他の要因、定義、シナリオについては、VPC ネットワーク内でルーティング可能な宛先への上り(内向き)をご覧ください。
VPC ネットワーク外のルーティング Google Cloud では、各コンピューティング インスタンスを保護するために、VPC ネットワーク外からルーティングされる上り(内向き)トラフィックを制限しています。トラフィック量は次のいずれかのレート(最初に到達した方)で制限されます。 1,800,000 pps(パケット/秒) 30 Gbps 複数の物理 NIC をサポートしているマシンシリーズ(A4、A3 など)では、トラフィック量が次のいずれかのレート(最初に到達した方)で制限されます。 物理 NIC あたり 1,800,000 pps(パケット/秒) 物理 NIC あたり 30 Gbps 他の要因、定義、シナリオについては、VPC ネットワーク外の宛先への上り(内向き)をご覧ください。

下り(外向き)帯域幅

Google Cloud では、インスタンスあたりの最大下り(外向き)レートを使用して、アウトバウンド(下り)帯域幅を制限しています。これらのレートは、パケットを送信するコンピューティング インスタンスのマシンタイプと、パケットの宛先にアクセスするためのルートが VPC ネットワーク内または VPC ネットワーク外のどちらにあるかに基づいています。アウトバウンド帯域幅には、インスタンスのすべての NIC から送信されたパケットと、インスタンスに接続されているすべての Hyperdisk および Persistent Disk ボリュームに転送されるデータが含まれます。

インスタンスあたりの最大下り(外向き)帯域幅

インスタンスあたりの最大下り(外向き)帯域幅は、通常は vCPU あたり 2 Gbps ですが、マシンシリーズによってはいくつかの違いと例外があります。次の表に、VPC ネットワーク内でルーティングされるトラフィックの最大下り(外向き)帯域幅の範囲を示します。これは VM あたりの Tier_1 ネットワーキングのパフォーマンスではなく、標準ネットワーキング ティアに限定されたトラフィック帯域幅に関するものです。

マシンシリーズ 標準のインスタンスあたりの最大下り(外向き)帯域幅の最小値 標準のインスタンスあたりの最大下り(外向き)の上限
C4、C4A、C4D 10 Gbps 100 Gbps
C3 23 Gbps 100 Gbps
C3D 20 Gbps 100 Gbps
C2 および C2D 10 Gbps 32 Gbps
E2 1 Gbps 16 Gbps
H3 該当なし 200 Gbps
M4 32 Gbps 100 Gbps
M3 と M1 32 Gbps 32 Gbps
M2 32 Gbps Intel Cascade Lake CPU プラットフォームでは 32 Gbps他の CPU プラットフォームでは 16 Gbps
N4 10 Gbps 50 Gbps
N2 および N2D 10 Gbps 32 Gbps
N1(vCPU が 1 個の VM を除く) 10 Gbps Intel Skylake CPU プラットフォームでは 32 GbpsIntel Skylake より前の CPU プラットフォームでは 16 Gbps
1 個の vCPU、f1-micro、g1-small を備えた N1 マシンタイプ 2 Gbps 2 Gbps
T2D 10 Gbps 32 Gbps
X4 該当なし 100 Gbps
Z3 23 Gbps 100 Gbps

すべてのマシンタイプのインスタンスあたりの最大下り(外向き)帯域幅の一覧は、次のそれぞれのマシン ファミリーのページで確認できます。

インスタンスあたりの最大下り(外向き)帯域幅は必ずしも保証されません。実際の下り(外向き)帯域幅は、たとえば次のようなさまざまな要因によって減少する可能性があります。

インスタンスあたりの最大限可能な下り(外向き)帯域幅をできるだけ大きくするには、次のようにします。

VPC ネットワーク内でルーティング可能な宛先への下り(外向き)

送信側インスタンスから見て VPC ネットワーク内にあるルートを使用してアクセス可能な宛先 IP アドレスについては、Google Cloud は次のルールを使用してアウトバウンド トラフィックを制限します。

VPC ネットワーク内でルーティング可能な宛先には、次の宛先のすべてが含まれます。これらの宛先には、送信側インスタンスから見て、ネクストホップがデフォルトのインターネット ゲートウェイではないルートによってアクセスできます。

次のリストは、最大限可能な帯域幅の値が最も大きいものから順に、送信側インスタンスから内部宛先へのトラフィックを並べたものです。

VPC ネットワーク外の宛先への下り(外向き)

送信側インスタンスから見て VPC ネットワーク外にある宛先 IP アドレスについては、 Google Cloud はアウトバウンド トラフィックを次のレート(最初に到達した方)で制限します。

VPC ネットワークの外部にある宛先には、次の宛先のすべてが含まれます。これらの宛先には、ネクストホップがデフォルトのインターネット ゲートウェイとなっている、送信側インスタンスの VPC ネットワーク内のルートでアクセスできます。

どの Google Cloud リソースがどのタイプの外部 IP アドレスを使用するかについて詳しくは、外部 IP アドレスをご覧ください。

上り(内向き)帯域幅

Google Cloud は、受信パケットが受信側コンピューティング インスタンスにルーティングされる方法に応じて、インバウンド(上り)帯域幅を処理します。

VPC ネットワーク内でルーティング可能な宛先への上り(内向き)

受信側インスタンスでは、そのマシンタイプ、オペレーティング システム、その他のネットワーク条件で許容される数だけのパケットを処理できます。 Google Cloud では、VPC ネットワーク内の次のルートを使用してインスタンスに配信される受信パケットに対し、帯域幅の制限を設けていません。

VPC ネットワーク内でルーティングされるパケットの宛先は次のとおりです。

VPC ネットワーク外の宛先への上り(内向き)

Google Cloud では、VPC ネットワーク外のルートを使用して受信側インスタンスに配信される受信パケットに対して、次の帯域幅制限を適用します。ロード バランシングが伴う場合、帯域幅の上限は受信側インスタンスのそれぞれに個別に適用されます。

複数の物理 NIC をサポートしていないマシンシリーズの場合、該当するインバウンド帯域幅の制限は、すべての仮想ネットワーク インターフェース(VNIC)での合計として適用されます。トラフィック量は次のいずれかのレート(最初に到達した方)で制限されます。

複数の物理 NIC(A4、A3 など)をサポートするマシンシリーズの場合、該当するインバウンド帯域幅の制限は、各物理 NIC に個別に適用されます。トラフィック量は次のいずれかのレート(最初に到達した方)で制限されます。

VPC ネットワーク外のルートを使用してルーティングされるパケットの宛先は次のとおりです。

ジャンボ フレーム

ジャンボ フレームを送受信するには、コンピューティング インスタンスで使用する VPC ネットワークを構成する必要があります。この場合、最大伝送単位(MTU)をより大きい値(最大 8,896)に設定します。

MTU 値を大きくすると、パケットサイズが大きくなり、パケット ヘッダーのオーバーヘッドが減少するため、ペイロードのデータ スループットが向上します。

VM インスタンスでは gVNIC ドライバ バージョン 1.3 以降で、ベアメタル インスタンスでは IDPF ドライバで、ジャンボ フレームを使用できます。すべての Google Cloud 公開イメージに、これらのドライバが含まれているわけではありません。ジャンボ フレームのオペレーティング システムのサポートについて詳しくは、オペレーティング システムの詳細ページの [ネットワーク機能] タブをご覧ください。

ジャンボ フレームを完全にサポートしていない OS イメージを使用している場合は、gVNIC ドライバ バージョン v1.3.0 以降を手動でインストールできます。追加の機能とバグ修正を利用するには、Latest とマークされた gVNIC ドライバのバージョンをインストールすることをおすすめします。gVNIC ドライバは GitHub からダウンロードできます。

ゲスト OS で gVNIC ドライバのバージョンを手動で更新する方法については、サポートされていないオペレーティング システムでの使用をご覧ください。

受信キューと送信キュー

コンピューティング インスタンスの NIC または vNIC ごとに、ネットワークからのパケットを処理するための複数の受信キューと送信キューが割り当てられます。

デフォルト キューの割り当て

明示的に NIC のキュー数を割り当てていない限り、NIC ごとに固定数の RX キューと TX キューを割り当てる Google Cloud のアルゴリズムをモデル化できます。

ベアメタル インスタンス

ベアメタル インスタンスの場合、NIC は 1 つしかないため、キューの最大数は 16 になります。

gVNIC ネットワーク インターフェースを使用する VM インスタンス

C4 インスタンスの場合、パフォーマンスを向上させるため、次の構成では固定数のキューを使用します。

他のマシンシリーズの場合、キュー数は、マシンシリーズが Titanium を使用するかどうかによって異なります。

デフォルトのキュー数の計算を完了するには:

  1. 結果の数値が 1 未満の場合は、それぞれの vNIC に 1 個のキューが割り当てられます。
  2. 結果の数値が vNIC あたりの最大キュー数(16)より大きいかどうかを確認します。16 より大きい場合、計算結果は無視され、それぞれの vNIC に 16 個のキューが割り当てられます。

VirtIO ネットワーク インターフェースまたはカスタム ドライバを使用する VM インスタンス

vCPU の数を NIC の数で割り、余りを破棄します([number of vCPUs/number of vNICs])。

  1. 結果の数値が 1 未満の場合は、それぞれの vNIC に 1 個のキューが割り当てられます。
  2. 結果の数値が vNIC あたりの最大キュー数(32)より大きいかどうかを確認します。計算された数値が 32 より大きい場合、計算結果は無視され、それぞれの vNIC に 32 個のキューが割り当てられます。

次の例は、VM インスタンスのデフォルトのキュー数を計算する方法を示しています。

Linux システムでは、ethtool を使用して、 Google Cloud によって vNIC ごとに割り当てられるキューの数より少ない vNIC を構成できます。

VM インスタンスのカスタムキューの割り当て

デフォルトのキュー割り当てを使用する代わりに、新しいコンピューティング インスタンスの作成時に各 vNIC にカスタムのキュー数(RX と TX の合計)を割り当てるには、Compute Engine API を使用します。

指定するカスタムのキュー数は、次のルールに従っている必要があります。

vNIC のカスタムのキュー数はオーバーサブスクライブできます。つまり、VM インスタンスのすべての NIC に割り当てられたキュー数の合計は、インスタンスの vCPU 数を上回っていてもかまいません。カスタムのキュー数をオーバーサブスクライブするには、VM インスタンスが次の条件を満たしている必要があります。

キューのオーバーサブスクリプションにより、VM インスタンスの最大キュー数は NIC 数の 16 倍になります。つまり、30 個の vCPU を使用するインスタンスに 6 個の NIC が構成されている場合、そのインスタンスには最大 96(16 * 6)個のカスタムキューを構成できます。

また、一部の NIC にのみカスタムキュー数を割り当てて、Google Cloud が残りの NIC にキューを割り当てることもできます。vNIC ごとに割り当て可能なキューの数には、引き続き前述のルールが適用されます。構成の実現可能性をモデル化できます。構成が可能な場合は、このプロセスで Google Cloud が残りの vNIC に割り当てるキューの数も設定できます。

  1. カスタムのキュー割り当てを使用して、vNIC のキューの合計を計算します。20 個の vCPU と 6 個の vNIC を持つ VM を例にすると、nic0 に 5 つのキュー、nic1 に 6 つのキュー、nic2 に 4 つのキューを割り当て、 Google Cloudで nic3nic4nic5 のキューを割り当てるとします。この例では、カスタム割り当てキューの合計は 5+6+4 = 15 になります。
  2. vCPU の数からカスタム割り当てキューの合計を引きます。この差が、Google Cloud がキューを割り当てる残りの vNIC の数より小さい場合、各 vNIC に 1 つ以上のキューが必要になるため、 Google Cloud はエラーを返します。
    20 個の vCPU と合計 15 のカスタム割り当てキューを持つ VM の例では、 Google Cloud が残りの vNIC(nic3nic4nic5)に割り当てることができるキューは残り 20-15 = 5 個となります。
  3. 前の手順との整合性を取るため、この差を前の手順で残った vNIC の数で割り、余りの ⌊(number of vCPUs - sum of assigned queues)/(number of remaining vNICs)⌋ を破棄します。この計算の結果は常に小数ではなく、整数になります。 Google Cloud は、算出された数値が vNIC あたりの最大キュー数を超えない限り、残りの vNIC に、この数値と一致するキュー数を割り当てます。vNIC の最大キュー数はドライバの種類によって異なります。

カスタムキュー数を構成する

1 つ以上の NIC または vNIC にカスタムのキュー数を使用するコンピューティング インスタンスを作成するには、次の手順を実施します。

次のコードサンプルでは、ネットワーク インターフェース タイプが GVNIC に設定され、VM ごとの Tier_1 ネットワーキング パフォーマンスが有効な状態で VM が作成されます。これらのコード例を使用すると、サポートされているマシンタイプで使用可能な最大キュー数とキューのオーバーサブスクリプションを指定できます。

gcloud

  1. 構成する vNIC インターフェースごとに 1 つのサブネットを使用できる VPC ネットワークがまだない場合は、作成します。

  2. gcloud compute instances create コマンドを使用して、コンピューティング インスタンスを作成します。インスタンスに構成する vNIC ごとに --network-interface フラグを繰り返し、queue-count オプションを含めます。

    gcloud compute instances create INSTANCE_NAME
    --zone=ZONE
    --machine-type=MACHINE_TYPE
    --network-performance-configs=total-egress-bandwidth-tier=TIER_1
    --network-interface=network=NETWORK_NAME_1,subnet=SUBNET_1,nic-type=GVNIC,queue-count=QUEUE_SIZE_1
    --network-interface=network=NETWORK_NAME_2,subnet=SUBNET_2,nic-type=GVNIC,queue-count=QUEUE_SIZE_2

次のように置き換えます。

Terraform

  1. 構成する vNIC インターフェースごとに 1 つのサブネットを使用できる VPC ネットワークがまだない場合は、作成します。
  2. google_compute_instance リソースを使用して、vNIC の特定のキュー数を指定したコンピューティング インスタンスを作成します。コンピューティング インスタンスに構成する vNIC ごとに --network-interface パラメータを繰り返し、queue-count パラメータを含めます。

Queue oversubscription instance

resource "google_compute_instance" "VM_NAME" {
project = "PROJECT_ID"
boot_disk {
auto_delete = true
device_name = "DEVICE_NAME"
initialize_params {
image="IMAGE_NAME"
size = DISK_SIZE
type = "DISK_TYPE"
}
}
machine_type = "MACHINE_TYPE"
name = "VM_NAME"
zone = "ZONE"
network_performance_config {
total_egress_bandwidth_tier = "TIER_1"
}
network_interface {
nic_type = "GVNIC"
queue_count = QUEUE_COUNT_1
subnetwork_project = "PROJECT_ID"
subnetwork = "SUBNET_1"
}
network_interface {
nic_type = "GVNIC"
queue_count = QUEUE_COUNT_2
subnetwork_project = "PROJECT_ID"
subnetwork = "SUBNET_2"
}
network_interface {
nic_type = "GVNIC"
queue_count = QUEUE_COUNT_3
subnetwork_project = "PROJECT_ID"
subnetwork = "SUBNET_3""
}
network_interface {
nic_type = "GVNIC"
queue_count = QUEUE_COUNT_4
subnetwork_project = "PROJECT_ID"
subnetwork = "SUBNET_4""
}
}

次のように置き換えます。

REST

  1. 構成する vNIC インターフェースごとに 1 つのサブネットを使用できる VPC ネットワークがまだない場合は、作成します。
  2. instances.insert メソッドを使用して、NIC の特定のキュー数を指定したコンピューティング インスタンスを作成します。複数のネットワーク インターフェースを構成するには、networkInterfaces プロパティを繰り返します。
    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    "name": "VM_NAME",
    "machineType": "machineTypes/MACHINE_TYPE",
    "networkPerformanceConfig": {
    "totalEgressBandwidthTier": TIER_1
    },
    "networkInterfaces": [
    {
    "nicType": gVNIC,
    "subnetwork":"regions/region/subnetworks/SUBNET_1",
    "queueCount": "QUEUE_COUNT_1"
    } ],
    "networkInterfaces": [
    {
    "nicType": gVNIC,
    "subnetwork":"regions/region/subnetworks/SUBNET_2",
    "queueCount": "QUEUE_COUNT_2"
    } ],
    }
    次のように置き換えます。
    • PROJECT_ID: コンピューティング インスタンスの作成先とするプロジェクトの ID
    • ZONE: コンピューティング インスタンスの作成先とするゾーン
    • VM_NAME: 新しいコンピューティング インスタンスの名前
    • MACHINE_TYPE: 新しいコンピューティング インスタンスのマシンタイプ(事前定義またはカスタム)。キュー数をオーバーサブスクライブするには、指定するマシンタイプが gVNIC と Tier_1 ネットワーキングをサポートしている必要があります。
    • SUBNET_*: ネットワーク インターフェースが接続するサブネットの名前
    • QUEUE_COUNT: カスタムキューの割り当てで説明されているルールに従う vNIC のキュー数

キューの割り当てとマシンタイプの変更

作成されるコンピューティング インスタンスには、デフォルトのキュー割り当てが設定されます。または、Compute Engine API を使用して、新しい Compute インスタンスの作成時に各仮想ネットワーク インターフェース カード(vNIC)にカスタムのキュー数を割り当てることもできます。デフォルトまたはカスタムの vNIC キュー割り当てが設定されるのは、コンピューティング インスタンスの作成時のみです。インスタンスの vNIC でデフォルトのキュー数が使用されている場合、インスタンスのマシンタイプを変更できます。変更先のマシンタイプの vCPU 数が異なる場合は、インスタンスのデフォルトのキュー数が新しいマシンタイプに基づいて再計算されます。

VM にデフォルト以外のカスタムキュー数を使用する vNIC がある場合は、Google Cloud CLI または Compute Engine API を使用して、インスタンス プロパティを更新してマシンタイプを変更できます。結果として作成された VM が元のインスタンスと同じ vNIC ごとのキュー数をサポートしている場合、変換は成功します。VM で VirtIO-Net インターフェースが使用されていて、16 を超える vNIC あたりのカスタムキュー数が設定されている場合、こうしたインタンスは gVNIC のみを使用するため、マシンタイプを第 3 世代以降のマシンタイプに変更することはできません。代わりに、ワークロードを新しいコンピューティング インスタンスに移動するの手順に沿って、VM を第 3 世代以降のマシンタイプに移行できます。

次のステップ