我正在购买25Gbe卡,并且目前正在评估该卡,我似乎无法接收25G流的64字节UDP或TCP数据包流量。 dpdk-pktgen声称它正在使用我设置的尽可能多的内核,从而导致数据包丢失。最难发现的是数据包进入MAC但是当它们到达物理层本身时被丢弃的原因。这让我相信没有正确处理数据包接收的分散。让我相信在dpdk下,设备没有发生RSS。 IRQ分散在系统中使用的核心之间,这些核心已被分析以防止内核在其上面放置作业,所有需要的调整似乎表明它已经完成,并且事情应该继续进行,但是不能超越这个障碍。
命令运行以初始化dpdk-pktgen:
NN
我阅读了DPDK RSS提供的文档,但未能看到任何更改。我已经改变了dpdk源代码“$ RTE_SDK / drivers / net / mlx5 / mlx5-rss.c”中包含的实际驱动程序,并添加了它建议的密钥,我还操纵了pktgen-port-cfg.c文件使用相同的说明更改下面的代码片段
RTE_SDK=../dpdk_Src/share/dpdk/ sudo -E ./app/build/pktgen -c 0x555555555 -n 8 w 03:00.1 -- -T -m '[2-28:29-33].0' -N -P
更改rx_adv_conf以反映我想要使用的密钥,即
const struct rte_eth_conf default_port_conf = {
.rxmode = {
.split_hdr_size = 0,
.header_split = 0, /**< Header Split disabled. */
.hw_ip_checksum = 0, /**< IP checksum offload disabled. */
.hw_vlan_filter = 0, /**< VLAN filtering enabled. */
.hw_vlan_strip = 0, /**< VLAN strip enabled. */
.hw_vlan_extend = 0, /**< Extended VLAN disabled. */
.jumbo_frame = 0, /**< Jumbo Frame Support disabled. */
.hw_strip_crc = 0, /**< CRC stripping by hardware disabled. */
},
.rx_adv_conf = {
.rss_conf = {
.rss_key = NULL,
.rss_key_len = 0,
.rss_hf = ETH_RSS_IP,
},
},
.txmode = {
.mq_mode = ETH_MQ_TX_NONE,
}, };
事情是文档似乎表明,只要设置了rss_hf参数,那么它将使用RSS,如果没有明确说明,则在内部定义。如果是这种情况,有没有办法验证pktgen,ethtool或任何其他工具中的每环接收率?
答案 0 :(得分:0)
ETH_RSS_IP表示我们使用源IP和目标IP散列流。因此,为了利用RSS,您生成的数据包应具有不同的源/目标IP。