forked from ovn-org/ovn
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
northd: Refactor lflow management into a separate module.
ovn_lflow_add() and other related functions/macros are now moved into a separate module - lflow-mgr.c. This module maintains a table 'struct lflow_table' for the logical flows. lflow table maintains a hmap to store the logical flows. It also maintains the logical switch and router dp groups. Previous commits which added lflow incremental processing for the VIF logical ports, stored the references to the logical ports' lflows using 'struct lflow_ref_list'. This struct is renamed to 'struct lflow_ref' and is part of lflow-mgr.c. It is modified a bit to store the resource to lflow references. Example usage of 'struct lflow_ref'. 'struct ovn_port' maintains 2 instances of lflow_ref. i,e struct ovn_port { ... ... struct lflow_ref *lflow_ref; struct lflow_ref *stateful_lflow_ref; }; All the logical flows generated by build_lswitch_and_lrouter_iterate_by_lsp() uses the ovn_port->lflow_ref. All the logical flows generated by build_lsp_lflows_for_lbnats() uses the ovn_port->stateful_lflow_ref. When handling the ovn_port changes incrementally, the lflows referenced in 'struct ovn_port' are cleared and regenerated and synced to the SB logical flows. eg. lflow_ref_clear_lflows(op->lflow_ref); build_lswitch_and_lrouter_iterate_by_lsp(op, ...); lflow_ref_sync_lflows_to_sb(op->lflow_ref, ...); This patch does few more changes: - Logical flows are now hashed without the logical datapaths. If a logical flow is referenced by just one datapath, we don't rehash it. - The synthetic 'hash' column of sbrec_logical_flow now doesn't use the logical datapath. This means that when ovn-northd is updated/upgraded and has this commit, all the logical flows with 'logical_datapath' column set will get deleted and re-added causing some disruptions. - With the commit [1] which added I-P support for logical port changes, multiple logical flows with same match 'M' and actions 'A' are generated and stored without the dp groups, which was not the case prior to that patch. One example to generate these lflows is: ovn-nbctl lsp-set-addresses sw0p1 "MAC1 IP1" ovn-nbctl lsp-set-addresses sw1p1 "MAC1 IP1" ovn-nbctl lsp-set-addresses sw2p1 "MAC1 IP1" Now with this patch we go back to the earlier way. i.e one logical flow with logical_dp_groups set. - With this patch any updates to a logical port which doesn't result in new logical flows will not result in deletion and addition of same logical flows. Eg. ovn-nbctl set logical_switch_port sw0p1 external_ids:foo=bar will be a no-op to the SB logical flow table. [1] - 8bbd678("northd: Incremental processing of VIF additions in 'lflow' node.") Acked-by: Dumitru Ceara <[email protected]> Signed-off-by: Numan Siddique <[email protected]>
- Loading branch information
1 parent
81ef772
commit a623606
Showing
13 changed files
with
2,561 additions
and
1,463 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.