]> git.proxmox.com Git - ovs.git/commit
OVN: Add IGMP SB definitions and ovn-controller support
authorDumitru Ceara <dceara@redhat.com>
Mon, 15 Jul 2019 20:24:49 +0000 (22:24 +0200)
committerBen Pfaff <blp@ovn.org>
Tue, 16 Jul 2019 21:46:27 +0000 (14:46 -0700)
commitc89f5f171a0a189137af46c9cf7f132e27a48ca9
tree68c66c7a21cf83d20d91e21330bf1b3474848048
parent1db444539537f3ac776bec8d7752ac8306abb7d6
OVN: Add IGMP SB definitions and ovn-controller support

A new IP_Multicast table is added to Southbound DB. This table stores the
multicast related configuration for each datapath. Each row will be
populated by ovn-northd and will control:
- if IGMP Snooping is enabled or not, the snooping table size and multicast
  group idle timeout.
- if IGMP Querier is enabled or not (only if snooping is enabled too), query
  interval, query source addresses (Ethernet and IP) and the max-response
  field to be stored in outgoing queries.
- an additional "seq_no" column is added such that ovn-sbctl or if needed a
  CMS can flush currently learned groups. This can be achieved by incrementing
  the "seq_no" value.

A new IGMP_Group table is added to Southbound DB. This table stores all the
multicast groups learned by ovn-controllers. The table is indexed by
datapath, group address and chassis. For a learned multicast group on a
specific datapath each ovn-controller will store its own row in this table.
Each row contains the list of chassis-local ports on which the group was
learned. Rows in the IGMP_Group table are updated or deleted only by the
ovn-controllers that created them.

A new action ("igmp") is added to punt IGMP packets on a specific logical
switch datapath to ovn-controller if IGMP snooping is enabled.

Per datapath IGMP multicast snooping support is added to pinctrl:
- incoming IGMP reports are processed and multicast groups are maintained
  (using the OVS mcast-snooping library).
- each OVN controller syncs its in-memory IGMP groups to the Southbound DB
  in the IGMP_Group table.
- pinctrl also sends periodic IGMPv3 general queries for all datapaths where
  querier is enabled.

Signed-off-by: Mark Michelson <mmichels@redhat.com>
Co-authored-by: Mark Michelson <mmichels@redhat.com>
Signed-off-by: Dumitru Ceara <dceara@redhat.com>
Acked-by: Mark Michelson <mmichels@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
17 files changed:
include/ovn/actions.h
ovn/controller/automake.mk
ovn/controller/ip-mcast.c [new file with mode: 0644]
ovn/controller/ip-mcast.h [new file with mode: 0644]
ovn/controller/ovn-controller.c
ovn/controller/pinctrl.c
ovn/controller/pinctrl.h
ovn/lib/actions.c
ovn/lib/automake.mk
ovn/lib/ip-mcast-index.c [new file with mode: 0644]
ovn/lib/ip-mcast-index.h [new file with mode: 0644]
ovn/lib/logical-fields.c
ovn/ovn-sb.ovsschema
ovn/ovn-sb.xml
ovn/utilities/ovn-sbctl.c
ovn/utilities/ovn-trace.c
tests/ovn.at