一种基于网卡驱动的数据包处理优化方法

文档序号:8004591阅读:292来源:国知局
一种基于网卡驱动的数据包处理优化方法【专利摘要】本发明公开了一种基于网卡驱动的数据包处理优化方法,该方法包括网络数据包从网卡进入,由解析引擎解析数据包头部,得到头部属性;得到头部属性跟过滤列表中的每一项过滤规则匹配;如果匹配成功,那么把网络数据包送入规则中指明的数据缓冲区描述符环;如果没有匹配成功,就将数据送入一个默认的数据缓冲区描述符环中;等待网卡接收中断,执行中断事件处理程序;将匹配规则成功的数据环中的数据提交到上层协议栈,默认环中的数据直接发送至发送环;等待网卡发送中断,执行中断事件处理程序;将发送环中的数据发送出去;接下来的数据包重复上述步骤;本发明解决嵌入式设备对不感兴趣数据处理,减轻嵌入式设备网卡工作负荷,加快感兴趣数据的处理。【专利说明】一种基于网卡驱动的数据包处理优化方法【
技术领域
】[0001]本发明涉及嵌入式驱动开发【
技术领域
】,特别涉及一种基于网卡驱动的数据包处理优化方法。【
背景技术
】[0002]20世纪末,随着信息技术与网络技术的迅速发展,计算机技术已经进入后PC时代。大量的计算机应用系统从传统的办公管理、科学计算、企业管理等领域,逐渐渗透到人们的日常生活的方方面面,形成当前最热门的嵌入式系统领域。[0003]经过几十年的发展,嵌入式系统已经在很大程度改变了人们的生活、工作和娱乐方式,而且这些改变还在加速。嵌入式系统具有无数的种类,每类都具有自己独特的个性。即使不可见,嵌入式系统也无处不在。嵌入式系统在很多产业中得到了广泛的应用并逐步改变着这些产业,包括工业自动化、国防、运输和航天领域。[0004]网络信息技术的不断发展,嵌入式网络设备也层出不穷,各种嵌入式网络设备根据自身的特点完成特定的任务。由于各种网络嵌入式设备功能不同,决定了他们各自对网络数据包的感兴趣程度是不同的。按照传统的网卡驱动来说,网卡接收到数据之后校验数据包的准确性后就把数据包放入接受缓冲区,然后等待接受中断事件响应函数把数据送入上层的协议栈,然后由协议栈在判断数据包是否需要丢弃或者是转发。这样一来如果有大量的嵌入式网络设备部感兴趣的数据包进入网卡,那么之后要花很多的时间和资源区处理这些数据包,这不仅加大了嵌入式网络设备的负担,而且对感兴趣的数据处理也会有一定的延时。而本发明能够很好地解决上面的问题。【
发明内容】[0005]本次发明是针对Freescale的eTSEC(enhancedthree-speedEthernetcontroller)提出了一种基于网卡驱动的数据包处理优化方法,其目的在于实现网卡的数据包底层转发,解决了嵌入式设备对不感兴趣数据的处理,减轻嵌入式设备的网卡工作负荷,加快了感兴趣数据的处理,从而达到优化的目的。[0006]本发明解决其技术问题所采取的技术方案是:本发明提出了一种基于网卡驱动的数据包处理优化方法,主要针对的是Freescale的eTSEC网络控制器的驱动程序进行优化,其包括如下步骤:[0007]步骤I)网络数据包从网卡进入,由解析引擎解析数据包头部,得到头部属性;[0008]步骤2)得到的头部属性跟过滤列表中的每一项过滤规则匹配;[0009]步骤3)如果匹配成功,那么把网络数据包送入规则中指明的数据缓冲区描述符环;[0010]步骤4)如果没有匹配成功,就将数据送入一个默认的数据缓冲区描述符环中;[0011]步骤5)等待网卡接收中断,执行中断事件处理程序;[0012]步骤6)将匹配规则成功的数据环中的数据提交到上层协议栈,默认环中的数据直接发送至发送环;[0013]步骤7)等待网卡发送中断,执行中断事件处理程序;[0014]步骤8)将发送环中的数据发送出去;[0015]步骤9)接下来的数据包重复上述步骤I到步骤8。[0016]本发明将网络数据一分为二,感兴趣和不感兴趣数据分开放;本发明把不需要的数据转发,而不是直接丢弃。[0017]如图1所示,本发明的数据缓冲区是用来存储接收和发送的数据帧,数据缓冲区描述符包含了eTSEC发送和接收数据帧的所有必要的信息。每一个缓冲区描述符都包含一个状态字段,一个长度字段和一个指针字段。数据缓冲区描述符的状态字段表示的是数据帧的状态信息,长度字段表示的是数据帧的长度信息,指针字段是数据帧存储在内存中的实际地址。每个数据缓冲区描述符头尾相连组成数据缓冲区描述符环,每个发送环或者是接受环至少要有4个缓冲区描述符,对发送环来说每个发送环的最大缓冲区描述符是65536个。状态字段有一位是表示的是缓冲区的状态,其他的位是给eTSEC提供状态和控制信息的。[0018]由于数据缓冲区描述符中没有指向下一个数据缓冲区描述符的指针,所以数据缓冲区描述符在内存中存储必须是按照顺序存储。eTSEC只要每次移动相同的字节数就能读取下一个缓冲区描述符。在最后一个缓冲区描述符里需要一个特殊的标识位,当eTSEC读到这个标识位的时候从新把指针指向第一个缓冲区描述符的地址处。[0019]本发明建立一个过滤表,驱动程序根据数据帧的一些属性建立一些过滤规则存储在一个过滤表中,过滤表总共有256个单元,也就是可以容纳256条过滤规则。数据帧从网卡进来后先由解析引擎解析协帧头的各项属性信息,例如TCP的端口号,或者是VLAN号等等。头部信息解析出来后就会去匹配过滤表中的规则,从第一条过滤规则开始匹配,一旦匹配成功就停止匹配然后把数据帧放入相应的环中,如果没有匹配到规则,那么必须为数据帧分配一个默认的环,把数据放入默认的环中。[0020]把所有的网络数据都按照过滤规则分类,感兴趣的数据和不感兴趣的数据分别放在了不同的环中。最后只要在接收中断处理事件函数中把有感兴趣的数据帧提交给上层协议栈,但是不感兴趣的数据帧就直接发送至发送环。具体的数据流向如图2所示。[0021]有益效果:[0022]1、本发明减轻了嵌入式设备的网卡工作负荷。[0023]2、本发明加快了感兴趣数据的处理效率。【专利附图】【附图说明】[0024]图1是缓冲区描述符环。[0025]图2是网络数据流向示意图。[0026]图3是本发明的流程图。【具体实施方式】[0027]下面通过结合说明书附图,进一步说明本发明的技术方案。[0028]实施例1[0029]如图1所示,本发明的数据缓冲区是用来存储接收和发送的数据帧,数据缓冲区描述符包含了eTSEC发送和接收数据帧的所有必要的信息。每一个缓冲区描述符都包含一个状态字段,一个长度字段和一个指针字段。数据缓冲区描述符的状态字段表示的是数据帧的状态信息,长度字段表示的是数据帧的长度信息,指针字段是数据帧存储在内存中的实际地址。每个数据缓冲区描述符头尾相连组成数据缓冲区描述符环,每个发送环或者是接受环至少要有4个缓冲区描述符,对发送环来说每个发送环的最大缓冲区描述符是65536个。状态字段有一位是表示的是缓冲区的状态,其他的位是给eTSEC提供状态和控制信息的。[0030]由于数据缓冲区描述符中没有指向下一个数据缓冲区描述符的指针,所以数据缓冲区描述符在内存中存储必须是按照顺序存储。eTSEC只要每次移动相同的字节数就能读取下一个缓冲区描述符。在最后一个缓冲区描述符里需要一个特殊的标识位,当eTSEC读到这个标识位的时候从新把指针指向第一个缓冲区描述符的地址处。[0031]本发明建立一个过滤表,驱动程序根据数据帧的一些属性建立一些过滤规则存储在一个过滤表中,过滤表总共有256个单元,也就是可以容纳256条过滤规则。数据帧从网卡进来后先由解析引擎解析协帧头的各项属性信息,例如TCP的端口号,或者是VLAN号等等。头部信息解析出来后就会去匹配过滤表中的规则,从第一条过滤规则开始匹配,一旦匹配成功就停止匹配然后把数据帧放入相应的环中,如果没有匹配到规则,那么必须为数据帧分配一个默认的环,把数据放入默认的环中。[0032]把所有的网络数据都按照过滤规则分类,感兴趣的数据和不感兴趣的数据分别放在了不同的环中。最后只要在接收中断处理事件函数中把有感兴趣的数据帧提交给上层协议栈,但是不感兴趣的数据帧就直接发送至发送环。具体的数据流向如图2所示。[0033]如图3所示,本发明提出了一种基于网卡驱动的数据包处理优化方法,其包括如下步骤:[0034]步骤I)网络数据包从网卡进入,由解析引擎解析数据包头部,得到头部属性;[0035]步骤2)得到的头部属性跟过滤列表中的每一项过滤规则匹配;[0036]步骤3)如果匹配成功,那么把网络数据包送入规则中指明的数据缓冲区描述符环;[0037]步骤4)如果没有匹配成功,就将数据送入一个默认的数据缓冲区描述符环中;[0038]步骤5)等待网卡接收中断,执行中断事件处理程序;[0039]步骤6)将匹配规则成功的数据环中的数据提交到上层协议栈,默认环中的数据直接发送至发送环;[0040]步骤7)等待网卡发送中断,执行中断事件处理程序;[0041]步骤8)将发送环中的数据发送出去;[0042]步骤9)接下来的数据包重复上述步骤I到步骤8。[0043]本发明将网络数据一分为二,感兴趣和不感兴趣数据分开放;本发明把不需要的数据转发,而不是直接丢弃。[0044]实施例2[0045]假设有一台嵌入式网络设备,仅对TCP协议的80端口的数据感兴趣,其余的数据都不感兴趣,那么【具体实施方式】为:[0046](I)首先建立过滤表,过滤的数据帧头属性是TCP的80端口,只要是TCP端口的数据送[0047]O号环,其余的数据送I号环:[0048]LOCALSTATUSetsecFilerLoad(VXB_DEVICEJDpDcv)IETSECDRVCTRL:i:pDrvCtrl;ETSECFILERENTRYlabic[4];ETSEC—FILER—ENTRY*p;pDrvClrl=pDcv->pDrvCtrl;bzero((char”table,Sizeof(Lablc));p=:&tablc[0];P-XllcrEnable=ETSECFILERENABLE;p->rqrar.details.tablelndex=0;p->rqfcr.val=0x0000028B;p->rqfpr.val=0x00000006;/*PlaccTCPportequalsto80IralTicinqueue0*/p=&tablc[l];`P-XllcrEnablc=ETSECFILERENABLE;p->rqfar.details.tablclndcx=I;[0049]【权利要求】1.一种基于网卡驱动的数据包处理优化方法,其特征在于:所述方法包括如下步骤:步骤I)网络数据包从网卡进入,由解析引擎解析数据包头部,得到头部属性;步骤2)得到的头部属性跟过滤列表中的每一项过滤规则匹配;步骤3)如果匹配成功,那么把网络数据包送入规则中指明的数据缓冲区描述符环;步骤4)如果没有匹配成功,就将数据送入一个默认的数据缓冲区描述符环中;步骤5)等待网卡接收中断,执行中断事件处理程序;步骤6)将匹配规则成功的数据环中的数据提交到上层协议栈,默认环中的数据直接发送至发送环;步骤7)等待网卡发送中断,执行中断事件处理程序;步骤8)将发送环中的数据发送出去;步骤9)接下来的数据包重复上述步骤I到步骤8。2.根据权利要求1所述的一种基于网卡驱动的数据包处理优化方法,其特征在于:所述方法将网络数据一分为二,感兴趣和不感兴趣数据分开放。3.根据权利要求1所述的一种基于网卡驱动的数据包处理优化方法,其特征在于:所述方法把不需要的数据转发,而不是直接丢弃。4.根据权利要求1所述的一种基于网卡驱动的数据包处理优化方法,其特征在于:所述方法的数据缓冲区用来存储接收和发送的数据帧。5.根据权利要求1所述的一种基于网卡驱动的数据包处理优化方法,其特征在于:所述方法建立一个过滤表,驱动程序根据数据帧的一些属性建立一些过滤规则存储在一个过滤表中,过滤表总共有256个单元。【文档编号】H04L29/06GK103441951SQ201310360294【公开日】2013年12月11日申请日期:2013年8月19日优先权日:2013年8月19日【发明者】陈丹伟,马晓丹申请人:南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1