Obtenez la valeur actuelle / par défaut de TCP initcwnd sous Linux


9

Je peux manipuler une telle valeur avec:

ip route change ... initcwnd 10

puis avoir un retour avec:

ip route show

Mais qu'en est-il de la valeur par défaut avant toute modification? Existe-t-il un moyen d'interroger cette valeur à partir du système?

Sinon, pouvez-vous fournir une référence valide qui montre la valeur codée en dur par défaut pour chaque version du noyau?

Réponses:



6

Eh bien, je ne peux pas dire que je suis sûr à 100% que cela devrait être la réponse, buuut, comme cela arrive souvent, ssest le bon choix pour obtenir des informations révélées, par exemple:

 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

-nest typique pour se débarrasser de la résolution DNS ennuyeuse, -lest que nous nous en tenons uniquement aux sockets d'écoute et -i(la clé) est "Afficher les informations TCP internes". Comme on peut le voir, l'algorithme de congestion et le cwnd par défaut sont affichés.


2

Si je vous ai bien compris, vous recherchez la valeur initiale du snd_cwndjeu de paramètres lors de l'initialisation d'un socket TCP.

Cela ressemble à partir du noyau linux 2.6.39, une macro TCP_INIT_CWNDa été introduite dans linux / include / net / tcp.h qui remplit la valeur de snd_cwndlors de l'initialisation d'un socket TCP.

Je sais où se trouve ce code dans le noyau IPv4et, malheureusement, il ne semble pas utiliser de macro pour remplir la valeur des noyaux plus anciens que2.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;

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

Un code init similaire existe IPv6aussi bien pour la tcp_v6_init_sock()fonction interne denet/ipv6/tcp_ipv6.c

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.