rock, rockd - run a program over reliable sockets  


rock [ -k ] [ -l ] [ -d [ user ] ] command [ arg ... ]  


Rock runs the specified command over reliable sockets (rocks), protecting from failure the network connections created by the command process and its children. Recoverable failures include those caused by host IP address change, extended periods of network disconnection, and link failure.

Rocks must be enabled at both ends of the connection. Rock by default assumes that the command process communicates with rock-enabled remote peers. Connections with ordinary peers, those that do not support rocks, silently revert to ordinary socket behavior.

The -d option enables reliable socket connections to ordinary peers by redirecting the connection through a new rockd process, started by rock, on the remote host. Rockd must be in the path of the remote user, either $USER or user. Use of this option is currently limited to the commands ssh and scp.

The -k option also loads the ckpt checkpoint library in the process.

The -l option forces suspended rocks to reconnect to localhost. This is useful for process migration of a set of processes communicating over rocks.

Failed connections that cannot be recovered by rocks after 72 hours are silently closed.  


Start a rocks-enabled sshd on host nob:
nob# rock sshd

Start a new rocks-enabled shell, then ssh over rocks to nob:

% rock sh
% ssh nob

Start a rocks-enabled remote shell on a host ("oldskool") that does not have a rocks-enabled sshd:

% rock -d ssh oldskool

Dynamic library loaded into the command process and its children. It must be in the LD_LIBRARY_PATH (see of the command or in the INSTALL_LIB_DIR set when rock was compiled.




Rock loads code into the command process using LD_PRELOAD, which has its own limitations; see

The ckpt checkpoint library is available at

Victor C. Zandy and Barton P. Miller. "Reliable Network Connections". ACM MobiCom'02, Atlanta, GA, 2002.  


Currently rocks only protect TCP connections.

Rocks are not firewall friendly.

Connection recovery does not succeed when both ends change IP address while disconnected (but note the -l option)

Rockd requires you to type your password twice.