# SRNIC: A Scalable Architecture for RDMA NICs > [!abstract] 概要(NSDI'23 abstract の日本語訳) > RDMAは高いスケーラビリティが期待される技術である。すなわち、パケット損失が避けられない大規模データセンターネットワークで良好に動作すること(高いネットワークスケーラビリティ)、そしてサーバあたり多数の性能を維持したコネクションをサポートすること(高い接続スケーラビリティ)の両方が求められる。商用RoCEv2 NIC(RNIC)はスケーラビリティの点で不十分である。無損失かつ規模の限られたネットワークファブリックに依存し、性能を維持できるコネクション数もわずかしかサポートしないためだ。近年の研究IRNはロスレス要件を緩和することでネットワークスケーラビリティを改善するが、接続スケーラビリティの課題は未解決のままである。 > 本論文では、商用RNICと同等の高性能・低CPUオーバーヘッドを維持し、IRNと同等の高いネットワークスケーラビリティを維持しながら、接続スケーラビリティの課題に取り組むことを目指す。SRNICにおける我々の重要な洞察は、RNICのオンチップデータ構造とそのメモリ要件は、慎重なプロトコルとアーキテクチャの共設計によって最小化でき、接続スケーラビリティを改善できるというものである。この洞察に導かれ、我々はRDMA概念モデルに関わるすべてのデータ構造を分析し、RDMAプロトコルヘッダの変更と、cache-free QPスケジューラおよびmemory-free selective repeatを含むアーキテクチャ上の革新によって、それらをできる限り取り除く。我々はFPGAを用いて完全に機能するSRNICのプロトタイプを実装した。実験の結果、SRNICはオンチップで10K件の性能を維持したコネクションを実現し、正規化接続スケーラビリティ(すなわち1MBメモリあたりの性能維持コネクション数)の点で商用RNICを18倍上回りつつ、97 Gbpsのスループットと3.3 µsのレイテンシを5%未満のCPUオーバーヘッドで達成し、高いネットワークスケーラビリティも維持することが示された。 ## 論文情報 - タイトル: SRNIC: A Scalable Architecture for RDMA NICs - 著者: Zilong Wang, Layong Luo, Qingsong Ning, Chaoliang Zeng, Wenxue Li, Xinchen Wan, Peng Xie, Tao Feng, Ke Cheng, Xiongfei Geng, Tianhao Wang, Weicheng Ling, Kejia Huo, Pingbo An, Kui Ji, Shideng Zhang, Bin Xu, Ruiqing Feng, Tao Ding, Kai Chen, Chuanxiong Guo - 所属: [[Hong Kong University of Science and Technology]]、[[ByteDance]](Chuanxiong Guoのみ無所属) - 媒体: 20th USENIX Symposium on Networked Systems Design and Implementation (NSDI '23)、2023年4月17〜19日、Boston, MA - URL: https://www.usenix.org/conference/nsdi23/presentation/wang-zilong - 発表スライド: `.raw/slides/nsdi23-wang-zilong/`(同一URLページから取得) ## 概要 商用RoCEv2 NIC(RNIC)は、PFC(Priority-based Flow Control)に依存する無損失ファブリックが原因のネットワークスケーラビリティ問題と、キャッシュミスに起因する接続スケーラビリティ問題の両方を抱える。先行研究IRNはselective repeatの導入によりPFCを排除しネットワークスケーラビリティを改善したが、接続スケーラビリティは未解決のまま残した。本論文はRDMA概念モデルに基づいてRNICのオンチップデータ構造を体系的に分析し、それらを可能な限り除去するアーキテクチャSRNICを提案する。cache-free QPスケジューラとmemory-free selective repeatという2つの中核設計により、SRNICは4.4 MBのオンチップメモリで10K QPの性能維持を実現し、商用RNICと同等の性能・CPUオーバーヘッド、IRNと同等のネットワークスケーラビリティを両立する。 ## 問題設定 - **入力**: RDMA通信を行うホスト間のQP(Queue Pair)群とデータバッファ、及びRNICが処理するRoCEv2パケット。 - **出力**: 多数のQP(接続)を性能劣化なく同時に処理できるRNICアーキテクチャ。 - **前提条件**: RNICのオンチップSRAMは数MB程度と極めて限られる(例: Mellanox CX-5は約2MB)。ロッシーネットワーク(PFCなし)での動作を前提とする。 - **必要なデータ**: RDMA概念モデルにおける全データ構造とそのメモリ要件の定量分析(§3、[[#Table 1: 概念モデルのデータ構造とメモリ要件]]参照)。 商用RNICの接続スケーラビリティ問題は、QP数が小さな閾値(設定により16〜500)を超えるとRDMA性能が急激に低下する現象である。原因は一般に、オンチップSRAMに収まらないQPのコンテキストスイッチに伴うキャッシュミスとされる。著者らはMellanox CX-5(オンチップメモリ約2MB、QPCサイズ約375B)を例に、理論上は5.6K QPを維持できるはずが実際には256 QPで性能崩壊が始まる矛盾を指摘し(Figure 2a)、この矛盾を出発点として、オンチップSRAMの真の使われ方を体系的に分析する(分析結果は後述 Table 1 を参照)。 **Figure 1: RDMA NICの設計空間** ![[_attachments/nsdi23-wang-zilong/fig01-design-space.png]] (Figure 1. 商用RNIC・IRN・SRNICを、ネットワークスケーラビリティと接続スケーラビリティの2軸で比較する図。商用RNICは両方とも×、IRNはネットワークスケーラビリティのみ○(接続スケーラビリティ未対応)、SRNICは両方とも○(10K QPs)。) PFCが引き起こすネットワークスケーラビリティ問題(ヘッドオブラインブロッキング・デッドロック・PFCストーム)は本文でも触れられているが(§2.1)、発表スライドではこれを図解している。 **発表スライドより: PFCに起因するネットワークスケーラビリティ問題** ![[_attachments/nsdi23-wang-zilong/slide-network-scalability-pfc-issues.png]] (スライド p.4。1. ヘッドオブラインブロッキング(1つのトラフィッククラスの輻輳が他フローをブロック)、2. デッドロック(スイッチ間のバッファ待ちの循環)、3. PFCストーム(バッファ枯渇の連鎖的伝播)という3つの問題を図解する。) **Figure 2: 商用RNICの接続スケーラビリティ問題** ![[_attachments/nsdi23-wang-zilong/fig02-connection-scalability-issue.png]] (Figure 2. Figure 2aはTCPと比較してMellanox CX-5/CX-6の集約スループットがQP数256超で崩壊する様子を示す。Figure 2bはQP数増加に伴うICMキャッシュミスと余剰PCIeトラフィックの増大を示し、キャッシュミスが崩壊の根本原因であることを裏づける。) ## 提案手法 ### アーキテクチャ SRNICは、RDMA概念モデル(Figure 3)の一連のデータフローに基づき、関与する全データ構造を「共通データ構造」(RDMA全般に必須)と「selective repeat固有データ構造」(ロッシーRDMA由来)の2categoryに分類し、それぞれに専用の最適化戦略を適用する。 **Figure 3: RDMA概念モデル** ![[_attachments/nsdi23-wang-zilong/fig03-rdma-conceptual-model.png]] (Figure 3. Requester/Responder双方が持つSQ・RQ・CQ・WQE Cache・MTT・ORT・Reordering Buffer・Bitmaps・Receiving Buffer・QPCという各データ構造間を、小さなSENDメッセージの送受信フロー(①〜⑥)が通過する様子を示す。) **Table 1: 概念モデルのデータ構造とメモリ要件** ![[_attachments/nsdi23-wang-zilong/table1-data-structures.png]] (Table 1. 10K QP時の典型サイズは、共通データ構造がReceiving Buffer 0.6MB・QPC 2.0MB・MTT 8MB・WQE Cache 9.8MB、selective repeat固有データ構造がBitmap 3.0MB・Reordering Buffer 4.9GB・Outstanding Request Table 114.4MBに達する。最適化後はMTTが1.2MBへのキャッシュ化以外すべて0になる。) SRNIC全体アーキテクチャ(Figure 4)は、ドライバ層(ユーザー空間アプリケーション・SQ/RQ/CQ・ソフトウェア再送モジュール・CtrlQ)と、RNICハードウェア層(DMA Engine・Transport・Basic NIC)の3層構造からなる。データパスはシーケンシャルパケットを処理する高速パス(RNIC内で完結)と、順序前後(OOO)パケットを処理する低速パス(ソフトウェア再送を利用しbitmapをホストへオンロード)に分離される。損失率が低い(データセンターで通常0.01%未満)ため低速パスのオーバーヘッドは小さく、1%損失率でも余剰PCIeオーバーヘッドは2.46%にとどまる。 **Figure 4: SRNICアーキテクチャ** ![[_attachments/nsdi23-wang-zilong/fig04-srnic-architecture.png]] (Figure 4. Outbound Path・Inbound Fast Path・Inbound Slow Pathの3経路が、ドライバ層のRetryQ/SQ/RQ/CQとCtrlQ、RNICハードウェア層のQP Scheduler・Congestion Control・Hardware Retransmission・QPC・MTT・100GE MACを貫く構成。) ### アルゴリズム/手法の詳細 **cache-free QPスケジューラ(§4.3)**: 共通データ構造の最適化に用いる。SQスケジューラは数万のSQのうちアクティブかつクレジットを持つものだけをスケジューリング対象とし(Figure 5a)、Event Mux・Schedule Queue・Schedule Policyの3要素で構成される(Figure 6)。SQのdoorbell・輻輳制御からのクレジット更新・スケジュール完了のdequeueイベントをEvent Muxが処理し、QPCの状態(active/credit/ready)を更新する。スケジューラはラウンドロビンでSchedule Queueの先頭からSQを取り出し、DMA Engineが最大n個のWQEとmin(burst_size, credit)バイトをフェッチする。フェッチ後に余ったWQEはキャッシュせずドロップし次回再フェッチする(fetch-and-drop戦略)ことで、WQEキャッシュを完全に排除する。実装ではn=8、burst_size=16KB(PCIe BDP相当)。RQスケジューラ(Figure 5b)も同様にReceive WQEを事前フェッチ・キャッシュせず、パケット到着時にそのつどRQから取得する。 **Figure 5: QPスケジューラモデル** ![[_attachments/nsdi23-wang-zilong/fig05-qp-scheduler-models.png]] (Figure 5. (a) SQスケジューラモデル: ホスト上の数万のSQからCongestion Controlのクレジットに基づきSQ Schedulerが選択する。(b) RQスケジューラモデル: 数万のRQからRQ Schedulerが選択する。) **Figure 6: cache-free SQスケジューラ** ![[_attachments/nsdi23-wang-zilong/fig06-cache-free-sq-scheduler.png]] (Figure 6. Event Mux・QPC(各QPのactive/credit/ready状態)・Schedule Policy・Schedule Queueが連携し、doorbell・credit・dequeueイベントに応じてenqueue/dequeueを行う構成。) **memory-free selective repeat(§4.4)**: selective repeat固有データ構造の最適化に用いる。ヘッダ拡張(§4.4.1)により、Outstanding Request Table(未処理要求とPSN/MSN/PSN_OFFSETのマッピングを保持していた)を排除し、代わりに全ての未処理要求パケットのヘッダにこれらのメタデータを載せ、応答パケットが同じメタデータをエコーバックする。これによりin-place reordering(ユーザーのデータバッファをそのまま再順序化バッファとして使う)が可能になり、per-QPのreordering bufferも不要になる。SENDパケットはSSNとPSN_OFFSETを、WRITEパケットは宛先アドレスをヘッダに追加する。READには要求・応答双方への確認応答を追加し自己クロッキングを実現する。この拡張によりヘッダはSENDで58→66B、WRITEで58→78Bに増加し、1024BのRoCE MTU下でgoodputをそれぞれ0.7%、1.8%低下させる。 bitmap onloading(§4.4.2)は、パケット損失がない通常時はePSN(expected PSN)とlACK(last acknowledged PSN)だけで順序処理を行い、bitmapはOOOパケット発生時にのみホストメモリへオンロードして利用する(Figure 7)。Responder側ではePSNと不一致のパケットが来ると損失回復状態に入り、メタデータをソフトウェアへ送りbitmapを更新、新ePSNが確定すると回復状態を抜ける(Figure 8)。回復状態脱出時のrace conditionには、直近の連続パケット範囲[psn_left, psn_right]を記録し、更新後のePSNがその範囲に収まればpsn_right+1として確定する方式で対処する。 **Figure 7: bitmap onloadingを伴うselective repeat** ![[_attachments/nsdi23-wang-zilong/fig07-selective-repeat-bitmap.png]] (Figure 7. Responder側(上)とRequester側(下)双方で、PSN一致判定→CtrlQ経由でホストのPer-QP Bitmapsへメタデータ転送→RetryQ/RetransmissionによるePSN更新、という一連のフローを示す。) **Figure 8: 損失回復状態からの高速脱出** ![[_attachments/nsdi23-wang-zilong/fig08-fast-exit-loss-recovery.png]] (Figure 8. QPCが保持するePSN=0、psn_left=2、psn_right=4の状態で、bitmapが[2,5]の範囲を満たすとnew ePSN=5に更新されTransportへ通知される流れ。) ### 実装上の工夫 - QPC(全QPの状態を保持)とMTT(仮想-物理アドレス変換、ホストメモリに配置しキャッシュのみオンチップ)は排除せず、Receiving Bufferも小さいため最適化対象外とする(§4.5)。 - 輻輳制御にはACKベースの自己クロッキングを活かしたwindowベースのDCTCPを採用。event-drivenで動作しタイマーベースの輻輳制御より並列処理数の点でハードウェア実装に適する(§5)。 - Xilinx FPGA(PCIe Gen3 x16、100 Gbpsイーサネットポート、クロック周波数300MHz)で完全に機能するプロトタイプを実装。 **Table 2: SRNICプロトタイプのリソース使用量** ![[_attachments/nsdi23-wang-zilong/table2-resource-usage.png]] (Table 2. LUT 101102・Register 140816・BRAM 621・URAM 48。メモリ内訳はQPC 2.3MB・MTT 1.2MB・Receiving Buffer 0.6MB・SQ Scheduler 0.3MBで合計4.4MB。QPC 2.3MBはメモリアラインメントの都合でTable 1の2.0MBよりやや大きい。) ## 新規性 - 既存研究IRNはselective repeatの導入によりPFC(無損失ネットワーク要件)を排除しネットワークスケーラビリティを改善したが、selective repeat固有のデータ構造追加により3〜10%のメモリオーバーヘッドが生じ、接続スケーラビリティは未解決のまま残していた。 - 商用RNICはブラックボックスであるため、著者らはRDMA概念モデルという分析枠組みを新たに導入し、全データ構造を体系的に洗い出す(§3)ことで、初めて接続スケーラビリティの定量的な改善余地を明らかにした。 - 関連研究(Discussion §7・Related Work §8)との対比: Mellanox DCTはQPの動的生成・破棄でアクティブ接続数を制限するが、接続の頻繁な切り替えによりレイテンシ増加・帯域浪費を招く。StaRは片側が状態を肩代わりする非対称通信パターンに依存する。eRPC・FaSST・1RMA・Nitroなどソフトウェアベースの手法はCPUに輻輳制御・ロス回復を委ねるためCPUオーバーヘッド・レイテンシ・ジッタが増大する。SRNICはRoCE譲りのハードウェアフレンドリさと、TCP/iWARP系の選択的再送を組み合わせるバランス型アプローチを取る点で異なる。 ## 実験設定 - **実験環境**: 2台のRNICを直結したテストベッド(実接続スケーラビリティ・性能・CPUオーバーヘッド・損失耐性評価用)と、ns-3による大規模シミュレーション(ネットワークスケール評価用)。 - **プロトタイプ**: Xilinx FPGAボード、PCIe Gen3 x16、100 Gbpsイーサネットポート、クロック周波数300MHz。 - **比較対象**: Mellanox RNIC CX-5・CX-6(商用RNICのbaseline)、TCP(ソフトウェアトランスポートのbaseline)、IRN(ns-3シミュレーションでのネットワークスケーラビリティ比較のみ)。 - **ワークロード設定**: RoCE MTU 1024B、`perftest`ベンチマーク(接続スケーラビリティ・性能評価)。ns-3シミュレーションでは(ToR, Aggregate, Core)スイッチ数を(1,0,0)〜(128,128,64)まで変えたfat-treeトポロジ(サーバ数16〜4096、リンク400Gbps、伝搬遅延1µs)、Cache_Followerトレース(53%が0〜100KB、18%が100KB〜1MB、残りが1MB超のフローサイズ分布)、負荷率0.7を使用。PFCはCX-6のみ有効、SRNICとIRNは無効。 - **評価指標**: 集約スループット(Gbps)、正規化接続スケーラビリティ(1MBオンチップメモリあたりの性能維持QP数)、レイテンシ(µs)、CPU使用率(%)、goodput(損失率別)、平均/P99テールFCT、平均スローダウン。 ## 実験結果 **Figure 9: 接続スケーラビリティ** ![[_attachments/nsdi23-wang-zilong/fig09-connection-scalability-results.png]] (Figure 9. QP数を128から10Kまで増やしても、SRNICは約97Gbpsの集約スループットをほぼ一定に維持する一方、Mellanox CX-5/CX-6はQP数256超で急落する。TCPは81〜96Gbpsを維持するが不安定。) - SRNICは10K QPを4.4MBメモリで実現し、Mellanox CX-5(256 QP、2MBメモリ)に対し正規化接続スケーラビリティで18倍(10K QPs/4.4MB vs 256 QPs/2MB)優れる。 **Figure 10: 性能とCPUオーバーヘッド** ![[_attachments/nsdi23-wang-zilong/fig10-performance-cpu-overhead.png]] (Figure 10. Figure 10aはメッセージサイズ4KB以上でSRNICとCX-6が共に97 Gbpsのライン速度に達し、TCPは最大37 Gbpsに留まることを示す(SRNICの最大メッセージレートは6.6 Mrps、CX-6は6.3 Mrps)。Figure 10bは64Bメッセージのレイテンシを示す(SRNIC 3.3µs、CX-6 1.16µs、TCP 24µs)。Figure 10cはSRNICとCX-6のCPUオーバーヘッドがともに5%未満、TCPが約100%であることを示す。) - SRNICのレイテンシがCX-6よりやや高い(3.3 vs 1.16µs)のは、cache-free QPスケジューラが追加する約1µsのPCIe往復と、FPGA(300MHz)とASIC(GHz級)のクロック差に起因すると考察されている。 **Figure 11: 損失耐性** ![[_attachments/nsdi23-wang-zilong/fig11-loss-tolerance.png]] (Figure 11. 損失率10⁻⁶〜10⁻²の範囲で、CX-6のgoodputは損失率0.1%超で急落し1%超で25Gbpsまで低下する一方、SRNICは75Gbpsを維持し、CX-6比3倍のgoodputを示す。) - CX-6は損失回復にgo-back-Nを使うため帯域の大半が再送に浪費される(MAC統計上の生スループットは約97Gbpsだが実効goodputは25Gbpsまで低下)のに対し、SRNICのselective repeatは効率的な回復を実現する。 **Figure 12: ネットワークスケール別の性能** ![[_attachments/nsdi23-wang-zilong/fig12-performance-network-scales.png]] (Figure 12. サーバ数16〜4096のfat-treeシミュレーションで、SRNICは3指標(平均FCT・P99テールFCT・平均スローダウン)すべてでCX-6比1.9〜2.2倍良好。クラスタ規模拡大に伴いSRNICは安定した性能を維持する一方、CX-6との差は拡大する。SRNICとIRNは同じselective repeatとDCTCP/DCQCN系の輻輳制御を用いるため近い性能を示す。) ## 考察 - SRNICの中心的な発見は、RDMAプロトコルヘッダがそもそも無損失環境向けに設計されており、大規模でロッシーなデータセンターネットワークには適合しないという点である(§9 Conclusion)。 - RDMAプロトコルのそもそもの設計思想(§7 Discussion)は、InfiniBand仕様が明示的に「選択的パケット再送も順序前後受信もサポートしない」としている点に起源があり、Ethernet上でRDMAを機能させるためにPFCで無損失化する経路が取られてきた。IRNとSRNICは逆に、ロッシーネットワーク向けにRDMAプロトコル自体を見直す経路を選んだ先駆的研究と位置づけられる。 - RoCEv2とiWARP/TCP Offload Engine(ToE)の設計思想の対比においては、RoCE系がボトムアップ(最小限のハードウェアフレンドリなトランスポートから徐々に高度化)、iWARP系がトップダウン(完全互換TCP/IPスタックから複雑さを削減)であるのに対し、SRNICはRoCEのハードウェアフレンドリさを継承しつつselective repeatとDCTCPというTCP由来の必要機能のみを取り入れるバランス型と位置づけられる。 ## 強み / 弱点・課題 - **Strengths**: RDMA概念モデルという体系的な分析枠組みでブラックボックスの商用RNICの性能崩壊要因を定量的に説明した点。cache-free QPスケジューラとmemory-free selective repeatという2つの独立した最適化軸で、接続・ネットワーク双方のスケーラビリティを同時に達成した点。FPGAでの完全動作プロトタイプによる実証。 - **Weaknesses/Limitations**(論文が明示): - SRNICのレイテンシ(3.3µs)はCX-6(1.16µs)よりやや高く、レイテンシが重要なラックスケール展開ではシェアードReceive WQEキャッシュの再導入が必要になりうる。 - QPCテーブルとMTTキャッシュ間の最適なオンチップメモリ配分はシナリオ依存であり、探索が今後の課題として残されている(§5)。 - ヘッダ拡張によりgoodputがSEND/WRITEでそれぞれ0.7%/1.8%低下する。