[EXT] [PATCH v10 12/12] app/graph: support l3fwd use case

Nithin Dabilpuram nithind1988 at gmail.com
Mon Oct 23 09:06:34 CEST 2023


Acked-By: Nithin Dabilpuram <ndabilpuram at marvell.com>

On Fri, Oct 20, 2023 at 5:47 AM Jerin Jacob Kollanukkaran
<jerinj at marvell.com> wrote:
>
> > -----Original Message-----
> > From: skori at marvell.com <skori at marvell.com>
> > Sent: Thursday, October 19, 2023 4:20 PM
> > To: Sunil Kumar Kori <skori at marvell.com>; Rakesh Kudurumalla
> > <rkudurumalla at marvell.com>
> > Cc: dev at dpdk.org
> > Subject: [EXT] [PATCH v10 12/12] app/graph: support l3fwd use case
> >
> > External Email
> >
> > ----------------------------------------------------------------------
> > From: Rakesh Kudurumalla <rkudurumalla at marvell.com>
> >
> > Adds an use case l3fwd. It contains a dedicated l3fwd.cli file mentioning
> > commands to configure the required resources.
> >
> > Once application successfully parses the l3fwd.cli then a graph is created having
> > below nodes:
> >  - ethdev_rx -> pkt_cls
> >
> >  - pkt_cls -> ip4_lookup
> >  - pkt_cls -> ip6_lookup
> >  - pkt_cls -> pkt_drop
> >
> >  - ip4_lookup -> ip4_rewrite
> >  - ip4_lookup -> pkt_drop
> >
> >  - ip6_lookup -> ip6_rewrite
> >  - ip6_lookup -> pkt_drop
> >
> >  - ip4_rewrite -> ethdev_tx
> >  - ip4_rewrite -> pkt_drop
> >
> >  - ip6_rewrite -> ethdev_tx
> >  - ip6_rewrite -> pkt_drop
> >
> >  - ethdev_tx -> pkt_drop
> >
> > Signed-off-by: Sunil Kumar Kori <skori at marvell.com>
> > Signed-off-by: Rakesh Kudurumalla <rkudurumalla at marvell.com>
> > ---
> > +Supported Use cases
> > +-------------------
> > + * l3fwd
> > +
> > +This use case is supported for both PF and PCAP network devices. To
>
> Both HW and PCAP vdev network device.
> Remove PF instance form doc.
>
> > +demonstrate, corresponding .cli files are available at
> > +``<dpdk_root_dir/app/graph/examples/>``
> > +named as ``l3fwd.cli`` and  ``l3fwd_pcap.cli`` respectively.
> > +
> >  Running the Application
> >  -----------------------
> >
> > @@ -63,6 +71,26 @@ Following are the application command-line options:
> >
> >         Dumps application usage
> >
> > +Examples
> > +~~~~~~~~
>
> In order to have continuity,  Please move "16.1. Supported Use cases" here and remove "Examples"
>
> 16.x Supported Use case
> 16.x.1 L3fwd
> 16.x.1.1 Example commands
> 16.x.1.2 Verifying traffic
>
>
> > +
> > +For PF devices
> > +
> > +.. code-block:: console
> > +
> > +   ./dpdk-graph -c 0xff -a 0002:02:00.0 -a 0002:03:00.0 --
> > +             -s <dpdk_root_dir>/app/graph/examples/l3fwd.cli
> > +
> > +For net_pcapX devices
> > +
> > +.. code-block:: console
> > +
> > +   ./dpdk-graph -c 0xff --
> > vdev=net_pcap0,rx_pcap=in_net_pcap0.pcap,tx_pcap=out_net_pcap1.pcap
> > +                        --
> > vdev=net_pcap1,rx_pcap=in_net_pcap1.pcap,tx_pcap=out_net_pcap0.pcap
> > +                        -- -s
> > + <dpdk_root_dir>/app/graph/examples/l3fwd_pcap.cli
> > +
> > +Refer section :ref:`verifying_traffic` to create .pcap file used here.
> > +
> >  Supported CLI commands
> >  ----------------------
> >
> > @@ -223,3 +251,84 @@ Created graph for use case
> >
> >  On the successful execution of ``<usecase>.cli`` file, corresponding graph will
> > be created.
> >  This section mentions the created graph for each use case.
> > +
> > +l3fwd
> > +~~~~~
> > +
> > +.. _figure_l3fwd_graph:
> > +
> > +.. figure:: img/graph-usecase-l3fwd.*
> > +
> > +.. _verifying_traffic:
> > +
> > +Verifying traffic
> > +~~~~~~~~~~~~~~~~~
> > +
> > +``l3fwd.cli`` and ``l3fwd_pcap.cli`` creates setup with two network
> > +ports. Routing between these ports are done by lookup node routing
> > +information. For current use case, following routing table is used:
> > +
> > +.. code-block:: console
> > +
> > +   DIP        port
> > +   10.0.2.2    1
> > +   20.0.2.2    0
> > +
> > +On the successful execution of ``l3fwd.cli`` or ``l3fwd_pcap.cli``,
> > +user needs to send traffic with mentioned DIP.
> > +
> > +For net_pcapX devices, required pcap file should be created and passed
> > +to application. These pcap files can be created in several ways. Scapy is one of
> > the method to get the same:
> > +
> > +.. code-block:: console
> > +
> > +   # scapy
> > +
> > +                     aSPY//YASa
> > +             apyyyyCY//////////YCa       |
> > +            sY//////YSpcs  scpCY//Pp     | Welcome to Scapy
> > +    ayp ayyyyyyySCP//Pp           syY//C    | Version 2.4.3
> > +    AYAsAYYYYYYYY///Ps              cY//S   |
> > +         pCCCCY//p          cSSps y//Y   |
> > https://urldefense.proofpoint.com/v2/url?u=https-
> > 3A__github.com_secdev_scapy&d=DwIDAg&c=nKjWec2b6R0mOyPaz7xtfQ&r=
> > 1DGob4H4rxz6H8uITozGOCa0s5f4wCNtTa4UUKvcsvI&m=V_QcQyFL-
> > NxiuHEAdNEZlQ379HvK37suZH_8Yfuuz-HwEKmVw5Iy-SbtS95-
> > brBb&s=XR2R_CEDkRJPhayLXSY1ZRnzrZsuR-UDaSSDHELwAnQ&e=
> > +         SPPPP///a          pP///AC//Y   |
> > +              A//A            cyP////C   | Have fun!
> > +              p///Ac            sC///a   |
> > +              P////YCpc           A//A   | We are in France, we say Skappee.
> > +       scccccp///pSP///p          p//Y   | OK? Merci.
> > +      sY/////////y  caa           S//P   |             -- Sebastien Chabal
> > +       cayCyayP//Ya              pY/Ya   |
> > +        sY/PsY////YCc          aC//Yp
> > +         sc  sccaCY//PCypaapyCP//YSs
> > +                  spCPY//////YPSps
> > +                       ccaacs
> > +                                       using IPython 7.13.0
>
> This graphics can be removed in the doc
>
> > +   >>>
> > +   >>>
>
> Remove this
>
> > +   >>> pkts=[Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="28.0.0.1", dst="10.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="28.0.0.1", dst="10.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="28.0.0.1", dst="10.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="28.0.0.1", dst="10.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="28.0.0.1", dst="10.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="28.0.0.1", dst="10.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="28.0.0.1", dst="10.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="28.0.0.1", dst="10.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="28.0.0.1", dst="10.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="28.0.0.1", dst="10.0.2.2")]
> > +   >>>
> > +   >>>wrpcap("in_net_pcap1.pcap",pkts)
> > +   >>>
> > +   >>>
>
> Remove above two lines
>
> > +   >>> pkts=[Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="29.0.0.1", dst="20.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="29.0.0.1", dst="20.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="29.0.0.1", dst="20.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="29.0.0.1", dst="20.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="29.0.0.1", dst="20.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="29.0.0.1", dst="20.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="29.0.0.1", dst="20.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="29.0.0.1", dst="20.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="29.0.0.1", dst="20.0.2.2"),
> > +             Ether(dst="FA:09:F9:D7:E0:9D",
> > src="10:70:1d:2f:42:2d")/IP(src="28.0.0.1", dst="20.0.2.2")]
> > +   >>>
> > +   >>>wrpcap("in_net_pcap0.pcap",pkts)
> > +   >>>
>
> Remove above line
>
> > +   >>> quit
>
> Which above changes:
> Acked-by: Jerin Jacob <jerinj at marvell.com>


More information about the dev mailing list