For SNAT, don't store the pre-fragment L2 header before actions are applied.
[sliver-openvswitch.git] / README.hwtables
1 Hardware Table Support                                  -*- text -*-
2 ----------------------
3
4 The OpenFlow reference implementation in this distribution provides a
5 mechanism to support hardware that can accelerate OpenFlow switching.
6 The mechanism consists of the ability to add a "hardware acceleration"
7 switching table ahead of the software switching tables implemented by
8 the reference implementation.  The hardware switching table is
9 expected to handle any incoming packets that it can on its own.  Any
10 packets that it cannot handle itself it may pass up to the software
11 table implementations.
12
13 Hardware table implementation are built as separate kernel modules
14 that may be loaded after the openflow module.  At most one hardware
15 table module may be loaded at a time.  Only datapaths created after a
16 hardware table module is loaded (and before it is unloaded) will take
17 advantage of hardware switching features.
18
19 Creating a hardware table module is straightforward.  Create a
20 directory in the openflow source tree named datapath/hwtable_NAME,
21 where NAME identifies the hardware that the module supports.  Populate
22 that directory with the C source files that comprise the module, plus
23 a file named Modules.mk that specifies how to build the module.  This
24 distribution includes a "dummy" hardware module that demonstrates how
25 this works.
26
27 Even though only one may be loaded at a given time, any number of
28 hardware table modules may be built along with the OpenFlow kernel
29 modules.  Specify each NAME that identifies a module to be built on
30 the OpenFlow configure script command as the argument to
31 --enable-hw-tables, e.g.:
32         ./configure --enable-hw-tables=NAME
33
34 Each hardware table module's code is encapsulated in a directory, so
35 it is easy to separate a hardware table implementation from OpenFlow.
36 Simply package up the contents of the hwtable_NAME directory and
37 distribute it for builders to extract into their distribution
38 directory.