On 5/29/20 12:51 PM, Numan Siddique wrote: > > > On Fri, May 29, 2020 at 3:41 PM Miroslav Kubiczek > <[email protected] > <mailto:[email protected]>> wrote: > > > On 29. 05. 20 11:29, Numan Siddique wrote: >> On Fri, May 29, 2020 at 2:25 PM Miroslav Kubiczek >> <[email protected] >> <mailto:[email protected]>> 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 > > Thanks > Numan > >
Is it maybe related to minimum ethernet frame size (which should be 64B). I didn't check any of the code though to see if padding is added anywhere or if the padding is considered in dp_packet_size(). Regards, Dumitru > > >> >> 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 > [email protected] <mailto:[email protected]> > https://mail.openvswitch.org/mailman/listinfo/ovs-discuss > > > _______________________________________________ > discuss mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-discuss > _______________________________________________ discuss mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
