CSS 432: Network Design - Assignments
Language
We use C/C++ for all programming assignments. This is
because we need native-code execution for the purpose of measuring the
underlying OS and network performance.
Operating Systems
The operating system used for all assignments is Linux
(UW1-320). You will use many Linux system calls to establish and
control socket communication.
UW1-320 Laboratory
All your programs must run at UW1-320 for
performance-measurement purposes. While you may develop your programs
at any of your own Linux, Xcode on Mac OS, Cygwin on Windows, or MinGW
on Windows, you must ultimately run all your programs at UW1-320.
Here is a procedure to log on one of the UW1-320 Linux machines and
upload your files:
- To use a console of any UW1-320 machine, enter UW1-320 Linux
Laboratory with your student ID card and log into any machine with
your UW Net ID and the corresponding password.
- To remotely log into a UW1-320 machine, use ssh and establish a
connection to uw1-320-lab.uwb.edu.
You will automatically
got one of the lab machines and see your home directory immediately.
- To distinguish 100Mbps and 1Gbps networks at UW1-320, log into a
pair of two specific computing nodes:
- 100Mbps: log into any two of uw1-320-01.uwb.edu ~
uw1-320-15.uwb.edu machines.
- 1Gbps: log into any two of uw1-320-16.uwb.edu ~
uw1-320-23.uwb.edu machines.
- To transfer files to the UW-320 file server
- From an off-campus Linux machine: use the sftp command and establish a connection to
uw1-320-lab.uwb.edu.
- From a Windows machine: use SSH Tectia Client, downloadable
at: http://www.tectia.com/en/en.iw3
- From a Mac: use Fugu 1.2, downloadable at
http://rsug.itd.umich.edu/software/fugu/
Socket Ports
As your own socket port, you should use the last five digits of your
student ID. Do not use the ports other than your own port. If your
last five digits do not fit in the range between 5001 and 65535,
please email the professor so that you can obtain a unique port no one
uses.
Programming Environment
Programming can be done with a text editor such as vi, pico, emacs and
with the g++ compiler. However, needless to say, you may use any IDE
(integrated Develogment environment). The following two IDEs are
available to use at UW1-320.
- Eclipse
- KDevelop
Assignments
- Program 1: exercises socket
communication and evaluates its performance over 100Mbps and 1Gbps
networks. You will use: socket, connect, write, writev, bind, listen,
accept, signal, fcntl, read, close, and gettimeofday.
- Program 2: implements the sliding window
algorithm and evaluates its performance improvement over 100Mbps and
1Gbps networks. You will use: the professor's UdpSocket.cpp that
includes socket, sendto, and recvfrom.
- Program 3: analyzes several TCP aspects
such as state transition, Nagle's algorithm, additive increment, and
slow start, using tcpdump, ttcp, netstat, and strace.
- Program 4: analyzes the hostent data
structure that is related to DNS. You will use: getpeername,
gethostbyaddr, ntohs, inet_addr, and inet_ntoa.
- Final project: builds an ftp client
program based on RFC959.
Submissions
- Each assignment sheet specifies what to turn in. Programming
assignments 1, 2, 3, and 4 requires only a hard copy to be turned in,
while the final project needs both a hard copy and a soft copy.
- Assignments are due at the beginning of lecture. No late
programs will be accepted unless you provide me with a proof showing
that you have been under an emergency circumstance. No matter the
circumstances, it is always best to turn in something.
Grading
Your report will be graded based on the grading criteria shown
in each assignment sheet.