Por que não vejo quedas com fluxos TCP no linux

2

Eu queria observar a janela de congestionamento de um fluxo TCP, então para isso eu tenho dois nós (usando namespaces linux) conectados uns aos outros através de pares veth e uma ponte.

Para limitar bandwitdh a 10mbps eu uso um qdisc htb em cada interface com um tamanho de fila de 1000 pacotes.

Em seguida, defino uma sessão iperf entre eles:

  1. Você pode observar que a taxa de bits se adapta à largura de banda que o qdisc irá moldar para nós.

  2. No entanto, a verificação do arquivo pcap e dos contadores de quedas das filas também mostra que nunca há quedas ou como retransmissões de efeito

Se eu iniciar um segundo fluxo, ambos receberão uma parcela justa de 5mbps.

O que está acontecendo aqui? Como o TCP está adaptando o tamanho do fluxo se o controle de congestionamento não estiver recebendo sinais? Estou faltando alguma coisa?

    
por edgarstack 15.07.2017 / 22:01

1 resposta

0

Uau, acho que você pode estar vendo o efeito do recurso TCP Small Queues. Em uma única máquina, o TCP Small Queues limitará os pacotes enfileirados em qdiscs e buffers de dispositivo a um padrão de 128 KB.

O TCP estaria acelerando quando esse limite for atingido, sem realmente transbordar quaisquer buffers.

Isso sugere que, para obter os drops, você deseja conectar 3 VMs (ou seja, separar os kernels emulados) juntos - remetente, "roteador" e receptor.

Lembro-me vagamente que pode haver motivos para usar máquinas / VMs separadas ao usar netem para simular atraso ou largura de banda limitada também. Parece que esta é uma boa prática em geral.

    
por 16.07.2017 / 09:55

Tags