lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1329410272.2601.10.camel@bwh-desktop>
Date:	Thu, 16 Feb 2012 16:37:52 +0000
From:	Ben Hutchings <bhutchings@...arflare.com>
To:	Eric Dumazet <eric.dumazet@...il.com>
CC:	Neal Cardwell <ncardwell@...gle.com>,
	Netdev <netdev@...r.kernel.org>, <alekcejk@...glemail.com>
Subject: Re: limited network bandwidth with 3.2.x kernels

On Thu, 2012-02-16 at 16:09 +0100, Eric Dumazet wrote:
> Le jeudi 16 février 2012 à 13:51 +0000, Ben Hutchings a écrit :
> 
> > I'm aware of this problem and I believe it exists with most
> > implementations of LRO.
> > 
> > The out-of-tree version of the sfc driver has its own soft-LRO
> > implementation (SSR) which does some limited connection tracking to
> > detect slow start and disable aggregation temporarily.  I've been
> > meaning to look into enhancing GRO to match SSR, but haven't got round
> > to it yet.
> 
> 
> Not sure why we cant change tcp_grow_window() to take into account
> number of segments in skb ?

Maybe it's as simple as that.  I don't pretend to understand the details
of TCP flow control.

I checked with David Riddoch who originally implemented SSR.  His
concern was that each aggregated packet received results in at most one
ACK and some senders then won't grow their congestion window as fast as
they would if we were ACKing each wire-level packet (or every 2
packets).  But since current Linux *as a sender* counts the ACKed bytes
and not the packets, I don't think it's relevant to this particular
problem.

Ben.

> It currently increments rcv_ssthresh by a fixed amount (2 * advmss)
> 
>         if (tcp_win_from_space(skb->truesize) <= skb->len)
>                 incr = 2 * tp->advmss;
>         else
>                 incr = __tcp_grow_window(sk, skb);
>         if (incr) {
>                 tp->rcv_ssthresh = min(tp->rcv_ssthresh + incr,
>                                        tp->window_clamp);
>                 inet_csk(sk)->icsk_ack.quick |= 1;
>                 }
> 
> 
> 

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ