Alterando o tamanho da janela TCP em um servidor Ubuntu

3

Existe alguma maneira de começar com um tamanho de janela TCP maior que o padrão em um servidor ubuntu?

Vejo que existem alguns parâmetros em /proc/sys/net/ipv4/ , por exemplo:

/proc/sys/net/ipv4/tcp_window_scaling (which is 1)

/proc/sys/net/ipv4/tcp_adv_win_scale (2)

/proc/sys/net/ipv4/tcp_slow_start_after_idle (1)

/proc/sys/net/ipv4/tcp_window_scaling (1)
    
por abcde123483 01.03.2012 / 18:10

2 respostas

4

Como o TCP é full duplex, há duas janelas iniciais de congestionamento (IW), uma para envio e outra para recebimento. Eles podem ser configurados com o comando route, no entanto eu encontrei em 2.6.32 que não funcionou depois de olhar para as capturas de pacotes. Na minha área de trabalho (3.0.0), o IW é mais alto (10 pacotes) como padrão, então eu não testei isso na versão posterior, já que é isso que eu queria que o aumento fosse.

Em teoria, eles podem ser configurados com ip route com algo como:

sudo ip route add <DEST IP> via <GATEWAY IP> proto static initcwnd 10

Para o IW de envio. Para o recebimento do IW, altere initcwnd para initrwnd .

Se isso estiver funcionando, acredito que o tamanho da nova janela seja refletido no pacote SYN ou SYN / ACK (dependendo da janela de envio / recebimento) do handshake TCP. . Como a janela de congestionamento é interna e diferente da janela no cabeçalho TCP, a única maneira de informá-la é testar em uma conexão de latência mais alta e ver se mais pacotes iniciais são enviados. Eu acabei de ver isso recentemente, então como um aviso estou 100% positivo sobre tudo isso.

Depois disso, o tamanho da janela deve ser escalonado com os parâmetros padrão do Linux, sem causar problemas em termos de limite de janela. Você provavelmente não vai querer mexer com isso, a menos que tenha uma captura mostrando que você está frequentemente correndo em situações nas quais você está atado à janela (o destinatário enviará uma grande quantidade de pacotes com Win 0 se esse for o caso).

    
por 01.03.2012 / 20:07
2

Existe net.ipv4.tcp_wmem e net.ipv4.tcp_rmem . Você pode ler os valores dessas variáveis com sysctl -n e também defini-las com sysctl .

Uma boa introdução é aqui .

    
por 01.03.2012 / 19:57

Tags