Students will work in teams to implement a transport layer that provides reliable one-way bytestream service on top of an unreliable packet service.
Due date: transport.c is due by 3pm on 1999-Dec-17-Fri via email to both TAs: Hakan Dogan <dogan@cory.eecs.berkeley.edu> and Socrates Vamvakos <sokratis@eecs.berkeley.edu>. In addition, if you'd like confirmation that we have received it, you can send a third copy to <eecs122@arwen.cs.berkeley.edu> and view a summary of all messages stored in that mailbox. Be sure to put the names of all team members in comments near the top of the file. Be sure it uses only standard C, no operating system features or compiler extensions. There will be a 5% penalty for each hour (or partial hour) of lateness, so plan to send them early.
The TAs originally planned to interview each team, but instead the teams will answer a short questionaire asking the same sort of questions they would have been asked in the interview. The questionaire is designed to replace a 15 or 20 minute interview, so it should not take much time to answer. Mail the questionaire to the same addresses you mail transport.c (but in a separate message).
Each team may have from one to four members. Each project will be graded without regard to team size, and every member of the team will receive the same grade.
We provide C interfaces between the network and transport layers, and between the transport layer and the upper layers. In real life, there is an interface between the transport layer and the operating system, and between the user applications and the operating system, but we will use a simulation framework that simulates just enough of the upper layers to drive the transport layer. Source code appears below. Although only transport.c will be turned in, teams should write a variety of network layers and application layers to test their transport layer.
There are a basic project assignment and three optional extra-credit extensions. Each team may elect to do none of the extensions, or any combination of them. The extensions will be graded separately from the basic project. Final course grades will be initially assigned without including the extensions, then adjusted upward to include any extra credit.
Important advice: Make sure you get something working that satisfies the requirements of the basic project before worrying too much about the extensions. If you run out of time, it's best to turn in something that at least gets all the bytes across.
The protocol must also be reasonably efficient, meaning that in the absence of transmission errors, and given fast application layers, it should transfer at close to the theoretical maximum rate, which is B per round-trip, where B is the lesser of the source's and sink's buffer limits.
all in one file: source.tar.gz
README | 0.2.1 | (1999-Dec-05-Sun)
|
transport.h | 0.4.1 | (1999-Dec-15-Wed)
|
bytestream.h | 0.2.0 | (1999-Nov-13-Sat)
|
crc32.h | 0.0.0 | (1999-Oct-17-Thu)
|
integer.h | 0.0.0 | (1999-Oct-17-Sun)
|
network.h | 0.2.2 | (1999-Dec-05-Sun)
|
random.h | 0.0.0 | (1999-Oct-13-Wed)
|
timer.h | 0.2.0 | (1999-Nov-13-Sat)
|
warnf.h | 5.0.0 | (1999-Oct-02-Sat)
|
crc32.c | 0.0.0 | (1999-Oct-17-Thu)
|
integer.c | 0.0.0 | (1999-Oct-17-Sun)
|
random.c | 0.0.2 | (1999-Dec-07-Tue)
|
warnf.c | 5.0.2 | (1999-Dec-06-Mon)
|
deliver_packet.h | 0.0.0 | (1999-Nov-12-Fri)
|
event.c | 0.2.0 | (1999-Dec-16-Thu)
|
main.c | 0.0.1 | (1999-Nov-28-Sun)
|
Makefile | 0.4.1 | (1999-Dec-18-Sat)
|
network.c | 0.2.5 | (1999-Dec-19-Sun)
|
network_config.h | 0.2.0 | (1999-Dec-19-Sun)
|
runtest.c | 0.3.5 | (1999-Dec-20-Mon)
|
streamers.c | 0.3.0 | (1999-Dec-18-Sat)
|
streamers.h | 0.3.0 | (1999-Dec-18-Sat)
|
test | 0.1.8 | (1999-Dec-20-Mon)
|
tester.c | 0.0.0 | (1999-Dec-16-Thu)
|
timer_expire.h | 0.1.0 | (1999-Dec-16-Thu)
|
transport.c | 0.4.0 | (1999-Dec-09-Thu)
|
|