CS625 - Advanced Computer Networks
Instructor - Bhaskaran Raman
Lecture 15 - 5th September 2003
Scribe - Nityanand Rai(Y3111026)


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.

Design Alternative

The solution of this can be implemented on any of tha following depending on the requirment.

Some of the alternatives are described belows.

Snoop Protocol

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.

  1. 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.

  2. 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 of this packet is greater then the last acknowledgment received then it is very likely that packet didn't reac the Mobile Host and hence packet is forwarded on.

    • 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.

  3. 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.

  1. 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.

  2. 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.

  3. 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