sdnソフトウェアスイッチlagopus for freebsd
TRANSCRIPT
SDNソフトウェアスイッチLagopus for FreeBSDAug 7, 2015Masaru OKI @masaru0714
ソフトウェアスイッチ?
● いわゆるSW-HUBの機能をソフトで実現したもの○ 宛先不明パケットは全ポートに送信○ 宛先がわかるパケットは宛先のいるポートに送信
● “SDNソフトウェアスイッチ”の場合は少し違ってパケット転送ルールをソフトウェア制御できます○ パケットフィルタリングに近い○ パケットヘッダの書き換えなどもできるものがある○ ソフトウェア制御する「コントローラ」と組で使います○ 仮想環境と相性が良い(deployに合わせて設定等)
2
SDNソフトウェアスイッチの構成
大雑把にはこんな感じ
3
macihne
switchprocess
4321
パケット転送用Ethernet port
controller process
スイッチにパケット転送ルールを流し込む役割 (Ryu, Tremaなど)同一ホストで動かしてもよいルールは別途用意する必要あり
スイッチ本体単体では動かない
TCPやSSLで接続。OpenFlowプロトコルが代表的
SDNソフトウェアスイッチLagopus
● 総務省O3プロジェクトの一つ● NTTが開発、2014年7月にOSSとして公開
○ http://lagopus.github.io● x86 Linuxで動作するソフトウェアスイッチ● OpenFlow 1.3により制御される● DPDKという高速パケットI/Oライブラリを使用
○ DPDK自身はLinuxとFreeBSDに対応している
● 10GbEのパケット転送でwire rateの性能4
FreeBSDでLagopusを!
● 近日リリース予定のver 0.2でFreeBSD対応!● FreeBSD 10.1にてコンパイルと動作を確認● DPDKの環境準備がやや面倒
○ コンパイル時にカーネルソースが必要○ NICはboot時にDPDK用に割り当て○ 動作中に割り当ての追加や解除はできません
● lagopusのビルド方法や使い方はLinux版と同じ○ makeのかわりにgmakeを使います
5
DPDKのビルド
$ cd ~/src$ git clone git://dpdk.org/dpdk$ cd dpdk; gmake T=x86_64-native-bsdapp-clang config$ gmake$ sudo cp build/kmod/* /boot/modules/
6
FreeBSDでのメモリ・NICの設定
/boot/loader.confの内容に下記を追加。
# reserve 1 x 1G blocks of contiguous memory using configmem driver
hw.contigmem.num_buffers=1
hw.contigmem.buffer_size=1073741824
configmem_load=”YES”
# identify NIC devices for DPDK apps to use and load nic_uio driver
hw.nic_uio.bdfs=”2:0:0,2:0:1”
nic_uio_load=”YES”
7
Lagopusのビルド
$ cd ~/src$ git clone [email protected]:lagopus/lagopus$ cd lagopus$ ./configure --with-dpdk-dir=$HOME/src/dpdk$ gmake$ sudo gmake install
8
Lagopusとコントローラの起動(例)
コントローラの起動(単純なスイッチアプリを指定)
$ ryu-manager simple_switch_13.pyLagopusの起動
$ sudo lagopus -- -cff -n2 -- -p3
9
細かい設定の方法など
SDN関連の集会 Trema Day #7の資料に書きます
そちらをご参照ください (SlideShareで公開予定)DPDKのドキュメントやLagopusのドキュメントも
ご参照いただければと思います
10
最後に
FreeBSDをお使いの方もぜひお試しください!バグを発見しましたら githubのissueで報告を
パッチを作成しましたらgithubへpull-reqを質問等ありましたらLagopus User Communityまで
Lagopus 0.2を、よろしくおねがいします!
11