[ovs-discuss] check_pkt_larger precision

Ilya Maximets i.maximets at ovn.org
Thu Jun 11 10:25:23 UTC 2020


> On 03. 06. 20 20:09, Numan Siddique wrote:
>> This email was sent from an external sender. Do not click links or 
>> open attachments unless you recognize the sender and know the content 
>> is safe.
>>
>>
>>
>> On Wed, Jun 3, 2020 at 8:27 PM Miroslav Kubiczek 
>> <miroslav.kubiczek at adaptivemobile.com 
>> <mailto:miroslav.kubiczek at adaptivemobile.com>> wrote:
>>
>>
>>     On 29. 05. 20 12:51, Numan Siddique wrote:
>>>     This email was sent from an external sender. Do not click links
>>>     or open attachments unless you recognize the sender and know the
>>>     content is safe.
>>>
>>>
>>>
>>>     On Fri, May 29, 2020 at 3:41 PM Miroslav Kubiczek
>>>     <miroslav.kubiczek at adaptivemobile.com
>>>     <mailto:miroslav.kubiczek at adaptivemobile.com>> wrote:
>>>
>>>
>>>         On 29. 05. 20 11:29, Numan Siddique wrote:
>>>>         On Fri, May 29, 2020 at 2:25 PM Miroslav Kubiczek
>>>>         <miroslav.kubiczek at adaptivemobile.com
>>>>         <mailto:miroslav.kubiczek at adaptivemobile.com>> wrote:
>>>>
>>>>             Hi, I have finally implemented flows with
>>>>             check_pkt_larger action. Partial flow dump is
>>>>             here:table=0, priority=100
>>>>             actions=check_pkt_larger(60)->NXM_NX_REG0[0],resubmit(,1)
>>>>             table=1, priority=1000,reg0=0x1 actions=resubmit(,2)
>>>>             table=1, priority=100,reg0=0 actions=resubmit(,3) I run
>>>>             a test which sends UDP packets (with VLAN) with size:
>>>>             58, 59, 62, 63 and 69 in a loop. Only the packet with 69
>>>>             match the action (1st line in table=1). In 2nd test I
>>>>             set check_pkt_larger  just by one byte less to 59 and then all the above packets match. So the precision seems to be rounded to 8 bytes or something like that.
>>>>             Can this be fixed to be more precise ideally to exact 1 byte?
>>>>
>>>>
>>>>         Can you try without VLAN and see the accuracy ?
>>>
>>>         I tried without VLAN, it's not accurate.
>>>
>>>
>>>     This is how the pkt length comparison is done
>>>
>>>     in vswitchd -
>>>     https://github.com/openvswitch/ovs/blob/master/ofproto/ofproto-dpif-xlate.c#L6265
>>>     in kernel datapath -
>>>     https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux/+/refs/heads/master/net/openvswitch/actions.c#1183
>>
>>     I can see the problem only when using DPDK. Does it use the same code?
>>
>> For flow translation the same code is hit.
>> I think for ovs-dpdk datapath flows, the code here [1] should get hit.
>>
>> [1] - 
>> https://github.com/openvswitch/ovs/blob/master/lib/odp-execute.c#L766
>>
>> I never tested with ovs-dpdk when I worked on it.
> 
> 
> Thanks Numan, I added logging and I can see in that 
> dp_packet_size(packet) is always greater or equal 60 even if the real 
> packet size is 59 or less.

I think that Dumitru was right and the issue is l2 padding that should
not be taken into account while executing this action.

I sent a patch for this here:
https://patchwork.ozlabs.org/project/openvswitch/patch/20200611100231.2829329-1-i.maximets@ovn.org/

Could you, please, check it in your setup?

Best regards, Ilya Maximets.


More information about the discuss mailing list