lagopus, raw socket build

12
Lagopus, raw socket build Feb 28, 2015 Masaru OKI twitter @masaru0714

Upload: masaru-oki

Post on 18-Jul-2015

754 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Lagopus, raw socket build

Lagopus,raw socket build

Feb 28, 2015Masaru OKItwitter @masaru0714

Page 2: Lagopus, raw socket build

Lagopusとは(おさらい)

● OpenFlow対応ソフトウェアスイッチです● (もちろん)オープンソースです

○ http://lagopus.github.io● よく言われている特徴

○ x86 Linuxで動きます○ DPDKを使っていて、内部の工夫もあり速いです○ マルチコア・マルチスレッドで動作します○ OpenFlowの仕様のカバー範囲が大きいです

Page 3: Lagopus, raw socket build

OpenFlowソフトウェアスイッチ?

OpenFlowコントローラと組み合わせて使います

別の言い方をすると、コントローラが必要です

Lagopus

コントローラ(別プロセス)

パケット パケット

TCP or SSLLagopusがつなぎにいく

受信パケットをどう処理するか、Lagopusに教える(フローエントリの投入)

OpenFlow Protocol

Page 4: Lagopus, raw socket build

ソフトウェアスイッチ?

● 一番身近なハードウェアスイッチ: SW-HUB● あるポートで受信したパケットをどこかに転送● 特徴(H/Wだとお値段が張る製品でできる)

○ パケットヘッダを見て自在にフィルタリングができます○ パケットヘッダの加工ができます○ 転送先を自由に決めることができます

Page 5: Lagopus, raw socket build

Lagopusを動かすまでのイロイロ

● DPDKの利用準備が必要○ hugepageの予約、確保○ UIOモジュールの組み込み○ NICのデバイスドライバ割り当ての切り替え(unbind)

● マルチコア+Intel NIC環境が必要○ 仮想マシンという手もあるけれど……

● unbindするとLinuxからNICが見えなくなる● 手間がかかる、ハードルが高い

Page 6: Lagopus, raw socket build

raw socket版Lagopus

● DPDKを使わないLagopus● AF_PACKET socketを使いパケットを送受信

○ Intel NICじゃなくても大丈夫!○ ip(8)で作った仮想NIC(gretapやvxlan等)でもOK

● データプレーンは現在シングルスレッド動作● 煩わしいセットアップは不要● ARM等の非x86アーキテクチャでも動かせます

Page 7: Lagopus, raw socket build

DPDK版とraw socket版

現状raw socket版Lagopusは● セットアップが簡単● 小規模システムでも動く

半面、

● 規模が大きな環境でもスケールしません。

単一プロセスで動くので手軽に試せます。

Page 8: Lagopus, raw socket build

入手とビルド方法

● 同一ソースコードです○ https://github.com/lagopus/lagopus

● ./configureで切り替えます○ パラメータを何もつけなければraw socket版○ --with-dpdk-dir=をつければDPDK版

● make && sudo make install

Page 9: Lagopus, raw socket build

lagopus.conf(記述例)

interface ethernet {

p1p1;

p2p2;

}

bridge-domain br0 {

port {

p1p1 port-no 1;

p1p2 port-no 2;

}

controller {

127.0.0.1;

}

}

Lagopusで使用する、 ip(8)で見えるインタフェース名を列挙します。

インタフェース名と、対応する OpenFlowポート番号(1以上)を列挙します。

接続先コントローラの IPアドレスを記述します。

Page 10: Lagopus, raw socket build

起動、その前に

コントローラが必要です。

OSSなものは例えば下記。お好みでどうぞ○ Trema (Ruby)○ Ryu (Python)○ Floodlight (Java)

Ryuの例sudo pip install ryuryu-manager simple_switch_13.py

Page 11: Lagopus, raw socket build

起動方法、終了方法

起動sudo lagopus -d -C ./lagopus.conf

終了sudo lagosh> configure# stop-process

-dでフォアグラウンド動作。

もちろんsudo pkill lagopusでも終了します

Page 12: Lagopus, raw socket build

リファレンス

Lagopushttp://lagopus.github.ioONF (OpenFlowの総本山)http://www.opennetworking.org/Lagopus User Communityhttp://www.lagopus.community/cms/DPDKhttp://dpdk.org/