[openib-general] [ANNOUNCE] Contribute RDS (Reliable DatagramSockets) to OpenIB

Greg Lindahl lindahl at pathscale.com
Fri Nov 4 13:46:53 PST 2005


On Fri, Nov 04, 2005 at 11:54:27AM -0800, pandit ib wrote:

> Since a UDP application assumes the underlying transport is
> unrealiable it should not have any problems running on RDS.
> On getting EWOUDBLOCK it will simply retry.

Most existing UDP applications do not expect a return error code of
EWOULDBLOCK. To begin with, the Linux manpages say that you have to
specify non-blocking to get this error in the first place. Another
possibility is ENOBUFS, which gives the advice "Normally, this does
not occur in Linux. Packets are silently dropped when a device queue
overflows."

There was a somewhat famous case showing lack of error handling in UCP
applications under Linux, where Alan Cox decided to read the RFCs
different from everyone else, and caused an ICMP 'port unreach' to
later cause the same sending socket to return an error for a send to
some unrelated host. Many UDP-using apps considered this a fatal
error.  This was ~ 7 years ago, and this misfeature caused enough
anger that it was corrected soon after Alan stopped owning the TCP/UDP
stack.

In short, I'm not sure there would be much benefit for giving existing
UDP-expecting apps a reliable, ordered stream of datagrams. The only
app which would see a benefit are those who know that they can turn
off their reliability and ordering code, and handle backpressure
explicitly. Those folks would benefit from a simpler programming
interface than verbs.

-- greg




More information about the general mailing list