Both paper and explanation were most helpful. Thank you. Solved the issue.
> I'll try to explain a typical dataflow... > > A packet arrives at the Host, goes to the vswitch. If there's no matching > entry in the datapath flows CACHE, implemented in the ovs kernel datapath > module, then the packet is sent to the user space controller - vswitchd. > However, If there's a cached entry then it's switched according to the > matching action. > > When the packet arrives the user space vswitchd (due to a cache miss as > explained above), this is the entity that implements the openflow stack. > The openflow implementation in the user space code uses multiple tables, > priorities etc. to decide on what is the ACTION associated with the new > flow, and then it translates the multiple tables/priorities etc into a > DATAPATH flow - single flow (a collapse of all the relevant fields from > the relevant openflow tables that lead to the specific action. So no now > the result of the openflow vswitchd for the relevant flow at hand, is a > single flow-spec (flat classifier - not multiple tables etc) and an > action. At this point the ovswitchd installs this flow+action into the > datapath module in the kernel and subsequent packets will be switched by > the vswitch in the kernel. > > I hope this helps. > > - Tal > > -----Original Message----- > From: discuss [mailto:discuss-boun...@openvswitch.org] On Behalf Of > dsa...@cs.technion.ac.il > Sent: Sunday, November 15, 2015 2:09 PM > To: discuss@openvswitch.org > Subject: Re: [ovs-discuss] find the goto table instruction in the code > > > Pardon my ignorance then, but it seems I got it wrong when I thought the > main flow tables were in the Kernel. Then, if the main flows are stored in > userspace, does that mean the data packets arrive directly to the > userspace client code and treated there? Instead of arriving to some > listener process in the kernel? I thought that packets arrive to the > kernel code directly and if they, for example, are redirected to another > port, the userspace doesn't even know the packet arrived or existed and no > upcalls are generated. > > Can you shed some light please? > >>> On Nov 12, 2015, at 4:52 AM, dsa...@cs.technion.ac.il wrote: >>> >>> Hi to all, >>> >>> I want to locate the code (I imagine it is inside of the Kernel >>> module >>> datapath) where when a flow is found, the instructions are executed, >>> it finds the "goto table" instruction and redirects the packet to >>> another table. >> >> "goto table" is an entirely userspace concept. The kernel flows are a >> cache of recently seen flows and their associated actions with all the >> table jumps removed. Here's an entry from the FAQ that help explain >> it: >> >> -=-=-=-=-=-=-=-=-=- >> Q: I hear OVS has a couple of kinds of flows. Can you tell me about >> them? >> >> A: Open vSwitch uses different kinds of flows for different purposes: >> >> • OpenFlow flows are the most important kind of flow. OpenFlow >> controllers use these flows to define a switch's policy. OpenFlow >> flows support wildcards, priorities, and multiple tables. >> >> When in-band control is in use, Open vSwitch sets up a few "hidden" >> flows, with priority higher than a controller or the user can >> configure, that are not visible via OpenFlow. (See the "Controller" >> section of the FAQ for more information about hidden flows.) >> >> • The Open vSwitch software switch implementation uses a second kind >> of flow internally. These flows, called "datapath" or "kernel" flows, >> do not support priorities and comprise only a single table, which >> makes them suitable for caching. (Like OpenFlow flows, datapath flows >> do support wildcarding, in Open vSwitch 1.11 and later.) OpenFlow >> flows and datapath flows also support different actions and number ports >> differently. >> >> Datapath flows are an implementation detail that is subject to change >> in future versions of Open vSwitch. Even with the current version of >> Open vSwitch, hardware switch implementations do not necessarily use >> this architecture. >> >> Users and controllers directly control only the OpenFlow flow table. >> Open vSwitch manages the datapath flow table itself, so users should >> not normally be concerned with it. >> -=-=-=-=-=-=-=-=-=- >> >> --Justin >> >> >> > > > _______________________________________________ > discuss mailing list > discuss@openvswitch.org > http://openvswitch.org/mailman/listinfo/discuss > _______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss