Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

第11回ACRiウェビナー_東工大/坂本先生ご講演資料

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 27 Publicité

Plus De Contenu Connexe

Similaire à 第11回ACRiウェビナー_東工大/坂本先生ご講演資料 (20)

Plus par 直久 住川 (20)

Publicité

Plus récents (20)

第11回ACRiウェビナー_東工大/坂本先生ご講演資料

  1. 1. FPGA SmartNICによる サービスメッシュの効率化 東京工業大学 坂本龍一 2022/12/13 ACRi ウェビナー 1
  2. 2. Process マイクロサービス • 近年のWeb開発では、開発の効率化、開発サイクルの 短縮化、運用コストの削減、安全な運用が求められる ⇒マイクロサービスによる開発が普及 • マイクロサービスの概要 • 1 つのアプリケーションを複数の小さなサービスに分割 • サービスごとに開発を行うことで開発の効率化 • 各サービス間はTCP/IPを用いて疎に結合 • マイクロサービスの問題点 • 分散システムの効率的な管理 • デバッグ、異常検知、負荷分散、etc.. • サービスと独立して分散ネットワークを管理する仕組みが必要 2022/12/13 ACRi ウェビナー 2 Service B Service C Network service A Process Process
  3. 3. サービスメッシュの概要 • 分散システムにおけるネットワーク制御に関する課題を解決 • マイクロサービスにおけるサービス間の通信をサービスと独立して制御する ための仕組み • サービスに対して透過的にトラフィックを制御 • サービス開発者が意識する必要がない • 実現方法 • プロキシサーバーによるネットワークの仮想化 • 全てのサービスに対してリクエストを中継するプロキシを挿入 • サービスの通信は必ずプロキシを経由し他のサービスと通信 • プロキシ内で任意のトラフィック制御を実行 • 用途 • オートスケール、分散トレーシング、カナリアリリース、A/Bテスト 2022/12/13 ACRi ウェビナー 3 service service Proxy Network Switch Proxy service Proxy
  4. 4. コントロール プレーン データープレーン サービスメッシュの構成 • データプレーンとコントロールプレーン • データプレーン • 各サービスに接続されたプロキシサーバー、プ ロキシサーバー群を接続するネットワーク • 各プロキシサーバーはコントロールプレーンの 指示に指示に従い、トラフィック制御を実行 • コントロールプレーン • データプレーンのプロキシ群を一元管理 service service Proxy Network Switch Proxy service Proxy controller 2022/12/13 ACRi ウェビナー 4 Pod
  5. 5. サービスメッシュの実装・応用例 • Envoy: サービスメッシュのデータプレーン実装 • プロキシサーバーとして各コンテナに接続 • フィルターによるトラフィック制御 • L3/L4/L7フィルタ:様々な機能を持つプラグイン • 任意のフィルターを設計・実行可能 • 応用例 • Istio分散トレーシング • サービス間をまたぐリクエストの流れをトレース • 問題分析、性能分析が可能となる • データプレーンにEnvoyを利用 2022/12/13 ACRi ウェビナー 5 コントロール プレーン データープレーン service service Envoy Network Switch Envoy service Envoy Istio Pod
  6. 6. サービスメッシュの Node内ネットワーク構成と問題点 • 多数のブリッジを経由し外部ネットワークと接続 • 多数のプロトコルスタックを経由 • 応答性能の悪化 • CPU負荷の増加 2022/12/13 ACRi ウェビナー 6 app loopback Envoy veth veth tcp/ip socket tcp/ip ethernet socket tcp/ip ethernet socket tcp/ip ethernet ethernet ethernet App Pod Node eth0
  7. 7. サービスメッシュによる応答性能悪化 • サービスメッシュが応答遅延に与える影響を調査 • サービスメッシュを用いたIstio分散トレーシング • Deathstar benchmark, Social Network の応答性のを計測 • SNSサービスを模擬 • 分散トレーシングを行うことによって応答性能が81%悪化 Social Media: 38 services Hardware: CPU: Xeon Gold 6312U 24cores Num. of Nodes : 4 nodes Network: 10Gbe 2022/12/13 ACRi ウェビナー 7
  8. 8. SmartNICによるサービス メッシュの効率化 • 研究目標 • マイクロサービスの応答時間の短縮 • SmartNICデータプレーン • プロキシ処理、TCP処理をSmarNICへ集約 • L7/L4フィルター処理 • TCP処理 -> 応答性能を改善 • 課題 • フルスタックでの実装 • TOEを隠ぺいするソフトウェアスタック • 性能・柔軟性を担保するSmartNICデザイン 2022/12/13 ACRi ウェビナー 8 app loopback Envoy veth veth tcp/ip socket tcp/ip ethernet socket tcp/ip ethernet socket tcp/ip ethernet ethernet ethernet App Pod Node eth0 app loopback socket Bridge for TOE App Pod Node eth0 eth SmartNIC Filter TCP offload engine SmartNICデータプレーン (この図が提案) socket
  9. 9. TOEを隠ぺいするソフトウェア • 課題: • SmartNIC向けライブラリを用いる場合、アプリの修正が必要 ✖ 公開コンテナイメージの利用ができない • ループバックインタフェース経由で外部と接続することで、コンテナ イメージの修正を避ける ✖ループバックに1往復分のTCP処理が必要 • 解決策 • ループバックインタフェースを利用しつつLinuxが提供するネットワー クスタックバイパス機能を利用 • eBPF (extended berkeley packet filter)のsockmapとredirect 2022/12/13 ACRi ウェビナー 9
  10. 10. eBPFによるプロトコルスタックのバイパス • eBPFとは • カーネルの様々な動作をユーザーランドから 制御するための仕組み • 軽量VMがカーネル内で動作 • ユーザーが生成したプログラムを軽量VMで実行 • 様々なトリガーポインタが定義されている • System call / Network stack • sockmapとredirectを用いた ローカルホスト内TCP通信のバイパス • sockmap : TCP通信時にトリガ • redirect : 通信先をリダイレクト • プロトコルスタックをバイパスし、直接通信 2022/12/13 ACRi ウェビナー 10 app loopback socket Bridge for TOE App Pod Node SmartNIC tcp/ip ethernet tcp/ip ethernet socket eth0 eth Filter TCP offload engine
  11. 11. 関連技術 Cilium(スリィアム) • eBPFを用いて軽量にパケット処理や通 信制御を行うネットワークミドルウェア • ネットワークスタックのバイパス • カーネル内での通信制御 • Iptableの簡略化 • Envoyとの連携 2022/12/13 ACRi ウェビナー 11 app socket Envoy App Pod Node socket eth0 tcp/ip ethernet socket Cilium
  12. 12. FPGA SmarNICの課題 • フィルター実行 • ストリームデータが届き次第、即時フィルターを実行できる機構 • 高速なフィルターの選択実行 • プロトコルやクライアントに応じてフィルターを選択 • フィルター処理を動的にロード、アップデートが可能であること • データセンターの性能要求に柔軟に対応できるSmarNIC構成 • データセンタごとに要求性能が異なるため、要求に応じでSmartNICの構成 を変更できることが望ましい • 最大セッション数、最大スループット、最大IP数 2022/12/13 ACRi ウェビナー 12
  13. 13. FPGA SmartNICデザイン • ソフトコアプロセッサによるフィルター実行 • ソフトコアプロセッサのプログラムとしてフィル ター処理を実行 • FPGAの再合成を行うことなく、フィルターを更新 • マルチコアによる性能スケール • ハードウェアパターンマッチによるフィルタ選択 • パターンマッチによりフィルターを高速に選択 • スケーラブルなハードウェア構成 • TOE数、ネットワークプロセッサ数、NICインタ フェース数をパラメターとして合成可能とすること で、様々な性能要件に柔軟に対応 L4 Processor MAC TCP stack Stream IF Virtual NIC MAC TCP stack MAC TOE stack L4 Processor Network Processor Service Service Service Stream IF Virtual NIC Service Service Service Filter selector Parameterized Num. of vNICs Num. of L4 Proc. Num. of TOEs/IF Programable Proc. Socket API compatible Load balancing by lockup Translates stateful TCP pkts to stream data 2022/12/13 ACRi ウェビナー 13
  14. 14. Service SOCKET like APIs Container Service Userland proxy bridge Loopback IF Service Loopback IF システムの全体構成 • Userland proxy bridge • ユーザーアプリのネットワーク要求をハンド リング • コントロールプレーンと連携しSmartNICを 制御 • eBPF • loopback IF部のTCP処理をバイパス • Virtual NIC • PCIe SR-IOV virtualizationによって1つの SmartNICを複数のSmartNICに見せかける • Network Processors • L4やL7に関するフィルター処理を実行 • Filter selector • TOEから到着する複数のセッションを適切に ネットワークプロセッサに割当 14 FPGA PCIe SR-IOV engine Linux vNIC Device Driver Switch TCP Offload Engine(TOE) 10G MAC Network Processor Filter selector Network Processor Network Processor TCP Offload Engine(TOE) 10G MAC Network Processor Filter selector Network Processor Network Processor controller 2022/12/13 ACRi ウェビナー Service SOCKET like APIs Container Service Userland proxy bridge Loopback IF Service Loopback IF vNIC Device Driver eBPF
  15. 15. Userland Proxy Bridge • コンテナとSmartNIC間の橋渡し • Loopbackインタフェースを経由しコン テナの通信要求をプロキシ • SmarNIC外部との通信をプロキシ • コンテナからの通信開始要求フック • connect / listenをeBPFでフック • コントローラ連携 • SmartNICのフィルター設定 • コンテナのアドレスやポートの設定 • SmartNIC制御 • listen/connect/close • フィルター選択設定 2022/12/13 ACRi ウェビナー 15 SNIC Thread Egress thread Ingress thread Listen thread Service SmartNIC Service Service Userland proxy eBPF Hook connect / listen Connect thread controller
  16. 16. FPGA SmartNIC実装 Processor TCP Offload Engine PCIe SR-IOV engine / Xilinx QDMA (Multi queue DMA) SFP+(10Gbe) DDR4 Filter selector IP splitter 10G MAC ARP ICMP Processor Processor Processor MUX 256Gbps (PCIe Gen4 x 16) 80Gbps (512bit@156.25Mhz) 10Gbps (64bit@156.25Mhz) 5Gbps (32bit@156.25Mhz) Processor DMAC Stream to SRAM DMAC SRAM to Stream SRAM SRAM Microblaze (Xilinx Softcore) ctrl 2022/12/13 ACRi ウェビナー 16 X86 • MAC層 • 10Gbe sfp+ • IP層 • ICMP / ARP • TCP層(TOE) • Filter selector • 宛先コアの決定 • ソフトコアプロ セッサ • フィルタ処理 • Microblaze • PCIe Bridge
  17. 17. 使用しているリソース • OSS • TOE(高位合成) • Vitis with 100 Gbps TCP/IP Network Stack • https://github.com/fpgasystems/Vitis_with_100Gbps_TCP-IP • BSD 3-Clause License(要確認) • 100Gbe NICリファレンスデザイン(HDL) • open-nic-shell • https://github.com/Xilinx/open-nic-shell • Apache-2.0 license • 10Gbe MAC(HDL) • xg_mac • https://github.com/fixstars/xg_mac • BSD 3-Clause License • ソフトプロセッサコア • MicroBlaze 32 ビット RISC 型のマイクロプロセッサ コア 2022/9/16 SmartNICによるサービスメッシュの効率化 17
  18. 18. TOEインタフェース • TOE:Vitis with 100 Gbps TCP/IP Network Stack • マルチセッションをサポートするTOE engine • 100Gbe, 1000セッション(Default) TCP/IP Offload Engine Client logic (Connect) Server logic (Listen) Send / Receive CAM Buffer (DDR) Splitter / mixer 100G MAC UDP ARP ICMP USER OpenConection (IP, Port) OpenConStatus (Error, SessionID) CloseConnection (SessionID) TxMetaData (Session, size) TxStatus (Free size, Error) TxData Notification (Session, size) ReadRequest (Session, size) RxMetaData (Size/Session) RxData ListenPortReq (Port) ListenPortResp (Status) NewClient (Session ID) 512 512 ※太い線は512bit
  19. 19. Filter selector • TOEから到着したストリームデータの転送先を決定 • Lookup Tableを参照 • Session ID、DestPort、SrcIPがキー • 新しいストリームデータが到着した際は参照が失敗 • SmartNIC内の制御ソフトコアに問い合わせ • 宛先(コア番号、x86等)をストリームデータに挿入 • 後段のスイッチで分離し宛先に送信 • 実装 • 512bit幅 • Vivado hlsで高位合成 2022/12/13 ACRi ウェビナー 19 Filter selector Lookup Table -sessionID -Port -SrcIP From TOE Softcore / x86 Management softcore 初期参照ミス
  20. 20. 100Gbe NICリファレンスデザイン(HDL) 2022/12/13 ACRi ウェビナー 20 • Alveoシリーズをベースとした100Gbe NICデザイン • NICデザイン • デバイスドライバ • ユーザーロジック • @250MHz PCIe側 • @322MHz 100G MAC側 • 今回のSmartNICデザインに利用 • Virtual NIC機能 • OSに対し複数のNICとしてふるまう • QDMAの利用 • Scatter Gather DMA OpenNIC(https://github.com/Xilinx/open-nic)
  21. 21. 評価 • 基本的なネットワーク性能を評価 • 現在コントロールプレーン、オーケストレーション連携部は未実装 • シンプルなネットワークアプリ ① 多数セッション環境下での実アプリ動作確認 ② TOEへのオフロード効果 ③ プロキシを1段導入した際の応答性能 • サーバー1台、クライアント1台で評価 • 複数サービス、マイクロサービスアプリ、コンテナでの評価は今後の課題 • ハードウェアの評価 • リソース量と消費電力 2022/12/13 ACRi ウェビナー 21
  22. 22. 実験環境 • SmartNIC構成 • FPGAボード: Xilinx au200 • 外部インタフェース: 10Gbe • TOE数: 1個 • ソフトコア数: 4個 • サーバー構成 • OS: Ubuntu 20.04 • CPU : Xeon Gold 6312U 24cores • Network: Intel X710 10Gbe 2022/12/13 ACRi ウェビナー 22
  23. 23. ①多数セッション環境下での実アプリ動 作確認 • SmartNICが乗ったサーバーにMQTTのブ ローカーであるmosquittoをインストール • 100クライアントがパブリッシュ • クライアントは100スレッドを生成し、それぞ れ1セッション • データサイズは16バイト、900バイトの2パタン • サブスクライバ1台を接続し、送信データ が正しく受信できることを確認 • CPU負荷を比較 • SmarNICはIntel NICよりも負荷が高い • eBPFを用いたバイパスしたほうが負荷が高い • eBPF VM実行のオーバーヘッドと予想される • データサイズが小さすぎる 2022/12/13 ACRi ウェビナー 23
  24. 24. ②TOEへのオフロード効果(応答性能) • 1クライアントの場合、Intel NICを利用する通常アプリが提案より高速 ※SmartNIC内のSoftcoreの場合、0.1ms程度で応答可能 • 100クライアント512kbyte以上の場合、提案手法の応答性能が高速 • 提案手法の効果 client 2022/12/13 ACRi ウェビナー 24 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 tcp toe(wo ebpf) toe(w ebpf) softcore 0 1 2 3 4 5 6 7 tcp toe(wo ebpf) toe(with ebpf) • echoのみを行うアプリ 1client 100client Response Time [ms] Response Time [ms] 提案手法が4%-9% 程度高速
  25. 25. ③プロキシを1段導入した際の応答性能 • トレースを行うことで応答時間が悪化 • 11%-68%悪化 • SmartNICでのトレース • サイズが小さい場合(256K以下)、悪化 • サイズが大きい場合、応答性が改善 • 512K, 1Kの場合16%程度改善 2022/12/13 ACRi ウェビナー 25 1client 100client echo tcp/ip Filter client logger tcp/ip ethernet echo Filter client logger tcp/ip ethernet trace trace SNIC SNIC • echo + 全データをトレースサーバーに転送 Response Time [ms] Response Time [ms] 16%程度高速 今後 -> サイズを増やした評価
  26. 26. リソース量と消費電力 • AMD Alveo u200上に提案手法を実装 • ハードウェア構成:TOE 2個, ネットワークプロセッサ 8コア, vNIC数2個, sfp+2口 • リソースには余裕があるため、さらなる追加も可能 • 消費電力 • 常に18.2W程度 • 電流計がボードに乗ったAlpha Data ADM-PCIE-9V3(XCVU3P)に提案構成を移植し計測 • アプリを実行しても大きく変わらない • Vivadoが出力するau200の見積消費電力も20W前後 リソース名 LUT LUTRAM FF BRAM URAM DSP 素子数(u200 に対する割合) 461,905 (39%) 29,863 (5%) 672,785 (28%) 1,139 (53%) 318 (33%) 42 (1%) 2022/12/13 ACRi ウェビナー 26 ボード上の電流計を利用
  27. 27. まとめ • SmartNICを用いたサービスメッシュデータプレーンを提案 • 基本的な動作を確認 • 簡単なアプリにおいて応答時間を改善 • eBPF + 512Kbyte以上のデータ • 今後 • 機能拡充 • コントロールプレーン実装 • k8sとの連携 • 評価の拡充 • コンテナでの評価、マイクロサービスをデプロイし評価 2022/9/16 SmartNICによるサービスメッシュの効率化 27

×