[dpdk-users] [dpdk-dev] capture packets on VM

Pattan, Reshma reshma.pattan at intel.com
Wed Jul 20 12:17:27 CEST 2016


Hi Raja,

You can use l3fwd  to forward packets to specific ports based on destination ip.
L3fwd uses LPM lookup to do destination based forwarding. As described in below  paragraph from the given link,
you need to add routing entry for the destinations ips of your interest and compile the code.

Place where routing entry should go is in below strut from file dpdk/examples/l3fwd/ l3fwd_lpm.c
static struct ipv4_l3fwd_lpm_route ipv4_l3fwd_lpm_route_array[] = {
        {IPv4(1, 1, 1, 0), 24, 0},
        {IPv4(2, 1, 1, 0), 24, 1},
        {IPv4(3, 1, 1, 0), 24, 2},
        {IPv4(4, 1, 1, 0), 24, 3},
        {IPv4(5, 1, 1, 0), 24, 4},
        {IPv4(6, 1, 1, 0), 24, 5},
        {IPv4(7, 1, 1, 0), 24, 6},
        {IPv4(8, 1, 1, 0), 24, 7},
};

http://dpdk.org/doc/guides-16.04/sample_app_ug/l3_forward.html
"The LPM lookup key is represented by the Destination IP Address field read from the input packet.
The ID of the output interface for the input packet is the next hop returned by the LPM lookup.
The set of LPM rules used by the application is statically configured and loaded into the LPM object at initialization time."

@Pablo: Do you know how MAC based forwarding can be done using L2?

Thanks,
Reshma


From: Raja Jayapal [mailto:raja.jayapal at tcs.com]
Sent: Wednesday, July 20, 2016 7:10 AM
To: Pattan, Reshma <reshma.pattan at intel.com>
Cc: users at dpdk.org; De Lara Guarch, Pablo <pablo.de.lara.guarch at intel.com>
Subject: RE: [dpdk-dev] capture packets on VM

Hi Reshma/All,

Please find the "show config fwd" output below.

 testpmd> show config fwd
Warning! Cannot handle an odd number of ports with the current port topology. Configuration must be changed to have an even number of ports, or relaunch application with --port-topology=chained
io packet forwarding - ports=3 - cores=1 - streams=3 - NUMA support disabled, MP over anonymous pages disabled
Logical Core 1 (socket 0) forwards packets on 3 streams:
  RX P=0/Q=0 (socket 0) -> TX P=2/Q=0 (socket 0) peer=02:00:00:00:00:02
  RX P=1/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00
  RX P=2/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00

As described above, i have modified the topology to have even number of ports.

testpmd> show config fwd
io packet forwarding - ports=4 - cores=1 - streams=4 - NUMA support disabled, MP over anonymous pages disabled
Logical Core 1 (socket 0) forwards packets on 4 streams:
  RX P=0/Q=0 (socket 0) -> TX P=1/Q=0 (socket 0) peer=02:00:00:00:00:01
  RX P=1/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00
  RX P=2/Q=0 (socket 0) -> TX P=3/Q=0 (socket 0) peer=02:00:00:00:00:03
  RX P=3/Q=0 (socket 0) -> TX P=2/Q=0 (socket 0) peer=02:00:00:00:00:02

I could confirm that the packet is getting forwarded as per the config and setting the IP and MAC in packet generator does not take effect.
In testpmd app, whatever the MAC/IP is configured on traffic generator, the packets are forwaded in adjacent ports.

If i want to forward the packet based on IP&MAC, will it be achieved by running l2fwd or l3fwd ?

Kindly suggest.

Thanks,
Raja


-----"Pattan, Reshma" <reshma.pattan at intel.com<mailto:reshma.pattan at intel.com>> wrote: -----
To: Raja Jayapal <raja.jayapal at tcs.com<mailto:raja.jayapal at tcs.com>>
From: "Pattan, Reshma" <reshma.pattan at intel.com<mailto:reshma.pattan at intel.com>>
Date: 07/19/2016 07:12PM
Cc: "users at dpdk.org<mailto:users at dpdk.org>" <users at dpdk.org<mailto:users at dpdk.org>>, "De Lara Guarch, Pablo" <pablo.de.lara.guarch at intel.com<mailto:pablo.de.lara.guarch at intel.com>>
Subject: RE: [dpdk-dev] capture packets on VM
Hi Raja,

Since this is a usability question this should be discussed under users at dpdk.org<mailto:users at dpdk.org> mailing list. Hence I removed dev at dpdk.org<mailto:dev at dpdk.org>.
Ya actually packets received from port 0 should be transmitted on to port1 and packets received from port1 should go to port2.

Can you paste o/p of  "show config fwd" and also interpret if  traffic on your board is flowing as per existing flow rules.

Ex:
testpmd> show  config fwd
io packet forwarding - ports=2 - cores=1 - streams=2 - NUMA support disabled, MP over anonymous pages disabled
Logical Core 5 (socket 0) forwards packets on 2 streams:
  RX P=0/Q=0 (socket 0) -> TX P=1/Q=0 (socket 0) peer=02:00:00:00:00:01  ==> this means, Streams received on port 0 will be sent on to port1 .
  RX P=1/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00 ==> this means, Streams received on port1 will be sent onto port0.

Thanks,
Reshma

From: Raja Jayapal [mailto:raja.jayapal at tcs.com]
Sent: Tuesday, July 19, 2016 12:38 PM
To: Pattan, Reshma <reshma.pattan at intel.com<mailto:reshma.pattan at intel.com>>
Cc: dev at dpdk.org<mailto:dev at dpdk.org>
Subject: RE: [dpdk-dev] capture packets on VM

Hi Reshma,

Thanks for your information.
I have been trying to run the testpmd app and would like to get some idea on the packet flow in testpmd.

br0 -----vnet0----- (port0)VM NIC

br1------vnet1------(port1)VM NIC

br2------vnet2------(port2)VM NIC

br0 IP and MAC:
fe:54:00:0d:af:af - 192.168.100.10
br1 IP and MAC:
fe:54:00:4e:5b:df - 192.168.100.20
br2 IP and MAC:
fe:54:00:93:78:6d - 192.168.100.30

Ran testpmd application on VM and sending packets from Host using packeth.

Using PackETH generator, sent traffic from br0 destined to br1(modified the source / destination MAC and IP in packeth tool), but i could see that the packets are received on port0 and transmitted on port2.

Sending packets from br0 to br1:

./testpmd -c 3 -n 4 -- -i --total-num-mbufs=3000
testpmd> show port stats all
  ######################## NIC statistics for port 0  ########################
  RX-packets: 4          RX-missed: 0          RX-bytes:  0
  RX-errors: 0
  RX-nombuf:  0
  TX-packets: 0          TX-errors: 0          TX-bytes:  0
  ############################################################################
  ######################## NIC statistics for port 1  ########################
  RX-packets: 0          RX-missed: 0          RX-bytes:  0
  RX-errors: 0
  RX-nombuf:  0
  TX-packets: 0          TX-errors: 0          TX-bytes:  0
  ############################################################################
  ######################## NIC statistics for port 2  ########################
  RX-packets: 0          RX-missed: 0          RX-bytes:  0
  RX-errors: 0
  RX-nombuf:  0
  TX-packets: 4          TX-errors: 0          TX-bytes:  0
  ############################################################################
testpmd>

Second time, sent traffic from br1 to br2, but the packets are received on port2 and transmitted on port0.

Sending packets from br1 to br2:

testpmd> show port stats all
  ######################## NIC statistics for port 0  ########################
  RX-packets: 0          RX-missed: 0          RX-bytes:  0
  RX-errors: 0
  RX-nombuf:  0
  TX-packets: 6          TX-errors: 0          TX-bytes:  0
  ############################################################################
  ######################## NIC statistics for port 1  ########################
  RX-packets: 6          RX-missed: 0          RX-bytes:  0
  RX-errors: 0
  RX-nombuf:  0
  TX-packets: 0          TX-errors: 0          TX-bytes:  0
  ############################################################################
  ######################## NIC statistics for port 2  ########################
  RX-packets: 0          RX-missed: 0          RX-bytes:  0
  RX-errors: 0
  RX-nombuf:  0
  TX-packets: 0          TX-errors: 0          TX-bytes:  0
  ############################################################################
testpmd>

Could you please suggest whether this is expected behaviour?
Also suggest if any configuarion needs to be done to make the flow to work correctly.


Thanks,
Raja

-----"Pattan, Reshma" <reshma.pattan at intel.com<mailto:reshma.pattan at intel.com>> wrote: -----
To: Raja Jayapal <raja.jayapal at tcs.com<mailto:raja.jayapal at tcs.com>>
From: "Pattan, Reshma" <reshma.pattan at intel.com<mailto:reshma.pattan at intel.com>>
Date: 07/15/2016 07:33PM
Cc: "dev at dpdk.org<mailto:dev at dpdk.org>" <dev at dpdk.org<mailto:dev at dpdk.org>>
Subject: RE: [dpdk-dev] capture packets on VM

> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Raja Jayapal
> Sent: Friday, July 15, 2016 6:55 AM
> To: dev at dpdk.org<mailto:dev at dpdk.org>
> Subject: [dpdk-dev] capture packets on VM
>
> Hi All,
>
> I have installed dpdk on VM and would like to know how to capture the packets
> on dpdk ports.
> I am sending traffic from host  and want to know how to confirm whether the
> packets are flowing via dpdk ports.
> I tried with tcpdump and wireshark but could not capture the packets inside VM.
> setup : bridge1(Host)------- VM(Guest with DPDK) ----- bridge2(Host)
>

Hi,

On DPDK you can capture packets with app/pdump/ tool. This tool is available for use from 16.07RC1.
What you can do is run testpmd and see if packets are seen in testpmd, that confirms if packets are landing on dpdk ports or not.
If you also want to capture packet for analysis, you need to run app/pdump/ tool along with testpmd.
The pdump tool captures the packet to pcap file, so you can use tcpdump -ni <pcap file> to view the packets.
More about the tool usage can be found under doc/guides/sample_app_ug/pdump.rst

Let me know if you need further help on this.

Thanks,
Reshma

=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain
confidential or privileged information. If you are
not the intended recipient, any dissemination, use,
review, distribution, printing or copying of the
information contained in this e-mail message
and/or attachments to it are strictly prohibited. If
you have received this communication in error,
please notify us by reply e-mail or telephone and
immediately and permanently delete the message
and any attachments. Thank you


More information about the users mailing list