SDN開発エンジニアを目指した活動ブログ

〜SDNなオープンソース製品を実際に使って試してみる〜

家庭用BuffaloルータのOpenFlow化へのチャレンジ 〜OpenFlow1.3動作確認編〜

これまでも、Linuxボックス"DNA940"を活用してSDN/OpenFlow環境を構築してきました。ただし、汎用性の乏しいLinuxボックス構成だったので、SDN/OpenFlow環境としてOpenFlowスイッチ台数を増やすことが困難でした。今回は、もっと簡易にOpenFlowスイッチ台数を増やすことができる環境構築を目指します。

◆OpenWRT版OpenvSwitch構築

昨年あたりから、OpenWRT版のOpenvSwitchがGitHUBに公開されているようです。ただし、OpenvSwitchバージョンが"1.9.0"と古いままになっているようです。
そこで、Buffaloルータ"BHR-4GRV"のOpenWRT化とOpenvSwitch 2.1.0版パッケージを整備しました。
Releases · ttsubo/openvswitch · GitHub

こちらが、実際に、OpenFlow化した家庭用Buffaloルータ”BHR-4GRV"です。OpenvSwitchの特徴としては、ユーザランドではなく、カーネルモジュールとして、datapathが動作する点ですね。
f:id:ttsubo:20140405171104j:plain

ちなみに、家庭用Buffaloルータ"WHR-G301N"でも、チャレンジしてみましたが、OpenvSwitch保存先のルータ本体ディスク容量不足がネックとなり、インストールできませんでした。

◆自宅ネットワークへのOpenFlow導入

基本的には、以前のブログ記事と同等の構成になります。
OpenFlow簡易ルータの実践活用(3) 〜LinuxボックスでOpenFlowスイッチ構築編〜 - SDN開発エンジニアを目指した活動ブログ

f:id:ttsubo:20140405171354j:plain

◆実際、使ってみて ...

Buffaloルータ"BHR-4GRV"で構築したOpenFlowスイッチを介して実際にインターネットにアクセスしてみました。
いまのところは、安定して動作しているようです。一般的なインターネットの使用感について、とくに、ストレスが感じることなく、大変満足できるものです。ustreamの閲覧も、すこぶる順調でした。

f:id:ttsubo:20140405171737j:plain

あと、参考までに、スピード計測の結果は、こんな感じでした。
f:id:ttsubo:20140405171854j:plain

◆OpenvSwitch上でのフローエントリ出力

ちなみに、OpenFlowのフローエントリのダンプは、こんな感じです。

root@OpenWrt:~# ovs-ofctl dump-flows br0 --protocols=OpenFlow13
OFPST_FLOW reply (OF1.3) (xid=0x2):
 cookie=0x0, duration=827.722s, table=0, n_packets=567, n_bytes=45795, priority=255,ip,in_port=2,dl_src=7c:c3:a1:87:8f:65,dl_dst=00:00:00:00:00:02,nw_dst=192.168.100.1 actions=set_field:00:00:00:00:00:01->eth_src,set_field:10:66:82:93:c4:f0->eth_dst,output:1,dec_ttl
 cookie=0x0, duration=827.722s, table=0, n_packets=234295, n_bytes=300428408, priority=255,ip,in_port=1,dl_src=10:66:82:93:c4:f0,dl_dst=00:00:00:00:00:01,nw_dst=192.168.101.1 actions=set_field:00:00:00:00:00:02->eth_src,set_field:7c:c3:a1:87:8f:65->eth_dst,output:2,dec_ttl
 cookie=0x0, duration=814.607s, table=0, n_packets=139100, n_bytes=12649245, priority=1,ip actions=set_field:00:00:00:00:00:01->eth_src,set_field:10:66:82:93:c4:f0->eth_dst,output:1,dec_ttl
 cookie=0x0, duration=844.926s, table=0, n_packets=853, n_bytes=133044, priority=0 actions=CONTROLLER:65535
 cookie=0x0, duration=837.807s, table=0, n_packets=12, n_bytes=924, priority=16,ip,nw_dst=192.168.100.100 actions=CONTROLLER:65535
 cookie=0x0, duration=827.794s, table=0, n_packets=92, n_bytes=11862, priority=16,ip,nw_dst=192.168.101.100 actions=CONTROLLER:65535

◆終わりに

SDN/OpenFlowを中心としたネットワーク仮想化技術は、様々な最新技術によって構成されるものです。これらを習得するためには、実際に試してみるのが一番手っ取り早いです。ただ、これまでは、家計への負担にならない程度の出費でSDN/OpenFlow環境を構築することは困難でした。今回の"OpenWRT+OpenvSwitch"の組み合わせで、手軽にリアルな環境を入手できることが判明できました。次回は、OpenFlowスイッチ台数の拡張を見据えて、"OpenWRT+OpenvSwitch"の構築手順をメモしておきたいと思います。