【テクニカル・上級編】 802.11k/v/rによる高速ローミングの技術仕様 – 家庭用ネットワーク・IoT・モバイル通信実践ガイド

境界なき通信の最適化:802.11k/v/rが実現する「真のシームレス」への深淵

インフラエンジニア諸君、今日もお疲れ様。現場でWi-Fiのハンドオーバー問題に頭を抱えたことはないか?「AP間を移動するたびにZoomが数秒フリーズする」「バックグラウンドのTLSセッションが切断される」。これらの問題は、単なる電波強度だけの話ではない。それはL2/L3層における「ハンドシェイクの重み」が引き起こす、避けられぬ摩擦だ。

今日は、Wi-Fi 6E/7時代の必須教養である「高速ローミング(802.11k/v/r)」の深淵に潜り込み、パケットレベルで何が起きているのかを紐解いていく。

—

高速ローミングの三位一体:k, v, rの役割を再定義する

多くの現場でこれらは「なんとなく設定する項目」として扱われがちだが、プロトコルスタックの観点では明確な役割分担がある。

  • 802.11k (Radio Resource Measurement): クライアントに「近隣APの地図」を渡す。スキャン時間を劇的に短縮し、パッシブスキャンによるバッテリ消費とパケットロスを抑える。
  • 802.11v (BSS Transition Management): AP側からクライアントに「あっちのAPの方が空いてるから移動しろ」と促す。ロードバランシングの要だ。
  • 802.11r (Fast BSS Transition): これが本丸。本来数往復かかるEAPや4-Way Handshakeを事前計算し、L2レベルで認証を完了させる。

なぜ「r」が重要なのか:TLSハンドシェイクの観点から

もし802.11rがない場合、APを切り替えるたびに802.1X認証が走り、RADIUSサーバとの往復が発生する。その間にTCPタイムアウトが発生すれば、TLSハンドシェイクは中断され、アプリケーション層での再接続が要求される。モバイル環境において、このミリ秒単位の遅延はUXを破壊する。

—

パケットレベルで見る「Fast Transition」の挙動

802.11rが有効な場合、クライアントはReassociation Requestフレーム内にFTIE (Fast Transition Information Element)を挿入する。これにより、ターゲットAPは認証サーバを介さず、キャッシュされたPMK (Pairwise Master Key) を用いてセッションを継続する。

ここで注意すべきは、FT (Fast Transition) が有効な環境下でのWPA3-Enterpriseの設計だ。GCMP-256のような強力な暗号化アルゴリズムを選択する場合、フレームのオーバーヘッドと復号処理のオーバーヘッドが、低スペックなIoTデバイスでボトルネックになるケースがある。

Linuxカーネルにおけるチューニングのヒント

hostapdを運用する諸君は、以下の設定が802.11rの挙動を左右することを忘れてはならない。

# /etc/hostapd/hostapd.conf の抜粋
# FT(Fast Transition)の有効化
ft_protocol=1
# 認証のキー生成アルゴリズム(SHA256固定が推奨)
ft_key_sha256=1
# 負荷分散(v)のサポート
bss_transition=1
# 近隣APレポート(k)のサポート
rrm_neighbor_report=1

—

現場で突き当たる「泥臭い」壁と回避策

理論上完璧な802.11k/v/rだが、現場ではレガシーデバイスとの衝突が絶えない。特に、802.11vのBSS Transition Management Requestを解釈できず、接続がハングアップする古いNICが存在する。

1. 接続拒否のデバッグ

もしクライアントが接続を拒否されるなら、wpa_supplicantで以下のログを追え。

# リアルタイムでハンドシェイクの失敗をキャプチャする
wpa_cli -i wlan0 log_level debug
# 失敗時にどのIE(Information Element)が弾かれているかを確認

2. TCPバッファとスループット

ローミング時の瞬断をアプリケーション層で吸収させるには、カーネルのTCPウィンドウサイズ調整が有効だ。特に不安定な移動体通信環境では、tcp_slow_start_after_idleをオフにして、再開時のスループットを維持する工夫も必要になる。

# sysctl.conf での推奨設定(状況に応じて調整せよ)
# ローミングによる一時的な切断後の回復を早める
net.ipv4.tcp_slow_start_after_idle = 0
# バッファを大きく取り、ハンドオーバーの遅延に耐える
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

—

最後に:ネットワークは「生き物」である

Wi-Fi 7 (802.11be) で導入されるMulti-Link Operation (MLO)は、これまで以上にローミングの複雑性を増す。複数の周波数帯を同時に使い、パケットを分散させるこの技術は、もはや「ハンドオーバー」という概念すら過去のものにしようとしている。

だが、どれだけ規格が進化したとしても、最終的に安定したネットワークを構築するのは、エンジニアの「現場の物理環境に対する想像力」だ。電波は遮蔽物に阻まれ、反射し、干渉する。その不確実性を、プロトコルの深い理解でいかに飼い慣らすか。

この記事が、あなたの次のアーキテクチャ設計における小さなヒントになれば幸いだ。何か深掘りしたい技術スタックがあれば、いつでもまた聞かせてくれ。現場からは以上だ。

コメント

タイトルとURLをコピーしました