sdnソフトウェアスイッチlagopus for freebsd
TRANSCRIPT
![Page 1: SDNソフトウェアスイッチlagopus for FreeBSD](https://reader036.vdocuments.site/reader036/viewer/2022072108/55d0cbe6bb61eb357f8b4683/html5/thumbnails/1.jpg)
SDNソフトウェアスイッチLagopus for FreeBSDAug 7, 2015Masaru OKI @masaru0714
![Page 2: SDNソフトウェアスイッチlagopus for FreeBSD](https://reader036.vdocuments.site/reader036/viewer/2022072108/55d0cbe6bb61eb357f8b4683/html5/thumbnails/2.jpg)
ソフトウェアスイッチ?
● いわゆるSW-HUBの機能をソフトで実現したもの○ 宛先不明パケットは全ポートに送信○ 宛先がわかるパケットは宛先のいるポートに送信
● “SDNソフトウェアスイッチ”の場合は少し違ってパケット転送ルールをソフトウェア制御できます○ パケットフィルタリングに近い○ パケットヘッダの書き換えなどもできるものがある○ ソフトウェア制御する「コントローラ」と組で使います○ 仮想環境と相性が良い(deployに合わせて設定等)
2
![Page 3: SDNソフトウェアスイッチlagopus for FreeBSD](https://reader036.vdocuments.site/reader036/viewer/2022072108/55d0cbe6bb61eb357f8b4683/html5/thumbnails/3.jpg)
SDNソフトウェアスイッチの構成
大雑把にはこんな感じ
3
macihne
switchprocess
4321
パケット転送用Ethernet port
controller process
スイッチにパケット転送ルールを流し込む役割 (Ryu, Tremaなど)同一ホストで動かしてもよいルールは別途用意する必要あり
スイッチ本体単体では動かない
TCPやSSLで接続。OpenFlowプロトコルが代表的
![Page 4: SDNソフトウェアスイッチlagopus for FreeBSD](https://reader036.vdocuments.site/reader036/viewer/2022072108/55d0cbe6bb61eb357f8b4683/html5/thumbnails/4.jpg)
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
![Page 5: SDNソフトウェアスイッチlagopus for FreeBSD](https://reader036.vdocuments.site/reader036/viewer/2022072108/55d0cbe6bb61eb357f8b4683/html5/thumbnails/5.jpg)
FreeBSDでLagopusを!
● 近日リリース予定のver 0.2でFreeBSD対応!● FreeBSD 10.1にてコンパイルと動作を確認● DPDKの環境準備がやや面倒
○ コンパイル時にカーネルソースが必要○ NICはboot時にDPDK用に割り当て○ 動作中に割り当ての追加や解除はできません
● lagopusのビルド方法や使い方はLinux版と同じ○ makeのかわりにgmakeを使います
5
![Page 6: SDNソフトウェアスイッチlagopus for FreeBSD](https://reader036.vdocuments.site/reader036/viewer/2022072108/55d0cbe6bb61eb357f8b4683/html5/thumbnails/6.jpg)
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
![Page 7: SDNソフトウェアスイッチlagopus for FreeBSD](https://reader036.vdocuments.site/reader036/viewer/2022072108/55d0cbe6bb61eb357f8b4683/html5/thumbnails/7.jpg)
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
![Page 8: SDNソフトウェアスイッチlagopus for FreeBSD](https://reader036.vdocuments.site/reader036/viewer/2022072108/55d0cbe6bb61eb357f8b4683/html5/thumbnails/8.jpg)
Lagopusのビルド
$ cd ~/src$ git clone [email protected]:lagopus/lagopus$ cd lagopus$ ./configure --with-dpdk-dir=$HOME/src/dpdk$ gmake$ sudo gmake install
8
![Page 9: SDNソフトウェアスイッチlagopus for FreeBSD](https://reader036.vdocuments.site/reader036/viewer/2022072108/55d0cbe6bb61eb357f8b4683/html5/thumbnails/9.jpg)
Lagopusとコントローラの起動(例)
コントローラの起動(単純なスイッチアプリを指定)
$ ryu-manager simple_switch_13.pyLagopusの起動
$ sudo lagopus -- -cff -n2 -- -p3
9
![Page 10: SDNソフトウェアスイッチlagopus for FreeBSD](https://reader036.vdocuments.site/reader036/viewer/2022072108/55d0cbe6bb61eb357f8b4683/html5/thumbnails/10.jpg)
細かい設定の方法など
SDN関連の集会 Trema Day #7の資料に書きます
そちらをご参照ください (SlideShareで公開予定)DPDKのドキュメントやLagopusのドキュメントも
ご参照いただければと思います
10
![Page 11: SDNソフトウェアスイッチlagopus for FreeBSD](https://reader036.vdocuments.site/reader036/viewer/2022072108/55d0cbe6bb61eb357f8b4683/html5/thumbnails/11.jpg)
最後に
FreeBSDをお使いの方もぜひお試しください!バグを発見しましたら githubのissueで報告を
パッチを作成しましたらgithubへpull-reqを質問等ありましたらLagopus User Communityまで
Lagopus 0.2を、よろしくおねがいします!
11