evblade - Enterprise Virtual Blade Server

The evblade is a "blade" server, serving ata block devices using the "Ata Over Ethernet" protocol. Serving different blades to different clients using the same blade-id makes it suitable for thin-client use. Hence the E for enterprise.

Intro

The AoE protocol is a very simple ata over l2-ethernet encapsulation protocol. It's strength comes from the fact that it is rather "simple". You can for instance easily use swap on AoE without fear for a deadlock due to the memory needed by the protocol stack. (That's why swap over an IP network on linux is almost impossible).
(See Coraid)

vblade

The original idea is derived from vblade (Hosted on sf.net), and the intention was to just modify the code. However, the code does not allow for easy modification to a multiclient multiblockdevice server. When that was clear I decided to just rewrite that part from scratch using the original protocol specs and the linux AoE driver.
(original design blurps. some design things are from before reading the
protocol spec itself)
Design of enterprise vblade:
blades are assigned on mac-address level
since aoe doesn't use labels or other stuff like that, the client mac-address
will be used to give out private blades with a common name. This way a thin
client can easily access swap with a common name, while getting a private swap
space on the server.

Properties of a "blade":
shared: does each client get's it's own blade or is this one shared.
readonly: is the blade read only
locking: Do we need to support some kind of block-device locking?

Announce blades

Types:

Objects:
connection: (or maybe circuit)
        Properties:
        client-mac: the mac address of the client
        blade id: The id of the blade (major, minor)
        authorised: has the client passed the acl, if not, this is a mere negative cache

blade:
        blade id
        shared
        readonly
        locking
        autocreate (auto create a blade file if it does not exist yet)
        copyonwrite
        blade tech stats (nrofblocks, lba, etc...)
        acl

Functions:
setupclient: client-mac, blade id
        sets up a client when it does not exist yet


Future wishes for AoE

AoE is a real neat solution for a lot things. There are two things I really love to see:
  • An IDE-drive to AoE interface. Thus: a device that you connect to the IDE port of you proprietary or non upgradeable system that converts the ATA settings/messages to Ethernet and back. This way you can have your old hardware or your proprietary PVR use your server and let it be quiet.
  • A *cheap* IDE-host to AoE interface. The price for such a thing with a 100MBit interface should be able to be equal to the IDE-host to USB interfaces. At least the cost should not exceed 80 euro with standard hardware.

    WIP: the code

    evblade-2005-12-20.tar.gz

    Other links/other people's work

    Some l33t vblade in kernel space