[发明专利]一种网络报文处理方法及设备有效
申请号: | 201310729258.0 | 申请日: | 2013-12-25 |
公开(公告)号: | CN103731345B | 公开(公告)日: | 2017-11-24 |
发明(设计)人: | 楚嘉隆 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 |
主分类号: | H04L12/70 | 分类号: | H04L12/70;H04L29/06 |
代理公司: | 杭州千克知识产权代理有限公司33246 | 代理人: | 周希良 |
地址: | 201616 上海市松*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 网络 报文 处理 方法 设备 | ||
技术领域
本发明适用于网络设备技术领域,尤其涉及一种网络报文处理方法及设备。
背景技术
现在阶段类似于二层或三层管理型交换机在Linux平台上的开发过程经常会遇到一个问题:对于某些二层网络协议,如RSTP(rapid spanning Tree Protocol,快速生成树协议),或GVRP(Generic Attribute Registration Protocol,通用属性注册协议)等的开发,上层软件如何去获知其协议报文硬件上的接收端口等底层信息;一些芯片厂商给出的解决方法是:让交换芯片修改发往CPU(Central Processing Unit,中央处理器)的报文结构,在报文类型字段的前面插入若干个字节的厂商标识以包含该报文经过交换芯片之后的底层信息(接收端口,接收原因,Qos等)。但这同时又带来了另一个开发上面的难题,因为芯片厂商的标识改变了报文的标准结构,所以导致Linux的网络协议栈无法正常的识别和处理该类报文。
目前在交换机上,二层协议开发最常用的报文处理方法有两种:
一种方法是将附带有芯片厂商标识的报文直接送上协议栈,上层应用以原始套接字接收之后移除厂商标识,并检查是否为属于该协议的报文,然后再解析厂商标识涵盖的相关信息来进行后续处理。这样做的好处就是底层开发简单,但坏处也很明显:上层应用过多的接收不属于自己协议的报文,导致产生很多的空操作,浪费CPU资源;且不同的开发人员对厂商标识的理解可能也不一样,导致协议开发连续性不是很好;再者,协议开发过程对报文的收发处理都不能使用标准模式去处理,加大了软件开发的难度和工作量。
另一种方法是底层驱动将所有报文的芯片厂商标识移除,并解析成上层应用所关注的信息。然后将这些信息存储于SKB结构体中,再配合以特定的接口函数来获取。这种方法相比于上一种的好处在于:对于不关注底层信息的上层应用开发,不再受到厂商标识的干扰,且不同的报文处理采用不同的接口函数,各上层应用产生空操作的机率很小。但是该方法也同样存在一定的问题:因为芯片厂商标识移除处理之后的信息存储于SKB结构体之中,上层应用只能通过一些特定的方式或者自定义的函数接口才能获取到这部分信息,而这些函数接口需要开发者自行定义或修改内核中相关网络协议栈处理部分才能可行,这很大程度的增加了之后协议移植的难度。
如上所述,现有二层协议开发对附带厂商标识的报文处理方法主要存在以下问题:1)附带的厂商标识改变了网络报文的基本结构,导致系统网络协议栈无法正常识别而不能采用标准的报文处理方式来进行收发处理,加大了上层应用的开发难度与工作量;2)上层应用获取厂商标识所提供底层信息的方式复杂,且内核部分函数接口的增加与修改需要相对较高的技术水平与经验,不利于应用和协议在各项目之间的移植,导致代码通用性下降。
发明内容
本发明的目的在于,提供一种网络报文处理方法,解决以上技术问题;
本发明的目的还在于,提供一种网络报文处理设备,解决以上技术问题。
本发明所解决的技术问题可以采用以下技术方案来实现:
一种网络报文处理方法,包括网络报文接收步骤和网络报文发送步骤,其中,所述网络报文接收步骤包括:
网卡驱动模块从DMA接收网络报文;
当从DMA接收到的报文类型存在注册进程,解析和移除从DMA接收到的网络报文中的厂商标识;
将从DMA接收到网络报文的厂商标识的解析结果和经移除厂商标识的网络报文发送至用户层。
优选地,当从DMA接收到的报文类型存在注册进程,解析和移除从DMA接收到的网络报文中的厂商标识,具体是:
检查从DMA接收到的报文类型是否存在已注册进程;
当所述从DMA接收到的报文类型存在已注册进程,将从DMA接收到的报文中的厂商标识解析成上层软件所需要的数据结构体,将移除厂商标识的网络报文转换成以太网格式报文。
优选地,所述将从DMA接收到的报文中的厂商标识解析成上层软件所需要的数据结构体,具体是解析报文中的厂商标识,获得所述从DMA接收到的网络报文的底层信息,将所述底层信息组合成上层软件所需要的数据结构体。
优选地,所述将从DMA接收到网络报文的厂商标识的解析结果和经移除厂商标识的网络报文发送至用户层,具体是:
将从DMA接收到网络报文的厂商标识的解析结果和经移除厂商标识的网络报文组合成一个数据段;
通过netlink套接字将所述数据段发送至已注册的用户层进程。
优选地,所述网络报文发送步骤包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310729258.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种智能阴茎环
- 下一篇:一种基于眼底成像系统的视网膜定位装置