Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Help Please 6. Programming Assignment: Based on the content covered in the class

ID: 3603402 • Letter: H

Question

Help Please

6. Programming Assignment:

Based on the content covered in the class, you are required to implement a simplified

network client-server simulating program. You can conduct the homework by yourself

or work with another student as a group. You are required to set up your system with

computers to emulate the sender, receiver and router, which are connected with TCP

as shown in the following figure.

Figure 1: Network Transmission Model (Topology)

The sender will send Y packets (changing Y from 10; 20; 40; 60; 80; 100) via the router

to the receiver. The receiver will reply with corresponding acknowledge packet as in

the following figure.

_ We apply the Selective Repeat mechanism for sender and receiver. For the window

size, you should use window size equals to 5.

_ The router in the middle will randomly drop a packet and ACK with a probability

(10+X) %, where X is the last digit of the four digit number 9788 and your partners last digit

of the four digit number 5973.

_ We further assume that the router not only randomly drop data packets, but also

acknowledge packets.

Router Sender Receiver Figure 1: Network Transmission Model (Topology)

Explanation / Answer

1. Correctness (+5%): The implementation is correct and has none of the functional or concurrency problems listed for the normal portion of the assignment. 2. Reduced global lock contention (+10%): The implementation minimizes the time spent in synchronization which has a potential for global lock contention, but does not completely remove it. For example, at this level, an implementation is still allowed to use a single global lock to protect lookups on the map of chat room names to ChatState objects. 3. Minimal global lock contention (+15%): The implementation has no global lock contention whatsoever, except in making the initial socket connections, as accepting connections is an inherently serial process. Note that at this level, even lookups on the map of chat rooms names to objects must be completely concurrent.