This patch is aimed at achieving Fastpath Service Assurance in
OVS-DPDK deployments. This commit adds support for monitoring the packet
processing cores(pmd thread cores) by dispatching heartbeats at regular
intervals. Incase of heartbeat miss the failure shall be detected &
reported to higher level fault management systems/frameworks.

The implementation uses POSIX shared memory object for storing the
events that will be read by monitoring framework. keep-alive feature
can be enabled through below OVSDB settings.

    keepalive=true
       - Keepalive feature is disabled by default

    keepalive-interval="50"
       - Timer interval in milliseconds for monitoring the packet
         processing cores.

    keepalive-shm-name="/dpdk_keepalive_shm_name"
       - Shared memory block name where the events shall be updated.

When KA is enabled, 'ovs-keepalive' thread shall be spawned that wakes
up at regular intervals to update the timestamp and status of pmd cores
in shared memory region.

An external monitoring framework like collectd(with dpdk plugin support)
can read the status updates from shared memory. On a missing heartbeat,
the collectd shall relay the status to ceilometer service running in the
controller. Below is the high level overview of deployment model.

        Compute Node                   Controller

         Collectd  <-----------------> Ceilometer

         OVS DPDK

   +-----+
   | VM  |
   +--+--+
  \---+---/
      |
   +--+---+       +------------+----------+     +------+-------+
   | OVS  |-----> |    dpdkevents plugin  | --> |   collectd   |
   +--+---+       +------------+----------+     +------+-------+

 +------+-----+     +---------------+------------+
 | Ceilometer | <-- | collectd ceilometer plugin |  <----
 +------+-----+     +---------------+------------+

v1->v2:
- Sort the patches in the order leaving no dead code behind.
- Remove xusleep() implementation and instead used usleep().
- Replace '_WIN32' with '__linux__' in get_process_status().
- Add comments for different Keepalive states.
- Remove semaphore and all the logic associated with it.
- Fix the documentation as suggested.
- Fix and added few appropriate comments to KA helper functions.
- Add latency stats details in the commit log for future reference.

Bhanuprakash Bodireddy (6):
  dpdk: Add helper functions for DPDK keepalive.
  process: Retrieve process status.
  dpif-netdev: Register packet processing cores for keepalive.
  netdev-dpdk: Add support for keepalive functionality.
  vswitch.xml: Add keepalive support.
  Documentation: Update DPDK doc with Keepalive feature.

 Documentation/howto/dpdk.rst |  93 ++++++++++++++++++
 lib/dpdk-stub.c              |  30 ++++++
 lib/dpdk.c                   |  92 ++++++++++++++++++
 lib/dpdk.h                   |  11 ++-
 lib/dpif-netdev.c            |  19 ++++
 lib/netdev-dpdk.c            | 220 ++++++++++++++++++++++++++++++++++++++++++-
 lib/netdev-dpdk.h            |   4 +
 lib/process.c                |  60 ++++++++++++
 lib/process.h                |  10 ++
 vswitchd/vswitch.xml         |  38 ++++++++
 10 files changed, 575 insertions(+), 2 deletions(-)

-- 
2.4.11

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to