CS519 Computer Networks     Homework 2         Due: 6th March 2:55 p.m.

 

            In homework 2 you would be exploring the operation of the TCP protocol.  As in homework 1 all the questions in homework 2 would also be based on traces captured on a real network.  You would be using Ethereal to analyze the traces as well as plot the characteristics of the TCP traces.

 

            Ethereal has tools (see Tools menu) to perform TCP stream analysis.  You can click on any TCP packet and invoke the TCP stream analysis to plot the characteristics of that TCP stream.  For this homework, we would be using the time sequence graph (Stevens), throughput graph and the RTT (round-trip time)graph.  Please make note that the time sequence graph by default shows the relative sequence numbers.  Hence the size of data in bytes can be directly read off the time sequence graph.  Ethereal allows you to zoom in to specific portions of the graphs.  Each graph opens along with a control window.  The control window can be used to perform various operations such as zoom in, zoom out, change graph type, set magnification factor for zoom, use cross-hairs.  Exploring the various options would make it easier to answer the questions.  

 

            Sending streams between two machines connected in a LAN using the following tools have generated all the traces.  Packets were captured using a tool called tcpdump.  The TCP and UDP streams were generated using ttcp.  NistNet is an emulation tool used to adjust network characteristics such as delay, bandwidth, drop rate etc.  The traces can be downloaded from here.

 

1.                  Load the trace file trace1.cap in Ethereal to answer the following questions.  Sending a stream of packets for 5 second through a TCP connection opened from orkid to orchid using ttcp generated this trace file.  NistNet was used to fix the bandwidth of orchid to be 2.88 Mbps and to introduce a delay of 10 ms from orkid to orchid.

 

a.       Plot the time sequence graph of the TCP stream.  How many bytes of data are transferred from the source to the destination?  How do you compute this?  What is the elapsed time for this data transfer?  Therefore, what is the average throughput of this connection?

 

b.      Plot the throughput graph of the TCP stream.  What is the expected throughput of this connection?  Does it match with your computation in question a?  The bandwidth of this connection was set to 2.88 mbps.  How much of this bandwidth has been utilized? Why?

 

c.       Plot the RTT graph of the TCP stream.  Estimate the average delay in the network (ignore the ACK response time) by zooming in to the graph.  Using the achieved throughput you found in 1b compute the size of the TCP send window needed to fully utilize the channel. 

 

Warning: The follow TCP stream does not give correct statistics because only the first 96 bytes of each packet were captured by tcpdump.  

 

2.                  Load the trace file trace2.cap in Ethereal to answer the following questions.  Sending a stream of packets for 1 second through a TCP connection opened from orkid to orchid using ttcp generated this trace file. 

 

a.       Look at the time sequence graph and the packets of the TCP stream.  Look at the stream of packets received in the first 20 ms. Do you see any evidence of packets arriving out of order? Where?

 

b.      Look at the same graph and the first 100 ms. How many of the packets sent during this time was not received the first time; can you point out which ones?  What is the value of TCP timeout to detect lost packets? How do you know?

 

c.       Look at the same graph and the first 250 ms. Why is the stream of packets interrupted at about 25 ms?  What is the size of the send window (in bytes) at this time?  How did you measure this?

 

3.                  Load the trace file trace3.cap in Ethereal to answer the following question.  These packets were captured at the sender side of the connection between orkid and orchid.  The connection was blindly terminated after about 3.5 seconds.  From the time sequence graph, explain in a few words what happens after the connection is severed.

 

4.                  Load the trace file trace4.cap in Ethereal and answer the following questions.  For this trace a stream of TCP packets were sent from orkid to orchid for 1 second.  The delay from orkid to orchid was set to be 10 ms using NistNet.  The complete Ethernet bandwidth of 10 Mbps was available between the two nodes.

 

a.       Plot the time sequence graph and zoom in to the first 200ms of the trace.  What do you see?  Give approximate sizes for the first 5 send windows and explain your observation briefly in words.

 

b.      Plot the time sequence graph and look at the complete trace.  The curve is not a straight line, as you would have observed in other traces.  Instead we have 4 similarly shaped segments in the curve.  What events do you believe cause these kinks in the curve?  What happens every time this event occurs?

 

c.       Look at the throughput graph along with the time sequence graph.  What happens to the throughput when the events mentioned in question 4b occur?  Do you see a specific drawback of TCP?  Could you give an example scenario where the performance of TCP would suffer enormously? Why?

 

5.                  The traces for these questions have been taken with two parallel streams at the same time.  These traces illustrate the bandwidth sharing features of TCP.

 

a.       Load the trace file trace5.cap in Ethereal and plot the time sequence graph.  A second parallel TCP session was started for duration of 8 seconds as the fist stream was sending data.  Both the sessions are directed to the same address and same port number.  Why is this possible?  What is the effect of introducing the second session to the first session?  Measure the average throughput (slope) perceived by each of the sessions at different times.  What is the ratio of bandwidth sharing between the two streams? 

 

b.      Load the trace file trace6.cap in Ethereal and plot the time sequence graph.  A second parallel UDP session sent a burst of data for 1 second as the first stream was sending data.  What is the effect of introducing the second stream to the first session?  Why does this happen? Even though the UDP stream was sent for only 1 second, the effect appears to have lasted for several seconds.  Assuming that the bandwidth was set to be 2.88 mbps, can you explain why this happens?       

 

A printed copy of the solutions must be submitted in the class on 6th March.  Students unable to attend the class may submit a printed copy before the class commences by slipping it under the door of Rama’s office Upson 5154.  Students are permitted to discuss the questions with each other but each student must individually write up the solutions.  Also, the names of the discussants must be mentioned in the submission.