Rocks and Racks Victor C. Zandy (zandy@cs.wisc.edu) Barton P. Miller (bart@cs.wisc.edu) University of Wisconsin-Madison, USA We shall demonstrate two new systems: reliable sockets (rocks) and reliable packets (racks). Both systems provide transparent network connection mobility to ordinary applications using only user-level mechanisms. These systems have applications in end-user mobile computing and process migration of parallel programs. Their major functionality is: 1 They detect a connection failure within seconds of its occurrence; 2 They preserve the endpoints of a failed connection in a suspended state for an arbitrary period of time; 3 They automatically reconnect as connectivity is restored, even when one end changes IP address, with correct recovery of in-flight data; 4 They safely interoperate with ordinary clients and servers, using a new user-level Enhancement Detection Protocol. Rocks and racks have different implementation models. Rocks intercept and modify the behavior of the sockets API with a library that is interposed between the application and the operating systems. Racks use a packet filter controlled by a separate daemon to intercept and modify the packets exchanged over a connection. Both techniques enable transparent network connection mobility without any kernel modifications. We will demonstrate the mobile computing applications of rocks and racks, particularly the ability of remote shells and remote X Windows applications to survive periods of disconnection and reconnection from new addresses. We also will demonstrate how rocks and racks support process migration of programs that communicate over sockets. In particular, we have extended a basic process checkpointing mechanism to checkpoint parallel MPI programs and to enable the Condor high throughput computing environment to migrate jobs with open network connections. More information about rocks and racks is available at http://www.cs.wisc.edu/~zandy/rocks