X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=DESIGN;h=c53a8ea3f54a839aaeb1b6a08d005961e5e8cefd;hb=c06bba01302e3dc1ec7808024bc37ce90956b49e;hp=2e3fced8067e681bf6f87877694d6c48ee3c3043;hpb=946350dce6c717af540f2bff68f1012fc8414d86;p=openvswitch diff --git a/DESIGN b/DESIGN index 2e3fced8..c53a8ea3 100644 --- a/DESIGN +++ b/DESIGN @@ -9,6 +9,38 @@ successful deployment. The end of this document contains contact information that can be used to let us know how we can make Open vSwitch more generally useful. +OpenFlow +======== + +The OpenFlow 1.0 specification requires the output port of the OFPAT_ENQUEUE +action to "refer to a valid physical port (i.e. < OFPP_MAX) or OFPP_IN_PORT". +Although OFPP_LOCAL is not less than OFPP_MAX, it is an 'internal' port which +can have QoS applied to it in Linux. Since we allow the OFPAT_ENQUEUE to apply +to 'internal' ports whose port numbers are less than OFPP_MAX, we interpret +OFPP_LOCAL as a physical port and support OFPAT_ENQUEUE on it as well. + + +Multiple Table Support +====================== + +OpenFlow 1.0 has only rudimentary support for multiple flow tables. +Notably, OpenFlow 1.0 does not allow the controller to specify the +flow table to which a flow is to be added. Open vSwitch adds an +extension for this purpose, which is enabled on a per-OpenFlow +connection basis using the NXT_FLOW_MOD_TABLE_ID message. When the +extension is enabled, the upper 8 bits of the 'command' member in an +OFPT_FLOW_MOD or NXT_FLOW_MOD message designates the table to which a +flow is to be added. + +The Open vSwitch software switch implementation offers 255 flow +tables. On packet ingress, only the first flow table (table 0) is +searched, and the contents of the remaining tables are not considered +in any way. Tables other than table 0 only come into play when an +NXAST_RESUBMIT_TABLE action specifies another table to search. + +Tables 128 and above are reserved for use by the switch itself. +Controllers should use only tables 0 through 127. + IPv6 ====