[openib-general] Re:[ULP] how to choose appropriate ULPs for application

Michael Krause krause at cup.hp.com
Wed Jul 13 10:17:18 PDT 2005


At 06:39 AM 7/13/2005, James Lentini wrote:


>On Tue, 12 Jul 2005, xg wang wrote:
>
>>     Frankly speaking, I can not distinguish the function of SDP and 
>> DAPL. Since Lustre is a file system, it runs on kernel. So I think maybe 
>> kDAPL is better.
>
>SDP stands for the Sockets Direct Protocol. The protocol is designed to 
>support the Berkley Sockets API. This allows code already using the 
>Sockets API to easily use InfiniBand by simply changing the socket type.

One clarification: SDP supports both synchronous and asynchronous 
sockets.  The OpenGroup ICSC released the sockets extensions API a number 
of months back that enables the full performance provided by SDP to be 
tapped.  The SDP specifications can be found at the IBTA for IB and at the 
RDMAC for RNIC web sites.


>kDAPL is the kernel Direct Access Provider Library. It is an API that 
>supports RDMA networks (InfiniBand, iWARP, etc.).
>
>>     But for ULP application, what is the advantage and disadvantage of 
>> SDP and DAP ?  While you implementation an application, will you use SDP 
>> or DAPL, and why?  I just wonder the difference between them from the 
>> application view.
>
>First off, SDP is a protocol and kDAPL is an API. Since SDP is a protocol, 
>you will only be able to communicate with other nodes that implement SDP.
>
>Another thing to consider is the differences in the APIs. SDP accessed 
>with traditional Sockets API. This makes porting applications to it easy, 
>but doesn't give you much fine grained control over how the RDMA network 
>is used.

Sockets by definition is interconnect and topology independent.  Network 
controls are managed separately.  The best that an application should do is 
signal its requirements, e.g. using diffserv or similar standard.

>kDAPL was designed specifically for RDMA networks with lots of features 
>that allow you to control how the network is used. This is good if you are 
>writing new code, but means that old code needs substantial porting.

Ideally, applications stay out of such decisions.  Middleware's job is to 
handle application optimization, etc. so that the end consumer stays as 
ignorant as possible thus focused on their application's needs not the 
networks.  The middleware API - whether DAPL, IT API, RNIC PI, whatever - 
can provide the hooks needed to manage the usage from a given endnode's 
perspective.  But even here, the real network management, what routes are 
actually used, the arbitration for QoS, etc. should also be outside of the 
middleware's control.  It simply manages a set of local resources and 
allows the fabric management to do the rest.  There is more to this than 
that but that is how IB was constructed which is no different in many 
respects from how IP works as well.

Mike 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/general/attachments/20050713/3059de5f/attachment.html>


More information about the general mailing list