SDN・ネットワーク仮想化

Open vSwitch おーぷんぶいすいっち

仮想スイッチSDNOpenFlow仮想化KVMデータプレーン
Open vSwitchについて教えて

簡単に言うとこんな感じ!

サーバーの中にソフトウェアで作った「仮想のネットワークスイッチ」だよ!物理的なスイッチ機器を買わなくても、プログラムで自在にネットワークをつなぎ変えられる魔法の道具なんだ。クラウドやデータセンターで仮想マシンをつなぐ縁の下の力持ち的存在ってこと!


Open vSwitchとは

Open vSwitch(OVS) は、サーバー上でソフトウェアとして動く仮想ネットワークスイッチのオープンソースプロジェクトです。物理的なスイッチ機器がLANケーブルでPCをつなぐのと同じ役割を、サーバー内部でプログラムとして実現します。Apache License 2.0で公開されており、商用・非商用を問わず無償で利用できます。

もともとVMwareのような仮想化環境では、仮想マシン(VM)同士や外部ネットワークとのつなぎ方が固定的でした。Open vSwitchはこの「つなぎ方をソフトウェアで柔軟に変えたい」という要求に応えるために生まれました。OpenFlowなどのプロトコルに対応しており、SDN(Software-Defined Networking)コントローラーから集中管理することができます。

今日ではOpenStackKubernetesKVMなど主要なクラウド基盤で広く採用されており、クラウドサービスの裏側でネットワークを支える事実上の標準コンポーネントになっています。


Open vSwitchの仕組みと構造

Open vSwitchは大きく「コントロールプレーン」と「データプレーン」に分かれています。

コンポーネント役割たとえ
ovs-vswitchd仮想スイッチのメインプロセス。パケット転送のロジックを処理交差点の交通整理員
ovsdb-serverスイッチの設定情報を管理するデータベースサーバー交通整理員の指示書
カーネルモジュール(datapath)実際のパケットを高速転送するLinuxカーネル側の処理自動化された高速レーン
ovs-vsctl管理者が設定を投入するCLIツール設定を書き込むペン
OpenFlowコントローラー外部から転送ルールを集中制御(オプション)遠隔指示センター

パケットが通る流れ

仮想マシンA


[カーネルdatapath] ← フローテーブルにヒット → 高速転送
    │ ミス(初回)

[ovs-vswitchd]  → フロールール検索/生成
    │ 必要なら

[OpenFlowコントローラー] → ルールを指示


仮想マシンBまたは外部NIC

初回パケットはソフトウェア処理(やや遅い)ですが、2回目以降はカーネル内のフローテーブルにキャッシュされ高速に転送されます。

サポートする主なプロトコル・機能

機能概要
VLAN仮想マシンごとにネットワークを分離
VXLAN / Geneve / GRE異なる物理ホスト間を仮想トンネルで接続
OpenFlow 1.0〜1.5SDNコントローラーからの集中制御
LACP / STP物理スイッチと同様の冗長化・ループ防止
QoS帯域制限・優先制御
ミラーリング / sFlowトラフィック監視・可視化

歴史と背景

  • 2007年頃 — Nicira Networks(後にVMwareが買収)が社内プロジェクトとして開発を開始
  • 2009年 — オープンソースとしてApache License 2.0で公開
  • 2011年 — Linux Foundation傘下のプロジェクトとして採択。OpenStackの主要コンポーネントに採用され一気に普及
  • 2012年 — VMwareがNiciraを約12.6億ドルで買収。OVSはオープンソースとして継続
  • 2016年 — Linuxカーネル本体(3.3以降)にdatapathが標準マージ済みとなり、追加インストール不要に
  • 2018年頃 — KubernetesのCNIプラグイン(OVN-Kubernetes)として採用が拡大
  • 現在 — OpenStack Neutron・Red Hat OpenShift・VMware NSXなど主要製品の基盤技術として利用

SDN・仮想化技術との関係

Open vSwitchは単体で動くだけでなく、上位の制御レイヤーや周辺技術と組み合わせて使われます。

Open vSwitchと周辺技術の関係 SDNコントローラー層(制御プレーン) OpenStack Neutron OVN(Open Virtual Network) ONOSなどOpenFlowコントローラー Open vSwitch(データプレーン) ovs-vswitchd ovsdb-server kernel datapath (転送制御) (設定DB) (高速転送) 仮想化・コンテナ基盤 KVM/QEMU Xen Docker Kubernetes(OVN-K8s) 物理ネットワーク(アンダーレイ) 物理NIC(VXLAN/GREトンネル出口) 物理スイッチ・ルーター

Open vSwitch vs 物理スイッチ vs Linux bridge

比較項目物理スイッチLinux bridgeOpen vSwitch
コスト高い(ハードウェア)無料無料
転送速度最速(ASICチップ)遅め高速(カーネルdatapath)
SDN対応機種依存✅ OpenFlow対応
VXLAN/Geneve機種依存
テレメトリ(sFlow等)機種依存
管理の柔軟性低い低い高い(プログラム制御)
主な用途物理ラック間接続小規模VM環境クラウド・大規模仮想化

関連する規格・RFC

規格・RFC番号内容
OpenFlow 1.3(ONF仕様)SDNコントローラーとスイッチ間の制御プロトコル。OVSが主にサポート
RFC 7348VXLAN(Virtual eXtensible LAN)のトンネルプロトコル仕様
RFC 8926Geneve(Generic Network Virtualization Encapsulation)の仕様
OVSDB(RFC 7047)OVSの設定データベース管理プロトコル
IEEE 802.1QVLAN標準。OVSがサポートするタグ付けの基礎仕様

関連用語