[ovs-discuss] check_pkt_larger precision

Miroslav Kubiczek miroslav.kubiczek at adaptivemobile.com
Thu Jun 4 14:51:00 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.


>
> Thanks
> Numan
>
>     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
>>
>     _______________________________________________
>     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/20200604/4c97d1d9/attachment.html>


More information about the discuss mailing list