Skip to content

Commit eee8cb3

Browse files
almusildceara
authored andcommitted
controller: Add missing I-P handler for MAC binding sync.
The MAC binding sync needs to be aware of Port Binding updates as change in connection between EVPN LS and LR might result in update of relevant MAC Bindings. Add missing handler that will take care of that. Fixes: ee02a78 ("controller: Distribute EVPN-learned MAC bindings via SB.") Signed-off-by: Ales Musil <amusil@redhat.com> Signed-off-by: Dumitru Ceara <dceara@redhat.com>
1 parent 32ea673 commit eee8cb3

5 files changed

Lines changed: 97 additions & 90 deletions

File tree

controller/evpn-mac-binding-sync.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,8 @@ evpn_mac_binding_sync_run(
186186
continue;
187187
}
188188

189+
uuidset_insert(&data->lsp_peers, &peers->local->header_.uuid);
190+
189191
int64_t remaining =
190192
sync_evpn_mb_for_router_port(ovnsb_idl_txn,
191193
sbrec_mac_binding_by_lport_ip,
@@ -225,6 +227,7 @@ void
225227
evpn_mac_binding_sync_init(struct ed_type_evpn_mac_binding_sync *data)
226228
{
227229
hmap_init(&data->synced_entries);
230+
uuidset_init(&data->lsp_peers);
228231
data->sb_changes_pending = false;
229232
}
230233

@@ -238,4 +241,5 @@ evpn_mac_binding_sync_cleanup(struct ed_type_evpn_mac_binding_sync *data)
238241
free(entry);
239242
}
240243
hmap_destroy(&data->synced_entries);
244+
uuidset_destroy(&data->lsp_peers);
241245
}

controller/evpn-mac-binding-sync.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
#include "openvswitch/hmap.h"
2020
#include "openvswitch/uuid.h"
21+
#include "uuidset.h"
2122

2223
struct mac_cache_data;
2324
struct ovsdb_idl_index;
@@ -41,6 +42,9 @@ struct ed_type_evpn_mac_binding_sync {
4142
* (logical_port, ip) pairs we have written to SB. */
4243
struct hmap synced_entries;
4344

45+
/* Contains LSP UUIDs belonging to synced entries peers. */
46+
struct uuidset lsp_peers;
47+
4448
/* True when an SB write was skipped because ovnsb_idl_txn was NULL. */
4549
bool sb_changes_pending;
4650
};

controller/ovn-controller.c

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7032,6 +7032,7 @@ en_evpn_mac_binding_sync_run(struct engine_node *node, void *data_)
70327032
struct evpn_mb_sync_waker *waker =
70337033
engine_get_input_data("evpn_mac_binding_sync_waker", node);
70347034

7035+
uuidset_clear(&data->lsp_peers);
70357036
data->sb_changes_pending = false;
70367037

70377038
evpn_mac_binding_sync_run(engine_get_context()->ovnsb_idl_txn,
@@ -7064,6 +7065,75 @@ evpn_mac_binding_sync_sb_ro_handler(struct engine_node *node OVS_UNUSED,
70647065
return EN_HANDLED_UNCHANGED;
70657066
}
70667067

7068+
static enum engine_input_handler_result
7069+
evpn_mac_binding_sync_sb_port_binding_handler(struct engine_node *node,
7070+
void *data_)
7071+
{
7072+
struct ed_type_evpn_mac_binding_sync *data = data_;
7073+
struct ed_type_runtime_data *rt_data =
7074+
engine_get_input_data("runtime_data", node);
7075+
const struct sbrec_port_binding_table *port_binding_table =
7076+
EN_OVSDB_GET(engine_get_input("SB_port_binding", node));
7077+
struct ovsdb_idl_index *sbrec_port_binding_by_name =
7078+
engine_ovsdb_node_get_index(
7079+
engine_get_input("SB_port_binding", node),
7080+
"name");
7081+
7082+
const struct sbrec_port_binding *pb;
7083+
SBREC_PORT_BINDING_TABLE_FOR_EACH_TRACKED (pb, port_binding_table) {
7084+
if (sbrec_port_binding_is_deleted(pb) &&
7085+
uuidset_contains(&data->lsp_peers, &pb->header_.uuid)) {
7086+
return EN_UNHANDLED;
7087+
}
7088+
7089+
if (!sbrec_port_binding_is_new(pb) &&
7090+
uuidset_contains(&data->lsp_peers, &pb->header_.uuid) &&
7091+
(sbrec_port_binding_is_updated(pb,
7092+
SBREC_PORT_BINDING_COL_OPTIONS) ||
7093+
sbrec_port_binding_is_updated(pb, SBREC_PORT_BINDING_COL_TYPE))) {
7094+
return EN_UNHANDLED;
7095+
}
7096+
7097+
if (!sbrec_port_binding_is_new(pb)) {
7098+
continue;
7099+
}
7100+
7101+
struct local_datapath *ld = get_local_datapath(
7102+
&rt_data->local_datapaths, pb->datapath->tunnel_key);
7103+
if (!ld || !ld->is_switch) {
7104+
continue;
7105+
}
7106+
7107+
int64_t vni = ovn_smap_get_llong(&ld->datapath->external_ids,
7108+
"dynamic-routing-vni", -1);
7109+
if (!ovn_is_valid_vni(vni)) {
7110+
continue;
7111+
}
7112+
7113+
enum en_lport_type type = get_lport_type(pb);
7114+
if (type != LP_L3GATEWAY && type != LP_PATCH) {
7115+
continue;
7116+
}
7117+
7118+
const struct sbrec_port_binding *peer =
7119+
lport_get_peer(pb, sbrec_port_binding_by_name);
7120+
if (!peer) {
7121+
continue;
7122+
}
7123+
7124+
struct local_datapath *peer_ld =
7125+
get_local_datapath(&rt_data->local_datapaths,
7126+
peer->datapath->tunnel_key);
7127+
if (!peer_ld || peer_ld->is_switch) {
7128+
continue;
7129+
}
7130+
7131+
return EN_UNHANDLED;
7132+
}
7133+
7134+
return EN_HANDLED_UNCHANGED;
7135+
}
7136+
70677137
/* Define engine node functions for nodes that represent SB tables.
70687138
*
70697139
* en_sb_<TABLE_NAME>_run()
@@ -7491,6 +7561,8 @@ inc_proc_ovn_controller_init(
74917561
engine_noop_handler);
74927562
engine_add_input(&en_evpn_mac_binding_sync, &en_sb_ro,
74937563
evpn_mac_binding_sync_sb_ro_handler);
7564+
engine_add_input(&en_evpn_mac_binding_sync, &en_sb_port_binding,
7565+
evpn_mac_binding_sync_sb_port_binding_handler);
74947566

74957567
engine_add_input(&en_pflow_output, &en_evpn_vtep_binding,
74967568
pflow_output_evpn_binding_handler);

tests/multinode.at

Lines changed: 16 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -4159,46 +4159,16 @@ check multinode_nbctl --wait=hv \
41594159
-- lsp-add ls-int w-int2 \
41604160
-- lsp-set-addresses w-int2 "00:00:00:02:00:02 20.0.0.12 2000::12"
41614161

4162-
rtr_dp_key=$(m_fetch_column Datapath tunnel_key external_ids:name=lr)
4163-
rtr_port_key=$(m_fetch_column Port_Binding tunnel_key logical_port=lr-ls)
4164-
41654162
check m_as ovn-gw-1 /data/create_fake_vm.sh w-int1 w-int1 00:00:00:02:00:01 1500 20.0.0.11 24 20.0.0.1 2000::11/64 2000::1
41664163
check m_as ovn-gw-2 /data/create_fake_vm.sh w-int2 w-int2 00:00:00:02:00:02 1500 20.0.0.12 24 20.0.0.1 2000::12/64 2000::1
41674164
m_wait_for_ports_up
41684165

4169-
# Check that flows are created for the type-2 EVPN MAC+IP routes, in the
4170-
# router pipeline.
4171-
AT_CHECK_UNQUOTED([m_as ovn-gw-1 ovs-ofctl dump-flows br-int table=OFTABLE_MAC_BINDING | grep priority | grep -vE "reg[[04]]=0xfe80" | \
4172-
awk '{print $7, $8}' | sort], [0], [dnl
4173-
priority=100,reg0=0xa00000b,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:00:00:00:00:00:01,load:0x1->NXM_NX_REG10[[6]]
4174-
priority=100,reg0=0xa00000c,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:00:00:00:00:00:02,load:0x1->NXM_NX_REG10[[6]]
4175-
priority=200,reg0=0xa000029,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:00:00:00:00:01:00,load:0x1->NXM_NX_REG10[[6]]
4176-
priority=200,reg4=0x100000,reg5=0,reg6=0,reg7=0x41,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:00:00:00:00:01:00,load:0x1->NXM_NX_REG10[[6]]
4177-
])
4178-
4179-
AT_CHECK_UNQUOTED([m_as ovn-gw-1 ovs-ofctl dump-flows br-int table=OFTABLE_MAC_LOOKUP | grep priority | grep -vE "reg[[04]]=0xfe80" | \
4180-
awk '{print $7, $8}' | sort], [0], [dnl
4181-
priority=100,arp,reg0=0xa00000b,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=00:00:00:00:00:01 actions=load:0x1->NXM_NX_REG10[[6]]
4182-
priority=100,arp,reg0=0xa00000c,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=00:00:00:00:00:02 actions=load:0x1->NXM_NX_REG10[[6]]
4183-
priority=200,arp,reg0=0xa000029,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=00:00:00:00:01:00 actions=load:0x1->NXM_NX_REG10[[6]]
4184-
priority=200,icmp6,reg0=0x100000,reg1=0,reg2=0,reg3=0x41,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=00:00:00:00:01:00,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]]
4185-
])
4186-
4187-
AT_CHECK_UNQUOTED([m_as ovn-gw-2 ovs-ofctl dump-flows br-int table=OFTABLE_MAC_BINDING | grep priority | grep -vE "reg[[04]]=0xfe80" | \
4188-
awk '{print $7, $8}' | sort], [0], [dnl
4189-
priority=100,reg0=0xa00000b,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:00:00:00:00:00:01,load:0x1->NXM_NX_REG10[[6]]
4190-
priority=100,reg0=0xa00000c,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:00:00:00:00:00:02,load:0x1->NXM_NX_REG10[[6]]
4191-
priority=200,reg0=0xa00002a,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:00:00:00:00:02:00,load:0x1->NXM_NX_REG10[[6]]
4192-
priority=200,reg4=0x100000,reg5=0,reg6=0,reg7=0x42,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:00:00:00:00:02:00,load:0x1->NXM_NX_REG10[[6]]
4193-
])
4194-
4195-
AT_CHECK_UNQUOTED([m_as ovn-gw-2 ovs-ofctl dump-flows br-int table=OFTABLE_MAC_LOOKUP | grep priority | grep -vE "reg[[04]]=0xfe80" | \
4196-
awk '{print $7, $8}' | sort], [0], [dnl
4197-
priority=100,arp,reg0=0xa00000b,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=00:00:00:00:00:01 actions=load:0x1->NXM_NX_REG10[[6]]
4198-
priority=100,arp,reg0=0xa00000c,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=00:00:00:00:00:02 actions=load:0x1->NXM_NX_REG10[[6]]
4199-
priority=200,arp,reg0=0xa00002a,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=00:00:00:00:02:00 actions=load:0x1->NXM_NX_REG10[[6]]
4200-
priority=200,icmp6,reg0=0x100000,reg1=0,reg2=0,reg3=0x42,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=00:00:00:00:02:00,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]]
4201-
])
4166+
# Check that SB MAC Bindings are created for the type-2 EVPN MAC+IP routes,
4167+
# in the router pipeline.
4168+
m_wait_row_count mac_binding 1 ip="10.0.0.41" logical_port="lr-ls"
4169+
m_wait_row_count mac_binding 1 ip="10.0.0.42" logical_port="lr-ls"
4170+
m_wait_row_count mac_binding 1 ip="10\:\:41" logical_port="lr-ls"
4171+
m_wait_row_count mac_binding 1 ip="10\:\:42" logical_port="lr-ls"
42024172

42034173
AS_BOX([Check traffic to "fabric" hosts - ping from internal hosts])
42044174
OVS_WAIT_UNTIL([m_as ovn-gw-1 ip netns exec w-int1 ping -W 1 -c 1 10.0.0.41])
@@ -4580,66 +4550,22 @@ check multinode_nbctl --wait=hv \
45804550
-- lsp-add ls1-int w1-int2 \
45814551
-- lsp-set-addresses w1-int2 "00:00:00:12:00:02 21.0.0.12 2001::12"
45824552

4583-
rtr_dp_key0=$(m_fetch_column Datapath tunnel_key external_ids:name=lr0)
4584-
rtr_dp_key1=$(m_fetch_column Datapath tunnel_key external_ids:name=lr1)
4585-
rtr_port_key0=$(m_fetch_column Port_Binding tunnel_key logical_port=lr0-ls)
4586-
rtr_port_key1=$(m_fetch_column Port_Binding tunnel_key logical_port=lr1-ls)
4587-
45884553
check m_as ovn-gw-1 /data/create_fake_vm.sh w0-int1 w0-int1 00:00:00:02:00:01 1500 20.0.0.11 24 20.0.0.1 2000::11/64 2000::1
45894554
check m_as ovn-gw-1 /data/create_fake_vm.sh w1-int1 w1-int1 00:00:00:12:00:01 1500 21.0.0.11 24 21.0.0.1 2001::11/64 2001::1
45904555
check m_as ovn-gw-2 /data/create_fake_vm.sh w0-int2 w0-int2 00:00:00:02:00:02 1500 20.0.0.12 24 20.0.0.1 2000::12/64 2000::1
45914556
check m_as ovn-gw-2 /data/create_fake_vm.sh w1-int2 w1-int2 00:00:00:12:00:02 1500 21.0.0.12 24 21.0.0.1 2001::12/64 2001::1
45924557
m_wait_for_ports_up
45934558

4594-
# Check that flows are created for the type-2 EVPN MAC+IP routes, in the
4595-
# router pipeline.
4596-
AT_CHECK_UNQUOTED([m_as ovn-gw-1 ovs-ofctl dump-flows br-int table=OFTABLE_MAC_BINDING | grep priority | grep -vE "reg[[04]]=0xfe80" | \
4597-
awk '{print $7, $8}' | sort], [0], [dnl
4598-
priority=100,reg0=0xa00000b,reg15=0x$rtr_port_key0,metadata=0x$rtr_dp_key0 actions=mod_dl_dst:00:00:00:00:00:01,load:0x1->NXM_NX_REG10[[6]]
4599-
priority=100,reg0=0xa00000c,reg15=0x$rtr_port_key0,metadata=0x$rtr_dp_key0 actions=mod_dl_dst:00:00:00:00:00:02,load:0x1->NXM_NX_REG10[[6]]
4600-
priority=100,reg0=0xb00000b,reg15=0x$rtr_port_key1,metadata=0x$rtr_dp_key1 actions=mod_dl_dst:00:00:00:00:00:11,load:0x1->NXM_NX_REG10[[6]]
4601-
priority=100,reg0=0xb00000c,reg15=0x$rtr_port_key1,metadata=0x$rtr_dp_key1 actions=mod_dl_dst:00:00:00:00:00:12,load:0x1->NXM_NX_REG10[[6]]
4602-
priority=200,reg0=0xa000029,reg15=0x$rtr_port_key0,metadata=0x$rtr_dp_key0 actions=mod_dl_dst:00:00:00:00:01:00,load:0x1->NXM_NX_REG10[[6]]
4603-
priority=200,reg0=0xb000029,reg15=0x$rtr_port_key1,metadata=0x$rtr_dp_key1 actions=mod_dl_dst:00:00:00:00:11:00,load:0x1->NXM_NX_REG10[[6]]
4604-
priority=200,reg4=0x100000,reg5=0,reg6=0,reg7=0x41,reg15=0x$rtr_port_key0,metadata=0x$rtr_dp_key0 actions=mod_dl_dst:00:00:00:00:01:00,load:0x1->NXM_NX_REG10[[6]]
4605-
priority=200,reg4=0x110000,reg5=0,reg6=0,reg7=0x41,reg15=0x$rtr_port_key1,metadata=0x$rtr_dp_key1 actions=mod_dl_dst:00:00:00:00:11:00,load:0x1->NXM_NX_REG10[[6]]
4606-
])
4607-
4608-
AT_CHECK_UNQUOTED([m_as ovn-gw-1 ovs-ofctl dump-flows br-int table=OFTABLE_MAC_LOOKUP | grep priority | grep -vE "reg[[04]]=0xfe80" | \
4609-
awk '{print $7, $8}' | sort], [0], [dnl
4610-
priority=100,arp,reg0=0xa00000b,reg14=0x$rtr_port_key0,metadata=0x$rtr_dp_key0,dl_src=00:00:00:00:00:01 actions=load:0x1->NXM_NX_REG10[[6]]
4611-
priority=100,arp,reg0=0xa00000c,reg14=0x$rtr_port_key0,metadata=0x$rtr_dp_key0,dl_src=00:00:00:00:00:02 actions=load:0x1->NXM_NX_REG10[[6]]
4612-
priority=100,arp,reg0=0xb00000b,reg14=0x$rtr_port_key1,metadata=0x$rtr_dp_key1,dl_src=00:00:00:00:00:11 actions=load:0x1->NXM_NX_REG10[[6]]
4613-
priority=100,arp,reg0=0xb00000c,reg14=0x$rtr_port_key1,metadata=0x$rtr_dp_key1,dl_src=00:00:00:00:00:12 actions=load:0x1->NXM_NX_REG10[[6]]
4614-
priority=200,arp,reg0=0xa000029,reg14=0x$rtr_port_key0,metadata=0x$rtr_dp_key0,dl_src=00:00:00:00:01:00 actions=load:0x1->NXM_NX_REG10[[6]]
4615-
priority=200,arp,reg0=0xb000029,reg14=0x$rtr_port_key1,metadata=0x$rtr_dp_key1,dl_src=00:00:00:00:11:00 actions=load:0x1->NXM_NX_REG10[[6]]
4616-
priority=200,icmp6,reg0=0x100000,reg1=0,reg2=0,reg3=0x41,reg14=0x$rtr_port_key0,metadata=0x$rtr_dp_key0,dl_src=00:00:00:00:01:00,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]]
4617-
priority=200,icmp6,reg0=0x110000,reg1=0,reg2=0,reg3=0x41,reg14=0x$rtr_port_key1,metadata=0x$rtr_dp_key1,dl_src=00:00:00:00:11:00,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]]
4618-
])
4619-
4620-
AT_CHECK_UNQUOTED([m_as ovn-gw-2 ovs-ofctl dump-flows br-int table=OFTABLE_MAC_BINDING | grep priority | grep -vE "reg[[04]]=0xfe80" | \
4621-
awk '{print $7, $8}' | sort], [0], [dnl
4622-
priority=100,reg0=0xa00000b,reg15=0x$rtr_port_key0,metadata=0x$rtr_dp_key0 actions=mod_dl_dst:00:00:00:00:00:01,load:0x1->NXM_NX_REG10[[6]]
4623-
priority=100,reg0=0xa00000c,reg15=0x$rtr_port_key0,metadata=0x$rtr_dp_key0 actions=mod_dl_dst:00:00:00:00:00:02,load:0x1->NXM_NX_REG10[[6]]
4624-
priority=100,reg0=0xb00000b,reg15=0x$rtr_port_key1,metadata=0x$rtr_dp_key1 actions=mod_dl_dst:00:00:00:00:00:11,load:0x1->NXM_NX_REG10[[6]]
4625-
priority=100,reg0=0xb00000c,reg15=0x$rtr_port_key1,metadata=0x$rtr_dp_key1 actions=mod_dl_dst:00:00:00:00:00:12,load:0x1->NXM_NX_REG10[[6]]
4626-
priority=200,reg0=0xa00002a,reg15=0x$rtr_port_key0,metadata=0x$rtr_dp_key0 actions=mod_dl_dst:00:00:00:00:02:00,load:0x1->NXM_NX_REG10[[6]]
4627-
priority=200,reg0=0xb00002a,reg15=0x$rtr_port_key1,metadata=0x$rtr_dp_key1 actions=mod_dl_dst:00:00:00:00:12:00,load:0x1->NXM_NX_REG10[[6]]
4628-
priority=200,reg4=0x100000,reg5=0,reg6=0,reg7=0x42,reg15=0x$rtr_port_key0,metadata=0x$rtr_dp_key0 actions=mod_dl_dst:00:00:00:00:02:00,load:0x1->NXM_NX_REG10[[6]]
4629-
priority=200,reg4=0x110000,reg5=0,reg6=0,reg7=0x42,reg15=0x$rtr_port_key1,metadata=0x$rtr_dp_key1 actions=mod_dl_dst:00:00:00:00:12:00,load:0x1->NXM_NX_REG10[[6]]
4630-
])
4631-
4632-
AT_CHECK_UNQUOTED([m_as ovn-gw-2 ovs-ofctl dump-flows br-int table=OFTABLE_MAC_LOOKUP | grep priority | grep -vE "reg[[04]]=0xfe80" | \
4633-
awk '{print $7, $8}' | sort], [0], [dnl
4634-
priority=100,arp,reg0=0xa00000b,reg14=0x$rtr_port_key0,metadata=0x$rtr_dp_key0,dl_src=00:00:00:00:00:01 actions=load:0x1->NXM_NX_REG10[[6]]
4635-
priority=100,arp,reg0=0xa00000c,reg14=0x$rtr_port_key0,metadata=0x$rtr_dp_key0,dl_src=00:00:00:00:00:02 actions=load:0x1->NXM_NX_REG10[[6]]
4636-
priority=100,arp,reg0=0xb00000b,reg14=0x$rtr_port_key1,metadata=0x$rtr_dp_key1,dl_src=00:00:00:00:00:11 actions=load:0x1->NXM_NX_REG10[[6]]
4637-
priority=100,arp,reg0=0xb00000c,reg14=0x$rtr_port_key1,metadata=0x$rtr_dp_key1,dl_src=00:00:00:00:00:12 actions=load:0x1->NXM_NX_REG10[[6]]
4638-
priority=200,arp,reg0=0xa00002a,reg14=0x$rtr_port_key0,metadata=0x$rtr_dp_key0,dl_src=00:00:00:00:02:00 actions=load:0x1->NXM_NX_REG10[[6]]
4639-
priority=200,arp,reg0=0xb00002a,reg14=0x$rtr_port_key1,metadata=0x$rtr_dp_key1,dl_src=00:00:00:00:12:00 actions=load:0x1->NXM_NX_REG10[[6]]
4640-
priority=200,icmp6,reg0=0x100000,reg1=0,reg2=0,reg3=0x42,reg14=0x$rtr_port_key0,metadata=0x$rtr_dp_key0,dl_src=00:00:00:00:02:00,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]]
4641-
priority=200,icmp6,reg0=0x110000,reg1=0,reg2=0,reg3=0x42,reg14=0x$rtr_port_key1,metadata=0x$rtr_dp_key1,dl_src=00:00:00:00:12:00,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]]
4642-
])
4559+
# Check that SB MAC Bindings are created for the type-2 EVPN MAC+IP routes,
4560+
# in the router pipeline.
4561+
m_wait_row_count mac_binding 1 ip="10.0.0.41" logical_port="lr0-ls"
4562+
m_wait_row_count mac_binding 1 ip="10.0.0.42" logical_port="lr0-ls"
4563+
m_wait_row_count mac_binding 1 ip="11.0.0.41" logical_port="lr1-ls"
4564+
m_wait_row_count mac_binding 1 ip="11.0.0.42" logical_port="lr1-ls"
4565+
m_wait_row_count mac_binding 1 ip="10\:\:41" logical_port="lr0-ls"
4566+
m_wait_row_count mac_binding 1 ip="10\:\:42" logical_port="lr0-ls"
4567+
m_wait_row_count mac_binding 1 ip="11\:\:41" logical_port="lr1-ls"
4568+
m_wait_row_count mac_binding 1 ip="11\:\:42" logical_port="lr1-ls"
46434569

46444570
AS_BOX([Check traffic to "fabric" hosts - ping from internal hosts])
46454571
OVS_WAIT_UNTIL([m_as ovn-gw-1 ip netns exec w0-int1 ping -W 1 -c 1 10.0.0.41])

tests/ovn-inc-proc-graph-dump.at

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,7 @@ digraph "Incremental-Processing-Engine" {
489489
runtime_data -> evpn_mac_binding_sync [[label="engine_noop_handler"]];
490490
mac_cache -> evpn_mac_binding_sync [[label="engine_noop_handler"]];
491491
sb_ro -> evpn_mac_binding_sync [[label="evpn_mac_binding_sync_sb_ro_handler"]];
492+
SB_port_binding -> evpn_mac_binding_sync [[label="evpn_mac_binding_sync_sb_port_binding_handler"]];
492493
SB_acl_id [[style=filled, shape=box, fillcolor=white, label="SB_acl_id"]];
493494
acl_id [[style=filled, shape=box, fillcolor=white, label="acl_id"]];
494495
SB_acl_id -> acl_id [[label=""]];

0 commit comments

Comments
 (0)