[dpdk-users] Same 5 tuple UDP packets have been delivered to different queues.

Stephen Hemminger stephen at networkplumber.org
Wed Oct 9 05:12:24 CEST 2019


On Tue, 8 Oct 2019 18:56:31 -0700
Jun Gan <geminijun at gmail.com> wrote:

> Hi Asaf,
> 
> Thank you so much for your help!
> 
> I tend to think there is something missing in my code, do you have any code
> example how to enable RSS?
> 
> I did following setup:
> 
> eth_conf.rxmode.mq_mode = ETH_MQ_RX_RSS;
> eth_conf.rx_adv_conf.rss_conf.rss_hf = ETH_RSS_IP | ETH_RSS_UDP
> eth_conf..rx_adv_conf.rss_conf.rss_hf &= dev_info.flow_type_rss_offloads;
> 
> I also tried to add a flow rule, and I found mlx5 doesn't support
> "rte_eth_dev_rss_hash_conf_get"?
> 
> Here is the action, all the UDP packets applied this action:
> 
>   struct rte_flow_action_rss action_rss = {
>     .types = ETH_RSS_IP | ETH_RSS_UDP,
>     .key_len = 40,
>     .queue_num = 4,
>     .key = rss_key,
>     .queue = queue,
>   };
> 
> 
> And I use spdk reactor to launch multiple threads polling different queue.
> 
> 
> Thanks,
> Jun Gan
> 
> 
> 
> 
> On Tue, Oct 8, 2019 at 4:52 AM Asaf Penso <asafp at mellanox.com> wrote:
> 
> > Hello Jun Gan,
> >
> > Thanks for reaching out and posting this query.
> > I'm adding here our support team for further assistance.
> >
> > Regards,
> > Asaf Penso
> >  
> > > -----Original Message-----
> > > From: users <users-bounces at dpdk.org> On Behalf Of Jun Gan
> > > Sent: Monday, October 7, 2019 6:13 AM
> > > To: users at dpdk.org
> > > Subject: [dpdk-users] Same 5 tuple UDP packets have been delivered to
> > > different queues.
> > >
> > > Hi All,
> > >
> > > I just added multiple queues and enabled RSS in our application, I set
> > > "rss_hf" to "ETH_RSS_IP | ETH_RSS_UDP", but I can see that same 5 tuple
> > > packets, will be delivered to different queues. Do I miss something?
> > >
> > > Here is the code:
> > >
> > > eth_conf.rxmode.mq_mode = ETH_MQ_RX_RSS;
> > > eth_conf.rx_adv_conf.rss_conf.rss_hf = ETH_RSS_IP | ETH_RSS_UDP
> > > eth_conf..rx_adv_conf.rss_conf.rss_hf &=
> > > dev_info.flow_type_rss_offloads;
> > >
> > >
> > > I actually have two queues, and two different threads(lcore) busy
> > > polling(rx_burst) on these two queues, I also met other weird issues  
> > like:  
> > >
> > > dpdk-stable-18.11.2/drivers/net/mlx5/mlx5_rxtx_vec_sse.h:743:
> > > rxq_burst_v:
> > > Assertion `rxq->rq_pi == rxq->cq_ci' failed.
> > >
> > > I don't understand what does this means, I think rx_burst on the same nic
> > > different queue should be thread-safe, isn't it?
> > >
> > > I'm using dpdk 18.11.2, OS is centos 7.6 and NIC is MLX CX-5.
> > >
> > > I really appreciate it if anyone can help!!

I think you might have confused base RSS and rte_flow RSS.
The base RSS is about spreading incoming across all receive queues.
This is the part in rx_add_conf.

The flow RSS is about spreading matching flows (based on pattern) across a
restricted subset of queues.

My recommendation is use one or the others. Don't use base RSS and rte_flow
at the same time (it doesn't make sense).


More information about the users mailing list