thanks! 
upgrade to ovs version 2.12.1 fix my problem.














At 2022-08-17 18:49:46, "Ilya Maximets" <[email protected]> wrote:
>On 8/17/22 11:32, ychen wrote:
>> hi,
>>    when we send 2 packets with different dest mac in 10s(fast datapath flow 
>> aging time), with the same userspace flow action, but the second packet  act 
>> incorrectly.
>>     
>>     1. problem phenomenon: 
>>     userspace flow:  
>> in_port=1,table=0,cookie=0x123,priority=500,tun_id=0x3562,actions=set_field:fe:ff:ff:ff:ff:ff->eth_src,set_field:fa:16:3e:c0:ee:8c->eth_dst,output:tap111
>>     packet caputured:
>>     13:51:02.097914 fe:ff:ff:ff:ff:ff > fa:16:3e:c0:ee:8c ,  ethertype IPv4 
>> (0x0800), length 115: 10.194.50.240.53 > 10.199.16.44.48651: 35479 1/0/1 A 
>> 66.102.251.24 (73)   //first packet, corrrect change its mac 
>>     13:51:04.213568 fe:ff:ff:ff:ff:ff > 00:00:00:00:00:00, ethertype IPv4 
>> (0x0800), length 115: 10.194.50.240.53 > 10.199.16.44.48651: 35479 1/0/1 A 
>> 66.102.251.24 (73)    //second packet, dest mac stay as unchanged
>> 
>> 
>>    2. enviroment
>>        ovs 2.12, can only reproduce in kernel mode
>> 
>> 
>>    3. reproduce step
>>       client node--> server node
>> 
>> 
>>       3.1 client node configuration:
>>       $ sudo ovs-vsctl show
>> 77f97d1d-e34f-4e4c-b4f1-1d2299a4411a
>>     Bridge br-test
>>         fail_mode: secure
>>         Port "vxlan11"
>>             Interface "vxlan11"
>>                 type: vxlan
>>                 options: {in_key=flow, local_ip="10.185.2.87", out_key=flow, 
>> remote_ip=flow}
>>         Port br-test
>>             Interface br-test
>>                 type: internal
>>         Port "tap11"
>>             Interface "tap11"
>>                 type: internal
>>     ovs_version: "2.12.0"
>>  
>> sudo ovs-ofctl dump-flows br-test -O openflow13
>>  cookie=0x0, duration=223377.958s, table=0, n_packets=7512, n_bytes=1755097, 
>> reset_counts in_port=tap11 
>> actions=set_field:0x3562->tun_id,load:0xab90251->NXM_NX_TUN_IPV4_DST[],output:vxlan11
>>  
>>   3.2  server node configuration:
>>    # ovs-vsctl show
>> f39fb127-019b-41c3-86b7-a420a3b4d7f2
>>     Bridge br-int
>>         fail_mode: secure
>>         Port "vf-10.185.2.81"
>>             Interface "vf-10.185.2.81"
>>                 type: vxlan
>>                 options: {csum="true", df_default="false", in_key=flow, 
>> local_ip="10.185.2.81", out_key=flow, remote_ip=flow}
>>         Port br-int
>>             Interface br-int
>>                 type: internal
>>         Port "tap111"
>>             Interface "tap111"
>>                 type: internal
>>       ovs_version: "2.12.0"
>>  
>> ovs-ofctl add-flow br-int -O openflow13 
>> "in_port=1,table=0,cookie=0x123,priority=500,tun_id=0x3562,actions=set_field:fe:ff:ff:ff:ff:ff->eth_src,set_field:c6:3a:16:ec:e0:d9->eth_dst,output:tap111"
>> 
>> 
>>   3.3 sending packets
>>         packet payload: 
>>        dst mac:c6:3a:16:ec:e0:d9
>>        src mac: 02:00:00:00:00:00
>>        src ip: 10.194.50.241
>>        dst ip: 10.100.100.212 
>>        proto: udp
>>         l4port: 45678
>>         # ovs-ofctl packet-out br-test 1 "table=0" 
>> "c63a16ece0d902000000000008004500001c0000400040118de60ac232f10a6464d48000b26e00082084000000000000000000000000000000000000"
>>        sleep 1s, send the second packet:
>>         # ovs-ofctl packet-out br-test 1 "table=0" 
>> "11111111111102000000000008004500001c0000400040118de60ac232f10a6464d48000b26e00082084000000000000000000000000000000000000"
>>   
>>   3.4 server node packet capture
>>          10:49:59.725865 fe:ff:ff:ff:ff:ff > c6:3a:16:ec:e0:d9, ethertype 
>> IPv4 (0x0800), length 60: 10.194.50.241.32768 > 10.100.100.212.45678: UDP, 
>> length 0
>>          10:50:00.881564 fe:ff:ff:ff:ff:ff > 11:11:11:11:11:11, ethertype 
>> IPv4 (0x0800), length 60: 10.194.50.241.32768 > 10.100.100.212.45678: UDP, 
>> length 0  //it is wrong, dest mac should be c6:3a:16:ec:e0:d9
>>  
>>   3.5  fast datapath flow in server node
>>         
>> recirc_id(0),tunnel(tun_id=0x3562,src=10.185.2.87,dst=10.185.2.81,flags(-df-csum+key)),in_port(1),eth(src=02:00:00:00:00:00),eth_type(0x0800),ipv4(frag=no),
>>  packets:1, bytes:60, used:2.176s, 
>> actions:,set(eth(src=fe:ff:ff:ff:ff:ff)),3   
>>         
>>     correct datapath flow:
>>     
>> recirc_id(0),tunnel(tun_id=0x3562,src=10.185.2.87,dst=10.185.2.81,flags(-df-csum+key)),in_port(1),eth(src=02:00:00:00:00:00,dst=11:11:11:11:11:11),eth_type(0x0800),ipv4(frag=no),
>>  packets:0, bytes:0, used:never,            
>> actions:set(eth(src=fe:ff:ff:ff:ff:ff,dst=c6:3a:16:ec:e0:d9)),3
>>     
>>     compare with the correct datapath flow, dest mac is disappeared in match 
>> and action.
>
>Hi.  The issue you described look very much like the issue fixed in the
>following patch:
>  
> https://patchwork.ozlabs.org/project/openvswitch/patch/[email protected]/
>
>But you're using very old version of OVS.  2.12 is not supported anymore.
>And you seem to use 2.12.0, while the issue supposed to be fixed in 2.12.1.
>
>The last release on the branch 2.12 was v2.12.4.
>
>So, please, try a newer version.  Ideally, upgrade to 2.17, which is our
>current LTS series.
>
>Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to