---
name: "rock"
section: "1"
platform: "linux"
package: "rocks"
version: "2.4-3"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/rock"
---

# rock(1)

run a program over reliable sockets

## NAME

rock, rockd - run a program over reliable sockets

## SYNOPSIS

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

## DESCRIPTION

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.

## EXAMPLES

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

## FILES

- **librocks.so**

  Dynamic library loaded into the command process and its children.  It must be in the **LD\_LIBRARY\_PATH** (see  [*ld.so*(8)](/ld.so/8.md)) of the command or in the  **INSTALL\_LIB\_DIR** set when rock was compiled.

## SOURCE

See **http://www.cs.wisc.edu/~zandy/rocks**.

## SEE ALSO

Rock loads code into the command process using **LD\_PRELOAD**, which has its own limitations; see  [*ld.so*(8)](/ld.so/8.md).

The ckpt checkpoint library is available at **http://www.cs.wisc.edu/~zandy/ckpt**.

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

## BUGS

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.
