Search code examples
network-programmingsdnopenflowopenvswitch

Implementing arbitrary actions for Open vSwitch


Using Open vSwitch is it possible to new arbitrary actions besides the ones currently defined? The provided command line interfaces, such as ovs-ofctl, allow constrained rules such as ovs-ofctl add-flow s1 priority=500, in_port=1, actions=output:2, to connect two ports, etc. However, I couldn't find support for functionality beyond this, to create more complex actions. Specifically, the goal is to create a system for flow sampling and monitoring algorithms. Is there is a way to do this within Open vSwitch, or would other tools need to be used, such as BPF/XDP?


Solution

  • The complete list of 60+ different Open vSwitch actions is in the documentation for the ovs-ofctl command (right after actions=[action][,action...]).

    You can do lots of different things (from modifying packet fields to calling the conntrack module), but there is currently no way to define new arbitrary actions. Defining new arbitrary actions is the subject of several academic works (such as SoftFlow, to cite only one) and a few prototypes.