CS 145A Lab 4 (due: Dec 12th 23:59:59)
Simple Congestion Control Algorithm
Tasks for Lab 4: Design and implement a congestion control algorithm for the
reliable transmission protocol in Lab 3
- Choose congestion signal(s) in your algorithm
- Design the response function
- Implement the algorithm (measurement and control)
- Analyze your algorithm (equilibrium analysis and stability analysis)
- The algorithm should be able to use available bandwidth efficiently.
- The algorithm should be able to use available bandwidth fairly.
- The design and analysis should be written in a document file ("readme.txt"
or "readme.doc" or "readme.ps" or "readme.pdf").
You can also submit in paper, by midnight Dec 12th.
- The implementation is based on the lab3: a sender
and a receiver. (You can either use your own codes or the reference codes)
Please clearly write down your design, including but not limited to the following
- How do you choose congestion signal
- How do you choose decision function and increase / decrease function
- How do you measure the inputs
- How do you control the rate
Based on the codes of Lab 3:
- Make the code in Lab 3 works (if you didn't) or understand the reference
- Add the measurement components
- Add the control components
Please clearly write down your analysis, including but not limited to the following
- Is your protocol fair?
- Is your protocol stable? In terms of what? (global or local? with delay
or without delay?)
- In what kind of environments does your design work well?
- Any possible environments that your design does not work?
- Measurement of RTT and Loss with presence of noise
- Control the packets in flight with presense of packet loss
- Adapt to different environments
- Testing: You can use NIST
net package in Linux or IP_Dummynet
in FreeBSD to build a emulated network, with specific delay, bandwidth, loss
rate and queue length. You can also use TA's relayer/advanced
relayer to test your code. If you have special requirement on the environment,
please contact TA.
Please submit your code and your documentation (sender.txt, receiver.txt
- 50%: Design
- 30%: Implementation
- 20%: Analysis
The TA will have two advanced relayers
which may output the packets with a given speed. The "sender" under test will
send data to the relayer and the relayer relays the packets to the "receiver"
under test. The same happens in the feedback channel. So, the data packet or
feedback packet may experienced random droppping and constrained bandwidth in
the middle. For special situations (such as high speed and long distance environment),
TA will use Dummynet Testbed to provide an environment up to 800Mbps bandwidth
and 200msec delay.
Tue / Thu (20:00~22:00) JRG 170