Hints for Exercises: Chapter 10

  1. Read about the history of the development of TCP, with particular regard to the strategies that have been proposed to increase throughput. How much faster is a modern TCP implementation than an early implementation?

    Absolute speedup is difficult to quantify due to the many other factors involved, but current TCPs approach the maximum theoretical throughput (when all overheads are taken into account).

  2. tcpdump shows the current advertised window of a connection. Investigate how the window opens and closes for various kinds of traffic, e.g., keystrokes, a video stream, data file transmission.

    Experimental. This is mainly observation of the dumps and the identification of the various trends.

  3. While copying a large file using FTP (or other) watch (using tcpdump) how slow start and congestion avoidance work. Try to find a congested connection to see the effect of packet loss on throughput.

    Experimental. We would hope the experiments bear out the theory. If not, it would be interesting to speculate why.

  4. The slow start mechanism is a one MTU increment per received ACK. This is called TCP Tahoe, later modified to become TCP Reno. An alternative congestion scheme is TCP Vegas that tries to anticipate congestion. Read up on these variants and describe how they work.

    There are plenty of papers on comparison of the TCP variants. For example see here, here and here for just a few that Google finds.

    Reno variants seem to be the most commonly implemented.

  5. Suppose we wanted to extend the Internet to the rest of the Solar System. What would we have to do to TCP? (For example, the Moon is about 1 second away; Mars varies between 3 and 22 minutes away.)

    Clearly the timeouts need to be adjusted. For example, in the ACK we should start with a timeout comparable to the estimated round trip time. Quite how we specify this or even estimate this is open. As round trip times vary (e.g., 3 to 22 minutes) we might want to base our initial timeout on the relative positions of the planets. Or have some separate protocol that periodically measures RTTs (via pings?) and passes the information to TCP.

    Also, the connection is a huge LFN, so the issues for long fat pipes (window sizes, wrapped sequence numbers, etc.) are correspondingly large.

    The Consultative Committee for Space Data Systems (CCSDS) has some information on this topic, with recommendations for the Space Communications Protocol Specification (SCPS) Transport Protocol (SCPS-TP). Also here and here.

  6. ECN can be turned off or on in some operating systems. For example, /proc/sys/net/ipv4/tcp_ecn in Linux. By connecting to various hosts (e.g., Web servers) discover how many routers are still treating ECN-enabled packets as corrupt.

    These days, ECN corrupt routers are thankfully rare.

  7. By using pchar or pathchar, or equivalent, determine some path RTTs. You might also be able to gain some information about the kinds of network you are testing by using traceroute.

    Experimental. As these tools send a lot of data to get accurate results, make sure that you have permission to probe the remote machines. Otherwise they may regard the probes as hostile attacks!

  8. ping and traceroute can both be used to measure the time a packet takes to make a hop. Find the longest hop time you can that is accessible to you. What kind of network link does it correspond to?

    Experimental. Likely this will be a trans-oceanic link (e.g., UK to USA across the Atlantic), or perhaps a satellite link (more unusual these days). You can modify the TOS bits on the pings, which may encourage routers to send via slower, bulk data routes including satellite links.

  9. Read up and explain why TCP for Transactions has not been successful.

    The major problem is that T/TCP allows spoofing: data is sent before sequence numbers are fully negotiated, so an attacker could masquerade as a trusted client and have its data accepted before the server has had a confirming ACK from the real client. See here for this and other problems.

    Another issue with T/TCP is that the client wants to send data to the server (in the SYN segment) before it knows how large a window the server has.

  10. Read up and explain why SCTP might well be successful.

    SCTP retains the parts that make TCP successful (packet retransmission, congestion avoidance algorithms and so on), and builds on it (unordered reliable delivery, multiple streams in a connection and so on), providing facilities that our experience with TCP have shown would be useful.

Previous Index Next

Creative Commons License This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License.