From owner-freebsd-net@FreeBSD.ORG Wed Jul 23 07:49:53 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 143E51065676 for ; Wed, 23 Jul 2008 07:49:53 +0000 (UTC) (envelope-from damien.deville@netasq.com) Received: from netasq.netasq.com (netasq.netasq.com [213.30.137.178]) by mx1.freebsd.org (Postfix) with ESMTP id D52ED8FC44 for ; Wed, 23 Jul 2008 07:49:52 +0000 (UTC) (envelope-from damien.deville@netasq.com) Received: from barbar.netasq.com (unknown [10.0.0.126]) by netasq.netasq.com (Postfix) with ESMTP id 79CB421E06; Wed, 23 Jul 2008 09:32:34 +0200 (CEST) Message-ID: <4886DE83.5080100@netasq.com> Date: Wed, 23 Jul 2008 09:32:19 +0200 From: Damien Deville User-Agent: Thunderbird 2.0.0.14 (X11/20080610) MIME-Version: 1.0 To: Oleksandr Samoylyk References: <4886474D.5030300@samoylyk.sumy.ua> <48864B6C.9030404@samoylyk.sumy.ua> In-Reply-To: <48864B6C.9030404@samoylyk.sumy.ua> Content-Type: text/plain; charset=KOI8-U; format=flowed Content-Transfer-Encoding: 8bit Cc: freebsd-net@freebsd.org Subject: Re: proxy-arp & mpd X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: damien.deville@netasq.com List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Jul 2008 07:49:53 -0000 Hi, we are facing a similar issue with arp blocked in sbwait state. Here is a way to reproduce it: - add a bunch of arp entries in your arp table (best is around 255 entries). - launch two arp -a -d in parallel ('arp -a -d & arp -a -d &') Both processes will be in concurence to access the table. One process will successfully nuke all entries of the arp table, the other one will be blocked in rtmsg function on the read while executing a RTM_GET or RTM_DELETE command after some time. By instrumenting arp we noticed that it happened when both process access to the same entry. Here is a backtrace of the blocked arp on FreeBSD 7.0 (gdb) bt #0 0x28158f81 in read () from /lib/libc.so.7 #1 0x08049091 in rtmsg () #2 0x08049b44 in delete () #3 0x0804a1fd in nuke_entry () #4 0x08049a77 in search () #5 0x08049e75 in main () I can reproduce this on FreeBSD 4.11, 6.2 and 6.3, and FreeBSD 7.0. Damien Deville Oleksandr Samoylyk wrote: > Oleksandr Samoylyk пишет: >> Dear Community, >> >> I'm using proxy-arp for public ips for our clients in order to give >> them internet access using pptp-tunnels with mpd: >> >> # cat /usr/local/etc/mpd5/mpd.conf | grep arp >> set iface enable proxy-arp >> >> # uname -a >> FreeBSD xxx.xxxxxx.xxx 7.0-STABLE FreeBSD 7.0-STABLE #0: Tue May 13 >> 06:54:41 EEST 2008 root@xxx.xxxxxx.xxx:/usr/obj/usr/src/sys/XXX >> amd64 >> >> Sometimes I see hanged arps: >> >> root 72148 0.0 0.0 2564 788 ?? S 9:33PM 0:20.69 >> /usr/sbin/arp -S xx.xxx.xxx.xx 0:e:c:70:c6:4c pub >> >> where xx.xxx.xxx.xx is public ip address > > as well: > > root 58831 0.0 0.0 2564 788 ?? S 11:58PM 0:01.04 > /usr/sbin/arp -d xx.xxx.xxx.xx > > > >> In such moments clients can't connect to pptp-server (e.g., Error 800 >> for Windowz clients). >> >> Why does that happen? How can I prevent such situations? >> >> >> Thank you! >> > > -- Damien Deville R&D engineer damien.deville@netasq.com http://www.netasq.com