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

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

你可能感兴趣的:(DPDK2.2.0开发杂记一—— 网口抓包分片禁止及MTU配置)