GENEVE 形式について
Generic Network Virtualization Encapsulation(GENEVE)は、元のパケットを追加のメタデータでカプセル化するネットワーク カプセル化プロトコルです。この追加のメタデータは、柔軟で拡張可能なネットワーク仮想化を実現するのに役立ちます。
次の図は、GENEVE パケットのヘッダー形式を示しています。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver| Opt len |O|C| Rsvd. | Protocol type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Virtual network identifier (VNI) | Rsvd. |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
次の表に、上の図に示されている GENEVE ヘッダー フィールドの説明を示します。
| フィールド | 説明 | フィールドの長さ |
|---|---|---|
| Ver | GENEVE プロトコルのバージョン。サポートされているバージョンは 0 のみです。詳しくは、トンネル ヘッダー フィールドをご覧ください。 | 2 ビット |
| Opt len | オプション フィールドの長さ。4 バイトの倍数で表されます。8 バイトの固定トンネル ヘッダーは含まれません。詳しくは、トンネル ヘッダー フィールドをご覧ください。 | 6 ビット |
| O | 制御パケット ビット。詳しくは、トンネル ヘッダー フィールドをご覧ください。 | 1 ビット |
| C | 重要なオプションのビット。詳しくは、トンネル ヘッダー フィールドをご覧ください。 | 1 ビット |
| Rsvd | 予約済みのフィールド。送信時は 0(ゼロ)にする必要があり、受信時は無視する必要があります。詳しくは、トンネル ヘッダー フィールドをご覧ください。 | 6 ビット |
| プロトコル タイプ | プロトコル タイプでは、イーサネット タイプとして IPv4(0x0800)または IPv6(0x86DD)を指定できます。 |
16 ビット |
| 仮想ネットワーク識別子(VNI) | 仮想ネットワーク要素の一意の識別子。VNI はゼロ(0)に設定されます。詳細については、GENEVE オプションをご覧ください。 | 24 ビット |
| Rsvd | 予約済みのフィールド。送信時は 0(ゼロ)にする必要があり、受信時は無視する必要があります。詳しくは、トンネル ヘッダー フィールドをご覧ください。 | 8 ビット |
ULL VPC ネットワークの Packet Mirroring の GENEVE オプション
GENEVE ヘッダーでは、オプションに Type-Length-Value(TLV)形式を使用します。各オプションは、型識別子、値のサイズを示す長さフィールド、値自体でエンコードされます。この形式は柔軟性と拡張性に優れており、既存の実装を中断することなく新しいオプションを追加できます。以降のセクションでは、各オプションについて説明します。オプションの数と順序は変更される可能性があるため、デバイス実装の前方互換性を確保するために、TLV フィールドに基づいて GENEVE ヘッダーを解析します。
ULL Packet Mirroring に固有の GENEVE オプションは次のとおりです。
- ネットワーク ID(ネットワーク Cookie)
- タイムスタンプ
- ネットワークの安定した ID
- プライマリ IP アドレス
ネットワーク ID
ネットワーク ID オプション(「ネットワーク Cookie」とも呼ばれます)は、ULL Packet Mirroring で GENEVE カプセル化されたトラフィックに関連付けられている仮想ネットワークを識別します。このオプションは、オプション クラス 0x0132(Google)とタイプ 0x1(ネットワーク ID)で識別されます。
ULL Packet Mirroring の場合、ネットワーク Cookie は 0 に設定されます。オプション データには 32 ビットが含まれます。最初の 31 ビットは予約済みで、最後のビットは元のパケットの方向を示します。
ULL Packet Mirroring は、変更されたバージョンのネットワーク ID オプションを使用します。このバージョンでは、方向ビットと予約ビットを除くすべてのビットが 0 に設定されます。キャプチャ ポイントの詳細については、ネットワークの安定した ID をご覧ください。
次の図は、GENEVE パケットのオプション形式を示しています。
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Class=0x0132 (Google) | Type=01 |R|R|R| Len=1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved |D|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
次の表に、上の図に示されているオプション フィールドの説明を示します。
| フィールド | 説明 | フィールドの長さ |
|---|---|---|
| Option クラス | オプションを定義した組織またはエンティティを識別します。値 0x0132 は、Google を定義エンティティとして指定します。 |
16 ビット |
| タイプ | クラス内のオプションのタイプを識別します。値 0x1 は、ネットワーク ID オプションを指定します。詳細については、トンネル オプションをご覧ください。 |
8 ビット |
| R | 将来の使用のために予約されたオプション制御フラグ。これらのビットは送信時にゼロ(0)でなければならず、受信時に無視されなければなりません。 | 3 ビット |
| LEN | オプションのペイロードの長さ(4 バイト単位)。ネットワーク ID ペイロードは 32 ビット(4 バイト)であるため、このオプションの長さは 1 に設定されます。 | 5 ビット |
| 予約済み | 送信時に 0 に設定する必要があり、受信時に無視する必要があります。 | 31 ビット |
| D | 元のパケットの方向を示します。0 は上り(内向き)を示し、1 は元のミラーリングされたリソースの下り(外向き)パケットを示します。 | 1 ビット |
タイムスタンプ
タイムスタンプ オプションは、キャプチャ ポイント(パケットがキャプチャまたはミラーリングされた Compute Engine インスタンス)での元のパケット キャプチャ時間を示します。このオプションは、オプション クラス 0x0132(Google)とタイプ 0x0f(タイムスタンプ)で識別されます。
次の図は、GENEVE パケットのオプション形式を示しています。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option class=0x0132 (Google) | Type=0x0f |R|R|R| Len=2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Timestamp +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
次の表に、上の図に示されているオプション フィールドの説明を示します。
| フィールド | 説明 | フィールドの長さ |
|---|---|---|
| Option クラス | オプションを定義した組織またはエンティティを識別します。値 0x0132 は、Google を定義エンティティとして指定します。 |
16 ビット |
| タイプ | クラス内のオプションのタイプを識別します。値 0x0f は、タイムスタンプ オプションを指定します。詳細については、トンネル オプションをご覧ください。 |
8 ビット |
| R | 将来の使用のために予約されたオプション制御フラグ。これらのビットは送信時にゼロ(0)でなければならず、受信時に無視されなければなりません。 | 3 ビット |
| LEN | オプションのペイロードの長さ(4 バイト単位)。タイムスタンプ ペイロードは 64 ビット(8 バイト)であるため、このオプションの長さは 2 に設定されます。 | 5 ビット |
| タイムスタンプ | 元のパケットのキャプチャ時間(エポックからのナノ秒数)。ナノ秒の粒度でナノ秒の精度が保証されるわけではありません。 | 64 ビット |
ネットワークの安定した ID
ネットワークの安定した ID オプションは、ミラーリングされたインスタンスのネットワークを識別します。このオプションは、オプション クラス 0x0132(Google)とタイプ 0x10(ネットワーク安定 ID)で識別されます。
次の図は、GENEVE パケットのオプション形式を示しています。ネットワークの安定した ID は、プロジェクト番号とネットワーク ID で構成されます。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option class=0x0132 (Google) | Type=0x10 |R|R|R| Len=4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Project Number +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Network ID +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
次の表に、上の図に示されているオプション フィールドの説明を示します。
| フィールド | 説明 | フィールドの長さ |
|---|---|---|
| Option クラス | オプションを定義した組織またはエンティティを識別します。値 0x0132 は、Google を定義エンティティとして指定します。 |
16 ビット |
| タイプ | クラス内のオプションのタイプを識別します。値 0x10 は、ネットワークの安定した ID オプションを指定します。詳細については、トンネル オプションをご覧ください。 |
8 ビット |
| R | 将来の使用のために予約されたオプション制御フラグ。これらのビットは送信時にゼロ(0)でなければならず、受信時に無視されなければなりません。 | 3 ビット |
| LEN | オプションのペイロードの長さ(4 バイト単位)。ネットワーク ID ペイロードは 64 ビット(8 バイト)であるため、このオプションの長さは 4 に設定されます。 | 5 ビット |
| プロジェクト番号 | Google Cloud プロジェクトのプロジェクト番号。 | 64 ビット |
| ネットワーク ID | ULL VPC ネットワークの ID。 | 64 ビット |
プライマリ IP アドレス
[プライマリ IP アドレス] オプションは、キャプチャ ポイント(パケットがキャプチャまたはミラーリングされた Compute Engine インスタンス)の IP アドレスを識別します。このオプションは、オプション クラス 0x0132(Google)とタイプ 0x11(プライマリ IP アドレス)で識別されます。
次の図は、GENEVE パケットのオプション形式を示しています。
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option class=0x0132 (Google) | Type=0x11 |R|R|R| Len=1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Primary IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
次の表に、上の図に示されているオプション フィールドの説明を示します。
| フィールド | 説明 | フィールドの長さ |
|---|---|---|
| Option クラス | オプションを定義した組織またはエンティティを識別します。値 0x0132 は、Google を定義エンティティとして指定します。 |
16 ビット |
| タイプ | クラス内のオプションのタイプを識別します。値 0x11 は、[プライマリ IP アドレス] オプションを示します。 |
8 ビット |
| R | 将来の使用のために予約されたオプション制御フラグ。これらのビットは送信時にゼロ(0)でなければならず、受信時に無視されなければなりません。 | 3 ビット |
| LEN | オプションのペイロードの長さ(4 バイト単位)。IP アドレス ペイロードは 32 ビット(4 バイト)であるため、このオプションの長さは 1 に設定されます。 | 5 ビット |
| プライマリ IP アドレス | 移行元 Compute Engine インスタンスのプライマリ IP アドレス。 | 32 ビット |
GENEVE ヘッダー形式
このセクションでは、ULL VPC ネットワークの Packet Mirroring で使用される GENEVE ヘッダー形式について説明します。
IPv4 ヘッダー
GENEVE パケット形式は、IPv4 経由の UDP でコンパクトなトンネル ヘッダーをカプセル化します。小さな固定トンネル ヘッダーは、制御情報とベースレベルの機能および相互運用性を提供します。
次の図は、GENEVE パケットの IPv4 ヘッダー フィールドを示しています。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of service| Total length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to live | Proto=17 (UDP)| Header checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
次の表に、上の図に示す Google Cloud固有の IPv4 ヘッダー フィールドを示します。一般的な IPv4 ヘッダー フィールドについては、RFC 8926 をご覧ください。
| フィールド | 説明 |
|---|---|
| Proto=17(GENEVE の場合は常に UDP) | カプセル化されたペイロードが UDP プロトコルを使用することを示します。 |
| 送信元アドレス | ローカル サブネットのゲートウェイ IP アドレス。 |
| 配信先アドレス | お客様所有のロードバランサの VIP。 |
UDP ヘッダー
UDP RFC 0768 ヘッダーは、イーサネットと IP アドレスの接続なしのセマンティクスを維持しながら、データをカプセル化します。また、等価コスト マルチパス(ECMP)を実行するルーターにエントロピーを提供します。
次の図は、UDP 内にカプセル化された GENEVE パケットのヘッダー形式を示しています。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source port = <hash> | Dest port = 6081 (Geneve) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| UDP length | UDP checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
次の表に、前の図に示されている UDP ヘッダー フィールドの説明を示します。
| フィールド | 説明 |
|---|---|
| 送信元ポート | 16 ビットの範囲全体にわたる不透明なハッシュ。この値は、単一のカプセル化されたフローに属するすべてのパケット(両方向)で同じです。 |
| 宛先ポート | GENEVE トラフィックの指定された宛先ポート番号。6081 に設定されます。 |
| UDP の長さ | UDP ヘッダーとカプセル化された GENEVE パケットを含む、UDP データグラムの全長。 |
| UDP チェックサム | エラー検出に使用される UDP データグラムのチェックサム値。 |
GENEVE オプション
ULL VPC ネットワークの Packet Mirroring で使用される Google Cloud固有の GENEVE オプションは、ネットワーク Cookie、タイムスタンプ、ネットワーク安定 ID、プライマリ IP アドレス、公平な順序処理タイムスタンプです。詳細については、ULL VPC ネットワークの Packet Mirroring の GENEVE オプションをご覧ください。
次の図は、ULL VPC ネットワークのパケット ミラーリングで Google Cloud固有の GENEVE オプションがどのように使用されるかを示しています。
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Class=0x0132 (Google) | Type=01 |R|R|R| Len=1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Network Cookie |D|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Class=0x0132 (Google) | Type=0x0f |R|R|R| Len=2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Timestamp +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Class=0x0132 (Google) | Type=0x10 |R|R|R| Len=4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Project Number +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Network ID +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Class=0x0132 (Google) | Type=0x11 |R|R|R| Len=1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Primary IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Class=0x0132 (Google) | Type=0x13 |R|R|R| Len=2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Fair order processing timestamp +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
上の図の Opt len は、オプション フィールドの長さを 4 バイトの倍数で表しています。この長さには、8 バイトの固定トンネル ヘッダーは含まれません。詳細については、トンネル ヘッダー フィールドをご覧ください。
GENEVE カプセル化と MTU 要件
最大伝送単位(MTU)は、イーサネット フレーム内に収まる IP パケットの最大サイズ(バイト単位)です。これには、IP ヘッダー、レイヤ 4 プロトコル ヘッダー、レイヤ 4 データが含まれます。詳細については、最大伝送単位をご覧ください。
ULL VPC ネットワークの最大 MTU は 1,500 バイトです。ただし、ULL Packet Mirroring では、Geneve カプセル化オーバーヘッドに 308 バイトが必要です。ミラーリングされたトラフィックがフラグメンテーションなしでコレクタ インスタンスに到達するようにするには、コレクタが存在するネットワークの MTU が 1,808 バイト以上(標準トラフィックの 1,500 バイトと GENEVE カプセル化オーバーヘッドの 308 バイト)である必要があります。
MTU の上限が GENEVE カプセル化に対応するには不十分な場合、パケットがドロップされる可能性があります。これは、仮想ネットワーク レベルまたはオペレーティング システムで発生する可能性があります。