On Fri, 3 Apr 2009 13:52:28 -0500 Marco Peereboom <sl...@peereboom.us>
wrote:

> That said I can guarantee that the OpenBSD project pays more attention
> to its users then other OS'.  This does not mean that the users get to
> set the road-map.  When an idea is not good the author is told so,
> usually, in strong language.  The opposite is Linux and other unnamed
> BSDs where everyone agrees with each other paralyzing proper
> development.  A stupid idea is still a stupid idea and it isn't
> magically going to mature like a good wine.


Over the last handful of days, I've been trying to figure out whether
or not the the way of doing things proposed by my work is actually a
stupid idea. Though I've been sent out to investigate status on all UNIX
variants, both open and closed source, I'm pushing for using OpenBSD in
one of their new designs.

The design involves a technology called "Express Ether" though it is
typically written as "ExpEther," and it is basically a way to run a
PCIe bus over ethernet. Though this might be the first you've heard of
it, ExpEther has been in development at NEC for the last five years,
and yes, I'm currently working on getting the documentation released for
the existing silicon.

http://www.nec.co.jp/press/en/0702/0801.html
http://www.expether.org/

In short, you can think of ExpEther as something between a bus extender
and a bridge (PCIe<->ethernet), so basically anything you can plug into
a PCIe slot can be made available to a remote machine. Yep, you can
even partition attached devices into VLANs and basically "build" a
computer on the fly out of available parts attached to the network. For
example if your VPN or secure website is running a little slow, you
would usually halt the machine and add a crypto accelerator, but with
ExpEther, you just export a crypto accelerator device on another system
to the system that needs it and the recipient system assumes the device
is attached to it's local PCIe bus.

One of the first applications I'm working on is exporting a softraid
volume over ExpEther. I was asked if it was possible to build a shim
that makes a block device like a softraid sd0a look like an ATA device
sitting on a (fictitious) ATA controller on the PCIe bus?

Though it's certainly an uncommon thing to try to do, there's just
something about this approach that makes me wonder if it's a
crazy/stupid idea, or absolutely brilliant?

To *me* (complete idiot), I'm wondering if this is being approached at
the wrong level, namely shimming a block device like sd0a to be seen as
a ata/scsi device on a fictitious controller, versus shimming something
below it, i.e. 
        scsibus0 at softraid0 
        sd0 at scsibus0

The *consumer* of the resource is expecting to see a disk attached to
a (fictitious) scsi/ata controller on it's local PCIe bus (which is
imported via ExpEther).

The *provider* of the resource needs to take a softraid volume and make
it look like just a (fictitious) disk attached to a (fictitious)
scsi/ata controller on a (fictitious) PCIe bus (which is exported via
ExpEther).

Whether or not the shimming is done below partitioning on the provider
side is yet to be determined. If it is done above partitioning on the
provider side (i.e. block devices like sd0a), the result will be two
layers of partitioning (both provider and consumer) since sd0a on the
provider-system would become the (fictitious) sd0 on the
consuming-system.

The thing to remember is we're talking *below* the file system, so well
intended suggestions of NFS, ZFS, or file-system-de-jour are not at all
relevant.

As for the vast number of different types of potential failure modes,
the PCIe spec includes hot-plug requirements (yet who knows if your
$VENDOR implemented them properly), but on top of that, the ExpEther
spec also has it's own hot-plug requirements, and they've been
implemented. Even with all this, getting the potential failure modes
correctly handled at the various levels will take a lot of effort.

Yes Nick, you can show up with your nail-gun (ramset). (;

Though this is for my work, I'm quietly doing my best to make it
benefit the project in various ways (including docs, code, ...). If any
of you would be kind enough to drop kick me in the direction of finding
a clue, or even want to voice an opinion about the bleeding edge (pink
elephants, vaporware, etc.) stuff I'm working on, it would be much
appreciated. I'm *way* over my head on a lot of this stuff, but I'm
learning it as fast as I can.

Thanks,
jcr

-- 
J.C. Roberts

Reply via email to