[发明专利]一种基于Marvell交换芯片在获取报文源端口时CPU高效处理方法有效
申请号: | 201810076454.5 | 申请日: | 2018-01-26 |
公开(公告)号: | CN108173699B | 公开(公告)日: | 2021-04-02 |
发明(设计)人: | 黄准;王利;张颖;张美青 | 申请(专利权)人: | 武汉光迅科技股份有限公司 |
主分类号: | H04L12/24 | 分类号: | H04L12/24;H04L29/06 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 鲁力 |
地址: | 430205 湖北省*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 marvell 交换 芯片 获取 报文 端口 cpu 高效 处理 方法 | ||
本发明提供一种基于Marvell交换芯片在获取报文源端口时CPU高效处理方法。本发明在Linux内核收包流程中,在上送协议栈处理之前,对于带有DSA tag的协议报文,在从DSA tag中获取到报文的源端口信息之后,将DSA tag替换成VLAN tag,并将源端口设置为VLAN id,应用层协议只接收带有VLAN tag的报文,即协议报文,报文中的VLAN id即为报文源端口;对于不需要获取源端口信息的数据报文,在上送协议栈处理之前,可以直接去掉DSA tag,通过这种方式实现在Linux内核收包和应用层协议收包都可以更加高效率地处理需要获取源端口的协议报文。
技术领域
本发明提供一种基于Marvell交换芯片在CPU端构建上层通信协议过程中,对同时处理需要获取源端口信息的协议报文和不需要源端口信息的数据报文时,CPU高效率的处理方法。
背景技术
在数据通信设备中,一些特殊的数据报文和协议报文都需要通过交换芯片上到CPU进行相应的处理。对于以EAPS环网检测协议为代表的一类协议报文上送CPU前需要加入报文进入交换芯片的入端口ID信息,EAPS协议在处理时报文的端口信息将作为判断是否环路的重要标志信息。而以带内网管报文为代表的数据文需要保持报文不作任何修改的给到网管模块进行处理。
因受Marvell交换芯片功能限制,不支持直接针对EAPS协议报文做入端口信息标记功能,而是提供了一种基于端口的DSA tag功能(如图3所示)。如图1所示,在和CPU相连的端口6上使能DSA tag功能之后,从6端口发出到CPU的所有报文都会被打上4个字节的DSAtag(如图2所示),其中有报文源端口信息,以满足需要获取报文源端口的协议处理流程需求。
由于带有DSA tag的报文在Linux内核的协议栈中不能被识别和处理,所以需要在Linux内核收包流程中,在送到协议栈之前对DSA tag做出处理。
目前常用的处理流程需要包含Linux内核的协议栈前处理和应用层收包处理两个部分:
常规Linux内核的协议栈前处理包含以下步骤(如图4所示):
1、CPU收到交换芯片上送的报文后,首先需解析报文,通过关键字判断是协议报文还是数据报文;
2、对于普通的数据报文(例如网管报文),由于不需要获取报文源端口信息,可以直接去掉4个字节的DSA tag,再通过Linux内核协议栈上送到网管模块处理;
3、对于EAPS等协议报文首先需要解析到DSA tag中的报文源端口信息;
4、将源端口信息附加到协议报文Payload的特定字段中;
5、去掉DSA tag,再通过Linux内核协议栈上送到应用协议(EAPS)处理(如图6所示);
常规应用层收包处理包含以下步骤(如图5):
1、应用层需二次解析报文,通过关键字判断是网管数据报文还是协议报文,分别送到协议处理模块和网管模块;
2、网管模块收到网管数据报文后,按网管流程进行解析处理;
3、应用协议收到协议报文后,解析协议报文Payload,到特定的字段中获取报文源端口信息。
4、继续协议处理流程。
发明内容
本发明的上述技术问题主要是通过下述技术方案得以解决的:
一种基于Marvell交换芯片在获取报文源端口时CPU高效处理方法,其特征在于:上送协议栈处理时,将带有DSA tag后缀的协议报文,替换为VLAN tag后缀,再将源端口信息写入到VLAN id中,最后上送协议栈走协议处理流程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉光迅科技股份有限公司,未经武汉光迅科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810076454.5/2.html,转载请声明来源钻瓜专利网。