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.