Bug 2081773
| Summary: | IPv6 related datapath flows are evicted and re-added by revalidator threads | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux Fast Datapath | Reporter: | Numan Siddique <nusiddiq> |
| Component: | openvswitch2.16 | Assignee: | Aaron Conole <aconole> |
| Status: | CLOSED ERRATA | QA Contact: | Rick Alongi <ralongi> |
| Severity: | urgent | Docs Contact: | |
| Priority: | urgent | ||
| Version: | FDP 21.K | CC: | aconole, ctrautma, jhsiao, ralongi |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | openvswitch2.16-2.16.0-80.el8fdp | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2022-08-01 14:12:39 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | |||
| Bug Blocks: | 2143941 | ||
* Tue Jun 07 2022 Open vSwitch CI <ovs-ci> - 2.16.0-80
- Merging upstream branch-2.16 [RH git: 45dcf738b0]
Commit list:
87922569f3 ofproto-dpif-xlate: Fix internal CT state for non-recirc traffic.
51aa8dd106 classifier: Adjust segment boundary to execute prerequisite processing. (#2081773)
# Reproduce issue using openvswitch2.16-2.16.0-76.el8fdp:
[root@netqe9 ~]# rpm -q openvswitch2.16
openvswitch2.16-2.16.0-76.el8fdp.x86_64
# Terminal 1:
[root@netqe9 ~]# cat setup_dp_issue.sh
dnf -y install $RPM_OVS
systemctl restart openvswitch
cat << EOF > flows.txt
table=0, priority=120 ipv6,icmp6,nw_ttl=255,icmp_type=135,icmp_code=0,nd_target=1000::10 actions=NORMAL
table=0, priority=0 actions=NORMAL
EOF
ovs-vsctl del-br br-int || :
ovs-vsctl add-br br-int
ovs-ofctl add-flows br-int flows.txt
create_fake_vm() {
iface_id=$1
name=$2
mac=$3
ip=$4
mask=$5
gw=$6
ipv6_addr=$7
ipv6_gw=$8
ip netns add $name
ovs-vsctl -- add-port br-int $name -- set interface $name type=internal -- set Interface $name external_ids:iface-id=$iface_id
ip link set $name netns $name
ip netns exec $name ip link set lo up
[ -n "$mac" ] && ip netns exec $name ip link set $name address $mac
ip netns exec $name ip addr add $ip/$mask dev $name
ip netns exec $name ip addr add $ipv6_addr dev $name
ip netns exec $name ip link set $name up
ip netns exec $name ip route add default via $gw dev $name
ip netns exec $name ip -6 route add default via $ipv6_gw dev $name
}
ip netns delete p1 || :
ip netns delete p2 || :
# Create namespaces for p1 and p2 fake VMs.
create_fake_vm sw0-port1 p1 50:54:00:00:00:03 10.0.0.3 24 10.0.0.1 1000::3/64 1000::1
create_fake_vm sw0-port2 p2 50:54:00:00:00:04 10.0.0.4 24 10.0.0.1 1000::4/64 1000::1
sleep 10
ip netns exec p1 nc -l -k -v 1000::3 8080
# Execute: ./setup_dp_issue.sh
# In Terminal 2:
ip netns exec p2 nc 1000::3 8080
# Terminal 3:
[root@netqe9 ~]# cat trigger_dp_issue.sh
#!/bin/bash
ovs-vsctl --may-exist add-br brtmp
while true
do
ovs-ofctl add-flow brtmp "table=0,priority=100,ip,udp actions=NORMAL"
sleep 1
ovs-ofctl del-flows brtmp
done
# Execute: ./trigger_dp_issue.sh
# Terminal 4
[root@netqe9 ~]# cat monitor_dp_flows.sh
#!/bin/bash
#watch -n1 "ovs-dpctl dump-flows -m" | tee -a $output_file
rm -f output.txt
while [ 1 ]; do sleep 1; ovs-dpctl dump-flows -m | tee -a output.txt; done
# Execute: ./monitor_dp_flows.sh
# Go back to Terminal 2 and enter any characters on console to send data onver nc connection
[root@netqe9 ~]# ip netns exec p2 nc 1000::3 8080
zhgdfhg
dfhgdfh
dzhgfdfgh
zdfhdfh
dfzhdfghdgfh
zdfhdfhgdfgh
# Go back to Terminal 4 and kill monitor_dp_flows.sh
# Check for "packets" field to confirm that the packets are not incrementing (this is the problem):
[root@netqe9 ~]# grep 'packets:' output.txt
ufid:39843c39-9ff2-4281-9c4d-1a39c6503a29, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:0, bytes:0, used:never, dp:ovs, actions:p2
ufid:2104c4c8-b4f8-4924-8d19-b9f70c3c6227, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:0, bytes:0, used:never, dp:ovs, actions:p1
ufid:39843c39-9ff2-4281-9c4d-1a39c6503a29, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:0, bytes:0, used:never, dp:ovs, actions:p2
ufid:2104c4c8-b4f8-4924-8d19-b9f70c3c6227, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:0, bytes:0, used:never, dp:ovs, actions:p1
ufid:69da6fdf-1e84-40f0-b311-735e6d555d8c, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=0/0,code=0/0), packets:0, bytes:0, used:never, dp:ovs, actions:p2
ufid:84ae0734-330f-4944-9d4b-6325b719c714, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=0/0,code=0/0), packets:0, bytes:0, used:never, dp:ovs, actions:p1
# Note that all of the packets show zero.
# Verify the fix:
# Update to openvswitch2.16-2.16.0-86.el8fdp
dnf -y update http://download-node-02.eng.bos.redhat.com/brewroot/packages/openvswitch2.16/2.16.0/86.el8fdp/x86_64/openvswitch2.16-2.16.0-86.el8fdp.x86_64.rpm
systemctl restart openvswitch
# Follow the steps from above
# Note that the packets are now incrementing as they should with the fix:
[root@netqe9 ~]# grep 'packets:' output.txt
ufid:88c5eb02-74a9-4041-80e4-3498eee05e9d, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:2, bytes:188, used:0.355s, flags:P., dp:ovs, actions:p1
ufid:d3210d0d-4ddf-4174-a375-4d72a2e6fdcc, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:2, bytes:172, used:0.355s, flags:., dp:ovs, actions:p2
ufid:88c5eb02-74a9-4041-80e4-3498eee05e9d, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:3, bytes:281, used:0.294s, flags:P., dp:ovs, actions:p1
ufid:d3210d0d-4ddf-4174-a375-4d72a2e6fdcc, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:3, bytes:258, used:0.294s, flags:., dp:ovs, actions:p2
ufid:88c5eb02-74a9-4041-80e4-3498eee05e9d, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:4, bytes:376, used:0.285s, flags:P., dp:ovs, actions:p1
ufid:f65c8b25-b23a-4280-8a66-ae093a93dfb0, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=136/0xf8,code=0/0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p1
ufid:fa5fc108-ab38-4fde-b1be-08692472d308, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=135,code=0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p2
ufid:d3210d0d-4ddf-4174-a375-4d72a2e6fdcc, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:4, bytes:344, used:0.285s, flags:., dp:ovs, actions:p2
ufid:88c5eb02-74a9-4041-80e4-3498eee05e9d, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:4, bytes:376, used:1.314s, flags:P., dp:ovs, actions:p1
ufid:f65c8b25-b23a-4280-8a66-ae093a93dfb0, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=136/0xf8,code=0/0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p1
ufid:fa5fc108-ab38-4fde-b1be-08692472d308, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=135,code=0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p2
ufid:d3210d0d-4ddf-4174-a375-4d72a2e6fdcc, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:4, bytes:344, used:1.314s, flags:., dp:ovs, actions:p2
ufid:88c5eb02-74a9-4041-80e4-3498eee05e9d, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:6, bytes:568, used:0.160s, flags:P., dp:ovs, actions:p1
ufid:f65c8b25-b23a-4280-8a66-ae093a93dfb0, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=136/0xf8,code=0/0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p1
ufid:fa5fc108-ab38-4fde-b1be-08692472d308, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=135,code=0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p2
ufid:d3210d0d-4ddf-4174-a375-4d72a2e6fdcc, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:6, bytes:516, used:0.160s, flags:., dp:ovs, actions:p2
ufid:88c5eb02-74a9-4041-80e4-3498eee05e9d, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:7, bytes:663, used:0.439s, flags:P., dp:ovs, actions:p1
ufid:f65c8b25-b23a-4280-8a66-ae093a93dfb0, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=136/0xf8,code=0/0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p1
ufid:fa5fc108-ab38-4fde-b1be-08692472d308, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=135,code=0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p2
ufid:d3210d0d-4ddf-4174-a375-4d72a2e6fdcc, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:7, bytes:602, used:0.439s, flags:., dp:ovs, actions:p2
ufid:88c5eb02-74a9-4041-80e4-3498eee05e9d, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:8, bytes:758, used:0.068s, flags:P., dp:ovs, actions:p1
ufid:f65c8b25-b23a-4280-8a66-ae093a93dfb0, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=136/0xf8,code=0/0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p1
ufid:fa5fc108-ab38-4fde-b1be-08692472d308, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=135,code=0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p2
ufid:d3210d0d-4ddf-4174-a375-4d72a2e6fdcc, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:8, bytes:688, used:0.068s, flags:., dp:ovs, actions:p2
ufid:d75af614-f209-4e25-8c89-afb756311741, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=136/0xf8,code=0/0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p2
ufid:88c5eb02-74a9-4041-80e4-3498eee05e9d, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:8, bytes:758, used:1.097s, flags:P., dp:ovs, actions:p1
ufid:f65c8b25-b23a-4280-8a66-ae093a93dfb0, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=136/0xf8,code=0/0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p1
ufid:fa5fc108-ab38-4fde-b1be-08692472d308, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=135,code=0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p2
ufid:e6038d6e-6940-4864-9b92-9d07626068f8, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=135,code=0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p1
ufid:d3210d0d-4ddf-4174-a375-4d72a2e6fdcc, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:8, bytes:688, used:1.098s, flags:., dp:ovs, actions:p2
ufid:d75af614-f209-4e25-8c89-afb756311741, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=136/0xf8,code=0/0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p2
ufid:88c5eb02-74a9-4041-80e4-3498eee05e9d, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:8, bytes:758, used:2.128s, flags:P., dp:ovs, actions:p1
ufid:f65c8b25-b23a-4280-8a66-ae093a93dfb0, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=136/0xf8,code=0/0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p1
ufid:fa5fc108-ab38-4fde-b1be-08692472d308, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=135,code=0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p2
ufid:e6038d6e-6940-4864-9b92-9d07626068f8, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p2),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:03),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=58,tclass=0/0,hlimit=255,frag=no),icmpv6(type=135,code=0),nd(target=::/::,sll=00:00:00:00:00:00/00:00:00:00:00:00,tll=00:00:00:00:00:00/00:00:00:00:00:00), packets:0, bytes:0, used:never, dp:ovs, actions:p1
ufid:d3210d0d-4ddf-4174-a375-4d72a2e6fdcc, recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:04),eth_type(0x86dd),ipv6(src=::/::,dst=::/::,label=0/0,proto=6,tclass=0/0,hlimit=64,frag=no),tcp(src=0/0,dst=0/0),tcp_flags(0/0), packets:8, bytes:688, used:2.128s, flags:., dp:ovs, actions:p2
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (openvswitch2.16 bug fix and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2022:5792 |
Description of problem: ovs-vswitchd is evicting and re-adding the IPv6 related datapath flows whenever revalidation is triggered. Version-Release number of selected component (if applicable): How reproducible: All the time. Steps to Reproduce: # Reproducer script Start openvswitch -------------------------------------- # Program the below flows in br-int cat << EOF > flows.txt table=0, priority=120 ipv6,icmp6,nw_ttl=255,icmp_type=135,icmp_code=0,nd_target=1000::10 actions=NORMAL table=0, priority=0 actions=NORMAL EOF ovs-vsctl del-br br-int || : ovs-vsctl add-br br-int ovs-ofctl add-flows br-int flows.txt create_fake_vm() { iface_id=$1 name=$2 mac=$3 ip=$4 mask=$5 gw=$6 ipv6_addr=$7 ipv6_gw=$8 ip netns add $name ovs-vsctl -- add-port br-int $name -- set interface $name type=internal -- set Interface $name external_ids:iface-id=$iface_id ip link set $name netns $name ip netns exec $name ip link set lo up [ -n "$mac" ] && ip netns exec $name ip link set $name address $mac ip netns exec $name ip addr add $ip/$mask dev $name ip netns exec $name ip addr add $ipv6_addr dev $name ip netns exec $name ip link set $name up ip netns exec $name ip route add default via $gw dev $name ip netns exec $name ip -6 route add default via $ipv6_gw dev $name } ip netns delete p1 || : ip netns delete p2 || : # Create namespaces for p1 and p2 fake VMs. create_fake_vm sw0-port1 p1 50:54:00:00:00:03 10.0.0.3 24 10.0.0.1 1000::3/64 1000::1 create_fake_vm sw0-port2 p2 50:54:00:00:00:04 10.0.0.4 24 10.0.0.1 1000::4/64 1000::1 # Start nc server on p1 # ip netns exec p1 nc -l -k -v 1000::3 8080 # Connect to the server from p2 # ip netns exec p2 nc 1000::3 8080 # In a separate terminal, trigger re validation cat << EOF > trigger_dp_issue.sh #!/bin/bash ovs-vsctl --may-exist add-br brtmp while true do ovs-ofctl add-flow brtmp "table=0,priority=100,ip,udp actions=NORMAL" sleep 5 ovs-ofctl del-flows brtmp done EOF chmod 0755 trigger_dp_issue.sh # On another session monitor datapath flows. cat << EOF > monitor_dp_flows.sh #!/bin/bash watch -n1 "ovs-dpctl dump-flows -m" EOF chmod 0755 monitor_dp_flows.sh -------------------------------------- Keep sending the traffic from p1 and p2. And you'd notice that the datapath flows gets evicted and re-added with the same match. This results in performance issues as there will be an upcall whenever revalidation threads kick-in. Actual results: Expected results: Additional info: