TCP was inherently designed for wired links that experience packet losses mainly due to congestion as opposed to corruption in wireless networks. The mechanisms to adapt TCP fall into three categories: link-layer loss correction using coding, tweaking TCP congestion control mechanisms, and split-TCP connection (base station to mobile host is a separate TCP connection). This paper compares the performance of the techniques under simulated losses. Techniques primarily focus on hiding things from TCP so that it doesn’t react too much. Link layer techniques suppress duplicate acknowledgements arising out of reordered packets so that the sender does not reduce its congestion window in reaction. End to end techniques avoid wastage using SACK and are a good option. Splitting TCP connections also helps insulate TCP from the vagaries of the wireless world.
I liked the second and third technique, with the latter being especially smart (though it is unclear if base stations can function at line speeds with this extra overhead). While the second technique is relatively easier to deploy, the third technique requires changing TCP semantics and base stations. Overall, this was a nice survey/evaluation sort of a paper and very informative. I vote for keeping it in the reading list.
This paper leaves itself open to the standard criticism of showing results based on simulations as opposed to real implementations. While, undoubtedly, the paper would be stronger with real evaluations, I think the lessons from the paper are still valuable.
1. What eventually won the race? Do we have a modified version of TCP for wireless links now, or is it all uniform?
2. The techniques for improving TCP over wireless links seem to have no regard for the E2E principle. Maybe it is all about identifying the "correct" end-points...Can we have a discussion of this in class?