CS 15-441 Fall '01
Project 2 has been graded. We have some grading information.
Out: Tuesday, Oct. 2
Due: Tuesday, Oct. 30, 5PM
10% off till Oct. 31, 5pm
20% off till Nov. 1, 5pm
no credit after that
RCS tutorial / CVS links
- The TCP version included in the simulator does not generate
packets that have the PUSH, RST, or URG flag set. Nonetheless,
your firewalling implementation should to be able to filter packets
based on these flags.
The implementation of TCP in the simulator differs in some points from
the requirements listed in RFC 793. However, these differences do not
have any influence on the project and you can ignore the rest of this
note. For people already familiar with TCP, the differences are:
- Sequence numbers are per packet, not per byte.
- Acks and data are never sent in one packet.
- Acks have the sequence number field set to zero.
- Data packets have the acknowledgment number field set to zero.
- The TCP and UDP send functions already allocate space for the IP
header so there is no need to allocate space again in the IP layer.
The p_data member of the pbuf passed to
ip_output() points to the space for the IP header.
- We've provided sample implementations of the DHCP client and
server in the utils directory. You can use them to test your implementation.
To hand in your solution, you should proceed as follows. Note that the
first two steps need to be executed at least 24 hours before the due date/time.
Make sure that your handin is correct, we will deduct points for incorrect handins:
- Send an email listing the two group members to
The format of the body of this email is described in the project
- Each group member should execute "cklog cs.cmu.edu" from
an Andrew machine.
Wait till you get an email saying that your handin directory has been
set up for you. If you do not get an email within 24 hours after
executing step 2, send email to firstname.lastname@example.org.
- Copy your source files, your Makefile, and your project report to your handin directory.
The two group members have full access to their handin directory, so
you can modify the files you handed in if required. You might have to execute "cklog
cs.cmu.edu" again before being able to access the directory.
- Do not hand in any executables or object files.
- Hand in only one version of your code.
- When executing gmake in your handin directory, the following
executables (and the corresponding object files) must be generated:
kernel, setfilter, setnat,
dhcp_client, and dhcp_server.
- The compilation/building process must not result in any warnings.
- The compilation/building process must not build binaries
that are purified or that use some other debugging, verification,... tool. It is ok
to compile/build with the -g option.
- Your makefile must use gcc (not cc).
Questions and Answers:
We have a FAQ for project 2.
Revisions and Updates:
NAT for packets on the return path should be done before the routing
decision is made. The NAT box shown in Figure 4 denotes only where the
translation from private to public addresses takes place, but not where the
translation in the reverse direction takes place.
The DHCP client should use the value of the
lease_length command line parameter for an IP Address Lease Time
option in DHCPDISCOVER and DHCPREQUEST messages.
The release time of an assigned address is computed by the client as the startup time of
the client plus the value of the release_time command line parameter.
Some guidance on implementing DHCP.
- Section 8.2: Broadcast packets are delivered only to UDP sockets, never to TCP sockets.
Back to CS 15-441 home page.