[dpdk-dev] DPDK packet capture question
Hello, I am a newbie to DPDK. I'm making a packet capture program from the l3fwd sample application. When I tested my program in a virtual environment, it worked. But in a real world, it does not work correctly. In the virtual environment, there are 3 VMs. VM1 sends DNS packets to VM3 and VM3 also replies to VM1. VM2 as DPDK promiscuous mode captures the packets. In this settings, the port 0 receives all the packets, but the port 1 receives nothing. I want to get all the packets on both ports, but anyway it's fine. Now, in the real world, a client sends DNS packets to a DNS server, but between them, there are 3 switches. The DPDK port 0 is connected to the switch 1 and the port 1 is connected the switch 3. The port 0 receives only DNS queries and the port 1 receives only DNS responses. I use Intel I-350 NIC. The network looks like below. CLIENT -> SWITCH1 -> SWITCH2 -> SWITCH3 -> DNS | | PORT 0 PORT 1 I don't know how to fix it. When I tested with WireShark, it received both packets on both ports. Do you have any idea? Am I missing something? Thank you very much in advance. Dan
[dpdk-dev] DPDK packet capture question
On Jun 21, 2015, at 5:09 PM, Daeyoung Kim wrote: > I am a newbie to DPDK. Welcome! > I'm making a packet capture program from the l3fwd > sample application. When I tested my program in a virtual environment, it > worked. But in a real world, it does not work correctly. This topology is kind of complicated. I recommend beginning with just a single port sending ARPs, pings, etc. It takes a lot of careful work to get everything right. Switches are going to drop some packets from different ports depending on the MAC addresses they learn from the traffic. So if there is a switch, when beginning it is good to enable a mirror mode on two systems communicating, and sending the mirror to the DPDK port that is listening. Or use some kind of cheap 100BaseT network tap (Gigabit-plus active taps are very expensive, and not needed for simple uses like this anyway, as you don't usually send heavy traffic when just debugging). There is also a promiscuous flag in DPDK which you usually end up needing to set if you are doing special-purpose stuff... rte_eth_promiscuous_enable(port_id) Good luck, happy hacking! Matthew.