netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rick Jones <rick.jones2@hp.com>
To: Hagen Paul Pfeifer <hagen@jauu.net>
Cc: Glen Turner <gdt@gdt.id.au>, David Miller <davem@davemloft.net>,
	netdev@vger.kernel.org
Subject: Re: UDP path MTU discovery
Date: Wed, 31 Mar 2010 17:06:19 -0700	[thread overview]
Message-ID: <4BB3E37B.8040400@hp.com> (raw)
In-Reply-To: <20100331235149.GE3042@nuttenaction>

Hagen Paul Pfeifer wrote:
> * Glen Turner | 2010-04-01 10:12:03 [+1030]:
> 
> 
>>Does select() return from its blocking so the application can make
>>use of this indication immediately, rather than after the
>>application's exponentially-increasing wait?
> 
> 
> Yes, poll() will return immediately with POLLERR.
> 
> 
>>Is an incoming ICMP the only cause of EMSGSIZE?  That is, can an
>>application safely retransmit immediately?
> 
> 
> IIRC, yes.

Under Linux perhaps, and assuming it can guess which prior send triggered the 
EMSGSIZE, but under HP-UX EMSGSIZE means you tried to send a datagram larger 
than the socket buffer:

tusc src/netperf -t UDP_RR -- -s 1024 -r 60K
...
send(4, 0x4000ee68, 61440, 0) ............................ ERR#218 EMSGSIZE

I've not checked BSD, Solaris or AIX.

On a 2.6.22 kernel where I do the same thing, it returns ENOBUFS instead.

strace src/netperf -H localhost -t UDP_RR -- -s 1024 -r 60K
...
send(4, "netperf\0netperf\0netperf\0netperf\0n"..., 61440, 0) = -1 ENOBUFS (No 
buffer space available)

Of course the send() manpage on various Linux systems I've tried says:

        EMSGSIZE
               The  socket  type  requires that message be sent atomically, and
               the size of the message to be sent made this impossible.

        ENOBUFS
               The output queue for a network interface was full.  This  gener-
               ally  indicates  that the interface has stopped sending, but may
               be caused by transient congestion.   (Normally,  this  does  not
               occur in Linux.  Packets are just silently dropped when a device
               queue overflows.)

I suppose they are old on that system.  Netperf interprets an ENOBUFS per the 
manpage, and will not exit immediately in a UDP_STREAM test, but will simply 
count the send as failed and try again.  Not sure if it is worth trying to teach 
netperf differently here or not.

rick jones

  reply	other threads:[~2010-04-01  0:06 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-26  0:02 UDP path MTU discovery Glen Turner
2010-03-26  0:53 ` Rick Jones
2010-03-26  3:26   ` David Miller
2010-03-26 17:48     ` Rick Jones
2010-03-31 23:42     ` Glen Turner
2010-03-31 23:51       ` Hagen Paul Pfeifer
2010-04-01  0:06         ` Rick Jones [this message]
2010-03-26  3:24 ` David Miller
2010-03-28  8:41   ` Andi Kleen
2010-03-31 23:57     ` Glen Turner
2010-04-01  0:57       ` Andi Kleen
2010-03-28  8:50 ` Andi Kleen
2010-03-29 17:01   ` Rick Jones
2010-03-29 20:14     ` Andi Kleen
2010-03-29 20:25       ` Rick Jones
2010-03-29 20:50       ` Edgar E. Iglesias
2010-03-29 21:01         ` Rick Jones
2010-03-29 21:29           ` Eric Dumazet
2010-03-29 23:38             ` Templin, Fred L
2010-03-30  5:20               ` Andi Kleen
2010-03-30  6:06                 ` Eric Dumazet
2010-03-30  6:16                   ` Andi Kleen
2010-03-30  6:17                   ` UDP path MTU discovery II Andi Kleen
2010-03-30  6:16                 ` UDP path MTU discovery Edgar E. Iglesias
2010-03-30  6:19                   ` Andi Kleen
2010-03-30  8:20                     ` Edgar E. Iglesias
2010-03-30 14:12                       ` Andi Kleen
2010-03-30 22:04                         ` Edgar E. Iglesias
2010-03-30 15:58                     ` Templin, Fred L
2010-03-30 16:06                       ` Andi Kleen
2010-03-31 23:43     ` Glen Turner
2010-04-01  0:55       ` Andi Kleen
2010-04-02  5:41         ` Glen Turner
2010-04-04 10:25           ` Andi Kleen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BB3E37B.8040400@hp.com \
    --to=rick.jones2@hp.com \
    --cc=davem@davemloft.net \
    --cc=gdt@gdt.id.au \
    --cc=hagen@jauu.net \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).