NetPipe is a simple Linux / Unix tool which allows the distribution of binary data within a subnet
using UDP broadcasting techniques. Data can be sent from one workstation (server) to multiple
computers (clients) within an IP network. NetPipe works via stdin and stdout, and thus data can
be piped into and out from NetPipe.
What can I use NetPipe for?
You can use NetPipe for any kind of data transferring and processing within a LAN, but its main
purpose is to allow the replication of workstations. NetPipe allows you to retrieve a hard disk image
and write it back to multiple clients by simply using commands like dd and piping into NetPipe.
How does NetPipe work?
NetPipe uses two successive UDP ports (by default 9000/9001), the first one to transfer data from
server to client, and the second one to send status messages from client to server. By using UDP
broadcasting techniques and starting multiple clients, the data can be multicast.
The protocol employs four different transaction phases:
1. Seek phase
The server sends out ping-like packets and waits for client answers. This phase is
finished once the expected number of clients has answered.
2. Initialization phase
The server tells the clients that the transaction is about to start and can send certain
flags; all clients acknowledge.
3. Transaction phase
The server sends out data packets preceded by a header with a sequence number and the data
size. The data integrity is ensured using a CRC-32 error checking code. Currently all
clients are required to send an acknowledging packet for each received data packet;
obviously this generates quite some network collisions, but I hope to fix this soon.
Remember, NetPipe is still beta!
The server simply informs the clients that EOF has been reached and waits for the clients'
acknowledgements before exiting.