专利名称:一种报文查询方法及装置的制作方法
技术领域:
本发明涉及通讯技术领域,尤其涉及一种报文查询方法及装置。
背景技术:
路由器芯片处理的一个基本对象就是报文,很多情况下根据优先级不同,又或者 是报文类型不同,会将报文划分为多种流。所有类型报文会共享同一片内部缓存,在将报文写入缓存的同时解析报文类型并 根据类型做不同的处理查询请求,待查询请求返回结果后方能从缓存中读出报文做相应处 理。以下我们简称不同类型的报文为不同的流,查询请求为REQ,返回查询结果为RES。按报文写入缓存顺序发起REQ,REQ处理需要一段时间方能返回RES,处理时长不 固定,在一定范围内波动。相同流之间的REQ_RES是保序的,即先发REQ的报文,先得到RES。 不同流之间的REQ_RES是乱序的,比如流1的报文先发REQ,流2的报文后发REQ,流2的报 文可能先得到RES。相同流需按RES返回顺序处理报文。不同流之间的报文不需保序。某 条流处理REQ时,可能被强制按另一种流的处理。以下这种场景简称为流的Bypass (强制 转换)处理。由于不同流之间的REQ_RES是乱序的,这就造成先写入缓存的报文可能后读 出的情况。对于多流的缓存管理现在常用的方案即是链表管理,每一条流单独维护一个链 表,将流内每个报文在缓存中的地址按写缓存顺序形成串链。链表头指针指向串链的第一 个报文。返回RES时,判定流类型,从相应链表的头指针处获取报文在缓存中的地址,读取 报文,同时将链表头指针指向串链的下一跳。后续RES处理依次类推。在实现本发明过程中,发明人发现现有技术中至少存在如下问题链表管理方案 最大的缺点是无法处理流类型的强制转换。举例说明假设流1与流2 (两种流优先级不 同)各维护一个链表,报文1、2、3、4、5、6依次写入缓存,报文1属于流1,发起REQl ;报文2 亦属流1,发起REQ2。流1报文处理模块依次得到REQ1、REQ2,但REQ2被Bypass为流2, 按流2处理流程走,由于不同流之间的REQ_RES不保序,REQ2的应答RES2可能在RESl前 返回,此时流1链表的头指针与RES2的报文并不对应,链表管理无法处理这种场景。链表 管理方案的另一个缺点就是占用资源多,需维护额外维护一个Free_addr_liSt (存空闲地 址)与链表共享缓存(存链表指针),相对也增加了 Memory(内存)的读写操作,加大了功
^^ ο
发明内容
本发明实施例提供一种报文查询方法及装置,支持多条流缓存管理时的Bykiss 场景,并简化逻辑设计复杂度。一方面,本发明实施例提供了一种报文查询方法,所述方法包括接收报文并将所 述报文写入缓存;发送所述报文的查询请求,所述查询请求包括所述报文的报文头在所述 缓存中的地址信息;接收反馈的查询结果,获取所述查询结果中的包含的所述报文的报文头在所述缓存中的地址信息;根据所述报文的报文头在所述缓存中的地址信息,从所述缓 存中读出所述报文。另一方面,本发明实施例提供了一种报文查询装置,所述装置包括写入单元,用 于接收报文并将所述报文写入缓存;发送单元,用于发送所述报文的查询请求,所述查询请 求包括所述报文的报文头在所述缓存中的地址信息;接收单元,用于接收反馈的查询结果, 获取所述查询结果中的包含的所述报文的报文头在所述缓存中的地址信息;读取单元,用 于根据所述报文的报文头在所述缓存中的地址信息,从所述缓存中读出所述报文。上述技术方案具有如下有益效果因为采用接收报文并将所述报文写入缓存;发 送所述报文的查询请求,所述查询请求包括所述报文的报文头在所述缓存中的地址信息; 接收反馈的查询结果,获取所述查询结果中的包含的所述报文的报文头在所述缓存中的地 址信息;根据所述报文的报文头在所述缓存中的地址信息,从所述缓存中读出所述报文的 技术手段,所以支持多条流缓存管理时的Bykiss场景,并简化了逻辑设计复杂度。相对于 链表管理,去除了空闲地址缓存与链表指针缓存,节省了资源也减少内存的读写操作,符合 低功耗需求。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。图1为本发明实施例一种报文查询方法流程图;图2为本发明实施例缓存写入示意图;图3为本发明实施例收报文后发REQ示意图;图4为本发明实施例另一收报文后发REQ示意图;图5为本发明实施例一种报文查询装置结构示意图;图6为本发明实施例另一种报文查询装置结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。如图1所示,为本发明实施例一种报文查询方法流程图,所述方法包括101、接收报文并将所述报文写入缓存。102、发送所述报文的查询请求,所述查询请求包括所述报文的报文头在所述缓存 中的地址信息。为方便描述缓存管理方案,可以先设定一个应用场景如图2所示,为本发明实施 例缓存写入示意图。1、假设内部缓存位宽为32B(Byte),深度512个地址,总容量为16KB ;
2、入口报文长度不固定,长度范围为20B 9. 6KB ;3、入口报文按优先级不同划分为4种流,流0 流3。可选的,所述寄存器可以为一组512bit的寄存器。所述将接收的报文写入缓存, 可以包括在将接收的报文写入缓存时,按照先进先出缓存(First In First Out, FIFO) 的方式,将所述报文写入缓存。另外,以地址升序循环写入缓存,写满可以翻转。由于在写 报文时按照FIFO方式,地址升序循环写入,写入报文后发送REQ时携带报文头在缓存中的 地址,并随RES返回地址,由此不用维护链表即可保证报文与RES的一一对应关系,支持流 Bypass场景,不论REQ与RES如何乱序也不受影响。可选的,将所述报文写入缓存中的一个地址,将以地址映射点阵图(Bitmap)的形 式表示缓存地址占用情况的寄存器中与所述地址对应的Bitmap位置设置为1,以指示该地 址已占,不允许再写。由于报文缓存的写地址按FIFO式管理,但读地址是混乱的,不能简单 靠读写次数来计算缓存剩余空间,会造成写端口无法感知当前地址是否允许写入。为解决 这个问题,方案中引入BitMap式地址分配。BitMap与报文写入缓存中的地址一一对应,为 0表示空闲,允许写入,为1表示占用,禁写入。103、接收反馈的查询结果,获取所述查询结果中包含的所述报文的报文头在所述 缓存中的地址信息。如图3所示,为本发明实施例收报文后发REQ示意图,其中的hptr为报文的报文 头在缓存中的地址,发REQ时携带该报文头在缓存中的地址,返回RES时将该报文头地址同 时返回。104、根据所述报文的报文头在所述缓存中的地址信息,从所述缓存中读出所述报文。可选的,所述根据所述报文的报文头在所述缓存中的地址信息,从所述缓存中读 出所述报文后,所述方法还可以包括将所述寄存器中与所述地址对应的Bitmap位置清零。如图4所示,为本发明实施例另一收报文后发REQ示意图,对于Bypass的流,不需 要特殊处理,只需使用RES携带的地址读出报文,送至Bypass所属流通道即可。本发明实施例支持多条流共享缓存管理,并支持流Bypass场景。FIFO方式写地址 管理,结合Bitmap方式地址分配,大大简化逻辑设计复杂度;相对于链表管理,去除了空闲 地址缓存与链表指针缓存,节省了资源也减少Memory的读写操作,符合低功耗需求。对应于上述方法实施例,如图5所示,为本发明实施例一种报文查询装置结构示 意图,所述装置包括写入单元50,用于接收报文并将所述报文写入缓存;发送单元51,用于发送所述报文的查询请求,所述查询请求包括所述报文的报文 头在所述缓存中的地址信息;接收单元52,用于接收反馈的查询结果,获取所述查询结果中的包含所述报文的 报文头在所述缓存中的地址信息;读取单元53,用于根据所述报文的报文头在所述缓存中的地址信息,从所述缓存 中读出所述报文。可选的,如图6所示,为本发明实施例另一种报文查询装置结构示意图,所述装置除包括写入单元50、发送单元51、接收单元52和读取单元53外,还可以包括清零单元M。 所述写入单元,进一步用于按照先进先出缓存FIFO的方式,将所述报文写入缓存。由于在 写报文时按照FIFO方式,地址升序循环写入,写入报文后发送REQ时携带报文头在缓存中 的地址,并随RES返回地址,由此不用维护链表即可保证报文与RES的一一对应关系,支持 流Bypass场景,不论REQ与RES如何乱序也不受影响。所述写入单元50,进一步用于将所述报文写入缓存中的一个地址,将以Bitmap的 形式表示缓存地址占用情况的寄存器中与所述地址对应的Bitmap位置设置为1,以指示该 地址已占,不允许再写。所述寄存器可以为一组512bit的寄存器。由于报文缓存的写地址 按FIFO式管理,但读地址是混乱的,不能简单靠读写次数来计算缓存剩余空间,会造成写 端口无法感知当前地址是否允许写入。为解决这个问题,方案中引入BitMap式地址分配。 BitMap与报文写入缓存中的地址一一对应,为0表示空闲,允许写入,为1表示占用,禁写 入。所述清零单元M,用于所述读取单元根据所述报文的报文头在所述缓存中的地址信息, 从所述缓存中读出所述报文后,将所述寄存器中与所述地址对应的Bitmap位置清零。本发明实施例支持多条流共享缓存管理,并支持流Bypass场景。FIFO方式写地址 管理,结合Bitmap方式地址分配,大大简化逻辑设计复杂度;相对于链表管理,去除了空闲 地址缓存与链表指针缓存,节省了资源也减少Memory的读写操作,符合低功耗需求。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以 通过程序来指令相关硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该 程序在执行时,包括上述全部或部分步骤,所述的存储介质,如R0M/RAM、磁盘、光盘等。以上所述的具体实施方式
,对本发明的目的、技术方案和有益效果进行了进一步 详细说明,所应理解的是,以上所述仅为本发明的具体实施方式
而已,并不用于限定本发明 的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含 在本发明的保护范围之内。
权利要求
1.一种报文查询方法,其特征在于,所述方法包括 接收报文并将所述报文写入缓存;发送所述报文的查询请求,所述查询请求包括所述报文的报文头在所述缓存中的地址 fn息;接收反馈的查询结果,获取所述查询结果中的包含的所述报文的报文头在所述缓存中 的地址信息;根据所述报文的报文头在所述缓存中的地址信息,从所述缓存中读出所述报文。
2.如权利要求1所述方法,其特征在于,所述将所述报文写入缓存,包括 按照先进先出缓存FIFO的方式,将所述报文写入缓存。
3.如权利要求2所述方法,其特征在于,所述按照先进先出缓存FIFO的方式,将所述报 文写入缓存,包括将所述报文写入缓存中的一个地址,将以地址映射点阵图Bitmap的形式表示缓存地 址占用情况的寄存器中与所述地址对应的Bitmap位置设置为1,以指示该地址已占。
4.如权利要求3所述方法,其特征在于,所述根据所述报文的报文头在所述缓存中的 地址信息,从所述缓存中读出所述报文后,所述方法还包括将所述寄存器中与所述地址对应的Bitmap位置清零。
5.如权利要求3或4所述方法,其特征在于, 所述寄存器为一组5Ubit的寄存器。
6.一种报文查询装置,其特征在于,所述装置包括 写入单元,用于接收报文并将所述报文写入缓存;发送单元,用于发送所述报文的查询请求,所述查询请求包括所述报文的报文头在所 述缓存中的地址信息;接收单元,用于接收反馈的查询结果,获取所述查询结果中的包含的所述报文的报文 头在所述缓存中的地址信息;读取单元,用于根据所述报文的报文头在所述缓存中的地址信息,从所述缓存中读出 所述报文。
7.如权利要求6所述装置,其特征在于,所述写入单元,进一步用于按照先进先出缓存FIFO的方式,将所述报文写入缓存。
8.如权利要求7所述装置,其特征在于,所述写入单元,进一步用于将所述报文写入缓 存中的一个地址,将以地址映射点阵图Bitmap的形式表示缓存地址占用情况的寄存器中 与所述地址对应的Bitmap位置设置为1,以指示该地址已占。
9.如权利要求8所述装置,其特征在于,所述装置还包括清零单元,用于所述读取单元根据所述报文的报文头在所述缓存中的地址信息,从所 述缓存中读出所述报文后,将所述寄存器中与所述地址对应的Bitmap位置清零。
10.如权利要求8或9所述装置,其特征在于, 所述寄存器为一组5Ubit的寄存器。
全文摘要
本发明实施例提供一种报文查询方法及装置,所述报文查询方法包括接收报文并将所述报文写入缓存;发送所述报文的查询请求,所述查询请求包括所述报文的报文头在所述缓存中的地址信息;接收反馈的查询结果,获取所述查询结果中的包含的所述报文的报文头在所述缓存中的地址信息;根据所述报文的报文头在所述缓存中的地址信息,从所述缓存中读出所述报文。本发明实施例支持多条流缓存管理时的Bybass场景,并简化了逻辑设计复杂度。相对于链表管理,去除了空闲地址缓存与链表指针缓存,节省了资源也减少内存的读写操作,符合低功耗需求。
文档编号H04L12/56GK102098221SQ201110031608
公开日2011年6月15日 申请日期2011年1月28日 优先权日2011年1月28日
发明者刘玉峰, 魏华 申请人:华为技术有限公司