[ovs-discuss] Resubmit vs Recirculate

Joe Stringer joe at wand.net.nz
Tue Aug 6 01:28:01 UTC 2013


When you install new OpenFlow rules, they are installed in the user table,
but not in the kernel table. When a packet is received, it is parsed to
gather its various packet attributes, and a lookup in the kernel table is
performed. A miss here causes an upcall to userspace, which will do a
lookup there and potentially install flows into the kernel.

For more information on how flows are chosen to be installed in the kernel,
there's a bit of information in ofproto-dpif-governor.h:
http://git.openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=ofproto/ofproto-dpif-governor.h;hb=HEAD

I put a summary of my understanding below:-

NXAST_RESUBMIT:
* Open vSwitch extension to OpenFlow. Doesn't require datapath support.
* Optionally make it appear like a packet came from a different port
* Continue processing in a table (same or different)
* Packet modifications are committed once at the end of rule processing

OVS_ACTION_ATTR_RECIRCULATE:
* Open vSwitch datapath interface extension. Not exposed at the OpenFlow
layer.
* Datapath interface inserts this action when it needs more information
about the packet, part way through rule processing.
* Commits all packet modifications and tells the datapath to re-insert the
packet with an ID (skb_mark) attached.
* Re-inserted packets go through the standard parse/lookup/upcall procedure
* Upcall uses the skb_mark to continue rule processing where the
recirculate happened
* This allows the datapath to re-parse a packet and provide more
information part way through rule-processing



On Tue, Aug 6, 2013 at 9:36 AM, K.R Kishore <krkishore at yahoo.com> wrote:

> Thanks.
> In addition to the ovs-ofctl manpage, here is a link to a good tutorial
> that explains this (for others who may be interested in
> learning about how this works)
>
> http://git.openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=tutorial/Tutorial;hb=HEAD
>
> I have also gathered that there is a single backing kernel table and it
> will only contain exact match flows but user space table will
> contain OpenFlow flows. What is the criteria to move a flow entry from
> user table to kernel table? Is every entry advanced and
> the less active entries simply get aged out?
>
> I have not seen explicit information of how Recirculation support will be
> added to the kernel table, if at all. Any info
> on this is much appreciated.
>
> thx,
> Kishore
>
>
>   ------------------------------
>  *From:* Ben Pfaff <blp at nicira.com>
> *To:* K.R Kishore <krkishore at yahoo.com>
> *Cc:* "discuss at openvswitch.org" <discuss at openvswitch.org>
> *Sent:* Monday, August 5, 2013 3:04 PM
>
> *Subject:* Re: [ovs-discuss] Resubmit vs Recirculate
>
> On Mon, Aug 05, 2013 at 03:01:20PM -0700, K.R Kishore wrote:
> >
> >
> > Maybe I am missing something basic here..can you please point me to the
> documentation?
>
> ovs-ofctl(8)
>
>
>
> _______________________________________________
> discuss mailing list
> discuss at openvswitch.org
> http://openvswitch.org/mailman/listinfo/discuss
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://openvswitch.org/pipermail/ovs-discuss/attachments/20130806/d60db2ab/attachment.html>


More information about the discuss mailing list