[dpdk-dev] Sending & Receiving Packets

Wiles, Roger Keith keith.wiles at windriver.com
Mon Jun 24 16:12:32 CEST 2013


Hi Peter,

Pktgen can send the packets but they have to be configured correctly. DPDK has a couple of applications two are L2fwd and L3fwd. These two applications can forward L2 or L3 packets from one port to another. These applications will not answer an ARP request or PING packet, so you have to configure the applications correctly with the correct routing information have a look at the L3fwd application code and docs. If you are using a standard OS and not Pktgen or some type of traffic generator you must configure the sender machine system correctly.

In the L3fwd application you tell the application which IP address belongs to which port, think of the L3fwd application as a L3 router that you have to configure the route by hand correctly. Then on the sender machine you have to hardcode the ARP addresses in the arp cache to force the local OS not try a ARP request. Find out the MAC address of the two server ports and then do a 'arp' command on your sender machines that defines the correct IP address and MAC address of port. It is not too hard, but you do need to get the sender and L3fwd configured correctly. I have not given all of the details, but the DPDK docs should be able to help and understanding how a L3 router works is a big plus.

Note one area I find most do not understand is the packet leaving the sender machine must have the MAC address of the server port and the IP address of the machine you are trying to send the packet, then the L3fwd configuration needs to know the correct routes to the port with that subnet or IP address.

You should be able to find more detailed docs in the DPDK system. I hope you are able to get things working.

Thank you, ++Keith
-------------------------------
Keith Wiles
Principal Technologist for Networking
cell 972-213-5533
Wind River Systems






On Jun 24, 2013, at 12:21 AM, Peter Chen <peter.feifan.chen at gmail.com<mailto:peter.feifan.chen at gmail.com>>
 wrote:

Thanks for the reply, I understand that without the network stack, ping won't work. I am curious as to how I would even get a packet sent over since the port that DPDK has would not have an IP address nor will it be able to do ARP to get one. So how do I even send a packet over (e.g. ping would need some IP address to ping in the first place regardless of if there is a network stack on the other side to process a reply).

would PktGen be able to send packets over without an IP address?


On Sun, Jun 23, 2013 at 10:03 PM, Wiles, Roger Keith <keith.wiles at windriver.com<mailto:keith.wiles at windriver.com>> wrote:
Hi Peter,

When DPDK is running on the server it takes control of the ports, which means the network stack that would answer a ping (ICMP Echo) would not be attached to the port any more. You would have to add code to DPDK as an application to receive the ICMP Echo packet and respond with a ICMP Reply packet. The other method would be to attach a network stack as the application to DPDK and use that network stack to receive and send packets.

Writing a simple DPDK application to receive packets off the ports and look for ICMP Echo request and to respond with a ICMP Echo reply is not that hard as I do that work in Pktgen. If you want to do more then just grab packets and determine if you need to send out a packet you would need to port some stack on top of DPDK like lwIP. You can this other ways, but it would take a bit more text to describe.

Have a look at Pktgen on GitHub and you can look at that code for a basic example.

Thank you, ++Keith
-------------------------------
Keith Wiles
Principal Technologist for Networking
cell 972-213-5533
Wind River Systems






On Jun 23, 2013, at 11:52 PM, Peter Chen <peter.feifan.chen at gmail.com<mailto:peter.feifan.chen at gmail.com>>
 wrote:

I was wondering how I can send/receive packets from my computer to my server which has dpdk running. Since what seems to happen is that dpdk binds to the ethernet device, what would be its IP address?

For example how would I send a ping from one computer to my server with dpdk binded to the NIC?

Would I send a packet with only MAC address and dpdk binded NIC would pick it up and move the packet up to dpdk and then to the user space? Just kind of confused how that works. I would be grateful for any help!

Peter



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://dpdk.org/ml/archives/dev/attachments/20130624/5d1a8683/attachment.html>


More information about the dev mailing list