Skip to content
TCP Congestion Control

TCP Congestion Control

import matplotlib.pyplot as plt
import numpy as np

def simulate(losses):
    time = len(losses)
    cwnd = np.zeros(time, dtype=np.float64)
    cwnd[0] = 1
    sst = np.inf
    for i in range(1, time):
        if losses[i] == 1:
            cwnd[i] = cwnd[i-1] * 0.5
            sst = cwnd[i]
        elif losses[i] == 2:
            sst = cwnd[i-1] * 0.5
            cwnd[i] = 1
        elif cwnd[i-1] < sst:
            cwnd[i] = cwnd[i-1] * 2
        else:
            cwnd[i] = cwnd[i-1] + 1
    return cwnd

if __name__ == "__main__":
    losses = np.zeros(100)
    losses[10] = 1
    losses[20] = 2
    losses[30] = 1
    losses[40] = 1
    res = simulate(losses)
    plt.plot(res)
    plt.show()