DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] ACL lookup doesn't work for some schemes
@ 2015-02-15  9:18 志昌余
  2015-02-15  9:23 ` 志昌余
  2015-02-16  9:56 ` Ananyev, Konstantin
  0 siblings, 2 replies; 6+ messages in thread
From: 志昌余 @ 2015-02-15  9:18 UTC (permalink / raw)
  To: dev

Hi,    I noticed that ACL lookup doesn't work for some schemes.1. If the first field is not uint8_t, even all fields are wildcard, lookup doesn't find the matching rule. See acl_8last.c.2. I prepended a uint8_t field, keep other fields be wildcard, lookup returns the correct result. See acl_8last2.c3. Then I change last field from 8bitmask_WILDCARD to 8bitmask(1, 0x1) (matches odd numbers) or 8bitmask(0, 0x1) (match even numbers), lookup doesn't return the correct. See acl_8last3.c.  And I noticed the similar behavior for uint16_t ranges(date doesn't match 0-0x8000 nor 0x8001-0xffff).    Above behaviors are tricky. Does ACL do some undocumented assumptions or the table schema?    Regards,Zhichang Yu 		 	   		  

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] ACL lookup doesn't work for some schemes
  2015-02-15  9:18 [dpdk-dev] ACL lookup doesn't work for some schemes 志昌余
@ 2015-02-15  9:23 ` 志昌余
  2015-02-15  9:29   ` 志昌余
  2015-02-16  9:56 ` Ananyev, Konstantin
  1 sibling, 1 reply; 6+ messages in thread
From: 志昌余 @ 2015-02-15  9:23 UTC (permalink / raw)
  To: dev

[-- Attachment #1: Type: text/plain, Size: 959 bytes --]

Sorry I forgot to attach the sample code in previous mail. See the attached.

From: yuzhichang_scl@hotmail.com
To: dev@dpdk.org
Subject: ACL lookup doesn't work for some schemes
Date: Sun, 15 Feb 2015 17:18:55 +0800




Hi,    I noticed that ACL lookup doesn't work for some schemes.1. If the first field is not uint8_t, even all fields are wildcard, lookup doesn't find the matching rule. See acl_8last.c.2. I prepended a uint8_t field, keep other fields be wildcard, lookup returns the correct result. See acl_8last2.c3. Then I change last field from 8bitmask_WILDCARD to 8bitmask(1, 0x1) (matches odd numbers) or 8bitmask(0, 0x1) (match even numbers), lookup doesn't return the correct. See acl_8last3.c.  And I noticed the similar behavior for uint16_t ranges(date doesn't match 0-0x8000 nor 0x8001-0xffff).    Above behaviors are tricky. Does ACL do some undocumented assumptions or the table schema?    Regards,Zhichang Yu 		 	   		   		 	   		  

[-- Attachment #2: poc_acl_mp.zip --]
[-- Type: application/zip, Size: 14549 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] ACL lookup doesn't work for some schemes
  2015-02-15  9:23 ` 志昌余
@ 2015-02-15  9:29   ` 志昌余
  0 siblings, 0 replies; 6+ messages in thread
From: 志昌余 @ 2015-02-15  9:29 UTC (permalink / raw)
  To: dev

I tested against DPDK 1.7.0, 1.8.0 and trunk( ed2547b6). 

________________________________
> From: yuzhichang_scl@hotmail.com 
> To: dev@dpdk.org 
> Subject: RE: ACL lookup doesn't work for some schemes 
> Date: Sun, 15 Feb 2015 17:23:53 +0800 
> 
> Sorry I forgot to attach the sample code in previous mail. See the attached. 
> 
> ________________________________ 
> From: yuzhichang_scl@hotmail.com 
> To: dev@dpdk.org 
> Subject: ACL lookup doesn't work for some schemes 
> Date: Sun, 15 Feb 2015 17:18:55 +0800 
> 
> Hi, 
> I noticed that ACL lookup doesn't work for some schemes. 
> 1. If the first field is not uint8_t, even all fields are wildcard, 
> lookup doesn't find the matching rule. See acl_8last.c. 
> 2. I prepended a uint8_t field, keep other fields be wildcard, lookup 
> returns the correct result. See acl_8last2.c 
> 3. Then I change last field from 8bitmask_WILDCARD to 8bitmask(1, 0x1) 
> (matches odd numbers) or 8bitmask(0, 0x1) (match even numbers), lookup 
> doesn't return the correct. See acl_8last3.c. And I noticed the 
> similar behavior for uint16_t ranges(date doesn't match 0-0x8000 nor 
> 0x8001-0xffff). 
> Above behaviors are tricky. Does ACL do some 
> undocumented assumptions or the table schema? 
> Regards, 
> Zhichang Yu 
 		 	   		  

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] ACL lookup doesn't work for some schemes
  2015-02-15  9:18 [dpdk-dev] ACL lookup doesn't work for some schemes 志昌余
  2015-02-15  9:23 ` 志昌余
@ 2015-02-16  9:56 ` Ananyev, Konstantin
  2015-02-16 15:37   ` Stevan Markovic
       [not found]   ` <D1077203.3B62D%smarkovi@akamai.com>
  1 sibling, 2 replies; 6+ messages in thread
From: Ananyev, Konstantin @ 2015-02-16  9:56 UTC (permalink / raw)
  To: yuzhichang_scl, dev

Hi

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of ???
> Sent: Sunday, February 15, 2015 9:19 AM
> To: dev@dpdk.org
> Subject: [dpdk-dev] ACL lookup doesn't work for some schemes
> 
> Hi,    I noticed that ACL lookup doesn't work for some schemes.1. If the first field is not uint8_t, even all fields are wildcard, lookup
> doesn't find the matching rule. See acl_8last.c.2. I prepended a uint8_t field, keep other fields be wildcard, lookup returns the correct
> result. See acl_8last2.c3. Then I change last field from 8bitmask_WILDCARD to 8bitmask(1, 0x1) (matches odd numbers) or 8bitmask(0,
> 0x1) (match even numbers), lookup doesn't return the correct. See acl_8last3.c.  And I noticed the similar behavior for uint16_t
> ranges(date doesn't match 0-0x8000 nor 0x8001-0xffff).    Above behaviors are tricky. Does ACL do some undocumented assumptions
> or the table schema?    Regards,Zhichang Yu

Yes, right now, libtre_acl to work correctly first field has to be 1B long and all subsequent grouped into sets of 4 consecutive bytes.
I thought we have it documented into our PG, ACL section:
http://dpdk.org/doc/guides/prog_guide/packet_classif_access_ctrl.html
Though re-reading it again:
"For performance reasons, the inner loop of the search function is unrolled to process four input bytes at a time. This requires the input to be grouped into sets of 4 consecutive bytes. The loop processes the first input byte as part of the setup and then subsequent bytes must be in groups of 4 consecutive bytes."
It probably not very clear and need to be explained in more details.
Will update the doc.

Konstantin

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] ACL lookup doesn't work for some schemes
  2015-02-16  9:56 ` Ananyev, Konstantin
@ 2015-02-16 15:37   ` Stevan Markovic
       [not found]   ` <D1077203.3B62D%smarkovi@akamai.com>
  1 sibling, 0 replies; 6+ messages in thread
From: Stevan Markovic @ 2015-02-16 15:37 UTC (permalink / raw)
  To: Ananyev, Konstantin; +Cc: dev, yuzhichang_scl

Hi,

On Mon, Feb 16, 2015 at 4:56 AM, Ananyev, Konstantin <
konstantin.ananyev@intel.com> wrote:

> Yes, right now, libtre_acl to work correctly first field has to be 1B long
> and all subsequent grouped into sets of 4 consecutive bytes.
> I thought we have it documented into our PG, ACL section:
> http://dpdk.org/doc/guides/prog_guide/packet_classif_access_ctrl.html
> Though re-reading it again:
> "For performance reasons, the inner loop of the search function is
> unrolled to process four input bytes at a time. This requires the input to
> be grouped into sets of 4 consecutive bytes. The loop processes the first
> input byte as part of the setup and then subsequent bytes must be in groups
> of 4 consecutive bytes."
> It probably not very clear and need to be explained in more details.
> Will update the doc.
>
> Konstantin
>
>
While improving API documentation would be great, enforcing these
constraints on user defined fields in rte_acl_build(?) also (return an
error if constraints are not met) would be even better.

Stevan

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] ACL lookup doesn't work for some schemes
       [not found]   ` <D1077203.3B62D%smarkovi@akamai.com>
@ 2015-02-16 16:08     ` Ananyev, Konstantin
  0 siblings, 0 replies; 6+ messages in thread
From: Ananyev, Konstantin @ 2015-02-16 16:08 UTC (permalink / raw)
  To: Markovic, Stevan, yuzhichang_scl, dev



> -----Original Message-----
> From: Markovic, Stevan [mailto:smarkovi@akamai.com]
> Sent: Monday, February 16, 2015 3:22 PM
> To: Ananyev, Konstantin; yuzhichang_scl@hotmail.com; dev@dpdk.org
> Subject: Re: [dpdk-dev] ACL lookup doesn't work for some schemes
> 
> Hi,
> 
> 
> On 2/16/15, 4:56 AM, "Ananyev, Konstantin" <konstantin.ananyev@intel.com>
> wrote:
> 
> >
> >Yes, right now, libtre_acl to work correctly first field has to be 1B
> >long and all subsequent grouped into sets of 4 consecutive bytes.
> >I thought we have it documented into our PG, ACL section:
> >http://dpdk.org/doc/guides/prog_guide/packet_classif_access_ctrl.html
> >Though re-reading it again:
> >"For performance reasons, the inner loop of the search function is
> >unrolled to process four input bytes at a time. This requires the input
> >to be grouped into sets of 4 consecutive bytes. The loop processes the
> >first input byte as part of the setup and then subsequent bytes must be
> >in groups of 4 consecutive bytes."
> >It probably not very clear and need to be explained in more details.
> >Will update the doc.
> >
> >Konstantin
> >
> 
> While improving API documentation would be great, enforcing these
> constraints on user defined fields in rte_acl_build(?) also (return an
> error if constraints are not met) would be even better.
> 
> Stevan

Good point. Will try to add some extra checks  to rte_acl_build().
If time permits - for 2.0 timeframe, if not then for 2.1.  
Konstantin

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-02-16 16:08 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-15  9:18 [dpdk-dev] ACL lookup doesn't work for some schemes 志昌余
2015-02-15  9:23 ` 志昌余
2015-02-15  9:29   ` 志昌余
2015-02-16  9:56 ` Ananyev, Konstantin
2015-02-16 15:37   ` Stevan Markovic
     [not found]   ` <D1077203.3B62D%smarkovi@akamai.com>
2015-02-16 16:08     ` Ananyev, Konstantin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).