Hi Ilya,

thanks for your response!

> On 18 Oct 2023, at 15:59, Ilya Maximets via discuss 
> <ovs-discuss@openvswitch.org> wrote:
> 
> On 10/17/23 16:30, Vladislav Odintsov via discuss wrote:
>> Hi,
>> 
>> I’m testing OVS hardware offload with tc flower with Mellanox/NVidia 
>> ConnectX-6 Dx smartnic and see next warning in ovs-vswitchd log:
>> 
>> 2023-10-17T14:23:15.116Z|00386|tc(handler20)|WARN|Kernel flower 
>> acknowledgment does not match request!  Set dpif_netlink to dbg to see which 
>> rule caused this error.
>> 
>> With dpif_netlink debug logs enabled, after this message appears two 
>> additional lines:
>> 
>> 2023-10-17T14:23:15.117Z|00387|dpif_netlink(handler20)|DBG|added flow
>> 2023-10-17T14:23:15.117Z|00388|dpif_netlink(handler20)|DBG|system@ovs-system:
>>  put[create] ufid:d8a3ab6d-77d1-4574-8bbf-634b01a116f3 
>> recirc_id(0),dp_hash(0/0),skb_priority(0/0),tunnel(tun_id=0x10,src=10.1.0.105,dst=10.1.0.109,ttl=64/0,tp_src=59507/0,tp_dst=6081/0,geneve({class=0x102,type=0x80,len=4,0x60002}),flags(-df+csum+key)),in_port(4),skb_mark(0/0),ct_state(0/0x2f),ct_zone(0/0),ct_mark(0/0),ct_label(0/0x3),eth(src=00:00:ba:a4:6e:ad,dst=00:01:ba:a4:6e:ad),eth_type(0x0800),ipv4(src=172.32.2.4/0.0.0.0,dst=172.32.1.4/0.0.0.0,proto=1,tos=0/0x3,ttl=63/0,frag=no),icmp(type=8/0,code=0/0),
>>  
>> actions:set(tunnel(tun_id=0xff0011,src=10.1.0.109,dst=10.1.1.18,ttl=64,tp_src=59507,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0x18000b}),flags(df|csum|key))),4
>> 
> 
> Could you also enable debug logs for 'tc' module in OVS?
> It shoudl give more infomation about where exactly is the
> difference between what OVS asked for and what the kenrel
> reported back.
> 
> In general this warning typically signifies a kernel bug,
> but it could be that OVS doesn't format something correctly
> as well.

With enabled tc logs I see mismatches in expected/real keys and actions:

2023-10-18T13:33:35.882Z|00118|tc(handler21)|DBG|tc flower compare failed 
action compare
Expected Mask:
00000000  ff ff 00 00 ff ff ff ff-ff ff ff ff ff ff ff ff
00000030  00 00 2f 00 00 00 00 00-00 00 00 00 00 00 00 00
00000040  03 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
00000050  00 00 00 00 ff ff ff ff-00 00 00 00 00 00 00 00
00000060  00 00 00 00 ff 00 00 00-00 00 00 00 00 00 00 00
00000090  00 00 00 00 00 00 00 00-ff ff ff ff ff ff ff ff
000000c0  ff 00 00 00 ff ff 00 00-ff ff ff ff ff ff ff ff
000000d0  08 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
000000e0  ff ff ff 01 ff ff ff ff-00 00 00 00 00 00 00 00

Received Mask:
00000000  ff ff 00 00 ff ff ff ff-ff ff ff ff ff ff ff ff
00000030  00 00 2f 00 00 00 00 00-00 00 00 00 00 00 00 00
00000040  03 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
00000050  00 00 00 00 ff ff ff ff-00 00 00 00 00 00 00 00
00000060  00 00 00 00 ff 00 00 00-00 00 00 00 00 00 00 00
00000090  00 00 00 00 00 00 00 00-ff ff ff ff ff ff ff ff
000000c0  ff 00 00 00 ff ff 00 00-ff ff ff ff ff ff ff ff
000000d0  08 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
000000e0  ff ff ff 01 ff ff ff ff-00 00 00 00 00 00 00 00

Expected Key:
00000000  08 06 00 00 ff ff ff ff-ff ff 00 00 ba a4 6e ad
00000050  a9 fe 64 01 a9 fe 64 03-00 00 ba a4 6e ad 00 00  <— mismatch in this 
line
00000060  00 00 00 00 01 00 00 00-00 00 00 00 00 00 00 00
00000090  00 00 00 00 00 00 00 00-0a 01 00 68 0a 01 00 6d
000000c0  00 40 c0 5b 17 c1 00 00-00 00 00 00 00 00 00 10  <— mismatch in this 
line
000000d0  08 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
000000e0  01 02 80 01 00 03 00 02-00 00 00 00 00 00 00 00

Received Key:
00000000  08 06 00 00 ff ff ff ff-ff ff 00 00 ba a4 6e ad
00000050  00 00 00 00 a9 fe 64 03-00 00 00 00 00 00 00 00  <— mismatch in this 
line
00000060  00 00 00 00 01 00 00 00-00 00 00 00 00 00 00 00
00000090  00 00 00 00 00 00 00 00-0a 01 00 68 0a 01 00 6d
000000c0  00 00 00 00 17 c1 00 00-00 00 00 00 00 00 00 10  <— mismatch in this 
line
000000d0  08 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
000000e0  01 02 80 01 00 03 00 02-00 00 00 00 00 00 00 00

Expected Masked Key:
00000000  08 06 00 00 ff ff ff ff-ff ff 00 00 ba a4 6e ad
00000050  00 00 00 00 a9 fe 64 03-00 00 00 00 00 00 00 00
00000060  00 00 00 00 01 00 00 00-00 00 00 00 00 00 00 00
00000090  00 00 00 00 00 00 00 00-0a 01 00 68 0a 01 00 6d
000000c0  00 00 00 00 17 c1 00 00-00 00 00 00 00 00 00 10
000000d0  08 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
000000e0  01 02 80 01 00 03 00 02-00 00 00 00 00 00 00 00

Received Masked Key:
00000000  08 06 00 00 ff ff ff ff-ff ff 00 00 ba a4 6e ad
00000050  00 00 00 00 a9 fe 64 03-00 00 00 00 00 00 00 00
00000060  00 00 00 00 01 00 00 00-00 00 00 00 00 00 00 00
00000090  00 00 00 00 00 00 00 00-0a 01 00 68 0a 01 00 6d
000000c0  00 00 00 00 17 c1 00 00-00 00 00 00 00 00 00 10
000000d0  08 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
000000e0  01 02 80 01 00 03 00 02-00 00 00 00 00 00 00 00

Action 0 mismatch:
 - Expected Action: 
0x1000000000000000000000000ff0011c05b17c1004000000a01006d0a010112000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000010280010018000b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000
 - Received Action: 
0x1000000000000000000000000ff0011000017c1004000000a01006d0a010112000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000010280010018000b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000
2023-10-18T13:33:35.882Z|00119|tc(handler21)|WARN|Kernel flower acknowledgment 
does not match request!  Set dpif_netlink to dbg to see which rule caused this 
error.
2023-10-18T13:33:35.882Z|00120|dpif_netlink(handler21)|DBG|added flow
2023-10-18T13:33:35.882Z|00121|dpif_netlink(handler21)|DBG|system@ovs-system: 
put[create] ufid:dc160f96-84ef-4bf7-919a-3729c19382b8 
recirc_id(0),dp_hash(0/0),skb_priority(0/0),tunnel(tun_id=0x10,src=10.1.0.104,dst=10.1.0.109,ttl=64/0,tp_src=49243/0,tp_dst=6081/0,geneve({class=0x102,type=0x80,len=4,0x30002}),flags(-df+csum+key)),in_port(4),skb_mark(0/0),ct_state(0/0x2f),ct_zone(0/0),ct_mark(0/0),ct_label(0/0x3),eth(src=00:00:ba:a4:6e:ad,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),arp(sip=169.254.100.1/0.0.0.0,tip=169.254.100.3,op=1,sha=00:00:ba:a4:6e:ad/00:00:00:00:00:00,tha=00:00:00:00:00:00/00:00:00:00:00:00),
 
actions:set(tunnel(tun_id=0xff0011,src=10.1.0.109,dst=10.1.1.18,ttl=64,tp_src=49243,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0x18000b}),flags(df|csum|key))),4

Is there any documentation or maybe code in OVS (or kernel, etc) to read to 
understand the reason for this mismatch in more details?
Or, maybe you have a good next steps to advice?

> 
>> The test system is a CentOS 8.4 with installed elrepo mainline kernel 6.5.5, 
>> OVS 3.1.1 and OVN 22.09.1.
> 
> 3.1.1 contains some known bugs in TC offloading code, so
> you may want to try the latest 3.1.3.  Though it's unlikely
> to be related ot the issue you're facing here.

I’ve upgraded OVS to 3.1.3 to eliminate the possible known OVS bugs, but this 
didn’t help.
Same warnings and mismatches still are reported.

> 
>> The workload I’m testing is a L3 Gateway for OVN IC (cross-az traffic).
>> 
>> tc monitor at the same moment outputs next:
>> 
>> replaced filter dev genev_sys_6081 ingress protocol ip pref 2 flower chain 0 
>> handle 0x3
>>   dst_mac 00:01:ba:a4:6e:ad
>>   src_mac 00:00:ba:a4:6e:ad
>>   eth_type ipv4
>>   ip_proto icmp
>>   ip_tos 0/0x3
>>   enc_dst_ip 10.1.0.109
>>   enc_src_ip 10.1.0.105
>>   enc_key_id 16
>>   enc_dst_port 6081
>>   enc_tos 0
>>   geneve_opts 0102:80:00060002/ffff:ff:ffffffff
>>   ip_flags nofrag
>>   ct_state -trk-new-est
>>   ct_label 00000000000000000000000000000000/030000000000000000000000000000
>>   in_hw in_hw_count 2
>> action order 1: tunnel_key  unset pipe
>> index 5 ref 1 bind 1
>> no_percpu
>> used_hw_stats delayed
>> 
>> action order 2: tunnel_key  set
>> src_ip 10.1.0.109
>> dst_ip 10.1.1.18
>> key_id 16711697
>> dst_port 6081
>> geneve_opts 0102:80:0018000b
>> csum
>> ttl 64 pipe
>> index 6 ref 1 bind 1
>> no_percpu
>> used_hw_stats delayed
>> 
>> action order 3: mirred (Egress Redirect to device genev_sys_6081) stolen
>> index 3 ref 1 bind 1
>> cookie 6daba3d87445d1774b63bf8bf316a101
>> no_percpu
>> used_hw_stats delayed
>> 
>> 
>> Despite of these warnings, the flow is finally offloaded and the traffic 
>> traverses this gw node well, only first packets of an ICMP sequence reach 
>> CPU (seen in tcpdump):
> 
> The warning is a warning.  It doesn't prevent the flow to be installed.
> Though the installed flow may be incorrect and the traffic may be
> handled in the wrong way.  Enabling debug logs for tc should show what
> exacltly is wrong.
> 
>> 
>> # ovs-appctl dpctl/dump-flows type=offloaded
>> tunnel(tun_id=0x10,src=10.1.0.107,dst=10.1.0.109,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0x50002}),flags(+key)),ct_state(-new-est-rel-rpl-trk),ct_label(0/0x3),recirc_id(0),in_port(4),eth(src=00:00:ba:a4:6e:ad,dst=00:01:ba:a4:6e:ad),eth_type(0x0800),ipv4(proto=1,tos=0/0x3,frag=no),
>>  packets:3192, bytes:312816, used:1.240s, 
>> actions:set(tunnel(tun_id=0xff0011,src=10.1.0.109,dst=10.1.1.18,ttl=64,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0x18000b}),flags(csum|key))),4
>> tunnel(tun_id=0xff0011,src=10.1.1.18,dst=10.1.0.109,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0xb0018}),flags(+key)),ct_state(-new-est-rel-rpl-trk),ct_label(0/0x3),recirc_id(0),in_port(4),eth(src=00:01:ba:a4:6e:ad,dst=00:00:ba:a4:6e:ad),eth_type(0x0800),ipv4(src=172.32.1.0/255.255.255.0,dst=172.32.0.4,proto=1,tos=0/0x3,ttl=63,frag=no),
>>  packets:3192, bytes:312816, used:1.240s, 
>> actions:set(tunnel(tun_id=0x11,src=10.1.0.109,dst=10.1.0.107,ttl=64,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0x10002}),flags(csum|key))),set(eth(src=d0:fe:00:00:00:1d,dst=0a:00:66:ec:f7:40)),set(ipv4(ttl=62)),4
>> tunnel(tun_id=0x10,src=10.1.0.105,dst=10.1.0.109,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0x60002}),flags(+key)),ct_state(-new-est-rel-rpl-trk),ct_label(0/0x3),recirc_id(0),in_port(4),eth(src=00:00:ba:a4:6e:ad,dst=00:01:ba:a4:6e:ad),eth_type(0x0800),ipv4(proto=1,tos=0/0x3,frag=no),
>>  packets:293, bytes:28714, used:1.240s, 
>> actions:set(tunnel(tun_id=0xff0011,src=10.1.0.109,dst=10.1.1.18,ttl=64,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0x18000b}),flags(csum|key))),4
>> tunnel(tun_id=0xff0011,src=10.1.1.18,dst=10.1.0.109,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0xb0018}),flags(+key)),ct_state(-new-est-rel-rpl-trk),ct_label(0/0x3),recirc_id(0),in_port(4),eth(src=00:01:ba:a4:6e:ad,dst=00:00:ba:a4:6e:ad),eth_type(0x0800),ipv4(src=172.32.1.0/255.255.255.0,dst=172.32.2.4,proto=1,tos=0/0x3,ttl=63,frag=no),
>>  packets:293, bytes:28714, used:1.240s, 
>> actions:set(tunnel(tun_id=0x17,src=10.1.0.109,dst=10.1.0.105,ttl=64,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0x10002}),flags(csum|key))),set(eth(src=d0:fe:00:00:00:8e,dst=0a:00:40:c2:76:a0)),set(ipv4(ttl=62)),4
>> tunnel(tun_id=0x10,src=10.1.0.104,dst=10.1.0.109,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0x30002}),flags(+key)),ct_state(-new-est-rel-rpl-trk),ct_label(0/0x3),recirc_id(0),in_port(4),eth(src=00:00:ba:a4:6e:ad,dst=00:01:ba:a4:6e:ad),eth_type(0x0800),ipv4(proto=6,tos=0/0x3,frag=no),
>>  packets:0, bytes:0, used:never, 
>> actions:set(tunnel(tun_id=0xff0011,src=10.1.0.109,dst=10.1.1.18,ttl=64,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0x18000b}),flags(csum|key))),4
>> tunnel(tun_id=0xff0011,src=10.1.1.18,dst=10.1.0.109,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0xb0018}),flags(+key)),ct_state(-new-est-rel-rpl-trk),ct_label(0/0x3),recirc_id(0),in_port(4),eth(src=00:01:ba:a4:6e:ad,dst=00:00:ba:a4:6e:ad),eth_type(0x0800),ipv4(src=169.254.96.0/255.255.252.0,dst=169.254.99.0,proto=6,tos=0/0x3,ttl=254,frag=no),
>>  packets:0, bytes:0, used:never, 
>> actions:set(tunnel(tun_id=0xe,src=10.1.0.109,dst=10.1.0.104,ttl=64,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0x20001}),flags(csum|key))),set(eth(src=10:00:ba:a4:6e:ad,dst=02:00:ba:a4:6e:ad)),set(ipv4(ttl=253)),4
>> 
>> 
>> I’m wonder, whether this is a known issue (I couldn’t find any related 
>> messages searching in internet).
>> Could someone give any advice/help with this?
>> 
>> Thanks in advance.
>> 
>> Regards,
>> Vladislav Odintsov
> 
> _______________________________________________
> discuss mailing list
> disc...@openvswitch.org <mailto:disc...@openvswitch.org>
> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Regards,
Vladislav Odintsov

_______________________________________________
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to