Skip to content

Commit

Permalink
ovn-controller: I-P for datapath binding
Browse files Browse the repository at this point in the history
This patch adds partial support of incremental processing of datapath binding.
If a datapath is deleted, then a full recompute is triggered if that
datapath is present in the 'local_datapaths' hmap of runtime data.

Acked-by: Mark Michelson <mmichels@redhat.com>
Acked-by: Han Zhou <hzhou@ovn.org>
Acked-by: Dumitru Ceara <dceara@redhat.com>
Signed-off-by: Numan Siddique <numans@ovn.org>
  • Loading branch information
numansiddique committed Jun 9, 2020
1 parent 7bf2171 commit ae8997e
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
25 changes: 24 additions & 1 deletion controller/ovn-controller.c
Expand Up @@ -1196,6 +1196,28 @@ runtime_data_sb_port_binding_handler(struct engine_node *node, void *data)
return true;
}

static bool
runtime_data_sb_datapath_binding_handler(struct engine_node *node OVS_UNUSED,
void *data OVS_UNUSED)
{
struct sbrec_datapath_binding_table *dp_table =
(struct sbrec_datapath_binding_table *)EN_OVSDB_GET(
engine_get_input("SB_datapath_binding", node));
const struct sbrec_datapath_binding *dp;
struct ed_type_runtime_data *rt_data = data;

SBREC_DATAPATH_BINDING_TABLE_FOR_EACH_TRACKED (dp, dp_table) {
if (sbrec_datapath_binding_is_deleted(dp)) {
if (get_local_datapath(&rt_data->local_datapaths,
dp->tunnel_key)) {
return false;
}
}
}

return true;
}

/* Connection tracking zones. */
struct ed_type_ct_zones {
unsigned long bitmap[BITMAP_N_LONGS(MAX_CT_ZONES)];
Expand Down Expand Up @@ -1944,7 +1966,8 @@ main(int argc, char *argv[])
engine_add_input(&en_runtime_data, &en_ovs_qos, NULL);

engine_add_input(&en_runtime_data, &en_sb_chassis, NULL);
engine_add_input(&en_runtime_data, &en_sb_datapath_binding, NULL);
engine_add_input(&en_runtime_data, &en_sb_datapath_binding,
runtime_data_sb_datapath_binding_handler);
engine_add_input(&en_runtime_data, &en_sb_port_binding,
runtime_data_sb_port_binding_handler);

Expand Down
6 changes: 3 additions & 3 deletions tests/ovn-performance.at
Expand Up @@ -253,7 +253,7 @@ grep tunnel_egress_iface_carrier=up | wc -l) -eq 1
])

# Add router lr1
OVN_CONTROLLER_EXPECT_HIT(
OVN_CONTROLLER_EXPECT_NO_HIT(
[hv1 hv2], [lflow_run],
[ovn-nbctl --wait=hv lr-add lr1]
)
Expand All @@ -264,7 +264,7 @@ for i in 1 2; do
lrp=lr1-$ls

# Add switch $ls
OVN_CONTROLLER_EXPECT_HIT(
OVN_CONTROLLER_EXPECT_NO_HIT(
[hv1 hv2], [lflow_run],
[ovn-nbctl --wait=hv ls-add $ls]
)
Expand Down Expand Up @@ -427,7 +427,7 @@ for i in 1 2; do
done

# Delete router lr1
OVN_CONTROLLER_EXPECT_HIT(
OVN_CONTROLLER_EXPECT_NO_HIT(
[hv1 hv2], [lflow_run],
[ovn-nbctl --wait=hv lr-del lr1]
)
Expand Down

0 comments on commit ae8997e

Please sign in to comment.