Sabemos que o modo como o TCP funciona (básico) é começando com a fase de início lento seguido por um aumento linear da janela de congestionamento (CWD). O CWD é ajustado de acordo com o status da rede. Então, quando iniciamos uma conexão, levará algum tempo para que a conexão atinja um CWD estável, dependendo da condição da rede.
Assim, por essa lógica, uma conexão TCP tentará preencher todo o b / w disponível de um link. Portanto, se houver várias conexões TCP, cada uma ajustará seu CWD para que haja um mínimo de congestionamento.
Então, suponha que eu tenha um link de 100 Mbps (a topologia é dada abaixo)
Eu tenho um aplicativo que está enviando tráfego UDP
Eu tenho outro aplicativo iperf
que pode iniciar conexões TCP paralelas ao longo desse mesmo link
[h1] ---- 100 Mbps ---- [h2]
h1 (UDP + iperf client)
h2 (UDP + iperf server)
Estou fazendo um experimento da seguinte maneira
- 1 UDP + 1 TCP
- 1 UDP + 2 TCP
- 1 UDP + 4 TCP
- 1 UDP + 8 TCP e assim por diante
Meu achado diz que o throughput de 1 conexão TCP é menor que o throughput de 8 conexões TCP combinadas (Exp 1 vs Exp 4). Deve-se ter em mente que o rendimento individual das 8 conexões é muito menor (o que é óbvio).
Então minha pergunta é: por que a única conexão TCP não utiliza o total de b / w que o 8 TCP pode fazer juntos?
iperf
, mas adivinhando: 8 conexões TCP fazem com que mais pacotes UDP sejam descartados do que 1 conexão TCP, então o UDP recebe menos largura de banda, então a largura de banda total usada de 8 conexões TCP é maior. A primeira coisa que faço é medir quantos pacotes UDP são descartados em todos os casos.