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:

  1. 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.
  2. 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.
  3. To measure network performance at UW1-320, you need to login two different computing nodes: uw1-320-00.uwb.edu ~ uw1-320-15.uwb.edu. Note that all machines are connected to a Giga-Ethernet switch, (i.e., 1Gbps throughput).
  4. To transfer files to the UW-320 file server
    1. From an off-campus Linux machine: use the sftp command and establish a connection to uw1-320-lab.uwb.edu.
    2. From a Windows machine: use WinSCP, downloadable at: http://winscp.net/eng/index.php. Note that UWB Windows machines have installed WinSCP as default.
    3. From a Mac: Cyberduck, downloadable at https://cyberduck.io/ would be one of the popular tools.

Socket Ports

As your own socket port, 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, use the formula below:
 
     Your port = ( the last 5 digits of your student ID) + 5001 % 65535 
Please avoid trivial port numbers such as 8080, 10000, 11111, 12345, 20000, etc..

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.
  1. Eclipse
  2. KDevelop

Assignments

  1. Program 1: exercises socket communication and evaluates its performance over 1Gbps network. You will use: socket, connect, write, writev, bind, listen, accept, signal, fcntl, read, close, and gettimeofday.
  2. Program 2: implements the sliding window algorithm and evaluates its performance improvement over 1Gbps network. You will use: the professor's UdpSocket.cpp that includes socket, sendto, and recvfrom.
  3. Program 3: analyzes several TCP aspects such as state transition, Nagle's algorithm, additive increment, and slow start, using tcpdump, ttcp, netstat, and strace.
  4. Program 4: analyzes the hostent data structure that is related to DNS. You will use: getpeername, gethostbyaddr, ntohs, inet_addr, and inet_ntoa.
  5. Final project: builds an ftp client program based on RFC959.

Submissions

Grading

Your report will be graded based on the grading criteria shown in each assignment sheet.