【実務・中級編】 メッシュWi-Fiのローミングプロトコル:IEEE 802.11v(BSS遷移管理)の仕様 – 家庭用ネットワーク・IoT・モバイル通信実践ガイド

メッシュWi-Fiの裏側で何が起きているのか? IEEE 802.11v(BSS遷移管理)の仕様と実務的デバッグ手法

こんにちは。夜な夜な自宅のルーターのログを眺め、パケットキャプチャの波形に酒を合わせるのが趣味のシニアネットワークエンジニアです。

皆さんは、自宅でスマートフォンやノートPC片手にリビングから寝室へ移動した際、Wi-Fiの電波表示は立っているのに、なぜか通信が数秒間途切れたり、極端にスループットが落ちたりした経験はないでしょうか。「メッシュWi-Fiを導入したのに、手前のノードにしがみついたまま切り替わらない!」という、あの泥臭くてイライラする現象です。

実は、クライアント端末がどのアクセスポイント(AP)に接続し続けるかを決定する主導権は、これまで長らくクライアント側(OSのアルゴリズム)にありました。「まだこのAPの電波が微かに届いているから、切り替える必要はないや」と端末が判断してしまうと、メッシュ本来のパフォーマンスは台無しになります。

この「クライアントの気まぐれ」に終止符を打ち、ネットワーク側から「こっちのノードの方が空いていて電波も強いから、引っ越しなさい」と優しく、かつ強制的に誘導する仕組みこそが、今回解説する IEEE 802.11v(BSS遷移管理:BSS Transition Management) です。

今回は、インフラ運用者や組み込みエンジニアの視点から、802.11vのパケットレベルの挙動、パラメータの意味、そして現場で役立つデバッグ手法までを徹底的に紐解いていきます。

—

1. IEEE 802.11vとは何か?従来のローミングとの決定的な違い

従来のローミング(IEEE 802.11rによる高速BSS遷移や、単純な電波強度低下による再スキャン)は、基本的に端末(STA: Station)が主体でした。端末が自ら現在接続しているAPの電波(RSSI)の減衰を検知し、プローブリクエストを飛ばして周囲のAPを探し、認証・アソシエーションをやり直すというアプローチです。これには以下の課題がありました。

  • スティッキー端末問題(Sticky Client Problem): 電波が弱くなっても、リンクが切れる限界ギリギリまで古いAPにしがみつき続ける。
  • バンド・ノードの最適化不足: 5GHz帯や6GHz帯が空いているのに、端末が勝手に混雑した2.4GHz帯や遠いノードを選び続ける。

BSS遷移管理(BSS Transition Management)の核心

IEEE 802.11vで規定されたBSS Transition Management(BSSTM)は、この力学を反転させます。AP側(メッシュのコントローラーやノード)が、自ネットワーク内のトポロジーや負荷状況(チャンネル使用率、各クライアントの通信品質など)を俯瞰し、「クライアントに対して最適な隣接AP(Candidate List)を提案する」機能です。

通信フローの概念は以下の通りです。

[クライアント (STA)]                          [現在のAP (Node A)]        [推奨される隣接AP (Node B)]
       │                                            │                                 │
       │ ─── 通常の通信(データやり取り) ───────> │                                 │
       │                                            │                                 │
       │ <── 802.11v BSS Transition Request ─────── │ (負荷分散や電波状況を検知)    │
       │     (候補リスト: Node BのBSSID等を提示)    │                                 │
       │                                            │                                 │
       │ ─── BSS Transition Response (Accept) ────> │                                 │
       │     (移行を受け入れる旨を返答)             │                                 │
       │                                            │                                 │
       │ ─── (既存リンク切断・Roaming) ─────────────────────────────────────────────> │
       │                                                                              │
       │ <─── 新しいAPで認証・Association ────────────────────────────────────────────> │

ネットワーク側が「お膳立て」をして、クライアントに「こちらのAPへ移りませんか?」と打診(Request)し、クライアントが同意(Response)してスムーズに引っ越す。これが802.11vの美しいシーケンスです。

—

2. 通信フレームと主要パラメータの解剖

実務でパケットキャプチャ(Wiresharkなど)を開いた際、802.11vのフレームを正しく読み解けるかはエンジニアの腕の見せ所です。BSSTM Requestフレームの中身を覗いてみましょう。

BSS Transition Management Requestの主要フィールド

このフレームには、単に「あっちに行け」という指示だけでなく、クライアントが迅速に判断・移行するためのメタデータが詰め込まれています。

  • Dialog Token: リクエストとレスポンスを紐付けるための識別子(SNMPのトランザクションIDのようなもの)。
  • Request Mode: 移行が強制的なものか、単なる提案(推奨)なのかを指定するビットフラグ。
  • Bit 0 (Candidate List Included): 候補リストが含まれているか。
  • Bit 1 (Abridged): 候補リストが最適化され短縮されているか。
  • Bit 2 (Disassociation Imminent): まもなく強制切断するかどうか(重要!これが立つと拒否しても強制的に落とされる場合があります)。
  • Bit 3 (Termination Indeed): AP自体がシャットダウンやローミングを予定しているか。
  • Disassociation Timer: Disassociation Imminentフラグが有効な場合、何ミリ秒後に強制切断を実行するかの猶予時間。
  • Validity Interval: 提示された候補リストや移行指示が有効な時間(Beacon単位)。
  • Neighbor Report(候補リスト): 移行先のAPに関する詳細情報。
  • BSSID(移行先ノードのMACアドレス)
  • BSS Information(対応している無線規格やセキュリティ能力)
  • Operating Class / Channel Number(どのチャンネルで稼働しているか)
  • PHY Type

—

3. 実務での設定・運用:ホスト・コントローラー設定の例

オープンソースのWi-Fiルーターファームウェア(OpenWrtなど)や、Linuxベースのアクセスポイント管理ソフト(hostapdなど)で802.11vを有効にする際の設定ファイル(hostapd.conf)の例を見てみましょう。

現場では、単に機能をONにするだけでなく、隣接ノード間でのローミング閾値を適切にチューニングする必要があります。

# /etc/hostapd/hostapd.conf
# 無線インターフェースの設定
interface=wlan0
ssid=MyHomeMesh_Secure
hw_mode=a
channel=36

# IEEE 802.11r (Fast BSS Transition) の有効化 (802.11vと併用することで爆速ローミングを実現)
ft_over_ds=1
mobility_domain=10a2
r0_key_holder=0123456789abcdef0123456789abcdef
r1_key_holder=0123456789abcdef

# IEEE 802.11v (BSS Transition Management) の有効化
bss_transition=1

# 負荷分散(BSS Load Balancing)の有効化
# チャンネルの混雑状況を周辺APと共有し、過負荷なAPからクライアントを追い出す
station_max_idle=30

# デバッグ用ログレベルの設定(トラブルシューティング時は4以上に設定)
logger_syslog=127
logger_syslog_level=2

チューニングの現場ノウハウ

インフラ構築の現場でよくある失敗が、「802.11vを有効にした途端、古いIoT家電やスマートスピーカーが頻繁に切断される」というトラブルです。古い世代のWi-Fiチップを積んだデバイスは、802.11vのRequestを受信しても正しく解釈できなかったり、無視し続けたり、あるいは対応していないのに誤作動を起こしたりします。

そのため、メッシュルーター側のコントローラー設定では、以下のような段階的なポリシー(バンドステアやデバイスごとのホワイトリスト運用)を組み合わせるのが実務の定石です。

1. デュアル/トライバンド共通SSID: 最新のスマホやPCには802.11k/v/rをフル活用させる。
2. レガシーデバイス対策: 802.11vの応答がない古いデバイスに対しては、強制切断(Disassociation Imminent)のタイマーを厳しくしすぎない、または特定のMACアドレスに対してステアリングを無効化する。

—

4. デバッグ手順:パケットキャプチャとCLIによる検証

「なぜかこの端末だけローミングしない」「802.11vの指示を無視している気がする」――そんな現場での泥臭いトラブルシューティングの手順を解説します。

Step 1: 無線パケットのモニターモードキャプチャ

有線LANとは異なり、Wi-Fiのローミング挙動を正確に追うには、無線空間上の電波をキャプチャする必要があります。チャンネルを固定し、Wi-FiアダプターをモニターモードにしてWiresharkでキャプチャします。

# Linux環境でのモニターモード有効化手順
sudo ip link set wlan1 down
sudo iw wlan1 set monitor control
sudo ip link set wlan1 up

# 特定のチャンネル(例: チャンネル36)に固定してdump取得
sudo iw dev wlan1 set channel 36
sudo tcpdump -i wlan1 -w mesh_roaming_debug.pcap

Wiresharkで取得したpcapファイルを開き、フィルターに wlan.fc.type_subtype == 0x0b(Management Frames – Action)または dot11.elt.id == 255(Vendor Specific / BSS Transition Management)を指定してフィルタリングします。

Step 2: フレームの中身を確認するチェックポイント

Wiresharkのパケット詳細画面で、以下の点を確認します。

  • APからクライアントへ向けて BSS Transition Management Request が送信されているか?
  • その中の Candidate List に、実際に周囲にある電波の強いノードのBSSIDが含まれているか?
  • クライアント側から BSS Transition Management Response が返ってきているか?
  • 返ってきている場合、ステータスコードが Accept (0) か、あるいは Reject(理由コード付き)か?

もしクライアントが Reject を返している場合、その端末のOS側(Android, iOS, Windows, Linuxなど)のWi-Fiドライバの実装や電力管理設定(省電力モードによるスキャン頻度の低下など)がボトルネックになっている可能性が高いと切り分けることができます。

—

5. まとめ

今回は、メッシュWi-Fiの頭脳とも言える IEEE 802.11v(BSS遷移管理) の仕様と、実務で役立つ設定・デバッグ手法について解説しました。

  • クライアント任せだったローミングを、AP側からコントロール可能にする強力な仕組みであること。
  • Request/Responseのシーケンスと、候補リスト(Neighbor Report)が通信の鍵を握っていること。
  • 実運用では、最新デバイスへの最適化と、レガシーなIoT機器への配慮(フォールバック)のバランスがエンジニアの腕の見せ所であること。

教科書通りの仕様を理解しているだけでは、現場特有の「なぜか繋がらない」という泥臭いトラブルには太刀打ちできません。パケットの波形を読み解き、プロトコルの裏側で何が行われているのかを想像する力を養うことで、あなたの構築するネットワークはより強靭で快適なものになります。

それでは、次回のネットワーク談義でお会いしましょう。良きパケットライフを!

コメント

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