GNU/Linux >> Znalost Linux >  >> Linux

Získejte aktuální/výchozí hodnotu TCP initcwnd v Linuxu

Opravdu to nevím jistě, ale vypadá to jako legitimní reference

Tušení:

$ grep -A 2 initcwnd `find /usr/src/linux/include -type f -iname '*h'`

ven:

/usr/src/linux/include/net/tcp.h:
/* TCP initial congestion window as per draft-hkchu-tcpm-initcwnd-01 */
#define TCP_INIT_CWND          10

No, nemůžu říct, že jsem si 100% jistý, že tohle by měla být odpověď, ale jak to často přichází, ss je dobrou volbou pro odhalení některých informací, např. např.:

 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 je typické zbavit se nepříjemného překládání DNS, -l držíme se pouze naslouchacích zásuvek a -i (klíč) je "Zobrazit interní informace TCP". Jak je vidět, je zobrazen jak algoritmus přetížení, tak výchozí cwnd.


Pokud jsem vám správně rozuměl, hledáte počáteční hodnotu snd_cwnd nastaven při inicializaci soketu TCP.

Vypadá to, že začíná linuxovým jádrem 2.6.39 , makro TCP_INIT_CWND byl zaveden v linux/include/net/tcp.h, který naplňuje hodnotu snd_cwnd při inicializaci soketu TCP.

Vím, kde je tento kód v jádře pro IPv4 a bohužel se zdá, že nepoužívá žádné makro k naplnění hodnoty pro jádra starší než 2.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;

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

Podobný init kód existuje pro IPv6 také uvnitř tcp_v6_init_sock() funkce v net/ipv6/tcp_ipv6.c


Linux
  1. Jaká je aktuální úroveň běhu systému Linux?

  2. Linux – Proč Linux Utils nepoužívají systémové volání k získání aktuálního času?

  3. Linux – přenosný způsob, jak získat výchozí zdrojovou adresu trasy?

  1. Linux – získávání souborů pro aktuální datum v Linuxu?

  2. Jak získat informace o aktuální konfiguraci Grub / Boot?

  3. Získejte aktuální čas v sekundách od epochy na Linuxu, Bash

  1. Jaký je aktuální zdrojový kód jádra Linuxu?

  2. Jak získat cestu k aktuálnímu souboru (pwd) v Linuxu z C?

  3. Získejte aktuální uživatelské jméno v Julia (Linux)