OpenFabrics Interfaces, or OFI,
is a framework focused on exporting communication services to applications.
OFI is specifically designed to meet the performance and scalability
requirements of high-performance computing (HPC),
applications, such as MPI, SHMEM, PGAS, DBMS, and
enterprise applications, running in a tightly coupled network environment.
The key components of OFI are:
application interfaces, provider libraries, kernel services, daemons,
and test applications.

Libfabric is a 
library that defines and exports the user-space API of OFI,
and is typically the only software that applications deal with directly.
Libfabric is supported on commonly available Linux based distributions.
Libfabric is independent of the underlying networking protocols,
as well as the implementation of the networking devices.

%%Libfabric is designed to support process direct IO.
%%Process direct I/O, historically referred to as RDMA,
%%allows an application to access network resources without
%%operating system intervention.
%%Data transfers can occur between networking hardware and application memory
%%with minimal software overhead.
%%Although libfabric supports process direct I/O,
%%it does not mandate any implementation or require operating system bypass.

%%One of the key concepts incorporated into OFI is that it is
%%application centric.
%%OFI aligns fabric services with application needs,
%%and is designed to provide
OFI is based on the notion of application centric I/O,
meaning that the libfabric library is designed to align
fabric services with application needs,
providing a tight semantic fit between
applications and the underlying fabric hardware.
This reduces overall software overhead
and improves application efficiency
when transmitting or receiving data over a fabric.
