JSOR system requirements and supported APIs (Linux only)
Java™ client and server applications must have specific hardware and runtime software installed to use the JSOR features. JSOR supports a limited set of APIs and classes.
Note:
The RDMA implementation which was previously
deprecated is removed from IBM® SDK, Java Technology Edition, Version 8.


Supported hardware and runtime requirements
The following prerequisites
apply:
- This feature is available on the following platforms and Remote Direct Memory Access (RDMA) adapters:
- Linux® 32-bit x-86 with either InfiniBand (IB) or RDMA over Converged Ethernet (RoCE)
- Linux AMD64/EM64T with IB or RoCE
- Linux 32-bit POWER® with RoCE
- Linux 64-bit POWER with RoCE
Linux 64-bit POWER8 (Little Endian) with IB
- You must install OpenFabrics Enterprise Distribution (OFED) v1.5.3 or later, which can be downloaded from the OpenFabrics Alliance website: https://www.openfabrics.org/index.php/resources/ofed-for-linux-ofed-for-windows/ofed-overview.html. During run time, symbols from the following libraries are dynamically located and loaded: librdmacm.so and libibverbs.so. These libraries are provided by the OFED run time.
- Users must have adequate permissions to lock memory on both host systems. RDMA socket buffers must be locked, or pinned, to avoid the operating system swapping out the memory pages during data transfers.
Tested environments
- Mellanox MT26428 ConnectX Virtual Protocol Interconnect (VPI) PCI Express (PCIe) hosts, which are interconnected by a Voltaire 40 GB InfiniBand Switch.
- Mellanox MT25208 InfiniHost III Ex hosts, which are interconnected by a Cisco 4x InfiniBand Switch.
- Mellanox MT26448 ConnectX EN PCIe hosts, which are directly interconnected.
- Mellanox MT4099 ConnectX-3 VPI hosts, which are directly interconnected.
Supported APIs and classes
Support is limited for the following set of APIs and classes:
- java.net.Socket and java.net.ServerSocket excludes support
for the following methods:
- Socket(Proxy proxy)
- Socket(SocketImpl impl)
- setSocketFactory(SocketImplFactory fac)
- setPerformancePreferences(int connectionTime, int latency, int bandwidth).
- java.io.InputStream, includes support for the following methods:
- available()
- close()
- mark(int readlimit)
- markSupported()
- read()
- read(byte[] b)
- read(byte[] b, int off, int len)
- reset()
- skip()
- java.io.OuputStream includes support for the following methods:
- close()
- flush()
- write(byte[] b)
- write(byte[] b, int off, int len)
- write(int b)
- java.net.SocketOptions includes support for the following option:
- SO_TIMEOUT
- TCP_NODELAY
- SO_LINGER
- SO_BINDADDR
- SO_REUSEADDR
- SO_BROADCAST
- SO_SNDBUF
- SO_RCVBUF
- SO_KEEPALIVE
- SO_OOBINLINE
- SO_BINDADDR
- SO_REUSEADDR
- SO_SNDBUF
- SO_RCVBUF
Note: SO_SNDBUF and SO_RCVBUF are effective immediately after socket creation, but before a connect or bind operation takes place on that socket.For the remaining socket options, the JSOR run time falls back to the TCP/IP implementation.

- java.nio.channels.SocketChannel
- java.nio.channels.ServerSocketChannel
- java.nio.channels.Selector

To manage socket send and receive buffer sizes, use the Java environment variables included within JSOR. For more information, see JSOR environment settings (Linux only).