Comparing JSOR with Java TCP communications (Linux only)

The TCP protocol is dependent on the operating system kernel, whereas the RDMA protocol bypasses the operating system kernel, enabling direct communication between Java™ applications on different RDMA-enabled host systems. Therefore, RDMA network operations require less processor resources and improve network throughput.

Note: Start of changes for service refresh 8 fix pack 30The RDMA implementation which was previously deprecated is removed from IBM® SDK, Java Technology Edition, Version 8.End of changes for service refresh 8 fix pack 30
In the traditional model of Java TCP sockets processing, the host operating system kernel plays a key role. Operating system calls are required for all common network operations, for example:
  • Creating sockets
  • Binding to a port
  • Listening on a well-known address
  • Connecting to a remote host
  • Accepting incoming connection requests
  • Transferring data between connected end points
When Java client and server applications exist on different host systems, transferring data between systems involves several copy operations between buffers before the data transfers between network interface cards. The following buffers are involved in this process on each system:
  • Java application buffer to Java socket buffer
  • Java socket buffer to operating system socket buffer
  • Operating system socket buffer to network interface driver buffer
These copy operations use processor cycles before data is transmitted between host systems.

Unlike the TCP protocol, the RDMA protocol is defined on top of high speed switch fabrics, like InfiniBand, which is independent of the operating system kernel. Instead, network processing is offloaded to a dedicated RDMA network interface adapter. The RDMA protocol allows a Java application on one host to directly access the memory of a Java application on a different host. This capability enables the direct transfer of data between Java applications.

The following diagram illustrates the connections that are required between a Java client and server application for TCP/IP communication and RDMA communication:
The diagram shows the interactions between a Java client and server application that are required for TCP/IP communication and RDMA communication. In particular, for TCP/IP communication, the diagram shows the detailed buffer copy operations that are required at the operating system level. The interactions are described in more detail in the text.

Compared with TCP processing, RDMA uses less processor resources and can take advantage of high performance switch fabric to maximize data throughput between RDMA-enabled systems.