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]
<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
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
[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