1. (6 points)

a.

Sender to receiver = o + l + sz / bw + o Receiver to Sender = o + l + ack / bw + o
RTT = 4 * o + 2 * l + (sz + ack) / bw

For sending a single packet, overhead must be incurred at both the
sender and the receiver.


b.

In one RTT, we can send sz bytes. So, the realized throughput is:
RT = sz / (4 * o + 2 * l + (sz + ack) / bw)


c.

There are a number of ways to calculate it. A rough estimate is for the
minimum window size necessary is ceiling[RTT * bw / sz]. Since in
actuality, the sender spends "o + sz/bw" to send each packet, a closer
estimate is ceiling[RTT / (o + sz/bw)]. You could factor in the time it
takes to receive and process the acks, but this would unnecessarily
limit the throughput during the startup stage (before any acks are
received).


d.

This questions turned out to be more complicated than we intended. A
simplified model for computing this would assumiethat window_size
number of packets are send during a RTT, giving

throughput = window_size * sz / RTT

Or you could decide to include in the time it takes to send a packet
o + sz/bw for sending it and o + ack/bw for handling the corresponding
ack, thus giving

throughput = sz / (2 * o + (sz + ack)/bw)

A more complicated analysis might study different stages of the
transmission (startup, steady state, finish); we weren't looking for
that level of detail. We were lax in marking this question.


2. [Silberschatz 16.4] (4 points)
a. link failure
site failure
message loss


b. Site failure can occur in a single site system as well


3. You could not differentiate between the three situations (see
Siberschatz 16.4 again). This means that if a site becomes out of
contact, even if it remains up, recovery must be performed to ensure
consistent global state once communication is restored.