[libfabric-users] 101 level question on providers

Hefty, Sean sean.hefty at intel.com
Thu Jun 2 12:43:26 PDT 2016

> In particular, why is there a socket and a (separate) UDP provider? I
> assume socket means IP socket; isn't UDP part of that already? And if
> not, why is there not a TCP (or SCTP) provider?

The sockets provider is based on TCP and implements the full set of libfabric functions.  It adds a protocol over TCP/IP, which is needed to implement the APIs.  The UDP provider was written after the sockets provider and only supports datagram communication and limited API features.  It writes actual UDP packets on the wire and should interoperate with any UDP application at the remote side.

The UDP provider is the foundation for what will be a utility provider.  The utility provider are helper routines that can be used to expand the feature set of a given provider.  For example, the utility provider will implement a reliability protocol, which will allow the UDP provider to support reliable-datagram communication.  That reliability protocol could then be re-used by providers that do not naturally have reliable communication.

- Sean

More information about the Libfabric-users mailing list