This talk will describe the NBD protocol: what is it, what can it do, and why is it relevant for virtualization and IaaS. We will also touch at a few features that have been specified for the protocol, but so far have not been implemented in any known implementation.
The Network Block Device (NBD) was originally written for the Linux kernel, to use and export block devices over a network (TCP) link. Its feature set was very limited, however, which limited its practical usability for many purposes. Over the years, however, the protocol has evolved, with features such as better negotiation, improved reliability through flush requests, and awareness of holes in backing files being implemented.
Recent versions of QEMU implement the client side of the protocol, while at the same time also being able to export local resources through NBD. This situation makes it possible for NBD to be used as a protocol for shared storage, backup, or mirroring of resources to other systems for live migration.
We will quickly cover the history of the protocol, describing some of the features that were added over the years; make a short comparison against similar protocols such as iSCSI and AoE and why NBD is relevant in that context; and then move on to newer features that were added to the protocol at the request of the QEMU developers.
Speakers: Wouter Verhelst