DPDK2.2.0开发杂记一—— 网口抓包分片禁止及MTU配置

本文介绍DPDK网络接口配置的两个关键优化:一是通过设置enable_scatter=0禁用网口抓包分片,避免大包分片处理带来的额外开销;二是设置MTU值支持更大的数据包,通过调整max_rx_pkt_len参数来防止包被丢弃。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 禁止网口抓包分片

        DPDK收发包是基础核心模块,网卡需要应用进程进行配置并启动,测试过程中发现DPDK驱动igb_uio抓包可能会出现mbuf串。当网络包比较大时,DPDK驱动会把包进行分片放到一组Mbuf中并进行链接成串,应用进程从接收队列中取出的可能就是Mbuf串,如果要进行深层解析需要应用进程自己进行重组,给应用进程造成负担。在实际应用中我们可以增大Mbuf大小禁止掉DPDK的驱动功能,以简化应用进程处理逻辑并减轻其运行压力。

禁止该功能需要设置参数enable_scatter = 0。

2. 设置MTU

        和libpcap抓包一样,我们可以设置支持最大抓包长度(MTU)。DPDK默认MTU值为1500,即使Mbuf size再大,如果包长大于MTU,该包都将会被丢弃并被计数。 增大这个值需要设置参数jumbo_frame    = 1以支持大数据包,同时设置max_rx_pkt_len = MBUF_SIZE - 128。注意max_rx_pkt_len不能设置成与Mbuf size一样,否则在初始化接口eth_igb_rx_init()里面会判断并自动打开抓包分片,我们一般设置为比Mbuf size小128字节。   


附配置参数如下:

struct  rte_eth_conf st_port_conf = {

/**该参数设置网口连接速率, 可以设置为ETH_LINK_SPEED_10[0|00|000], 或者 ETH_LINK_SPEED_AUTONEG 作为自适应模式 */       .link_speed = ETH_LINK_SPEED_AUTONEG;

            .rxmode = {

                 /**该参数设置收包分发模式RSS,配合rss_conf 可以实现上下行对称分发 */

                .mq_mode    = ETH_MQ_RX_RSS,
                .max_rx_pkt_len = MBUF_SIZE - 128,
                .split_hdr_size = 0,
                .split_hdr_size = 0,
                .header_split   = 0, /**< Header Split disabled */
                .hw_ip_checksum = 1, /**< IP checksum offload enabled */
                .hw_vlan_filter = 0, /**< VLAN filtering disabled */
                .jumbo_frame    = 1, /**< Jumbo Frame Support disabled */
                .hw_strip_crc   = 0, /**< CRC stripped by hardware */
                .enable_scatter = 0, /**< Disable scatter packets rx handler */
            },
            .rx_adv_conf = {
                .rss_conf = {
                    .rss_key = rss_intel_key,
                    .rss_hf = ETH_RSS_IP,
                },
            },
            .txmode = {
                .mq_mode = ETH_MQ_TX_NONE,
            }

    };


static U8 rss_intel_key[40] = { 
    0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 
    0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 
    0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 
    0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 
    0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 

};


版权声明:本文为博主原创文章,承蒙转载请注明作者和出处https://blog.csdn.net/zangchang/article/details/80079400

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值