# Overlay Networking Research Summary

**Date:** 2025-12-08  
**Task:** T015 S1  
**Status:** Research Complete

## Executive Summary

マルチテナントVMネットワーク分離のためのオーバーレイネットワーキングソリューションの調査結果。OVN、Cilium、Calico、カスタムeBPFソリューションを評価し、**OVNを推奨**する。

## 1. OVN (Open Virtual Network)

### アーキテクチャ
- **ベース**: OpenStack Neutronのネットワーク抽象化をOpen vSwitch (OVS)上に実装
- **コンポーネント**:
  - `ovn-northd`: 論理ネットワーク定義を物理フローに変換
  - `ovn-controller`: 各ホストでOVSフローを管理
  - `ovsdb-server`: ネットワーク状態の分散データベース
  - `ovn-nb` (Northbound DB): 論理ネットワーク定義
  - `ovn-sb` (Southbound DB): 物理フロー状態

### 機能
- ✅ マルチテナント分離（VXLAN/GRE/Geneveトンネル）
- ✅ 分散ルーティング（L3 forwarding）
- ✅ 分散ロードバランシング（L4）
- ✅ セキュリティグループ（ACL）
- ✅ DHCP/DNS統合
- ✅ NAT（SNAT/DNAT）
- ✅ 品質保証（QoS）

### 複雑さ
- **高**: OVSDB、OVNコントローラー、分散状態管理が必要
- **学習曲線**: 中〜高（OVS/OVNの概念理解が必要）
- **運用**: 中（成熟したツールチェーンあり）

### 統合の容易さ
- **PlasmaVMC統合**: OVN Northbound API（REST/gRPC）経由で論理スイッチ/ルーター/ポートを作成
- **既存ツール**: `ovn-nbctl`、`ovn-sbctl`でデバッグ可能
- **ドキュメント**: 豊富（OpenStack/OVN公式ドキュメント）

### パフォーマンス
- **オーバーヘッド**: VXLANカプセル化による約50バイト
- **スループット**: 10Gbps以上（ハードウェアオフロード対応）
- **レイテンシ**: マイクロ秒単位（カーネル空間実装）

## 2. Cilium

### アーキテクチャ
- **ベース**: eBPF（Extended Berkeley Packet Filter）を使用したカーネル空間ネットワーキング
- **コンポーネント**:
  - `cilium-agent`: eBPFプログラムの管理
  - `cilium-operator`: サービスディスカバリー、IPAM
  - `etcd`または`Kubernetes API`: 状態管理

### 機能
- ✅ マルチテナント分離（VXLAN/Geneve、またはネイティブルーティング）
- ✅ L3/L4/L7ポリシー（eBPFベース）
- ✅ 分散ロードバランシング
- ✅ 可観測性（Prometheusメトリクス、Hubble）
- ✅ セキュリティ（ネットワークポリシー、mTLS）

### 複雑さ
- **中**: eBPFの理解が必要だが、Kubernetes統合が成熟
- **学習曲線**: 中（Kubernetes経験があれば容易）
- **運用**: 低〜中（Kubernetesネイティブ）

### 統合の容易さ
- **PlasmaVMC統合**: Kubernetes API経由または直接Cilium API使用
- **既存ツール**: `cilium` CLI、Hubble UI
- **ドキュメント**: 豊富（Kubernetes中心）

### パフォーマンス
- **オーバーヘッド**: 最小（カーネル空間、eBPF JIT）
- **スループット**: 非常に高い（ハードウェアオフロード対応）
- **レイテンシ**: ナノ秒単位（カーネル空間）

### 制約
- **Kubernetes依存**: Kubernetes環境での使用が前提（VM直接管理は非標準）
- **VMサポート**: 限定的（主にコンテナ向け）

## 3. Calico

### アーキテクチャ
- **ベース**: BGP（Border Gateway Protocol）ベースのルーティング
- **コンポーネント**:
  - `calico-node`: BGPピア、ルーティングルール
  - `calico-kube-controllers`: Kubernetes統合
  - `etcd`または`Kubernetes API`: 状態管理

### 機能
- ✅ マルチテナント分離（BGPルーティング、VXLANオプション）
- ✅ ネットワークポリシー（iptables/Windows HNS）
- ✅ IPAM
- ✅ BGP Anycast（L4ロードバランシングに有用）

### 複雑さ
- **低〜中**: BGPの理解が必要だが、シンプルなアーキテクチャ
- **学習曲線**: 低（BGP知識があれば容易）
- **運用**: 低（シンプルな構成）

### 統合の容易さ
- **PlasmaVMC統合**: Calico API経由またはBGP直接設定
- **既存ツール**: `calicoctl`
- **ドキュメント**: 豊富

### パフォーマンス
- **オーバーヘッド**: 低（ネイティブルーティング）
- **スループット**: 高い（ハードウェアルーティング対応）
- **レイテンシ**: 低（ネイティブルーティング）

### 制約
- **BGP要件**: BGP対応ルーター/スイッチが必要（データセンター環境）
- **VMサポート**: Kubernetes統合が主（VM直接管理は限定的）

## 4. カスタムeBPFソリューション

### アーキテクチャ
- **ベース**: 独自のeBPFプログラムとコントロールプレーン
- **コンポーネント**: 独自実装

### 機能
- ✅ 完全なカスタマイズ性
- ✅ 最適化されたパフォーマンス
- ❌ 開発・保守コストが高い

### 複雑さ
- **非常に高**: eBPFプログラミング、カーネル開発、分散システム設計が必要
- **学習曲線**: 非常に高
- **運用**: 高（独自実装の運用負荷）

### 統合の容易さ
- **PlasmaVMC統合**: 完全にカスタマイズ可能
- **既存ツール**: 独自開発が必要
- **ドキュメント**: 独自作成が必要

### パフォーマンス
- **オーバーヘッド**: 最小（最適化可能）
- **スループット**: 最高（最適化可能）
- **レイテンシ**: 最小（最適化可能）

### 制約
- **開発時間**: 数ヶ月〜数年
- **リスク**: バグ、セキュリティホール、保守負荷

## 5. 比較表

| 項目 | OVN | Cilium | Calico | カスタムeBPF |
|------|-----|--------|--------|--------------|
| **成熟度** | 高 | 高 | 高 | 低 |
| **VMサポート** | ✅ 優秀 | ⚠️ 限定的 | ⚠️ 限定的 | ✅ カスタマイズ可能 |
| **複雑さ** | 高 | 中 | 低〜中 | 非常に高 |
| **パフォーマンス** | 高 | 非常に高 | 高 | 最高（最適化後） |
| **統合容易さ** | 中 | 高（K8s） | 中 | 低（開発必要） |
| **ドキュメント** | 豊富 | 豊富 | 豊富 | なし |
| **運用負荷** | 中 | 低〜中 | 低 | 高 |
| **開発時間** | 短（統合のみ） | 短（K8s統合） | 短（統合のみ） | 長（開発必要） |

## 6. 推奨: OVN

### 推奨理由

1. **VMファースト設計**: OVNはVM/コンテナ両方をサポートし、PlasmaVMCのVM中心アーキテクチャに最適
2. **成熟したマルチテナント分離**: OpenStackでの実績があり、本番環境での検証済み
3. **豊富な機能**: セキュリティグループ、NAT、ロードバランシング、QoSなど必要な機能が揃っている
4. **明確なAPI**: OVN Northbound APIで論理ネットワークを定義でき、PlasmaVMCとの統合が容易
5. **デバッグ容易性**: `ovn-nbctl`、`ovn-sbctl`などのツールでトラブルシューティングが可能
6. **将来の拡張性**: プラガブルバックエンド設計により、将来的にCilium/eBPFへの移行も可能

### リスクと軽減策

**リスク1: OVNの複雑さ**
- **軽減策**: OVN Northbound APIを抽象化したシンプルなAPIレイヤーを提供
- **軽減策**: よく使う操作（ネットワーク作成、ポート追加）を簡素化

**リスク2: OVSDBの運用負荷**
- **軽減策**: OVSDBクラスタリングのベストプラクティスに従う
- **軽減策**: 監視とヘルスチェックを実装

**リスク3: パフォーマンス懸念**
- **軽減策**: ハードウェアオフロード（DPDK、SR-IOV）を検討
- **軽減策**: 必要に応じて将来的にCilium/eBPFへの移行パスを残す

### 代替案の検討タイミング

以下の場合、代替案を検討：
1. **パフォーマンスボトルネック**: OVNで解決できない性能問題が発生
2. **運用複雑さ**: OVNの運用負荷が許容範囲を超える
3. **新機能要求**: OVNで実現できない機能が必要

## 7. 結論

**推奨: OVNを採用**

- マルチテナントVMネットワーク分離の要件を満たす
- 成熟したソリューションでリスクが低い
- PlasmaVMCとの統合が比較的容易
- 将来の最適化（eBPF移行など）の余地を残す

**次のステップ**: S2（テナントネットワークモデル設計）に進む
