Lab 6 Introduction
This lab focuses on the transport layer (layer 4) and the Transport
Control Protocol (TCP). The transport layer plays a critical role in
networking since unlike layers 1 - 3, transport is the first layer
that has any notion of an end-to-end connection, i.e.,
communication between end hosts. While TCP is the dominant transport
protocol is use in the Internet today, it is not the only tranport
protocol - the other commonly used transport is the User Datagram
Protcol (UDP).
The basic capability that is provided by the transport layer is
multiplexing/demultiplexing between the network layer and applications
(since multiple applicaitons may require the network at the same
time). The mechanism use to enable multiplexing/demultiplexing is
port numbers - which are associated with applications. Like
the layer below, packets passed down from applications are
encapsulated with a transport layer header that specifies the port
number of both the source and destination application. UDP headers do
not include much more information than port numbers, while TCP headers
have a good deal of additional information.
TCP offers a variety of functions beyond multiplexing/demultiplexing.
These include connection management, flow control, congestion control
and guarantee reliable, in-order delivery of packets. Guaranteed
delivery of packets (obviously desirable for most applications) is
enabled through acknowledgement packets (ACKs) returned by the
receiver, and timeout and other mechanisms on the sender that will
trigger resending of packets presumed to be lost in the network.
Congestion control is a compelling capability added to TCP in 1989 by
Van Jacobson. It modulates the transmission of packets by the sender
such that if congestion in the network is identified (through lost
packets), the sending rate is significantly reduced. This enables the
network to recover from congestion and resume stable operation. Since
1989, many new congestion control algorithms have been suggested, but
the dominant versions in use to day are still largely based on
Jacobson's algorithms.
Students will be introduced to the basic concepts of the transport
layer, and will conduct experiments that demonstrate several different
features of TCP. TCP is a protocol that is implemented in operating
systems that run on end hosts, and is not typically realized on
devices that reside within the network (i.e., on paths between
end hosts). This means that source code for TCP implementations is
accessable and can be examined by you directly (e.g., in Linux
or BSD), unlike other protocols that we have studied thus far.
Expertise in TCP - at least in terms of how it behavies - is important
since the protocol plays such a critical role for both applications
and in managing congestion in the network.
This lab will be conducted entirely via Schooner. A number of new
tools and utilities will be introduced in this lab, including the
Click Modular Router and the Harpoon traffic generator. This lab will
be less complex but is due at the same time as Lab #7 so please start
early. Lab #6 will be the only lab in which transport and TCP are
covered, so if you would like to experiment with transport in other
ways, please see Prof. Barford for ideas.
Objectives
- Become familiar with basic transport layer concepts.
- Become familiar with sliding window-based flow control.
- Observe how the Reno and Vegas versions of TCP manage
congestion.
- Gain experience with the Click Modular Router and the Harpoon
traffic generator.