Computer Science 826 Assignment 2 As indicated in class your mission is to build a UDP application that will adaptively adjust its rate of transmission to available bandwidth in such a way as to achieve maximum transmission rate with negligible drop rate. As before you may work in 2 person teams but TEAMS ARE NOT TO COLLABORATE ON ANY ASPECT OF THIS PROJECT!!!! Phase - I (Turn in by 8 Oct) You will find the server code (which consumes UDP packets of a specific format) in the 826/source subdirectory . Its name is udpserv.c and it requires udpcs.h. Read the source code thoroughly, build the program, and then build a simple client program which will interroperate with it correctly when both the client and the server are running on the same machine. IMPORTANT: You will NOT BE PERMITTED TO SUBMIT YOUR OWN SERVER. Your client MUST interoperate with the "standard" server. If you do find bugs in the standard server, let me know and I will endeavor to fix them. Your mission is to build a client program that can adaptively adjust the rate at which it sends packets in response to changes in available bandwidth. Dropped packets provide an indicator of sending too fast for available bandwidth. There is, however, no indicator, or failure to use available bandwidth. Thus your program should employ some sort of strategy that causes it to slow down in the presence of drops and attempt to speed up in the absence of drops. Care should be taken to ensure that your adaptive procedure is relatively stable in response to constant bandwidth. Recommended approach: 1 - Send packets in bursts and vary the burst size 2 - Have separate sender and receiver threads 3 - Use a dynamic timeout mechanism for recovering from lost STAT reports. Phase II (Due 19 Oct) Write a brief research report of at least 2 pages but no more than 6 describing your algorithms and characterizing drop rate and throughput that you obtain using packet sizes of and packet sizes of 1250 bytes over dedicated point-to-point channels of 100-100 Mbps and 100-10 Mbps with varying numbers of client programs. Drop rates should be < 10% with throughput of at least 90% of nominal available bandwidth. Run comparable tests with TCP and compare the performance of your protocol with TCP's. Writeups MUST be in Latex. An example is in subdirectory writeup.