TL

GENEVE と NVGRE:オーバーレイカプセル化の比較

VXLANの固定ヘッダで詰まる場面の打開策が腑に落ちる。可変長TLVでメタデータを運ぶGENEVEの拡張性、GREを土台にしたNVGREとの設計差、SDNコントローラとの連携までを原理から押さえられる。

応用GENEVENVGREオーバーレイカプセル化SDNデータセンター最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.GENEVE(RFC 8926)はVXLANと同じL2 over L3だが、ヘッダに可変長TLVのオプション領域を持ち、トンネル種別をProtocol Typeで示すことでL2に限らず任意ペイロードを運べる。UDP宛先ポートは6081。
  • 2.NVGRE(RFC 7637)はUDPではなくGREで包み、GREのKeyフィールドの下位24ビットをVSID(仮想サブネットID)に流用する。固定ヘッダで拡張余地がなく、UDPポートが無いためECMP分散にはFlowIDの工夫が要る。
  • 3.GENEVEのTLVはSDNコントローラ(OVN/NSX等)がメタデータをデータプレーンに注入する受け皿になる。VNI/VSIDはどれも24ビットでセグメント数は同等だが、拡張性とSDN親和性でGENEVEが新規採用の主流。

VXLAN の固定ヘッダが抱える限界

VXLAN(/network/vxlan-overlay/)は、イーサネットフレームをUDPで包んでL3ファブリック上に論理L2を重ねる、オーバーレイの定番です。しかしそのヘッダは8バイト固定で、中身は実質24ビットのVNI(VXLAN Network Identifier)だけ。残りはフラグと予約領域で、カプセル化の途中で「VNI以外の情報」を運ぶ余地がありません

これが問題になるのは、論理ネットワークの識別だけでは足りなくなる現代のSDN環境です。たとえば「このパケットはどのファイアウォール規則を通過済みか」「どのテナントのどのセキュリティグループに属するか」「パケットの色付け(QoSメタデータ)はどうか」といった情報を、トンネルの入口で付与し出口で読み取りたい。VXLANにはその器がなく、ベンダーは予約ビットを独自解釈で使うしかありませんでした。結果として方言が乱立し、相互運用が崩れます。

求められたのは「拡張できるトンネル」

カプセル化そのものの構造は /network/protocol-encapsulation/ の階層封入の延長で、各層が自分のヘッダを前置していく点は変わりません。違いは「将来の用途のために、ヘッダ自身が拡張可能か」です。VXLANは拡張不能な固定封筒、GENEVEは中に仕切りを足せる可変封筒、と捉えると差が明確になります。

GENEVE:可変長 TLV でメタデータを運ぶ

GENEVE(Generic Network Virtualization Encapsulation, RFC 8926)は、この拡張性の問題を正面から解いた設計です。外側の封入順は 外側イーサネット → 外側IP → UDP → GENEVEヘッダ → 内側フレーム でVXLANと同型ですが、UDP宛先ポートは 6081(IANA割り当て)で、GENEVEヘッダの後半に 可変長のオプション領域 を持つ点が決定的に違います。

[外側イーサネット] 宛先MAC | 送信元MAC | EtherType
[外側IP]          送信元IP=送信トンネル端 | 宛先IP=受信トンネル端
[UDP]             送信元ポート=ハッシュ値 | 宛先ポート=6081
[GENEVEヘッダ(8B+可変)]
   Ver(2bit) | Opt Len(6bit) | O | C | 予約
   Protocol Type(16bit, 例 0x6558=Ethernet)
   VNI(24bit) | 予約(8bit)
   --- 可変長オプション(TLV列, Opt Len×4バイト) ---
   [Opt Class | Type | Length | Variable Data] を必要な数だけ並べる
[内側フレーム]    Protocol Typeで示した中身(イーサ/IP/...)

ヘッダの要点は3つです。第一に Protocol Type で内側ペイロードの種類を明示するため、L2フレームに限らずIPパケットなど任意の中身を運べます(VXLANは内側が常にイーサネット前提)。第二に Opt Len が示す長さだけ TLV(Type-Length-Value)形式のオプション が並び、各TLVは Option Class(ベンダーや用途の名前空間)と Type、長さ、データから成ります。第三に Cビット(Critical) が「このTLVを理解できない機器は破棄せよ」を示し、未知の拡張を安全に扱う規約を与えます。

TLV はメタデータの汎用コンテナ

TLVの強みは「未知のオプションを長さ情報だけで読み飛ばせる」ことです。Length を見ればそのTLVのバイト数が分かるので、解釈できないオプションは中身を無視して次のTLVへ進める。これにより、新しいメタデータ種別を後から追加してもヘッダ全体の構造を壊さず、世代の違う機器が混在しても破綻しません。BGPの可変長パスアトリビュートと同じ「拡張可能なTLV」設計思想です。

NVGRE:GRE を土台にした別系統

NVGRE(Network Virtualization using GRE, RFC 7637)は、まったく別の出自を持つオーバーレイです。UDPで包むVXLAN/GENEVEと違い、GRE(Generic Routing Encapsulation) を土台にします。GREヘッダの Key フィールドを24ビットの VSID(Virtual Subnet ID)と8ビットの FlowID に分割 して流用するのが特徴です。

[外側イーサネット]
[外側IP]          Protocol=47 (GRE)
[GREヘッダ]        K=1(Key存在) | Protocol Type=0x6558(Ethernet)
                  Key = VSID(24bit) | FlowID(8bit)
[内側フレーム]    元のイーサネットフレーム

NVGREの設計上の弱点は2つあります。ひとつは 拡張領域が無い こと。GREのKeyは固定32ビットで、GENEVEのようなTLVを足せません。もうひとつは L4ポートが存在しない ことです。GREは外側IPのプロトコル番号47で直接運ばれるため、UDP/TCPの送信元/宛先ポートがありません。中継網のECMP(/network/ecmp-flow-hashing/)は通常5タプル(IPとポート)でフローを分散しますが、ポートが無いNVGREでは外側IPの2タプルしか散らす材料がなく、同一VTEP間の全トラフィックが1経路に集中 しがちです。NVGREはこれを補うためKey内に8ビットのFlowIDを置き、中継機器がそれをハッシュ材料に使えるよう規定しましたが、対応する機器が限られ普及の足かせになりました。

三方式の構造比較

観点VXLANGENEVENVGRE
RFC734889267637
外側トランスポートUDP(4789)UDP(6081)GRE(IPプロトコル47)
セグメント識別子VNI 24bitVNI 24bitVSID 24bit
論理セグメント数約1677万約1677万約1677万
拡張メタデータなし(固定8B)可変長TLV(あり)なし(GRE Key固定)
内側ペイロードイーサのみProtocol Typeで任意イーサのみ
ECMP分散の容易さUDP送信元ポートで容易UDP送信元ポートで容易ポート無し→FlowID頼み

セグメント数はどれも24ビットで同等(2^24、約1677万)です。差が出るのは 拡張性・ペイロードの自由度・経路分散 の3点で、いずれもGENEVEが優位、NVGREが不利という構図になります。NVGREはGRE資産との親和性を狙いましたが、ポート不在によるECMPの不利が実務で重く、現在は新規採用がほぼ途絶えています。

オーバーヘッドと MTU は三者とも問題になる

カプセル化である以上、外側ヘッダ分のオーバーヘッドはどの方式でも発生します。VXLAN/GENEVE(オプション無し)はIPv4で約50バイト、GENEVEはTLVを足すほど増え、NVGREはUDP8バイトが無い分わずかに小さい程度です。テナントが1500バイトを送れば外側は1550バイト超に膨れ、途中で破棄やフラグメントを招きます。アンダーレイをジャンボフレーム化してこの増分を吸収するのは三方式共通の定石で、MTUの基礎は /network/mtu/ を参照してください。

SDN コントローラとの連携

GENEVEが新規採用の主流になった最大の理由は、SDNコントローラとの親和性 です。Open vSwitch系のOVNや、VMware NSXといったコントローラは、トンネル端(VTEPに相当)にフローテーブルを配り、データプレーンの振る舞いを集中制御します。このとき「パケットに付随する論理メタデータ」をトンネルをまたいで運べるかどうかが、機能の幅を直接左右します。

GENEVEのTLVは、まさにこのメタデータの受け皿です。たとえばOVNは、論理ポートの識別子や、入口で評価済みのACL状態などをGENEVEオプションに載せ、出口側がそれを読んでパイプラインの続きを実行します。これにより 「分散したスイッチ群を、あたかも1台の論理スイッチのように」 振る舞わせられます。VXLANやNVGREのように識別子しか運べないと、こうしたメタデータは別の手段(パケット外の制御チャネルや、IPヘッダの一部流用)で補うしかなく、設計が歪みます。

制御プレーンとの分業:識別子はデータ面、到達情報は BGP

GENEVEのTLVが運ぶのは「このパケットに付随するメタデータ」であり、「どのMACがどのトンネル端にいるか」という到達情報とは別物です。後者はVXLANと同じくEVPN(MP-BGP)で配るのが一般的で、BGPがL2到達性を広告する枠組みは /network/vxlan-overlay/ のEVPNの節と共通です。つまり「セグメント識別とメタデータはデータプレーンのヘッダで、MAC到達情報はコントロールプレーンのBGPで」と役割が分かれます。

試験・面接で問われる要点

「GENEVEのUDPポートと拡張機構は」→ 宛先6081、可変長TLVオプション。「NVGREの土台とセグメントIDは」→ GRE(プロトコル47)、GRE KeyのVSID 24ビット。「NVGREの弱点は」→ ポート不在でECMP分散が苦手(FlowIDで補う)、拡張領域が無い。「GENEVEがSDNで好まれる理由は」→ TLVで論理メタデータをトンネル越しに運べる。「セグメント数の差は」→ 三方式とも24ビットで同等、差は拡張性とペイロード自由度。この5点を構造で言えれば上級。

まとめ

GENEVEとNVGREは、VXLANの「固定ヘッダで識別子しか運べない」限界に対する2つの異なる回答です。GENEVE(RFC 8926, UDP 6081)は、可変長TLVのオプション領域とProtocol Typeを備え、任意のペイロードと将来拡張可能なメタデータをトンネル越しに運べる「拡張可能な封筒」です。NVGRE(RFC 7637)はGREを土台にKeyの24ビットをVSIDに流用しますが、拡張領域が無く、L4ポートが無いためECMPの経路分散に弱く、普及は伸び悩みました。セグメント数はどれも24ビットで横並びで、本質的な差は 拡張性・ペイロードの自由度・経路分散 にあります。SDNコントローラがメタデータをデータプレーンへ注入する受け皿としてTLVが効くため、OVNやNSXを含む新規設計ではGENEVEが事実上の標準です。「識別子だけならVXLAN、拡張するならGENEVE、GRE資産前提の特殊解がNVGRE」——この三分法で捉えれば、オーバーレイ方式の選択は一本の筋で読み解けます。

ネットワーク Article

GENEVE と NVGRE:オーバーレイカプセル化の比較を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

GENEVE

比較で見る軸

難易度: advanced / カテゴリ: ネットワーク / タグ数: 6

導入後に効く点

NVGRE(RFC 7637)はUDPではなくGREで包み、GREのKeyフィールドの下位24ビットをVSID(仮想サブネットID)に流用する。固定ヘッダで拡張余地がなく、UDPポートが無いためECMP分散にはFlowIDの工夫が要る。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
ネットワーク
タグ数
6

判断チェックリスト

  • 自社の用途が「GENEVE / NVGRE」に近いか確認する。
  • 強みである「GENEVE(RFC 8926)はVXLANと同じL2 over L3だが、ヘッダに可変長TLVのオプション領域を持ち、トンネル種別をProtocol Typeで示すことでL2に限らず任意ペイロードを運べる。UDP宛先ポートは6081。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

GENEVENVGREオーバーレイカプセル化SDNGENEVENVGREオーバーレイ