# OVN
OVN(Open Virtual Network)は、[[Open vSwitch (OVS)|OVS]] への機能拡張の集合として構築された、文書が充実したオープンソースのネットワーク仮想化システムである。データプレーンには OVS を、制御・管理プレーンには OVSDB を土台にした一連のデータベースを利用する。(Source: [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 8 Network Virtualization]] ch.8 §8.4)
## Northbound / Southbound データベース
OVN の重要な側面は、Northbound と Southbound と呼ばれる2つのデータベースを状態保存に用いることである。両方とも OVSDB で実装されており、OVSDB はもともと OVS の構成状態を保存するために作られたが、OVN ではさらに大きな役割を担い、構成状態と制御状態の両方に使われる。OVN は Cloud Management System(CMS、典型的には OpenStack)が仮想ネットワークの作成を担う環境で動くことを前提としており、OVN/CMS プラグインが CMS 固有の抽象を汎用的な仮想ネットワーク抽象へマッピングして Northbound Database に格納する。このプラグインを管理プレーン、Northbound DB を希望状態のリポジトリと見なせる。コンテナ環境では、OVN が統合する「クラウド管理システム」は Kubernetes のようなコンテナ管理システムであることが多い。(Source: ch.8 §8.4)
## 集中/分散ハイブリッドな制御プレーン
OVN の制御プレーンは、集中コンポーネントである `ovn-northd` と、各ハイパーバイザー上で動く分散コンポーネントである OVN コントローラに分かれる。これは集中制御と分散制御のトレードオフに対するハイブリッドな解であり、全フローを俯瞰する集中コントローラがスケーリングの課題に直面したという OVN チームの以前のシステムでの経験を踏まえたものである。OVN は論理的には集中制御を維持し、単一の API エントリポイントでネットワークの作成や状態照会ができるようにしつつ、VM の所在のような物理情報に関わる制御機能は各ハイパーバイザーへ分散する。これによりシステムのスケーラビリティが大きく向上した。(Source: ch.8 §8.4)
集中コンポーネントの `ovn-northd` は、スイッチングやルーティングといった従来のネットワーク概念で表現される論理ネットワーク構成を論理データパスフローへ変換し、OVN Southbound Database に格納する。各ハイパーバイザーの OVN コントローラは、自身がホストする VM に関連する論理フローを特定するために OVN Southbound DB へ問い合わせ、他のハイパーバイザーから提供される VM 所在情報(Chassis テーブル・Port_Binding テーブル)と組み合わせて、そのハイパーバイザー上でローカルに動く OVS インスタンスへ投入すべきフロールールを構築する。(Source: ch.8 §8.4)
## 論理フローの具体例
2つのポート `LP1`・`LP2` を持つ論理スイッチ `LS1` を作成する例では、`Logical_Port` テーブルにそれぞれ MAC アドレス `AA`・`BB` を持つ VM が接続される。`Logical_Switch` と `Logical_Port` の情報から構築される `Logical_Flows` テーブルは、この論理スイッチを実現するためのパケット転送方法(例えば MAC アドレス `AA` 宛のパケットはポート `LP1` へ)を示すが、どのハイパーバイザーが現在それらの VM をホストしているかという発見状態が無ければ実際にパケットを転送できない。ハイパーバイザー `HV1` の OVN コントローラは、Geneve カプセル化で IP アドレス `10.0.0.10` に到達可能であることを `Chassis` テーブルへ、`LP1` をホストしていることを `Port_Binding` テーブルへ報告する。(Source: ch.8 §8.4)
## 関連
- [[Open vSwitch (OVS)]] — OVN のデータプレーンを構成する仮想スイッチ
- [[GENEVE]] — OVN が論理フローの物理実装に使うカプセル化
- [[ネットワーク仮想化]]
## 出典
- Peterson, Cascone, O'Connor, Vachuska, and Davie, *Software-Defined Networks: A Systems Approach*, 2021, Chapter 8: Network Virtualization, §8.4. https://sdn.systemsapproach.org/netvirt.html
- 本章内 Further Reading(未 ingest、参考情報として記載): Open Virtual Network, "OVN Reference Guide" (https://docs.ovn.org/en/latest/ref/index.html)