[ovs-discuss] check_pkt_larger precision
Miroslav Kubiczek
miroslav.kubiczek at adaptivemobile.com
Wed Jun 3 14:57:11 UTC 2020
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?
When tested with non DPDK then it's working fine. Both versions are:
$ ovs-ofctl --version
ovs-ofctl (Open vSwitch) 2.13.0
OpenFlow versions 0x1:0x6
Thanks,
Miro
>
> Thanks
> Numan
>
>>
>> man ovs-actions for check_pkt_larger says
>>
>> ****
>> Syntax:
>> check_pkt_larger(pkt_len)->dst
>>
>> Checks if the packet is larger than the specified length
>> in pkt_len. If so, stores 1 in dst, which should be a 1-bit
>> field; if not, stores 0.
>>
>> The packet length to check againt the argument pkt_len
>> includes the L2 header and L2 payload of the packet, but not the
>> VLAN tag (if present).
>>
>> Examples:
>> · check_pkt_larger(1500)->reg0[0]
>> · check_pkt_larger(8000)->reg9[10]
>>
>> ******
>>
>> Thanks
>> Numan
>>
>> Thanks,
>> Miro
>>
>>
>>
> _______________________________________________
> discuss mailing list
> discuss at openvswitch.org <mailto:discuss at openvswitch.org>
> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-discuss/attachments/20200603/c8a49c9c/attachment.html>
More information about the discuss
mailing list