[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