Linux'ta geçerli / varsayılan TCP initcwnd değerini alın


9

Ben böyle bir değeri manipüle edebilirsiniz:

ip route change ... initcwnd 10

ve ardından aşağıdakilerle ilgili bir geri bildirim alın:

ip route show

Peki, herhangi bir değişiklikten önce varsayılan değer ne olacak? Bu değeri sistemden sorgulamanın bir yolu var mı?

Alternatif olarak, her çekirdek sürümü için varsayılan sabit kodlanmış değeri gösteren geçerli bir başvuru sağlayabilir misiniz ?

Yanıtlar:



6

Eh, bunun cevap olması gerektiğinden% 100 emin olduğumu söyleyemem, buuut, sık sık geldiği gibi, ssbazı bilgileri ortaya çıkarmak için iyi bir seçimdir, örneğin:

 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

-ncan sıkıcı DNS çözümlemesinden kurtulmak için tipiktir, -lyalnızca dinleme soketlerine bağlı kalmamız ve -i(anahtar) "Dahili TCP bilgilerini göster" dir. Görüldüğü gibi, hem tıkanıklık algoritması hem de varsayılan cwnd gösterilir.


2

Sizi doğru anladıysam, snd_cwndbir TCP soketi başlatıldığında parametre kümesinin başlangıç ​​değerini arıyorsunuz .

Linux çekirdeğinden başlayarak , linux / include / net / tcp.h dosyasına bir TCP soketi başlatılırken değerini dolduran 2.6.39bir makro eklendi .TCP_INIT_CWNDsnd_cwnd

Bu kod için çekirdekte nerede olduğunu biliyorum IPv4ve ne yazık ki daha eski çekirdekler için değeri doldurmak için herhangi bir makro kullanmak gibi görünmüyor2.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;

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

Benzer bir başlatma kodu için var IPv6içinde de tcp_v6_init_sock()işlevnet/ipv6/tcp_ipv6.c

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.