Realmente no estoy seguro, pero esto parece una referencia legítima
Presunción:
$ grep -A 2 initcwnd `find /usr/src/linux/include -type f -iname '*h'`
fuera:
/usr/src/linux/include/net/tcp.h:
/* TCP initial congestion window as per draft-hkchu-tcpm-initcwnd-01 */
#define TCP_INIT_CWND 10
Bueno, no puedo decir que esté 100 % seguro de que esta debería ser la respuesta, pero, como sucede a menudo, ss
es la buena opción para revelar información, por ej. ej.:
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
es típico para deshacerse de la molesta resolución de DNS, -l
es que nos atenemos a los enchufes de escucha solamente y -i
(la clave) es "Mostrar información TCP interna". Como puede verse, se muestran tanto el algoritmo de congestión como el cwnd predeterminado.
Si te entendí bien, estás buscando el valor inicial del snd_cwnd
conjunto de parámetros cuando se inicializa un socket TCP.
Parece comenzar con el kernel de Linux 2.6.39
, una macro TCP_INIT_CWND
se ha introducido en linux/include/net/tcp.h que rellena el valor de snd_cwnd
al inicializar un socket TCP.
Sé dónde está este código en el kernel para IPv4
, y desafortunadamente no parece usar ninguna macro para completar el valor de los núcleos anteriores a 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;
....
....
....
}
Existe un código de inicio similar para IPv6
también dentro de tcp_v6_init_sock()
función en net/ipv6/tcp_ipv6.c