Skip to main content
QUICK REVIEW

[論文レビュー] hXDP: Efficient Software Packet Processing on FPGA NICs

Marco Spaziani Brunella, Giacomo Belocchi|arXiv (Cornell University)|Oct 27, 2020
Software-Defined Networks and 5G参考文献 47被引用数 25
ひとこと要約

hXDPは、eBPF/XDPプログラムを、並列処理を活用しリソース使用を低減する最適化された独自命令セットアーキテクチャ(ISA)に未変更のままコンパイルすることで、FPGA NIC上で高性能で低遅延のパケット処理を実現する。156MHzでCPUコアレベルのスループットを達成し、FPGAリソース使用率は15%未塔で、高スペックCPUを上回る遅延性能を発揮するとともに、動的プログラムロードをサポートする。

ABSTRACT

FPGA accelerators on the NIC enable the offloading of expensive packet processing tasks from the CPU. However, FPGAs have limited resources that may need to be shared among diverse applications, and programming them is difficult. We present a solution to run Linux's eXpress Data Path programs written in eBPF on FPGAs, using only a fraction of the available hardware resources while matching the performance of high-end CPUs. The iterative execution model of eBPF is not a good fit for FPGA accelerators. Nonetheless, we show that many of the instructions of an eBPF program can be compressed, parallelized or completely removed, when targeting a purpose-built FPGA executor, thereby significantly improving performance. We leverage that to design hXDP, which includes (i) an optimizing-compiler that parallelizes and translates eBPF bytecode to an extended eBPF Instruction-set Architecture defined by us; a (ii) soft-CPU to execute such instructions on FPGA; and (iii) an FPGA-based infrastructure to provide XDP's maps and helper functions as defined within the Linux kernel. We implement hXDP on an FPGA NIC and evaluate it running real-world unmodified eBPF programs. Our implementation is clocked at 156.25MHz, uses about 15% of the FPGA resources, and can run dynamically loaded programs. Despite these modest requirements, it achieves the packet processing throughput of a high-end CPU core and provides a 10x lower packet forwarding latency.

研究の動機と目的

  • リソース制限のあるFPGA NICに効率的にXDPパケット処理をオフロードするが、既存のLinux eBPF/XDPプログラムとの互換性を維持する。
  • eBPFの逐次実行モデルとFPGAのネイティブな並列性との不一致を克服し、eBPFをFPGAに直接マッピングした場合の性能制限を解消する。
  • リソース消費を最小限に抑えることで、複数のアクセラレータがFPGAを共有できるようにし、他のネットワーク機能に十分な容量を確保する。
  • 未変更のXDPプログラムの動的ロードを可能にし、Linuxカーネルとのシームレスな統合を実現するため、XDPマップとヘルパー関数をエミュレートする。

提案手法

  • 3オペランド命令、6バイト長のロード/ストア命令、パラメータ化された終了命令を備えた拡張eBPF ISAを設計し、FPGA上でのコード密度と実行効率を向上させる。
  • FPGAハードウェアにネイティブに実行可能な拡張ISAを実装したカスタムソフトCPUを構築し、効率的で並列的な命令処理を実現する。
  • 命令レベル並列性の分析を実施し、FPGA環境下で安全な場合に冗長な命令(例:境界チェック、ゼロクリア)を削除する静的コンパイラを実装する。
  • Linuxカーネルで定義されたXDPマップとヘルパー関数をエミュレートする完全なFPGAベースのインfraを構築し、既存のXDPプログラムとの完全な互換性を実現する。
  • NetFPGAプラットフォームと統合し、hXDPのオープンソースでのデプロイと実ハードウェア上での評価を可能にする。
  • PCIe転送を最小限に抑えるため、データ移動を最適化し、NIC上での実行を活用することで、CPUおよびシステムのオーバーヘッドを低減する。

実験結果

リサーチクエスチョン

  • RQ1eBPFの逐次実行モデルとFPGAのネイティブな並列性との不一致を考慮しても、eBPFプログラムをFPGA上で効率的にコンパイル・実行することは可能か?
  • RQ2XDPオフロードにおいて、最小限のFPGAリソースで高いパフォーマンスを達成するために必要なハードウェアおよびソフトウェア最適化は何か?
  • RQ3目的に特化したFPGA実行エンジンをターゲットとした場合、冗長または文脈依存のeBPF命令をどの程度削除または置き換えることができるか?
  • RQ4カスタムISA拡張とコンパイラパイプラインにより、最小限のリソースオーバーヘッドで高スループット・低遅延のパケット処理をFPGAで実現できるか?
  • RQ5未変更のXDPプログラムの動的ロードをFPGA NICで実現することは可能か? また、LinuxカーネルのXDPインタフェースとの互換性を維持できるか?

主な発見

  • hXDPは、156.25MHzという低いクロック周波数で動作しているにもかかわらず、ハイエンドx86 CPUコアと同等のパケット処理スループットを達成した。
  • システムはFPGAリソースの15%未塔を使用しており、他のアクセラレータとの効率的な共有が可能である。
  • hXDPは、ハイエンドCPUコアと比較してパケット転送遅延を10倍に低減した。
  • コンパイラとハードウェアスタックは、FPGA環境下で正しく動作する前提で、冗長なeBPF命令(例:境界チェック、ゼロクリア)を効果的に削除または最適化した。
  • 未変更のXDPプログラムの動的ロードをサポートしており、実行時再構成とLinuxカーネルとのシームレスな統合を可能にした。
  • NetFPGA上での実装により、効果的な命令レベル並列性とISAレベルの最適化のおかげで、わずかなクロック周波数でも高いパフォーマンスが達成可能であることが示された。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。