TCP Início lento e controle de congestionamento e como modificá-los

2

Estou tentando mudar o comportamento do protocolo tcp slow start em uma caixa do CentOS5 (uname -r = > 2.6.18-238.12.1.el5). Eu li que o seguinte comando irá mudar meu icwnd para 8:

ip route change default via 1.2.3.4 dev eth1 initcwnd 8
echo "4094 $((8*16384)) 4194304" > /proc/sys/net/ipv4/tcp_wmem

(Nota: A parte tcp_wmem é mais ou menos um palpite da minha parte, eu acho que o número exato não é muito importante, desde que seja grande o suficiente)

No entanto, por si só, isso não parece ter nenhum efeito. Em vez de inicialmente enviar 8 segmentos, ele apenas envia 3. Depois de ler mais, descobri que o tcp slow start funciona em paralelo com o controle de congestionamento, de forma que, se ssthresh < cwnd, o protocolo de controle de congestionamento é usado, caso contrário, o início lento é usado (pelo menos, este foi o meu entendimento). Eu fiz o seguinte para descobrir qual o meu ssthresh padrão foi definido para:

[root@host ~]# cat /proc/sys/net/ipv4/tcp_congestion_control 
bic
[root@host ~]# cat /sys/module/tcp_bic/parameters/initial_ssthresh 
0

Vendo que ssthresh é 0, eu gostaria de aumentá-lo para que seja maior que icwnd, o que faria com que o kernel usasse slow start, o que usaria o valor padrão de 8 windows. Então fiz o seguinte:

[root@host ~]# echo 13140 > /sys/module/tcp_bic/parameters/initial_ssthresh

Mas ainda não há mudanças no comportamento. Alguém sabe o que estou fazendo errado?

(Estou reiniciando o processo do apache que estou usando para testar isso após cada alteração). EDIT: Eu também estou fazendo ip flush cache flush entre as alterações, bem

    
por Mediocre Gopher 06.07.2011 / 19:31

2 respostas

2

Eu estava lendo um pouco sobre o assunto e acredito que a versão do kernel 2.6.33 é necessária para definir um cwnd customizado. Achei mencionado nesta postagem do blog: link

If TCP slow start is, well, slow, then couldn't we just make it faster? Turns out, until very recently the Linux TCP stack itself was hardcoded to start with the congestion window (cwnd) of just 3 or 4 packets, which amounts to about 4kb (~1360 bytes per packet).

Também há alguma discussão sobre isso sendo adicionado ao kernel aqui: link

Não consigo encontrar nenhuma boa informação sobre como configurar isso, mas é isso que eu encontrei hoje ...

    
por 21.10.2011 / 20:02
0

Você terá que atualizar para o centos6.2.

De acordo com o Dr. rhel:

TCP initial congestion window default

In Red Hat Enterprise Linux 6.2, the TCP initial congestion window default is now set to 10, according to RFC 5681. Additionally, the initial-window code common to TCP and CCID-2 has been consolidated.

    
por 19.06.2013 / 14:16