报文发送方法及报文发送装置制造方法及图纸

技术编号:12693580 阅读:88 留言:0更新日期:2016-01-13 11:42
一种报文发送方法及装置,该方法包括步骤:接收报文;根据所述报文所属业务流将所述报文按接收顺序排入与所述业务流对应的队列中,并将所述队列的长度加1;对所述报文进行处理,并在处理完成后,判断该报文是否位于所述队列的队列头;若是,发送已处理的所述报文,并将所述队列的长度减1;若否,将所述报文标记为已处理,并判断所述队列的长度是否大于队列长度阈值,若大于,删除所述队列的队列头的报文,并将所述队列的长度减1。本发明专利技术实施例方案避免了在报文处理过程中遇到不可恢复错误时导致的报文阻塞现象,达到了自愈的效果。

【技术实现步骤摘要】

本专利技术涉及数据通信领域,特别是涉及报文发送方法及报文发送装置
技术介绍
随着大数据时代的到来,通信系统中对网络设备的处理能力的要求越来越高,而仅仅依靠提高单核芯片的速度来提高CPU(Central Processing Unit,中央处理单元)的处理能力会产生过多热量,且无法带来相应的性能改善,其性价比也令人难以接受。另一方面,现在的系统都要求可以进行多任务操作。在这种情况下,多核CPU无疑是一个很好的选择,其优势主要在两个方面:为用户带来更强大的计算性能;更重要的是可满足用户同时进行多任务处理和多任务计算环境的要求。多核网络处理器的最大特点是可以并行处理多个报文的转发。但同时也带来了另一个问题,每个报文的处理流程可能不一样,这就导致了每个报文的处理速度不一样(例如长报文的处理时间比短报文的处理时间一般要长),先到达CPU的报文可能由于处理慢而比后到达CPU的报文晚发送出去,导致同一数据流的网络报文出现乱序现象。这在对于报文顺序有严格要求的数据流是一个致命伤害,比如IPSEC(Internet ProtocolSecurity, Internet协议安全性)数据流、视频数据流等。为了解决以上问题,必须找到一种让网络处理器在处理网络报文时,按顺序处理的方法,即报文保序方法。专利技术者在研究现有的技术方法上发现,现有的报文保序方法主要从以下几个方面着手:1、采用互斥锁机制来保证报文的处理顺序,即在报文的处理前先获取一个锁之后再进行报文的处理,如果暂时获取不到锁,则要等待锁的释放;2、采用报文序列号的方法,即在报文发送前,先判断报文的序列号是否与当前发送序列号相等,如果相等就直接发送并递增发送序列号;如果不等则等待;3、采用保序队列方法,先把报文按接收顺序保存在队列中,然后各个CPU处理报文,当发送报文时,按接收顺序从队列头发送已处理完成的报文,如果队列头中有未处理完成的报文,则该队列的所有报文都不可以发送。这些方法都存在一个弊端,即无法解决报文在处理过程中CPU核出现错误(如程序挂死等)时,导致同一业务流的所有后序报文都被阻塞的问题。
技术实现思路
基于此,本专利技术的目的在于提供一种报文发送方法及报文发送装置,以解决CPU核错误导致的同一业务流的所有后序报文都被阻塞的问题。为达到上述目的,本专利技术实施例采用以下技术方案:一种报文发送方法,包括步骤:接收报文;根据所述报文所属业务流将所述报文按接收顺序排入与所述业务流对应的队列中,并将所述队列的长度加1 ;对所述报文进行处理,并在处理完成后,判断该报文是否位于所述队列的队列头;若是,发送已处理的所述报文,并将所述队列的长度减1 ;若否,将所述报文标记为已处理,并判断所述队列的长度是否大于队列长度阈值,若大于,删除所述队列的队列头的报文,并将所述队列的长度减1。一种报文发送装置,包括:报文接收模块,用于接收报文;队列添加模块,用于根据所述报文所属业务流将所述报文按接收顺序排入与所述业务流对应的队列中,并将所述队列的长度加1 ;队列判定模块,用于在对所述报文处理完成后,判断该报文是否位于所述队列的队列头;队列处理模块,用于在所述队列判定模块的判定结果为是时,发送已处理的所述报文,并将所述队列的长度减1,在所述队列判定模块的判定结果为否时,将所述报文标记为已处理,并判断所述队列的长度是否大于队列长度阈值,若大于,删除所述队列的队列头的报文,并将所述队列的长度减1。根据如上所述的本专利技术实施例的方案,其在接收到报文后,是先将该报文按照接收顺序排入该报文所属业务流的队列中,再对该报文进行处理,并在处理完成后,如果该报文是处于队列的队列头,则直接将该报文发送出去,如果不是,且队列的长度大于了队列长度阈值,则删除队列的队列头的报文,避免了在报文处理过程中遇到不可恢复错误时导致的报文阻塞现象,达到了自愈的效果。【附图说明】图1是本专利技术实施例的报文发送方法的流程示意图;图2是一个具体示例中的报文发送方法的流程示意图;图3是一个具体示例的队列中的报文序列的示意图;图4是本专利技术实施例的报文发送装置的结构示意图。【具体实施方式】为使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步的详细说明。应当理解,此处所描述的【具体实施方式】仅仅用以解释本专利技术,并不限定本专利技术的保护范围。图1中示出了本专利技术实施例的报文发送方法的流程示意图。如图1所示,本实施例中的方法包括步骤:步骤S101:接收报文;步骤S102:根据所述报文所属业务流将所述报文按接收顺序排入与所述业务流对应的队列中,并将所述队列的长度加1 ;步骤S103:对所述报文进行处理,并在处理完成后,判断该报文是否位于所述队列的队列头,若是,则进入步骤S104,若否,则进入步骤S105 ;步骤S104:发送已处理的所述报文,并将所述队列的长度减1 ;步骤S105:将所述报文标记为已处理,并判断所述队列的长度是否大于队列长度阈值,若大于,删除所述队列的队列头的报文,并将所述队列的长度减1。根据如上所述的本专利技术实施例的方案,其在接收到报文后,是先将该报文按照接收顺序排入该报文所属业务流的队列中,再对该报文进行处理,并在处理完成后,如果该报文是处于队列的队列头,则直接将该报文发送出去,如果不是,且队列的长度大于了队列长度阈值,则删除队列的队列头的报文,避免了在报文处理过程中遇到不可恢复错误时导致的报文阻塞现象,达到了自愈的效果。其中,在上述发送已处理的所述报文、并将所述队列的长度减1之后,以及在删除所述队列的队列头的报文、并将所述队列的长度减1之后,还可以进一步发送所述队列前端连续的已处理报文,并在每发送一个报文后,将所述队列的长度减1,直至所述队列前端的所有已处理报文发送完成,以将已排到发送顺序的已处理报文及时地发送出去。在将队列前端的所有已处理报文发送完成后,可返回所述接收报文的步骤,重新接收报文。其中,在上述步骤S104中的判定结果为队列的长度不大于(即小于或者等于)上述队列长度阈值时,则可返回上述接收报文的步骤,重新接收报文。上述队列,可以采用任何一种可能的方式实现,在本专利技术的一个具体示例中,可以通过Hash队列来实现上述队列,此时,在判定报文所属的业务流时,可以根据报文的Hash值来确定。确定报文的Hash值的具体方式,可以采用任何可能的方式进行,在本专利技术的一个具体示例中,可以根据报文的源MAC地址、目的MAC地址、源IP地址、目的IP地址、协议号确定该报文的Hash值。基于Hash队列,在上述接收报文之前,当前第1页1 2 3 本文档来自技高网
...

【技术保护点】
一种报文发送方法,其特征在于,包括步骤:接收报文;根据所述报文所属业务流将所述报文按接收顺序排入与所述业务流对应的队列中,并将所述队列的长度加1;对所述报文进行处理,并在处理完成后,判断该报文是否位于所述队列的队列头;若是,发送已处理的所述报文,并将所述队列的长度减1;若否,将所述报文标记为已处理,并判断所述队列的长度是否大于队列长度阈值,若大于,删除所述队列的队列头的报文,并将所述队列的长度减1。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘福元赵剑川
申请(专利权)人:京信通信技术广州有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1