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

ovn-northd incremental processing - handle logical router creation/deletion

    • Icon: Epic Epic
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • None
    • OVN
    • ovn-northd incremental processing - handle logical router creation/deletion
    • False
    • False
    • Hide

      Please mark each item below with ( / ) if completed or ( x ) if incomplete:

      ( ) The acceptance criteria defined below are met.

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

      When a logical router is created or deleted,

      Then, the ovn-northd incremental processing should handle the logical router change without triggering a full lflow recompute.


      ( ) The epics work is available in a downstream build (nightly/async or other)


      ( ) Test coverage is available in downstream CI if applicable


      ( ) All cards under the epic have been moved to Done


      ( ) Failed Test Plans have bugs added as children to the epic/feature.

      Show
      Please mark each item below with ( / ) if completed or ( x ) if incomplete: ( ) The acceptance criteria defined below are met. Given a system administrator managing a network with ovn-northd, When a logical router is created or deleted, Then, the ovn-northd incremental processing should handle the logical router change without triggering a full lflow recompute. ( ) The epics work is available in a downstream build (nightly/async or other) ( ) Test coverage is available in downstream CI if applicable ( ) All cards under the epic have been moved to Done ( ) Failed Test Plans have bugs added as children to the epic/feature.
    • FDP-759 - Improve ovn-northd incremental processing for network topology changes.
    • ovn26.03-26.03.0-alpha.68.el9fdp
    • rhel-9
    • rhel-net-ovn
    • 67% To Do, 0% In Progress, 33% Done
    • ssg_networking
    • FDP 24.H, FDP 25.A, OVN FDP Sprint 8, OVN FDP Sprint 9
    • 4

      This epic tracks all the effort needed to deliver the solution related to the feature request described below.
      Currently northd incremental processing fails when logical routers are added/removed.  The I-P node dependency is:

      NB.Logical_Router -> en_northd -> en_lflow

      When a new router is created/deleted the "en_northd" input handler for logical routers is called:

      bool
      northd_handle_lr_changes(const struct northd_input *ni,
                               struct northd_data *nd)
      {
          const struct nbrec_logical_router *changed_lr;    NBREC_LOGICAL_ROUTER_TABLE_FOR_EACH_TRACKED (changed_lr,
                                                   ni->nbrec_logical_router_table) {
              if (nbrec_logical_router_is_new(changed_lr) ||
                  nbrec_logical_router_is_deleted(changed_lr)) {
                  goto fail;
              }
      ...
      fail:
          destroy_northd_data_tracked_changes(nd);
          return false;
      }

      which in turn causes "en_lflow" handler for en_northd data changes to fail:

      bool
      lflow_northd_handler(struct engine_node *node,
                           void *data)
      {
          struct northd_data *northd_data = engine_get_input_data("northd", node);
          if (!northd_has_tracked_data(&northd_data->trk_data)) {
              return false;
          }
      ... 

      This triggers a full recompute of the "en_lflow" node which can be costly at scale.

              jtanenba@redhat.com Jacob Tanenbaum (Inactive)
              dceara@redhat.com Dumitru Ceara
              OVN
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: