From owner-freebsd-net@FreeBSD.ORG Wed Aug 14 11:47:22 2013 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id E6F2A376; Wed, 14 Aug 2013 11:47:22 +0000 (UTC) (envelope-from lev@FreeBSD.org) Received: from onlyone.friendlyhosting.spb.ru (onlyone.friendlyhosting.spb.ru [46.4.40.135]) by mx1.freebsd.org (Postfix) with ESMTP id A53432345; Wed, 14 Aug 2013 11:47:21 +0000 (UTC) Received: from lion.home.serebryakov.spb.ru (unknown [IPv6:2001:470:923f:1:e82a:4e48:57ff:b6e3]) (Authenticated sender: lev@serebryakov.spb.ru) by onlyone.friendlyhosting.spb.ru (Postfix) with ESMTPSA id C25744AC1C; Wed, 14 Aug 2013 15:47:19 +0400 (MSK) Date: Wed, 14 Aug 2013 15:47:13 +0400 From: Lev Serebryakov Organization: FreeBSD X-Priority: 3 (Normal) Message-ID: <587579055.20130814154713@serebryakov.spb.ru> To: Luigi Rizzo Subject: Re: it's the output, not ack coalescing (Re: TSO and FreeBSD vs Linux) In-Reply-To: <20130814102109.GA63246@onelab2.iet.unipi.it> References: <520A6D07.5080106@freebsd.org> <520AFBE8.1090109@freebsd.org> <520B24A0.4000706@freebsd.org> <520B3056.1000804@freebsd.org> <20130814102109.GA63246@onelab2.iet.unipi.it> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: Lawrence Stewart , FreeBSD Net X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: lev@FreeBSD.org List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 11:47:23 -0000 Hello, Luigi. You wrote 14 =D0=B0=D0=B2=D0=B3=D1=83=D1=81=D1=82=D0=B0 2013 =D0=B3., 14:21= :09: LR> Then the problem remains that we should keep a copy of route and LR> arp information in the socket instead of redoing the lookups on LR> every single transmission, as they consume some 25% of the time of LR> a sendto(), and probably even more when it comes to large tcp LR> segments, sendfile() and the like. And we should invalidate this info on ARP/route changes, or connection will be lost in such cases, am I right?.. So, on each such event code should look into all sockets and check, if routing/ARP information is still valid for them. Or we should store lists of sockets in routing and ARP tables... I don't know, what is worse. --=20 // Black Lion AKA Lev Serebryakov