SlideShare a Scribd company logo
1 of 43
Download to read offline
Lagopus 0.2.2
Nov 13, 2015
Masaru OKI @masaru0714
Lagopus 0.2.2 overview
● support DPDK 1.8.0 or later version
● available for FreeBSD
● jumbo frame support
● new lagosh, new configuration format
● rawsock and DPDK mixed configuration
● new lookup algorithm support
● bug fixes, performance improvement
2
[0.2] support DPDK 1.8.0 or later
● DPDK 2.1.0もサポートします
● configureのやりかたなどもこれまでと同じ
● gcc4.xでビルドしixgbeを使う場合、
DPDKのconfig/common_linuxappの変更を。
CONFIG_RTE_IXGBE_INC_VECTOR=n
3
[0.2] available for FreeBSD
● DPDK版にて対応、rawsockは未対応
● FreeBSD 10.1にてコンパイルと動作を確認
● DPDKの環境準備がやや面倒
○ コンパイル時にカーネルソースが必要
○ NICはboot時にDPDK用に割り当て
○ 動作中に割り当ての追加や解除はできません
● lagopusのビルド方法や使い方はLinux版と同じ
○ makeのかわりにgmakeを使います
4
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”
5
[0.2] jumbo frame support
● デフォルトでは対応しません
● ./configure --enable-jumbo-frameで対応
● 1パケットあたりのバッファサイズを調整します
6
 [0.2] configuration形式の変更
● Lagopusが直接読めるのはDSL形式
○ 1行1コマンド
bridge bridge01 create -dpid 0x1 …
bridge bridge01 enable
● Lagoshでは従来風のconfiguration
bridge bridge01 {
dpid 0x1;
● 起動時設定はDSL形式ファイルになりました
7
lagosh configuration format
設定種別 {
識別子 {
パラメータ 設定値;
}
}
識別子のない設定種別も存在する。
設定値が複数並ぶパラメータも存在する。
8
Lagopus 0.2で設定可能な構成要素
bridge
portinterface
portinterface
controller
channel
OpenFlowポート番号
物理ポート関連情報
e.g. DPDK port id 通信チャネル(接続先
IPアドレスなど)
flow
group
meter
ロールなど
queue
log
datastore
tls
snmp
9
Lagoshによる設定: 設定種別
● interface
● queue (optional)
● port
● channel
● controller
● bridge
● 他にlog, datastore, tls, snmpがあります
10
Lagoshによる設定: interface
interface {
interface01 {
type ethernet-dpdk-phy;
port-number 2;
}
interface02 {
type ethernet-dpdk-phy;
device ”84:00.1”;
}
interface03 {
type ethernet-rawsock;
device p1p2;
}
interface04 {
type ethernet-rawsock;
device p1p3;
}
}
DPDKデバイスの場合は、
port idあるいはPCI IDを記述。
両方は書けません。
type ethernet-dpdk-phyでDPDKのポート
を使用します。
任意の名称。portと関連付けする際に
使われます。
ethernet-rawsockでraw socket使用。
そのときはdevice eth2;などと書きます。
11
Lagoshによる設定: queue (optional)
queue {
queue01 {
type two-rate;
id 1;
priority 50;
}
queue02 {
type two-rate;
id 2;
priority 50;
}
}
two-rate, single-rateのいずれか。
commited-information-rateなど設定可。
OpenFlow set-queueで指定するID。
任意の整数値。同一ポートに割り当てら
れたqueueのそれぞれのpriority値の比率
をもとにweighted round robinされます。
12
Lagoshによる設定: port
port {
port01 {
interface interface01;
}
port02 {
interface interface02;
}
port03 {
interface interface03;
}
port04 {
interface interface04;
}
}
interfaceと関連付け。
将来tunnel対応などの拡張によって
パラメータが増える予定。
13
Lagoshによる設定: channel, controller
channel {
channel01 {
dst-addr 127.0.0.1;
}
}
controller {
controller01 {
channel channel01;
}
}
channelと関連付け。
roleなどの指定もできます。
自ホストで動くRyuとつなぐ場合は
ループバックアドレスを指定。
14
Lagoshによる設定: bridge
bridge {
bridge01 {
dpid 1;
controller controller01;
port port01 1;
port port02 2;
port port03 3;
port port04 4;
fail-mode secure;
}
}
controllerとの関連付け。
datapath idを普通に数値で記述。
0xff00などの16進数表記も可能。
portとOpenFlowポート番号を関連付け。
15
[0.2] new lagosh
● Pythonで書き直されました
● lagopusとの通信プロトコルも刷新
○ 旧版とは非互換。Lagopus 0.1.xとの接続はできません
● コマンド体系も変更されています
○ 詳細はこの後
● -c 指定してシェルからバッチ処理可能に
○ lagosh -c show interface | grep とかできます
● (現時点では)sudo不要
16
lagosh動作条件
● gitの使用準備ができていること
○ git initはlagoshが裏で勝手にやります
○ git configはしません (user.nameやuser.email設定お願いします)
● /usr/local/etc/lagopus/が存在すること
○ 現在はmake installでmkdirされないようです
● $HOMEが書き込み可能であること
○ lagoshが$HOME/.lagopus.conf.d/を作成します
■ lagosh経由で編集するコンフィグの配置場所
■ git管理の対象
17
lagoshの起動と終了
$ lagosh
Lagosh> configure
Configure# exit
Lagosh> exit
$
現時点ではlagosh操作に関するロールはなし
18
lagoshコマンドライン操作
● readlineのコマンドライン編集ができます
● 入力履歴もCtrl-Pなどで呼び出せます
● 補完できるコマンドなどはTABで補完できます
● コマンドやパラメータには省略形が使えます
○ show bridge→sh b
● Ctrl-Cで強制終了になります
19
lagosh command
show 各種統計情報の表示
pager showコマンドでのページャ動作制御
stop Lagopusプロセスの停止指示
configure 設定の編集とLagopusへの投入
他にping,traceroute,telnet,ssh,exit,quitがある
20
lagosh command: show
各種統計情報を表示します。出力はJSON形式。
show bridge ブリッジ統計情報(フローエントリ数など)
show channel チャネル統計情報
show controller コントローラ統計情報
show flow フローエントリ一覧(マッチ回数等の統計情報を含む)
show group グループエントリ一覧
show interface インタフェース統計情報
show meter メーター統計情報
show port ポート統計情報
show version Lagopusバージョン情報
21
lagosh command: show bridge
Lagosh> show bridge
[
{
"flow-lookup-count": 150225951,
"flow-matched-count": 150296733,
"name": "bridge01",
"flowcache-entries": 5,
"flowcache-hit": 265780705,
"packet-inq-entries": 0,
"down-streamq-entries": 0,
"up-streamq-entries": 0,
"is-enabled": true,
"flow-entries": 100000,
"flowcache-miss": 10
}
]
Lagosh>
22
lagosh command: pager
● ページャー(moreやless)の使用・不使用設定
○ パラメータなしで現在の設定を表示
○ pager onで使用、pager offで不使用
● 大量の情報をshowで見る時などに使えます
● デフォルト: pager off
○ 現時点では設定保存の方法なし
● 環境変数PAGERで使うページャーを選択
○ 未設定時はlessを使います
23
lagosh command: stop
● Lagopusに停止を指示します
● Lagopusが正常動作していればきれいに終了
● なんらか異常動作していると止まらないことも
○ そのときは sudo pkill lagopusしてください……
● 将来的にはstartもできるようにする予定
○ 現時点ではコマンドライン指定必須のため未サポート
24
lagosh command: configure
設定編集(configure)モードに入ります。
configureモードの機能
● 設定ファイルをエディタで編集
● 編集した設定を指定してLagopusに動作反映
○ 旧lagoshのsetのような1行編集即反映ではない
● 編集履歴や過去との差分表示
● 動作中設定を起動時設定として保存
25
lagosh: コマンドと各コンポーネントの関連
/usr/local/etc/lagopus/
lagopus.dsl
$HOME/.lagopus.
conf.d/
lagosh
lagopus datastore
起動時load
save, load
commit, show
edit, diff,
history,
show
root権限
運用者権限
26
12345/tcp
DSL syntax
configuration
syntax
DSL syntax
lagosh configure: 操作の流れ
基本的に、下記。
1. editで編集して
2. commitで反映
3. 内容確認はshow
4. 動作中設定で次回起動させたければsave
27
lagosh: configureモードのコマンド
show 設定内容を表示する
edit 設定内容を編集する(テキストエディタ起動)
history 設定編集履歴を表示
diff 設定編集の変更点を表示
commit 設定をlagopusの動作に反映させる
save 動作中設定を起動時configに保存
load 起動時configをlagopusの動作に反映
28
lagosh configure: show
show [ファイル名]
● $HOME/.lagopus.conf.d/ファイル名の内容表示。
● ファイル名を省略すると動作中config
29
lagosh configure: edit
edit [ファイル名]
● $HOME/.lagopus.conf.d/ファイル名を編集。
● $EDITOR(未設定時はvi)が起動する。
● ファイル名を省略するとlagopus.conf
● lagopus.confがなければ動作中設定から生成。
● 編集終了で履歴に記録。(git commitしている)
30
lagosh configure: history
history [ファイル名]
● 変更履歴(MD5と変更日付)を表示する。
● ファイル名を省略するとlagopus.conf
● git logそのもの
● commitを隠しているのでlog messageは空
31
lagosh configure: diff
diff [option] [ファイル名]
● 設定ファイルの履歴から差分を表示する。
● ファイル名を省略するとlagopus.conf
● option省略で、最新とその直前の差分を表示。
● optionは、git diffのパラメータが使える。
32
lagosh configure: commit
commit [ファイル名]
● $HOME/.lagopus.conf.d/ファイル名を動作反映。
● Lagopusとの通信に使う形式に変換して送信。
● ファイル名を省略するとlagopus.conf
● バッチ利用のときフルパス指定が可能。
○ e.g. lagosh -c configure commit ~/test.conf
33
lagosh configure: save
save
● 動作中lagopusの設定を起動時コンフィグに保存。
/usr/local/etc/lagopus/lagopus.conf
● 通信に用いる形式のため書式が異なる点に注意。
● ディレクトリが掘られていないと失敗する。
34
lagosh configure: load
load
● 起動時コンフィグをlagopusの動作に反映させる。
● 起動時コンフィグが存在しないと失敗する。
35
lagosh TIPS
● コンフィグを即時流し込み
$ lagosh -c configure commit ~/new.conf
● 起動時コンフィグ形式(DSL形式)に変換
$ lagosh --dsl-encode ~/new.conf > new.dsl
● DSL形式からコンフィグの変換結果を見る
$ lagosh --dsl-decode test.dsl | less
36
[0.2] rawsockとDPDKの混在設定
● DPDK版としてコンパイル(--with-dpdk-dir=)
● 前出のようにinterfaceのtypeをそれぞれ指定
● 起動コマンドラインの-p指定はDPDK portのみ
bridge
DPDK port rawsock port
37
[0.2.2]DPDK版でraw socketのみを使う
● コンパイル時に--with-dpdk-dir=を指定
● 起動時にはDPDKオプションを一切記述しない
e.g.
sudo lagopus -C raw.dsl
● DPDKの初期化を行わない
● rawsocket版と同等の動作となる
38
[0.2]new lookup algorithm
● flow cacheにヒットしない場合に適用される
● sequencial searchよりは速い
● デフォルトでは使わないようになっている
○ ./configure --enable-mbtreeで有効化
● 改良の余地がまだまだある
39
[0.2.2]new cache algorithm
--kvstypeの指定が増えました
● hashmap_nolock (default)
● hashmap
● ptree
● rte_hash (New!)
○ DPDK 2.1.0提供のcuckoo hashを使います
40
[0.2.2]bug fixes, improvement
● Paddingについて、処理を単純化しました
○ 中身は気にせず64byte未満なら64byteにする
○ Ryu cert. のERRORが9→8になりました
● set-field実行時のチェックサム計算を最適化
○ 複数実行時に毎回計算していたのを一つにまとめた
○ 差分計算やH/W offloadは未実装
● pingのRTTが大きい(10ms)問題の修正
○ 内部バッファのflushタイミングを調整
41
その他
● Lagopus自体の起動方法は変わりません。
sudo lagopus -d -- -cff -n2 -- -p3 とか
● OpenFlowサポートも以前と同じく1.3対応です。
● ovsdb, OF-config対応は見送りです……
● Lagopus自体でのトンネル対応もまだです
○ トンネルI/Fを作ってrawsockで指定してください
42
最後に
0.1と比較すると大幅なアップデートとなっています
バグを発見しましたら githubのissueで報告を
パッチを作成しましたらgithubへpull-reqを
質問等ありましたらLagopus User Communityまで
Lagopus 0.2.2を、よろしくおねがいします!
43

More Related Content

What's hot

Open stack+lagopus できるかな
Open stack+lagopus できるかなOpen stack+lagopus できるかな
Open stack+lagopus できるかなMasaru Oki
 
Lagopus どれだけ速いのか
Lagopus どれだけ速いのかLagopus どれだけ速いのか
Lagopus どれだけ速いのかMasaru Oki
 
Open flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitchOpen flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitchMasaru Oki
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Tomoya Hibi
 
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
MastodonインスタンスをセットアップできるスタートアップスクリプトについてMastodonインスタンスをセットアップできるスタートアップスクリプトについて
Mastodonインスタンスをセットアップできるスタートアップスクリプトについてさくらインターネット株式会社
 
pipework - Advanced Docker Networking
pipework - Advanced Docker Networkingpipework - Advanced Docker Networking
pipework - Advanced Docker Networkingsaba syake
 
Dockerと外部ルータを連携させる仕組みを作ってみた
Dockerと外部ルータを連携させる仕組みを作ってみたDockerと外部ルータを連携させる仕組みを作ってみた
Dockerと外部ルータを連携させる仕組みを作ってみたnpsg
 
Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)Masaru Oki
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理Takuya ASADA
 
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)Tomoya Hibi
 
LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件Masaru Oki
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Sho Shimizu
 
High Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many CoreHigh Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many Coreslankdev
 
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用Toshiki Tsuboi
 
ConfD で Linux にNetconfを喋らせてみた
ConfD で Linux にNetconfを喋らせてみたConfD で Linux にNetconfを喋らせてみた
ConfD で Linux にNetconfを喋らせてみたAkira Iwamoto
 
Lagopus as open flow hybrid switch
Lagopus as open flow hybrid switchLagopus as open flow hybrid switch
Lagopus as open flow hybrid switchMasaru Oki
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例kazuhcurry
 
DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発slankdev
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgKentaro Ebisawa
 

What's hot (20)

Open stack+lagopus できるかな
Open stack+lagopus できるかなOpen stack+lagopus できるかな
Open stack+lagopus できるかな
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
Lagopus どれだけ速いのか
Lagopus どれだけ速いのかLagopus どれだけ速いのか
Lagopus どれだけ速いのか
 
Open flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitchOpen flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitch
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
 
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
MastodonインスタンスをセットアップできるスタートアップスクリプトについてMastodonインスタンスをセットアップできるスタートアップスクリプトについて
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
 
pipework - Advanced Docker Networking
pipework - Advanced Docker Networkingpipework - Advanced Docker Networking
pipework - Advanced Docker Networking
 
Dockerと外部ルータを連携させる仕組みを作ってみた
Dockerと外部ルータを連携させる仕組みを作ってみたDockerと外部ルータを連携させる仕組みを作ってみた
Dockerと外部ルータを連携させる仕組みを作ってみた
 
Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
 
LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
 
High Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many CoreHigh Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many Core
 
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用
 
ConfD で Linux にNetconfを喋らせてみた
ConfD で Linux にNetconfを喋らせてみたConfD で Linux にNetconfを喋らせてみた
ConfD で Linux にNetconfを喋らせてみた
 
Lagopus as open flow hybrid switch
Lagopus as open flow hybrid switchLagopus as open flow hybrid switch
Lagopus as open flow hybrid switch
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
 
DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfg
 

Viewers also liked

OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
OpenFlowでいろんなプロトコルを 話そうとするとどうなるかOpenFlowでいろんなプロトコルを 話そうとするとどうなるか
OpenFlowでいろんなプロトコルを 話そうとするとどうなるかMasaru Oki
 
Onieで遊んでみようとした話
Onieで遊んでみようとした話Onieで遊んでみようとした話
Onieで遊んでみようとした話Masaru Oki
 
GPD WINが来た!
GPD WINが来た!GPD WINが来た!
GPD WINが来た!Masaru Oki
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)Masaru Oki
 
Using rump on NetBSD 7.0
Using rump on NetBSD 7.0Using rump on NetBSD 7.0
Using rump on NetBSD 7.0Masaru Oki
 
Lagopus+pcap pmd
Lagopus+pcap pmdLagopus+pcap pmd
Lagopus+pcap pmdMasaru Oki
 
Net bsd advent calendar 2015 bpf
Net bsd advent calendar 2015 bpfNet bsd advent calendar 2015 bpf
Net bsd advent calendar 2015 bpfMasaru Oki
 
Rumpを使ってみる
Rumpを使ってみるRumpを使ってみる
Rumpを使ってみるMasaru Oki
 
Lagopus match improvements
Lagopus match improvementsLagopus match improvements
Lagopus match improvementsMasaru Oki
 
今よりも少し(?)昔、 Windowsを作ろうとした話
今よりも少し(?)昔、 Windowsを作ろうとした話今よりも少し(?)昔、 Windowsを作ろうとした話
今よりも少し(?)昔、 Windowsを作ろうとした話Masaru Oki
 
FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話Masaru Oki
 
Richards key 2
Richards key 2Richards key 2
Richards key 2richardskd
 
richards keynote
richards keynote richards keynote
richards keynote richardskd
 

Viewers also liked (20)

OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
OpenFlowでいろんなプロトコルを 話そうとするとどうなるかOpenFlowでいろんなプロトコルを 話そうとするとどうなるか
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
 
Onieで遊んでみようとした話
Onieで遊んでみようとした話Onieで遊んでみようとした話
Onieで遊んでみようとした話
 
Lagopus 0.2.4
Lagopus 0.2.4Lagopus 0.2.4
Lagopus 0.2.4
 
GPD WINが来た!
GPD WINが来た!GPD WINが来た!
GPD WINが来た!
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)
 
Lagopus 0.2.7
Lagopus 0.2.7Lagopus 0.2.7
Lagopus 0.2.7
 
Using rump on NetBSD 7.0
Using rump on NetBSD 7.0Using rump on NetBSD 7.0
Using rump on NetBSD 7.0
 
Lagopus+pcap pmd
Lagopus+pcap pmdLagopus+pcap pmd
Lagopus+pcap pmd
 
Net bsd advent calendar 2015 bpf
Net bsd advent calendar 2015 bpfNet bsd advent calendar 2015 bpf
Net bsd advent calendar 2015 bpf
 
Rumpを使ってみる
Rumpを使ってみるRumpを使ってみる
Rumpを使ってみる
 
Lagopus match improvements
Lagopus match improvementsLagopus match improvements
Lagopus match improvements
 
今よりも少し(?)昔、 Windowsを作ろうとした話
今よりも少し(?)昔、 Windowsを作ろうとした話今よりも少し(?)昔、 Windowsを作ろうとした話
今よりも少し(?)昔、 Windowsを作ろうとした話
 
FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話
 
8 Tarot Card Readings for 2016
8 Tarot Card Readings for 20168 Tarot Card Readings for 2016
8 Tarot Card Readings for 2016
 
Cambodia (Political Setting)
Cambodia (Political Setting)Cambodia (Political Setting)
Cambodia (Political Setting)
 
Richards key 2
Richards key 2Richards key 2
Richards key 2
 
Myanmar: Socio-Cultural Setting
Myanmar: Socio-Cultural SettingMyanmar: Socio-Cultural Setting
Myanmar: Socio-Cultural Setting
 
Vietnam: Economic Setting
Vietnam: Economic SettingVietnam: Economic Setting
Vietnam: Economic Setting
 
richards keynote
richards keynote richards keynote
richards keynote
 
Myanmar (Political Setting)
Myanmar (Political Setting)Myanmar (Political Setting)
Myanmar (Political Setting)
 

Similar to Lagopus 0.2.2

20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_finalKazumasa Ikuta
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1Tomoya Hibi
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始めtetsusat
 
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~npsg
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!ksk_ha
 
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6Kentaro Ebisawa
 
SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用QlikPresalesJapan
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlowToshiki Tsuboi
 
これからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようこれからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようNobuyuki Sasaki
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hwykuga
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_netTomoya Hibi
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...NTT DATA Technology & Innovation
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばYoshihiro Nakajima
 
VPP事始め
VPP事始めVPP事始め
VPP事始めnpsg
 
社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ Daisuke Ikeda
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料一路 川染
 

Similar to Lagopus 0.2.2 (20)

about dakota6.7 gui
about dakota6.7 guiabout dakota6.7 gui
about dakota6.7 gui
 
20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_final
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
about DakotagUI
about DakotagUIabout DakotagUI
about DakotagUI
 
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
 
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
 
SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用
 
osoljp 2011.08
osoljp 2011.08osoljp 2011.08
osoljp 2011.08
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlow
 
これからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようこれからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみよう
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hw
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_net
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそば
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
Pdp11 on-fpga
Pdp11 on-fpgaPdp11 on-fpga
Pdp11 on-fpga
 

More from Masaru Oki

NetBSD移植の昔話
NetBSD移植の昔話NetBSD移植の昔話
NetBSD移植の昔話Masaru Oki
 
Lagopusとvagrant
LagopusとvagrantLagopusとvagrant
LagopusとvagrantMasaru Oki
 
Running lagopus on Xeon D
Running lagopus on Xeon DRunning lagopus on Xeon D
Running lagopus on Xeon DMasaru Oki
 
Using Xeon D 10GBase-T
Using Xeon D 10GBase-TUsing Xeon D 10GBase-T
Using Xeon D 10GBase-TMasaru Oki
 

More from Masaru Oki (7)

NetBSD移植の昔話
NetBSD移植の昔話NetBSD移植の昔話
NetBSD移植の昔話
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
Lagopusとvagrant
LagopusとvagrantLagopusとvagrant
Lagopusとvagrant
 
Running lagopus on Xeon D
Running lagopus on Xeon DRunning lagopus on Xeon D
Running lagopus on Xeon D
 
Using Xeon D 10GBase-T
Using Xeon D 10GBase-TUsing Xeon D 10GBase-T
Using Xeon D 10GBase-T
 
DPDK QoS
DPDK QoSDPDK QoS
DPDK QoS
 
Xeon d
Xeon dXeon d
Xeon d
 

Lagopus 0.2.2

  • 1. Lagopus 0.2.2 Nov 13, 2015 Masaru OKI @masaru0714
  • 2. Lagopus 0.2.2 overview ● support DPDK 1.8.0 or later version ● available for FreeBSD ● jumbo frame support ● new lagosh, new configuration format ● rawsock and DPDK mixed configuration ● new lookup algorithm support ● bug fixes, performance improvement 2
  • 3. [0.2] support DPDK 1.8.0 or later ● DPDK 2.1.0もサポートします ● configureのやりかたなどもこれまでと同じ ● gcc4.xでビルドしixgbeを使う場合、 DPDKのconfig/common_linuxappの変更を。 CONFIG_RTE_IXGBE_INC_VECTOR=n 3
  • 4. [0.2] available for FreeBSD ● DPDK版にて対応、rawsockは未対応 ● FreeBSD 10.1にてコンパイルと動作を確認 ● DPDKの環境準備がやや面倒 ○ コンパイル時にカーネルソースが必要 ○ NICはboot時にDPDK用に割り当て ○ 動作中に割り当ての追加や解除はできません ● lagopusのビルド方法や使い方はLinux版と同じ ○ makeのかわりにgmakeを使います 4
  • 5. 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” 5
  • 6. [0.2] jumbo frame support ● デフォルトでは対応しません ● ./configure --enable-jumbo-frameで対応 ● 1パケットあたりのバッファサイズを調整します 6
  • 7.  [0.2] configuration形式の変更 ● Lagopusが直接読めるのはDSL形式 ○ 1行1コマンド bridge bridge01 create -dpid 0x1 … bridge bridge01 enable ● Lagoshでは従来風のconfiguration bridge bridge01 { dpid 0x1; ● 起動時設定はDSL形式ファイルになりました 7
  • 8. lagosh configuration format 設定種別 { 識別子 { パラメータ 設定値; } } 識別子のない設定種別も存在する。 設定値が複数並ぶパラメータも存在する。 8
  • 9. Lagopus 0.2で設定可能な構成要素 bridge portinterface portinterface controller channel OpenFlowポート番号 物理ポート関連情報 e.g. DPDK port id 通信チャネル(接続先 IPアドレスなど) flow group meter ロールなど queue log datastore tls snmp 9
  • 10. Lagoshによる設定: 設定種別 ● interface ● queue (optional) ● port ● channel ● controller ● bridge ● 他にlog, datastore, tls, snmpがあります 10
  • 11. Lagoshによる設定: interface interface { interface01 { type ethernet-dpdk-phy; port-number 2; } interface02 { type ethernet-dpdk-phy; device ”84:00.1”; } interface03 { type ethernet-rawsock; device p1p2; } interface04 { type ethernet-rawsock; device p1p3; } } DPDKデバイスの場合は、 port idあるいはPCI IDを記述。 両方は書けません。 type ethernet-dpdk-phyでDPDKのポート を使用します。 任意の名称。portと関連付けする際に 使われます。 ethernet-rawsockでraw socket使用。 そのときはdevice eth2;などと書きます。 11
  • 12. Lagoshによる設定: queue (optional) queue { queue01 { type two-rate; id 1; priority 50; } queue02 { type two-rate; id 2; priority 50; } } two-rate, single-rateのいずれか。 commited-information-rateなど設定可。 OpenFlow set-queueで指定するID。 任意の整数値。同一ポートに割り当てら れたqueueのそれぞれのpriority値の比率 をもとにweighted round robinされます。 12
  • 13. Lagoshによる設定: port port { port01 { interface interface01; } port02 { interface interface02; } port03 { interface interface03; } port04 { interface interface04; } } interfaceと関連付け。 将来tunnel対応などの拡張によって パラメータが増える予定。 13
  • 14. Lagoshによる設定: channel, controller channel { channel01 { dst-addr 127.0.0.1; } } controller { controller01 { channel channel01; } } channelと関連付け。 roleなどの指定もできます。 自ホストで動くRyuとつなぐ場合は ループバックアドレスを指定。 14
  • 15. Lagoshによる設定: bridge bridge { bridge01 { dpid 1; controller controller01; port port01 1; port port02 2; port port03 3; port port04 4; fail-mode secure; } } controllerとの関連付け。 datapath idを普通に数値で記述。 0xff00などの16進数表記も可能。 portとOpenFlowポート番号を関連付け。 15
  • 16. [0.2] new lagosh ● Pythonで書き直されました ● lagopusとの通信プロトコルも刷新 ○ 旧版とは非互換。Lagopus 0.1.xとの接続はできません ● コマンド体系も変更されています ○ 詳細はこの後 ● -c 指定してシェルからバッチ処理可能に ○ lagosh -c show interface | grep とかできます ● (現時点では)sudo不要 16
  • 17. lagosh動作条件 ● gitの使用準備ができていること ○ git initはlagoshが裏で勝手にやります ○ git configはしません (user.nameやuser.email設定お願いします) ● /usr/local/etc/lagopus/が存在すること ○ 現在はmake installでmkdirされないようです ● $HOMEが書き込み可能であること ○ lagoshが$HOME/.lagopus.conf.d/を作成します ■ lagosh経由で編集するコンフィグの配置場所 ■ git管理の対象 17
  • 18. lagoshの起動と終了 $ lagosh Lagosh> configure Configure# exit Lagosh> exit $ 現時点ではlagosh操作に関するロールはなし 18
  • 19. lagoshコマンドライン操作 ● readlineのコマンドライン編集ができます ● 入力履歴もCtrl-Pなどで呼び出せます ● 補完できるコマンドなどはTABで補完できます ● コマンドやパラメータには省略形が使えます ○ show bridge→sh b ● Ctrl-Cで強制終了になります 19
  • 20. lagosh command show 各種統計情報の表示 pager showコマンドでのページャ動作制御 stop Lagopusプロセスの停止指示 configure 設定の編集とLagopusへの投入 他にping,traceroute,telnet,ssh,exit,quitがある 20
  • 21. lagosh command: show 各種統計情報を表示します。出力はJSON形式。 show bridge ブリッジ統計情報(フローエントリ数など) show channel チャネル統計情報 show controller コントローラ統計情報 show flow フローエントリ一覧(マッチ回数等の統計情報を含む) show group グループエントリ一覧 show interface インタフェース統計情報 show meter メーター統計情報 show port ポート統計情報 show version Lagopusバージョン情報 21
  • 22. lagosh command: show bridge Lagosh> show bridge [ { "flow-lookup-count": 150225951, "flow-matched-count": 150296733, "name": "bridge01", "flowcache-entries": 5, "flowcache-hit": 265780705, "packet-inq-entries": 0, "down-streamq-entries": 0, "up-streamq-entries": 0, "is-enabled": true, "flow-entries": 100000, "flowcache-miss": 10 } ] Lagosh> 22
  • 23. lagosh command: pager ● ページャー(moreやless)の使用・不使用設定 ○ パラメータなしで現在の設定を表示 ○ pager onで使用、pager offで不使用 ● 大量の情報をshowで見る時などに使えます ● デフォルト: pager off ○ 現時点では設定保存の方法なし ● 環境変数PAGERで使うページャーを選択 ○ 未設定時はlessを使います 23
  • 24. lagosh command: stop ● Lagopusに停止を指示します ● Lagopusが正常動作していればきれいに終了 ● なんらか異常動作していると止まらないことも ○ そのときは sudo pkill lagopusしてください…… ● 将来的にはstartもできるようにする予定 ○ 現時点ではコマンドライン指定必須のため未サポート 24
  • 25. lagosh command: configure 設定編集(configure)モードに入ります。 configureモードの機能 ● 設定ファイルをエディタで編集 ● 編集した設定を指定してLagopusに動作反映 ○ 旧lagoshのsetのような1行編集即反映ではない ● 編集履歴や過去との差分表示 ● 動作中設定を起動時設定として保存 25
  • 26. lagosh: コマンドと各コンポーネントの関連 /usr/local/etc/lagopus/ lagopus.dsl $HOME/.lagopus. conf.d/ lagosh lagopus datastore 起動時load save, load commit, show edit, diff, history, show root権限 運用者権限 26 12345/tcp DSL syntax configuration syntax DSL syntax
  • 27. lagosh configure: 操作の流れ 基本的に、下記。 1. editで編集して 2. commitで反映 3. 内容確認はshow 4. 動作中設定で次回起動させたければsave 27
  • 28. lagosh: configureモードのコマンド show 設定内容を表示する edit 設定内容を編集する(テキストエディタ起動) history 設定編集履歴を表示 diff 設定編集の変更点を表示 commit 設定をlagopusの動作に反映させる save 動作中設定を起動時configに保存 load 起動時configをlagopusの動作に反映 28
  • 29. lagosh configure: show show [ファイル名] ● $HOME/.lagopus.conf.d/ファイル名の内容表示。 ● ファイル名を省略すると動作中config 29
  • 30. lagosh configure: edit edit [ファイル名] ● $HOME/.lagopus.conf.d/ファイル名を編集。 ● $EDITOR(未設定時はvi)が起動する。 ● ファイル名を省略するとlagopus.conf ● lagopus.confがなければ動作中設定から生成。 ● 編集終了で履歴に記録。(git commitしている) 30
  • 31. lagosh configure: history history [ファイル名] ● 変更履歴(MD5と変更日付)を表示する。 ● ファイル名を省略するとlagopus.conf ● git logそのもの ● commitを隠しているのでlog messageは空 31
  • 32. lagosh configure: diff diff [option] [ファイル名] ● 設定ファイルの履歴から差分を表示する。 ● ファイル名を省略するとlagopus.conf ● option省略で、最新とその直前の差分を表示。 ● optionは、git diffのパラメータが使える。 32
  • 33. lagosh configure: commit commit [ファイル名] ● $HOME/.lagopus.conf.d/ファイル名を動作反映。 ● Lagopusとの通信に使う形式に変換して送信。 ● ファイル名を省略するとlagopus.conf ● バッチ利用のときフルパス指定が可能。 ○ e.g. lagosh -c configure commit ~/test.conf 33
  • 34. lagosh configure: save save ● 動作中lagopusの設定を起動時コンフィグに保存。 /usr/local/etc/lagopus/lagopus.conf ● 通信に用いる形式のため書式が異なる点に注意。 ● ディレクトリが掘られていないと失敗する。 34
  • 35. lagosh configure: load load ● 起動時コンフィグをlagopusの動作に反映させる。 ● 起動時コンフィグが存在しないと失敗する。 35
  • 36. lagosh TIPS ● コンフィグを即時流し込み $ lagosh -c configure commit ~/new.conf ● 起動時コンフィグ形式(DSL形式)に変換 $ lagosh --dsl-encode ~/new.conf > new.dsl ● DSL形式からコンフィグの変換結果を見る $ lagosh --dsl-decode test.dsl | less 36
  • 37. [0.2] rawsockとDPDKの混在設定 ● DPDK版としてコンパイル(--with-dpdk-dir=) ● 前出のようにinterfaceのtypeをそれぞれ指定 ● 起動コマンドラインの-p指定はDPDK portのみ bridge DPDK port rawsock port 37
  • 38. [0.2.2]DPDK版でraw socketのみを使う ● コンパイル時に--with-dpdk-dir=を指定 ● 起動時にはDPDKオプションを一切記述しない e.g. sudo lagopus -C raw.dsl ● DPDKの初期化を行わない ● rawsocket版と同等の動作となる 38
  • 39. [0.2]new lookup algorithm ● flow cacheにヒットしない場合に適用される ● sequencial searchよりは速い ● デフォルトでは使わないようになっている ○ ./configure --enable-mbtreeで有効化 ● 改良の余地がまだまだある 39
  • 40. [0.2.2]new cache algorithm --kvstypeの指定が増えました ● hashmap_nolock (default) ● hashmap ● ptree ● rte_hash (New!) ○ DPDK 2.1.0提供のcuckoo hashを使います 40
  • 41. [0.2.2]bug fixes, improvement ● Paddingについて、処理を単純化しました ○ 中身は気にせず64byte未満なら64byteにする ○ Ryu cert. のERRORが9→8になりました ● set-field実行時のチェックサム計算を最適化 ○ 複数実行時に毎回計算していたのを一つにまとめた ○ 差分計算やH/W offloadは未実装 ● pingのRTTが大きい(10ms)問題の修正 ○ 内部バッファのflushタイミングを調整 41
  • 42. その他 ● Lagopus自体の起動方法は変わりません。 sudo lagopus -d -- -cff -n2 -- -p3 とか ● OpenFlowサポートも以前と同じく1.3対応です。 ● ovsdb, OF-config対応は見送りです…… ● Lagopus自体でのトンネル対応もまだです ○ トンネルI/Fを作ってrawsockで指定してください 42