![]()
Princeton University
|
Computer Science 461
Spring 1999 |
Implement a Sliding Window Protocol (SWP) in the x-kernel, and measure its throughput. Your protocol should use the sliding window algorithm, and support a SWP_SET_SWS control operation that allows the high-level protocol (e.g., the test protocol) to set the sending window size. The receiver's window should be fixed at some reasonably large value (e.g., 8 or 16). File swp.h that defines SWP's control operations and participant addresses can be found in /xkernel/include/prot. SWP should support multiplexing, but you need measure only one channel at a time.
SWP is a message-oriented protocol, meaning that SWP delivers the same message that is sent. SWP should not fragment messages passed to it by a higher level protocol. This means that SWP should accept only messages that it knows it can send unfragmented through the low-level protocol upon which it is configured. SWP can learn this message size by invoking the GETOPTPACKET (get optimal packet size) control operation on the low-level protocol.
Configure SWP on top of IP, and measure it's performance for a variety of window sizes. You should also configure SWP on top of two virtual protocols: VDELAY and VDROP. The former artificially delays packets (which allows you to test SWP over a larger delay x bandwidth link), and the latter randomly drops packets (which allows you to test the robustness of your implementation).
The report you turn in should describe your experiments and summarize
your results. It should include a performance graph that reports the
measured throughput for a configuration that includes VDELAY, as a
function of the sender's window size. You need not report on the
performance of a configuration that includes VDROP, but you should
expect that we will test the correctness of your solution using VDROP.
Your report should also give a brief description of SWP, including
it's header format.