|
Computer Science 461
Distributed Computing and Networking
Spring 1999 |
|
Assignment 1
Due: February 16, 1999
Using the Getting Started with the x-kernel
document as a guide, configure an instance of the x-kernel that
includes TCP, UDP, IP, ICMP, ARP, VNET, ETH, and SIMETH. The x-kernel
is installed on the Department file server in directory /xkernel.
Run the resulting kernel on a pair of Linux PCs. Measure the latency and
throughput of UDP and TCP on this platform.
To measure round-trip latency, use UDP and TCP to send and receive messages
of size 1-byte, 100-bytes, 200-bytes, 300-bytes, ..., and 1000-bytes.
To measure throughput, use UDP and TCP to 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.
As a second measure of TCP throughput (this does not apply to UDP),
write your own test program to measure the time it takes to send 1MByte
of data from one machine to another (and a 1-byte ACK in the reverse direction),
varying the number of messages and size of each message; e.g., 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.
Some hints and suggestions:
-
You will need to use TCP's TCP_SETRCVBUFSPACE control operation for the
second TCP throughput measurement. Read the Programmer's Manual to learn
how TCP_SETRCVBUFSPACE works.
-
Feel free to use (and modify) the test protocols TCPTEST and UDPTEST. These
can be found in /xkernel/protocols/test.
-
You will not need to directly edit the Makefile, except as instructed
in the "Getting Started" document. To configure your new test protocol
into the system, you will need to read the "Configuring a Kernel"
section of the Programmer's Manual.
-
Look at Section 6.5 of the textbook for an example of how to measure and
report protocol performance.
-
Use the last four digits of your SSN (and your SSN+1) for the two port
numbers you need to run the x-kernel.
-
Compile and debug your protocol stack on a single PC; move the experiment
to a pair of machines only when you're ready to collect performance data.
-
Use a small number of round trips (e.g., 100) when debugging your protocol
stack. Use a larger number of round trips (e.g., 1000) when collecting
performance data.
The report you turn in should describe your experiments and summarize your
results. It should include three performance graphs: one for UDP/TCP latency,
one for UDP/TCP throughput using the first throughput test, and one for
TCP throughput using the second throughput test. Also turn in the test
program and configuration files that you used.