On Wed, Jun 3, 2020 at 8:27 PM Miroslav Kubiczek < [email protected]> 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 < > [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]> 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 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 >> [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
