ルーターの「脳」を酷使するな:パケット処理のボトルネックとハードウェア選定の深淵
ネットワークエンジニアとして現場に立つと、たびたび遭遇する光景がある。「最新のWi-Fi 7対応ルーターを買ったのに、なぜかスループットが頭打ちになる」「VPNを張った途端、レイテンシが跳ね上がる」。
家電量販店のパッケージに書かれた「最大通信速度」という甘い言葉を信じてはいけない。家庭用ルーターの心臓部であるCPUとメモリは、実は極めて過酷な環境に置かれている。本稿では、パケットがルーターの深淵を通過する際、何がハードウェアを蝕み、我々はどう最適化すべきかを解き明かす。
パケットの迷宮:ハードウェア・オフロードの限界
一般的なホームルーターにおいて、パケット処理の主役はCPUだ。しかし、全ての処理をCPUに任せていては、ギガビットイーサネットのラインレートを維持することは不可能に近い。
多くのルーターは Fast Path や Shortcut Forwarding と呼ばれるハードウェア・オフロード機能を持っている。これは、一度ルーティングテーブルに登録されたフローを、CPUを介さずにスイッチングチップ(ASIC)レベルで処理する仕組みだ。
問題は、この「ショートカット」が成立しないケースにある。
- VPN(IPsec/OpenVPN/WireGuard): 暗号化処理はほぼCPUの演算能力に依存する。
- パケットフィルタリング/IDS:
iptablesやnftablesで複雑なルールを適用すると、パケット毎にカーネル空間でのコンテキストスイッチが発生する。 - QoS制御: トラフィックシェーピングは、一度パケットをバッファにキューイングする必要があるため、オフロードが強制的に無効化される。
これらの処理が重なると、CPU使用率は瞬く間に100%に張り付き、SoftIRQ(ソフトウェア割り込み)による遅延が蓄積し、結果としてパケットロスやRTT(Round Trip Time)の増大を招く。
トランスポート層のチューニング:TCPバッファとウィンドウ制御
ルーターのメモリ不足は、TCPの Window Size に直接的な影響を与える。ルーターがパケットを処理しきれずメモリ上のキューが溢れれば、Tail Drop が発生し、TCPのスロースタートが繰り返される。
Linuxベースのルーターを運用している場合、以下の sysctl パラメータを調整することで、バッファ管理を最適化できる。
# TCPウィンドウサイズの自動チューニングを有効化
# メモリに余裕がある場合、バッファを拡大してスループットを稼ぐ
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# ルーターのキューイング遅延を緩和するための設定
# BBRアルゴリズムを有効化し、パケットロスに対する耐性を向上させる
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
特に BBR(Bottleneck Bandwidth and RTT)は、パケットロスを輻輳とみなさず、あくまでRTTとスループットの均衡点を探るため、家庭内のような不安定な無線環境において非常に有効だ。
TLSハンドシェイクとセキュリティの代償
現代のトラフィックのほとんどはTLSで保護されている。ルーターで SNI(Server Name Indication)ベースのフィルタリングや、ディープパケットインスペクション(DPI)を行う場合、ルーターはTLSのハンドシェイク過程を監視しなければならない。
ここで発生するボトルネックは、CPUの「暗号化処理」だけではない。ハンドシェイク時に交換される証明書の検証や、暗号スイートのネゴシエーション処理が、ルーターのメモリを消費する。特に、安価なルーターで大量の同時接続(例えば、IoTデバイスが頻繁にクラウドへ接続を試みる環境)が発生すると、メモリの断片化(フラグメンテーション)が深刻化し、ルーターのフリーズを引き起こす。
回避策:ルーターに負荷をかけない設計
1. 名前解決の分離: ルーターのDNSリレー機能を使わず、CoreDNS 等を立てたラズパイやサーバーにDNS処理をオフロードする。
2. VPNの適材適所: 全トラフィックをVPNへ流すのではなく、Policy Based Routing(PBR)を使用して、必要な通信のみをルーティングする。
選定基準としての「真のスペック」
ルーター選定において、パッケージの速度表記を見るのはやめよう。代わりに以下の点を確認すべきだ。
- SoCのアーキテクチャ: ARM v8以降の
Cortex-A53以上を推奨。できればAES-NI命令セットをサポートしているものを選びたい(VPN性能に直結する)。 - RAMの実装量: 512MB以上が現代のミニマムラインだ。特に
NATテーブルの保持数や、将来的なIPv6移行を考慮すると、256MBでは心許ない。 - オープンソース対応:
OpenWrtやpfSenseをインストールできるか否か。これは、メーカーのサポート終了後もカーネルアップデートを継続し、脆弱性から身を守るための唯一の手段となる。
最後に:ネットワークは「生き物」である
パケットは、ルーターという迷宮を通る際、常に物理的な制約と戦っている。ハードウェアリソースを極限まで使い切ることは、アーキテクトとしての醍醐味でもあるが、家庭環境においては「安定」こそが最大のパフォーマンスだ。
パケットが効率よく、かつ最短距離でターゲットまで到達できるよう、我々はルーターという小さなコンピュータを、OSのカーネルチューニングから物理配置に至るまで、丹念にケアし続けなければならない。
次は、メッシュWi-Fiにおける「ローミングの最適化」と、バックホール帯域を食い尽くす「マルチキャストトラフィック」の制御について深掘りしようと思う。ネットワークの深淵は、まだまだ深い。
コメント