ハイパフォーマンス仮想 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
© Copyright 2024 ExpyDoc