instruction
copa is a delayed based cc. By measuring a queueing delay, it computes a expect transmit rate. Comparing the actual and expect rate, copa adjusts the cwnd by AIAD. It proves that the expect rate is an unique Nash equilibrium.
detail
utility function:
To maximize utility function, the target throughput:
where $d_q$ is the mean per-packet queueing delay, $1/\delta$ is in units of MTU-sized packets(?????).
RTTstanding is the smallest RTT in a small time window, $\tau$. $\tau = srtt/2$, srtt is the standard smoothed(EWMA) RTT estimate.
RTTmin is the smallest RTT over a long period of time, smalled of 10s or from the start.
On each ACK arrival:
- update $d_q$ and srtt
- $\lambda_t = 1/(\delta \cdot d_q)$
- $\lambda = cwnd / RTTstanding$, if $\lambda \le \lambda_t$, $cwnd = cwnd+v/(\delta \cdot cwnd)$, else $cwnd = cwnd - v/(\delta \cdot cwnd)$. In a RTT, the change in RTT is $\approx v/\delta $ packets.
- $v$ is initailized to 1. On each window, the sender compares the current cwnd with that at the start of the window to set the direction. After the same direction in 3 RTT, $v$ starts to double if the direction is the same with before. Otherwise it will be reset to 1.
Slow start: double cwnd each RTT until $\lambda$ exceeds $\lambda_t$.
Competing with loss-based cc algo: according to the actual queueing delay to switch the mode between default mode where $\delta = 0.5$ and competitive mode where $\delta$ is dynamicly adjusted.