X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fsample_app_ug%2Fip_reassembly.rst;h=99dcd9556ee2b0d78b9ce26f31f7d8328061bf1f;hb=24ac604ef7469eb5773c2504b313dd00257f8df3;hp=103e12bd83d30e102358a5d5d4bd78bcd15c4c59;hpb=d0dff9ba445e47199a420dd4b5451ec2860d3d3b;p=dpdk.git diff --git a/doc/guides/sample_app_ug/ip_reassembly.rst b/doc/guides/sample_app_ug/ip_reassembly.rst index 103e12bd83..99dcd9556e 100644 --- a/doc/guides/sample_app_ug/ip_reassembly.rst +++ b/doc/guides/sample_app_ug/ip_reassembly.rst @@ -1,46 +1,18 @@ -.. BSD LICENSE - Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2010-2014 Intel Corporation. IP Reassembly Sample Application ================================ -The L3 Forwarding application is a simple example of packet processing using the Intel® DPDK. +The L3 Forwarding application is a simple example of packet processing using the DPDK. The application performs L3 forwarding with reassembly for fragmented IPv4 and IPv6 packets. Overview -------- -The application demonstrates the use of the Intel® DPDK libraries to implement packet forwarding +The application demonstrates the use of the DPDK libraries to implement packet forwarding with reassembly for IPv4 and IPv6 fragmented packets. -The initialization and run- time paths are very similar to those of the L2 forwarding application -(see Chapter 9 "L2 Forwarding Sample Application" for more information). +The initialization and run- time paths are very similar to those of the :doc:`l2_forward_real_virtual`. The main difference from the L2 Forwarding sample application is that it reassembles fragmented IPv4 and IPv6 packets before forwarding. The maximum allowed size of reassembled packet is 9.5 KB. @@ -51,31 +23,17 @@ There are two key differences from the L2 Forwarding sample application: * The second difference is that the application differentiates between IP and non-IP traffic by means of offload flags. -The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number, associated with that IPv4 address. Any unmatched packets are forwarded to the originating port.Compiling the Application --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number, +associated with that IPv4 address. Any unmatched packets are forwarded to the originating port. -To compile the application: -#. Go to the sample application directory: +Compiling the Application +------------------------- - .. code-block:: console +To compile the sample application see :doc:`compiling`. - export RTE_SDK=/path/to/rte_sdk - cd ${RTE_SDK}/examples/ip_reassembly +The application is located in the ``ip_reassembly`` sub-directory. -#. Set the target (a default target is used if not specified). For example: - - .. code-block:: console - - export RTE_TARGET=x86_64-native-linuxapp-gcc - -See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values. - -#. Build the application: - - .. code-block:: console - - make Running the Application ----------------------- @@ -96,14 +54,14 @@ where: * --flowttl=TTL[(s|ms)]: determines maximum Time To Live for fragmented packet. If all fragments of the packet wouldn't appear within given time-out, - then they are consirdered as invalid and will be dropped. + then they are considered as invalid and will be dropped. Valid range is 1ms - 3600s. Default value: 1s. -To run the example in linuxapp environment with 2 lcores (2,4) over 2 ports(0,2) with 1 RX queue per lcore: +To run the example in linux environment with 2 lcores (2,4) over 2 ports(0,2) with 1 RX queue per lcore: .. code-block:: console - ./build/ip_reassembly -c 0x14 -n 3 -- -p 5 + ./build/ip_reassembly -l 2,4 -n 3 -- -p 5 EAL: coremask set to 14 EAL: Detected lcore 0 on socket 0 EAL: Detected lcore 1 on socket 1 @@ -130,11 +88,11 @@ To run the example in linuxapp environment with 2 lcores (2,4) over 2 ports(0,2) IP_RSMBL: entering main loop on lcore 2 IP_RSMBL: -- lcoreid=2 portid=0 -To run the example in linuxapp environment with 1 lcore (4) over 2 ports(0,2) with 2 RX queues per lcore: +To run the example in linux environment with 1 lcore (4) over 2 ports(0,2) with 2 RX queues per lcore: .. code-block:: console - ./build/ip_reassembly -c 0x10 -n 3 -- -p 5 -q 2 + ./build/ip_reassembly -l 4 -n 3 -- -p 5 -q 2 To test the application, flows should be set up in the flow generator that match the values in the l3fwd_ipv4_route_array and/or l3fwd_ipv6_route_array table. @@ -149,14 +107,14 @@ The default l3fwd_ipv4_route_array table is: .. code-block:: c struct l3fwd_ipv4_route l3fwd_ipv4_route_array[] = { - {IPv4(100, 10, 0, 0), 16, 0}, - {IPv4(100, 20, 0, 0), 16, 1}, - {IPv4(100, 30, 0, 0), 16, 2}, - {IPv4(100, 40, 0, 0), 16, 3}, - {IPv4(100, 50, 0, 0), 16, 4}, - {IPv4(100, 60, 0, 0), 16, 5}, - {IPv4(100, 70, 0, 0), 16, 6}, - {IPv4(100, 80, 0, 0), 16, 7}, + {RTE_IPv4(100, 10, 0, 0), 16, 0}, + {RTE_IPv4(100, 20, 0, 0), 16, 1}, + {RTE_IPv4(100, 30, 0, 0), 16, 2}, + {RTE_IPv4(100, 40, 0, 0), 16, 3}, + {RTE_IPv4(100, 50, 0, 0), 16, 4}, + {RTE_IPv4(100, 60, 0, 0), 16, 5}, + {RTE_IPv4(100, 70, 0, 0), 16, 6}, + {RTE_IPv4(100, 80, 0, 0), 16, 7}, }; The default l3fwd_ipv6_route_array table is: @@ -182,8 +140,7 @@ Explanation ----------- The following sections provide some explanation of the sample application code. -As mentioned in the overview section, the initialization and run-time paths are very similar to those of the L2 forwarding application -(see Chapter 9 "L2 Forwarding Sample Application" for more information). +As mentioned in the overview section, the initialization and run-time paths are very similar to those of the :doc:`l2_forward_real_virtual`. The following sections describe aspects that are specific to the IP reassemble sample application. IPv4 Fragment Table Initialization @@ -223,7 +180,7 @@ each RX queue uses its own mempool. nb_mbuf += RTE_TEST_RX_DESC_DEFAULT + RTE_TEST_TX_DESC_DEFAULT; nb_mbuf = RTE_MAX(nb_mbuf, (uint32_t)NB_MBUF); - rte_snprintf(buf, sizeof(buf), "mbuf_pool_%u_%u", lcore, queue); + snprintf(buf, sizeof(buf), "mbuf_pool_%u_%u", lcore, queue); if ((rxq->pool = rte_mempool_create(buf, nb_mbuf, MBUF_SIZE, 0, sizeof(struct rte_pktmbuf_pool_private), rte_pktmbuf_pool_init, NULL, rte_pktmbuf_init, NULL, socket, MEMPOOL_F_SP_PUT | MEMPOOL_F_SC_GET)) == NULL) {