≪ハイパフォーマンス仮想Router≫Brocade Vyatta 5600 vRouter...
-
Upload
brocade -
Category
Technology
-
view
1.400 -
download
3
description
Transcript of ≪ハイパフォーマンス仮想Router≫Brocade Vyatta 5600 vRouter...
ハイパフォーマンス仮想ROUTER
Brocade Vyatta 5600 vRouter
アーキテクチャー概要
1 © 2014 Brocade Communications Systems, Inc.
現在のCPUはそこそこ速い しかし、現行の実装のままでは厳しい
© 2014 Brocade Communications Systems, Inc. 2
コントロールプレーン データプレーン
パケットサイズ(Byte) 1024 64
パケット/秒 1.2Million 14.4Million
到達間隔(秒) 835ns 67.2ns
クロックサイクル(3GHz) 2504 201
ハードウェア(ネットワーク機器)のアプローチ
コントロールプレーンとデータプレーンの分離
転送経路の決定:コントロールプレーン
実際の転送:データプレーン
ハードウェア処理でカバーすることでパフォーマンスを稼ぐ
ソフトウェアアプローチ
ハードウェアと同様の実装を工夫することで、汎用プロセッサのみで10G wireレートを実現することができる
性格の異なるデータパスを共存させると速度が出ない
しかし、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
1.Poll Mode Driver
• 割り込みを使用しないNICからのデータ転送
2-a.Hugepages
• DPDKの機能ではないが、DPDKには必須の機能
• 4Kbyte/Pageから2MByteまたは1GByte/Pageに拡張
2-b.メモリマネージャ
• リングバッファの提供
• Pageを束ねたZoneを提供
• それぞれのデータはZoneに格納
2-c.バッファマネージャ
• 固定領域の確保(都度、領域確保・開放を行わない)
PMD/メモリ周り
© 2014 Brocade Communications Systems, Inc. 4
Intel-DPDK-その2
3.Flow Classification
• 高速なハッシュ計算により、それぞれのフローを適切な
コアに分散
4.Environment Abstraction Layer
• カーネルと同レイヤで動作
• Linuxカーネルをバイパスすることでオーバーヘッドを排除
• 特定コアをデータ転送に特化させることが可能
• これらの機能を統合
• データプレーンアプリケーションをDPDK上に実装
Flow Classification/EAL
© 2014 Brocade Communications Systems, Inc. 5
5400と5600のアーキテクチャの違い コントロール/データプレーンの分離
© 2014 Brocade Communications Systems, Inc. 6
5400
すべての機能が一枚岩で実装
(分散/スケールが困難)
5600
コントロール/データプレーンを分離
(分散/スケールがより容易に)
コントロールプレーン
データプレーン
コントロール/データプレーンの分離 IA-x86ベースの実装
© 2014 Brocade Communications Systems, Inc. 7
• コントロールプレーン
• Linuxベース
• Routingプロトコル
• データプレーン
• DPDKアプリケーション
https://www.nic.ad.jp/ja/materials/iw/2012/proceedings/d1/d1-Kohmura.pdf
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アサインの例(コア数不足)
© 2014 Brocade Communications Systems, Inc. 9
Dataplane CPU activity
Core Interface RX Rate TX Rate Idle
--------------------------------------------------------
1 em1 0 2
em1 0 250
2 em1 0 9
em2 126 250
3 em2 0 250
em2 0 250
TX:1コア RX:2コアをアサイン
Core1:em1-RX / em1-TX
Core2:em1-RX / em2-TX
Core3:em2-RX / em2-RX
Idleの値
0-250で推移
(0がbusy
250は無負荷)
Core0はMgmt用途
で予約
単位はpps
(Packets Per Second)
まとめ
• Vplane™
• CPUコアアサインの効率化
• Intel DPDKを活用したアプローチ
• EAL
• HugePages
• PMD
• etc.
• その先へのアプローチ
• データプレーンを物理ホストに移行
• 分散Router
• Vyatta Service Platform
Brocade Vyatta 5600 vRouterのキモ
© 2014 Brocade Communications Systems, Inc. 10
ありがとうございました
本件に関するお問合せ
https://www.brocadejapan.com/form/contact2
ブロケード コミュニケーションズ システムズ
株式会社
11 © 2014 Brocade Communications Systems, Inc.