Wi-Fiシームレスローミング

上司は会議室に電話をかけ、ラップトップを持って行くように言いました。 それは何もないようです-そこと職場の両方にオフィスのワイヤレスネットワークがあります。 到着-ダウンロードする大きなファイルのダウンロードが停止し、SSHセッションが終了し、何らかの理由で慎重に入力されたWebフォームがリセットされました。 おなじみですか?

今日は、Wi-Fiワイヤレスネットワークでのデバイスのシームレスなローミングについて説明します。





ローミングとは、空間内でデバイスを移動するときに、デバイスをワイヤレスネットワークに再接続するプロセスです。 無線信号の受信電力は、送信機までの距離とともに弱まり、その結果、有効な情報転送速度が低下し、無線接続の終わりまでチャネルエラーが増大します。 1つの名前(SSID)を持つ無線ネットワークに複数のアクセスポイントがある場合、モバイルサブスクライバーを最初のアクセスポイント内の信頼できる動作のゾーンから2番目のアクセスポイントからの信号がより良いエリアに移動します(より高い電力、より高いS / N比)そのような再接続が発生します。



再接続を行う決定は、 常にクライアントデバイス(Wi-Fiアダプタードライバー)によって行われます。 アクセスポイントは、このアクションが望ましいことをデバイスに「伝える」ことしかできません。 ドライバー設定で、意思決定の「攻撃性」のパラメーターを指定できる場合があります。 ただし、加入者の初期接続時に、中央制御システムは、加入者を(負荷の観点から)望ましいポイントおよび希望のチャネル/範囲に接続するように「強制」できます。



シームレスはそのようなローミングメカニズムと呼ばれ、ポイントからポイントへの切り替え時に発生する送信データの損失は最小限またはゼロに等しく、クライアントオペレーティングシステムのTCP / IPスタックは切り替えの事実に気づきさえしません。 このようなメカニズムは、ワイヤレスオーバーボイス、ビデオストリーミング、大量のデータ、および一般的にTCPプロトコルが伝送チャネルの一時的な損失を「ダイジェスト」できない場合など、遅延や損失の影響を受けやすいアプリケーションを運用する場合に重要ですデータ。



入門記事で説明した、 ジュニパーワイヤレス機器上に構築された中央制御のワイヤレスネットワークによって実装されるシームレスローミングのプロセスを実験し、見ていきます 。 これは、シームレスなローミングを確保するという問題を解決するために特別に設計されたエンタープライズクラスのシステムです。 次に、シームレス性を「破り」、これが何につながるのか、「ホームクラス」のデバイスに期待できる動作を示します。



ネットワークには、Intel WifiLink 5100abgカードが統合された通常のWindows7ラップトップ、1つのLANセグメントに2つのJuniper MX8ワイヤレスネットワークコントローラー、2つのWLA532アクセスポイントがあり、それぞれ独自のコントローラーに構成されます。 ping -f -s 1000またはping -s 100 -i 0.05ユーティリティを使用して、Linuxサーバーからラップトップへのトラフィックを作成します。 同じラップトップでスペクトル分析( Wi-Spy DBx / Channelyzer Pro)を実行し、802.11フレーム( OmniWiFi / OmniPeek)をキャプチャします。







802.1xメカニズムを使用してサブスクライバー(正しく、 WPA2 Enterprise )を承認するには、FreeRADIUSサーバーを上げて、PEAP / MSChapV2用に構成します。 同時に、トラフィックが「無線コントローラ-RADIUSサーバー」をfreeradius -X経由で起動したときのトラフィックの流れを監視し、アカウンティングメッセージの完全な許可と送信のイベントを追跡できます。 ローカルユーザーデータベースとして、パスワード付きのテキストファイル。

DOT1Xネットワークでの承認のコントローラー設定は同一でシンプルです。



サービスプロファイルSecure-DOT1Xの設定ssid-name DOT1X
サービスプロファイルSecure-DOT1X 11n short-guard-interval disableを設定します
サービスプロファイルを設定Secure-DOT1X rsn-ie cipher-ccmp enable
サービスプロファイルSecure-DOT1X rsn-ieを有効にする
 service-profile Secure-DOT1X attr vlan-name defaultを設定します
 RADIUSサーバーの設定debian64アドレス172.16.130.13タイムアウト5再送信3デッドタイム5暗号化キー0832494d1b1c11
 radius server debian64 mac-addr-formatコロンを設定します
サーバーグループdebian64-groupメンバーdebian64を設定します
アカウンティングdot1x ssid DOT1Xを設定** start-stop debian64-group
認証dot1x ssid DOT1Xを設定**パススルーdebian64-group
無線プロファイルのデフォルトのサービスプロファイルSecure-DOT1Xを設定する
最初のコントローラーの完全な構成
#設定は2013-6-28 22:18:27にnvgen'd

#画像8.0.2.2.0

#モデルMX-8

#最終変更は2013-6-28 19:56:52に発生

set ip route default 172.16.130.1 1

set ip dns enable

set ip dns server 8.8.8.8プライマリ

ログサーバーの設定172.16.130.100重大度エラー

システム名WLC-1を設定します

set system ip-address 172.16.130.30

システムの国コードRUを設定します

タイムゾーンMSK 4 0を設定

サービスプロファイルSecure-DOT1Xの設定ssid-name DOT1X

サービスプロファイルSecure-DOT1X 11n short-guard-interval disableを設定します

サービスプロファイルを設定Secure-DOT1X rsn-ie cipher-ccmp enable

サービスプロファイルSecure-DOT1X rsn-ieを有効にする

service-profile Secure-DOT1X attr vlan-name defaultを設定します

RADIUSサーバーの設定debian64アドレス172.16.130.13タイムアウト5再送信3デッドタイム5暗号化キー0832494d1b1c11

radius server debian64 mac-addr-formatコロンを設定します

サーバーグループdebian64-groupメンバーdebian64を設定します

enablepassパスワードの設定...

アカウンティングdot1x ssid DOT1Xを設定** start-stop debian64-group

認証dot1x ssid DOT1Xを設定**パススルーdebian64-group

ユーザーアントンパスワードを暗号化して設定します...

無線プロファイルのデフォルトを設定します11n channel-width-na 20MHz

無線プロファイルのデフォルトのサービスプロファイルSecure-DOT1Xを設定する

ap自動モードを有効にします

set ap 2 serial-id mg0211508096モデルWLA532-WW

ap 2 name WLA-2を設定します

ap 2点滅を有効にする

ap 2指紋を設定1a:fb:2e:d2:ab:e0:59:87:a7:3c:2a:20:ec:2a:9b:cc

AP 2タイムアウト900を設定

ap 2 remote-ap wan-outageモードを有効にします

ap 2 remote-ap wan-outage extended-timeout 10hを設定します

ap 2 radio 1 tx-power 5 mode enableを設定します

AP 2無線2モードを無効にします

ap 2 local-switching mode set vlan-profile defaultを設定します

AP 5ポート5モデルWLA532-WWを設定

ap 5 radio 1 tx-power 5 mode enableを設定します

AP 5無線2モードを無効にします

ip snmp server enableを設定します

ポートpoe 5を有効に設定

SNMPプロトコルv1を無効にする

SNMPプロトコルv2cを有効にする

VLAN 1ポート1を設定

VLAN 1ポート2を設定

VLAN 1ポート3を設定

VLAN 1ポート4を設定

VLAN 1ポート6を設定

VLAN 1ポート7を設定

VLAN 1ポート8を設定

インターフェイス1の設定ip 172.16.130.30 255.255.255.0

snmpコミュニティ名CommunityROアクセスを読み取り専用に設定します

モビリティドメインモードシードドメイン名LocalMobilityDomainを設定します

モビリティドメインメンバー172.16.130.31を設定します

2番目のコントローラーの完全な構成
#設定は2013-6-28 18:05:38にnvgen'd

#画像8.0.2.2.0

#モデルMX-8

#最終変更は2013-6-28 17:56:28に発生

set ip route default 172.16.130.1 1

システム名WLC-2を設定する

set system ip-address 172.16.130.31

システムのアイドルタイムアウトを0に設定

システムの国コードRUを設定します

サービスプロファイルSecure-DOT1Xの設定ssid-name DOT1X

サービスプロファイルSecure-DOT1X 11n short-guard-interval disableを設定します

サービスプロファイルを設定Secure-DOT1X rsn-ie cipher-ccmp enable

サービスプロファイルSecure-DOT1X rsn-ieを有効にする

service-profile Secure-DOT1X attr vlan-name defaultを設定します

RADIUSサーバーの設定debian64アドレス172.16.130.13タイムアウト5再送信3デッドタイム5暗号化キー0832494d1b1c11

radius server debian64 mac-addr-formatコロンを設定します

サーバーグループdebian64-groupメンバーdebian64を設定します

enablepassパスワードの設定...

アカウンティングdot1x ssid DOT1Xを設定** start-stop debian64-group

認証dot1x ssid DOT1Xを設定**パススルーdebian64-group

ユーザーアントンパスワードを暗号化して設定します...

無線プロファイルのデフォルト設定wmm-powersave enable

無線プロファイルのデフォルトを設定します11n channel-width-na 20MHz

無線プロファイルのデフォルトのサービスプロファイルSecure-DOT1Xを設定する

ap自動モードを無効にします

ap自動点滅を有効にする

set ap 2 serial-id mg0211508096モデルWLA532-WW

ap 2 name WLA-2を設定します

ap 2指紋を設定1a:fb:2e:d2:ab:e0:59:87:a7:3c:2a:20:ec:2a:9b:cc

AP 2タイムアウト900を設定

ap 2 remote-ap wan-outageモードを有効にします

ap 2 remote-ap wan-outage extended-timeout 10hを設定します

AP 2無線1チャネル11 TXパワー5モードイネーブルを設定して下さい

AP 2無線2モードを無効にします

ap 2 local-switching mode set vlan-profile defaultを設定します

負荷分散モードを無効にします

ポートpoe 5を有効に設定

ポートpoe 6を有効に設定

VLAN 1ポート1を設定

VLAN 1ポート2を設定

VLAN 1ポート3を設定

VLAN 1ポート4を設定

VLAN 1ポート5を設定

VLAN 1ポート7を設定

VLAN 1ポート8を設定

インターフェイス1 ip 172.16.130.31 255.255.255.0を設定して下さい

モビリティドメインモードメンバーseed-ip 172.16.130.30を設定します

セキュリティACLを設定しますportalacl permit udp 0.0.0.0 255.255.255.255 eq 68 0.0.0.0 255.255.255.255 eq 67

セキュリティACL名を設定しますportalacl deny 0.0.0.0 255.255.255.255 capture

セキュリティacl portalaclをコミットする



両方のアクセスポイント(b / g範囲のチャネル6および11、2.4 GHz)から受信する信号がほぼ同じになるようにラップトップを配置し、ネットワークに接続してpingを開始し、空中のエネルギーの分布を確認します。







ローミングパフォーマンスを確認するには、ラップトップが現在関連付けられているアクセスポイントから受信を開始する必要があります。信号は、同じSSIDと暗号化設定を持つ別のポイントからの信号よりも著しく悪いです。 ラップトップを持ち運ぶことはできますが、私にとってはあまり便利ではなかったので、アクセスポイントの1つ(長いイーサネットケーブル上)をコンクリートのコーナーの近くまたはコンクリートの周りに着用しました。 各パンの減衰は3〜4 dBでした。 その結果、ある時点で、クライアントは別のアクセスポイントに「ジャンプ」しました。







同時に、空中のパケットの分析はそのような写真を示します(OmniPeekがすべてのトラフィックを見るには、11番目のチャネルに厳密に結び付けられたポイントですべての実験を繰り返さなければなりませんでした。

ラップトップは、より優先されるアクセスポイント(プローブリクエスト、フレーム79086)を見つけようとし、23%(現在)と63%(候補)の信号レベルで両方から応答を受信します。

最後の有用なフレーム79103はap2を介してサーバーに送信され、その後、フレーム79122-79136はap1への迅速な切り替えを行い、認証、再関連付け、およびEAPOL交換を含みました。







再関連付け要求では、フレーム79126にPMKID(ペアワイズマスターキー)が含まれています。これは、大まかに言って、このワイヤレスセッションの識別子を定義します。 アクセスポイントが集合的に機能する場合(1つのコントローラーの制御下、またはコントローラーが相互に通信する場合)、「新しい」アクセスポイントはそのテーブルに従って受信した識別子をチェックし、見つかった場合は認証ステップをスキップし、すぐにデータ交換を許可します。







この場合、新しいアクセスポイントap1を通る最初の有用なフレーム79138は、最後のフレームから古いものを経て90ミリ秒後になりました。 RADIUSサーバーは、放置されたポイントから中間アカウンティングメッセージのみを受信しました。

 rad_recv:ホスト172.16.130.30ポート20000からのアカウンティング要求パケット、ID = 143、長さ= 264
詳細
Acct-Status-Type =中間更新

Acct-Multi-Session-Id = "SESS-30-d44e4b-437681-7f4d10"

Acct-Session-Id = "SESS-30-d44e4b-437681-7f4d10"

ユーザー名=「テスト」

Event-Timestamp = "2013年6月28日20:56:42 MSK"

Trapeze-VLAN-Name = "default"

Calling-Station-Id = "00-21-5D-C8-06-8A"

NAS-Port-Id = "AP5 / 1"

Called-Station-Id = "78-19-F7-7C-6A-40:DOT1X"

Trapeze-Attr-19 = 0x77696e646f777337

Trapeze-Attr-21 = 0x77696e646f7773

NASポート= 33

Framed-ip-address = 172.16.130.128

Acct-Session-Time = 921

Acct-Output-Octets = 246429867

Acct-Input-Octets = 238261281

Acct-Output-Packets = 232900

Acct-Input-Packets = 247341

NAS-Port-Type =ワイヤレス802.11

NAS-IP-Address = 172.16.130.30

NAS-識別子=「空中ブランコ」

Acct-Delay-Time = 0

#ファイル/ etc / freeradius / sites-enabled / defaultからセクションpreacctを実行

+-グループpreacctを入力{...}

++ [前処理]はokを返します

[acct_unique]ハッシュ 'NAS-Port = 33、Client-IP-Address = 172.16.130.30、NAS-IP-Address = 172.16.130.30、Acct-Session-Id = "SESS-30-d44e4b-437681-7f4d10"、ユーザー-Name = "test" '

[acct_unique] Acct-Unique-Session-ID = "c1a67d40e7b54bea"。

++ [acct_unique]はokを返します

[接尾辞] User-Name = 'test'に '@'なし、レルムNULLを検索

[接尾辞]そのような領域「NULL」はありません

++ [接尾辞]はnoopを返します

++ [ファイル]はnoopを返します

#ファイル/ etc / freeradius /サイト対応/デフォルトからセクションアカウンティングを実行する

+-グループアカウンティングの入力{...}

[詳細]展開:/ var / log / freeradius / radacct /%{Client-IP-Address} / detail-%Y%m%d-> /var/log/freeradius/radacct/172.16.130.30/detail-20130628

[詳細] / var / log / freeradius / radacct /%{Client-IP-Address} / detail-%Y%m%dは/var/log/freeradius/radacct/172.16.130.30/detail-20130628に展開されます

[詳細] expand:%t-> 2013年6月28日20:56:16金

++ [詳細]はOKを返します

++ [unix]はnoopを返します

[radutmp] expand:/ var / log / freeradius / radutmp-> / var / log / freeradius / radutmp

[radutmp] expand:%{ユーザー名}->テスト

++ [radutmp]はokを返します

++ [exec]はnoopを返します

[attr_filter.accounting_response] expand:%{ユーザー名}->テスト

attr_filter:行12の一致したエントリDEFAULT

++ [attr_filter.accounting_response]は更新を返します

id 143のAccounting-Responseを172.16.130.30ポート20000に送信

完了したリクエスト269。



これはすべて、両方のアクセスポイント(またはアクセスポイントを提供するコントローラー)が接続されたアクティブなクライアントデバイスの共通データベースを持っているために非常に高速に機能しました。 このため、コントローラーは「モビリティグループ」に結合されます。 名前が選択され、最初の「メインの役割の候補」が設定されます。



WLA-1:
モビリティドメインモードシードドメイン名LocalMobilityDomainを設定します
モビリティドメインメンバー172.16.130.31を設定します


WLA-2:
モビリティドメインモードメンバーseed-ip 172.16.130.30を設定します


機能しているモビリティグループの例:

 WLC-1#モビリティドメインを表示 
モビリティドメイン名:LocalMobilityDomain
フラグ:u = up [2]、d / e = down / config error [0]、c = cluster enabled [0]、
        p =プライマリシード、s =セカンダリシード(S =クラスタープリエンプトモードが有効)、
        a =モビリティドメインのアクティブシード、A =クラスターのアクティブシード(異なる場合)、
        m =メンバー、y =同期中、w =同期待ち、n =同期完了、
        f =同期に失敗しました 
メンバー:* = NATの背後で切り替え
メンバーフラグモデルバージョンNoAPs APCap
 ---------------- ----- -------- ---------- ----- -----
 172.16.130.30 upa-- MX-8 8.0.2.2 1 12
 172.16.130.31 um --- MX-8 8.0.2.2 1 12




アクセスポイント間で加入者をローミングする場合、コントローラーは、加入者の動きの履歴など、加入者のコンテキストを交換します。



ローミング履歴:
   AP /無線アソシエーション時間の切り替え
   --------------- ----------- ----------------- ------- ------------
  * 172.16.130.30 5/1 06/28/13 22:12:22 00:06:34            
   172.16.130.31 2/1 06/28/13 21:57:28 00:14:54            
   172.16.130.30 5/1 06/28/13 22:08:56                     
完全な詳細
WLC-1#shセッションネットワーク詳細



合計1セッション



名前:テスト

セッションID:42

グローバルID:SESS-41-d44e4b-442936-c9f222

ログインタイプ:dot1x

SSID:DOT1X

IP:172.16.130.128

MAC:00:21:5d:c8:06:8a

AP /無線:5/1(ポート5)

状態:アクティブ

セッションタグ:1

ホスト名:カートマン

VLAN名:デフォルト(AAA)

デバイスタイプ:windows7(AAA)

デバイスグループ:Windows(AAA)

稼働時間:00:09:59



ローミング履歴:

AP /無線アソシエーション時間の切り替え

----* 172.16.130.30 5/1 06/28/13 22:12:22 00:06:34

172.16.130.31 2/1 06/28/13 21:57:28 00:14:54

172.16.130.30 5/1 06/28/13 22:08:56



セッション開始:6月28日(金)22:08:57 2013 MSK

最終認証時間:金6月28日22:08:57 2013 MSK

最終アクティビティ:金6月28 22:18:56 2013 MSK(<15秒前)

セッションタイムアウト:0

アイドル有効期間:179

EAPメソッド:PASSTHRU、サーバー172.16.130.13を使用

プロトコル:802.11 WMM

セッションCAC:無効

統計年齢:0秒

無線タイプ:802.11g

最終パケットレート:54.0 Mb / s

最終パケットRSSI:-52 dBm

最終パケットSNR:43

省電力:無効

音声キュー:IDLE



パケットバイト

--Rxユニキャスト44824 21023372

Rxマルチキャスト249 31159

Rx暗号化エラー0 0

Txユニキャスト22615 7289459

RxピークA-MSDU 0 0

RxピークA-MPDU 0 0

TxピークA-MSDU 0 0

TxピークA-MPDU 0 0



キューTxパケットTxドロップ再送信Rxドロップ

-----背景17015 0 1641 0

ベストエフォート5745 0 495 0

ビデオ0 0 0 0

音声11 0 1 0



11n機能:

最大受信A-MSDUサイズ:0K

最大Rx A-MPDUサイズ:0K

最大チャンネル幅:20MHz

SM省電力:なし

TxBeamformer:すべて

TxBeamformee:NonComp-Unknown、Comp-Unknown







ここで、アクセスポイントが1つのネットワークを提供するが、お互いを知らない典型的なオフィスケースをシミュレートします。 Breaking-not building:モビリティグループのいずれかのコントローラメンバーシップを削除します(モビリティドメインモードメンバーをクリアします)。 同様に、ローミングイベントがトリガーされると、より深刻な結果につながります。







クライアントは再アソシエーションメッセージで正しいPMKIDを送信しますが(27818)、新しいアクセスポイントはアソシエーションを確認し(27820)、すぐに802.1(EAP、27823)の完全な再認証を要求します。 これは、「古い」アクセスポイント(27887)への関連付け解除メッセージの送信を含むイベントの長いチェーンにつながります。
RADIUSサーバーでの完全な承認サイクル
rad_recv:ホスト172.16.130.31ポート20000からのAccess-Requestパケット、id = 132、長さ= 139

NAS-Port-Id = "AP2 / 1"

Calling-Station-Id = "00-21-5D-C8-06-8A"

Called-Station-Id = "78-19-F7-75-5F-80:DOT1X"

Service-Type = Framed-User

EAP-Message = 0x020100090174657374

ユーザー名=「テスト」

NASポート= 19

NAS-Port-Type =ワイヤレス802.11

NAS-IP-Address = 172.16.130.31

NAS-識別子=「空中ブランコ」

Message-Authenticator = 0xaf02c98034a727ae8cc5063bcda80c39

#ファイル/ etc / freeradius / sitesenabled / defaultからセクション認証を実行します

+-グループに入ると、{...}

++ [前処理]はokを返します

++ [chap]はnoopを返します

++ [mschap]はnoopを返します

++ [ダイジェスト]はnoopを返します

[接尾辞] User-Name = 'test'に '@'なし、レルムNULLを検索

[接尾辞]そのような領域「NULL」はありません

++ [接尾辞]はnoopを返します

[eap] EAPパケットタイプの応答ID 1の長さ9

[eap]進行中のEAP会話であると仮定して、EAP開始なし

++ [eap]が更新されて返されます

[files] users:206行目の一致エントリテスト

++ [ファイル]はokを返します

++ [有効期限]はnoopを返します

++ [logintime]はnoopを返します

[pap]警告:Auth-Typeは既に設定されています。 papに設定されていません

++ [pap]はnoopを返します

Auth-Type = EAPが見つかりました

#ファイル/ etc / freeradius / sites-enabled / defaultから実行グループ

+-グループを入力して認証{...}

[eap] EAP ID

[eap]処理タイプmd5

rlm_eap_md5:チャレンジの発行

++ [eap]が処理された

id 2000のAccess-Challengeを172.16.130.31ポート20000に送信

など3つのログ画面
その結果、データ転送の効果的な中断は332ミリ秒でした。 さらに、この実験では、RADIUSサーバーはローカルデータベースを使用しました。 低速のSQLサーバーにアクセスせず、Active Directoryで許可を求めず、X.509証明書を送信、検証、比較しませんでした。



この記事では、WPA2 Fast BSS Transition(FT)802.11r、Neighbor Reportsなど、クライアントをローミングするためのさまざまな利用可能な標準またはベンダー依存のメカニズムを考慮しませんでした。 興味のある方はこのシリーズの記事をご覧ください



要約すると:




All Articles