DPDK2.2.0开发杂记一—— 网口抓包分片禁止及MTU配置_zangchang的博客-程序员资料_dpdk mtu

技术标签: enable_scatter max_rx_pkt_len  

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zangchang/article/details/80079400

智能推荐

最强Android教程!掌握这些Android开发热门前沿知识,赶紧收藏!_左夜天的博客-程序员资料_android 实用前沿技术

前言这些题目是网友去百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。欢迎一线公司员工以及网友提交面试题库,欢迎留言。网上的都是按照公司划分的,想找具体某一方面的知识点有点不好找,我这里就根据知识点分门别类的整理了一下,想看哪一块可以快速找到。阿里巴巴面试问题还记得一些,一部分已经忘记了,为了防止再忘记,所以写出来。1:你是如何理解Android操作系统的。2:是否熟悉framework层,如果熟

revit 转换ifc_导出 IFC 文件以使用 BIM 软件进行编辑_瑞士鲁迅的博客-程序员资料

内容在编辑 BIM IFC 文件之前,了解 Revit 导出设置。用户建筑师、工程师、设计师、项目经理、BIM 经理。方法1. 定义要导出的图元在 Revit 项目中,定义专用于导出 IFC 文件的三维视图。在此视图中,您可以控制对编辑文件的团队成员可见的图元。请勿包含编辑软件不支持的类别,例如 HVAC 图元。最好在协调模型中共享这些类别。2. 检查 IFC 导出映射文件选择“文件”&gt;“导...

linux系统实验shell程序设计,实验三-shell脚本程序设计_李苦李的博客-程序员资料

《实验三-shell脚本程序设计》由会员分享,可在线阅读,更多相关《实验三-shell脚本程序设计(10页珍藏版)》请在人人文库网上搜索。1、实 验 报 告课程名称 Linux系统实践 实验项目 LINUX SHELL脚本程序设计 实验仪器 PC 系 别 计算机学院 专 业 网络工程 班级/学号 网1702/2017011463 学生姓名 孟启贤 实验日期 4.15 成 绩 指导教师 李艳平 实验...

Best Practices for Speeding Up Your Web Site_longware_新浪博客_龙威的博客-程序员资料

Minimize HTTP RequestsUse a Content Delivery NetworkAdd an Expires or a Cache-Control HeaderGzip ComponentsPut Stylesheets at the TopPut Scripts at the BottomAvoid CSS Expre...

【安卓开发系列 -- APP】APP 性能优化 -- 启动优化_奋斗企鹅CopperSun的博客-程序员资料_应用启动性能优化

【安卓开发系列 -- APP】APP 性能优化 -- 启动优化【1】APP 启动优化的必要性原因 : 用户希望应用能够及时响应并快速加载,启动时间长的 APP 不能满足该期望;启动太慢的结果 : 体验效果差,用户流失,产品失败;【2】启动流程以及分类【2.1】开机启动流程注意,该流程图所示的启动过程为系统创建并启动应用的过程,一般不需要优化;【2.2】冷启动冷启动指应用从头开始启动,系统进程在冷启动后才创建应用进程,发生冷启动的情况包括应用自设备启动后或系统终止应用后.

关于集合Map的总结_海贼王_路飞的博客-程序员资料_怎么打印map集合

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------1、体系结构Map ├Hashtable ├HashMap (重点)└TreeMap 2、Mapa) 添加i. Put(K key,V value)ii. putAll(Map?Extends K,?extends V> m)b) 删除i. Clear(

随便推点

PostMessage()_丫丫afc的博客-程序员资料

PostMessage函数PostMessage是WindowsAPI(应用程序接口)中的一个常用函数,用于将一条消息放入到消息队列中。消息队列里的消息通过调用GetMessage和PeekMessage取得。函数功能该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。消息队列里的消息通过调用GetMessage和PeekMess...

如何在Ubuntu中安装rpm包_This is bill的博客-程序员资料

原本是为了装flash player但是下载下来的是rpm的包, 所以有这个问题 解决方案Normally you install software or deb packages on Ubuntu/Mint linux via Synaptic, Ubuntu Software Center/ppa, or an apt-get command from the termina...

解决raise child_exception OSError: [Errno 2] No such file or directory的方法_DCGKCUF的博客-程序员资料_exception oserror: (2, 'no such file or directory'

如果你在执行python相关的程序时,出现如下的错误.....python2.5/subprocess.py", line 1079, in _execute_child     raise child_exception OSError: [Errno 2] No such file or directory那你就一定得检查与此相关的命令是否在你的$PATH路径下,如果不在,请一

一网打尽:贝佐斯与亚马逊时代_历史可以倒流的博客-程序员资料

全书主要描述了亚马逊从1995年刚开始成立时的一家网上书店到发展到现在成为集网上购物,云计算,Kindle业务的一家巨无霸的看似曲折却又似乎是必然的过程。说这个过程曲折,那是因为Amazon在每次想要逃脱外界定义的只是一家在网上卖书的店这个定义时,都不是一帆风顺的,无论是来自外界的阻力,还是内部的压力。而说他必然是因为贝佐斯这个整个亚马逊公司的大脑,一直在追求客户至上,扩张优先,把亚马逊是一家技术

opencart是PHP框架吗,OpenCart框架运行流程介绍_味离的博客-程序员资料

框架运行流程介绍这样的一个get请求http://hostname/index.php?route=common/home 发生了什么?1. 开始执行入口文件index.php。2. require_once(DIR_SYSTEM . 'startup.php');做一些php的配置和加载一些类声明,包括系统主框架文件(system/engine下的文件)、一些必用到的helper和library...

Highcharts 前端图表插件_阿远个人博客的博客-程序员资料

Highcharts 支持将图片下载成各种格式 Highcharts官网:https://www.hcharts.cn/download<div id="container" style="min-width:400px;height:400px"></div><script src="https://img.hcharts.cn/jquery/jquery-1.8.3.min.js"></

推荐文章

热门文章

相关标签