From patchwork Sun Oct 3 20:11:08 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: 100393 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 877DAA034F; Sun, 3 Oct 2021 22:11:19 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 22F824125F; Sun, 3 Oct 2021 22:11:19 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 215804125B for ; Sun, 3 Oct 2021 22:11:16 +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 193IE7qB032012 for ; Sun, 3 Oct 2021 13:11:16 -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=374iufWZPaODn52lSmm9/MSIXizzUHNhUXkPr9xYobE=; b=k2JWLEOynUlAM/2cQmWnfRxdM6F3BwBH+8Y5GwLJjB0/XvTjytvAXJaxtVIcKUd5FJ+A U9wr84QQCv1e3/et1wS9kQoPNvgecMlbnLQV9RU5cLBUx3axulfdEtbXK+xs/QdtijKt 3U2Dxfm3WBdHLvdn/5/szkM+0yJl9eHuJ1dNpnmWPLp3vtd96IjXzhx0DHTJ88QMC9XS xXxPZRBCx4YKyDk/Etix57Axr4Wsx38ChBdfMrFZZ8bDpze0VGQNTh89XHZiyQcZsVJP L4Da3Pyv7zj6TgdLRkx05o7DaHMW4jb+he8EIWPOWbbBSACvLhDfkInA8orYyExMwl22 vQ== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0a-0016f401.pphosted.com with ESMTP id 3bf6g3hm76-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Sun, 03 Oct 2021 13:11:15 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Sun, 3 Oct 2021 13:11:14 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Sun, 3 Oct 2021 13:11:14 -0700 Received: from BG-LT7430.marvell.com (BG-LT7430.marvell.com [10.28.177.176]) by maili.marvell.com (Postfix) with ESMTP id 54B683F706A; Sun, 3 Oct 2021 13:11:13 -0700 (PDT) From: To: CC: , Pavan Nikhilesh Date: Mon, 4 Oct 2021 01:41:08 +0530 Message-ID: <20211003201110.10448-1-pbhagavatula@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200802181631.691-1-pbhagavatula@marvell.com> References: <20200802181631.691-1-pbhagavatula@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: XaTBaysVU5riwAvXJtwOcNrIzCcIto5x X-Proofpoint-ORIG-GUID: XaTBaysVU5riwAvXJtwOcNrIzCcIto5x 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 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 --- 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.33.0 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:11:09 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: 100394 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 D04CBA034F; Sun, 3 Oct 2021 22:11:27 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7E78A41270; Sun, 3 Oct 2021 22:11:21 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 694C341262 for ; Sun, 3 Oct 2021 22:11:19 +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 193IuYul007120 for ; Sun, 3 Oct 2021 13:11:18 -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=RCUFIfGYui2RR23wIxmxNnX+UeZjbVCMBmxlJej3qJU=; b=h03DVhkCD1bHqhxUoRM4N04SZ0cVpqqmz/MBf+0MSFS9hSe7pNdqJlgcsAt8Cw8eebje 1rxqsLCt5mQpW9nDH6lBon8ELbuAgiFp97oR/oHUbvh2ceT9hulUVeQjRtjipDhYt7Ea hPjZGpTLTX3yeVwKnrkppXk+Ff0eHfIwzscR+MNiPaFfluT5F6L6fMhN0mc37IVm4Dfg 6dzocOgwQzbBV/8mj9Zu6LuvUOLnibL52FZLkca65M34dW2zNLgUNpP6tgZF024gf2Mv dx4W01Nq7uq9s1h4/WB42hV7dUbCnXRVUH4A7eLASnv/lg2Ft0zQnaxar76HgzMtxlop +w== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0a-0016f401.pphosted.com with ESMTP id 3bf6g3hm79-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Sun, 03 Oct 2021 13:11:18 -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:11:17 -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:11:17 -0700 Received: from BG-LT7430.marvell.com (BG-LT7430.marvell.com [10.28.177.176]) by maili.marvell.com (Postfix) with ESMTP id CF1213F7073; Sun, 3 Oct 2021 13:11:15 -0700 (PDT) From: To: CC: , Pavan Nikhilesh Date: Mon, 4 Oct 2021 01:41:09 +0530 Message-ID: <20211003201110.10448-2-pbhagavatula@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211003201110.10448-1-pbhagavatula@marvell.com> References: <20200802181631.691-1-pbhagavatula@marvell.com> <20211003201110.10448-1-pbhagavatula@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: jI7IUD4YteNj27Sr_aQ9GIcR99FKQDIZ X-Proofpoint-ORIG-GUID: jI7IUD4YteNj27Sr_aQ9GIcR99FKQDIZ 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 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:11:10 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: 100395 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 803EAA034F; Sun, 3 Oct 2021 22:11:33 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 95DCB41276; Sun, 3 Oct 2021 22:11:23 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 154FC41276 for ; Sun, 3 Oct 2021 22:11:21 +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 193DdwBi031011 for ; Sun, 3 Oct 2021 13:11:21 -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=HSk2CkziVtjJsA7FshFjJAaOOGKGHNb6uBFonVYDyP8=; b=VVJgZdAw+yjERDbt6vcj1jUikM8RvYn2KEc2VkXw1GpHZen0fBAR7iJmo1ZpU700W0hJ l9gQjFy/QJY36iAGXkIV+K6b5uAPyS9r4ecC98VMTEiEhoH1nfjAxDJFq7Hjg0xrx8f2 id9AsZTd3an8TrZhrucKzNsZXMwe9kC5wMkOccyPpiRUMnOfStAGALXnz89g9lIlhr+j OBelmyxBitZAaNOn6AlduYrFk/a+DV31fsIR0u/Ev3tE79wZRMLEkrfENzGogZDKMez9 3rTCqCrtmdNdFzYi8dfaUuFCQkmAwN5VkRkCIkfsWRkY8Of85w3lBD4ZiDoBjh5/9h2z jw== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0a-0016f401.pphosted.com with ESMTP id 3bf6g3hm7c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Sun, 03 Oct 2021 13:11:21 -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:11:19 -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:11:19 -0700 Received: from BG-LT7430.marvell.com (BG-LT7430.marvell.com [10.28.177.176]) by maili.marvell.com (Postfix) with ESMTP id 2DED23F706B; Sun, 3 Oct 2021 13:11:17 -0700 (PDT) From: To: CC: , Pavan Nikhilesh Date: Mon, 4 Oct 2021 01:41:10 +0530 Message-ID: <20211003201110.10448-3-pbhagavatula@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211003201110.10448-1-pbhagavatula@marvell.com> References: <20200802181631.691-1-pbhagavatula@marvell.com> <20211003201110.10448-1-pbhagavatula@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: OSeEyXbKiSuHsRelejh6M6kKivFKzmQm X-Proofpoint-ORIG-GUID: OSeEyXbKiSuHsRelejh6M6kKivFKzmQm 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 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;