Project 2 FAQ

What is the late policy?

-10% if 00h01m-24h00m late
-20% if 24h01m-48h00m late
-40% if 48h01m-72h00m late
-100% if 72h01m-... late

Help! Why can't I capture any packets?!

Remember that tcpdump does NOT work for packets sent to and received on the same machine. The loopback adapter is a separate entity from the network interface and thus cannot be traced. You MUST exchange packets between two different hosts, such as c199.eecs and sphere.eecs. -- Monday Dec 10 4:57pm

I'm getting strange errors on sendto() or recvfrom()

Make sure your packet headers are generated completely. Make sure you've corectly populated all the variables being sent to sendto() and recvfrom(). -- Monday Dec 10 4:56pm

MNL configs and files for testing are now online

The files are now online. It is VERY IMPORTANT that you read the readme.

Remember, this is to prove to me that your congestion control mechanisms are working. I will be doing more tests against your protocol, so make sure that it's easy for me to do so. -- Wednesday Dec 5 12:41pm

You can use c199.eecs and sphere.cs as your hosts for your programs. You will have to recompile both MNLDaemon and your app! Don't forget to run MNLDaemon in the working directories of your apps. -- Sunday Dec 9 3:10am

What's a CSV?

Why won't the packet parser compile on my system?

You might need to install libpcap. It will likely be easier for you to do this task on c199, but if you would rather install it on your own system, you will have to install the necessary libraries, such as Winpcap. -- Monday Dec 3 10:51pm

UPDATE: MNL 0.1b released

MNL 0.1b now includes the ability to control the random number generator. This allows you to have reproducible behavior when you're debugging, or to have truly random behavior for your more interesting tests. See the website for links to the updated program and project spec. -- Friday Nov 30 1:15am

Note: You must recompile MNLDaemon from source on whichever system you intend to run the MNLDaemon. c199 requires that you use gmake -- Monday Dec 3 10:55pm

Note: The MNLDaemon rewrites the UDP source port on all outgoing data packets. You will have to provide the source port somewhere else in your packet so that your receiver will know to which UDP port to send responses.

Additionally, the MNLDaemon can only process outgoing packets, thus you will have to build support for MNL on both your sender and receiver. This means that your sender and receiver and their corresponding MNLDaemons need to be executed in different paths (e.g. in different folders, on different computers, etc.) -- Wednesday Dec 5 12:44pm

UPDATE: The packet parser has been released.

You will need to modify this sample parser for your purposes. To see its execution, you may try packet_parser udp.dump. The parser and associated files is located here -- Thursday Nov 29 4:55pm

What RFCs will help me?

RFC 2001 describes TCP's Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery. RFC 2988 describes the suggested RTT/RTO computation. -- Thursday Nov 29 4:53pm

Can I use library x?

You may use whichever non-networking library you see fit. -- Thursday Nov 29 4:50pm

How can I time events?

You may want to look at time(), clock(), and gettimeofday(). You may also find that select() has a useful timer feature. Don't forget to reset the timeval struct each time -- some systems deplete the timer and return the remainder. -- Thursday Nov 29 4:50pm

UPDATE: There is no Project 1 component to Project 2 anymore.

You will be implementing a unidirectional simple file transfer program with one sender and one receiver. This will be a lot easier than porting Project 1. Please download the latest revision of the Project 2 spec.

How do I find out the IP address of the host that sent me data over this UDP connection?

recvfrom() -- Monday Nov 19 2:45pm

What are the UDP options?

You may check your own sockopt info by running man setsockopt on your system. Beej lists some helpful options here, such as letting a socket be reused (to avoid the "Address already in use" error). -- Monday Nov 19 2:45pm