logo
Go to the homepage of the Vrije Universiteit. Go to the homepage of the department of computer science. Go to the homepage of the faculty of sciences.

Computer Networks Practicum: 2011


News

  • April 7, 2011 - This year there will be no "bonus" functionalities. Our earlier handout mentioned some additional features (like client side port allocation) that if implemented would earn you bonus points. This was a vestige of the previous year's handout. This year there will be no such bonus points.

  • Mar 30. 2011 - For those of you who want to use Minix in VMware (although not officially supported), here are some hints that should get you started:
    • Modify /etc/inet.conf to add new vlan entries.
    • Modify /etc/hosts to create fake names for the fake vlans so that nonamed can perform a "host" name resolution using your entries.
    • Setup each virtual NIC using the instructions specified in the handout.
    • Make sure that rarpd and nonamed are running. You can try the entire setup by modifying the server IP address in client.c in ip source, recompiling ip source and testing the client-server communication.
  • Mar 30. 2011 - Before submitting your code, please make sure that the public interface verification using anm is done for LIBTCP.A and not TCP.O alone if you have other files . The handout contains an example that illustrates using anm only on tcp.o but you are to use anm with libtcp.a.
  • Mar 30. 2011 - There is a change in the method of contacting the assistants. You are required to address ALL YOUR EMAILS to cn@cs.vu.nl. Individual mails sent directly to teaching assistants WILL NOT BE ANSWERED.
  • Mar 30. 2011 - Register yourself and your team member by sending an e-mail to Matty Huntjens.
  • Mar 30. 2011 - This years handout is ready.

What

  • Handout (ps) (pdf) describing the practical assignment for Computer Networks
  • Handout is in English.
  • Assistants speak in English.
  • Your documentation shall be in English.
  • Remarks in your source code should be in English.
  • In short, everything is in English.

Where

  • For this assignment, you are supposed do your programming in P4.29. Login as root (without a password). Note that you have to save your work somewhere else, as the Minix machines in P4.29 are 'restored' regularly. It is possible to use ftp, so you probably want to ftp your source code to your home directory. The oficial version used for this practicum is Minix 3.1.
  • It is possible to install a version of Minix on your own PC using virtualization software such as Bochs, QEMU, Virtual PC or VMware. You must start a rarpd in order to get the networking layer to work properly on VMWare. Try `rarpd ip0 &` See minix3.org for more information or download the image from the Operating Systems practicum at the bottom of the page. This is not officially supported, however. Use at your own risk. Please do not ask the assistants for help installing Minix, you are on your own.
  • It is also possible to develop on linux using a library, libip_udp written by Marten Klencke <mklencke at cs.vu.nl> and Erik Bosman <ejbosman at cs.vu.nl>. Please note that this library is also unsupported. Use at your own risk. Please do not ask the assitants for help with this library and please note that your code will still be tested on Minix.

How

  • Read the handout, lookover the IP layer code, gloss over the RFCs, re-read the TCP section from Tanenbaum's book.

  • Goto room P4.29, sit down at a Minix machine, create the directory structure as described in the handout and install the libcn library as described in the handout. In your test directory, create a simple "hello world" program, get it to work.

  • Readup on your C. You can use the material for the (discontinued) course Introductie Programmeren in C to brush up your skills. One word of warning though: The Introductie Programmeren in C course uses gcc, the assignments should be compiled with cc. You are not to use gcc for the assignment, even though some form of gcc has been installed on the Minix machines. Note that the -Wall flag will not work with cc. (Though you can use gcc to compile your code with the -Wall flag, you will not be able to build (or use) the library.)

  • Follow the "must reads" links below and read hard. Start programming on your TCP lib, using the proposed method from the handout, and keep going.

Assistance

  • Raja Appuswamy and Suhail Yousaf are the assistants for this course. You can contact them by email. If you need to discuss something please make an appointment by email beforehand in order to ensure that they will be available.

  • The assistants will grade your work and they will also give a limited amount of help if you ask. It is to your advantage to take advantage of the available resources to help you. Please do not wait until the last minute to ask for help as the assistants may not be available immediately. Begin your work early so you can ask questions before it is too late!

  • Before you ask for help from the assistants, be sure to have read all the relevant documents (like the ones listed on this page).

  • Requests for extra testing will not be entertained. Figure out how to test on your own.

Grading

  • You will get up to 3 points for your source code,
  • Up to 3 points for your documentation
  • Up to 3 points for passing our extensive-test set.
  • Up to 1 point for your test suite.
  • Your grade is the sum of these,
  • for a maximum of 10 points.

Testing Methodology

  • For your convenience, you can submit your work for base-testing up to three times every month. You can submit any time of the month . Your code will be tested and results will be sent back as soon as possible. Since the assistants might be busy with their work at times, it might take up to a week for the assignment to be tested.

  • As with any non-trivial program, you are expected to test your code as part of the development process. Writing test programs from the beginning, will save you a lot of effort. In general it is not wise to first complete the TCP library and than start testing. Use a tight add-test development loop: Start with a "minimal" implementation, add a feature, write a test program that test the new feature, loop.

  • Your final submitted implementation will be tested against a extended-test program. You can get up to 3 point for passing these tests.

  • The tests in our basic test suite are critical. Critical means that if you fail this one sub-test you can not possible pass the course. For your convenience, these test have been collected into a base-test. Concequently your implementation has to pass the base-test in order to classify for grading. If your implementation does not pass the base-test, you will not be graded, and you will fail the assignment.*

  • Your work will be tested for base functionality only, so passing this test does not imply a good grade. You can easily fail the assignment even if you pass the base-test. Again, if you fail the base-test after your final submittal, there is no use in grading you, and you fail the assignment by default.

  • To submit your assignment, you have to pack all your source files in a tar file. Make sure you have the proper files in the tar file. That is tcp/tcp.c, tcp/tcp.h, and tcp/Makefile. doc/ A directory with your documentation test/ A directory with your tests

  • Use the command cn_submit <tarfile> to submit your assignment for base-testing. The cn_submit program will time-stamp your tar-file.
  • If you do not submit in time do not ask for leniency anywhere; too late is too late. The time cn_submit reports to us, is the "official" submit-time, no exceptions. Submitting just seconds before the end of a month might be unwise, since your clock or the clock on the submitting machine might be off by a few seconds. You have been warned! Submitting via email is NOT allowed. If cn_submit is not available on the server you are on try another server.

  • Please make sure that the command make (without any arguments) will create the library libtcp.a on the tcp directory. No other files should be created by the make command!

  • It goes without saying, but apparently still comes as a surprise to some; Your implementation should not produce any (debug) output, unless DEBUG is defined in the environment when make is run. Implementation which produce output when built without DEBUG in the environment will not be graded.

  • Do not expect a very verbose or detailed report on your code, usually a simple message like: "Your implementation does not restore alarm() and/or signal()." or "Your implementation cannot communicate with the reference implementation." is all you will get.
* The base-test consist of some very basic tests. For example your implementation should be able to handle a write of 100KB. If your implementation fails to handle this medium large block of data, you can not possible get a grade higher than 4 out of 10, no matter the rest of you work. Therefore writing 100KB is part of the base-test. Testing if your program ignores a SYN+ACK in LISTEN state (it should only accept a SYN without an ACK) is not in the base-test, but is a typical test in the extended-test. For your convenience a more elaborate how to test page has been assembled.

Fail/Redo

  • If you fail the base-test, or if you do pass the base-test but your score is to low, you will have to redo the assignment. Also you might be unsatisfied with the result and decide to redo the assignment. In any case, there is no guarantee that the assignment will be the same from year to year.
  • Even stronger, there is no guarantee that the assignment will even resemble any previous assignment. You will not be allowed to submit assignments based on descriptions of any previous year. Even if it means you can not use any code of previous years. Even if it means you have to start all over. Even if it means you have spend zillion hours for nothing on an old assignment.

Exercises

In an earlier semester, two exercises were given to the students to help them get started with various aspects of implementation. These exercises are no longer deliverables, but you are welcome to look through them to gain an idea on how to approach the problem. The exercise questions and answers can be found here.

Computer Networking Library

IP Layer Files

Manual Pages

Requests For Comments (RFCs)

Must Reads

Don't Procrastinate!

DO NOT WAIT UNTILL THE LAST MINUTE TO START CODING! Many students do not pass every year because they procrastinate! This assignment is HARD in particular because of the limited testing schedule. Do not procrastinate as you will miss your chance to have your code tested! Untested code almost always fails one or more tests. Forewarned is forearmed.

Miscellaneous

Erik van der Kouwe and Richard Bronkhorst created a VMware image for the Operating Systems practical (some notes). This should be easy to update to work with this practical. Don't forget to praise/blame them (we are only offering a link to the image hosted for the OS practical.)

If you have any comments, please e-mail the maintainer of this page.
Your browser does not fully support CSS. This may result in visual artifacts.