[发明专利]多重网络封包的处理方法有效
申请号: | 200810146313.2 | 申请日: | 2008-08-25 |
公开(公告)号: | CN101662416A | 公开(公告)日: | 2010-03-03 |
发明(设计)人: | 林永彧;欧阳士庭;陈昱志 | 申请(专利权)人: | 凌阳科技股份有限公司 |
主分类号: | H04L12/56 | 分类号: | H04L12/56;H04L29/06 |
代理公司: | 北京市柳沈律师事务所 | 代理人: | 李晓舒 |
地址: | 中国台*** | 国省代码: | 中国台湾;71 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 多重 网络 封包 处理 方法 | ||
技术领域
本发明是有关于一种网络封包的处理方法,特别是有关于一种在使用简易网络协议堆栈的环境下,处理多重网络封包的方法。
背景技术
现行的网络协议堆栈(TCP/IP stack)包括完整网络协议堆栈以及简易网络协议堆栈两种。在完整网络协议堆栈中,以太网络驱动程序层与网络协议堆栈层以队列(queue)的方式各自维持一个网络封包队列,且唯有在取得系统执行权时才能进一步地对队列中的网络封包执行对应动作。使用完整网络协议堆栈的好处在于层级划分明确,但相对来说也需占用较多的内存空间并消耗较高的处理器资源。除此之外,要维持两个网络封包队列就必须依赖于操作系统的运作,同时也需要多线程环境的支持。
然而,对无操作系统(non-OS)的嵌入式系统来说,必须使用简易网络协议堆栈以克服内存大小与处理器频率等硬件方面的限制。在简易网络协议堆栈的网络协议堆栈层中,将不再透过队列的方式存放网络封包,取而代之的是一整块缓存内存(buffer)。基本上,在以太网络驱动程序层收到一个网络封包时,便会立刻将网络封包复制到缓存内存,接着由网络协议堆栈层对缓存内存中的网络封包进行处理。简而言之,简易网络协议堆栈一次只能收取并处理一个网络封包。
在实务设计上,嵌入式系统是透过网络卡这类网络装置来连接网络。当网络卡为外围控制器接口(Peripheral Controller Interface,PCI)时,由于PCI接口可以产生中断信号,因此网络卡在每次收到一个网络封包时,便能对系统发出中断信号,以确保网络封包能够正确地从以太网络驱动程序层复制到网络协议堆栈层。但当网络卡为通用串行总线(Universal Serial Bus,USB)接口或安全数字输入输出(Secure Digital Input/Output,SDIO)接口时,由于这两种接口无法产生中断动作,因而必须由系统本身向网络卡要求数据。正因如此,无法控制网络卡传送给系统的网络封包数量。
针对上述情况,可先将所有的网络封包一并存放在缓存内存,接着再个别进行封包解析动作。由于大部分的网络封包帧格式都具有封包长度信息,而即便不具有封包长度信息,只要网络封包符合特定网络协议规范,那么也会有固定的封包长度。据此,只要在解析缓存内存中的网络封包之前先从帧标头取得封包长度,便能正确无误地对网络封包进行处理。然而,并非所有的网络封包都会符合网络协议规范。对于不符合网络协议规范且帧标头缺乏封包长度信息的网络封包,由于无法正确掌握其封包长度,因此在网络协议堆栈层准备从缓存内存中取得网络封包时,便相当容易因误判网络封包在缓存内存中的起始地址,进而造成封包遗失或是系统异常等问题。
发明内容
有鉴于此,本发明提供一种多重网络封包的处理方法,在使用简易网络协议堆栈的环境下支持多重网络封包的处理,据以确保系统的稳定性与可靠度。
为达到上述及其它目的,本发明提出一种多重网络封包的处理方法,适用于连接至网络的嵌入式系统,此嵌入式系统包括网络装置驱动程序模块与简易网络协议堆栈(TCP/IP stack)模块。此方法首先由网络装置驱动程序模块接收数个网络封包。在网络装置驱动程序模块每次将其中一个网络封包复制到简易网络协议堆栈模块的缓存单元时,将被复制的网络封包的封包长度记录在封包信息列表。然后,简易网络协议堆栈模块根据封包信息列表中的封包长度,依序由缓存单元中对应取出网络封包,并对其进行封包解析处理。
在本发明的一个实施例中,其中网络装置驱动程序模块每次将其中一个网络封包复制到缓存单元的步骤包括由缓存单元的最前端开始依序存放网络封包。而依序存放网络封包的步骤则包括取得存放在缓存单元中最后一个网络封包的结束地址,以及接续结束地址来存放下一个要复制到缓存单元的网络封包。
在本发明的一个实施例中,其中将被复制的网络封包的封包长度记录到封包信息列表的步骤,更包括更新已复制到缓存单元的所有网络封包的封包总数。
在本发明的一个实施例中,其中在网络装置驱动程序模块每次将其中一个网络封包复制到缓存单元时,更包括将被复制的网络封包在缓存单元中的起始地址记录在封包信息列表。
在本发明的一个实施例中,其中在简易网络协议堆栈模块由缓存单元中取出对应的网络封包的步骤之前,更包括在网络装置驱动程序模块将全部的网络封包复制到缓存单元后,将系统执行权由网络装置驱动程序模块切换至简易网络协议堆栈模块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于凌阳科技股份有限公司,未经凌阳科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810146313.2/2.html,转载请声明来源钻瓜专利网。