# RSS(Receive Side Scaling)
RSS(Receive Side Scaling)とは、マルチキュー NIC(Network Interface Card)がハードウェアレベルで複数の受信キューを持ち、パケットの 4 タプル(送受信 IP アドレス・ポート番号)のハッシュによって各キューに振り分け、それぞれのキューを異なる CPU コアに割り当てることで受信割り込みを分散する仕組みである。
## 動作原理
1. NIC ハードウェアがパケットの 4 タプルをハッシュ化
2. ハッシュ値に基づいて複数の受信キューにパケットを振り分け
3. 各キューは異なる CPU コアに対応するハードウェア割り込みを生成
4. 各 CPU コアが独立してプロトコル処理を実行
## 要件
NIC ハードウェアとドライバの両方が RSS に対応している必要がある。ハードウェア依存が高いため、すべての環境で使えるわけではない。
## ソフトウェア代替
RSS に対応していない NIC 環境向けに、ソフトウェア実装の [[RPS(Receive Packet Steering)]] が Linux 2.6.35 で導入された。さらにキャッシュ局所性を考慮した [[RFS(Receive Flow Steering)]] も同バージョンで追加された。
## 関連する [[スマートNICオフロード]] との関係
RSS はパケット分散のみを行うハードウェア機能。[[スマートNICオフロード]] はより広範なオフロード(TCP 処理全体・チェックサム計算等)を対象にしており、RSS とは目的が異なる。
## 横断的知見
- 今後の取り込みで、複数ソース間の関係を追記する。
## 未解決の問い
- この概念をどのソース群で継続的に検証するか。