>>> Tim Bass said:
 > From a purists perspective, this coupling of TCP and IP is not consistant
 > with the layered protocol design objectives of TCP/IP.   
 > 
 > Can you provide the exact URL of the analysis?, and I'll do more homework
 > before beating the purists drum.
You're right that a lot of this stuff violates the traditional layering concepts.  However, there are many cases when having "transport-aware" link protocols greatly improves performance.  These enhancements do not violate either the end-to-end semantics of TCP, or the end-to-end principle.  They are intended mainly as a performance enhancement and only involve soft-state that's easily regenerated if necessary.
Please look at http://daedalus.cs.berkeley.edu/ under the publications link at the paper titled 
A Comparison of Mechanisms for Improving TCP Performance over Wireless Links. 
(Compressed Postscript, 469 KB).
     Hari Balakrishnan, Venkata N. Padmanabhan, Srinivasan Seshan, Randy H. Katz. 
     IEEE/ACM Transactions on Networking. (To appear). 
     This is the extended and improved journal version of the SIGCOMM '96 paper.
for some examples of this.  
The snoop protocol (described briefly in this paper, and in an earlier paper on the same Web page) and the ELN (Explicit Loss Notification, as we called our proposal) scheme outlined in the paper are examples of protocol techniques that do this kind of thing.
As one part of my dissertation work, I am working on the general problem of schemes to distinguish between congestion and other forms of loss, and reacting appropriately to them.  The ToN paper quantifies how beneficial ELN is likely to be in wireless networks, but doesn't go into the details of implementation.  Since then, we have had some experience with an ELN scheme in our wireless testbed here.  Let me describe the interesting aspects of the scheme below, as concisely as I can:
ELN is a mechanism by which end-points or routers (to wireless links) can distinguish between losses due to congestion and losses unrelated to congestion.  More precisely, a packet (usually a TCP dupack) arriving at the sender (or any other entity in the network) with the ELN bit set is an indicator of a non-congestion-related loss.  We have worked out various schemes to apply this in wireless LANs where the wireless link is at one end of a network connection, to transit wireless links, and also to multi-hop wireless networks.  The last one is yet to be implemented.
The following is a simple, but useful scenario in which ELN could work (we have some performance numbers demonstrating this):
  Server -------------------	base stn ======================= client
          wireless link			   wired network
ELN can be used in conjunction with the idea of a transport-aware link protocol to achieve very good performance even when wireless loss rates are high, as described below.
As the server sends data, the base station keeps track of "holes" in the data sequence.  These correspond to "guesses" about losses that happened on the wireless hop.  Every time an out-of-sequence segment arrives at the base station, it looks at the input queue size to make sure that it wasn't in a congested state, and then adds the hole to the list of holes.
Now, when the client gets later segments (but not the last one), it generates dupacks for it.  When these dupacks pass back through the base station, it sets the ELN bit in the TCP header, since the dupack corresponds to a "hole" in the list at the base station.  And when this dupack with the ELN bit set reaches the sender, it retransmits the segment, *without* reducing cwnd.
There are some implementation details I have left out (e.g., related to setting the right ELN rxmit threshold, handling MAC contention, etc.), but this is the basic idea.  This can be extended to the case when the wireless link is a transit link somewhere in between, by modifying the snoop protocol to understand ELN, and if necessary, to reset the ELN bit while propagating the dupack back to the source on the reverse path (this is the part that really distinguishes between congestion and corruption).
We have also worked out the details for how this scheme would work in a multi-hop wireless setting (our testbed in Metricom's Ricochet network), but haven't implemented it yet.  The main difference in this case is that we need to exchange queue length information between peer radios, ideally piggybacked on data, to make good guesses about the nature of losses.
In general, such transport-aware link protocols significantly improve performance in many wireless settings.  However, they often require the data and ack paths to converge at some point in the network prior to the source, preferably close to the wireless portion.  While Internet routing is often asymmetric, wireless network architectures in use today tend to have fixed points (base stations in cellular networks like our indoor wireless LANs and the Ricochet network, head-ends in other some wireless cable networks, the uplink machine in the Hughes' DBS network, etc.) where data and acks "converge".
Also, we don't believe it is possible to distinguish between congestion and corruption at only the ends, perhaps by looking at loss "signatures".  Such local schemes provide a way of improving performance, and it will be good to have an ELN bit in the TCP header for this -- right now, we're using one of the "unused" bits!
-- Hari.
This archive was generated by hypermail 2b29 : Mon Feb 14 2000 - 16:14:30 EST