[dpdk-dev] [PATCH v2] net/pcap: rx_iface_in stream type support

Ido Goshen Ido at cgstowernetworks.com
Thu Jun 14 19:14:51 CEST 2018


I use "rx_iface","tx_iface" (and not just "iface") in order to have multiple TX queues
I just gave a simplified setting with 1 queue
My app  does a full mesh between the ports (not fixed pairs like l2fwd) so all the forwarding lcores can tx to the same port simultaneously
and as DPDK docs say:
"Multiple logical cores should never share receive or transmit queues for interfaces since this would require global locks and hinder performance."
For example if I have 3 ports handled by 3 cores it'll be 
	myapp -c 7 -n1 --no-huge \
	--vdev=eth_pcap0,rx_iface=eth0,tx_iface=eth0,tx_iface=eth0,tx_iface=eth0 \
	--vdev=eth_pcap0,rx_iface=eth1,tx_iface=eth1,tx_iface=eth1,tx_iface=eth1 \
	--vdev=eth_pcap0,rx_iface=eth2,tx_iface=eth2,tx_iface=eth2,tx_iface=eth2 \
	-- -p 7
Is there another way to achieve multiple queues in pcap vdev?

I do see that using "iface" behaves differently - I'll try to investigate why
And still even when using "iface" I also see packets that are transmitted out of eth1 (e.g. tcpreplay -i eth1 packets.pcap) 
and not only packets that are received (e.g. ping from far end to eth0 ip)


-----Original Message-----
From: Ferruh Yigit <ferruh.yigit at intel.com> 
Sent: Wednesday, June 13, 2018 1:57 PM
To: Ido Goshen <Ido at cgstowernetworks.com>
Cc: dev at dpdk.org
Subject: Re: [PATCH v2] net/pcap: rx_iface_in stream type support

On 6/5/2018 6:10 PM, Ido Goshen wrote:
> The problem is if a dpdk app uses the same iface(s) both as rx_iface and tx_iface then it will receive back the packets it sends.
> If my app sends a packet to portid=X with rte_eth_tx_burst() then I 
> wouldn't expect to receive it back by rte_eth_rx_burst() for that same portid=X  (assuming of course there's no external loopback) This is coming from the default nature of pcap that like a sniffer captures both incoming and outgoing direction.
> The patch provides an option to limit pcap rx_iface to get only incoming traffic which is more like a real (non-pcap) dpdk device.
> 
> for example:
> when using existing *rx_iface*
> 	l2fwd -c 3 -n1 --no-huge --vdev=eth_pcap0,rx_iface=eth1,tx_iface=eth1 
> --vdev=eth_pcap1,rx_iface=dummy0,tx_iface=dummy0  -- -p 3 -T 1 sending 
> only 1 single packet into eth1 will end in an infinite loop -

If you are using same interface for both Rx & Tx, why not using "iface=xxx"
argument, can you please test with following:

l2fwd -c 3 -n1 --no-huge --vdev=eth_pcap0,iface=eth1
--vdev=eth_pcap1,iface=dummy0 -- -p 3 -T 1


I can't reproduce the issue with above command.

Thanks,
ferruh


More information about the dev mailing list