From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ot0-f171.google.com (mail-ot0-f171.google.com [74.125.82.171]) by dpdk.org (Postfix) with ESMTP id 1D8F62C8 for ; Thu, 22 Jun 2017 08:58:29 +0200 (CEST) Received: by mail-ot0-f171.google.com with SMTP id y47so4891186oty.0 for ; Wed, 21 Jun 2017 23:58:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=V7FqZc60y4TRdnOUOHOpOS4wMKXFbbxdKmE4F8Y7+rk=; b=vHUf4VVVFildJV/AS0mA4kfKWjAmTUe4ogzMS0WkyVj4Uad1B61Pv247xSOtpm0Tqj zvMtDd3WvCrAHutYOPCKmN0s5OkcbQTjZDkldhP97gP+tDlts6JFUV3pVF+KdHROuaiR St3F/woNqn39qe2KiEXTPHqS4EeNR5DKCXlCjopgMfF16qVMxkpWipoKOrI0dt+a5rBW tJxh/Gaq8/6qpLbh4GVJB7kLrGFeVLlmUka6hm8qO+nmnPgoZZ7QDR5uZrQUhwdxe0vf sRcUupJRAn/BQrwUplbQANqtjB9YUv/CsoPz7CmjYjKM4HSbL3rTrpuzxJWKU7mw0UGV Ra8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=V7FqZc60y4TRdnOUOHOpOS4wMKXFbbxdKmE4F8Y7+rk=; b=fC3qUDN9MBBsqLZLmQ17xGDp23QUqdcrl+HOT0IMyGlwIiTKg7ex0+HHfJIwId4DAy s1pRTcdzH1KDTByaZzdZIs2/AhY/xp9oxUgOvejWaRRxkdSr685kwd8vU95Vxmzj4pDl 7oJaQLHzBLKcLgBbBAnJTro9Zx6OY30a7uTz1JaHZ5yr456qqW+opkxp1YZhdS8ZvF/r cl1dPfr0ZrzrAF9Guxh6hOXWP2WGIV6c4ApxYZ8g4FK5BLrRi2lEqA9guxT9/wznTUQl HZzydCARf4cYs1CvmXdCS+cd/OEvQDQCOdaUCT4CCo1dr2q4hBSfwRRYH/f5EYJ26YvH kf7w== X-Gm-Message-State: AKS2vOyHJpkYM0ZmVTGvJub7xi9ue+rUoZIoeeUoYaCyIBTygZFPxEp8 miImNbOUAhcRHvjyH/7f35R+OCPNBQ== X-Received: by 10.157.9.210 with SMTP id 18mr663733otz.245.1498114708428; Wed, 21 Jun 2017 23:58:28 -0700 (PDT) MIME-Version: 1.0 Received: by 10.74.137.44 with HTTP; Wed, 21 Jun 2017 23:58:27 -0700 (PDT) In-Reply-To: References: From: Doohwan Lee Date: Thu, 22 Jun 2017 15:58:27 +0900 Message-ID: To: Shyam Shrivastav Cc: Anupam Kapoor , users@dpdk.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-users] Question about range type of DPDK ACL X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2017 06:58:29 -0000 IPv4(1,2,3,4) means 0x01020304, and it is already host order (little endian). It need not to be converted using rte_be_to_cpu32() for setting rule. 2017-06-22 15:27 GMT+09:00 Shyam Shrivastav : > > Yes Doohwan, it is there in rte_ip.h just saw. So this conversion leaves > the address in big endian format. Theoretically, we are supposed to add t= he > acl fields in host order, if you see pipeline code even for ip address wi= th > mask, following conversion is being done line 1096 > examples/ip_pipeline/pipeline-firewall.c > > key.type =3D PIPELINE_FIREWALL_IPV4_5TUPLE; > key.key.ipv4_5tuple.src_ip =3D rte_be_to_cpu_32(sipaddr.s_addr); > key.key.ipv4_5tuple.src_ip_mask =3D sipdepth; > key.key.ipv4_5tuple.dst_ip =3D rte_be_to_cpu_32(dipaddr.s_addr); > > I would suggest this in your code > > rule->field[2].value.u32 =3D rte_be_to_cpu_32(IPv4(1,2,3,4)); > rule->filed[2].mask_range.u32 =3D rte_be_to_cpu_32(IPv4(1,10,10,10)); > > > > > > > On Thu, Jun 22, 2017 at 11:28 AM, Doohwan Lee wrote: > >> Ok. The code to set rule for IPv4 address is like below. >> >> ------------------------------------------------------------ >> #define IPv4(a,b,c,d) ((uint32_t)(((a) & 0xff) << 24) | \ >> (((b) & 0xff) << 16) | \ >> (((c) & 0xff) << 8) | \ >> ((d) & 0xff)) >> >> ....... >> rule->field[2].value.u32 =3D IPv4(1,2,3,4); >> rule->filed[2].mask_range.u32 =3D IPv4(1,10,10,10); >> ....... >> ------------------------------------------------------------- >> >> The macro IPv4() is from the DPDK (rte_ip.h) >> The matching data is from the packet. so it is network order. (big endia= n) >> >> >> >> On Thu, Jun 22, 2017 at 1:26 PM, Shyam Shrivastav < >> shrivastav.shyam@gmail.com> wrote: >> >>> Yes if these are the results then might be some issue, but can not be >>> sure unless do this myself, have been using ACL library but not this ca= se >>> till now. >>> Can you share code fragment converting dotted decimal to integer if >>> possible .. >>> >>> On Thu, Jun 22, 2017 at 7:57 AM, Doohwan Lee wrote: >>> >>>> Thank you Shyam. >>>> Let me explain my situation in detail. >>>> All the cases described below use RTE_ACL_FIELD_TYPE_RANGE type. >>>> >>>> ----------------------------------------------- >>>> Case 1. >>>> rule: 1.2.3.4 ~ 1.2.3.4 >>>> packet: 1.2.3.4 >>>> result: match (correct) >>>> >>>> Case 2. >>>> rule: 1.2.3.4 ~ 1.10.10.10 >>>> packet: 1.2.10.5 >>>> result: match (correct) >>>> >>>> Case 3 >>>> rule: 1.2.3.4 ~ 1.10.10.10 >>>> packet: 1.10.10.11 >>>> result: not match (correct) >>>> >>>> Case 4 >>>> rule: 1.2.3.4 ~ 1.10.10.10 >>>> packet: 1.2.3.10 >>>> result: match (correct) >>>> >>>> Case 5: >>>> rule: 1.2.3.4~1.10.10.10 >>>> packet: 1.2.10.11 >>>> result: not match (incorrect) >>>> >>>> Case 6: >>>> rule: 1.2.3.4~1.10.10.10 >>>> packet: 1.2.10.3 >>>> result: not match (incorrect) >>>> ----------------------------------------------- >>>> >>>> >>>> Considering case 1~4, It shows expected results and there is no proble= m >>>> with byte ordering. >>>> But, in case 5~6, the result should be 'match' but it was not. >>>> This is why I doubt DPDK ACL library doesn't support 32-bit range >>>> matching. >>>> >>>> >>>> On Wed, Jun 21, 2017 at 9:09 PM, Shyam Shrivastav < >>>> shrivastav.shyam@gmail.com> wrote: >>>> >>>>> I haven't used range type with 32 bit integers yet ... >>>>> Just some theory in case if you haven't already taken into account, >>>>> if little-endian host 10.10.10.30 actually means 0x1e0a0a0a for acl m= atch, >>>>> dotted decimal is in big endian so when in little endian host you nee= d to >>>>> add it other way round as integers for matching. This means if you ad= d >>>>> range 0x0a0a0a0a to 0x1e1e1e1e should match 10.10.10.30, this is my >>>>> understanding theoretically .. >>>>> >>>>> On Wed, Jun 21, 2017 at 4:54 PM, Doohwan Lee wrote= : >>>>> >>>>>> Yes. you are right. I also already knew that 32bit match with mask >>>>>> type works well. >>>>>> My point is 32bit match with 'range type' doesn't work in some case. >>>>>> >>>>>> >>>>>> On Wed, Jun 21, 2017 at 6:46 PM, Anupam Kapoor < >>>>>> anupam.kapoor@gmail.com> wrote: >>>>>> >>>>>>> >>>>>>> On Wed, Jun 21, 2017 at 11:36 AM, Doohwan Lee >>>>>>> wrote: >>>>>>> >>>>>>>> DPDK ACL library uses multi-bit trie with 8-bit stride. >>>>>>>> I guess that implementation of the trie doesn't support 32bit rang= e >>>>>>>> matching. >>>>>>>> >>>>>>> >>>>>>> =E2=80=8Bwell, you _can_ have address wildcard matches e.g. an addr= ess+mask >>>>>>> combination of 1.2.3.0/24 would match all addresses 1.2.3.[0..255] >>>>>>> >>>>>>> =E2=80=8B-- >>>>>>> kind regards >>>>>>> anupam=E2=80=8B >>>>>>> >>>>>>> In the beginning was the lambda, and the lambda was with Emacs, and >>>>>>> Emacs was the lambda. >>>>>>> >>>>>> >>>>>> >>>>> >>>> >>> >> >