Copyright©2015 NTT corp. All Rights Reserved.
Bird in ShowNet
SDN/NFV: Lagopus & VNF with Vhost
2016/06/09
hibitomo
1
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.
Bird 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へ転送
4
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と接続
5
Copyright©2015 NTT corp. All Rights Reserved. 6
Copyright©2015 NTT corp. All Rights Reserved.
Challenges
- ホストのLagopus(DPDK)とゲストのVirnos(DPDK)の接続
- 多ポート設定と負荷分散(ShowNetでは8台に分散.ポート数は計18)
7
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
- Bird in ShowNet
- FPGA + Lagopus + VNF
- Lagopus設定のポイント
- コアアサイン
- Flow設計
- 簡易性能評価
- 副産物 lagopus-tools
- ansible
- lago-dsl
- lago-mon
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)
- 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はデフォルトのコアアサイン
19
メモリ
メモリ
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へのトラフィックの偏りが顕著
20
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に利用.下図の様に割り当てた
21
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種類に削減できる.
22
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.
Agenda
- Bird in ShowNet
- FPGA + Lagopus + VNF
- Lagopus設定のポイント
- コアアサイン
- Flow設計
- 簡易性能評価
- 副産物 lagopus-tools
- ansible
- lago-dsl
- lago-mon
Copyright©2015 NTT corp. All Rights Reserved.
性能評価(参考情報)
- いろいろな機器を通っているため,参考情報です.
- トラフィックのボトルネックがLagopusであることは確認済
- 東京テクニカさんにご協力頂きました
24
Copyright©2015 NTT corp. All Rights Reserved.
性能評価(参考情報)
- テスターの値をグラフ化.
- Lagopusには物理->VNFとVNF ->物理NICでトラフィックが2倍かかっている
25
[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.
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
- 実行(指定間隔で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/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.
まとめ
- Bird in ShowNet
- LagopusとDPDKでVMに接続
- LagopusとFPGAでVMにロードバランス
- 副産物(lagopus-tools)
- ansible
- lago-dsl.py
- lago-mon
Copyright©2015 NTT corp. All Rights Reserved.
ご清聴ありがとうございました
37
########
## ;;;; ##
## #### ##
#### ##
## ## ####
##### ######## ##
############## ## ##
### ######## ## ##
#### ## ## ## #### ##
#### ## ## ## ## ##
###### #### ####
#### #### ##########
####################
mmmm ##
##########

More Related Content

PDF
Lagopus & NFV with Vhost (Tremaday#9)
PPTX
ネットワークプログラマビリティ勉強会
PDF
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
PDF
VTI の中身
PPTX
VPP事始め
PPTX
FD.io VPP事始め
PPTX
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
PDF
Lagopusで試すFirewall
Lagopus & NFV with Vhost (Tremaday#9)
ネットワークプログラマビリティ勉強会
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
VTI の中身
VPP事始め
FD.io VPP事始め
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
Lagopusで試すFirewall

What's hot (20)

KEY
Vyatta 改造入門
PDF
自動でできるかな?
PDF
Lagopus + DockerのDPDK接続
PDF
最近のTremaを触ってみてちょっとはまったこととか
PDF
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
PPTX
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
PPTX
Lagopus workshop@Internet weekのそば
PDF
BMP活用による SDN時代のオーバレイNW監視手法の提案
KEY
ASAMAP 開発秘話
PDF
NetBSD/evbarm on Raspberry Pi
PDF
Kernel vm-2014-05-25
PDF
LagopusとAzureとIPsecとDPDK
PDF
Lagos running on small factor machine
PDF
「さくらのクラウド」におけるVyattaの活用事例
PDF
SDN Lab環境でのRobotFramework実践活用
KEY
Openvswitch vps 20120429資料
PDF
さくらのクラウドインフラの紹介
PDF
20150715 xflow kikuta_final
PDF
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
PDF
Lagopusで試すFW
Vyatta 改造入門
自動でできるかな?
Lagopus + DockerのDPDK接続
最近のTremaを触ってみてちょっとはまったこととか
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
Lagopus workshop@Internet weekのそば
BMP活用による SDN時代のオーバレイNW監視手法の提案
ASAMAP 開発秘話
NetBSD/evbarm on Raspberry Pi
Kernel vm-2014-05-25
LagopusとAzureとIPsecとDPDK
Lagos running on small factor machine
「さくらのクラウド」におけるVyattaの活用事例
SDN Lab環境でのRobotFramework実践活用
Openvswitch vps 20120429資料
さくらのクラウドインフラの紹介
20150715 xflow kikuta_final
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
Lagopusで試すFW
Ad

Viewers also liked (20)

PPTX
L2 over l3 ecnaspsulations (english)
PDF
Korejanai Story
PDF
of_protocol_tremaday5
PDF
Cloud stackユーザ会大阪 運用Tips 20130802
PDF
Mk state in-programming-01
PDF
FlexPod Day 2016 - Cisco session (Publish edition)
PDF
Tokyo meetup 20160224
PDF
OpenStack Congress and Datalog (English)
PDF
中国にOpenflowを入れてきた話
PDF
TLS, HTTP/2演習
PDF
Node最新トピックス
PDF
Loom openflow controller in 10 min
PDF
OpenStack Congress and Datalog (Japanese)
PDF
10分で作るクラスライブラリ
PDF
IoTとOpenFlowのライトニングトーク
PDF
HTTP/2, QUIC入門
PDF
【Interop Tokyo 2016】 Seminar - EA-14 : シスコ スイッチが標的型攻撃を食い止める ~新しい内部対策ソリューション「C...
PDF
Web制作・運用会社に必要なCDNサービスとは?
PDF
ノリとその場の勢いでPocを作った話
PDF
とある診断員とAWS
L2 over l3 ecnaspsulations (english)
Korejanai Story
of_protocol_tremaday5
Cloud stackユーザ会大阪 運用Tips 20130802
Mk state in-programming-01
FlexPod Day 2016 - Cisco session (Publish edition)
Tokyo meetup 20160224
OpenStack Congress and Datalog (English)
中国にOpenflowを入れてきた話
TLS, HTTP/2演習
Node最新トピックス
Loom openflow controller in 10 min
OpenStack Congress and Datalog (Japanese)
10分で作るクラスライブラリ
IoTとOpenFlowのライトニングトーク
HTTP/2, QUIC入門
【Interop Tokyo 2016】 Seminar - EA-14 : シスコ スイッチが標的型攻撃を食い止める ~新しい内部対策ソリューション「C...
Web制作・運用会社に必要なCDNサービスとは?
ノリとその場の勢いでPocを作った話
とある診断員とAWS
Ad

Similar to Bird in show_net (20)

PDF
Lagopus Switch Usecases
PDF
Lagopus Project (Open Source Conference)
PDF
Lagopus performance
PDF
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
PDF
Xeon dとlagopusと、pktgen dpdk
PDF
Lagopus Router v19.07.1
PDF
Lagopus Router
PDF
Etnet2015.slide
PDF
Lagopus as open flow hybrid switch 実践編
PDF
Osc2018tokyo spring-20180224
PPTX
2016-ShowNetステージ-バックボーンの機能としてのSDN/NFV
PDF
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
PDF
Lagopus, raw socket build
PDF
Linux packet-forwarding
PDF
Ryu+Lagopusで OpenFlowの動きを見てみよう
PDF
2016.11.29 InternetWeek マルチベンダ環境におけるEVPN構築のノウハウ
PDF
ONOS and Lagopus
PDF
Introduction to Chainer (LL Ring Recursive)
PDF
Open flow tunnel extension on lagopus vswitch
PDF
【Interop Tokyo 2015】 DC 1: Cisco VXLAN ファブリックの展望
Lagopus Switch Usecases
Lagopus Project (Open Source Conference)
Lagopus performance
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
Xeon dとlagopusと、pktgen dpdk
Lagopus Router v19.07.1
Lagopus Router
Etnet2015.slide
Lagopus as open flow hybrid switch 実践編
Osc2018tokyo spring-20180224
2016-ShowNetステージ-バックボーンの機能としてのSDN/NFV
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
Lagopus, raw socket build
Linux packet-forwarding
Ryu+Lagopusで OpenFlowの動きを見てみよう
2016.11.29 InternetWeek マルチベンダ環境におけるEVPN構築のノウハウ
ONOS and Lagopus
Introduction to Chainer (LL Ring Recursive)
Open flow tunnel extension on lagopus vswitch
【Interop Tokyo 2015】 DC 1: Cisco VXLAN ファブリックの展望

Bird in show_net

  • 1. Copyright©2015 NTT corp. All Rights Reserved. Bird in ShowNet SDN/NFV: Lagopus & VNF with Vhost 2016/06/09 hibitomo 1
  • 2. Copyright©2015 NTT corp. All Rights Reserved. Agenda - Bird in ShowNet - FPGA + Lagopus + VNF - Lagopus設定のポイント - コアアサイン - Flow設計 - 簡易性能評価 - 副産物 lagopus-tools - ansible - lago-dsl - lago-mon
  • 3. Copyright©2015 NTT corp. All Rights Reserved. Bird in ShowNet - 今年はここに居ました. 引用:https://www.facebook.com/interop.shownet
  • 4. Copyright©2015 NTT corp. All Rights Reserved. VNF(VirNOS) + Lagopus + FPGA - 処理はFPGA、転送はLagopus - NetFPGA-SUME - IPアドレスからハッシュを計算 - ハッシュ値にもとづいて転送先のVMの目印をSrc MACに書き込む(256種類) - LagopusはSrc MAC値に応じてVMへ転送 4 HV VNF VNF VNF lagopus lagopus uplink downlink hash計算と MACへの埋 め込み MACにもとづいて VMへ送信(staticな flow entry)
  • 5. Copyright©2015 NTT corp. All Rights Reserved. 今回接続したVNF • VirNOS • IP infusion のコントリビュート • vRouter/vCPE solutionのVNF • DPDKが利用可能. • High performanceモードとTinyモード等の動作モード • 今回はTinyモードのVirNOSをDPDKでLagopusと接続 5
  • 6. Copyright©2015 NTT corp. All Rights Reserved. 6
  • 7. Copyright©2015 NTT corp. All Rights Reserved. Challenges - ホストのLagopus(DPDK)とゲストのVirnos(DPDK)の接続 - 多ポート設定と負荷分散(ShowNetでは8台に分散.ポート数は計18) 7 HV VirNOS VirNOS VirNOS VirNOS lagopus lagopus port2 port4 port6 port8 port10 port9port7port5port3 port1 Eth0 Eth1 Eth0 Eth1 Eth0 Eth1 Eth0 Eth1
  • 8. Copyright©2015 NTT corp. All Rights Reserved. Agenda - Bird in ShowNet - FPGA + Lagopus + VNF - Lagopus設定のポイント - コアアサイン - Flow設計 - 簡易性能評価 - 副産物 lagopus-tools - ansible - lago-dsl - lago-mon
  • 9. Copyright©2015 NTT corp. All Rights Reserved. 設定のポイント: コアアサイン - NUMAを意識したLagopusとVNFでコアアサインを設計する. - パケット・処理の流れを考える NIC CPU CPUMemory Memory NIC NICNIC QPI PCI-Exp PCI-Exp Reference: supermicro X9DAi
  • 10. 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 トラフィック
  • 11. 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
  • 12. 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
  • 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 トラフィック Lagopus VirNOS (tiny mode) × 8
  • 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) - コアアサインを間違えると性能は半減する - 横須賀で測定を実施.1500byte, Lagopusはデフォルトのコアアサイン 19 メモリ メモリ 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倍以上の差
  • 16. 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へのトラフィックの偏りが顕著 20 10/4 Gbps 10Gbps
  • 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) - トラフィックの偏りを考慮したコアアサインを行う - ShowNetでは4コアをI/Oに利用.下図の様に割り当てた 21 10Gbps 10Gbps 5Gbps 5Gbps
  • 18. Copyright©2015 NTT corp. All Rights Reserved. Lagopus設定のポイント(フロールール) - 256種類のsrc MACをマッチする必要がある.uplinkとdownlinkがあるため, srcMACのExact matchのルールが512種類必要. - Hash値は下位1byteに埋め込まれ,平等に分散されていることが期待できる ので,Maskを用いて下位3bitだけ見るルールに変更することができる.すると ルール数は16種類に削減できる. 22 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 … … …
  • 19. Copyright©2015 NTT corp. All Rights Reserved. Agenda - Bird in ShowNet - FPGA + Lagopus + VNF - Lagopus設定のポイント - コアアサイン - Flow設計 - 簡易性能評価 - 副産物 lagopus-tools - ansible - lago-dsl - lago-mon
  • 20. Copyright©2015 NTT corp. All Rights Reserved. 性能評価(参考情報) - いろいろな機器を通っているため,参考情報です. - トラフィックのボトルネックがLagopusであることは確認済 - 東京テクニカさんにご協力頂きました 24
  • 21. Copyright©2015 NTT corp. All Rights Reserved. 性能評価(参考情報) - テスターの値をグラフ化. - Lagopusには物理->VNFとVNF ->物理NICでトラフィックが2倍かかっている 25 [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. Agenda - Bird in ShowNet - FPGA + Lagopus + VNF - Lagopus設定のポイント - コアアサイン - Flow設計 - 簡易性能評価 - 副産物 lagopus-tools - ansible - lago-dsl - lago-mon
  • 23. 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
  • 24. Copyright©2015 NTT corp. All Rights Reserved. 副産物:ansible - v0.2.4から旧playbookが使えなくなっていた - 今回,最新のLagopus用に更新.ついでに機能追加. - 新機能 - DSLの自動生成 - 実行スクリプト自動生成 (vhost, pcap, pipeのvdevにも対応) - 新ansibleサンプル - Lagopus - VMを接続するサンプル(qemuの起動スクリプトも生成)
  • 25. Copyright©2015 NTT corp. All Rights Reserved. 副産物:lago-dsl • lagopusのDSLを直接叩くスクリプト. • デバッグ用途以外の使用は推奨しない. • 直接,flow,interface等の編集をすることができる. • 実行 $ ./lago-dsl.py [lagopus DSL] $ ./lago-dsl.py < [lagopus DSL file]
  • 26. 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だった.作るしか 無いと思った.後悔はしていない. ラゴモン(成長期)
  • 27. 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 ## ########## ラゴモン(成長期)
  • 28. 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]
  • 29. 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]
  • 30. 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]
  • 31. 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]
  • 32. Copyright©2015 NTT corp. All Rights Reserved. まとめ - Bird in ShowNet - LagopusとDPDKでVMに接続 - LagopusとFPGAでVMにロードバランス - 副産物(lagopus-tools) - ansible - lago-dsl.py - lago-mon
  • 33. Copyright©2015 NTT corp. All Rights Reserved. ご清聴ありがとうございました 37 ######## ## ;;;; ## ## #### ## #### ## ## ## #### ##### ######## ## ############## ## ## ### ######## ## ## #### ## ## ## #### ## #### ## ## ## ## ## ###### #### #### #### #### ########## #################### mmmm ## ##########