[ovs-dev] Introduction and request for some pointers

Rose, Gregory V gregory.v.rose at intel.com
Thu Mar 11 16:46:20 UTC 2010


I appreciate the pointers Jesse.  Tracing packet processing looks like a good place to get started.

Regards,

- Greg

From: Jesse Gross [mailto:jesse at nicira.com]
Sent: Wednesday, March 10, 2010 5:12 PM
To: Rose, Gregory V
Cc: dev at openvswitch.org
Subject: Re: [ovs-dev] Introduction and request for some pointers

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<http://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<mailto: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<mailto: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/20100311/2958c0d3/attachment-0003.html>


More information about the dev mailing list