[ovs-dev] Introduction and request for some pointers

Jesse Gross jesse at nicira.com
Thu Mar 11 01:12:19 UTC 2010


Hi Greg,

Unfortunately there isn't too much documentation on the internals at the
moment: there is a file vswitchd/INTERNALS but currently it only covers
bonding, which is probably not the best place to start.

Here's an overview of the path that a packet takes:

We have support for modular datapath providers (lib/dpif.h,
lib/dpif-provider.h) to handle the fast path for packet processing, though
currently the primary one is a Linux kernel module (datapath/).  When a
packet is received it is compared to an exact match flow table, which is
populated on demand by ovs-vswitchd.  Since this is this first packet in the
flow there is no match and it is pushed to userspace for further processing.
 In userspace (ofproto/ofproto.c) it is matched against a more general flow
table that supports wildcards and a variety of actions according to the
OpenFlow spec.  In addition to specifying output ports the userspace flow
table (lib/classifier.c) may list a 'normal' action, in which case the
output is that of an L2 learning switch.  The normal action
(vswitchd/bridge.c) can provides MAC learning, bonding, etc.  The result of
the userspace processing is an exact match flow with a set of output ports
plus modifications such as adding or stripping VLAN tags.  This flow is
pushed into the datapath so that future packets can avoid the trip to
userspace.  The datapath is designed to be as simple and fast as possible,
keeping most of the logic in userspace.

Two other major libraries are netdev (lib/netdev.h), which is an abstraction
for userspace to access network devices and a new config database in the
'next' branch (ovsdb/).  The OpenFlow spec (openflowswitch.org) describes
the matching and output capability.

Hopefully that provides some insight in the major components but there are
plenty more, so feel free to ask.

Jesse

On Wed, Mar 10, 2010 at 6:46 PM, Rose, Gregory V
<gregory.v.rose at intel.com>wrote:

>  Greetings,
>
>
>
> I’m a developer for the Lan Access Division (LAD) at Intel and I’ve been
> working on SR-IOV features for our 1 Gig and 10 Gig Ethernet controllers
> that support the spec.  Specifically these are the 82576 and 82599 1 Gig and
> 10 Gig controllers respectively.  These controllers have an onboard switch
> with (very) basic L2 capabilities.  I’m looking at using Open vSwitch to
> create a way of configuring and monitoring the switches on these types of
> NICs (not just Intel) and hope to contribute to the project someday.  I
> could use some pointers on where to get started from those who know the code
> better than I.  I mean I could just start digging and eventually figure it
> out, but some tips on where to start would definitely help.
>
>
>
> I’ve already cloned the git tree, built the distro tar ball and used the
> XCP DDK VM to build the RPM which I’ve installed on my XCP 0.1.1 system.
> It’s working well so far so I’m ready to get my hands dirty and start
> hacking things up.  Any pointers to get me jump-started will be greatly
> appreciated.
>
>
>
> Regards,
>
>
>
> - Greg Rose
>
> Intel Corp.
>
> Lan Access Division
>
>
>
> ----------
>
>
>
> No one is useless in this world who lightens the burdens of another.
>
>
>
> - Charles Dickens**
>
>
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev_openvswitch.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-dev/attachments/20100310/ea9146e3/attachment-0003.html>


More information about the dev mailing list