/var/log/smzksts

ITインフラと牧場についての備忘録

OpenFlow勉強会(#sdnstudy)第2回に参加しました

ゴールデンウィーク2日目はOpenFlow勉強会その2に参加しました。

当日のセッションや各種資料はATNDに掲載されています。

        • -

今回、個人的に興味深かったのはTremaのハンズオン。
なんと、自分でOpenFlow Controllerを作れてしまいます。

当日はいくつかのサンプルコードをもとにOpenFlowコントローラを設定し、OpenFlowスイッチおよび接続するホストはTremaの持つシミュレータを使って動作をチェックする、といった内容でした。

ここで試したくなるのが、シミュレータではないOpenFlowスイッチでの動作。現在個人で用意できそうなOpenFlowスイッチと言えば、Open vSwitchかSRCHACK.orgさんのBuffalo無線LANルータのファーム差し替えによるものの、どちらか2択。

自宅ラック勉強会のおかげで私は後者も持っているのですが、中の人としてはCitrix XenServer 6.0から標準となった、Open vSwitchを使いたい!

もちろん、OSS XenKVMが使えるLinuxディストリビューションで、Open vSwitchを導入可能なものもありますが、インストール〜初期セットアップが10分ちょっとで終わるXenServerのほうが遥かに楽です。

なお、本来Citrix XenServerには有償版の機能として vSwitch ControllerというNOXベースのOpenFlowコントローラが用意されていますが、無償版でもOpen vSwitchそのものは動いているので、これをTremaに接続してみよう…ということで、要するにCitrix XenServerの機能というよりも、純粋にOpen vSwitchの機能を使ってみました。


実際どうやるのかというと、とりあえず接続のチェック方法は以下のとおり
【前提】
1.ATNDからリンクされているOpenFlow勉強会で使ったハンズオンのサンプルを参考に、OpenFlowスイッチを作成
2.XenServerをインストールし、XenServerのローカルCLIを開く
【方法】
・XenServerをControllerに接続する
1.仮想スイッチの名前を確認
# ovs-vsctl list-br
xenbr0※XenServerに標準で作成される仮想スイッチ名

2.仮想スイッチをコントローラに接続
# ovs-vsctl set-controller xenbr0 tcp:

成功すると、Tremaハンズオン資料11ページのswitch_readyメソッドによって、Trema側のコンソールに↓が表示されました。
ifswitch_ready => 0x3aa9528617d6

3.仮想スイッチをコントローラから切断
switch_disconnected => 0x3aa9528617d6

注意点として、Flowを全然設定していないControllerにxenbr0をつないでしまうと、SSHやXenCenterでの接続ができなくなってしまいます。最低限Tremaハンズオン24ページに掲載されているリピータHUBとして動作する機能をコントローラに持たせるか、XenServerをローカルコンソールで操作するか、いずれかの対応をできる状態にしておくと良いでしょう。

ちゃんとした制御をするにはまだまだ勉強が必要ですが、こつこつ試してみたいと思います。