[ovs-discuss] What is the role of ovsdb-server and vswitchd?

Ben Pfaff blp at nicira.com
Wed Sep 21 04:31:49 UTC 2011


On Tue, Sep 20, 2011 at 09:18:46PM -0700, Aishwarya wrote:
> The instructions to start openvswitch say we need to run ovsdbserver
> (listening on a unix socket in my case), and vswitchd subsequently. Now,
> openvswitch is said to route packets in the kernel itself and not use
> userspace. 

The Open vSwitch kernel module does almost nothing on its own
initiative.  Userspace and in particular ovs-vswitchd is a vital part of
setting up flows.

> However, ovsdb-server and vswitchd are user processes. What is the
> role of these actually when 2 vms are trying to send traffic via the
> openvswitch? 

When a new flow arrives, ovs-vswitchd decides where its packets should
go.

> Lets say I configure the flow rules and then kill the vswitchd
> process, the vms cannot communicate anymore. Why should this happen
> although the kernel module is still loaded? How is the routing of the
> packet being affected by these user level processes? 

When new flow arrives, ovs-vswitchd isn't running so it can't decide
where the packets should go.  They get dropped.

> I would assume that the database server would be needed only to query
> something like port or flow information. But it seems to be necessary
> while sending traffic too. Is this because the switch on receiving
> traffic is querying the database to check for the flows, before
> sending the traffic out? 

No.

> In that case, what does it mean that openvswitch has High-performance
> forwarding using a Linux kernel module (since it is using the user
> space program as well?)

Once ovs-vswitchd decides where packets in a flow should go, they get
forwarded quickly by the kernel.



More information about the discuss mailing list