Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Dec 2008 14:17:29 +0200
From:      "Yony Yossef" <yonyossef.lists@gmail.com>
To:        "'Robert Watson'" <rwatson@FreeBSD.org>, "Yony Yossef" <yonyossef.lists@gmail.com>
Cc:        Eitan Shefi <eitans@mellanox.co.il>, freebsd-net@freebsd.org, Liran Liss <liranl@mellanox.co.il>, Yevgeny Petrilin <yevgenyp@mellanox.co.il>
Subject:   RE: net.inet.udp.blackhole issue
Message-ID:  <000001c96a78$9a5b3c20$220f000a@mtl.com>
In-Reply-To: <alpine.BSF.1.10.0812292217040.9438@fledge.watson.org>
References:  <20def4870812240600n6edbcad7k2100a0ccbe49f0dd@mail.gmail.com> <alpine.BSF.1.10.0812292217040.9438@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help
> > 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
> 

I'm talking about a simple multistream UDP iperf test.
One stream always works fine. More than one UDP stream has a chance of
failing because of this problem.
Wireshark analysis shows no such delay and no packet loss nor corruption,
for what I've seen and understood.
On the other hand, same test on a 1Gig NIC (I'm using a 10Gig) doesn't
suffer from this issue without the blackhole assistance.

Yony




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?000001c96a78$9a5b3c20$220f000a>