40 lines
1.9 KiB
Plaintext
40 lines
1.9 KiB
Plaintext
Hardware Table Support -*- text -*-
|
|
----------------------
|
|
|
|
The OpenFlow reference implementation in this distribution provides a
|
|
mechanism to support hardware that can accelerate OpenFlow switching.
|
|
The mechanism consists of the ability to add a "hardware acceleration"
|
|
switching table ahead of the software switching tables implemented by
|
|
the reference implementation. The hardware switching table is
|
|
expected to handle any incoming packets that it can on its own. Any
|
|
packets that it cannot handle itself it may pass up to the software
|
|
table implementations.
|
|
|
|
Hardware table implementation are provided as a library and built
|
|
in the userspace datapath executable.
|
|
|
|
Creating a hardware table module is straightforward. Create a
|
|
directory in the openflow source tree named hw-lib/NAME,
|
|
where NAME identifies the hardware that the module supports. Populate
|
|
that directory with the C source files that comprise the module, plus
|
|
a file named automake.mk that specifies how to build the module in
|
|
the hw-lib directory. This distribution includes a "skeleton" hardware
|
|
library that demonstrates how this works.
|
|
|
|
When you perform 'configure', specify each NAME that identifies a
|
|
library to be included on the OpenFlow configure script command as
|
|
the argument to --enable-hw-lib, e.g.:
|
|
./configure --enable-hw-lib=NAME
|
|
|
|
Each hardware table library's code is encapsulated in a directory, so
|
|
it is easy to separate a hardware table implementation from OpenFlow.
|
|
Simply package up the contents of the hw-lib/NAME directory and
|
|
distribute it for builders to extract into their distribution
|
|
directory.
|
|
|
|
Included in this distribution is a dummy hardware table to aid in beginning
|
|
your own hardware table port, it is located in the hw-lib/skeleton
|
|
folder. Also included is a fully functional NetFPGA hardware table that can run
|
|
as a 1Gbx4 port line-rate OpenFlow switch. Information and instructions for its
|
|
use can be found in the hw-lib/nf2/README file.
|