# GENEVE
GENEVE(Generic Network Virtualization Encapsulation)は、可変長オプションによる拡張性を持つオーバーレイカプセル化プロトコルである。RFC 8926 として標準化された。ネットワーク仮想化の登場当初から利用可能だったいくつかのカプセル化の候補(VXLAN・NVGRE 等)はいずれも要件を完全には満たさず、ソフトウェア・ハードウェアベンダーや IETF 参加者による長年の実験と協業を経て、望ましい特徴の大半を組み合わせたカプセル化として GENEVE が開発された。2012年に登場した VXLAN は大きな注目を集めたが、ネットワーク仮想化カプセル化の最終形ではなかった。(Source: [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 8 Network Virtualization]] ch.8 §8.3.1)
## 拡張性という設計目標
GENEVE の顕著な特徴は拡張性である。これは [[Nicira]] のようなソフトウェアベースのシステムを構築する側と、ハードウェアエンドポイントを構築する側との間の一種の妥協を体現している。固定ヘッダはハードウェアにとって扱いやすい一方、将来の拡張には柔軟性を欠く。最終的に GENEVE は、ハードウェアが効率よく処理(または無視)できるオプションスキームを採用しつつ、必要な拡張性を確保した。(Source: ch.8 §8.3.1)
GENEVE は VXLAN とよく似たヘッダ構造を持つが、可変長オプションの存在が顕著な違いである。オプションの存在は、初期のシステムで VXLAN ヘッダの限られた空間ではトンネルの片端から他端へ仮想ネットワークに関するメタデータを渡すのに不十分だと判明した経験を踏まえたものである。こうしたメタデータの例としては、パケットの論理送信元ポートを伝え、後続の処理でそれを考慮できるようにする用途が挙げられる。仮想ネットワークはソフトウェアで実装される機能が時間とともにますます高度化していくため、過度に制限的なパケットカプセル化で仮想ネットワーク内をやり取りできる情報を狭めてはならないという一般的な教訓がここにある。(Source: ch.8 §8.3.1)
## 実装
GENEVE は [[Open vSwitch (OVS)|OVS]] および [[OVN]] でオーバーレイカプセル化として使われる。OVN の例では、ハイパーバイザーの OVN コントローラが Geneve カプセル化を使って自身のチャシス情報を報告する(`Chassis` テーブル)。(Source: ch.8 §8.4)
## VXLAN との直接比較(一次資料による裏付け)
VXLAN の一次資料(RFC 7348)を直接読むと、GENEVE が解決した「メタデータ運搬容量の限界」の具体的な根拠が確認できる。VXLAN ヘッダは 8 byte 固定で、24 bit の VNI 以外はほとんどが予約フィールドが占め、拡張のための余地がほぼ存在しない(RFC 7348 §5 Figure 1/2)。GENEVE の可変長オプションは、この構造的な余地の乏しさに対する直接的な回答である。VXLAN の共著者の一人 [[T. Sridhar]](VMware)は、GENEVE を定義する RFC 8926 の共編者(J. Gross, I. Ganga, T. Sridhar)としても名を連ねており、VXLAN から GENEVE への標準化に連続して関わった人物と見られる。(Source: [[@2014__RFC__Virtual eXtensible Local Area Network (VXLAN) - A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks]] §5)
## 関連
- [[Open vSwitch (OVS)]] / [[OVN]] — GENEVE を実装するソフトウェアスイッチ・システム
- [[オーバーレイネットワーク]] — GENEVEが実現するオーバーレイカプセル化の一般概念
- [[ネットワーク仮想化]]
- [[wiki/entities/VXLAN|VXLAN]] — GENEVE が拡張性の面で置き換えた前身のカプセル化プロトコル
## 出典
- Peterson, Cascone, O'Connor, Vachuska, and Davie, *Software-Defined Networks: A Systems Approach*, 2021, Chapter 8: Network Virtualization, §8.3.1. https://sdn.systemsapproach.org/netvirt.html
- Mahalingam, M., et al., "Virtual eXtensible Local Area Network (VXLAN)", RFC 7348, August 2014.
- 本章内 Further Reading(未 ingest、参考情報として記載): J. Gross, I. Ganga and T. Sridhar (Eds.), "Geneve: Generic Network Virtualization Encapsulation (RFC 8926)" (https://datatracker.ietf.org/doc/html/rfc8926)