Eu não sei muito sobre o Mac, mas ... inspeção da saída de
sysctl -a | grep net.inet.tcp
mostrou que está ciente da existência de algoritmos de controle de congestionamento:
net.inet.tcp.rfc1323: 1
habilita claramente a implementação da RFC1323, a diretiva IEEE sobre melhorias no TCP. No entanto, não há campo relacionado à escolha do CCA, que por sua vez sugere que o LEDBAT é a única opção disponível.
No Linux, em vez disso, os algoritmos de controle de congestionamento disponíveis são armazenados aqui:
$ ls /lib/modules/'uname -r'/kernel/net/ipv4/
ah4.ko ip_gre.ko tcp_bic.ko tcp_illinois.ko tcp_veno.ko xfrm4_mode_beet.ko
esp4.ko ipip.ko tcp_diag.ko tcp_lp.ko tcp_westwood.ko xfrm4_mode_transport.ko
gre.ko ip_tunnel.ko tcp_highspeed.ko tcp_probe.ko tcp_yeah.ko xfrm4_mode_tunnel.ko
inet_diag.ko ip_vti.ko tcp_htcp.ko tcp_scalable.ko tunnel4.ko xfrm4_tunnel.ko
ipcomp.ko netfilter tcp_hybla.ko tcp_vegas.ko udp_diag.ko
Para usar um, basta modificar o módulo relevante e modificar / proc / sys da seguinte forma:
echo "westwood" > /proc/sys/net/ipv4/tcp_congestion_control
A Wikipedia tem uma página informativa agradável e cristalina sobre algoritmos de controle de congestionamento. Em particular, o CCA padrão do Linux,
# sysctl -a | grep net.ipv4 | grep congestion
net.ipv4.tcp_allowed_congestion_control = cubic reno
net.ipv4.tcp_available_congestion_control = cubic reno
net.ipv4.tcp_congestion_control = cubic
O TCP-Cubic, é bem descrito aqui .
Em relação à sua pergunta, afirma-se que:
[CUBIC] ... is a less aggressive and more systematic derivative of BIC TCP, in which the window is a cubic function of time since the last congestion event, with the inflection point set to the window prior to the event.
Um ponto de inflexão é onde as curvas mudam o sinal de curvatura, isto é, vai de côncavo a convexo, ou vice-versa. Isso significa que, próximo a este ponto, a curva é quase exatamente linear , o primeiro termo de correção desaparecendo como descrito acima.
Assim, não é verdade que
TCP's congestion control uses ... multiplicative decrease when adjusting sliding window size
Isso depende do CCA. Além disso, o padrão no Linux, o TCP-Cubic, é efetivamente linear próximo ao último evento de congestionamento.