どうも。かちおです。最近諸事情でOpenVSwitchを使うことが会ったので備忘録がてら使い方を書きました。
Open V Switch(おーぷんぶいすいっち)って?
Open V Switchを理解するためには、Open Flowを理解する必要があります。
従来のネットワークスイッチは、自身でルーティングを決定し、実際のパケットを電気的に処理していました。それに対してOpenFlowは、「ルーティングの決定」と「実際のパケットのコントロール」を別々に分けるものです。
※正確には分けたときにお互いが通信しあうためのプロトコル
たとえば、従来のVLANの設定やACL、ルーティングテーブルを、物理的なネットワークスイッチとは別のマシンで処理することができます。
これの何が嬉しいかと言うと、「パケットの処理を決めるのは別のマシン、そしてその処理を実際に行うのはネットワークスイッチ」とすることで、いわゆるスイッチのコンソールから設定する以上の高性能・高機能なルーティングをサーバーなどで実装し、ネットワークスイッチと連携させることができます。それにより従来のL2・L3の区別のない高機能なネットワークスイッチを自作することができます。
(ちなみに、同じ設定のルーターを大量に設定するときとかにも強い
そして今回使用するOpen V Switchは、そのOpenFlowに対応した仮想ブリッジ(スイッチ)となっています。それにより、これを使うことで「超高機能」な仮想ブリッジをサーバー内部に作成することができます。
今回やること
実際に高機能を試してみるのは気が引けるのと手間暇的なアレとそもそも自分がOpen V Switchを触り始めてばかりなところがあるので、超初級として今回はOpen V Switchを使って仮想L2スイッチを作ってみます。L2ってなんぞや?って方は、高機能なスイッチハブとでも思っていてください。
環境
Ubuntu Server 16.04 LTS + Open V Switch
インストール
$ sudo apt install openvswitch-switch openvswitch-common
ブリッジの作成
$ ovs-vsctl add-br test01 # test01というブリッジを作成
$ ovs-vsctl add-port test01 eno1 # test01にeno1を接続する
$ ovs-vsctl del-port test01 eno1 # test01からeno1を抜く
$ ovs-vsctl del-br test01 # test01というブリッジを削除
これってもしかして…?
そうです。Linuxの標準仮想ブリッジと使い勝手は同じなのです。高度なことをしなければ手間はかからず、さらにここから複雑な機能をもたせることもできます。
自分も勉強中ですがbrctlを同じように使えるところが気に入ったので、仮想ブリッジを作成するときに積極的に使うようにしています。
今回はL2を作っただけですが、ぜひご自分で拡張していってみてください。この記事がOpen V Switchを知るきっかけになってくれれば嬉しいです。
それでは。