Date: Wed, 18 Apr 2001 08:33:18 +0200 (CEST) From: Luigi Rizzo <luigi@info.iet.unipi.it> To: Andrei Gurtov <gurtov@cs.Helsinki.FI> Cc: freebsd-net@FreeBSD.ORG, Reiner.Ludwig@Ericsson.com Subject: Re: initial congestion window Message-ID: <200104180633.IAA41452@info.iet.unipi.it> In-Reply-To: <Pine.LNX.4.30.0104171618460.5636-100000@saviletto.cs.Helsinki.FI> from Andrei Gurtov at "Apr 17, 2001 06:04:38 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, yes, FreeBSD is blasting the full socket buffer onto the net when the destination is "local". I think it was introduced when the T/TCP changes were committed, it kind-of makes sense with T/TCP, but other than that it is a very bad idea to have it on by default. For one, in many nets including a 100/10 switch, or slow receivers, it tends to cause an immediate loss on the first window of data because of the overload at the switch or the receiver. cheers luigi > > Hi folks, > > At the last IETF meeting there were some debates around FreeBSD using a > 16-KB initial congestion window in TCP when destination IP address is from > the local subnet. Does anybody remember when it was introduced into the > code and what kind of ideas were behind? > > Some reasons were given why it may not be a good idea: > > -the benefit of not having slow start on LANs is very small, i.e. some > milliseconds > > -it is not a conformant TCP feature, i.e. not allowed by TCP Congestion > Control (RFC2581) and is explicitly given in Known TCP Implementation > Problems (RFC2525) "2.1 No initial slow start" and "2.3 Uninitialized > CWND" > > -people may have the same subnet mask also over a slow PPP link. In this > case the effect of the huge initial window is quite bad, see for example > http://www.cs.Helsinki.FI/u/gurtov/papers/effect_of_delays_on_tcp_performance.pdf > > -in case of congestion on Ethernet, packets queues build up at the > network interfaces in hosts and agressive TCP start-up behaviour can > further increase congestion losses > > What are your thoughts on this? > > Andrei > > tcp_output.c: > > int ss_fltsz = 1; > SYSCTL_INT(_net_inet_tcp, OID_AUTO, slowstart_flightsize, CTLFLAG_RW, > &ss_fltsz, 1, "Slow start flight size"); > > int ss_fltsz_local = TCP_MAXWIN; /* something large */ > SYSCTL_INT(_net_inet_tcp, OID_AUTO, local_slowstart_flightsize, > CTLFLAG_RW, > &ss_fltsz_local, 1, "Slow start flight size for local networks"); > > [...] > if ( > in_localaddr(tp->t_inpcb->inp_faddr) > ) > tp->snd_cwnd = tp->t_maxseg * ss_fltsz_local; > else > tp->snd_cwnd = tp->t_maxseg * ss_fltsz; > > > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-net" in the body of the message > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200104180633.IAA41452>