Brocade Vyatta 5600 vRouter アーキテクチャー概要 [日本語:PDF

ハイパフォーマンス仮想
ROUTER
Brocade Vyatta 5600 vRouter
アーキテクチャー概要
© 2014 Brocade Communications Systems, Inc.
1
現在のCPUはそこそこ速い
しかし、現行の実装のままでは厳しい
性格の異なるデータパスを共存させると速度が出ない
コントロールプレーン
データプレーン
1024
64
1.2Million
14.4Million
到達間隔(秒)
835ns
67.2ns
クロックサイクル(3GHz)
2504
201
パケットサイズ(Byte)
パケット/秒
 ハードウェア(ネットワーク機器)のアプローチ
 コントロールプレーンとデータプレーンの分離
転送経路の決定:コントロールプレーン
実際の転送:データプレーン
 ハードウェア処理でカバーすることでパフォーマンスを稼ぐ
 ソフトウェアアプローチ
 ハードウェアと同様の実装を工夫することで、汎用プロセッサのみ
で10G wireレートを実現することができる
© 2014 Brocade Communications Systems, Inc.
2
しかし、10Gwireレート転送は至難の業
どこに問題がある?
1.割り込みの限界
• 割り込みでは追いつけない(受信ごとに割り込み発生)
• 頻繁に生じる割り込みが運用効率を下げる
2.Page管理のミスマッチ(小さいPage-4KBye)
• 頻繁にTLBミスが生じる(TLB:Translation Lookaside Buffer)
3.CPUコアの分散に偏り
• フローごとのCPUコア割り当てが困難
• CPUコア割り当ての偏り(パケットが特定のコアに集中
-飽和)が生じるとスケールしない
4.コントロールプレーン/データプレーンの共存
• コンテキストスイッチが生じる
© 2014 Brocade Communications Systems, Inc.
3
Intel-DPDK-その1
PMD/メモリ周り
1.Poll Mode Driver
• 割り込みを使用しないNICからのデータ転送
2-a.Hugepages
• DPDKの機能ではないが、DPDKには必須の機能
• 4Kbyte/Pageから2MByteまたは1GByte/Pageに拡張
2-b.メモリマネージャ
• リングバッファの提供
• Pageを束ねたZoneを提供
• それぞれのデータはZoneに格納
2-c.バッファマネージャ
• 固定領域の確保(都度、領域確保・開放を行わない)
© 2014 Brocade Communications Systems, Inc.
4
Intel-DPDK-その2
Flow Classification/EAL
3.Flow Classification
• 高速なハッシュ計算により、それぞれのフローを適切な
コアに分散
4.Environment Abstraction Layer
• カーネルと同レイヤで動作
• Linuxカーネルをバイパスすることでオーバーヘッドを排除
• 特定コアをデータ転送に特化させることが可能
• これらの機能を統合
• データプレーンアプリケーションをDPDK上に実装
© 2014 Brocade Communications Systems, Inc.
5
5400と5600のアーキテクチャの違い
コントロール/データプレーンの分離
コントロールプレーン
5400
すべての機能が一枚岩で実装
(分散/スケールが困難)
© 2014 Brocade Communications Systems, Inc.
5600
コントロール/データプレーンを分離
(分散/スケールがより容易に)
データプレーン
6
コントロール/データプレーンの分離
IA-x86ベースの実装
• コントロールプレーン
• Linuxベース
• Routingプロトコル
• データプレーン
• DPDKアプリケーション
https://www.nic.ad.jp/ja/materials/iw/2012/proceedings/d1/d1-Kohmura.pdf
© 2014 Brocade Communications Systems, Inc.
7
CPUコアアサイン原則
• 受信-2コア/送信-1コアを使用
• 割り込み頻度の例
• 5600 (NIC割り込みがほとんど0)
vyatta@vyatta:~$ cat /proc/interrupts |grep igb
CPU0
CPU1
CPU2
CPU3
41:
0
0
1
1
PCI-MSI-edge
igb_uio
42:
1
0
1
0
PCI-MSI-edge
igb_uio
• 参考値(5400)
パケットを送受信するごとに1づつカウントアップ
vyatta@vyatta:~$ cat /proc/interrupts | grep eth
CPU0
72:
7680238
PCI-MSI-edge
eth0-rxtx-0
74:
9254
PCI-MSI-edge
eth1-rxtx-0
© 2014 Brocade Communications Systems, Inc.
8
CPUコアアサイン(4コアの場合)
コア/portアサインの例(コア数不足)
Core0はMgmt用途
で予約
Dataplane CPU activity
Core Interface RX Rate TX Rate
-------------------------------------------------------1 em1
0
em1
0
2 em1
0
em2
126
3 em2
0
em2
0
TX:1コア RX:2コアをアサイン
Core1:em1-RX / em1-TX
Core2:em1-RX / em2-TX
Core3:em2-RX / em2-RX
© 2014 Brocade Communications Systems, Inc.
Idle
2
250
9
250
250
250
Idleの値
0-250で推移
(0がbusy
250は無負荷)
単位はpps
(Packets Per Second)
9
まとめ
Brocade Vyatta 5600 vRouterのキモ
• Vplane™
• CPUコアアサインの効率化
• Intel DPDKを活用したアプローチ
•
•
•
•
EAL
HugePages
PMD
etc.
• その先へのアプローチ
• データプレーンを物理ホストに移行
• 分散Router
• Vyatta Service Platform
© 2014 Brocade Communications Systems, Inc.
10
ありがとうございました
本件に関するお問合せ
https://www.brocadejapan.com/form/contact2
ブロケード コミュニケーションズ システムズ
株式会社
© 2014 Brocade Communications Systems, Inc.
11