The mac_cache_use would have flows for ARP replies to bump the
timestamp when we receive a reply to our probe. However, simple
ARP request from the MAC binding IP+MAC should be enough to indicate
that the entry is alive. Remove the response match and use plain
ARP with proper source MAC address and SPA.
Fixes: 9fc291c889bb ("controller: Update OFTABLE_MAC_CACHE_USE for ARP reply
generated by the tracked device.")
Fixes: c23059318cb7 ("northd, controller: Use the MAC cache table")
Signed-off-by: Ales Musil <[email protected]>
---
controller/neighbor-of.c | 1 -
tests/ovn.at | 42 +++++++++++++++++++++++++++-------------
tests/system-ovn.at | 30 ++++++++++++++--------------
3 files changed, 44 insertions(+), 29 deletions(-)
diff --git a/controller/neighbor-of.c b/controller/neighbor-of.c
index 5985114ba..d48fe4422 100644
--- a/controller/neighbor-of.c
+++ b/controller/neighbor-of.c
@@ -50,7 +50,6 @@ consider_neighbor_flow(const struct sbrec_port_binding *pb,
match_set_dl_type(&mb_cache_use_match, htons(ETH_TYPE_IP));
match_set_nw_src(&mb_cache_use_match, ip_addr);
- match_set_arp_opcode_masked(&lookup_arp_for_stats_match, 2, 0xff);
match_set_arp_spa_masked(&lookup_arp_for_stats_match, ip_addr,
htonl(0xffffffff));
} else {
diff --git a/tests/ovn.at b/tests/ovn.at
index c8a27fcf6..024f56e02 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -37006,10 +37006,10 @@ port_key_1=$(printf "0x%x" $(as hv1 fetch_column
port_binding tunnel_key logical
dp_key_2=$(printf "0x%x" $(as hv1 fetch_column datapath tunnel_key
external_ids:name=gw-2))
port_key_2=$(printf "0x%x" $(as hv1 fetch_column port_binding tunnel_key
logical_port=gw-2-public))
-table=" table=OFTABLE_MAC_CACHE_USE,
priority=100,arp,reg14=${port_key_1},metadata=${dp_key_1},dl_src=00:00:00:00:10:10,arp_spa=192.168.10.10,arp_op=2
actions=drop
- table=OFTABLE_MAC_CACHE_USE,
priority=100,arp,reg14=${port_key_1},metadata=${dp_key_1},dl_src=00:00:00:00:10:20,arp_spa=192.168.10.20,arp_op=2
actions=drop
- table=OFTABLE_MAC_CACHE_USE,
priority=100,arp,reg14=${port_key_2},metadata=${dp_key_2},dl_src=00:00:00:00:10:10,arp_spa=192.168.10.10,arp_op=2
actions=drop
- table=OFTABLE_MAC_CACHE_USE,
priority=100,arp,reg14=${port_key_2},metadata=${dp_key_2},dl_src=00:00:00:00:10:20,arp_spa=192.168.10.20,arp_op=2
actions=drop
+table=" table=OFTABLE_MAC_CACHE_USE,
priority=100,arp,reg14=${port_key_1},metadata=${dp_key_1},dl_src=00:00:00:00:10:10,arp_spa=192.168.10.10
actions=drop
+ table=OFTABLE_MAC_CACHE_USE,
priority=100,arp,reg14=${port_key_1},metadata=${dp_key_1},dl_src=00:00:00:00:10:20,arp_spa=192.168.10.20
actions=drop
+ table=OFTABLE_MAC_CACHE_USE,
priority=100,arp,reg14=${port_key_2},metadata=${dp_key_2},dl_src=00:00:00:00:10:10,arp_spa=192.168.10.10
actions=drop
+ table=OFTABLE_MAC_CACHE_USE,
priority=100,arp,reg14=${port_key_2},metadata=${dp_key_2},dl_src=00:00:00:00:10:20,arp_spa=192.168.10.20
actions=drop
table=OFTABLE_MAC_CACHE_USE,
priority=100,ip,reg14=${port_key_1},metadata=${dp_key_1},dl_src=00:00:00:00:10:10,nw_src=192.168.10.10
actions=drop
table=OFTABLE_MAC_CACHE_USE,
priority=100,ip,reg14=${port_key_1},metadata=${dp_key_1},dl_src=00:00:00:00:10:20,nw_src=192.168.10.20
actions=drop
table=OFTABLE_MAC_CACHE_USE,
priority=100,ip,reg14=${port_key_2},metadata=${dp_key_2},dl_src=00:00:00:00:10:10,nw_src=192.168.10.10
actions=drop
@@ -37058,8 +37058,8 @@ OVS_WAIT_UNTIL([
])
AT_CHECK_UNQUOTED([as hv1 ovs-ofctl dump-flows br-int
table=OFTABLE_MAC_CACHE_USE --no-stats | strip_cookie | sort], [0], [dnl
- table=OFTABLE_MAC_CACHE_USE,
priority=100,arp,reg14=${port_key_2},metadata=${dp_key_2},dl_src=00:00:00:00:10:10,arp_spa=192.168.10.10,arp_op=2
actions=drop
- table=OFTABLE_MAC_CACHE_USE,
priority=100,arp,reg14=${port_key_2},metadata=${dp_key_2},dl_src=00:00:00:00:10:20,arp_spa=192.168.10.20,arp_op=2
actions=drop
+ table=OFTABLE_MAC_CACHE_USE,
priority=100,arp,reg14=${port_key_2},metadata=${dp_key_2},dl_src=00:00:00:00:10:10,arp_spa=192.168.10.10
actions=drop
+ table=OFTABLE_MAC_CACHE_USE,
priority=100,arp,reg14=${port_key_2},metadata=${dp_key_2},dl_src=00:00:00:00:10:20,arp_spa=192.168.10.20
actions=drop
table=OFTABLE_MAC_CACHE_USE,
priority=100,ip,reg14=${port_key_2},metadata=${dp_key_2},dl_src=00:00:00:00:10:10,nw_src=192.168.10.10
actions=drop
table=OFTABLE_MAC_CACHE_USE,
priority=100,ip,reg14=${port_key_2},metadata=${dp_key_2},dl_src=00:00:00:00:10:20,nw_src=192.168.10.20
actions=drop
])
@@ -37282,22 +37282,29 @@ ovn-appctl -t ovn-controller vlog/set
mac_cache:file:dbg pinctrl:file:dbg
check ovn-nbctl \
-- ls-add ls1 \
-- ls-add ls2 \
+ -- ls-add ls3 \
-- lr-add lr \
-- set logical_router lr options:mac_binding_age_threshold=4 \
-- lrp-add lr lr-ls1 00:00:00:00:10:00 192.168.10.1/24 \
-- lrp-add lr lr-ls2 00:00:00:00:20:00 192.168.20.1/24 \
+ -- lrp-add lr lr-ls3 00:00:00:00:30:00 192.168.30.1/24 \
-- lsp-add-router-port ls1 ls1-lr lr-ls1 \
-- lsp-add ls1 vif1 \
-- lsp-set-addresses vif1 "00:00:00:00:10:10 192.168.10.10" \
-- lsp-add-router-port ls2 ls2-lr lr-ls2 \
-- lsp-add ls2 vif2 \
- -- lsp-set-addresses vif2 "00:00:00:00:20:10 192.168.20.10"
+ -- lsp-set-addresses vif2 "00:00:00:00:20:10 192.168.20.10" \
+ -- lsp-add-router-port ls3 ls3-lr lr-ls3 \
+ -- lsp-add ls3 vif3 \
+ -- lsp-set-addresses vif3 "00:00:00:00:30:10 192.168.30.10"
check ovs-vsctl \
-- add-port br-int vif1 \
-- set interface vif1 external-ids:iface-id=vif1 \
-- add-port br-int vif2 \
- -- set interface vif2 external-ids:iface-id=vif2
+ -- set interface vif2 external-ids:iface-id=vif2 \
+ -- add-port br-int vif3 \
+ -- set interface vif3 external-ids:iface-id=vif3
OVN_POPULATE_ARP
wait_for_ports_up
@@ -37314,23 +37321,32 @@ sleep 2
send_garp hv1 vif1 2 00:00:00:00:10:10 ff:ff:ff:ff:ff:ff 192.168.10.10
192.168.10.10
wait_row_count mac_binding 1 ip="192.168.10.10" logical_port="lr-ls1"
-uuid=$(fetch_column mac_binding _uuid ip="192.168.10.10" logical_port="lr-ls1")
+send_garp hv1 vif3 2 00:00:00:00:30:10 ff:ff:ff:ff:ff:ff 192.168.30.10
192.168.30.10
+wait_row_count mac_binding 1 ip="192.168.30.10" logical_port="lr-ls3"
+
+uuid_ls1=$(fetch_column mac_binding _uuid ip="192.168.10.10"
logical_port="lr-ls1")
+uuid_ls3=$(fetch_column mac_binding _uuid ip="192.168.30.10"
logical_port="lr-ls3")
for i in $(seq 12); do
- # Keep one entry alive by sending traffic that uses it.
+ # Keep two entries alive by sending traffic that uses them.
send_udp hv1 vif1 00:00:00:00:10:00 00:00:00:00:10:10 192.168.20.10
192.168.10.10
+ send_garp hv1 vif3 1 00:00:00:00:30:10 ff:ff:ff:ff:ff:ff 192.168.30.10
192.168.20.100
sleep 1
# The entry must not expire.
check_row_count mac_binding 1 ip="192.168.10.10" logical_port="lr-ls1"
+ check_row_count mac_binding 1 ip="192.168.30.10" logical_port="lr-ls3"
as hv1 ovs-ofctl dump-flows br-int table=OFTABLE_MAC_CACHE_USE
done
# Check that it's the same entry.
-uuid2=$(fetch_column mac_binding _uuid ip="192.168.10.10"
logical_port="lr-ls1")
-check test "$uuid" = "$uuid2"
+uuid2_ls1=$(fetch_column mac_binding _uuid ip="192.168.10.10"
logical_port="lr-ls1")
+uuid2_ls3=$(fetch_column mac_binding _uuid ip="192.168.30.10"
logical_port="lr-ls3")
+check test "$uuid_ls1" = "$uuid2_ls1"
+check test "$uuid_ls3" = "$uuid2_ls3"
# The other entry must have expired by now.
check_row_count mac_binding 0 ip="192.168.20.10" logical_port="lr-ls2"
-# Wait for the alive one to expire as well.
+# Wait for the alive ones to expire as well.
wait_row_count mac_binding 0 ip="192.168.10.10" logical_port="lr-ls1"
+wait_row_count mac_binding 0 ip="192.168.30.10" logical_port="lr-ls3"
OVN_CLEANUP([hv1])
AT_CLEANUP
diff --git a/tests/system-ovn.at b/tests/system-ovn.at
index 799779276..26b56ac3b 100644
--- a/tests/system-ovn.at
+++ b/tests/system-ovn.at
@@ -18643,10 +18643,10 @@
priority=100,icmp6,reg0=0x1720016,reg1=0,reg2=0,reg3=0x70,reg14=0x$rtr_port_key,
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,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
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
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
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
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
@@ -18840,7 +18840,7 @@
priority=100,arp,reg0=0xac10010a,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl
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:01:10,arp_spa=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:01:10,nw_src=172.16.1.10
actions=drop
])
@@ -19322,10 +19322,10 @@
priority=100,icmp6,reg0=0x1720016,reg1=0,reg2=0,reg3=0x70,reg14=0x$rtr_port_key,
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,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
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
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
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
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
@@ -19377,7 +19377,7 @@
priority=100,arp,reg0=0xac10010a,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl
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:01:10,arp_spa=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:01:10,nw_src=172.16.1.10
actions=drop
])
@@ -19898,10 +19898,10 @@
priority=100,icmp6,reg0=0x1720016,reg1=0,reg2=0,reg3=0x70,reg14=0x$rtr_port_key,
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,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
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
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
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
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
@@ -19953,7 +19953,7 @@
priority=100,arp,reg0=0xac10010a,reg14=0x$rtr_port_key,metadata=0x$rtr_dp_key,dl
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:01:10,arp_spa=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:01:10,nw_src=172.16.1.10
actions=drop
])
--
2.55.0
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev