[EXT] [PATCH v10 12/12] app/graph: support l3fwd use case
Jerin Jacob Kollanukkaran
jerinj at marvell.com
Thu Oct 19 14:28:52 CEST 2023
> -----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