Comparing NBD implementations

Comparing NBD implementations

I've been the maintainer of the userspace bits of the in-kernel NBD implementation, which has existed since kernel 2.1.something. There've been several forks and/or reimplementations of similar "network block devices" for Linux, and I thought it might be a good idea to compare them against eachother.

Where possible, I've asked for feedback from the maintainer of the particular NBD implementation; any leftover errors are completely my own fault.

Note that this currently is a work-in-progress; I intend to add more information as I get it. Also note that only released versions are considered for this table; development versions do not count.

Name NBD ENBD
Maintainer Wouter Verhelst (userspace); Paul Clements (kernel) Peter T. Breuer
Website http://nbd.sourceforge.net http://www.it.uc3m.es/~ptb/nbd/
SCTP support Untested Yes
Partitioned NBD devices Yes Yes
Virtual hosting Yes No
ioctl() passing No Yes
Reconnect on connection failure Partial Yes
Copy-on-write support Yes Untested in recent versions
Zero-copy networking (sendfile(), mmap(), ...) No almost entirely
Exporting one export built from multiple files Yes Yes
Change UID after startup Yes No
Running scriptlets on connect or disconnect Yes No
Redundant client daemons No Yes
udev signalling No Yes
Built-in encryption layer No Yes