From patchwork Sun Oct 3 20:24:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavan Nikhilesh Bhagavatula X-Patchwork-Id: 100396 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B655CA034F; Sun, 3 Oct 2021 22:24:56 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4466741260; Sun, 3 Oct 2021 22:24:56 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 15E074125B for ; Sun, 3 Oct 2021 22:24:54 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 193KJYjY000424; Sun, 3 Oct 2021 13:24:54 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=nxmT49B59+tu8d6Z/8UVP+tWdFMeCg9xK00RUDBNSLI=; b=b8FOnAje8uQoM2jTBgWcC4lJIvJH//q/wMqINIlNr2AFqW+FrseQp3GwtJnNiDy/Ow0r plcy6HaZLYMiIdGKYEP4jvEYSHYA5eMOWgyY9sf2OB1ulUIXwWaNag2ZDKZJ6w+NS+nP qpASpWCDeLl+0YbcJsaoJtimfn/sb2fZFHjNt7Pmnc37xv+A0GGTYriQ3UwsdeIFkvx9 1qqjQ9qZMr1kEwkOs+18KqeSqXySL+KkHXGm7PbCnD7vlmCxGKfll5NYvjYi3JhPMuPc qL8U88e2tsBmEcExlxiRpCobczbVwHxLBx/LAznIo63XFsBEW+p+L4HdncXA8sx4MZGm 5Q== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com with ESMTP id 3bfc9y8syd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Sun, 03 Oct 2021 13:24:54 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Sun, 3 Oct 2021 13:24:52 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Sun, 3 Oct 2021 13:24:52 -0700 Received: from BG-LT7430.marvell.com (BG-LT7430.marvell.com [10.28.177.176]) by maili.marvell.com (Postfix) with ESMTP id 87B433F7069; Sun, 3 Oct 2021 13:24:50 -0700 (PDT) From: To: , CC: , Pavan Nikhilesh Date: Mon, 4 Oct 2021 01:54:45 +0530 Message-ID: <20211003202448.10908-1-pbhagavatula@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211003201110.10448-1-pbhagavatula@marvell.com> References: <20211003201110.10448-1-pbhagavatula@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: Guw6-mKXjCD55gSRtzy7oc0LOq_b1fJY X-Proofpoint-ORIG-GUID: Guw6-mKXjCD55gSRtzy7oc0LOq_b1fJY X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475 definitions=2021-10-03_09,2021-10-01_02,2020-04-07_01 Subject: [dpdk-dev] [PATCH v4 1/3] examples/l3fwd: increase number of routes X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Pavan Nikhilesh Increase the number of routes from 8 to 16 that are statically added for lpm and em mode as most of the SoCs support more than 8 interfaces. The number of routes added is equal to the number of ethernet devices ports enabled through port mask. Signed-off-by: Pavan Nikhilesh --- v4 Changes: - Use correct patch version and prefix. v3 Changes: (Finally!) - Add FIB to the list. - Update release notes. - Update EM route addition routine and use the correct IP addresses DTS need not be updated as EM test doesn't use IP addresses defined in l3fwd. v2 Changes: - Fixup for EM mode. examples/l3fwd/l3fwd_route.h | 4 ++-- examples/l3fwd/main.c | 20 ++++++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) -- 2.17.1 diff --git a/examples/l3fwd/l3fwd_route.h b/examples/l3fwd/l3fwd_route.h index 89f8634443..c7eba06c4d 100644 --- a/examples/l3fwd/l3fwd_route.h +++ b/examples/l3fwd/l3fwd_route.h @@ -14,6 +14,6 @@ struct ipv6_l3fwd_route { uint8_t if_out; }; -extern const struct ipv4_l3fwd_route ipv4_l3fwd_route_array[8]; +extern const struct ipv4_l3fwd_route ipv4_l3fwd_route_array[16]; -extern const struct ipv6_l3fwd_route ipv6_l3fwd_route_array[8]; +extern const struct ipv6_l3fwd_route ipv6_l3fwd_route_array[16]; diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index 00ac267af1..194f6ac1a4 100644 --- a/examples/l3fwd/main.c +++ b/examples/l3fwd/main.c @@ -179,7 +179,7 @@ static struct l3fwd_lkp_mode l3fwd_fib_lkp = { /* * 198.18.0.0/16 are set aside for RFC2544 benchmarking (RFC5735). - * 198.18.{0-7}.0/24 = Port {0-7} + * 198.18.{0-15}.0/24 = Port {0-15} */ const struct ipv4_l3fwd_route ipv4_l3fwd_route_array[] = { {RTE_IPV4(198, 18, 0, 0), 24, 0}, @@ -190,11 +190,19 @@ const struct ipv4_l3fwd_route ipv4_l3fwd_route_array[] = { {RTE_IPV4(198, 18, 5, 0), 24, 5}, {RTE_IPV4(198, 18, 6, 0), 24, 6}, {RTE_IPV4(198, 18, 7, 0), 24, 7}, + {RTE_IPV4(198, 18, 8, 0), 24, 8}, + {RTE_IPV4(198, 18, 9, 0), 24, 9}, + {RTE_IPV4(198, 18, 10, 0), 24, 10}, + {RTE_IPV4(198, 18, 11, 0), 24, 11}, + {RTE_IPV4(198, 18, 12, 0), 24, 12}, + {RTE_IPV4(198, 18, 13, 0), 24, 13}, + {RTE_IPV4(198, 18, 14, 0), 24, 14}, + {RTE_IPV4(198, 18, 15, 0), 24, 15}, }; /* * 2001:200::/48 is IANA reserved range for IPv6 benchmarking (RFC5180). - * 2001:200:0:{0-7}::/64 = Port {0-7} + * 2001:200:0:{0-15}::/64 = Port {0-15} */ const struct ipv6_l3fwd_route ipv6_l3fwd_route_array[] = { {{32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 0}, @@ -205,6 +213,14 @@ const struct ipv6_l3fwd_route ipv6_l3fwd_route_array[] = { {{32, 1, 2, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 5}, {{32, 1, 2, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 6}, {{32, 1, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 7}, + {{32, 1, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 8}, + {{32, 1, 2, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 9}, + {{32, 1, 2, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 10}, + {{32, 1, 2, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 11}, + {{32, 1, 2, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 12}, + {{32, 1, 2, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 13}, + {{32, 1, 2, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 14}, + {{32, 1, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 15}, }; /* From patchwork Sun Oct 3 20:24:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavan Nikhilesh Bhagavatula X-Patchwork-Id: 100397 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 668FBA034F; Sun, 3 Oct 2021 22:25:01 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4819A4126B; Sun, 3 Oct 2021 22:24:59 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 1C8B241267 for ; Sun, 3 Oct 2021 22:24:56 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 193D09PC024895; Sun, 3 Oct 2021 13:24:56 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=2dQb2424HI5rwonkLFhM1tCxOdeZncb9W6bDNy8pBKU=; b=j378qCuQX779Lis5DxVkAH7kk6QzV2V2OmttvF4LtPnUYf3Lo0U/nFVv1QOnDQBg9STd LgvYIIEdbijV8sksTByeUJeV9E0GtZGRQJUMWX267KWtki6Tl7hTaFPGQbWT6EvazDA7 TArlY2RB5z6CEsBsMzVqtDlSqLG458d/pWSbLWELl8H6AN7jx1uMAEeU0cacGBLD4ztP gLfsEVT1bp/hmEfAM4ifxW7LSHBB+0VN96i81NMjEwAHblV1qwyiPcnS1JYguOG9iLfW wLBqWgMPGzkitZzA4/IbZ2pKbj4qYyUzLzu5gO+gKETcQ1eHya0rxM3qxrZljh0dXC7X VA== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0a-0016f401.pphosted.com with ESMTP id 3bf6g3hmu4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Sun, 03 Oct 2021 13:24:56 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Sun, 3 Oct 2021 13:24:54 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Sun, 3 Oct 2021 13:24:54 -0700 Received: from BG-LT7430.marvell.com (BG-LT7430.marvell.com [10.28.177.176]) by maili.marvell.com (Postfix) with ESMTP id 425613F7069; Sun, 3 Oct 2021 13:24:53 -0700 (PDT) From: To: , CC: , Pavan Nikhilesh Date: Mon, 4 Oct 2021 01:54:46 +0530 Message-ID: <20211003202448.10908-2-pbhagavatula@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211003202448.10908-1-pbhagavatula@marvell.com> References: <20211003201110.10448-1-pbhagavatula@marvell.com> <20211003202448.10908-1-pbhagavatula@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: nvlnBFMFE1QPam2JLd9TQa75LoyLvoL1 X-Proofpoint-ORIG-GUID: nvlnBFMFE1QPam2JLd9TQa75LoyLvoL1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475 definitions=2021-10-03_09,2021-10-01_02,2020-04-07_01 Subject: [dpdk-dev] [PATCH v4 2/3] examples/l3fwd: print port bdf when adding routes X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Pavan Nikhilesh Since the number of Ethernet ports have gone up, print the pci bdf along with the routes. This is also helpful for cases where allow listing order is not honored. Signed-off-by: Pavan Nikhilesh --- examples/l3fwd/l3fwd_fib.c | 16 ++++++++++------ examples/l3fwd/l3fwd_lpm.c | 9 ++++++--- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/examples/l3fwd/l3fwd_fib.c b/examples/l3fwd/l3fwd_fib.c index f8d6a3ac39..cc6054ca44 100644 --- a/examples/l3fwd/l3fwd_fib.c +++ b/examples/l3fwd/l3fwd_fib.c @@ -439,6 +439,7 @@ setup_fib(const int socketid) /* Populate the fib ipv4 table. */ for (i = 0; i < RTE_DIM(ipv4_l3fwd_route_array); i++) { + struct rte_eth_dev_info dev_info; struct in_addr in; /* Skip unused ports. */ @@ -446,6 +447,8 @@ setup_fib(const int socketid) enabled_port_mask) == 0) continue; + rte_eth_dev_info_get(ipv4_l3fwd_route_array[i].if_out, + &dev_info); ret = rte_fib_add(ipv4_l3fwd_fib_lookup_struct[socketid], ipv4_l3fwd_route_array[i].ip, ipv4_l3fwd_route_array[i].depth, @@ -459,13 +462,14 @@ setup_fib(const int socketid) in.s_addr = htonl(ipv4_l3fwd_route_array[i].ip); if (inet_ntop(AF_INET, &in, abuf, sizeof(abuf)) != NULL) { - printf("FIB: Adding route %s / %d (%d)\n", - abuf, - ipv4_l3fwd_route_array[i].depth, - ipv4_l3fwd_route_array[i].if_out); + printf("FIB: Adding route %s / %d (%d) [%s]\n", abuf, + ipv4_l3fwd_route_array[i].depth, + ipv4_l3fwd_route_array[i].if_out, + dev_info.device->name); } else { - printf("FIB: IPv4 route added to port %d\n", - ipv4_l3fwd_route_array[i].if_out); + printf("FIB: IPv4 route added to port %d [%s]\n", + ipv4_l3fwd_route_array[i].if_out, + dev_info.device->name); } } /* >8 End of setup fib. */ diff --git a/examples/l3fwd/l3fwd_lpm.c b/examples/l3fwd/l3fwd_lpm.c index 7200160164..582911c622 100644 --- a/examples/l3fwd/l3fwd_lpm.c +++ b/examples/l3fwd/l3fwd_lpm.c @@ -451,6 +451,7 @@ setup_lpm(const int socketid) /* populate the LPM table */ for (i = 0; i < RTE_DIM(ipv4_l3fwd_route_array); i++) { + struct rte_eth_dev_info dev_info; struct in_addr in; /* skip unused ports */ @@ -458,6 +459,8 @@ setup_lpm(const int socketid) enabled_port_mask) == 0) continue; + rte_eth_dev_info_get(ipv4_l3fwd_route_array[i].if_out, + &dev_info); ret = rte_lpm_add(ipv4_l3fwd_lpm_lookup_struct[socketid], ipv4_l3fwd_route_array[i].ip, ipv4_l3fwd_route_array[i].depth, @@ -470,10 +473,10 @@ setup_lpm(const int socketid) } in.s_addr = htonl(ipv4_l3fwd_route_array[i].ip); - printf("LPM: Adding route %s / %d (%d)\n", + printf("LPM: Adding route %s / %d (%d) [%s]\n", inet_ntop(AF_INET, &in, abuf, sizeof(abuf)), - ipv4_l3fwd_route_array[i].depth, - ipv4_l3fwd_route_array[i].if_out); + ipv4_l3fwd_route_array[i].depth, + ipv4_l3fwd_route_array[i].if_out, dev_info.device->name); } /* create the LPM6 table */ From patchwork Sun Oct 3 20:24:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavan Nikhilesh Bhagavatula X-Patchwork-Id: 100398 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 62C27A034F; Sun, 3 Oct 2021 22:25:08 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B02A141281; Sun, 3 Oct 2021 22:25:00 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 0B83641275 for ; Sun, 3 Oct 2021 22:24:59 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 193HMXig010698; Sun, 3 Oct 2021 13:24:59 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=bZZUvFoZVHOpWQmlDoroGtcdONhxaRiDiY5qZ4UioMU=; b=Ez6hTjrR+JB2fJNO6Tmi3ZbzIyZv+DkwaDlaBJiJFaekod9ev0obCHgKh31+WKguQxvB rBseimamhxVgGDKORRej+mjbV0KPRkKXVnVVkdEA0Sxf9Sc8fTI7y6wdOH66257/IVVQ bspywBuXm6wqLkg1F2/RSmvlOkrflSvKnIJzJHcHAXsGWeOfwvGgpit56hQR/OouET60 4CjA35m1M+Q5x2kuVpA9/kGkqOG/RTXiV9bsYRQ9Mh/PETS3m/f4gb9s29JE6Q+cegNO iKhU0mmehSiVB65j+9P5rX0chvvUXGIyzdSoG2+glvucEYXQ/miPlXYOfR9Mzhhits/Z zQ== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com with ESMTP id 3bfc9y8syk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Sun, 03 Oct 2021 13:24:59 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Sun, 3 Oct 2021 13:24:57 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Sun, 3 Oct 2021 13:24:57 -0700 Received: from BG-LT7430.marvell.com (BG-LT7430.marvell.com [10.28.177.176]) by maili.marvell.com (Postfix) with ESMTP id CF5A73F7069; Sun, 3 Oct 2021 13:24:55 -0700 (PDT) From: To: , CC: , Pavan Nikhilesh Date: Mon, 4 Oct 2021 01:54:47 +0530 Message-ID: <20211003202448.10908-3-pbhagavatula@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211003202448.10908-1-pbhagavatula@marvell.com> References: <20211003201110.10448-1-pbhagavatula@marvell.com> <20211003202448.10908-1-pbhagavatula@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: taS11HcOg5nXspBpHfF6MJqJGEtXk-PR X-Proofpoint-ORIG-GUID: taS11HcOg5nXspBpHfF6MJqJGEtXk-PR X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475 definitions=2021-10-03_09,2021-10-01_02,2020-04-07_01 Subject: [dpdk-dev] [PATCH v4 3/3] examples/l3fwd: use reserved addresses for EM mode X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Pavan Nikhilesh The l3fwd example should use the reserved IPv4/v6 reserved address ranges defined in RFC5735, RFC5180 and RFC863 discard protocol for the port number in the exact match mode of L3 forwarding. Signed-off-by: Pavan Nikhilesh --- doc/guides/rel_notes/release_21_11.rst | 6 ++ examples/l3fwd/l3fwd.h | 2 +- examples/l3fwd/l3fwd_em.c | 142 ++++++++++++------------- 3 files changed, 73 insertions(+), 77 deletions(-) diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst index 37dc1a7786..ccdfa47baa 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -125,6 +125,12 @@ New Features * Added tests to validate packets hard expiry. * Added tests to verify tunnel header verification in IPsec inbound. +* **Increase number of routes configured in l3fwd lpm, em and fib lookups.** + + * Increase number of routes from 8 to 16 for all lookup modes of l3fwd, this + helps in validating SoC with more than 8 ethernet devices using l3fwd. + * Update EM mode to use RFC2544 reserved IP address space. + Removed Items ------------- diff --git a/examples/l3fwd/l3fwd.h b/examples/l3fwd/l3fwd.h index a808d60247..853a31d4c2 100644 --- a/examples/l3fwd/l3fwd.h +++ b/examples/l3fwd/l3fwd.h @@ -54,7 +54,7 @@ /* 32-bit has less address-space for hugepage memory, limit to 1M entries */ #define L3FWD_HASH_ENTRIES (1024*1024*1) #endif -#define HASH_ENTRY_NUMBER_DEFAULT 4 +#define HASH_ENTRY_NUMBER_DEFAULT 16 struct mbuf_table { uint16_t len; diff --git a/examples/l3fwd/l3fwd_em.c b/examples/l3fwd/l3fwd_em.c index 2a8ab6aab5..92998e26b2 100644 --- a/examples/l3fwd/l3fwd_em.c +++ b/examples/l3fwd/l3fwd_em.c @@ -99,33 +99,64 @@ struct ipv6_l3fwd_em_route { uint8_t if_out; }; -static struct ipv4_l3fwd_em_route ipv4_l3fwd_em_route_array[] = { - {{RTE_IPV4(101, 0, 0, 0), RTE_IPV4(100, 10, 0, 1), 101, 11, IPPROTO_TCP}, 0}, - {{RTE_IPV4(201, 0, 0, 0), RTE_IPV4(200, 20, 0, 1), 102, 12, IPPROTO_TCP}, 1}, - {{RTE_IPV4(111, 0, 0, 0), RTE_IPV4(100, 30, 0, 1), 101, 11, IPPROTO_TCP}, 2}, - {{RTE_IPV4(211, 0, 0, 0), RTE_IPV4(200, 40, 0, 1), 102, 12, IPPROTO_TCP}, 3}, +/* 198.18.0.0/16 are set aside for RFC2544 benchmarking (RFC5735). + * Use RFC863 Discard Protocol. + */ +static const struct ipv4_l3fwd_em_route ipv4_l3fwd_em_route_array[] = { + {{RTE_IPV4(198, 18, 0, 0), RTE_IPV4(198, 18, 0, 1), 9, 9, IPPROTO_UDP}, 0}, + {{RTE_IPV4(198, 18, 1, 0), RTE_IPV4(198, 18, 1, 1), 9, 9, IPPROTO_UDP}, 1}, + {{RTE_IPV4(198, 18, 2, 0), RTE_IPV4(198, 18, 2, 1), 9, 9, IPPROTO_UDP}, 2}, + {{RTE_IPV4(198, 18, 3, 0), RTE_IPV4(198, 18, 3, 1), 9, 9, IPPROTO_UDP}, 3}, + {{RTE_IPV4(198, 18, 4, 0), RTE_IPV4(198, 18, 4, 1), 9, 9, IPPROTO_UDP}, 4}, + {{RTE_IPV4(198, 18, 5, 0), RTE_IPV4(198, 18, 5, 1), 9, 9, IPPROTO_UDP}, 5}, + {{RTE_IPV4(198, 18, 6, 0), RTE_IPV4(198, 18, 6, 1), 9, 9, IPPROTO_UDP}, 6}, + {{RTE_IPV4(198, 18, 7, 0), RTE_IPV4(198, 18, 7, 1), 9, 9, IPPROTO_UDP}, 7}, + {{RTE_IPV4(198, 18, 8, 0), RTE_IPV4(198, 18, 8, 1), 9, 9, IPPROTO_UDP}, 8}, + {{RTE_IPV4(198, 18, 9, 0), RTE_IPV4(198, 18, 9, 1), 9, 9, IPPROTO_UDP}, 9}, + {{RTE_IPV4(198, 18, 10, 0), RTE_IPV4(198, 18, 10, 1), 9, 9, IPPROTO_UDP}, 10}, + {{RTE_IPV4(198, 18, 11, 0), RTE_IPV4(198, 18, 11, 1), 9, 9, IPPROTO_UDP}, 11}, + {{RTE_IPV4(198, 18, 12, 0), RTE_IPV4(198, 18, 12, 1), 9, 9, IPPROTO_UDP}, 12}, + {{RTE_IPV4(198, 18, 13, 0), RTE_IPV4(198, 18, 13, 1), 9, 9, IPPROTO_UDP}, 13}, + {{RTE_IPV4(198, 18, 14, 0), RTE_IPV4(198, 18, 14, 1), 9, 9, IPPROTO_UDP}, 14}, + {{RTE_IPV4(198, 18, 15, 0), RTE_IPV4(198, 18, 15, 1), 9, 9, IPPROTO_UDP}, 15}, }; -static struct ipv6_l3fwd_em_route ipv6_l3fwd_em_route_array[] = { - {{ - {0xfe, 0x80, 0, 0, 0, 0, 0, 0, 0x02, 0x1e, 0x67, 0xff, 0xfe, 0, 0, 0}, - {0xfe, 0x80, 0, 0, 0, 0, 0, 0, 0x02, 0x1b, 0x21, 0xff, 0xfe, 0x91, 0x38, 0x05}, - 101, 11, IPPROTO_TCP}, 0}, - - {{ - {0xfe, 0x90, 0, 0, 0, 0, 0, 0, 0x02, 0x1e, 0x67, 0xff, 0xfe, 0, 0, 0}, - {0xfe, 0x90, 0, 0, 0, 0, 0, 0, 0x02, 0x1b, 0x21, 0xff, 0xfe, 0x91, 0x38, 0x05}, - 102, 12, IPPROTO_TCP}, 1}, - - {{ - {0xfe, 0xa0, 0, 0, 0, 0, 0, 0, 0x02, 0x1e, 0x67, 0xff, 0xfe, 0, 0, 0}, - {0xfe, 0xa0, 0, 0, 0, 0, 0, 0, 0x02, 0x1b, 0x21, 0xff, 0xfe, 0x91, 0x38, 0x05}, - 101, 11, IPPROTO_TCP}, 2}, - - {{ - {0xfe, 0xb0, 0, 0, 0, 0, 0, 0, 0x02, 0x1e, 0x67, 0xff, 0xfe, 0, 0, 0}, - {0xfe, 0xb0, 0, 0, 0, 0, 0, 0, 0x02, 0x1b, 0x21, 0xff, 0xfe, 0x91, 0x38, 0x05}, - 102, 12, IPPROTO_TCP}, 3}, +/* 2001:0200::/48 is IANA reserved range for IPv6 benchmarking (RFC5180). + * Use RFC863 Discard Protocol. + */ +static const struct ipv6_l3fwd_em_route ipv6_l3fwd_em_route_array[] = { + {{{32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 0}, + {{{32, 1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 1}, + {{{32, 1, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 2}, + {{{32, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 3}, + {{{32, 1, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 4}, + {{{32, 1, 2, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 5}, + {{{32, 1, 2, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 6}, + {{{32, 1, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 7}, + {{{32, 1, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 8}, + {{{32, 1, 2, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 9}, + {{{32, 1, 2, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 10}, + {{{32, 1, 2, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 11}, + {{{32, 1, 2, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 12}, + {{{32, 1, 2, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 13}, + {{{32, 1, 2, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 14}, + {{{32, 1, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 15}, }; struct rte_hash *ipv4_l3fwd_em_lookup_struct[NB_SOCKETS]; @@ -405,7 +436,7 @@ populate_ipv6_few_flow_into_table(const struct rte_hash *h) (uint64_t)IPV6_L3FWD_EM_NUM_ROUTES); } -#define NUMBER_PORT_USED 4 +#define NUMBER_PORT_USED 16 static inline void populate_ipv4_many_flow_into_table(const struct rte_hash *h, unsigned int nr_flow) @@ -416,36 +447,16 @@ populate_ipv4_many_flow_into_table(const struct rte_hash *h, ALL_32_BITS, ALL_32_BITS} }; for (i = 0; i < nr_flow; i++) { + uint8_t port = i % NUMBER_PORT_USED; struct ipv4_l3fwd_em_route entry; union ipv4_5tuple_host newkey; - uint8_t a = (uint8_t) - ((i/NUMBER_PORT_USED)%BYTE_VALUE_MAX); - uint8_t b = (uint8_t) - (((i/NUMBER_PORT_USED)/BYTE_VALUE_MAX)%BYTE_VALUE_MAX); - uint8_t c = (uint8_t) - ((i/NUMBER_PORT_USED)/(BYTE_VALUE_MAX*BYTE_VALUE_MAX)); + uint8_t a = (uint8_t)((port + 1) % BYTE_VALUE_MAX); /* Create the ipv4 exact match flow */ memset(&entry, 0, sizeof(entry)); - switch (i & (NUMBER_PORT_USED - 1)) { - case 0: - entry = ipv4_l3fwd_em_route_array[0]; - entry.key.ip_dst = RTE_IPV4(101, c, b, a); - break; - case 1: - entry = ipv4_l3fwd_em_route_array[1]; - entry.key.ip_dst = RTE_IPV4(201, c, b, a); - break; - case 2: - entry = ipv4_l3fwd_em_route_array[2]; - entry.key.ip_dst = RTE_IPV4(111, c, b, a); - break; - case 3: - entry = ipv4_l3fwd_em_route_array[3]; - entry.key.ip_dst = RTE_IPV4(211, c, b, a); - break; - }; + entry = ipv4_l3fwd_em_route_array[port]; + entry.key.ip_dst = RTE_IPV4(198, 18, port, a); convert_ipv4_5tuple(&entry.key, &newkey); int32_t ret = rte_hash_add_key(h, (void *) &newkey); @@ -469,35 +480,14 @@ populate_ipv6_many_flow_into_table(const struct rte_hash *h, mask2 = (rte_xmm_t){.u32 = {ALL_32_BITS, ALL_32_BITS, 0, 0} }; for (i = 0; i < nr_flow; i++) { + uint8_t port = i % NUMBER_PORT_USED; struct ipv6_l3fwd_em_route entry; union ipv6_5tuple_host newkey; - uint8_t a = (uint8_t) - ((i/NUMBER_PORT_USED)%BYTE_VALUE_MAX); - uint8_t b = (uint8_t) - (((i/NUMBER_PORT_USED)/BYTE_VALUE_MAX)%BYTE_VALUE_MAX); - uint8_t c = (uint8_t) - ((i/NUMBER_PORT_USED)/(BYTE_VALUE_MAX*BYTE_VALUE_MAX)); - /* Create the ipv6 exact match flow */ memset(&entry, 0, sizeof(entry)); - switch (i & (NUMBER_PORT_USED - 1)) { - case 0: - entry = ipv6_l3fwd_em_route_array[0]; - break; - case 1: - entry = ipv6_l3fwd_em_route_array[1]; - break; - case 2: - entry = ipv6_l3fwd_em_route_array[2]; - break; - case 3: - entry = ipv6_l3fwd_em_route_array[3]; - break; - }; - entry.key.ip_dst[13] = c; - entry.key.ip_dst[14] = b; - entry.key.ip_dst[15] = a; + entry = ipv6_l3fwd_em_route_array[port]; + entry.key.ip_dst[15] = (port + 1) % BYTE_VALUE_MAX; convert_ipv6_5tuple(&entry.key, &newkey); int32_t ret = rte_hash_add_key(h, (void *) &newkey); @@ -584,7 +574,7 @@ em_parse_ptype(struct rte_mbuf *m) hdr_len = rte_ipv4_hdr_len(ipv4_hdr); if (hdr_len == sizeof(struct rte_ipv4_hdr)) { packet_type |= RTE_PTYPE_L3_IPV4; - if (ipv4_hdr->next_proto_id == IPPROTO_TCP) + if (ipv4_hdr->next_proto_id == IPPROTO_UDP) packet_type |= RTE_PTYPE_L4_TCP; else if (ipv4_hdr->next_proto_id == IPPROTO_UDP) packet_type |= RTE_PTYPE_L4_UDP; @@ -592,7 +582,7 @@ em_parse_ptype(struct rte_mbuf *m) packet_type |= RTE_PTYPE_L3_IPV4_EXT; } else if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV6)) { ipv6_hdr = (struct rte_ipv6_hdr *)l3; - if (ipv6_hdr->proto == IPPROTO_TCP) + if (ipv6_hdr->proto == IPPROTO_UDP) packet_type |= RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_TCP; else if (ipv6_hdr->proto == IPPROTO_UDP) packet_type |= RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_UDP;