In this post we will try to understand how WGB scan the parent channels or try to roam from one parent to other. It is really important to implement roaming commands on WGB to keep the session alive.
- WGB is mobile device
- Normally Companies uses WGB in Production and it’s mounted on forklift or on a cart with their device. Roaming is very critical part of it and it must be smooth otherwise it disconnects frequently and try to reconnect to other AP.
- As roaming needs a change from the current AP to the next, there is a resultant disconnection or time without service. This disconnection can be small.
- Roaming is needed WGB find an AP which has better signal then the current one, and it can continue to access the network infrastructure properly.
- Too many roams can cause disconnections (it’s not acceptable in especially in production or may be in hospital), which affects access.
- It is really important for a WGB, to have a good roaming algorithm with enough configuration capabilities to adapt to different RF environments and data needs.
***By default it acts a normal client and it scans another parent after continuous 8 beacon loss.
But in case of WGB we have few other methods on top of this default setting.
Let’s see these in details:
This commands mark the unit as Mobile to speed up roaming
WGB# conf t WGB(config-if)#mobile station
When we enable this WGB scans for a new parent when the RSSI to its AP gets too poor or when it has too many retransmits. This makes that the WGB will roam. When the mobile station setting is disabled (the default setting) the workgroup bridge does not search for a new AP until it loses its current association.
WGB(config-if)#mobile station scan 1 6 11
mobile station scan <set of channels> command is used to invoke scanning to specified channels.
By default there is no limitation of channels that can be configured. When we run this command, the WGB only scans these channels.
In our case, we configured our WGB to only scan these channels, instead of scanning all channels.
***Mobile station only shows up when using the WGB role on the radio.
*** Make sure our WGB scan list matches our infrastructure channel list. If not, the WGB will not find our available APs.
WGB(config-if)#mobile station period 4 threshold 70
WGB can have a pro-active signal scan for the current parent and start a new roaming process when the signal falls below an expected level.
This has two parameters:
- A timer, which wakes up the check process every X seconds
- RSSI level, which is used to start a roaming process if the current signal is bellow it.
Minimum Data Rate:
WGB(config-if)#mobile station minimum-rate 18.0
This command states that WGB must trigger a new roaming event, if the current data rate to parent is bellow a given value.
*** This is too aggressive, and normally, the only solution was to configure a single data rate both in WGB and on parent APs.
By using this command, the new roaming process is only starts when the current rate is lower than the 18Mb/s. This reduces unnecessary roaming.
WGB(config-if)#mobile station ignore neighbor-list
Normally when WGB scan the channels, it prepares the list of available APs. This is a CCX mechanism by which the WGB can transmit to its AP the details of the others APs the WGB heard. But if we configured WGB for only specific channels scanning then it does not need to process the CCX reports to update its known channel list.
*** We use the mobile station ignore neighbor-list command to disable processing of CCX neighbor list reports
WGB(config-if)#packet retries 128
By default, the WGB re-transmits a frame 64 times. (1- 128 range can be configured)
If it is not acknowledged by a parent AP then it starts roaming process.
If after 128 tries WGB don’t find any ACK from parent AP then WGB starts a roaming. But when parent is present, the WGB does not start new roaming and uses other triggers, such as beacon loss and signal.
So the complete command is:
WGB(config-if)#packet retries 128 drop-packet
*** This command must be configured on both side(on WGB as well as on Parent AP under radio interface).
WGB(config-if)#mobile ? station Mark the unit as mobile to speed up roaming
WGB(config-if)#mobile station ? ignore ignore CCX reports minimum-rate Minimum rate below which the AP is rejected period Minimum time between scans when the connection deteriorates scan Scan the following channels only <cr>
WGB(config)#int d0 WGB(config-if)#packet retries 128 drop-packet
RootAP#debug dot11 dot11radio 0 trace print uplink RootAP#debug dot11 dot11radio 0 trace print rates
WGB(config-if)# *Mar 1 19:27:56.501: %LINK-5-CHANGED: Interface Dot11Radio0, changed state to reset *Mar 1 19:27:56.502: FAD9916A-0 Uplink: Stop *Mar 1 19:27:56.502: FAD991BA-0 Interface down *Mar 1 19:27:56.521: %LINK-3-UPDOWN: Interface Dot11Radio0, changed state to up *Mar 1 19:27:56.522: FAD9E7DA-0 Interface up *Mar 1 19:27:56.523: FAD9E82B-0 Uplink: Wait for driver to stop *Mar 1 19:27:56.523: FAD9E8A4-0 Uplink: Enabling active scan *Mar 1 19:27:56.523: FAD9E8B7-0 Uplink: Not busy, scan all channels *Mar 1 19:27:56.523: FAD9E8C7-0 Uplink: Scanning *Mar 1 19:27:56.584: FADAE016-0 Uplink: Rcvd response from 003a.9a3e.a380 channel 11 10283 *Mar 1 19:27:56.589: FADAF3F1-0 Uplink: dot11_uplink_scan_done: rsnie_accept returns 0x0 key_mgmt 0xFAC01 encrypt_type 0x200 *Mar 1 19:27:56.589: FADAF42C-0 Uplink: ssid RSCCIEW auth leap *Mar 1 19:27:56.589: FADAF43F-0 Uplink: try 003a.9a3e.a380, enc 200 key 3, priv 1, eap 11 *Mar 1 19:27:56.590: FADAF45E-0 Uplink: Authenticating *Mar 1 19:27:56.599: FADB19F9-0 Uplink: Associating *Mar 1 19:27:56.608: FADB2EBC-0 3EA380 - Set rate: 54.0 54 Mbps ( 6C), Rssi 24 dBm *Mar 1 19:27:56.609: FADB3018-0 Uplink: EAP authenticating *Mar 1 19:27:56.668: %DOT11-4-UPLINK_ESTABLISHED: Interface Dot11Radio0, Associated To AP RootAP 003a.9a3e.a380 [LEAP WPAv2] *Mar 1 19:27:56.670: FADC277E-0 Uplink: Done
These are the other timers on WGB:
WGB(config)#workgroup-bridge timeouts ? assoc-response Association Response time-out value auth-response Authentication Response time-out value client-add client-add time-out value eap-timeout EAP Timeout value iapp-refresh IAPP Refresh time-out value