Reading
ttcp man page
dummynet
Congestion Control
Flow Control
Some of the Theory behind TCP (read up to page 13)
TCP Specifics
Summary of TCP variants
Tasks
This lab is focused on understanding the behavior of TCP. As
described in the overview, TCP has a variety of objectives including
reliable, in order deliver of packets, flow control, congestion
control, and the basic functions of the transport layer, which
include multiplexing/demultiplexing between applications and the
network. All of these functions combine to govern the transmission
of packets between sender and receiver.
Reliability in TCP if facilitated through the transmission of ACK
packets by receiver in response to data packets transmitted by the
sender. Data and ACK packets include sequence numbers as a means for
identification. Timeouts (and in the case of all but the Tahoe
version of TCP, fast retransmit signaled by receipt of three
duplicate ACKs by the sender) on the sender, trigger retransmission
of lost packets. Details of reliability mechanisms in TCP can be
found in the readings above.
The notion of flow control is to ensure that the sender does not
transmit too many packets at a time such that packet are lost due to
insufficient buffering on the receiver. Flow control in TCP is
enabled by the receiver sending an explicit signal indicating the
total number of bytes it can receive at a time. The receive
window or RWND size is indicated during the three-way handshake
packet exchange of TCP connection establishment. The total number of
unacknowledged packets in flight between sender and receiver must
never exceed RWND. Details of flow control can be found in the
readings above.
The notion of congestion control is to make the number of
unacknowledged packets in flight at any point in time sensitive to the
congestion conditions on an end to end path. Specifically, the
sending window is set to the minimum of the congestion window or
CWND and RWND. The size of CWND is governed by a series of
algorithms, the most basic of which are called Slow Start (SS)
and Additive Increase, Multiplicative Decrease (AIMD). The
details of these algorithms are explained in the readings and wind up
being rather complex in practice. A key aspect of TCP congestion
control is that congestion is signaled by lost packets i.e., if
a sender identifies that a packet is lost (e.g., through
timeout), it will reduce the size of CWND.
You will gain experience with TCP through observing it's behavior in
several different experiments in this lab. The basic approach will be
to construct a topology in Schooner, use different tools to generate
traffic between end hosts and then trace this traffic using Ethereal.
A non-goal of this lab is to give you experience with network
programming, which is enabled through the primary network interface
offered by operating systems to applications - namely, Sockets.
Socket programming is an important focus of CS640 (Introduction to
Networking) and CS639 (Web Programming).
Tools
In addition to the recommended readings above, you will need to
refamiliarize yourself with the ethereal utility, which will be used to
visualize the exchange of packets between end hosts in your
experiments. Other tools you will use include:
The ttcp traffic generation utility.
The IP FireWall utility.
The Harpoon traffic generator.
The dummynet traffic shaper.
The
Click Modular Router.
Topology
Two network topologies will be used in this lab:
Topology #1
This topology consists of the most simple network configuration: PC1
connected to PC2 via a single link. Use the Schooner GUI to create this
topology.
Topology #2
The second topology will not be used in this lab due to time restrictions
Questions
Please enter the answers to these questions into your lab notebooks before you
start the lab.
1. What is the notion of congestion control?
2. What is the notion of congestion avoidance?
3. What is the so-called "saw tooth" behavior of TCP?
4. Can the value of RWND change during a connection? Explain
briefly why or why not.
5. Why is the use of a software router like Click useful for this
lab?
|