ギガ越えの「虚像」と「実像」:ルーターのCPU・メモリがパケット転送のボトルネックになる理由
「10Gbps回線を契約したのに、なぜ実測値が頭打ちになるのか?」――。この問いは、ネットワークエンジニアやテックリードがキャリアのどこかで一度は直面する「呪い」のようなものです。
多くのユーザーはWi-Fiのリンク速度や回線の帯域幅ばかりに目を向けますが、真のボトルネックはルーター内部の「パケット処理能力」に隠れています。今回は、パケットがSoC(System on Chip)を通過する際の泥臭い挙動と、ハードウェアオフロードがなぜ現代の高速通信において不可欠なのか、その深淵を覗いてみましょう。
—
1. ソフトウェア処理の限界とハードウェアNAT(HWNAT)の重要性
本来、Linuxカーネルのネットワークスタックは、非常に柔軟で多機能です。パケットを受信し、IPテーブル(netfilter)でフィルタリングし、ルーティングテーブルを検索し、MACアドレスを書き換えて送信する。この「ソフトウェアルーティング」のプロセスは、CPUにとって重いコンテキストスイッチとメモリアクセスの連続です。
現代のSoCには、この処理をカーネル空間から「ハードウェアレベル」へとバイパスさせるHWNAT(またはFast Path)エンジンが実装されています。
なぜHWNATが不可欠なのか
HWNATが有効な場合、最初のパケット(フローのセットアップ)のみがCPUで処理され、以降の同じフローのパケットは専用のASICやネットワークプロセッサが直接転送します。これにより、CPU負荷を最小限に抑えつつ、Gbps級のラインレートを維持できるのです。
もしルーターの設定で「ハードウェアアクセラレーション」を無効にすると、CPUは1パケットごとに割り込み処理を行い、高スループット時には瞬く間にsoftirq(ソフトウェア割り込み)で100%に張り付きます。これが、回線速度が出ない最大の原因です。
—
2. TCPスタックのチューニング:RTT削減とバッファ管理
ルーターがパケットを処理する際、トランスポート層の挙動もパフォーマンスに大きく関与します。特に広帯域なネットワークでは、TCPのウィンドウサイズを適切に制御しなければ、帯域が余っていても速度が出ない「TCPスループットの飽和」が発生します。
Linuxベースのルーター(OpenWrtや独自ファームウェア)で、カーネルパラメータを最適化する際の実例を見てみましょう。
# sysctlでのTCPスタックチューニング例
# 高速な光回線向けにバッファサイズを拡大
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"
# 輻輳制御アルゴリズムをBBRに変更
# Googleが開発したBBRは、パケットロスを輻輳と誤認せずスループットを維持する
sysctl -w net.ipv4.tcp_congestion_control=bbr
BBR(Bottleneck Bandwidth and Round-trip propagation time)は、現代のインターネット環境において必須のアルゴリズムです。パケットロスを検知してウィンドウサイズを極端に絞る従来のCubicと異なり、BBRは「実際のボトルネック帯域」を推測するため、高遅延・広帯域な環境下で圧倒的なパフォーマンスを発揮します。
—
3. セキュリティとパフォーマンスのトレードオフ:TLSとヘッダー圧縮
最近のルーターには「パケットインスペクション」や「VPN処理」が搭載されていますが、これらはCPUを激しく消費します。特にTLSハンドシェイクや暗号化通信の復号を行う際、CPUのAES-NI命令セットの有無がパフォーマンスを左右します。
また、IoTデバイスの通信で重要なのがROHC(Robust Header Compression)のようなヘッダー圧縮技術です。パケットのオーバーヘッドを削減することで、特にモバイル通信や低帯域なアップリンクでの効率を劇的に向上させます。
セキュリティ上の脆弱性回避策
一方で、パケット処理を高速化しすぎると、セキュリティ検査が疎かになるリスクもあります。以下の点には注意が必要です。
- 断片化攻撃(Fragmentation Attack): カーネルのパケット再構築バッファを埋め尽くす攻撃を防ぐため、
net.ipv4.ipfrag_high_thresh等の値を適切に制限する。 - UPnPの無効化: ハードウェアオフロードを有効にする際、ゲートウェイ越しの不要なポート開放を防ぐためにUPnPをオフにし、必要なポートのみ手動でNAT転送する。
—
まとめ:次世代ルーターに求めるべきスペックの「真実」
高性能なルーターを選ぶ際、単に「Wi-Fi 7対応」というラベルだけで判断してはいけません。以下の指標を必ず確認してください。
1. SoCのアーキテクチャ: ARMv8以降の64bitプロセッサであること(AES-NI等のアクセラレーション命令の有無)。
2. RAM容量: 1GB以上。パケットバッファやNATテーブル(セッション数)の確保に必須です。
3. HWNAT対応: メーカーの仕様書に「Hardware NAT」や「Packet Acceleration」の記載があるか。
4. オープンソースコミュニティの存在: OpenWrt等が対応していれば、カーネルレベルのチューニングが可能になり、製品寿命を遥かに超えるパフォーマンスを引き出せます。
ネットワークは「魔法」ではなく、物理層からアプリケーション層に至るまでの「緻密な計算の積み重ね」です。パケットがルーターのSoCを駆け抜ける一瞬の挙動に思いを馳せ、ぜひ皆さんのネットワーク環境を一段上のレベルへ引き上げてください。
コメント