Uploaded image for project: 'Fast Datapath Product'
  1. Fast Datapath Product
  2. FDP-758

ovn-northd incremental processing - handle port group <-> switch mapping changes

XMLWordPrintable

    • Icon: Story Story
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • None
    • ovn24.09
    • 8
    • False
    • Hide

      None

      Show
      None
    • False
    • Hide

      Given a system administrator managing a network with ovn-northd,

      When there is a change in the mapping between a port group and the set of logical switches that contain ports in that group, or when stateful ACLs associated with those port groups are updated,

      Then, the ovn-northd incremental processing should handle the port group to switch mapping changes and associated stateful ACL updates without triggering a full lflow recompute.

      Show
      Given a system administrator managing a network with ovn-northd, When there is a change in the mapping between a port group and the set of logical switches that contain ports in that group, or when stateful ACLs associated with those port groups are updated, Then, the ovn-northd incremental processing should handle the port group to switch mapping changes and associated stateful ACL updates without triggering a full lflow recompute.
    • rhel-sst-network-fastdatapath
    • ssg_networking

      Port groups are collections of logical switch ports.  Currently northd incremental processing fails when the mapping between a port group and the sets of switches that have ports in the port group changes.  The I-P node dependencies are:

      en_port_group -> en_lflow (lflow_port_group_handler() handler)

      en_port_group -> en_ls_stateful (ls_stateful_port_group_handler() handler) -> en_lflow (lflow_ls_stateful_handler() handler)

      The handlers are implemented as:

      bool
      lflow_port_group_handler(struct engine_node *node, void *data OVS_UNUSED)
      {
          struct port_group_data *pg_data =
              engine_get_input_data("port_group", node);    /* If the set of switches per port group didn't change then there's no
           * need to reprocess lflows.  Otherwise, there might be a need to
           * add/delete port-group ACLs to/from switches. */
          if (pg_data->ls_port_groups_sets_changed) {
              return false;
          }
      ...
      
      bool
      ls_stateful_port_group_handler(struct engine_node *node, void *data_)
      {
          struct port_group_data *pg_data =
              engine_get_input_data("port_group", node);    if (pg_data->ls_port_groups_sets_changed) {
              return false;
          }
      ...

      Failure to handle such updates triggers a full recomputation of the lflow I-P node which can be costly at scale.

              ovnteam@redhat.com OVN Team
              dceara@redhat.com Dumitru Ceara
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: