jVerbs: RDMA support for the Java Virtual Machine

jVerbs is a networking framework and API for the Java Virtual Machine (JVM) for RDMA programming. The jVerbs library enables the development of Java™ applications that use high-performance networking infrastructures such as InfiniBand, iWARP, or RoCE.

There are two APIs available in jVerbs, the low-level verbs API, and the more high-level endpoint API. The verbs API resembles the native ibverbs interface of the Open Fabrics Enterprise Distribution (OFED) user libraries. Programming against the verbs API gives a maximum of control, but also requires in-depth understanding of the RDMA programming model.

Alternatively, the jVerbs endpoint API exports higher-level abstractions. More precisely, programmers can create different types of RdmaEndpoints and connect them like regular sockets using methods such as connect() or accept(). Once connected, RdmaEndpoints behave just like a RDMA queue pair (QP) and can be programmed as such.

Generally, the jVerbs API enables networking at the speed of the networking hardware (both in terms of throughput and latency) from within the JVM. Furthermore, jVerbs makes the RDMA model available to Java applications. For instance, using one-sided operations it is now possible to read or write memory of a remote JVM directly, provided that the credentials are set up accordingly.

jVerbs employs a concept called Stateful Verbs Methods (SVM). These are pre-serialized RDMA operations that can be cached and re-used by the application. SVMs avoid costly serialization of work requests and scatter/gather elements during the process of posting descriptors to RDMA queues.

JVM

References