[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20080814.150055.201449155.davem@davemloft.net>
Date: Thu, 14 Aug 2008 15:00:55 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: kaber@...sh.net
Cc: alex.williamson@...com, akpm@...ux-foundation.org,
buytenh@...vell.com, netdev@...r.kernel.org,
bugme-daemon@...zilla.kernel.org
Subject: Re: [Bugme-new] [Bug 11316] New: severe performance regression for
iptables nat routing
From: Patrick McHardy <kaber@...sh.net>
Date: Thu, 14 Aug 2008 13:04:25 +0200
> David Miller wrote:
> > Patrick I wonder if there a case where iptables NAT will COW the packet
> > when it really doesn't need to.
>
> I don't think so, its using skb_make_writable everywhere, which checks
> for skb_clone_writable, which should usually avoid COWing local TCP
> packets. It would also be unlikely to have that much of a performance
> impact (1MB/s -> 34kb/s).
I think he is NAT'ing locally generated traffic, look at the bugzilla
entry.
He has two cases of the same wget transfer, one is direct and another
uses a 127.0.0.1:XXXX URL that does the transfer over an SSH tunnel.
Normally they go roughly at the same rate.
Then he adds iptables NAT entries that redirect the first transfer
case over the SSH tunnel addr/port. And it is this case that degrades
in performance with the GSO changeset.
So it is locally generated TCP traffic, NAT'd to another port and IP
address (specifically, redirected to 127.0.0.1:8888).
Perhaps the problem has something to do with the fact that as far as
TCP is concerned, the destination device can do SG and CSUM and thus
GSO. But then iptables NATs this traffic to loopback. I think that
is what leads to some kind of slowpath.
--
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