Assignment 1

Due: February 17, 2000

Measure the performance (both latency and throughput) of Linux's Internet protocol stack running on a pair of PCs in CS 001. Look at Section 5.4 of the textbook for an example of how to measure and report protocol performance.

To measure round-trip latency, use UDP, TCP, IP, and the Ethernet device to send and receive messages of size 1-byte, 100-bytes, 200-bytes, 300-bytes, ..., and 1000-bytes. Report both the round-trip time for each protocol, and how much latency it contributes to the stack.

To measure throughput, use UDP, TCP, and IP, send messages of size 1KByte, 2KBytes, 4KBytes, 8KBytes, 16KBytes, and 32KBytes in one direction, with a message of the same size echoed back in the reverse direction. (You cannot measure the Ethernet device driver in this way because it supports an MTU of 1500 bytes.)

As a second measure of TCP throughput (this does not apply to the other protocols), measure how long it takes to send 1MByte of data from one PC to another (and a 1-byte application-level ACK in the reverse direction), varying the number of messages and size of each message; e.g., 256 x 4KByte messages, 512 x 2KByte messages, 1024 x 1KByte messages, 2048 x 512-byte messages, and so on. Measure enough combinations to discover TCP's performance limits. Experiment with TCP in both PUSH and non-PUSH modes, and with different send/receive buffer sizes.

Turn in a written report that describes your experiments, presents your results (this means performance tables and graphs), and draws any relevant conclusions. Also turn in source code for any test programs you develop.