aan, aanuke – always available network


aan -c [ -d ] [ -m maxto ] dialstring
aan [ -d ] [ -m maxto ] netdir


Aan tunnels traffic between a client and a server through a persistent network connection. If the connection breaks (voluntarily or due to networking problems), the aan client re-establishes the connection by redialing the server.

Aan uses a unique protocol to make sure no data is ever lost even when the connection breaks. After a reconnection, aan retransmits all unacknowledged data between client and server.

A connection can be broken voluntarily (e.g. by roaming over IP networks), or a connection can break when the IP service is unreliable. In either case, aan re-establishes the client’s connection automatically.

When the server part has not heard from the client in maxto seconds, the server part of aan exits. The default maxto is one day. The client side (option -c) calls the server by its dialstring, while the server side listens for connections in the already-announced network directory netdir.

Aan is usually run automatically through the -p option of import(4) and cpu(1).

Aanuke prints commands that will cause all processes called aan that are owned by the current user and do not have an active tcp connection to be terminated. Use the send command of rio(1), or pipe the output of kill into rc(1) to execute the commands.


Assume the server part of aan is encapsulated in exportfs on the machine sob and started through aux/listen as follows:


netdir=`{echo $3 | sed 's;/[0-9]+$;!*!0;'}
exec exportfs -a -A $netdir

Then machine astro6’s name space can be imported through aan using this command:


import -p astro6 / /mnt/term

Kill idle instances of aan left behind by a terminal that has been powered off:


aanuke | rc



Log file  




import(4), exportfs(4), cpu(1)


Aanuke first appeared in 9front (April, 2014).