[dpdk-dev] Unable to redirect packets into kernel using dtap/dtun

Stephen Hemminger stephen at networkplumber.org
Fri Aug 2 17:37:26 CEST 2019


On Fri, 2 Aug 2019 12:45:55 +0530
Nilesh <nileshunhale at cse.iitb.ac.in> wrote:

> Hello,
> 
> We are building an application where a majority of the packets on the 
> fast path are handled by DPDK, but a small subset of packets on the slow 
> path need to be redirected to a legacy userspace socket program that 
> runs over the kernel TCP/IP stack. Therefore, we are trying to inject 
> the slow path packets received by DPDK into the kernel via TUN/TAP device.
> 
> We have done the following: we created a tun device, assigned it an IP 
> address, and bound the legacy socket program to this address. The DPDK 
> program reads all packets from the NIC and writes the slow path packets 
> into this tun device. These packets are then successfully received by 
> the legacy socket program. However, we are unable to get this to work 
> with DPDK's tun/tap devices (dtun/dtap).
> 
> When we use dtap then packet is received in dtap0 (can be seen in 
> wireshark) but not reached the socket program.
> When we use dtun then packet is received in dtun0 (rx value increases 
> but is not captured by wireshark) and not reached the socket program.
> (We enabled ip_forwarding and disabled rp_filter for both "all" and 
> "dtun0" iface)
> (Reference:https://doc.dpdk.org/guides/nics/tap.html) 
> <https://doc.dpdk.org/guides/nics/tap.html>
> 
> Any pointers regarding how to do this using dtun/dtap will be helpful.
> Are we missing anything due to which linux tun device is working but 
> dtun/dtap isn't?
> 
> System specification :
> 2 machines with
> Distributor ID:    Ubuntu
> Description:    Ubuntu 18.04.2 LTS
> Release:    18.04
> Codename:    bionic
> 
> Kernel: 4.15.0-55-generic
> *DPDK* version: 19.05.0
> 
> Hardware:
> CPU: Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
> NIC 1: Intel Corporation Ethernet Controller XL710 for 40GbE QSFP+ (i40e)
> 
> (If any extra setup configuration information required will be provided)
> 

Make sure tap device in kernel is up?

You might try virtio as faster exception path.
https://doc.dpdk.org/guides-18.08/howto/virtio_user_as_exceptional_path.html





More information about the dev mailing list