TCP is reliable transport protocol tuned to perform well in traditional networks made up of links with low bit error rates.It handles the congestion by reducing its window size.In wireless network where most of the packets are rejected due to high error rate but actually no congetion occurs TCP performance is highly degraded.Several solution have been proposed to improve TCP performance over wireless network.We will discuss some of them.
The solution of this can be implemented on any of tha following depending on the requirment.
It involves splitting a TCP connection between a fixed and mobile host into two separate
connections at the base station,one TCP connection between fixed host and base station
and other between base station and mobile host.
On second one hop wireless link instead of TCP a more optimized wireless specific
protocol can be used.
It achive sepration of flow and congestion control of the wireless link from that of fixed network and hence result in good bandwidth at the sender.However it breaks the semantics of TCP protocol(end to end).It also incurs application relinking and software overhead.
In this approach,the wireless link layer is made more reliable so that it hides the wireless
network properties of being highly error prone.
This approach seem to be good one but actually it leads to congestion when error rates become significant.This is due retransmission both by MAC and TCP layer. Also a tight coupling of transport and link-level retransmission timeouts and polices is necessary for good performance.
This protocol highly(up to 20 times) improves performance of TCP over wirless network without changing existing TCP implementaions in the fixed network.It works by caching unacknowledged TCP data and performing local retransmission based on a few polices dealing with acknowledgments and timeouts.By using duplicate acknowledgment to identify packet loss performing local retransmission as soon this loss is detected,the protocol shields the sender from the vagaries of the wireless link.
This protocol can be described from two point of view
Data Transfer from a Fixed Host.
In this case base station routing code is modified by adding module snoop,that monitors every packet that passes through the connection in either direction.No transport layer code runs at the base station.The snoop module has two linked procedures,snoop_data() and snoop_ack(). snoop_data() processes and caches packets intended for Mobile Host while snoop_ack() processes acknowledgments coming from the Mobile Host and drives local retransmission from the base station to the mobile host.
There are three possible cases when a packet from Fixed Host to Base station arrives.
A new packet in normal TCP sequence i.e N-2,N-1,N,...... arrives
In this case the packet is added to the snoop cache and forwarded on to the Mobile Host.We also place a timestamp on one packet per transmitted window in order to estimate round-trip time of the wireless link.
An out of sequence packet that has been cached earlier
In this case depending on the sequence no of this packet and the last acknowledge received from from Mobile Hostdiffrent action are taken
If the sequence number is less then the last acknowledgment seen then this packet has already been received.But probably acknowledgment of this packet could have been lost, so it would be better to generate that acknowledgment at the Base station and sent to Fixed host.
An out of sequence packet that has not been cached earlier
In this case the packet is either lost in wired network and retransmitted by Fixed host or out of order dilivery are probable cases.Former case is more likely especially if the packet is one or two packet away from the last one seen so far by the snoop module.This packet is forwarded to Mobile host and marked as been retransmitted by the sender.Snoop_ack() uses this marked information.
Snoop_ack() monitiors acknowledgment sent by Mobile host and performs diffrent operations depending on the type and number of acknowledgment.These operations fall into one of three categories.
A new ack is received
This is common case when connection is fairly error free.In this case cache is cleared and and all acknowledged packets are freed.The round-trip time estimate for the wireless link is updated. Finally this acknowledgment is forwarded to Fixed Host.
An acknowledgment less then the last acknowledgment is seen
This occurs in wireless network due to diffrent delay.This is consider to be spurious acknowledgment and is discarded.Normally it does not occurs in wired network.
A duplicate acknowledgment is seen
Diffrent actions are taken depending on the type of duplicate acknowldgment and the current state of snoop.
If we receive a DUPACK for which no packet in snoop buffer, DUPACK is forwarded to Fixed Host.
If we receive a DUPACK for a packet which is marked as retransmitted, DUPACK is forwarded to Fixed Host as it needs to maintains state based on the number of duplicate acknowledgment it receives when it retransmits a packet.
If it is the first DUPACK then DUPACK is forwarde to Fixed Host,otherwise it is supressed.
Data Transfer from a Mobile Host.
The solution of caching packet at mobile Host will not improve performance,when the packet at wireless link will be lost ,there will no way for Mobile sender to know if the loss of a packet happened on the wireless link or elsewhere in the network due to congestion.Since TCP performs retransmission on the basis of round trip time estimates for the connection,sender timeouts for packet lost on the wireless link will happen much later then they should.
In the Snoop protocol this problem is handeled by modifying TCP at Mobile Host and using NACKs at Base station for the packets lost in any transmitted window.Here NACK is implemented using selective acknowledgment(SACK) option in TCP.
Limitations of Snoop Protocol