Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 Dec 2008 22:20:40 +0000 (GMT)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Yony Yossef <yonyossef.lists@gmail.com>
Cc:        eitans@mellanox.co.il, freebsd-net@freebsd.org, Yehonatan Yossef <yoniy@mellanox.co.il>, liranl@mellanox.co.il, yevgenyp@mellanox.co.il
Subject:   Re: net.inet.udp.blackhole issue
Message-ID:  <alpine.BSF.1.10.0812292217040.9438@fledge.watson.org>
In-Reply-To: <20def4870812240600n6edbcad7k2100a0ccbe49f0dd@mail.gmail.com>
References:  <20def4870812240600n6edbcad7k2100a0ccbe49f0dd@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On Wed, 24 Dec 2008, Yony Yossef wrote:

> I'm facing lots of UDP "Connection refused" errors while running multistream 
> iperf test. Analyzing it with wireshark showed several "ICMP Port 
> Unreachable" problems.
>
> I've overriden it with "sysctl net.inet.udp.blackhole=1", but I'm not sure 
> this is the correct thing to do, I feel like I've sweeped the problem under 
> the carpet.
>
> PS - I see similar failures with TCP bidirectional iperf test, it can also 
> be overriden by "sysctl net.inet.tcp.blackhole=1".
>
> My question is - can it be a NIC problem? If so, how can a driver problem 
> cause an iperf UDP socket to be in a "non listening state"?

Hi Yony:

This is fairly unlikely to be a NIC problem, although anything is possible in 
software.  I'm not familiar with iperf, but generally speaking ICMP port 
unreachable is a result of packets arriving at a closed socket; 
net.inet.udp.blackhole suppresses that ICMP:

                 if (udp_blackhole)
                         goto badheadlocked;
                 if (badport_bandlim(BANDLIM_ICMP_UNREACH) < 0)
                         goto badheadlocked;
                 *ip = save_ip;
                 ip->ip_len += iphlen;
                 icmp_error(m, ICMP_UNREACH, ICMP_UNREACH_PORT, 0, 0);

I think I'd suspect an application bug/feature, in which socket gets closed 
and opened during execution and once in a while a datagram is delivered in 
that window.  Perhaps packets are being delivered with a non-trivial delay 
causing them to arrive after the application has timed out waiting for it?

Robert N M Watson
Computer Laboratory
University of Cambridge



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.1.10.0812292217040.9438>