To allow fine tuning the right value for MAC binding aging add configuration into NB global table called "mac_binding_age_threshold" which accept threshold in seconds. Default value being 60 if not specified.
Reported-at: https://bugzilla.redhat.com/2084668 Signed-off-by: Ales Musil <amu...@redhat.com> --- controller/ovn-controller.c | 16 +++++++++++++++- ovn-nb.xml | 5 +++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c index f91efadf5..9c77c5fcb 100644 --- a/controller/ovn-controller.c +++ b/controller/ovn-controller.c @@ -2292,6 +2292,7 @@ non_vif_data_ovs_iface_handler(struct engine_node *node, void *data OVS_UNUSED) struct ed_type_northd_options { bool lb_hairpin_use_ct_mark; + unsigned long long mb_age_threshold_msec; }; @@ -2322,6 +2323,9 @@ en_northd_options_run(struct engine_node *node, void *data) ? smap_get_bool(&sb_global->options, "lb_hairpin_use_ct_mark", DEFAULT_SB_GLOBAL_LB_HAIRPIN_USE_CT_MARK) : DEFAULT_SB_GLOBAL_LB_HAIRPIN_USE_CT_MARK; + n_opts->mb_age_threshold_msec = + smap_get_ullong(&sb_global->options, "mac_binding_age_threshold", + 60) * 1000; engine_set_node_state(node, EN_UPDATED); } @@ -2339,11 +2343,19 @@ en_northd_options_sb_sb_global_handler(struct engine_node *node, void *data) ? smap_get_bool(&sb_global->options, "lb_hairpin_use_ct_mark", DEFAULT_SB_GLOBAL_LB_HAIRPIN_USE_CT_MARK) : DEFAULT_SB_GLOBAL_LB_HAIRPIN_USE_CT_MARK; + unsigned long long mb_age_threshold_msec = + smap_get_ullong(&sb_global->options, "mac_binding_age_threshold", + 60) * 1000; if (lb_hairpin_use_ct_mark != n_opts->lb_hairpin_use_ct_mark) { n_opts->lb_hairpin_use_ct_mark = lb_hairpin_use_ct_mark; engine_set_node_state(node, EN_UPDATED); } + + if (mb_age_threshold_msec != n_opts->mb_age_threshold_msec) { + n_opts->mb_age_threshold_msec = mb_age_threshold_msec; + engine_set_node_state(node, EN_UPDATED); + } return true; } @@ -3960,12 +3972,14 @@ main(int argc, char *argv[]) } stopwatch_start(MAC_BIDNING_AGING_STOPWATCH_NAME, time_msec()); + struct ed_type_northd_options *n_opts = + engine_get_data(&en_northd_options); mac_binding_aging_run(ovnsb_idl_txn ,br_int->name, chassis, sbrec_mac_binding_table_get (ovnsb_idl_loop.idl), sbrec_mac_biding_by_chassis, - 60000); + n_opts->mb_age_threshold_msec); stopwatch_stop(MAC_BIDNING_AGING_STOPWATCH_NAME, time_msec()); stopwatch_start(PINCTRL_RUN_STOPWATCH_NAME, diff --git a/ovn-nb.xml b/ovn-nb.xml index 14a624c16..630f906b5 100644 --- a/ovn-nb.xml +++ b/ovn-nb.xml @@ -162,6 +162,11 @@ dynamically assigned, e.g. <code>00:11:22</code> </column> + <column name="options" key="mac_binding_age_threshold"> + MAC binding aging <code>threshold</code> value in secs. MAC binding + exceeding this timeout will be automatically removed. + </column> + <column name="options" key="controller_event" type='{"type": "boolean"}'> Value set by the CMS to enable/disable ovn-controller event reporting. Traffic into OVS can raise a 'controller' event that results in a -- 2.35.3 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev