Obtenha o valor atual / padrão do TCP initcwnd no Linux

9

Eu posso manipular esse valor com:

ip route change ... initcwnd 10

e depois tenha um feedback com:

ip route show

Mas e o valor padrão antes de qualquer modificação? Existe uma maneira de consultar esse valor no sistema?

Como alternativa, você pode fornecer uma referência válida que mostre o valor codificado padrão para cada versão do kernel?

cYrus
fonte

Respostas:

6

Bem, não posso dizer que tenho 100% de certeza de que essa deve ser a resposta, mas, como costuma acontecer, ssé a boa opção para obter algumas informações reveladas, por exemplo:

 ss -nli|fgrep cwnd
     westwood rto:1000 mss:536 cwnd:10
     westwood rto:1000 mss:536 cwnd:10
     westwood rto:1000 mss:536 cwnd:10

-né comum nos livrarmos da resolução irritante de DNS, -lapenas nos soquetes de escuta e -i(a chave) é "Mostrar informações internas de TCP". Como pode ser visto, o algoritmo de congestionamento e o cwnd padrão são mostrados.

poige
fonte
2

Se eu entendi corretamente, você está procurando o valor inicial do snd_cwndconjunto de parâmetros quando um soquete TCP é inicializado.

Parece que começando com o kernel do linux 2.6.39, uma macro TCP_INIT_CWNDfoi introduzida no linux / include / net / tcp.h que preenche o valor snd_cwndao inicializar um soquete TCP.

Eu sei onde esse código está no kernel IPv4e, infelizmente, ele não parece usar nenhuma macro para preencher o valor de kernels anteriores a2.6.39

/* net/ipv4/tcp_ipv4.c from 2.6.37 kernel */
static int tcp_v4_init_sock(struct sock *sk)
{
        struct inet_connection_sock *icsk = inet_csk(sk);
        struct tcp_sock *tp = tcp_sk(sk);

        ....
        ....
        ....

        /* So many TCP implementations out there (incorrectly) count the
         * initial SYN frame in their delayed-ACK and congestion control
         * algorithms that we must have the following bandaid to talk
         * efficiently to them.  -DaveM
         */
        tp->snd_cwnd = 2;

        ....
        ....
        ....
}

Existe um código de inicialização semelhante para a função IPv6internatcp_v6_init_sock()net/ipv6/tcp_ipv6.c

Tuxdude
fonte