-Dcom.ibm.net.rdma.conf (Linux® only)
You can enable Java™ Sockets over RDMA (JSOR) on Java application server and client systems by specifying this system property on the command line. Each host system requires a valid configuration file.
Note: The RDMA implementation is deprecated and will likely be removed in a
future release of IBM® SDK, Java Technology Edition, Version 8. A possible alternative is the open source Libfabric
library.
- -Dcom.ibm.net.rdma.conf=<path><config_file>
- Where:
- <path> is an absolute path to the configuration file, or a relative path from the directory in which the Java process is started.
- <config_file> is a configuration file that specifies one or more rules.
Configuration file
The JSOR configuration file must be a plain text file that contains one rule per line. Comments
must start with the #
character.
The following syntax applies to a rule:
- <net-spec><sp>(<connect-entry> | <accept-entry> | <bind-entry>)
- Where:
- <net-spec> = rdma
- <sp>=1*LWSP-char
- <connect-entry> = connect <host-spec><sp><port-spec>
- <accept-entry> = accept <host-spec><sp><port-spec><sp>(*| any | all | <client-spec>[<sp><client-spec>])
- <bind-entry> = bind <host-spec><sp><port-spec>
These suboptions apply to <connect-entry>, <accept-entry>, or <bind-entry>:- <host-spec> = (hostname | ipaddress [/ prefix])
- <port-spec> = (* | port)[ - (* | port) ]
- <client-spec> = (hostname | ipaddress [/ prefix])
- Any number of linear white space characters (1*LWSP-char), such as tabs or spaces, can separate the <options>.
- Brackets, [], indicate optional text.
- The vertical bar character (
|
) within parentheses, (), indicates a choice of values. You must select only one.
Server configuration details
Rules that apply to a server configuration file:
- A server configuration file can have <accept-entry> and <bind-entry> parameters. Each <accept-entry> implicitly generates a <bind-entry> as well.
- Each hostname or ipaddress specified must be a valid InfiniBand interface address on that host.
- If hostname is specified, there must be an appropriate hostname to InfiniBand interface address mapping available, otherwise the default domain name resolution maps to an ethernet address rather than an InfiniBand address.
- <accept-entry>:
- The <host-spec> and <port-spec> values must be the local host.
- All <client-spec> values must be the local host.
- The local hostname or ipaddress can be either NULL or LOOPBACK.
- <bind-entry>:
- The <host-spec> and <port-spec> values must be the local host.
- The hostname or ipaddress values can be either NULL or LOOPBACK.
- NULL or LOOPBACK addresses are replaced by an InfiniBand interface address during the bind process.
- A NULL address in the configuration can be
0
,0.0
,0.0.0
,0.0.0.0
, or::
. - A LOOPBACK IP address must be
127.0.0.1
.
- A NULL address in the configuration can be
Client configuration details
Rules that apply to a client configuration file:
- A client configuration file can have <connect-entry> and <bind-entry> parameters.
- Each hostname or ipaddress specified must be a valid InfiniBand interface address on that host.
- If hostname is specified, there must be an appropriate hostname to InfiniBand interface address mapping available, otherwise the default domain name resolution maps to an ethernet address rather than an InfiniBand address.
- <connect-entry>:
- The <host-spec> and <port-spec> values must be the remote host.
- The <port-spec> value must not be NULL or LOCAL.
- The <host-spec> value can be either NULL or LOCAL. This value is replaced by your preferred RDMA-capable address during connection, which allows a JSOR client to connect to a JSOR server on the same host.
- <bind-entry>:
- The <host-spec> and <port-spec> values must be the local host.
- The hostname or ipaddress values can be either NULL or LOOPBACK.
- NULL or LOOPBACK addresses are replaced by an InfiniBand interface address during the bind process.
- A NULL address in the configuration can be
0
,0.0
,0.0.0
,0.0.0.0
, or::
. - A LOOPBACK IP address must be
127.0.0.1
.
- A NULL address in the configuration can be
Example: Server configuration
This example shows a server-side configuration entry on
host1
:
# My server configuration
rdma accept host1 2000-3000 host2 host3
This rule
configures connections that are accepted by host1
from host2
and
host3
on server sockets that are listening on ports 2000 - 3000 (inclusive) as RDMA
connections.In this case, for every accept rule a corresponding bind rule is created internally that forces a specific bind operation for any sockets that match the rule. Consequently, a bind rule is not needed on the server, and an accept rule is not needed for a client.
Example: Client configuration
This example shows a client-side configuration entry on
host2
:
# My client configuration
rdma connect host1 2435
This rule configures a
connection that originates from host2
to host1
on port 2435 to be
treated as an RDMA connection.Example: Binding to NULL, LOCAL, or LOOPBACK address
This example shows a bind entry with the NULL, LOCAL, or LOOPBACK address:
rdma bind 0 *
rdma bind :: *
rdma bind 127.0.0.1 *
These rules configure all
bind connections to the local address to pick up and bind to an RDMA-enabled address. The system
selects an interface from the available IB interfaces. If you want to override the default address
that is selected by the system, specify the -Dcom.ibm.net.rdma.preferredAddress
system property. Use the ::
format to override the local ipv6 address.