Tuesday, February 24, 2009



ATA over Ethernet (AoE) is a network protocol developed by the Brantley Coile Company, designed for simple, high-performance access of SATA storage devices over Ethernet networks. It gives the possibility to build SANs with low-cost, standard technologies.
AoE does not rely on network layers above Ethernet, such as the IP and TCP that iSCSI requires. While this makes AoE potentially faster than iSCSI, with less load on the host to handle the additional protocols, it also means that AoE is not routable outside a LAN. AoE is intended for SANs only. In this regard it is more comparable to Fibre Channel over Ethernet than iSCSI. An alternative to iSCSI, the AoE specification is 8 pages compared with iSCSI's 257 pages.

There are four targets ( servers ) available which serves aoe initiator ( clients ) to export the block devices over network.

Qaoed is a multithreaded ATA over Ethernet storage target that is easy to use and yet higly configurable.
How to:
Unmount your block device and do the corresponding entry into qaoed.conf file and run following command to export the corresponding block device over network.
./qaoed -c qaoed.conf

sample configuration file : qaoed.conf
shelf = 0; /* Shelf */
slot = 0; /* Autoincremented slot numbers */
interface = eth0;

target = /dev/sda2;
Available configurable options:
The configuration of the aoe server are grouped into sections.
1. The global directives sections. This is where global configuration options for the aoe-server are set, for example default-log level.
2. The logging section defines the logging targets configurable in the device and interface sections.
3. The interface section configures values for the different interfaces.
4. The default section defines default values for block-devices. Options defined in the default-section can be omited in device configuration.
5. Devices, one section for each exported device.
6. Access-lists.

ggaoed is an AoE target implementation for Linux, distributed under the terms
of the GNU GPL, version 2 or later. ggaoed has the following features:

- A single process can handle any number of devices and any number of
network interfaces
- Uses kernel AIO to avoid blocking on I/O
- Uses eventfd for receiving notifications about I/O completion
- Uses epoll for handling event notifications
- Uses memory mapped packets to avoid syscall overhead when receiving data
from the network
- Can identify devices either by path or UUID using the libblkid library
- Can handle dynamic appearance/disappearance of network interfaces
- Can use direct I/O

how to :

./ggaoed -c ggaoed.conf -d

If the device is mounted at client side then server side it can't be mounted.

Available configurable option:
1)network interface configuration
2)acl definition
3)disk device configuration

example file : ggaoed.conf
path = /dev/sda2
shelf = 0
slot = 0
broadcast = true
read-only = true


Kvblade is a kernel module implementing the target side of the AoE protocol. Users can command the
module through sysfs to export block devices on specified network interfaces. The loopback device
should be used as an intermediary for exporting regular files with kvblade. Three shell scripts have been created to facilitate interfacing with kvblade through sysfs: kvstat, kvadd, and kvdel. Kvstat
prints the list of currently exported vblades. Kvadd and kvdel are used to manage the exported vblades.

how to : run following command to export your block device which is /dev/sda5 in this case :

modprobe kvblade
./kvadd 0 1 eth0 /dev/sda5

There are bugs in kvblade. Unnecessary error message comes on the screen while establishing the connection. Further it doesn't give the correct size of corresponding exported device. On the client side:
[root@localhost kvblade-alpha-3]# modprobe aoe
[root@localhost kvblade-alpha-3]# aoe-stat
e0.1 80.026GB eth0 1024 up
[root@localhost kvblade-alpha-3]#

[root@localhost kvblade-alpha-3]# mount /dev/etherd/e0.1 /mnt/
[root@localhost kvblade-alpha-3]# df /mnt
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/etherd/e0.1 3026640 172848 2697564 7% /mnt
[root@localhost kvblade-alpha-3]#

Here the exported device has its size 3GB, but it shows 80 GB. Further, there is no configuration file available. So, lots of manual work has to do or we have to make it configurable by our own. Its faster than vblade.


The vblade is the virtual EtherDrive (R) blade, a program that makes a seekable file available over an ethernet local area network (LAN) via the ATA over Ethernet (AoE) protocol.

The seekable file is typically a block device like /dev/md0 but even regular files will work. Sparse files can be especially convenient. When vblade exports the block storage over AoE it becomes a storage
target. Another host on the same LAN can access the storage if it has a compatible aoe kernel driver.

How to:

./vblade 0 1 eth0 /dev/sda5

There is no configurable file available to configure the disk. So, the exported disk can't be configured easily.


Experiments has done on one client and one server. We can go for ggaoed or qaoed.


  1. Hi Krishna,

    I saw your mails in aoe-tools mailing list.

    One more AOE target is there it is called aoeserver.


    Please add this in your comparison matrix.

    I think it is having lot of potential to become upstream AOE driver.

    My mailid: kirantptil@gmail.com


  2. Hi folks, I have added some more very good SAN document and each of the building block which you can get from following url: