[ovs-dev,RFC,0/3] OVN: add Controller Events
mbox series

Message ID cover.1558021382.git.lorenzo.bianconi@redhat.com
Headers show
Series
  • OVN: add Controller Events
Related show

Message

Lorenzo Bianconi May 16, 2019, 4:05 p.m. UTC
There are situations where arrival of certain types of traffic into OVS
does not warrant a "typical" action, such as output to a specific port
or dropping. Rather, the decision about what to do needs to be left to a
CMS.

The series here introduces a new table, Controller_Event, for this
purpose. Traffic into OVS can raise a controller() event that results in
a Controller_Event being written to the southbound database. The
intention is for a CMS to see the events and take some sort of action.
The "handled" column of the event is initially set to "false" by OVN.
When the CMS has seen the event and taken appropriate action, then the
CMS sets this field to "true'. When ovn-controller sees that the event
has been handled, it deletes the event from the database.

Controller events are only added to the southbound database if they have
been enabled in the nb_global table via the options:controller_event
setting.

This series introduces a new event, empty_lb_backends. This event is
raised if a received packet is destined for a load balancer VIP that has
no configured backend destinations. For this event, the event info
includes the load balancer VIP, the load balancer UUID, and the
transport protocol.

The use case for this particular event is for the CMS to supply backend
resources to handle this traffic. For example, in Openshift, this event
can be used to spin up new containers to handle the incoming traffic.

Lorenzo Bianconi (3):
  OVN: introduce Controller_Event table
  OVN: introduce send_event() action
  OVN: use send_event action to report 'empty_lb_rule' events

 include/ovn/actions.h           |  17 ++-
 include/ovn/logical-fields.h    |  17 +++
 ovn/controller/lflow.c          |   8 ++
 ovn/controller/ovn-controller.c |   2 +
 ovn/controller/pinctrl.c        | 239 ++++++++++++++++++++++++++++++++
 ovn/controller/pinctrl.h        |   2 +
 ovn/lib/actions.c               | 169 ++++++++++++++++++++++
 ovn/lib/ovn-l7.h                |  46 ++++++
 ovn/northd/ovn-northd.c         |  32 +++++
 ovn/ovn-nb.xml                  |   5 +
 ovn/ovn-sb.ovsschema            |  16 ++-
 ovn/ovn-sb.xml                  |  33 +++++
 ovn/utilities/ovn-trace.c       |   3 +
 tests/ovn.at                    |  76 ++++++++++
 tests/test-ovn.c                |  11 +-
 15 files changed, 670 insertions(+), 6 deletions(-)