CS 15-441 Fall '01
Project 2
Project 2 has been graded. We have some grading information.
Out: Tuesday, Oct. 2
Due: Tuesday, Oct. 30, 5PM
Late Policy:
-
10% off till Oct. 31, 5pm
-
20% off till Nov. 1, 5pm
-
no credit after that
Hints:
-
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.
Handin:
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.
- Send an email listing the two group members to
uhengart+441@cs.cmu.edu.
The format of the body of this email is described in the project
handout.
- 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 uhengart+@cs.cmu.edu.
- 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.
Make sure that your handin is correct, we will deduct points for incorrect handins:
- 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:
Project Handout
-
Section 4.1:
-
Section 5:
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.
-
Section 6:
-
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.
Simulator Handout
- Section 8.2: Broadcast packets are delivered only to UDP sockets, never to TCP sockets.
Back to CS 15-441 home page.