Copyright©2015 NTT corp. All Rights Reserved.
Birds in Cloud
SDN/NFV: Lagopus & VNF with Vhost
2016/07/02
hibitomo
1
Copyright©2015 NTT corp. All Rights Reserved.
Agenda
- Lagopus?
- Birds in ShowNet
- FPGA + Lagopus + VNF
- Lagopus設定のポイント
- コアアサイン
- Flow設計
- 簡易性能評価
Copyright©2015 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
Copyright©2015 NTT corp. All Rights Reserved.
What is Lagopus (雷鳥属)?
Lagopus is a small genus of birds in the grouse subfamily, commonly
known as ptarmigans. All living in tundra or cold upland areas.
http://en.wikipedia.org/wiki/Lagopus
http://en.wikipedia.org/wiki/Lagopus#mediaviewer/File:Rock_Ptarmigan_(Lagopus_Muta).jpg
Copyright©2015 NTT corp. All Rights Reserved.
What is Lagopus (雷鳥属)?
5
Copyright©2015 NTT corp. All Rights Reserved.
Birds in ShowNet
- 今年はここに居ました.
引用:https://www.facebook.com/interop.shownet
Copyright©2015 NTT corp. All Rights Reserved.
VNF(VirNOS) + Lagopus + FPGA
- 処理はFPGA、転送はLagopus
- NetFPGA-SUME
- IPアドレスからハッシュを計算
- ハッシュ値にもとづいて転送先のVMの目印をSrc MACに書き込む(256種類)
- LagopusはSrc MAC値に応じてVMへ転送
7
HV VNF VNF VNF
lagopus
lagopus
uplink
downlink
hash計算と
MACへの埋
め込み
MACにもとづいて
VMへ送信(staticな
flow entry)
Copyright©2015 NTT corp. All Rights Reserved.
今回接続したVNF
• VirNOS
• IP infusion のコントリビュート
• vRouter/vCPE solutionのVNF
• DPDKが利用可能.
• High performanceモードとTinyモード等の動作モード
• 今回はTinyモードのVirNOSをDPDKでLagopusと接続
8
Copyright©2015 NTT corp. All Rights Reserved. 9
Copyright©2015 NTT corp. All Rights Reserved.
Challenges
- ホストのLagopus(DPDK)とゲストのVirnos(DPDK)の接続
- 多ポート設定と負荷分散(ShowNetでは8台に分散.ポート数は計18)
10
HV VirNOS VirNOS VirNOS VirNOS
lagopus
lagopus
port2
port4 port6 port8 port10
port9port7port5port3
port1
Eth0
Eth1
Eth0
Eth1
Eth0
Eth1
Eth0
Eth1
Copyright©2015 NTT corp. All Rights Reserved.
Agenda
- Lagopus?
- Birds in ShowNet
- FPGA + Lagopus + VNF
- Lagopus設定のポイント
- コアアサイン
- Flow設計
- 簡易性能評価
Copyright©2015 NTT corp. All Rights Reserved.
設定のポイント: コアアサイン
- NUMAを意識したLagopusとVNFでコアアサインを設計する.
- パケット・処理の流れを考える
NIC
CPU CPUMemory
Memory
NIC
NICNIC
QPI
PCI-Exp PCI-Exp
Reference: supermicro X9DAi
Copyright©2015 NTT corp. All Rights Reserved.
設定のポイント: コアアサイン(LagopusとVNF)
- NUMAを意識したLagopusとVNFでコアアサインを設計する.
- パケット・処理の流れを考える
メモリ
メモリ
NIC
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
CPU0 CPU1
トラフィック
Copyright©2015 NTT corp. All Rights Reserved.
設定のポイント: コアアサイン(LagopusとVNF)
- NUMAを意識したLagopusとVNFでコアアサインを設計する.
- パケット・処理の流れを考える
メモリ
メモリ
NIC
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
CPU0 CPU1
トラフィック
Lagopus
VirNOS
(tiny mode)
× 8
Copyright©2015 NTT corp. All Rights Reserved.
設定のポイント: コアアサイン(LagopusとVNF)
- NUMAを意識したLagopusとVNFでコアアサインを設計する.
- パケット・処理の流れを考える
メモリ
メモリ
NIC
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
CPU0 CPU1
トラフィック
Lagopus
VirNOS
(tiny mode)
× 8
Copyright©2015 NTT corp. All Rights Reserved.
設定のポイント: コアアサイン(LagopusとVNF)
- コアアサインを間違えると性能は半減する
- 横須賀で測定を実施.1500byte, Lagopusはデフォルトのコアアサイン
18
メモリ
メモリ
NIC
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
CPU0 CPU1
トラフィック
LagopusVNF × 8
メモリ
メモリ
NIC
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
core
CPU0 CPU1
トラフィック
Lagopus VNF × 8約4.4Gbps
約10Gbps
2倍以上の差
Copyright©2015 NTT corp. All Rights Reserved.
HV VirNOS VirNOS VirNOS VirNOS
lagopus
lagopus
port2
port4 port6 port8 port10
port9port7port5port3
port1
Eth0
Eth1
Eth0
Eth1
Eth0
Eth1
Eth0
Eth1
設定のポイント: コアアサイン(LagopusのI/O)
- Pollingでパケットの監視,転送を行うため,ポートが増えるほど性能が落ちる.
- 今回のアーキテクチャでは物理NICへのトラフィックの偏りが顕著
19
10/4 Gbps 10Gbps
Copyright©2015 NTT corp. All Rights Reserved.
HV VirNOS VirNOS VirNOS VirNOS
lagopus
lagopus
port2
port4 port6 port8 port10
port9port7port5port3
port1
Eth0
Eth1
Eth0
Eth1
Eth0
Eth1
Eth0
Eth1
設定のポイント: コアアサイン(LagopusのI/O)
- トラフィックの偏りを考慮したコアアサインを行う
- ShowNetでは4コアをI/Oに利用.下図の様に割り当てた
20
10Gbps
10Gbps
5Gbps 5Gbps
Copyright©2015 NTT corp. All Rights Reserved.
Lagopus設定のポイント(フロールール)
- 256種類のsrc MACをマッチする必要がある.uplinkとdownlinkがあるため,
srcMACのExact matchのルールが512種類必要.
- Hash値は下位1byteに埋め込まれ,平等に分散されていることが期待できる
ので,Maskを用いて下位3bitだけ見るルールに変更することができる.すると
ルール数は16種類に削減できる.
21
in_port dl_src action
1 52:54:00:00:00:01 1
1 52:54:00:00:00:02 2
… … …
in_port dl_src action
1 **:**:**:**:**:*0 1
1 **:**:**:**:**:*1 2
… … …
Copyright©2015 NTT corp. All Rights Reserved.
性能評価(参考情報)
- いろいろな機器を通っているため,参考情報です.
- トラフィックのボトルネックがLagopusであることは確認済
- 東京テクニカさんにご協力頂きました
22
Copyright©2015 NTT corp. All Rights Reserved.
性能評価(参考情報)
- テスターの値をグラフ化.
- Lagopusには物理->VNFとVNF ->物理NICでトラフィックが2倍かかっている
23
[byte]
[Mbps]
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
0 200 400 600 800 1000 1200 1400
wire rate
lagopus
パケットサイズ
トラフィック量
Copyright©2015 NTT corp. All Rights Reserved.
デモ
24
ごめんなさい,
いろんな時間が足りなかったのでありません><
Copyright©2015 NTT corp. All Rights Reserved.
達成できなかったデモ
25
Lagopus
ShowNet
FPGA
Emulator
NIC
port portportportport
VNF VNF VNF VNF
Copyright©2015 NTT corp. All Rights Reserved.
Ansible playbook
- v0.2.4から旧playbookが使えなくなっていたのでいろいろ更新
- 突貫で作ったコードなので,とりあえずfork先しか更新しておりません
- fork先: https://github.com/hibitomo/lagopus-tools
- ついでに機能が追加されています
- 新機能
- DSLの自動生成
- 実行スクリプト自動生成 (vhost, pcap, pipeのvdevにも対応)
- 新ansibleサンプル
- Lagopus - VMを接続するサンプル(qemuの起動スクリプトも生成)
Copyright©2015 NTT corp. All Rights Reserved.
Lagopus slack
- Facebookに「Lagopus Users Community」というグループがあります!
28
Copyright©2015 NTT corp. All Rights Reserved.
時間があれば
29
Copyright©2015 NTT corp. All Rights Reserved.
Agenda
- Bird in ShowNet
- FPGA + Lagopus + VNF
- Lagopus設定のポイント
- コアアサイン
- Flow設計
- 簡易性能評価
- 副産物 lagopus-tools
- ansible
- lago-dsl
- lago-mon
Copyright©2015 NTT corp. All Rights Reserved.
副産物:lagopus-tools
• 元々はインターン生に作らせたAnsibleとRyuのサンプル置き場
• Lagopusが関連するトラブルがほぼなかったため,待ち時間でツールを作成
• 突貫で作ったコードなので,とりあえずfork先しか更新しておりません
• fork先: https://github.com/hibitomo/lagopus-tools
~/lagopus-tools$ ls
ansible examples lago-dsl lago-mon LICENSE README.md
Copyright©2015 NTT corp. All Rights Reserved.
副産物:ansible
- v0.2.4から旧playbookが使えなくなっていた
- 今回,最新のLagopus用に更新.ついでに機能追加.
- 新機能
- DSLの自動生成
- 実行スクリプト自動生成 (vhost, pcap, pipeのvdevにも対応)
- 新ansibleサンプル
- Lagopus - VMを接続するサンプル(qemuの起動スクリプトも生成)
Copyright©2015 NTT corp. All Rights Reserved.
副産物:lago-dsl
• lagopusのDSLを直接叩くスクリプト.
• デバッグ用途以外の使用は推奨しない.
• 直接,flow,interface等の編集をすることができる.
• 実行
$ ./lago-dsl.py [lagopus DSL]
$ ./lago-dsl.py < [lagopus DSL file]
Copyright©2015 NTT corp. All Rights Reserved.
副産物:lago-mon
- Lagopus用モニタリングツール
- 動作確認の為に`lagosh -c show xxx` を連打してカウン
タの差分を目grepするのは辛い.
- logを取る為に`lagosh -c show xxx`を定期的に実行して,
整形済みjsonを一行に戻すのは手間.
- 16 x 16ドットのロゴ
- プロトタイプのファイル名がlagomon.pyだった.作るしか
無いと思った.後悔はしていない.
ラゴモン(成長期)
Copyright©2015 NTT corp. All Rights Reserved.
副産物:lago-mon
- Lagopus用モニタリングツール
- 動作確認の為に`lagosh -c show xxx` を連打してカウン
タの差分を目grepするのは辛い.
- logを取る為に`lagosh -c show xxx`を定期的に実行して,
整形済みjsonを一行に戻すのは手間.
- 16 x 16ドットのロゴ
- プロトタイプのファイル名がlagomon.pyだった.作るしか
無いと思った.後悔はしていない.
- AA版もあります.( 15 x 36 )
########
## ;;;; ##
## #### ##
#### ##
## ## ####
##### ######## ##
############## ## ##
### ######## ## ##
#### ## ## ## #### ##
#### ## ## ## ## ##
###### #### ####
#### #### ##########
####################
mmmm ##
##########
ラゴモン(成長期)
Copyright©2015 NTT corp. All Rights Reserved.
副産物:lago-mon/ifstats-monitor.py
- 実行(指定間隔でJSONを出力するだけ)
- 出力例
{"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}}}
$ ./ifstats_monitor.py -l 10
間隔 [sec]
Copyright©2015 NTT corp. All Rights Reserved.
副産物:lago-mon/ifstats-monitor.py
- 実行(moniter.強いリクエストにより,bpsとppsを表示)
- 出力例
2016/06/08 14:22:49
+------------+------------------+--------------+------------------+--------------+
| name | rx-bps | rx-pps | tx-bps | tx-pps |
+------------+------------------+--------------+------------------+--------------+
| interface0 | 0 | 0 | 0 | 0 |
| interface1 | 0 | 0 | 0 | 0 |
+------------+------------------+--------------+------------------+--------------+
$ ./ifstats_monitor.py -m 10
更新間隔 [sec]
Copyright©2015 NTT corp. All Rights Reserved.
副産物:lago-mon/flowstats-monitor.py
- 実行(moniter.同一フローの識別が不可能な為,bps, ppsは無い.)
- 出力例
2016/06/08 14:27:45
bridge01, table: 0
+----------+--------+--------------+------------+----------------+--------------------------------------+--------------+--------------+
| priority | cookie | packet_count | byte_count | data | actions | hard_timeout | idle_timeout |
+----------+--------+--------------+------------+----------------+--------------------------------------+--------------+--------------+
| 100 | 0 | 0 | 0 | {"in_port": 2} | [{"apply_actions": [{"output": 1}]}] | 0 | 0 |
| 100 | 0 | 0 | 0 | {"in_port": 1} | [{"apply_actions": [{"output": 2}]}] | 0 | 0 |
+----------+--------+--------------+------------+----------------+--------------------------------------+--------------+--------------+
$ ./flowstats_monitor.py -m 10
更新間隔 [sec]
Copyright©2015 NTT corp. All Rights Reserved.
副産物:lago-mon/flowstats-monitor.py
- 実行(指定間隔でJSONを出力するだけ)
- 出力例
{"timestamp": "2016-06-08T14:25:44.853720", "flows": {"bridge01": {"tables":
[{"table": 0, "flows": [{"stats": {"packet_count": 0, "byte_count": 0}, "hard_timeout": 0,
"actions": [{"apply_actions": [{"output": 2}]}], "priority": 100, "idle_timeout": 0,
"cookie": 0, "in_port": 1}, {"stats": {"packet_count": 0, "byte_count": 0},
"hard_timeout": 0, "actions": [{"apply_actions": [{"output": 1}]}], "priority": 100,
"idle_timeout": 0, "cookie": 0, "in_port": 2}]}], "name": "bridge01"}}}
$ ./flowstats_monitor.py -l 10
間隔 [sec]
Copyright©2015 NTT corp. All Rights Reserved.
lago-monを利用したツール連携
40
Lagopus DSL
log file
Lagopus Server Log/Display Server
REST
Copyright©2015 NTT corp. All Rights Reserved.
lago-monを利用したツール連携
• 出力例(Ryu-certification動作中のログ)
41
Copyright©2015 NTT corp. All Rights Reserved.
まとめ
- Bird in ShowNet
- LagopusとDPDKでVMに接続
- LagopusとFPGAでVMにロードバランス
- 副産物(lagopus-tools)
- ansible
- lago-dsl.py
- lago-mon
Copyright©2015 NTT corp. All Rights Reserved.
ご清聴ありがとうございました
43
########
## ;;;; ##
## #### ##
#### ##
## ## ####
##### ######## ##
############## ## ##
### ######## ## ##
#### ## ## ## #### ##
#### ## ## ## ## ##
###### #### ####
#### #### ##########
####################
mmmm ##
##########

More Related Content

PDF
最近のTremaを触ってみてちょっとはまったこととか
PDF
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
PDF
Bird in show_net
PPTX
ネットワークプログラマビリティ勉強会
PDF
Lagopusで試すFirewall
PDF
Lagopusで試すFW
PDF
Lagopus + DockerのDPDK接続
PDF
LagopusとAzureとIPsecとDPDK
最近のTremaを触ってみてちょっとはまったこととか
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Bird in show_net
ネットワークプログラマビリティ勉強会
Lagopusで試すFirewall
Lagopusで試すFW
Lagopus + DockerのDPDK接続
LagopusとAzureとIPsecとDPDK

What's hot (20)

PDF
NPStudy LT Lagopus Router v19.07
PDF
Lagopus Router v19.07.1
PPTX
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
PPTX
Lagopus workshop@Internet weekのそば
PDF
自動でできるかな?
PDF
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
PDF
Kernel vm-2014-05-25
PPTX
VPP事始め
PDF
Osc2018tokyo spring-20180224
PDF
DPDKによる高速コンテナネットワーキング
PPTX
Project calico introduction - OpenStack最新情報セミナー 2017年7月
PDF
Lagopus Project (Open Source Conference)
PDF
NetBSD/evbarm on Raspberry Pi
PPTX
自作仮想化基盤 「n0stack」の紹介
PPTX
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
PDF
IoTとOpenFlowのライトニングトーク
PDF
Lagopus Switch Usecases
PDF
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
PDF
Lagopus Router
PDF
VTI の中身
NPStudy LT Lagopus Router v19.07
Lagopus Router v19.07.1
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
Lagopus workshop@Internet weekのそば
自動でできるかな?
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
Kernel vm-2014-05-25
VPP事始め
Osc2018tokyo spring-20180224
DPDKによる高速コンテナネットワーキング
Project calico introduction - OpenStack最新情報セミナー 2017年7月
Lagopus Project (Open Source Conference)
NetBSD/evbarm on Raspberry Pi
自作仮想化基盤 「n0stack」の紹介
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
IoTとOpenFlowのライトニングトーク
Lagopus Switch Usecases
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
Lagopus Router
VTI の中身
Ad

Viewers also liked (20)

PDF
Call for Speakersに講演を256倍通す方法
PDF
Career - design, adaption and diversity - for EMC I&D event
PDF
Contiv 20160914
PDF
OpenStack Congress and Datalog (English)
PDF
Cedexis
PDF
中国にOpenflowを入れてきた話
PDF
試してわかるSDN
PDF
Node最新トピックス
PPTX
Router chat for np
PPTX
PDF
10分で作るクラスライブラリ
PDF
Npstudy#7 クラウドインフラのネットワーク自動描画
PDF
【Interop Tokyo 2016】 ShowNet - SSS-17 : ShowNet 2016 を支える シスコの最新テクノロジー
PDF
ノリとその場の勢いでPocを作った話
PDF
Korejanai Story
PDF
Mk state in-programming-01
PPTX
Jcsug21 20140912
PDF
Janog37 Pattern BoF
PDF
of_protocol_tremaday5
PDF
Cloud stackユーザ会大阪 運用Tips 20130802
Call for Speakersに講演を256倍通す方法
Career - design, adaption and diversity - for EMC I&D event
Contiv 20160914
OpenStack Congress and Datalog (English)
Cedexis
中国にOpenflowを入れてきた話
試してわかるSDN
Node最新トピックス
Router chat for np
10分で作るクラスライブラリ
Npstudy#7 クラウドインフラのネットワーク自動描画
【Interop Tokyo 2016】 ShowNet - SSS-17 : ShowNet 2016 を支える シスコの最新テクノロジー
ノリとその場の勢いでPocを作った話
Korejanai Story
Mk state in-programming-01
Jcsug21 20140912
Janog37 Pattern BoF
of_protocol_tremaday5
Cloud stackユーザ会大阪 運用Tips 20130802
Ad

Similar to Lagopus & NFV with Vhost (Tremaday#9) (20)

PDF
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
PPTX
Openstack neutron vtjseminar_20160302
PDF
20150715 xflow kikuta_final
PDF
IPv6の現状
PDF
SDN Japan: ovs-hw
PDF
クラウド時代のネットワーク再入門
PPTX
Container Networking Deep Dive
PDF
Trema day 1
PPTX
ブラウザでWebRTC - iOSゲートウェイ作ってみた
PDF
【Interop Tokyo 2016】 ギガビット・ファイアウォールは、もう古い。時代は、テラビット・ファイアウォールへ
PDF
Ansible npstudy-shtsuchi
PDF
161027 net opscoding-junos-automation
PDF
[db tech showcase Sapporo 2015] B14:データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第二章 b...
PDF
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
PDF
透過 L2 BRIDGE NAT
KEY
P2Pって何?
PPT
Nsegソフトウェアルータvyatta
PDF
Multi Chassis LAG for Cloud builders
PPTX
2015-ShowNetステージ-BGPFlowspec
PDF
Deep Learning Lab MeetUp 学習編 AzureインフラとBatch AI
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
Openstack neutron vtjseminar_20160302
20150715 xflow kikuta_final
IPv6の現状
SDN Japan: ovs-hw
クラウド時代のネットワーク再入門
Container Networking Deep Dive
Trema day 1
ブラウザでWebRTC - iOSゲートウェイ作ってみた
【Interop Tokyo 2016】 ギガビット・ファイアウォールは、もう古い。時代は、テラビット・ファイアウォールへ
Ansible npstudy-shtsuchi
161027 net opscoding-junos-automation
[db tech showcase Sapporo 2015] B14:データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第二章 b...
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
透過 L2 BRIDGE NAT
P2Pって何?
Nsegソフトウェアルータvyatta
Multi Chassis LAG for Cloud builders
2015-ShowNetステージ-BGPFlowspec
Deep Learning Lab MeetUp 学習編 AzureインフラとBatch AI

Lagopus & NFV with Vhost (Tremaday#9)

  • 1. Copyright©2015 NTT corp. All Rights Reserved. Birds in Cloud SDN/NFV: Lagopus & VNF with Vhost 2016/07/02 hibitomo 1
  • 2. Copyright©2015 NTT corp. All Rights Reserved. Agenda - Lagopus? - Birds in ShowNet - FPGA + Lagopus + VNF - Lagopus設定のポイント - コアアサイン - Flow設計 - 簡易性能評価
  • 3. Copyright©2015 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
  • 4. Copyright©2015 NTT corp. All Rights Reserved. What is Lagopus (雷鳥属)? Lagopus is a small genus of birds in the grouse subfamily, commonly known as ptarmigans. All living in tundra or cold upland areas. http://en.wikipedia.org/wiki/Lagopus http://en.wikipedia.org/wiki/Lagopus#mediaviewer/File:Rock_Ptarmigan_(Lagopus_Muta).jpg
  • 5. Copyright©2015 NTT corp. All Rights Reserved. What is Lagopus (雷鳥属)? 5
  • 6. Copyright©2015 NTT corp. All Rights Reserved. Birds in ShowNet - 今年はここに居ました. 引用:https://www.facebook.com/interop.shownet
  • 7. Copyright©2015 NTT corp. All Rights Reserved. VNF(VirNOS) + Lagopus + FPGA - 処理はFPGA、転送はLagopus - NetFPGA-SUME - IPアドレスからハッシュを計算 - ハッシュ値にもとづいて転送先のVMの目印をSrc MACに書き込む(256種類) - LagopusはSrc MAC値に応じてVMへ転送 7 HV VNF VNF VNF lagopus lagopus uplink downlink hash計算と MACへの埋 め込み MACにもとづいて VMへ送信(staticな flow entry)
  • 8. Copyright©2015 NTT corp. All Rights Reserved. 今回接続したVNF • VirNOS • IP infusion のコントリビュート • vRouter/vCPE solutionのVNF • DPDKが利用可能. • High performanceモードとTinyモード等の動作モード • 今回はTinyモードのVirNOSをDPDKでLagopusと接続 8
  • 9. Copyright©2015 NTT corp. All Rights Reserved. 9
  • 10. Copyright©2015 NTT corp. All Rights Reserved. Challenges - ホストのLagopus(DPDK)とゲストのVirnos(DPDK)の接続 - 多ポート設定と負荷分散(ShowNetでは8台に分散.ポート数は計18) 10 HV VirNOS VirNOS VirNOS VirNOS lagopus lagopus port2 port4 port6 port8 port10 port9port7port5port3 port1 Eth0 Eth1 Eth0 Eth1 Eth0 Eth1 Eth0 Eth1
  • 11. Copyright©2015 NTT corp. All Rights Reserved. Agenda - Lagopus? - Birds in ShowNet - FPGA + Lagopus + VNF - Lagopus設定のポイント - コアアサイン - Flow設計 - 簡易性能評価
  • 12. Copyright©2015 NTT corp. All Rights Reserved. 設定のポイント: コアアサイン - NUMAを意識したLagopusとVNFでコアアサインを設計する. - パケット・処理の流れを考える NIC CPU CPUMemory Memory NIC NICNIC QPI PCI-Exp PCI-Exp Reference: supermicro X9DAi
  • 13. Copyright©2015 NTT corp. All Rights Reserved. 設定のポイント: コアアサイン(LagopusとVNF) - NUMAを意識したLagopusとVNFでコアアサインを設計する. - パケット・処理の流れを考える メモリ メモリ NIC core core core core core core core core core core core core core core core core CPU0 CPU1 トラフィック
  • 14. Copyright©2015 NTT corp. All Rights Reserved. 設定のポイント: コアアサイン(LagopusとVNF) - NUMAを意識したLagopusとVNFでコアアサインを設計する. - パケット・処理の流れを考える メモリ メモリ NIC core core core core core core core core core core core core core core core core CPU0 CPU1 トラフィック Lagopus VirNOS (tiny mode) × 8
  • 15. Copyright©2015 NTT corp. All Rights Reserved. 設定のポイント: コアアサイン(LagopusとVNF) - NUMAを意識したLagopusとVNFでコアアサインを設計する. - パケット・処理の流れを考える メモリ メモリ NIC core core core core core core core core core core core core core core core core CPU0 CPU1 トラフィック Lagopus VirNOS (tiny mode) × 8
  • 16. Copyright©2015 NTT corp. All Rights Reserved. 設定のポイント: コアアサイン(LagopusとVNF) - コアアサインを間違えると性能は半減する - 横須賀で測定を実施.1500byte, Lagopusはデフォルトのコアアサイン 18 メモリ メモリ NIC core core core core core core core core core core core core core core core core CPU0 CPU1 トラフィック LagopusVNF × 8 メモリ メモリ NIC core core core core core core core core core core core core core core core core CPU0 CPU1 トラフィック Lagopus VNF × 8約4.4Gbps 約10Gbps 2倍以上の差
  • 17. Copyright©2015 NTT corp. All Rights Reserved. HV VirNOS VirNOS VirNOS VirNOS lagopus lagopus port2 port4 port6 port8 port10 port9port7port5port3 port1 Eth0 Eth1 Eth0 Eth1 Eth0 Eth1 Eth0 Eth1 設定のポイント: コアアサイン(LagopusのI/O) - Pollingでパケットの監視,転送を行うため,ポートが増えるほど性能が落ちる. - 今回のアーキテクチャでは物理NICへのトラフィックの偏りが顕著 19 10/4 Gbps 10Gbps
  • 18. Copyright©2015 NTT corp. All Rights Reserved. HV VirNOS VirNOS VirNOS VirNOS lagopus lagopus port2 port4 port6 port8 port10 port9port7port5port3 port1 Eth0 Eth1 Eth0 Eth1 Eth0 Eth1 Eth0 Eth1 設定のポイント: コアアサイン(LagopusのI/O) - トラフィックの偏りを考慮したコアアサインを行う - ShowNetでは4コアをI/Oに利用.下図の様に割り当てた 20 10Gbps 10Gbps 5Gbps 5Gbps
  • 19. Copyright©2015 NTT corp. All Rights Reserved. Lagopus設定のポイント(フロールール) - 256種類のsrc MACをマッチする必要がある.uplinkとdownlinkがあるため, srcMACのExact matchのルールが512種類必要. - Hash値は下位1byteに埋め込まれ,平等に分散されていることが期待できる ので,Maskを用いて下位3bitだけ見るルールに変更することができる.すると ルール数は16種類に削減できる. 21 in_port dl_src action 1 52:54:00:00:00:01 1 1 52:54:00:00:00:02 2 … … … in_port dl_src action 1 **:**:**:**:**:*0 1 1 **:**:**:**:**:*1 2 … … …
  • 20. Copyright©2015 NTT corp. All Rights Reserved. 性能評価(参考情報) - いろいろな機器を通っているため,参考情報です. - トラフィックのボトルネックがLagopusであることは確認済 - 東京テクニカさんにご協力頂きました 22
  • 21. Copyright©2015 NTT corp. All Rights Reserved. 性能評価(参考情報) - テスターの値をグラフ化. - Lagopusには物理->VNFとVNF ->物理NICでトラフィックが2倍かかっている 23 [byte] [Mbps] 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 0 200 400 600 800 1000 1200 1400 wire rate lagopus パケットサイズ トラフィック量
  • 22. Copyright©2015 NTT corp. All Rights Reserved. デモ 24 ごめんなさい, いろんな時間が足りなかったのでありません><
  • 23. Copyright©2015 NTT corp. All Rights Reserved. 達成できなかったデモ 25 Lagopus ShowNet FPGA Emulator NIC port portportportport VNF VNF VNF VNF
  • 24. Copyright©2015 NTT corp. All Rights Reserved. Ansible playbook - v0.2.4から旧playbookが使えなくなっていたのでいろいろ更新 - 突貫で作ったコードなので,とりあえずfork先しか更新しておりません - fork先: https://github.com/hibitomo/lagopus-tools - ついでに機能が追加されています - 新機能 - DSLの自動生成 - 実行スクリプト自動生成 (vhost, pcap, pipeのvdevにも対応) - 新ansibleサンプル - Lagopus - VMを接続するサンプル(qemuの起動スクリプトも生成)
  • 25. Copyright©2015 NTT corp. All Rights Reserved. Lagopus slack - Facebookに「Lagopus Users Community」というグループがあります! 28
  • 26. Copyright©2015 NTT corp. All Rights Reserved. 時間があれば 29
  • 27. Copyright©2015 NTT corp. All Rights Reserved. Agenda - Bird in ShowNet - FPGA + Lagopus + VNF - Lagopus設定のポイント - コアアサイン - Flow設計 - 簡易性能評価 - 副産物 lagopus-tools - ansible - lago-dsl - lago-mon
  • 28. Copyright©2015 NTT corp. All Rights Reserved. 副産物:lagopus-tools • 元々はインターン生に作らせたAnsibleとRyuのサンプル置き場 • Lagopusが関連するトラブルがほぼなかったため,待ち時間でツールを作成 • 突貫で作ったコードなので,とりあえずfork先しか更新しておりません • fork先: https://github.com/hibitomo/lagopus-tools ~/lagopus-tools$ ls ansible examples lago-dsl lago-mon LICENSE README.md
  • 29. Copyright©2015 NTT corp. All Rights Reserved. 副産物:ansible - v0.2.4から旧playbookが使えなくなっていた - 今回,最新のLagopus用に更新.ついでに機能追加. - 新機能 - DSLの自動生成 - 実行スクリプト自動生成 (vhost, pcap, pipeのvdevにも対応) - 新ansibleサンプル - Lagopus - VMを接続するサンプル(qemuの起動スクリプトも生成)
  • 30. Copyright©2015 NTT corp. All Rights Reserved. 副産物:lago-dsl • lagopusのDSLを直接叩くスクリプト. • デバッグ用途以外の使用は推奨しない. • 直接,flow,interface等の編集をすることができる. • 実行 $ ./lago-dsl.py [lagopus DSL] $ ./lago-dsl.py < [lagopus DSL file]
  • 31. Copyright©2015 NTT corp. All Rights Reserved. 副産物:lago-mon - Lagopus用モニタリングツール - 動作確認の為に`lagosh -c show xxx` を連打してカウン タの差分を目grepするのは辛い. - logを取る為に`lagosh -c show xxx`を定期的に実行して, 整形済みjsonを一行に戻すのは手間. - 16 x 16ドットのロゴ - プロトタイプのファイル名がlagomon.pyだった.作るしか 無いと思った.後悔はしていない. ラゴモン(成長期)
  • 32. Copyright©2015 NTT corp. All Rights Reserved. 副産物:lago-mon - Lagopus用モニタリングツール - 動作確認の為に`lagosh -c show xxx` を連打してカウン タの差分を目grepするのは辛い. - logを取る為に`lagosh -c show xxx`を定期的に実行して, 整形済みjsonを一行に戻すのは手間. - 16 x 16ドットのロゴ - プロトタイプのファイル名がlagomon.pyだった.作るしか 無いと思った.後悔はしていない. - AA版もあります.( 15 x 36 ) ######## ## ;;;; ## ## #### ## #### ## ## ## #### ##### ######## ## ############## ## ## ### ######## ## ## #### ## ## ## #### ## #### ## ## ## ## ## ###### #### #### #### #### ########## #################### mmmm ## ########## ラゴモン(成長期)
  • 33. Copyright©2015 NTT corp. All Rights Reserved. 副産物:lago-mon/ifstats-monitor.py - 実行(指定間隔でJSONを出力するだけ) - 出力例 {"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}}} $ ./ifstats_monitor.py -l 10 間隔 [sec]
  • 34. Copyright©2015 NTT corp. All Rights Reserved. 副産物:lago-mon/ifstats-monitor.py - 実行(moniter.強いリクエストにより,bpsとppsを表示) - 出力例 2016/06/08 14:22:49 +------------+------------------+--------------+------------------+--------------+ | name | rx-bps | rx-pps | tx-bps | tx-pps | +------------+------------------+--------------+------------------+--------------+ | interface0 | 0 | 0 | 0 | 0 | | interface1 | 0 | 0 | 0 | 0 | +------------+------------------+--------------+------------------+--------------+ $ ./ifstats_monitor.py -m 10 更新間隔 [sec]
  • 35. Copyright©2015 NTT corp. All Rights Reserved. 副産物:lago-mon/flowstats-monitor.py - 実行(moniter.同一フローの識別が不可能な為,bps, ppsは無い.) - 出力例 2016/06/08 14:27:45 bridge01, table: 0 +----------+--------+--------------+------------+----------------+--------------------------------------+--------------+--------------+ | priority | cookie | packet_count | byte_count | data | actions | hard_timeout | idle_timeout | +----------+--------+--------------+------------+----------------+--------------------------------------+--------------+--------------+ | 100 | 0 | 0 | 0 | {"in_port": 2} | [{"apply_actions": [{"output": 1}]}] | 0 | 0 | | 100 | 0 | 0 | 0 | {"in_port": 1} | [{"apply_actions": [{"output": 2}]}] | 0 | 0 | +----------+--------+--------------+------------+----------------+--------------------------------------+--------------+--------------+ $ ./flowstats_monitor.py -m 10 更新間隔 [sec]
  • 36. Copyright©2015 NTT corp. All Rights Reserved. 副産物:lago-mon/flowstats-monitor.py - 実行(指定間隔でJSONを出力するだけ) - 出力例 {"timestamp": "2016-06-08T14:25:44.853720", "flows": {"bridge01": {"tables": [{"table": 0, "flows": [{"stats": {"packet_count": 0, "byte_count": 0}, "hard_timeout": 0, "actions": [{"apply_actions": [{"output": 2}]}], "priority": 100, "idle_timeout": 0, "cookie": 0, "in_port": 1}, {"stats": {"packet_count": 0, "byte_count": 0}, "hard_timeout": 0, "actions": [{"apply_actions": [{"output": 1}]}], "priority": 100, "idle_timeout": 0, "cookie": 0, "in_port": 2}]}], "name": "bridge01"}}} $ ./flowstats_monitor.py -l 10 間隔 [sec]
  • 37. Copyright©2015 NTT corp. All Rights Reserved. lago-monを利用したツール連携 40 Lagopus DSL log file Lagopus Server Log/Display Server REST
  • 38. Copyright©2015 NTT corp. All Rights Reserved. lago-monを利用したツール連携 • 出力例(Ryu-certification動作中のログ) 41
  • 39. Copyright©2015 NTT corp. All Rights Reserved. まとめ - Bird in ShowNet - LagopusとDPDKでVMに接続 - LagopusとFPGAでVMにロードバランス - 副産物(lagopus-tools) - ansible - lago-dsl.py - lago-mon
  • 40. Copyright©2015 NTT corp. All Rights Reserved. ご清聴ありがとうございました 43 ######## ## ;;;; ## ## #### ## #### ## ## ## #### ##### ######## ## ############## ## ## ### ######## ## ## #### ## ## ## #### ## #### ## ## ## ## ## ###### #### #### #### #### ########## #################### mmmm ## ##########