Mobility

Suppose you have a wireless data connection. How does this affect the network and transport layers?

Ideally, our protocol stack architecture says that the upper layers aren't affected by the lower layers.

Transport Layer

It would be nice to think that the transport layer isn't impacted by the physical medium in use. The lower layers should be expected to shield the upper layers from such details.

TCP

However in TCP/IP congestion control is done at the transport layer where it is easiest to throttle back applications and hence load. A sliding window is used to limit the amount of data TCP offers to the network. The size of the window is increased (slow start algorithm) until a TCP segment times out. When that happens, most TCP implementations assume that the cause of the timeout is a lost packet due to congestion in the network. This makes sense on a wired network.

But with a wireless medium the loss of a packet due to interference or noise is much more common. The assumption no longer holds true. When a packet is destroyed by noise and times out in TCP, the TCP layer reacts by slowing down the rate at which it offers segments to the network. There is no reason to do this and performance suffers.

Another problem is that TCP connections span many hops and these hops may use different media. This makes it impossible for the sending TCP layer to determine the cause of the lost segment, so it can't react in the right way (slow down for congestion, or immediately resend for real loss).

One solution to this problem is to split a connection into multiple TCP connections, depending on the media traversed. Now each TCP connection is on homogeneous media and the TCP parameters and algorithms can be tuned to that media type. The disadvantage is that you've broken TCP semantics, since you no longer get end-to-end acknowledgments. The sender just knows when an ACK comes that the segment has reached the end of the first connection, not the receiver itself.

TCP and cellular handoff

What does the 300ms handoff between cells mean for TCP connections?

UDP

It is tempting to think that since UDP represents an unreliable service there will be no problems with UDP transport layers on top of an unreliable, lossy medium like wireless. However, the logic that usually goes into chosing UDP for an application is the following The second clause means that UDP on wireless can cause problems for applications. Apps may be written to deal with losses themselves, but their handling of those situations may not be very good. Performance can suffer greatly.
 

Network Layer

A big responsibility of the network layer is routing. Hosts that move will obviously impact the routing of packets bound for them.

The problem with mobility and IP is that IP addresses are both network and host addresses mixed together. Routing is done by the network portion. If you move a host and don't change it's IP address, then packets for it will be routed to the "old" home network, and thereafter lost.

Giving a mobile host a new IP address each time it changes networks isn't attractive as the change would have to be propogated to everybody who might need it.

If the routing algorithms were changed to route based on the entire IP address, rather than just the network portion, that would solve the problem. But the routing tables of top level routers would be absolutely huge. This is expensive and slow to consult when routing.

The IETF Working Group on Mobile IP determined the following goals for any solution

The players Registering Routing IPv6 support for mobile hosts