Packetshader: A GPU-accelerated Software Routerを読んだ

2,998 views
2,912 views

Published on

輪講資料的な

Published in: Technology

Packetshader: A GPU-accelerated Software Routerを読んだ

  1. 1. PacketShader: A GPU-Accelerated Software Router Sangjin Han, Keon Jang, KyoungSoo Park, Sue Moon Department of Computer Science, KAIST, Korea id:y_uuki / @y_uuki_
  2. 2. Abstraction‣ PacketShader‣ GPUによるパケット処理のための高性能ソフトウェアルータ‣ 現在のソフトウェアルータにおけるCPU負荷をGPUにオフロードする‣ この高性能Packet I/O Engineと併用すると,既存のソフトウェアルータと比 較して4倍以上のスループットとなる‣ 64BのIPv4パケットを処理するスループットは39Gbps‣ その他,IPv6,OpenFlowおよびIPsecについてGPUで高速化
  3. 3. Introduction‣ PCベースのソフトウェアルータは低コストかつProgrammability が高い‣ 既存のソフトウェアルータは10Gbps近くのForwarding性能‣ しかし,より計算量の多いアプリケーションに対してはCPUがボトル ネックとなる‣ IPsecの場合,IPv4のForwardingスループットの約20%の性能‣ 数100コアをもつGPUに計算処理をオフロードする‣ GPUのメモリは帯域幅が大きいため,巨大なテーブルのlookupに適している
  4. 4. Introduction‣ PacketShaderは以下の2つの要素で構成される‣ パケットごとのメモリ管理オーバヘッドを排除するためのI/O Engineの実装‣ IPテーブルのlookupやIPsecの暗号化処理をGPUにオフロード‣ IPv4:40 Gbps,IPv6:38.2 Gbps,IPsec:10 20 Gbps
  5. 5. GPU as a Packet Processor‣ 15個のStreaming Multiprocessors(SMs)‣ 1個のSMは32個のScalar Processors(Sps)をもつ‣ 合計480コア‣ SMはSIMT演算を行う‣ 32個の同一の演算命令を 1クロックで実行‣ 統合開発環境CUDA
  6. 6. Optimizing Packet I/O Engine‣ 高性能なソフトウェアルータは NIC を介したパケットの受信と転送に 多くの CPU サイクルを費やしている(約60%)‣ Linux Network Stack の問題‣ パケットごとにバッファを確保している‣ Huge Packet Buffer を実装‣ 2つの巨大なバッファを確保 ‣ メタデータ ‣ パケットデータ
  7. 7. Packet I/O Performance‣ IPテーブルのlookupなしで,送受信/Forwardのみの性能測定‣ スループットは約40Gbps(RX+TX(青))で抑えれれている‣ ボトルネックはI/O‣ コア数を減らしても同一の結果‣ 一定のメモリアクセスを要する バックグラウンドプロセスを 走らせても同じ結果
  8. 8. PacketShader Architecture‣ Packet API:カーネルレベルのI/O Engineのラッパー‣ masterスレッドと3個のworkerスレッド‣ masterスレッドのみがGPUにアクセス ‣ 複数スレッド同時にGPUにアクセスすると 性能が落ちる‣ workerスレッドはPacket I/Oを担当‣ masterスレッドはGPUにアクセスする するためのプロキシのように振る舞う
  9. 9. Workflow‣ パケットのグループをチャンクとして,チャンク単位で処理する‣ Pre-shading ‣ 各workerスレッドがRXキューからチャンクをフェッチする ‣ GPUに渡すための前処理(ヘッダからIPアドレスを抽出するなど)‣ Shading: ‣ masterスレッドがCPU-GPU間 のデータ転送‣ Post-shading: ‣ 結果をアウトプットキューに格納
  10. 10. Optimization Strategies‣ Chunk Pipelining ‣ masterスレッドの処理とWorkerスレッドの処理をパイプライン化する‣ Concurrent Copy and Execution ‣ GPU上でのプログラム実行中にCPU-GPU間 のデータ転送が可能
  11. 11. Evaluation - IPv4 and IPv6‣ IPv4,IPv6ともに最大スループット(40Gbps)に達している‣ パケットサイズが64Bのとき若干スループットが低い‣ IOハンドラが主記憶-GPUメモリ間のIPアドレスとlookup結果の転送に‣ IPv6のほうがメモリアクセス回数が大きいため,メモリ帯域幅の大き いGPU実装の速度向上率は大きい
  12. 12. Evaluation - OpenFlow and IPsec‣ OpenFlow:32K + 32のとき,NetFPGAの実装と比べて8倍の  性能向上‣ IPsec:CPU onlyと比較して,約3.5倍‣ 計算量の多い処理でもGPU実装は有効である
  13. 13. Conclusions‣ 安価なハードウェア上で高スループットなパケット処理を実現する PacketShaderを提案した‣ ネットワークスタックにおけるパケットごとのオーバヘッドを最小化 し,NICから直接ユーザ空間にパケットを転送可能にした‣ 計算量の多い処理とメモリ集約な処理をGPUにオフロードした‣ 40GbpsのスループットをもつPCベースのソフトウェアルータを示し た

×