Acked-by: Jarno Rajahalme <jrajaha...@nicira.com>

On Sep 11, 2013, at 10:02 AM, Ben Pfaff <b...@nicira.com> wrote:

> Reported-by: Aws Auger <ovshel...@gmail.com>
> Signed-off-by: Ben Pfaff <b...@nicira.com>
> ---
> FAQ |   50 ++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 50 insertions(+)
> 
> diff --git a/FAQ b/FAQ
> index 7181484..20a3e3b 100644
> --- a/FAQ
> +++ b/FAQ
> @@ -1249,6 +1249,56 @@ A: An empty set of actions causes a packet to be 
> dropped.  You can
> 
>        ovs-ofctl add-flow br0 priority=65535,actions=drop
> 
> +Q: I added a flow to send packets out the ingress port, like this:
> +
> +       ovs-ofctl add-flow br0 in_port=2,actions=2
> +
> +   but OVS drops the packets instead.
> +
> +A: Yes, OpenFlow requires a switch to ignore attempts to send a packet
> +   out its ingress port.  The rationale is that dropping these packets
> +   makes it harder to loop the network.  Sometimes this behavior can
> +   even be convenient, e.g. it is often the desired behavior in a flow
> +   that forwards a packet to several ports ("floods" the packet).
> +
> +   Sometimes one really needs to send a packet out its ingress port.
> +   In this case, output to OFPP_IN_PORT, which in ovs-ofctl syntax is
> +   expressed as just "in_port", e.g.:
> +
> +       ovs-ofctl add-flow br0 in_port=2,actions=in_port
> +
> +   This also works in some circumstances where the flow doesn't match
> +   on the input port.  For example, if you know that your switch has
> +   five ports numbered 2 through 6, then the following will send every
> +   received packet out every port, even its ingress port:
> +
> +       ovs-ofctl add-flow br0 actions=2,3,4,5,6,in_port
> +
> +   or, equivalently:
> +
> +       ovs-ofctl add-flow br0 actions=all,in_port
> +
> +   Sometimes, in complicated flow tables with multiple levels of
> +   "resubmit" actions, a flow needs to output to a particular port
> +   that may or may not be the ingress port.  It's difficult to take
> +   advantage of OFPP_IN_PORT in this situation.  To help, Open vSwitch
> +   provides, as an OpenFlow extension, the ability to modify the
> +   in_port field.  Whatever value is currently in the in_port field is
> +   the port to which outputs will be dropped, as well as the
> +   destination for OFPP_IN_PORT.  This means that the following will
> +   reliably output to port 2 or to ports 2 through 6, respectively:
> +
> +       ovs-ofctl add-flow br0 in_port=2,actions=load:0->NXM_OF_IN_PORT[],2
> +       ovs-ofctl add-flow br0 actions=load:0->NXM_OF_IN_PORT[],2,3,4,5,6
> +
> +   If the input port is important, then one may save and restore it on
> +   the stack:
> +
> +        ovs-ofctl add-flow br0 actions=push:NXM_OF_IN_PORT[],\
> +                                       load:0->NXM_OF_IN_PORT[],\
> +                                       2,3,4,5,6,\
> +                                       pop:NXM_OF_IN_PORT[]
> +
> 
> Contact 
> -------
> -- 
> 1.7.10.4
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to