Draft UDP Program Evaluation

Internet and Intranet Protocols and Applications

Spring 2003

Prof. Arthur P. Goldberg

Student ______

ID ______

Total off ______

Days late/penalty ______(1.5% penalty per day late)

Total ______/ 100

Grader AG JW VS

Points OFF / Possible points / Functionality / Comments
5 / concurrently send and receive messages.
3 / Send UDP datagrams containing the Data to FUES
5 / Send MRR copies of each piece of data in separate datagrams
2 / Make the size of individual UDP datagrams less than or equal to 548 bytes
4 / send the sequence number identifying each part of the Data at the start and end of each datagram.
2 / sequence number indicates the byte offset of the start of the datagram in the file.
4 / send at most MAX_RATE messages per second.
4 / send the whole file, properly sending the last, possibly partial, datagram
4 / If the two sequence numbers in a datagram differ, then discard the datagram.
4 / Assume that data has arrived correctly if at least 2 identical matching copies of the data are received.
4 / If more than one value for the data arrives redundantly then, pick the most common version of the data received.
3 / If multiple values for the data arrives redundantly and are equally common, choose one arbitrarily.
4 / Assume that data has arrived correctly if exactly one copy of the data is received.
4 / Properly handle out-of-order messages, that is, handle valid datagrams which do not arrive in sequence number order
4 / Output recovered data to the output file when the data becomes available, that is, ready to be output.
4 / Properly ignore late messages, assuming either
1.All successful echoed copies of a datagram will arrive from FUES within MAX_DELAY ms of when the message was sent by the RUC Sending Part,
2.All successful echoed copies of a datagram will arrive from FUES within (MRR / MAX_RATE) + JITTER ms of when the first datagram was received by the RUC Receiving Part, where JITTER is another input parameter.
4 / If some data cannot be recovered then output an error message of the form "Bytes beginning at 1001 cannot be recovered".
3 / Receive the whole file, properly Receiving the last, possibly partial, datagram
3 / Output the last partial datagram
4 / The RUC Receiving Part should terminate when no new messages can arrive, but not before then.
3 / Using shared memory between Sending and Receiving parts, share run-time information about only 1) times of datagram sending and 2)indication of sendingtermination.
3 / avoid Deadlock.
3 / avoid Busy-waiting
4 / avoid Memory use that grows linearly with the file size, i.e., garbage collect the reassembly buffers at the receiver
4 / Provide shared, thread-safe, access to any shared data structures.
2 / Software quality guideline C2. Simplicity
3 / Software quality guideline C5. Non-repetitive
2 / Software quality guideline C6. Well Commented
2 / Software quality guideline C7. Layout