● Clarification for Q3 dynamic timeout computation Here are the equations from the textbook. EstimatedRTT = 0.875 * EstimatedRTT + 0.125 * SampleRTT DevRTT = 0.75 * DevRTT+0.25 * |SampleRTT EstimatedRTT| TimeoutInterval = EstimatedRTT + 4 * DevRTT Packet 1 is a special case: ● Send packet 1 ● Receive ACK 1 using Initial Timeout = 5 seconds ● Compute Timeout for next packet as follows: ○ Compute sampleRTT1 ○ Let EstimateRTT1 = sampleRTT1 ○ DevRTT1 = 0 ○ Compute TimeoutInterval1 = EstimatedRTT1 + 4 * DevRTT1 For packet 2 (and onwards), we simply use the aforementioned equations: ● Send packet 2 ● Receive ACK 2 using TimeoutInterval1 ● Compute TimeoutInterval2 for the next packet as follows: ○ Compute sampleRTT2 ○ EstimatedRTT2 = 0.875 * EstimatedRTT1 + 0.125 * SampleRTT2 ○ DevRTT2 = 0.75 * DevRTT1 + 0.25 * |SampleRTT2 EstimatedRTT1| ○ TimeoutInterval2 = EstimatedRTT2 + 4 * DevRTT2 ● Clarification for delay (RTT) calculation Consider the following example where the window size is 3, packet 1,2,3 is transmitted, and packet 2 is lost: ● Packet 1 is transmitted at t1 ● Packet 2 is transmitted at t2 ● Packet 3 is transmitted at t3 ● Acknowledgement # Received: 1,1 @ time T1 (Window slides to 2-4) ● Packet 4 is transmitted at t4 (Packet 2 timeout ) ● Packet 2 is retransmitted at tr2 ● Acknowledgement # Received: 4 @ time T4 Here, ● Delay (RTT) for Packet 1 = T1 – t1 ● Delay (RTT) for Packet 2 = T4 – t2 (note that we didn’t use tr2 here) ● Delay (RTT) for Packet 3 = T4 – t3 ● Delay (RTT) for Packet 4 = T4 – t4 *note: we only resend packet 2 and not the ones (packet 3 ) that have been sent but unacknowledged ● Clarification for triple ACK After receiving 1 original ACK and then 3 duplicate ACKs (4 ACKs in total) for a packet, we “fast” retransmit the packet. For example, if the window size is 5 and packet 2 is lost, the acknowledgement # Received will be 1,1,1,1. The first 1 matched for the packet 1, and the rest 1 is indicating packet 2 is lost.