EVPN-learned MAC bindings are now written to the SB MAC_Binding table and consumed through the normal lflow pipeline at the same priority as dynamic entries. This makes the "dynamic-routing-arp-prefer-local" Logical Switch option obsolete: both the "true" and "false" settings produced identical flow tables since the MAC_Binding SB sync was introduced.
Remove the option from: - ovn-controller (evpn_arp priority selection logic) - northd (NB-to-SB external_ids propagation) - NB schema documentation (ovn-nb.xml) - architecture documentation - system tests (deduplicate identical flow checks) The EVPN ARP lookup side table (table 113) now uses NEIGH_OF_DYNAMIC_MAC_BINDING_PRIO (100) unconditionally. The NEIGH_OF_EVPN_MAC_BINDING_LOW_PRIO (20) and NEIGH_OF_EVPN_MAC_BINDING_HIGH_PRIO (200) enum values are removed. Assisted-by: Claude Opus 4.6, OpenCode Signed-off-by: Ales Musil <[email protected]> --- .../topics/dynamic-routing/architecture.rst | 22 +-- NEWS | 5 + controller/evpn-arp.c | 11 -- controller/evpn-arp.h | 2 - controller/neighbor-of.h | 16 +-- controller/physical.c | 3 +- northd/en-datapath-logical-switch.c | 7 - ovn-nb.xml | 18 --- tests/system-ovn.at | 129 +----------------- 9 files changed, 29 insertions(+), 184 deletions(-) diff --git a/Documentation/topics/dynamic-routing/architecture.rst b/Documentation/topics/dynamic-routing/architecture.rst index 0ea175562..e4be2ccf8 100644 --- a/Documentation/topics/dynamic-routing/architecture.rst +++ b/Documentation/topics/dynamic-routing/architecture.rst @@ -630,16 +630,18 @@ Southbound FDB table (populated through normal OVN mechanisms) before falling back to the locally learned EVPN FDB cache. By default, the EVPN-learned entries take precedence. -Similarly, the ``dynamic-routing-arp-prefer-local`` option controls the -lookup order for ARP/ND entries: when set to ``true``, the Southbound -``MAC_Binding`` table is checked before the EVPN-learned neighbor cache. - -Unlike IP route exchange, dynamically learned EVPN information -(remote VTEPs, FDB entries, and ARP/ND neighbors) is **not** stored -in the OVN Southbound database. Each ``ovn-controller`` instance -processes this information locally, in memory. This design avoids -the overhead of synchronizing high-volume, rapidly changing L2/L3 -state through the centralized database. +EVPN-learned ARP/ND entries (Type-2 MAC+IP routes) are written to +the Southbound ``MAC_Binding`` table and consumed at the same priority +as dynamically learned entries through the normal lflow pipeline. +This ensures all chassis see the same MAC bindings without requiring +a separate preference option. + +Unlike IP route exchange, dynamically learned EVPN L2 information +(remote VTEPs and FDB entries) is **not** stored in the OVN +Southbound database. Each ``ovn-controller`` instance processes +this information locally, in memory. This design avoids the +overhead of synchronizing high-volume, rapidly changing L2 state +through the centralized database. Local MAC and IP Advertisement ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/NEWS b/NEWS index 385e35590..667ce5e38 100644 --- a/NEWS +++ b/NEWS @@ -70,6 +70,11 @@ Post v26.03.0 Previously these bindings were local-only OpenFlow flows on the chassis running FRR, causing MAC resolution failures for traffic originating on other chassis. + * Remove the "other_config:dynamic-routing-arp-prefer-local" + option from Logical Switches. EVPN-learned MAC bindings are + now written to the SB MAC_Binding table and consumed at the + same priority as dynamic entries, making the preference option + obsolete. - Added "override-connected" option to Logical Router Static Routes to mark static routes as higher-priority than connected routes, which in turn led to changes in administrative distance for specific route types. Please see diff --git a/controller/evpn-arp.c b/controller/evpn-arp.c index f4c3514f4..f5b364cc4 100644 --- a/controller/evpn-arp.c +++ b/controller/evpn-arp.c @@ -76,17 +76,6 @@ evpn_arp_run(const struct evpn_arp_ctx_in *arp_ctx_in, updated = true; } - enum neigh_of_rule_prio priority = - smap_get_bool(&arp->ldp->datapath->external_ids, - "dynamic-routing-arp-prefer-local", - false) - ? NEIGH_OF_EVPN_MAC_BINDING_LOW_PRIO - : NEIGH_OF_EVPN_MAC_BINDING_HIGH_PRIO; - if (arp->priority != priority) { - arp->priority = priority; - updated = true; - } - if (updated) { hmapx_add(arp_ctx_out->updated_arps, arp); } diff --git a/controller/evpn-arp.h b/controller/evpn-arp.h index 7f3a4c0e4..c6de812d1 100644 --- a/controller/evpn-arp.h +++ b/controller/evpn-arp.h @@ -53,8 +53,6 @@ struct evpn_arp { uint32_t vni; /* Logical datapath of the switch this was learned on. */ const struct local_datapath *ldp; - /* Priority to use for this ARP entry at OpenFlow level. */ - enum neigh_of_rule_prio priority; }; void evpn_arp_run(const struct evpn_arp_ctx_in *, struct evpn_arp_ctx_out *); diff --git a/controller/neighbor-of.h b/controller/neighbor-of.h index 3d0ba6f3a..d91074a1e 100644 --- a/controller/neighbor-of.h +++ b/controller/neighbor-of.h @@ -21,21 +21,19 @@ #include "ofctrl.h" /* Priorities of ovn-controller generated flows for various types of MAC - * Bindings in different situations. Valid preference orders, based on - * the "dynamic-routing-arp-prefer-local" logical switch config and the - * SB.Static_MAC_Binding.override_dynamic_mac value are: + * Bindings. EVPN-learned MAC bindings are written to the SB MAC_Binding + * table and consumed through the normal lflow pipeline at the same + * priority as dynamic entries. The EVPN ARP lookup side table (table 113) + * uses the dynamic priority as well. Valid preference orders based on + * the SB.Static_MAC_Binding.override_dynamic_mac value are: * - * - EVPN-learned < static-mac-binding < dynamic-mac-binding - * - EVPN-learned < dynamic-mac-binding < static-mac-binding - * - static-mac-binding < dynamic-mac-binding < EVPN-learned - * - dynamic-mac-binding < static-mac-binding < EVPN-learned + * - static-mac-binding < dynamic-mac-binding (+ EVPN) + * - dynamic-mac-binding (+ EVPN) < static-mac-binding */ enum neigh_of_rule_prio { - NEIGH_OF_EVPN_MAC_BINDING_LOW_PRIO = 20, NEIGH_OF_STATIC_MAC_BINDING_LOW_PRIO = 50, NEIGH_OF_DYNAMIC_MAC_BINDING_PRIO = 100, NEIGH_OF_STATIC_MAC_BINDING_HIGH_PRIO = 150, - NEIGH_OF_EVPN_MAC_BINDING_HIGH_PRIO = 200, }; void diff --git a/controller/physical.c b/controller/physical.c index 8a70f913c..b3b247e20 100644 --- a/controller/physical.c +++ b/controller/physical.c @@ -3738,7 +3738,8 @@ physical_consider_evpn_arp(const struct evpn_arp *arp, /* Set the EVPN lookup result bit. */ put_load(1, MFF_LOG_FLAGS, MLF_EVPN_LOOKUP_BIT, 1, ofpacts); - ofctrl_add_flow(flow_table, OFTABLE_EVPN_ARP_LOOKUP, arp->priority, + ofctrl_add_flow(flow_table, OFTABLE_EVPN_ARP_LOOKUP, + NEIGH_OF_DYNAMIC_MAC_BINDING_PRIO, arp->flow_uuid.parts[0], match, ofpacts, &arp->flow_uuid); } diff --git a/northd/en-datapath-logical-switch.c b/northd/en-datapath-logical-switch.c index ad6d042bc..874a608a7 100644 --- a/northd/en-datapath-logical-switch.c +++ b/northd/en-datapath-logical-switch.c @@ -173,13 +173,6 @@ gather_external_ids(const struct nbrec_logical_switch *nbs, smap_add(external_ids, "dynamic-routing-redistribute", redistribute); } - - const char *prefer_evpn_arp_local = - smap_get(&nbs->other_config, "dynamic-routing-arp-prefer-local"); - if (prefer_evpn_arp_local) { - smap_add(external_ids, "dynamic-routing-arp-prefer-local", - prefer_evpn_arp_local); - } } /* For backwards-compatibility, also store the NB UUID in diff --git a/ovn-nb.xml b/ovn-nb.xml index 8a9d19fa9..44cfab039 100644 --- a/ovn-nb.xml +++ b/ovn-nb.xml @@ -1014,24 +1014,6 @@ </p> </column> - <column name="other_config" key="dynamic-routing-arp-prefer-local" - type='{"type": "boolean"}'> - <p> - This option defines the preference of ARP/ND lookup. If set to - true OVN routers connected to EVPN Logical Switches on which remote - neighbor entries have been learned (Type-2 MAC+IP EVPN routes) will - give precedence to any ARP/ND entries they might have in the SB - <code>Mac_Binding</code> table before trying to resolve the MAC - address via the <code>ovn-controller</code> local EVPN ARP/ND cache. - The option defaults to false. - </p> - - <p> - Only relevant if <ref column="other_config" key="dynamic-routing-vni" - table="Logical_switch"/> is set to valid VNI. - </p> - </column> - <column name="other_config" key="dynamic-routing-redistribute" type='{"type": "string"}'> <p> diff --git a/tests/system-ovn.at b/tests/system-ovn.at index 9fc27f976..30c4f4984 100644 --- a/tests/system-ovn.at +++ b/tests/system-ovn.at @@ -18533,48 +18533,7 @@ wait_row_count MAC_Binding 1 ip="172\:16\:\:50" wait_row_count MAC_Binding 1 ip="172\:16\:\:60" wait_row_count MAC_Binding 1 ip="172\:16\:\:70" -AS_BOX([Check dynamic-routing-arp-prefer-local=true]) -check ovn-nbctl --wait=hv set Logical_Switch ls-evpn other_config:dynamic-routing-arp-prefer-local=true - -AT_CHECK_UNQUOTED([ovs-ofctl dump-flows br-int table=OFTABLE_MAC_BINDING | grep priority | \ - awk '{print $[7], $[8]}' | sort], [0], [dnl -priority=100,reg0=0xac10010a,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:01:10,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg0=0xac100132,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:50,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg0=0xac10013c,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:60,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg0=0xac100146,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:70,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg4=0x1720016,reg5=0,reg6=0,reg7=0x50,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:50,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg4=0x1720016,reg5=0,reg6=0,reg7=0x60,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:60,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg4=0x1720016,reg5=0,reg6=0,reg7=0x70,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:70,load:0x1->NXM_NX_REG10[[6]] -]) - -AT_CHECK_UNQUOTED([ovs-ofctl dump-flows br-int table=OFTABLE_MAC_LOOKUP | grep priority | \ - awk '{print $[7], $[8]}' | sort], [0], [dnl -priority=100,arp,reg0=0xac10010a,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:01:10 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,arp,reg0=0xac100132,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,arp,reg0=0xac10013c,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,arp,reg0=0xac100146,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,icmp6,reg0=0x1720016,reg1=0,reg2=0,reg3=0x50,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,icmp6,reg0=0x1720016,reg1=0,reg2=0,reg3=0x60,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,icmp6,reg0=0x1720016,reg1=0,reg2=0,reg3=0x70,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]] -]) - -AT_CHECK_UNQUOTED([ovs-ofctl dump-flows br-int table=OFTABLE_MAC_CACHE_USE | grep priority | \ - awk '{print $[7], $[8]}' | sort], [0], [dnl -priority=100,arp,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:01:10,arp_spa=172.16.1.10,arp_op=2 actions=drop -priority=100,arp,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50,arp_spa=172.16.1.50,arp_op=2 actions=drop -priority=100,arp,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60,arp_spa=172.16.1.60,arp_op=2 actions=drop -priority=100,arp,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70,arp_spa=172.16.1.70,arp_op=2 actions=drop -priority=100,ip,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:01:10,nw_src=172.16.1.10 actions=drop -priority=100,ip,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50,nw_src=172.16.1.50 actions=drop -priority=100,ip,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60,nw_src=172.16.1.60 actions=drop -priority=100,ip,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70,nw_src=172.16.1.70 actions=drop -priority=100,ipv6,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50,ipv6_src=172:16::50 actions=drop -priority=100,ipv6,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60,ipv6_src=172:16::60 actions=drop -priority=100,ipv6,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70,ipv6_src=172:16::70 actions=drop -]) - -AS_BOX([Check dynamic-routing-arp-prefer-local=false]) -check ovn-nbctl --wait=hv set Logical_Switch ls-evpn other_config:dynamic-routing-arp-prefer-local=false +AS_BOX([Check EVPN MAC binding and lookup flows]) AT_CHECK_UNQUOTED([ovs-ofctl dump-flows br-int table=OFTABLE_MAC_BINDING | grep priority | \ awk '{print $[7], $[8]}' | sort], [0], [dnl @@ -19253,48 +19212,7 @@ wait_row_count MAC_Binding 1 ip="172\:16\:\:50" wait_row_count MAC_Binding 1 ip="172\:16\:\:60" wait_row_count MAC_Binding 1 ip="172\:16\:\:70" -AS_BOX([Check dynamic-routing-arp-prefer-local=true]) -check ovn-nbctl --wait=hv set Logical_Switch ls-evpn other_config:dynamic-routing-arp-prefer-local=true - -AT_CHECK_UNQUOTED([ovs-ofctl dump-flows br-int table=OFTABLE_MAC_BINDING | grep priority | \ - awk '{print $[7], $[8]}' | sort], [0], [dnl -priority=100,reg0=0xac10010a,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:01:10,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg0=0xac100132,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:50,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg0=0xac10013c,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:60,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg0=0xac100146,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:70,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg4=0x1720016,reg5=0,reg6=0,reg7=0x50,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:50,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg4=0x1720016,reg5=0,reg6=0,reg7=0x60,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:60,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg4=0x1720016,reg5=0,reg6=0,reg7=0x70,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:70,load:0x1->NXM_NX_REG10[[6]] -]) - -AT_CHECK_UNQUOTED([ovs-ofctl dump-flows br-int table=OFTABLE_MAC_LOOKUP | grep priority | \ - awk '{print $[7], $[8]}' | sort], [0], [dnl -priority=100,arp,reg0=0xac10010a,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:01:10 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,arp,reg0=0xac100132,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,arp,reg0=0xac10013c,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,arp,reg0=0xac100146,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,icmp6,reg0=0x1720016,reg1=0,reg2=0,reg3=0x50,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,icmp6,reg0=0x1720016,reg1=0,reg2=0,reg3=0x60,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,icmp6,reg0=0x1720016,reg1=0,reg2=0,reg3=0x70,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]] -]) - -AT_CHECK_UNQUOTED([ovs-ofctl dump-flows br-int table=OFTABLE_MAC_CACHE_USE | grep priority | \ - awk '{print $[7], $[8]}' | sort], [0], [dnl -priority=100,arp,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:01:10,arp_spa=172.16.1.10,arp_op=2 actions=drop -priority=100,arp,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50,arp_spa=172.16.1.50,arp_op=2 actions=drop -priority=100,arp,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60,arp_spa=172.16.1.60,arp_op=2 actions=drop -priority=100,arp,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70,arp_spa=172.16.1.70,arp_op=2 actions=drop -priority=100,ip,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:01:10,nw_src=172.16.1.10 actions=drop -priority=100,ip,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50,nw_src=172.16.1.50 actions=drop -priority=100,ip,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60,nw_src=172.16.1.60 actions=drop -priority=100,ip,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70,nw_src=172.16.1.70 actions=drop -priority=100,ipv6,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50,ipv6_src=172:16::50 actions=drop -priority=100,ipv6,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60,ipv6_src=172:16::60 actions=drop -priority=100,ipv6,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70,ipv6_src=172:16::70 actions=drop -]) - -AS_BOX([Check dynamic-routing-arp-prefer-local=false]) -check ovn-nbctl --wait=hv set Logical_Switch ls-evpn other_config:dynamic-routing-arp-prefer-local=false +AS_BOX([Check EVPN MAC binding and lookup flows]) AT_CHECK_UNQUOTED([ovs-ofctl dump-flows br-int table=OFTABLE_MAC_BINDING | grep priority | \ awk '{print $[7], $[8]}' | sort], [0], [dnl @@ -19870,48 +19788,7 @@ wait_row_count MAC_Binding 1 ip="172\:16\:\:50" wait_row_count MAC_Binding 1 ip="172\:16\:\:60" wait_row_count MAC_Binding 1 ip="172\:16\:\:70" -AS_BOX([Check dynamic-routing-arp-prefer-local=true]) -check ovn-nbctl --wait=hv set Logical_Switch ls-evpn other_config:dynamic-routing-arp-prefer-local=true - -AT_CHECK_UNQUOTED([ovs-ofctl dump-flows br-int table=OFTABLE_MAC_BINDING | grep priority | \ - awk '{print $[7], $[8]}' | sort], [0], [dnl -priority=100,reg0=0xac10010a,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:01:10,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg0=0xac100132,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:50,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg0=0xac10013c,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:60,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg0=0xac100146,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:70,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg4=0x1720016,reg5=0,reg6=0,reg7=0x50,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:50,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg4=0x1720016,reg5=0,reg6=0,reg7=0x60,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:60,load:0x1->NXM_NX_REG10[[6]] -priority=100,reg4=0x1720016,reg5=0,reg6=0,reg7=0x70,reg15=0x$rtr_port_key,metadata=0x$rtr_dp_key actions=mod_dl_dst:f0:00:0f:16:10:70,load:0x1->NXM_NX_REG10[[6]] -]) - -AT_CHECK_UNQUOTED([ovs-ofctl dump-flows br-int table=OFTABLE_MAC_LOOKUP | grep priority | \ - awk '{print $[7], $[8]}' | sort], [0], [dnl -priority=100,arp,reg0=0xac10010a,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:01:10 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,arp,reg0=0xac100132,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,arp,reg0=0xac10013c,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,arp,reg0=0xac100146,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,icmp6,reg0=0x1720016,reg1=0,reg2=0,reg3=0x50,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,icmp6,reg0=0x1720016,reg1=0,reg2=0,reg3=0x60,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]] -priority=100,icmp6,reg0=0x1720016,reg1=0,reg2=0,reg3=0x70,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70,icmp_code=0 actions=load:0x1->NXM_NX_REG10[[6]] -]) - -AT_CHECK_UNQUOTED([ovs-ofctl dump-flows br-int table=OFTABLE_MAC_CACHE_USE | grep priority | \ - awk '{print $[7], $[8]}' | sort], [0], [dnl -priority=100,arp,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:01:10,arp_spa=172.16.1.10,arp_op=2 actions=drop -priority=100,arp,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50,arp_spa=172.16.1.50,arp_op=2 actions=drop -priority=100,arp,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60,arp_spa=172.16.1.60,arp_op=2 actions=drop -priority=100,arp,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70,arp_spa=172.16.1.70,arp_op=2 actions=drop -priority=100,ip,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:01:10,nw_src=172.16.1.10 actions=drop -priority=100,ip,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50,nw_src=172.16.1.50 actions=drop -priority=100,ip,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60,nw_src=172.16.1.60 actions=drop -priority=100,ip,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70,nw_src=172.16.1.70 actions=drop -priority=100,ipv6,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:50,ipv6_src=172:16::50 actions=drop -priority=100,ipv6,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:60,ipv6_src=172:16::60 actions=drop -priority=100,ipv6,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl_src=f0:00:0f:16:10:70,ipv6_src=172:16::70 actions=drop -]) - -AS_BOX([Check dynamic-routing-arp-prefer-local=false]) -check ovn-nbctl --wait=hv set Logical_Switch ls-evpn other_config:dynamic-routing-arp-prefer-local=false +AS_BOX([Check EVPN MAC binding and lookup flows]) AT_CHECK_UNQUOTED([ovs-ofctl dump-flows br-int table=OFTABLE_MAC_BINDING | grep priority | \ awk '{print $[7], $[8]}' | sort], [0], [dnl -- 2.55.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
