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 <[email protected]>
Sent: Wednesday, June 13, 2018 1:57 PM
To: Ido Goshen <[email protected]>
Cc: [email protected]
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