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 <[email protected]> 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 <[email protected]> > *To:* K.R Kishore <[email protected]> > *Cc:* "[email protected]" <[email protected]> > *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 > [email protected] > http://openvswitch.org/mailman/listinfo/discuss > >
_______________________________________________ discuss mailing list [email protected] http://openvswitch.org/mailman/listinfo/discuss
