SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
0Copyright©2016 NTT corp. All Rights Reserved.
TremaDay # 10 in Okinawa
Lagopusで試すL3ルーティング+α
2016/12/07
hibitomo
0
1Copyright©2016 NTT corp. All Rights Reserved.
 いろいろLagopusの仕様が変わっているので情報をまとめてイン
ターネットに放流したい.
 インストール
 vhost
 Hybrid Switch (action:NORMAL)
 DSL仕様
 断片的な情報を @masaru0714 さんが公開しているのでそれをまと
める.
今日の目標
2Copyright©2016 NTT corp. All Rights Reserved.
 @masaru0714 さんのスライド群
 http://www.slideshare.net/masaruoki9
 Lagopus book
 http://www.lagopus.org/lagopus-book/en/html/
 本発表で利用しているスクリプト
 https://github.com/hibitomo/lagopus-tools
 https://github.com/hibitomo/lago-dsl
 https://github.com/hibitomo/lago-mon
 https://github.com/hibitomo/ofctl_script
参考情報
3Copyright©2016 NTT corp. All Rights Reserved.
Agenda
- Lagopus?
- デモ内容: OpenFlow + L3ルーティング
- Lagopus 0.2.10 のコンパイル&インストール
- Lagopus 0.2.10 の設定(DSL)
- DPDKの設定,インターフェースの設定
- 起動コマンド
- Flow投入 without controller
- 統計情報取得やらなにやら
- Ryuとの接続
- デモ
4Copyright©2016 NTT corp. All Rights Reserved.
Lagopus
OpenFlowスイッチのソフトウェア実装
汎用x86サーバで動作可能
高速なパケット処理と幅広いプロトコルに対応
> 10Gbps
OpenFlow1.3仕様に幅広く対応
OpenFlow コントローラ
コントロールプレーン
OpenFlow
プロトコル
OpenFlow スイッチ
データプレーン
Flow Table
フローパターン アクション
フローパターン アクション カウンター
カウンター
Flow
Table
#2
Flow
Table
#3
Flow
Table
#4
5Copyright©2016 NTT corp. All Rights Reserved.
性能評価
 単純なポートフォワードを実施した場合のスループットを測定
CPU
E5-2697v2
2.70GHz
NIC Intel X520
メモリ 64GB OS Ubuntu 14.04LTS
CPU
E5-2667v3
3.20GHz
NIC Intel XL710
メモリ 64GB OS Ubuntu 14.04LTS
 10GbE
 測定環境
 測定結果
 40GbE
 測定環境
 測定結果
6.66
8.65
9.28 9.49 9.63 9.77 9.83 9.85 9.86
0
1
2
3
4
5
6
7
8
9
10
0 200 400 600 800 1000 1200 1400
Throughput(Gbps)
Packet size (byte)
Lagopus
Wire-rate
7.7
15.5
26.5
34.2
39.2 39.5
0
5
10
15
20
25
30
35
40
0 200 400 600 800 1000 1200 1400
Throughput(Gbps)
Packet size (byte)
Lagopus
Wire-rate
6Copyright©2016 NTT corp. All Rights Reserved.
最新の性能
1.9
3.6
7.4
20.6
36.3
39.4
8.2
16.1
25.0
34.0
39.2 39.5
9.0
17.9
27.6
35.1
39.2 39.5
0
5
10
15
20
25
30
35
40
45
0 200 400 600 800 1000 1200 1400 1600
Throughput(Gbps)
Packet size (bytes)
-- -cff00 -n4 -- --fifoness none
-- -cff00 -n4 -- --bsz "(32,32),(32,32),(32,32) --fifoness none
-- -cff00 -n4 -- --bsz "(32,32),(32,32),(32,32) --fifoness none --rx "(0,0,9),(1,0,10)" --tx "(0,10),(1,9)" --w "11,12,13,14,15"
wirerate
7Copyright©2016 NTT corp. All Rights Reserved.
 Action: Normalを活用する
デモ構成
サーバ
端末1
L2ブリッジ
端末2
OpenFlow + L3 ルーティング
Application ネットワーク監視
Lagopus
KVM Namespace
8Copyright©2016 NTT corp. All Rights Reserved.
 Action: Normalを活用する
デモ構成
サーバ
端末1
L2ブリッジ
端末2
OpenFlow + L3 ルーティング
Application ネットワーク監視
Lagopus
KVM Namespace
192.168.0.10
192.168.1.10
192.168.0.1 192.168.1.1
10.0.0.1
9Copyright©2016 NTT corp. All Rights Reserved.
 端末2からのパケットはそのままルーティング
デモ構成
サーバ
端末1
L2ブリッジ
端末2
OpenFlow + L3 ルーティング
Application ネットワーク監視
Lagopus
KVM Namespace
10Copyright©2016 NTT corp. All Rights Reserved.
 端末1からのパケットはネットワーク監視アプリにも送信
デモ構成
サーバ
端末1
L2ブリッジ
端末2
OpenFlow + L3 ルーティング
Application ネットワーク監視
Lagopus
KVM Namespace
11Copyright©2016 NTT corp. All Rights Reserved.
 Action: NORMAL
確認できる機能
サーバ
端末1
L2ブリッジ
端末2
OpenFlow + L3 ルーティング
Application ネットワーク監視
Lagopus
KVM Namespace
Action: NORMAL
(L3ルーティング)
Action: NORMAL
(L2スイッチ)
12Copyright©2016 NTT corp. All Rights Reserved.
 様々なインターフェース
確認できる機能
サーバ
端末1
Bridge1
端末2
Bridge2
Application ネットワーク監視
Lagopus
KVM Namespace
Raw Socketvhost-userpipe物理
13Copyright©2016 NTT corp. All Rights Reserved.
 LagopusのDPDKオプション変更(vHOST-USER PMD を使う場合)
Lagopusのインストール(基本はQUICKSTART.mdを参考に)
diff --git a/mk/make_dpdk.sh b/mk/make_dpdk.sh
index 52914c6..92d3e97 100755
--- a/mk/make_dpdk.sh
+++ b/mk/make_dpdk.sh
@@ -80,7 +80,7 @@ edit_dpdk_config CONFIG_RTE_BUILD_SHARED_LIB=y $NEWCONFIG
#edit_dpdk_config CONFIG_RTE_LIBRTE_PMD_AESNI_MB=y $NEWCONFIG
edit_dpdk_config CONFIG_RTE_IXGBE_INC_VECTOR=n $NEWCONFIG
edit_dpdk_config CONFIG_RTE_LIBRTE_PMD_PCAP=n $NEWCONFIG
-edit_dpdk_config CONFIG_RTE_LIBRTE_PMD_VHOST=n $NEWCONFIG
+edit_dpdk_config CONFIG_RTE_LIBRTE_PMD_VHOST=y $NEWCONFIG
edit_dpdk_config CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=n $NEWCONFIG
edit_dpdk_config CONFIG_RTE_LIBRTE_PMD_BOND=n $NEWCONFIG
edit_dpdk_config CONFIG_RTE_APP_TEST=n $NEWCONFIG
v0.2.10からはデフォルトで CONFIG_RTE_LIBRTE_PMD_VHOST=y になりました
14Copyright©2016 NTT corp. All Rights Reserved.
 Hugepageの設定
 QUICKSTART.mdを参照
 コンパイル (OpenFlow hybrid switchを使う場合)
 “--enable-hybrid” : hybrid switchをenableにする
 “--enable-jumbo-frame” : ジャンボフレームに対応する
• ※ vhost-userが上手く動いて無さそう
 “gcc-full-opt” : 最適化オプションを付ける(つけないと”-O0”)
Lagopusのインストール(基本はQUICKSTART.mdを参考に)
$ ./configure --enable-hybrid --enable-jumbo-frame
$ make gcc-full-opt -j 8
$ sudo make install
15Copyright©2016 NTT corp. All Rights Reserved.
 lagopus.dsl (例)
Lagopusの設定ファイル
channel controller01-channel create -dst-addr 127.0.0.1 -protocol tcp
controller controller01 create -channel controller01-channel -role equal -connection-type main
channel controller02-channel create -dst-addr 127.0.0.1 -protocol tcp
controller controller02 create -channel controller01-channel -role equal -connection-type main
interface interface00 create -type ethernet-dpdk-phy -device :0000:07:00.1
interface interface01 create -type ethernet-dpdk-phy -device eth_pipe0
interface interface02 create -type ethernet-dpdk-phy -device eth_pipe1,attach=eth_pipe0
interface interface03 create -type ethernet-dpdk-phy -device eth_vhost0,iface=/tmp/sock0
interface interface04 create -type ethernet-rawsock -device veth0
port port01 create -interface interface00
port port02 create -interface interface01
port port03 create -interface interface02
port port04 create -interface interface03
port port05 create -interface interface04
bridge bridge01 create -controller controller01 -port port01 1 -port port02 2 -dpid 0x1
bridge bridge01 enable
bridge bridge02 create -controller controller02 -port port03 1 -port port04 2 -port port05 3 -dpid 0x2
bridge bridge02 enable
コントローラ
関連
Interface関連
port関連
Bridge関連
16Copyright©2016 NTT corp. All Rights Reserved.
 lagopus.dsl (例)
Lagopusの設定ファイル
channel controller01-channel create -dst-addr 127.0.0.1 -protocol tcp
controller controller01 create -channel controller01-channel -role equal -connection-type main
channel controller02-channel create -dst-addr 127.0.0.1 -protocol tcp
controller controller02 create -channel controller01-channel -role equal -connection-type main
interface interface00 create -type ethernet-dpdk-phy -device :0000:07:00.1
interface interface01 create -type ethernet-dpdk-phy -device eth_pipe0
interface interface02 create -type ethernet-dpdk-phy -device eth_pipe1,attach=eth_pipe0
interface interface03 create -type ethernet-dpdk-phy -device eth_vhost0,iface=/tmp/sock0
interface interface04 create -type ethernet-rawsock -device veth0
port port01 create -interface interface00
port port02 create -interface interface01
port port03 create -interface interface02
port port04 create -interface interface03
port port05 create -interface interface04
bridge bridge01 create -controller controller01 -port port01 1 -port port02 2 -dpid 0x1
bridge bridge01 enable
bridge bridge02 create -controller controller02 -port port03 1 -port port04 2 -port port05 3 -dpid 0x2
bridge bridge02 enable
物理: PCIアドレス.
(namespace用の最初のコロン
を忘れない)
17Copyright©2016 NTT corp. All Rights Reserved.
 lagopus.dsl (例)
Lagopusの設定ファイル
channel controller01-channel create -dst-addr 127.0.0.1 -protocol tcp
controller controller01 create -channel controller01-channel -role equal -connection-type main
channel controller02-channel create -dst-addr 127.0.0.1 -protocol tcp
controller controller02 create -channel controller01-channel -role equal -connection-type main
interface interface00 create -type ethernet-dpdk-phy -device :0000:07:00.1
interface interface01 create -type ethernet-dpdk-phy -device eth_pipe0
interface interface02 create -type ethernet-dpdk-phy -device eth_pipe1,attach=eth_pipe0
interface interface03 create -type ethernet-dpdk-phy -device eth_vhost0,iface=/tmp/sock0
interface interface04 create -type ethernet-rawsock -device veth0
port port01 create -interface interface00
port port02 create -interface interface01
port port03 create -interface interface02
port port04 create -interface interface03
port port05 create -interface interface04
bridge bridge01 create -controller controller01 -port port01 1 -port port02 2 -dpid 0x1
bridge bridge01 enable
bridge bridge02 create -controller controller02 -port port03 1 -port port04 2 -port port05 3 -dpid 0x2
bridge bridge02 enable
Pipe
18Copyright©2016 NTT corp. All Rights Reserved.
 lagopus.dsl (例)
Lagopusの設定ファイル
channel controller01-channel create -dst-addr 127.0.0.1 -protocol tcp
controller controller01 create -channel controller01-channel -role equal -connection-type main
channel controller02-channel create -dst-addr 127.0.0.1 -protocol tcp
controller controller02 create -channel controller01-channel -role equal -connection-type main
interface interface00 create -type ethernet-dpdk-phy -device :0000:07:00.1
interface interface01 create -type ethernet-dpdk-phy -device eth_pipe0
interface interface02 create -type ethernet-dpdk-phy -device eth_pipe1,attach=eth_pipe0
interface interface03 create -type ethernet-dpdk-phy -device eth_vhost0,iface=/tmp/sock0
interface interface04 create -type ethernet-rawsock -device veth0
port port01 create -interface interface00
port port02 create -interface interface01
port port03 create -interface interface02
port port04 create -interface interface03
port port05 create -interface interface04
bridge bridge01 create -controller controller01 -port port01 1 -port port02 2 -dpid 0x1
bridge bridge01 enable
bridge bridge02 create -controller controller02 -port port03 1 -port port04 2 -port port05 3 -dpid 0x2
bridge bridge02 enable
vhost
19Copyright©2016 NTT corp. All Rights Reserved.
 lagopus.dsl (例)
Lagopusの設定ファイル
channel controller01-channel create -dst-addr 127.0.0.1 -protocol tcp
controller controller01 create -channel controller01-channel -role equal -connection-type main
channel controller02-channel create -dst-addr 127.0.0.1 -protocol tcp
controller controller02 create -channel controller01-channel -role equal -connection-type main
interface interface00 create -type ethernet-dpdk-phy -device :0000:07:00.1
interface interface01 create -type ethernet-dpdk-phy -device eth_pipe0
interface interface02 create -type ethernet-dpdk-phy -device eth_pipe1,attach=eth_pipe0
interface interface03 create -type ethernet-dpdk-phy -device eth_vhost0,iface=/tmp/sock0
interface interface04 create -type ethernet-rawsock -device veth0
port port01 create -interface interface00
port port02 create -interface interface01
port port03 create -interface interface02
port port04 create -interface interface03
port port05 create -interface interface04
bridge bridge01 create -controller controller01 -port port01 1 -port port02 2 -dpid 0x1
bridge bridge01 enable
bridge bridge02 create -controller controller02 -port port03 1 -port port04 2 -port port05 3 -dpid 0x2
bridge bridge02 enable
rawsocket
20Copyright©2016 NTT corp. All Rights Reserved.
 lagopus.dsl (今回のデモ用の設定)
Lagopusの設定ファイル
channel controller01-channel create -dst-addr 127.0.0.1 -protocol tcp
controller controller01 create -channel controller01-channel -role equal -connection-type main
channel controller02-channel create -dst-addr 127.0.0.1 -protocol tcp
controller controller02 create -channel controller02-channel -role equal -connection-type main
interface interface00 create -type ethernet-dpdk-phy -device :0000:07:00.2 -mtu 9000
interface interface01 create -type ethernet-dpdk-phy -device eth_pipe0 -mtu 9000
interface interface02 create -type ethernet-dpdk-phy -device eth_pipe1,attach=eth_pipe0 -mtu 9000
interface interface03 create -type ethernet-dpdk-phy -device eth_vhost0,iface=/tmp/sock0 -mtu 9000
interface interface04 create -type ethernet-rawsock -device veth0 -mtu 9000
port port01 create -interface interface00
port port02 create -interface interface01
port port03 create -interface interface02
port port04 create -interface interface03
port port05 create -interface interface04
bridge bridge01 create -controller controller01 -port port01 1 -port port02 2 -dpid 0x1 -l2-bridge true -mactable-ageing-time 300 -
mactable-max-entries 8192
bridge bridge01 enable
bridge bridge02 create -controller controller02 -port port03 1 -port port04 2 -port port05 3 -dpid 0x2 -l2-bridge true -mactable-
ageing-time 300 -mactable-max-entries 8192
bridge bridge02 enable
MTUの設定
action: normalのための設定
21Copyright©2016 NTT corp. All Rights Reserved.
 DPDK (16.11版.スクリプトの名前が変わっています)
 Linuxカーネルから,DPDKに管理を移す
 Rawsock
 プロトコルオフロードをoffにする必要がある
NICの設定
$ sudo ./src/dpdk/tools/dpdk-devbind.py --bind=igb_uio 0000:02:02.0
$ sudo ethtool -K veth0 tx off
22Copyright©2016 NTT corp. All Rights Reserved.
 Lagopus 0.2.10
 DSLに記述してあれば,--vdevオプションは不要
 -p オプションは不要
Lagopusの起動
$ sudo lagopus -C ${LAGOPUS_DSL} -- -c e -n 4 -m 1024 --
23Copyright©2016 NTT corp. All Rights Reserved.
※ Lagopusを実行,interfaceを作成してからVMを起動する
 QEMUで直接起動する場合のコマンド
VMの起動
sudo qemu-system-x86_64 ¥
-M pc-1.0 -cpu host -m 4096 -smp 4 -enable-kvm ¥
-drive file=/home/vsw/IMAGES/Ubuntu64_lagopus.img,if=none,id=drive-virtio-disk0,format=raw ¥
-device virtio-blk-pci,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=2 ¥
-object memory-backend-file,id=mem,size=4096M,mem-path=/mnt/huge,share=on ¥
-mem-prealloc -mem-path /dev/hugepages ¥
-numa node,memdev=mem ¥
-chardev socket,id=chr0,path=/tmp/sock0 ¥
-netdev vhost-user,id=hostnet0,chardev=chr0,vhostforce ¥
-device virtio-net-pci,netdev=hostnet0,id=net0,csum=off,gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off ¥
-vnc 0.0.0.0:0
24Copyright©2016 NTT corp. All Rights Reserved.
※ Lagopusを実行,interfaceを作成してからVMを起動する
 libvirtを使う場合のXML定義ファイル (CPU部分)
 あとapparmorの設定.面倒であれば消す.
VMの起動
@@ -21,6 +26,10 @@
</features>
<cpu mode='host-model'>
<model fallback='allow'/>
+ <topology sockets='1' cores='8' threads='1'/>
+ <numa>
+ <cell id='0' cpus='0-7' memory='8388608' unit='KiB' memAccess='shared'/>
+ </numa>
</cpu>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
25Copyright©2016 NTT corp. All Rights Reserved.
※ Lagopusを実行,interfaceを作成してからVMを起動する
 libvirtを使う場合のXML定義ファイル (DPDK利用のinterface部分)
 あとapparmorの設定.面倒であれば消す.
VMの起動
<interface type='vhostuser'>
<source type='unix' path='/tmp/sock0' mode='client'/>
<mac address='52:54:00:00:00:01'/>
<model type='virtio'/>
<driver>
<host csum='off' gso='off' tso4='off' tso6='off' ecn='off' mrg_rxbuf='off'/>
<guest csum='off' tso4='off' tso6='off' ecn='off' ufo='off'/>
</driver>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</interface>
26Copyright©2016 NTT corp. All Rights Reserved.
 IPの設定(Lagopus起動,interface作成後に操作)
 ※IPを設定しないとL2スイッチとして動作します
 DSLで記述したinterfaceと同名のinterfaceが出来ているのでそれに設定
LagopusのIPアドレスの設定
$ sudo ip addr add 10.0.0.1 dev interface02
$ sudo ip addr add 192.168.0.1 dev interface03
$ sudo ip addr add 192.168.1.1 dev interface04
27Copyright©2016 NTT corp. All Rights Reserved.
 telnet
 スクリプト
 https://github.com/hibitomo/lago-dsl
 Document
 https://github.com/lagopus/lagopus/blob/master/docs/how-to-use-
ds-flow-cmd.md
コントローラレスのFlow投入
$ telnet 127.0.0.1 12345
flow bridge01 add priority=1 apply_actions=output:normal
$ ./lago-dsl.py flow bridge01 add priority=1 apply_actions=output:normal
$ ./lago-dsl.py flow bridge02 add priority=1 apply_actions=output:normal
28Copyright©2016 NTT corp. All Rights Reserved.
 OpenFlow プログラムからの取得
 lagoshで取得 ( `$ lagosh -c show interface`等)
 DSLからの取得
 DSLを使った情報取得のスクリプト
 https://github.com/hibitomo/lago-mon
統計情報の取得
$ ./lago-dsl/lago-dsl.py interface interface00 stats
[{u'name': u'interface00', u'rx-dropped': 0, u'tx-errors': 0, u'rx-bytes': 4520858, u'tx-packets': 1006, u'rx-
packets': 1606, u'tx-bytes': 3319226, u'rx-errors': 0, u'tx-dropped': 0}]
$ ./lago-mon/ifstats_monitor.py -l 10
{"timestamp": "2016-06-08T14:13:04.253669", "interfaces": {"interface1": {"name":
"interface1", "rx-dropped": 0, "tx-errors": 0, "rx-bytes": 0, "tx-packets": 0, "rx-
packets": 0, "tx-bytes": 0, "rx-errors": 0, "tx-dropped": 0}, "interface0": {"name":
"interface0", "rx-dropped": 0, "tx-errors": 0, "rx-bytes": 0, "tx-packets": 0, "rx-
packets": 0, "tx-bytes": 0, "rx-errors": 0, "tx-dropped": 0}}}
29Copyright©2016 NTT corp. All Rights Reserved.
 とりあえずping
 まだコントローラ起動してないよ
デモ
サーバ
端末1
L2ブリッジ OpenFlow + L3 ルーティング
Application ネットワーク監視
Lagopus
KVM Namespace
30Copyright©2016 NTT corp. All Rights Reserved.
 Ryuの起動
 Bridgeの接続,Flowの確認
Ryuと接続
$ ryu-manager /usr/local/lib/python2.7/dist-packages/ryu/app/ofctl_rest.py
$ ~/ofctl_script/check_dpid
[1,2]
$ ~/ofctl_script/show_flow -d 1
table 0
{"match":{},"actions":["OUTPUT:NORMAL"],"cookie":0,"packet_count":0,"priority":1,"table_id":0}
$ ~/ofctl_script/show_flow -d 2
table 0
{"match":{},"actions":["OUTPUT:NORMAL"],"cookie":0,"packet_count":0,"priority":1,"table_id":0}
31Copyright©2016 NTT corp. All Rights Reserved.
 Flow投入
 通常のルーティングに加え,IP:10.0.0.10 からのパケットはポート3にも出
力する
Ryuと接続
$ ~/ofctl_script/add_flow -d 2 ¥
{"priority":100,"cookie":1,"actions":["OUTPUT:NORMAL","OUTPUT:3"],"match":{"eth_type":2048,"ipv4_src":"
10.0.0.10"}}
32Copyright©2016 NTT corp. All Rights Reserved.
 時間がないのでしないかも
デモ
サーバ
端末1
L2ブリッジ OpenFlow + L3 ルーティング
Application ネットワーク監視
Lagopus
KVM Namespace
33Copyright©2016 NTT corp. All Rights Reserved.
 Lagopusは高速なOpenFlow1.3対応のソフトウェアスイッチ
 output: normal で簡単なL2スイッチング対応
 output: normal で簡単なL3ルーティング対応
 仮想マシンを含む様々なインターフェースとの接続
 OpenFlow + L3ルーティングでこれまでにないネットワーク運用が
可能
 本スライドの内容とQUICKSTART.mdを参考にすれば同等の環境を構
築できるはず...
まとめ
34Copyright©2016 NTT corp. All Rights Reserved.
ご清聴ありがとうございました
34
########
## ;;;; ##
## #### ##
#### ##
## ## ####
##### ######## ##
############## ## ##
### ######## ## ##
#### ## ## ## #### ##
#### ## ## ## ## ##
###### #### ####
#### #### ##########
####################
mmmm ##
##########

Contenu connexe

Tendances

Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)Tomoya Hibi
 
Lagopusで試すFirewall
Lagopusで試すFirewallLagopusで試すFirewall
Lagopusで試すFirewallTomoya Hibi
 
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...Tomoya Hibi
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch UsecasesSakiko Kawai
 
自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介Takeshi Take
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_netTomoya Hibi
 
VPP事始め
VPP事始めVPP事始め
VPP事始めnpsg
 
Xeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdkXeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdkMasaru Oki
 
OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察Naoto MATSUMOTO
 
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~npsg
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Tomoya Hibi
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)Kentaro Ebisawa
 
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定シスコシステムズ合同会社
 
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介Takashi Sogabe
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばYoshihiro Nakajima
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始めtetsusat
 
Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月VirtualTech Japan Inc.
 

Tendances (20)

Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)
 
Lagopusで試すFirewall
Lagopusで試すFirewallLagopusで試すFirewall
Lagopusで試すFirewall
 
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
 
自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_net
 
Lagopus Router
Lagopus RouterLagopus Router
Lagopus Router
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
Xeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdkXeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdk
 
Lagos running on small factor machine
Lagos running on small factor machineLagos running on small factor machine
Lagos running on small factor machine
 
OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察
 
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
 
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
 
VTI の中身
VTI の中身VTI の中身
VTI の中身
 
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそば
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月
 

Similaire à Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)

Container Networking Deep Dive
Container Networking Deep DiveContainer Networking Deep Dive
Container Networking Deep DiveHirofumi Ichihara
 
20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_finalKazumasa Ikuta
 
Lagopusで試すFW
Lagopusで試すFWLagopusで試すFW
Lagopusで試すFWTomoya Hibi
 
Nsegソフトウェアルータvyatta
NsegソフトウェアルータvyattaNsegソフトウェアルータvyatta
Nsegソフトウェアルータvyattajem 3
 
161027 net opscoding-junos-automation
161027 net opscoding-junos-automation161027 net opscoding-junos-automation
161027 net opscoding-junos-automationHiromi Tsukamoto
 
Openstack neutron vtjseminar_20160302
Openstack neutron vtjseminar_20160302Openstack neutron vtjseminar_20160302
Openstack neutron vtjseminar_20160302Takehiro Kudou
 
Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419エイシュン コンドウ
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりYuya Rin
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 VirtualTech Japan Inc.
 
Cloud stack徹底入門7章 20130514
Cloud stack徹底入門7章 20130514Cloud stack徹底入門7章 20130514
Cloud stack徹底入門7章 20130514samemoon
 
Openvswitch vps 20120429資料
Openvswitch vps 20120429資料Openvswitch vps 20120429資料
Openvswitch vps 20120429資料Daisuke Nakajima
 
KES IoT Logicのご紹介(金沢エンジニアリングシステムズ)
KES IoT Logicのご紹介(金沢エンジニアリングシステムズ)KES IoT Logicのご紹介(金沢エンジニアリングシステムズ)
KES IoT Logicのご紹介(金沢エンジニアリングシステムズ)Yasuhiro Kobayashi
 
ARPトラブルあるある JANOG38 LT
ARPトラブルあるある JANOG38 LTARPトラブルあるある JANOG38 LT
ARPトラブルあるある JANOG38 LT一清 井上
 
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月VirtualTech Japan Inc.
 
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成Takashi Kanai
 
Vyatta: The Virtual Router for Cloud Computing Enviroment
Vyatta: The Virtual Router for Cloud Computing EnviromentVyatta: The Virtual Router for Cloud Computing Enviroment
Vyatta: The Virtual Router for Cloud Computing EnviromentNaoto MATSUMOTO
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlowToshiki Tsuboi
 

Similaire à Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ) (20)

Container Networking Deep Dive
Container Networking Deep DiveContainer Networking Deep Dive
Container Networking Deep Dive
 
20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_final
 
Lagopusで試すFW
Lagopusで試すFWLagopusで試すFW
Lagopusで試すFW
 
osoljp 2011.08
osoljp 2011.08osoljp 2011.08
osoljp 2011.08
 
P2Pって何?
P2Pって何?P2Pって何?
P2Pって何?
 
Nsegソフトウェアルータvyatta
NsegソフトウェアルータvyattaNsegソフトウェアルータvyatta
Nsegソフトウェアルータvyatta
 
161027 net opscoding-junos-automation
161027 net opscoding-junos-automation161027 net opscoding-junos-automation
161027 net opscoding-junos-automation
 
Openstack neutron vtjseminar_20160302
Openstack neutron vtjseminar_20160302Openstack neutron vtjseminar_20160302
Openstack neutron vtjseminar_20160302
 
Ansible npstudy-shtsuchi
Ansible npstudy-shtsuchiAnsible npstudy-shtsuchi
Ansible npstudy-shtsuchi
 
Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
 
Cloud stack徹底入門7章 20130514
Cloud stack徹底入門7章 20130514Cloud stack徹底入門7章 20130514
Cloud stack徹底入門7章 20130514
 
Openvswitch vps 20120429資料
Openvswitch vps 20120429資料Openvswitch vps 20120429資料
Openvswitch vps 20120429資料
 
KES IoT Logicのご紹介(金沢エンジニアリングシステムズ)
KES IoT Logicのご紹介(金沢エンジニアリングシステムズ)KES IoT Logicのご紹介(金沢エンジニアリングシステムズ)
KES IoT Logicのご紹介(金沢エンジニアリングシステムズ)
 
ARPトラブルあるある JANOG38 LT
ARPトラブルあるある JANOG38 LTARPトラブルあるある JANOG38 LT
ARPトラブルあるある JANOG38 LT
 
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
 
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
 
Vyatta: The Virtual Router for Cloud Computing Enviroment
Vyatta: The Virtual Router for Cloud Computing EnviromentVyatta: The Virtual Router for Cloud Computing Enviroment
Vyatta: The Virtual Router for Cloud Computing Enviroment
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlow
 

Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)

  • 1. 0Copyright©2016 NTT corp. All Rights Reserved. TremaDay # 10 in Okinawa Lagopusで試すL3ルーティング+α 2016/12/07 hibitomo 0
  • 2. 1Copyright©2016 NTT corp. All Rights Reserved.  いろいろLagopusの仕様が変わっているので情報をまとめてイン ターネットに放流したい.  インストール  vhost  Hybrid Switch (action:NORMAL)  DSL仕様  断片的な情報を @masaru0714 さんが公開しているのでそれをまと める. 今日の目標
  • 3. 2Copyright©2016 NTT corp. All Rights Reserved.  @masaru0714 さんのスライド群  http://www.slideshare.net/masaruoki9  Lagopus book  http://www.lagopus.org/lagopus-book/en/html/  本発表で利用しているスクリプト  https://github.com/hibitomo/lagopus-tools  https://github.com/hibitomo/lago-dsl  https://github.com/hibitomo/lago-mon  https://github.com/hibitomo/ofctl_script 参考情報
  • 4. 3Copyright©2016 NTT corp. All Rights Reserved. Agenda - Lagopus? - デモ内容: OpenFlow + L3ルーティング - Lagopus 0.2.10 のコンパイル&インストール - Lagopus 0.2.10 の設定(DSL) - DPDKの設定,インターフェースの設定 - 起動コマンド - Flow投入 without controller - 統計情報取得やらなにやら - Ryuとの接続 - デモ
  • 5. 4Copyright©2016 NTT corp. All Rights Reserved. Lagopus OpenFlowスイッチのソフトウェア実装 汎用x86サーバで動作可能 高速なパケット処理と幅広いプロトコルに対応 > 10Gbps OpenFlow1.3仕様に幅広く対応 OpenFlow コントローラ コントロールプレーン OpenFlow プロトコル OpenFlow スイッチ データプレーン Flow Table フローパターン アクション フローパターン アクション カウンター カウンター Flow Table #2 Flow Table #3 Flow Table #4
  • 6. 5Copyright©2016 NTT corp. All Rights Reserved. 性能評価  単純なポートフォワードを実施した場合のスループットを測定 CPU E5-2697v2 2.70GHz NIC Intel X520 メモリ 64GB OS Ubuntu 14.04LTS CPU E5-2667v3 3.20GHz NIC Intel XL710 メモリ 64GB OS Ubuntu 14.04LTS  10GbE  測定環境  測定結果  40GbE  測定環境  測定結果 6.66 8.65 9.28 9.49 9.63 9.77 9.83 9.85 9.86 0 1 2 3 4 5 6 7 8 9 10 0 200 400 600 800 1000 1200 1400 Throughput(Gbps) Packet size (byte) Lagopus Wire-rate 7.7 15.5 26.5 34.2 39.2 39.5 0 5 10 15 20 25 30 35 40 0 200 400 600 800 1000 1200 1400 Throughput(Gbps) Packet size (byte) Lagopus Wire-rate
  • 7. 6Copyright©2016 NTT corp. All Rights Reserved. 最新の性能 1.9 3.6 7.4 20.6 36.3 39.4 8.2 16.1 25.0 34.0 39.2 39.5 9.0 17.9 27.6 35.1 39.2 39.5 0 5 10 15 20 25 30 35 40 45 0 200 400 600 800 1000 1200 1400 1600 Throughput(Gbps) Packet size (bytes) -- -cff00 -n4 -- --fifoness none -- -cff00 -n4 -- --bsz "(32,32),(32,32),(32,32) --fifoness none -- -cff00 -n4 -- --bsz "(32,32),(32,32),(32,32) --fifoness none --rx "(0,0,9),(1,0,10)" --tx "(0,10),(1,9)" --w "11,12,13,14,15" wirerate
  • 8. 7Copyright©2016 NTT corp. All Rights Reserved.  Action: Normalを活用する デモ構成 サーバ 端末1 L2ブリッジ 端末2 OpenFlow + L3 ルーティング Application ネットワーク監視 Lagopus KVM Namespace
  • 9. 8Copyright©2016 NTT corp. All Rights Reserved.  Action: Normalを活用する デモ構成 サーバ 端末1 L2ブリッジ 端末2 OpenFlow + L3 ルーティング Application ネットワーク監視 Lagopus KVM Namespace 192.168.0.10 192.168.1.10 192.168.0.1 192.168.1.1 10.0.0.1
  • 10. 9Copyright©2016 NTT corp. All Rights Reserved.  端末2からのパケットはそのままルーティング デモ構成 サーバ 端末1 L2ブリッジ 端末2 OpenFlow + L3 ルーティング Application ネットワーク監視 Lagopus KVM Namespace
  • 11. 10Copyright©2016 NTT corp. All Rights Reserved.  端末1からのパケットはネットワーク監視アプリにも送信 デモ構成 サーバ 端末1 L2ブリッジ 端末2 OpenFlow + L3 ルーティング Application ネットワーク監視 Lagopus KVM Namespace
  • 12. 11Copyright©2016 NTT corp. All Rights Reserved.  Action: NORMAL 確認できる機能 サーバ 端末1 L2ブリッジ 端末2 OpenFlow + L3 ルーティング Application ネットワーク監視 Lagopus KVM Namespace Action: NORMAL (L3ルーティング) Action: NORMAL (L2スイッチ)
  • 13. 12Copyright©2016 NTT corp. All Rights Reserved.  様々なインターフェース 確認できる機能 サーバ 端末1 Bridge1 端末2 Bridge2 Application ネットワーク監視 Lagopus KVM Namespace Raw Socketvhost-userpipe物理
  • 14. 13Copyright©2016 NTT corp. All Rights Reserved.  LagopusのDPDKオプション変更(vHOST-USER PMD を使う場合) Lagopusのインストール(基本はQUICKSTART.mdを参考に) diff --git a/mk/make_dpdk.sh b/mk/make_dpdk.sh index 52914c6..92d3e97 100755 --- a/mk/make_dpdk.sh +++ b/mk/make_dpdk.sh @@ -80,7 +80,7 @@ edit_dpdk_config CONFIG_RTE_BUILD_SHARED_LIB=y $NEWCONFIG #edit_dpdk_config CONFIG_RTE_LIBRTE_PMD_AESNI_MB=y $NEWCONFIG edit_dpdk_config CONFIG_RTE_IXGBE_INC_VECTOR=n $NEWCONFIG edit_dpdk_config CONFIG_RTE_LIBRTE_PMD_PCAP=n $NEWCONFIG -edit_dpdk_config CONFIG_RTE_LIBRTE_PMD_VHOST=n $NEWCONFIG +edit_dpdk_config CONFIG_RTE_LIBRTE_PMD_VHOST=y $NEWCONFIG edit_dpdk_config CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=n $NEWCONFIG edit_dpdk_config CONFIG_RTE_LIBRTE_PMD_BOND=n $NEWCONFIG edit_dpdk_config CONFIG_RTE_APP_TEST=n $NEWCONFIG v0.2.10からはデフォルトで CONFIG_RTE_LIBRTE_PMD_VHOST=y になりました
  • 15. 14Copyright©2016 NTT corp. All Rights Reserved.  Hugepageの設定  QUICKSTART.mdを参照  コンパイル (OpenFlow hybrid switchを使う場合)  “--enable-hybrid” : hybrid switchをenableにする  “--enable-jumbo-frame” : ジャンボフレームに対応する • ※ vhost-userが上手く動いて無さそう  “gcc-full-opt” : 最適化オプションを付ける(つけないと”-O0”) Lagopusのインストール(基本はQUICKSTART.mdを参考に) $ ./configure --enable-hybrid --enable-jumbo-frame $ make gcc-full-opt -j 8 $ sudo make install
  • 16. 15Copyright©2016 NTT corp. All Rights Reserved.  lagopus.dsl (例) Lagopusの設定ファイル channel controller01-channel create -dst-addr 127.0.0.1 -protocol tcp controller controller01 create -channel controller01-channel -role equal -connection-type main channel controller02-channel create -dst-addr 127.0.0.1 -protocol tcp controller controller02 create -channel controller01-channel -role equal -connection-type main interface interface00 create -type ethernet-dpdk-phy -device :0000:07:00.1 interface interface01 create -type ethernet-dpdk-phy -device eth_pipe0 interface interface02 create -type ethernet-dpdk-phy -device eth_pipe1,attach=eth_pipe0 interface interface03 create -type ethernet-dpdk-phy -device eth_vhost0,iface=/tmp/sock0 interface interface04 create -type ethernet-rawsock -device veth0 port port01 create -interface interface00 port port02 create -interface interface01 port port03 create -interface interface02 port port04 create -interface interface03 port port05 create -interface interface04 bridge bridge01 create -controller controller01 -port port01 1 -port port02 2 -dpid 0x1 bridge bridge01 enable bridge bridge02 create -controller controller02 -port port03 1 -port port04 2 -port port05 3 -dpid 0x2 bridge bridge02 enable コントローラ 関連 Interface関連 port関連 Bridge関連
  • 17. 16Copyright©2016 NTT corp. All Rights Reserved.  lagopus.dsl (例) Lagopusの設定ファイル channel controller01-channel create -dst-addr 127.0.0.1 -protocol tcp controller controller01 create -channel controller01-channel -role equal -connection-type main channel controller02-channel create -dst-addr 127.0.0.1 -protocol tcp controller controller02 create -channel controller01-channel -role equal -connection-type main interface interface00 create -type ethernet-dpdk-phy -device :0000:07:00.1 interface interface01 create -type ethernet-dpdk-phy -device eth_pipe0 interface interface02 create -type ethernet-dpdk-phy -device eth_pipe1,attach=eth_pipe0 interface interface03 create -type ethernet-dpdk-phy -device eth_vhost0,iface=/tmp/sock0 interface interface04 create -type ethernet-rawsock -device veth0 port port01 create -interface interface00 port port02 create -interface interface01 port port03 create -interface interface02 port port04 create -interface interface03 port port05 create -interface interface04 bridge bridge01 create -controller controller01 -port port01 1 -port port02 2 -dpid 0x1 bridge bridge01 enable bridge bridge02 create -controller controller02 -port port03 1 -port port04 2 -port port05 3 -dpid 0x2 bridge bridge02 enable 物理: PCIアドレス. (namespace用の最初のコロン を忘れない)
  • 18. 17Copyright©2016 NTT corp. All Rights Reserved.  lagopus.dsl (例) Lagopusの設定ファイル channel controller01-channel create -dst-addr 127.0.0.1 -protocol tcp controller controller01 create -channel controller01-channel -role equal -connection-type main channel controller02-channel create -dst-addr 127.0.0.1 -protocol tcp controller controller02 create -channel controller01-channel -role equal -connection-type main interface interface00 create -type ethernet-dpdk-phy -device :0000:07:00.1 interface interface01 create -type ethernet-dpdk-phy -device eth_pipe0 interface interface02 create -type ethernet-dpdk-phy -device eth_pipe1,attach=eth_pipe0 interface interface03 create -type ethernet-dpdk-phy -device eth_vhost0,iface=/tmp/sock0 interface interface04 create -type ethernet-rawsock -device veth0 port port01 create -interface interface00 port port02 create -interface interface01 port port03 create -interface interface02 port port04 create -interface interface03 port port05 create -interface interface04 bridge bridge01 create -controller controller01 -port port01 1 -port port02 2 -dpid 0x1 bridge bridge01 enable bridge bridge02 create -controller controller02 -port port03 1 -port port04 2 -port port05 3 -dpid 0x2 bridge bridge02 enable Pipe
  • 19. 18Copyright©2016 NTT corp. All Rights Reserved.  lagopus.dsl (例) Lagopusの設定ファイル channel controller01-channel create -dst-addr 127.0.0.1 -protocol tcp controller controller01 create -channel controller01-channel -role equal -connection-type main channel controller02-channel create -dst-addr 127.0.0.1 -protocol tcp controller controller02 create -channel controller01-channel -role equal -connection-type main interface interface00 create -type ethernet-dpdk-phy -device :0000:07:00.1 interface interface01 create -type ethernet-dpdk-phy -device eth_pipe0 interface interface02 create -type ethernet-dpdk-phy -device eth_pipe1,attach=eth_pipe0 interface interface03 create -type ethernet-dpdk-phy -device eth_vhost0,iface=/tmp/sock0 interface interface04 create -type ethernet-rawsock -device veth0 port port01 create -interface interface00 port port02 create -interface interface01 port port03 create -interface interface02 port port04 create -interface interface03 port port05 create -interface interface04 bridge bridge01 create -controller controller01 -port port01 1 -port port02 2 -dpid 0x1 bridge bridge01 enable bridge bridge02 create -controller controller02 -port port03 1 -port port04 2 -port port05 3 -dpid 0x2 bridge bridge02 enable vhost
  • 20. 19Copyright©2016 NTT corp. All Rights Reserved.  lagopus.dsl (例) Lagopusの設定ファイル channel controller01-channel create -dst-addr 127.0.0.1 -protocol tcp controller controller01 create -channel controller01-channel -role equal -connection-type main channel controller02-channel create -dst-addr 127.0.0.1 -protocol tcp controller controller02 create -channel controller01-channel -role equal -connection-type main interface interface00 create -type ethernet-dpdk-phy -device :0000:07:00.1 interface interface01 create -type ethernet-dpdk-phy -device eth_pipe0 interface interface02 create -type ethernet-dpdk-phy -device eth_pipe1,attach=eth_pipe0 interface interface03 create -type ethernet-dpdk-phy -device eth_vhost0,iface=/tmp/sock0 interface interface04 create -type ethernet-rawsock -device veth0 port port01 create -interface interface00 port port02 create -interface interface01 port port03 create -interface interface02 port port04 create -interface interface03 port port05 create -interface interface04 bridge bridge01 create -controller controller01 -port port01 1 -port port02 2 -dpid 0x1 bridge bridge01 enable bridge bridge02 create -controller controller02 -port port03 1 -port port04 2 -port port05 3 -dpid 0x2 bridge bridge02 enable rawsocket
  • 21. 20Copyright©2016 NTT corp. All Rights Reserved.  lagopus.dsl (今回のデモ用の設定) Lagopusの設定ファイル channel controller01-channel create -dst-addr 127.0.0.1 -protocol tcp controller controller01 create -channel controller01-channel -role equal -connection-type main channel controller02-channel create -dst-addr 127.0.0.1 -protocol tcp controller controller02 create -channel controller02-channel -role equal -connection-type main interface interface00 create -type ethernet-dpdk-phy -device :0000:07:00.2 -mtu 9000 interface interface01 create -type ethernet-dpdk-phy -device eth_pipe0 -mtu 9000 interface interface02 create -type ethernet-dpdk-phy -device eth_pipe1,attach=eth_pipe0 -mtu 9000 interface interface03 create -type ethernet-dpdk-phy -device eth_vhost0,iface=/tmp/sock0 -mtu 9000 interface interface04 create -type ethernet-rawsock -device veth0 -mtu 9000 port port01 create -interface interface00 port port02 create -interface interface01 port port03 create -interface interface02 port port04 create -interface interface03 port port05 create -interface interface04 bridge bridge01 create -controller controller01 -port port01 1 -port port02 2 -dpid 0x1 -l2-bridge true -mactable-ageing-time 300 - mactable-max-entries 8192 bridge bridge01 enable bridge bridge02 create -controller controller02 -port port03 1 -port port04 2 -port port05 3 -dpid 0x2 -l2-bridge true -mactable- ageing-time 300 -mactable-max-entries 8192 bridge bridge02 enable MTUの設定 action: normalのための設定
  • 22. 21Copyright©2016 NTT corp. All Rights Reserved.  DPDK (16.11版.スクリプトの名前が変わっています)  Linuxカーネルから,DPDKに管理を移す  Rawsock  プロトコルオフロードをoffにする必要がある NICの設定 $ sudo ./src/dpdk/tools/dpdk-devbind.py --bind=igb_uio 0000:02:02.0 $ sudo ethtool -K veth0 tx off
  • 23. 22Copyright©2016 NTT corp. All Rights Reserved.  Lagopus 0.2.10  DSLに記述してあれば,--vdevオプションは不要  -p オプションは不要 Lagopusの起動 $ sudo lagopus -C ${LAGOPUS_DSL} -- -c e -n 4 -m 1024 --
  • 24. 23Copyright©2016 NTT corp. All Rights Reserved. ※ Lagopusを実行,interfaceを作成してからVMを起動する  QEMUで直接起動する場合のコマンド VMの起動 sudo qemu-system-x86_64 ¥ -M pc-1.0 -cpu host -m 4096 -smp 4 -enable-kvm ¥ -drive file=/home/vsw/IMAGES/Ubuntu64_lagopus.img,if=none,id=drive-virtio-disk0,format=raw ¥ -device virtio-blk-pci,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=2 ¥ -object memory-backend-file,id=mem,size=4096M,mem-path=/mnt/huge,share=on ¥ -mem-prealloc -mem-path /dev/hugepages ¥ -numa node,memdev=mem ¥ -chardev socket,id=chr0,path=/tmp/sock0 ¥ -netdev vhost-user,id=hostnet0,chardev=chr0,vhostforce ¥ -device virtio-net-pci,netdev=hostnet0,id=net0,csum=off,gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off ¥ -vnc 0.0.0.0:0
  • 25. 24Copyright©2016 NTT corp. All Rights Reserved. ※ Lagopusを実行,interfaceを作成してからVMを起動する  libvirtを使う場合のXML定義ファイル (CPU部分)  あとapparmorの設定.面倒であれば消す. VMの起動 @@ -21,6 +26,10 @@ </features> <cpu mode='host-model'> <model fallback='allow'/> + <topology sockets='1' cores='8' threads='1'/> + <numa> + <cell id='0' cpus='0-7' memory='8388608' unit='KiB' memAccess='shared'/> + </numa> </cpu> <clock offset='utc'> <timer name='rtc' tickpolicy='catchup'/>
  • 26. 25Copyright©2016 NTT corp. All Rights Reserved. ※ Lagopusを実行,interfaceを作成してからVMを起動する  libvirtを使う場合のXML定義ファイル (DPDK利用のinterface部分)  あとapparmorの設定.面倒であれば消す. VMの起動 <interface type='vhostuser'> <source type='unix' path='/tmp/sock0' mode='client'/> <mac address='52:54:00:00:00:01'/> <model type='virtio'/> <driver> <host csum='off' gso='off' tso4='off' tso6='off' ecn='off' mrg_rxbuf='off'/> <guest csum='off' tso4='off' tso6='off' ecn='off' ufo='off'/> </driver> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </interface>
  • 27. 26Copyright©2016 NTT corp. All Rights Reserved.  IPの設定(Lagopus起動,interface作成後に操作)  ※IPを設定しないとL2スイッチとして動作します  DSLで記述したinterfaceと同名のinterfaceが出来ているのでそれに設定 LagopusのIPアドレスの設定 $ sudo ip addr add 10.0.0.1 dev interface02 $ sudo ip addr add 192.168.0.1 dev interface03 $ sudo ip addr add 192.168.1.1 dev interface04
  • 28. 27Copyright©2016 NTT corp. All Rights Reserved.  telnet  スクリプト  https://github.com/hibitomo/lago-dsl  Document  https://github.com/lagopus/lagopus/blob/master/docs/how-to-use- ds-flow-cmd.md コントローラレスのFlow投入 $ telnet 127.0.0.1 12345 flow bridge01 add priority=1 apply_actions=output:normal $ ./lago-dsl.py flow bridge01 add priority=1 apply_actions=output:normal $ ./lago-dsl.py flow bridge02 add priority=1 apply_actions=output:normal
  • 29. 28Copyright©2016 NTT corp. All Rights Reserved.  OpenFlow プログラムからの取得  lagoshで取得 ( `$ lagosh -c show interface`等)  DSLからの取得  DSLを使った情報取得のスクリプト  https://github.com/hibitomo/lago-mon 統計情報の取得 $ ./lago-dsl/lago-dsl.py interface interface00 stats [{u'name': u'interface00', u'rx-dropped': 0, u'tx-errors': 0, u'rx-bytes': 4520858, u'tx-packets': 1006, u'rx- packets': 1606, u'tx-bytes': 3319226, u'rx-errors': 0, u'tx-dropped': 0}] $ ./lago-mon/ifstats_monitor.py -l 10 {"timestamp": "2016-06-08T14:13:04.253669", "interfaces": {"interface1": {"name": "interface1", "rx-dropped": 0, "tx-errors": 0, "rx-bytes": 0, "tx-packets": 0, "rx- packets": 0, "tx-bytes": 0, "rx-errors": 0, "tx-dropped": 0}, "interface0": {"name": "interface0", "rx-dropped": 0, "tx-errors": 0, "rx-bytes": 0, "tx-packets": 0, "rx- packets": 0, "tx-bytes": 0, "rx-errors": 0, "tx-dropped": 0}}}
  • 30. 29Copyright©2016 NTT corp. All Rights Reserved.  とりあえずping  まだコントローラ起動してないよ デモ サーバ 端末1 L2ブリッジ OpenFlow + L3 ルーティング Application ネットワーク監視 Lagopus KVM Namespace
  • 31. 30Copyright©2016 NTT corp. All Rights Reserved.  Ryuの起動  Bridgeの接続,Flowの確認 Ryuと接続 $ ryu-manager /usr/local/lib/python2.7/dist-packages/ryu/app/ofctl_rest.py $ ~/ofctl_script/check_dpid [1,2] $ ~/ofctl_script/show_flow -d 1 table 0 {"match":{},"actions":["OUTPUT:NORMAL"],"cookie":0,"packet_count":0,"priority":1,"table_id":0} $ ~/ofctl_script/show_flow -d 2 table 0 {"match":{},"actions":["OUTPUT:NORMAL"],"cookie":0,"packet_count":0,"priority":1,"table_id":0}
  • 32. 31Copyright©2016 NTT corp. All Rights Reserved.  Flow投入  通常のルーティングに加え,IP:10.0.0.10 からのパケットはポート3にも出 力する Ryuと接続 $ ~/ofctl_script/add_flow -d 2 ¥ {"priority":100,"cookie":1,"actions":["OUTPUT:NORMAL","OUTPUT:3"],"match":{"eth_type":2048,"ipv4_src":" 10.0.0.10"}}
  • 33. 32Copyright©2016 NTT corp. All Rights Reserved.  時間がないのでしないかも デモ サーバ 端末1 L2ブリッジ OpenFlow + L3 ルーティング Application ネットワーク監視 Lagopus KVM Namespace
  • 34. 33Copyright©2016 NTT corp. All Rights Reserved.  Lagopusは高速なOpenFlow1.3対応のソフトウェアスイッチ  output: normal で簡単なL2スイッチング対応  output: normal で簡単なL3ルーティング対応  仮想マシンを含む様々なインターフェースとの接続  OpenFlow + L3ルーティングでこれまでにないネットワーク運用が 可能  本スライドの内容とQUICKSTART.mdを参考にすれば同等の環境を構 築できるはず... まとめ
  • 35. 34Copyright©2016 NTT corp. All Rights Reserved. ご清聴ありがとうございました 34 ######## ## ;;;; ## ## #### ## #### ## ## ## #### ##### ######## ## ############## ## ## ### ######## ## ## #### ## ## ## #### ## #### ## ## ## ## ## ###### #### #### #### #### ########## #################### mmmm ## ##########