[ofa-general] rdma_listen() backlog

Steve Wise swise at opengridcomputing.com
Thu Jul 9 07:36:12 PDT 2009


umayr at gatech.edu wrote:
> Hi,
>
> Given RDMA CM (server) listening on a given IP address and port number with a backlog values greater than 1. The problem is that every time more than one connection requests are sent to the listening port, rdma_listen() traps the later request but gives an error. What might be the reason for this error. 
>
> Given previous discussions on the mailing list about the meaning of the backlog value, it's unclear whether it indicates the number of connection waiting to be processed (is that after the currently accepted connection has completed processing?) or is it "just an attribute of the service/listening endpoint" (again it's unclear what is the function of this attribute).
>
>   

The backlog dictates how many pending rdma connect requests the kernel 
will keep in-queue for your application to accept/reject.

> So, in general, how is it possible to listen for and deal with multiple connections request on the same IP/port value?
>
>   

The app should set the backlog to something appropriate, issue the 
listen, and then process rdma cm connect request events from the rdma cm 
event channel associated with the listening cm_id.  Its up to the app as 
to whether it will process and accept more than one connect request at a 
time.

I suggest you look at rping for an example application.  In its 
persistent server mode (-P), the server will handle multiple connections.

You can fetch the rping source code from:

http://www.openfabrics.org/downloads/rdmacm/librdmacm-1.0.8.tar.gz.

Look in src/examples/rping.c.

Steve.




More information about the general mailing list