Signed-off-by: Ben Pfaff <b...@ovn.org> --- FAQ.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+)
diff --git a/FAQ.md b/FAQ.md index df6f225..2babb8f 100644 --- a/FAQ.md +++ b/FAQ.md @@ -2029,6 +2029,47 @@ A: OpenFlow actions are executed in the order specified. Thus, the ovs-ofctl add-flow br0 dl_vlan=123,actions=mod_vlan_vid:456,output:1 +### Q: The "learn" action can't learn the action I want, can you improve it? + +A: By itself, the "learn" action can only put two kinds of actions + into the flows that it creates: "load" and "output" actions. If + "learn" is used in isolation, these are severe limits. + + Howver, "learn" is not meant to be used in isolation. It is a + primitive meant to be used together with other Open vSwitch + features to accomplish a task. Its existing features are enough to + accomplish most tasks. + + Here is an outline of a typical pipeline structure that allows for + versatile behavior using "learn": + + - Flows in table A contain a "learn" action, that populates flows + in table L, that use a "load" action to populate register R + with information about what was learned. + + - Flows in table B contain two sequential resubmit actions: one + to table L and another one to table B+1. + + - Flows in table B+1 match on register R and act differently + depending on what the flows in table L loaded into it. + + This approach can be used to implement many "learn"-based features. + For example: + + - Resubmit to a table selected based on learned information, e.g. see: + http://openvswitch.org/pipermail/discuss/2016-June/021694.html + + - MAC learning in the middle of a pipeline, as described in + [Tutorial.md]. + + - TCP state based firewalling, by learning outgoing connections + based on SYN packets and matching them up with incoming + packets. + + - At least some of the features described in T. A. Hoff, + "Extending Open vSwitch to Facilitate Creation of Stateful SDN + Applications". + Development ----------- @@ -2095,3 +2136,4 @@ http://openvswitch.org/ [INSTALL.md]:INSTALL.md [OPENFLOW-1.1+.md]:OPENFLOW-1.1+.md [INSTALL.DPDK.md]:INSTALL.DPDK.md +[Tutorial.md]:tutorial/Tutorial.md -- 2.1.3 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev