今日のインターネットやデータセンターの心臓部で用いられるルータ等のネットワーク機器は、テラビット/秒級の超高速度におけるパケット転送を行います。このことは、必然的に、その機能が専用集積回路 (ASIC) としてハードウェア的・固定的に実装されることを要求し、従来、機器ベンダ以外がそのプログラミングを行うことは困難でした。 これに対して、2010年代に登場したプログラマブルスイッチ (Programmable switch) [1]は、ASIC中にプログラム可能な回路機構を持つことで、この問題を解決し、超高速なパケット転送と柔軟な計算を両立させる革新的なネットワーク機器です。
プログラマブルスイッチが持つプログラム可能性は、世界のネットワーク研究を変革するのに十分なものでしたが、要求される高速性との兼ね合いから、無際限の計算能力を提供するものではありません。具体的には、プログラマブルスイッチはパイプラインに基づく特殊なアーキテクチャを持ちますが、このパイプラインのステージ数は数十段に限られ、各ステージはメモリによる単一のテーブル参照とArithmetic Logic Unit (ALU) による単一の論理演算または加減算のみを行うことができます。 そのため、プログラマブルスイッチ上では、現代の汎用計算機における富豪的プログラミングとは対照的に、P4と呼ばれる専用言語による、ハードウェア資源の消費量を常に意識した「貧民的」プログラミングの技巧が要求されるのです。
当研究室は、プログラマブルスイッチによるネットワーク機能の実装を伴う研究に、特に力を入れています。このような実装は、問題領域に対する深い理解と、徹底したボトルネック解析、独創的なデータ構造・アルゴリズム、ビット演算のトリックの結晶であり、工学的に興味深いものです。具体的な成果としては、高速なプログラマブルスイッチと大容量メモリを持つ汎用計算機を相補的に用いることによる、将来インターネットアーキテクチャとして有望なCCN/NDNのテラビット/秒に迫る実装 [2]、既存手法の速度を凌駕するテラビット/秒の匿名通信の実現 [3]、TLS 1.3等に用いられる暗号処理の高速実装 [4]などが挙げられます。
プログラマブルスイッチは、最先端の超高速ネットワークにおけるプログラミングを可能にする、現状唯一の手段であり、ネットワーク内計算の実装基盤としても重要です。
[1] Bosshart, Pat, et al. "Forwarding metamorphosis: Fast programmable match-action processing in hardware for SDN." ACM SIGCOMM Computer Communication Review 43.4 (2013): 99-110.
[2] Takemasa, Junji, Yuki Koizumi, and Toru Hasegawa. "Terabytes and terabits/s packet caching in ICN routers using programmable switches." 2022 IEEE 11th International Conference on Cloud Networking (CloudNet). IEEE, 2022.
[3] Yoshinaka, Yutaro, Junji Takemasa, Yuki Koizumi, and Toru Hasegawa. "Feasibility of network-layer anonymity protocols at terabit speeds using a programmable switch." 2022 IEEE 8th International Conference on Network Softwarization (NetSoft). IEEE, 2022.
[4] Yoshinaka, Yutaro, Junji Takemasa, Yuki Koizumi, and Toru Hasegawa. "On implementing ChaCha on a programmable switch." Proceedings of the 5th International Workshop on P4 in Europe. 2022.
近年、仮想化技術の発展に伴いNFV (Network Functions Virtualization) と呼ばれる技術が注目されています。NFVとは、従来は高価な専用機器を必要としていたルータ、ファイアウォール、ロードバランサといったネットワーク機器を汎用サーバ上の仮想環境にて提供する技術であり、運用コスト削減や柔軟な構成変更を行える利点から、データセンターなどでも採用されています。
ベンダが販売している専用機器を使用しない動きは、仮想環境を動かす汎用CPUの負荷を向上させます。特にパケット処理をはじめとするデータプレーン処理は汎用CPUに最適化されておらず、アプリケーション動作に必要なリソースまで使用してしまい、その結果、CPUの処理能力が低下することがあります。この問題に対処するために、データプレーン処理専用のプロセッサ(DPU; Data Processing Unit)を搭載したSmartNICが開発されました。
SmartNICは、データパス上でCPUのパケット処理やアプリケーション動作に不要な処理を移植することで、CPUの負荷を軽減します。複数のベンダが異なる設計思想を持つSmartNICを製造しており、Nvidia BlueField[1]やNetronome Agilio[2]などがあります。これらは汎用CPUとは異なるアーキテクチャを採用しています。このため、DPUの性能を最大限に引き出すためには、アーキテクチャやハードウェアの特性を考慮した独自のデータ構造やアルゴリズムの工夫が求められます。
計算資源が豊富な現代において、ハードウェアの特性を深く考慮しながらプログラミングを行う機会は珍しくなっています。特に、汎用CPU上での開発と比較して、SmartNICのような特定の機能を持つ専用ハードウェアを用いることは、従来のアプローチとは異なる新しい発見をもたらし、計算の効率化やリソースの最適利用といった面で、非常に価値のある学習機会となります。
当研究室では、通信の暗号化・復号化プロセスをSmartNICへオフロードする研究を進めています。具体的には、TLS 1.3でも採用されている認証付き暗号であるChaCha20-Poly1305の実装を行いました。
[1] NVIDIA Corporation, “Bluefield ネットワーキング プラットフォーム,” https://www.nvid ia.com/ja-jp/networking/products/data-processing-unit/
[2] Netronome 2024, “Agilio CX SmartNICs,” https://www.netronome.com/products/agilio-cx/
Research Themes