Independent Consulting
Consulting
Training
Publications
Links

 

 

 

Beware of Wireless Impairments!

 

By Jim Geier

 

When creating mobile wireless applications, many software developers don't spend enough time thinking about the pesky impairments that wireless networks offer. The prevailing thought is that the Linux or Windows operating system will take care of any issues with the network. Wrong! Limited throughput, spotty coverage, and radio interference are a few of the problems that will wreak havoc unless you include special countermeasures in your design.

 

Wireless LAN protocols, for example, induce much more overhead into the transfer of packets than wired networks. In contrast to Ethernet, an IEEE 802.11 ("Wi-Fi") wireless LAN client device or access point receiving a packet must always send an acknowledgment to the sending party if no errors are found in the frame. This is necessary because the sender has no way of discerning if the packet made it through the channel without errors.

 

In addition, hidden nodes can cause substantial collisions in wireless networks. This occurs when Station A and Station B are sending data to a common destination, and neither Station A nor Station B can hear each other to facilitate taking turns using the air medium. The resulting collisions require both stations to retransmit their data. This problem feeds upon itself with a greater number of active stations. The additional retransmissions that result from the increasing numbers of collisions cause more retransmissions, and so on.

 

This additional overhead of acknowledgments and retransmissions significantly reduces the available throughput, which is the transfer rate that you can count on when moving real information. An IEEE 802.11b wireless LAN, for example, may deliver 11Mbps connections, but this is the rate that a station will transmit an individual frame of data. After factoring in the overhead, the resulting total throughput is at best 5MBps. In fact, the total throughput decreases even more as the number of active stations increases. So, don't count on having applications send data at 11Mbps continuously through the network!

 

As a developer, you should conserve bandwidth when sending data over a wireless network. Start by streamlining the transfer of information. For example, combine smaller data packets into a single larger packet to avoid the extra overhead that each packet requires. This could backfire on you, though, if significant radio interference is present. Larger packets take longer to transmit, which makes them vulnerable to errors that may result from interference. It is possible, however, to utilize mechanisms that adapt to the presence of interference.

 

Take advantage of compression algorithms at the transport layer to help minimize the number of bits sent over the wireless link. Some implementations of wireless middleware use header compression, where mechanisms replace traditional packet headers with a much shorter bit sequence before transmission. This is suitable for most scenarios. However, it often reduces interoperability because of fewer adherences to standards.

Another big issue with wireless networks is that you can't see where radio waves go. 

 

Some companies do a great job of identifying the optimum location of access points through effective site surveys. The goal is to provide complete coverage in all areas where users may roam. Other companies don't do very well at this. In numerous situations, coverage of wireless LANs and WANs is not continuous. Transmission may be unexpectedly cut at midstream at any time a user moves to an area where a coverage hole exists.

 

This always reminds me of one of my first consulting gigs. A company in sunny Florida was having strange errors occurring in a database that was part of an application hosted on an IBM AS/400. Warehouse clerks were using hand-held data collectors equipped with a bar code scanner, 5250 terminal emulation, and a wireless LAN interface to perform inventory management functions in a warehouse. The database errors were intermittent (the type of problem that's not fun to solve), but the troubles were obviously stemming from the inventory application.

 

After spending several hours troubleshooting the problem, I found that users would sporadically lose wireless connectivity. In some cases (specifically when the errors were occurring), the connection would go down when the user was in the middle of an inventory function having multiple transactions with the database. When a connection was lost, the user would reposition the data collector to gain adequate signal strength again. The user would also have to log back into the system, resulting in a partial completion of a particular function with records undone in the database.

 

Your mobile software must incorporate an intelligent restart as a recovery mechanism that detects the premature end of a series of transactions. After re-establishing the connection, the application must resume from the break point. Also, avoid posting a transaction to the database unless the entire series is complete.

 

Radio devices (such as cordless phones, microwave ovens, and other nearby wireless networks) cause interference that can also negatively impact mobile wireless applications. The interfering signal will either cause wireless clients to hold off from transmitting data or induce errors in data frames that prompt retransmissions. In either case, indefinite data transfer delays will persist. As with spotty coverage, ensure that your application software can drop connectivity from time-to-time and restart where it left off when the connection is back.