[发明专利]报文保序方法及系统有效
| 申请号: | 201010190599.1 | 申请日: | 2010-05-27 |
| 公开(公告)号: | CN101854302A | 公开(公告)日: | 2010-10-06 |
| 发明(设计)人: | 曹彪;刘志远;赵丰收 | 申请(专利权)人: | 中兴通讯股份有限公司 |
| 主分类号: | H04L12/56 | 分类号: | H04L12/56 |
| 代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 余刚;吴孟秋 |
| 地址: | 518057 广*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 报文 方法 系统 | ||
技术领域
本发明涉及通信领域,具体而言,涉及一种报文保序方法及系统。
背景技术
通讯网络设备的基本功能是转发报文,在保证转发性能的情况下,还必须保证报文的转发质量(例如,保证报文转发的低时延、低抖动等)。此外,对于一些用户业务的报文(例如用户语音、视频等)还必须保证报文转发的顺序(简称为保序),即同一个数据流的报文从进入网络设备到离开网络设备的顺序应该严格相同。目前,为了提高网络设备的报文处理能力,多核处理器已经被应用在网络通讯设备上了。
在多核处理器系统中,报文的保序可以通过硬件和软件来实现。其中,利用硬件实现的保序功能(例如,利用硬件保序队列来实现保序,或者利用报文标签(tag)值切换等)对系统整体性能影响比较小、易于维护。但是,利用硬件来实现保序在不同的硬件架构需要使用不同的硬件机制来实现,因而造成了对硬件依赖性比较大、通用性不够强,需要不同的专业人员来维护。
软件保序利用软件保序算法的灵活性和通用性,可以屏蔽硬件结构的差异,具有移植和维护方便的特点。目前的软件保序策略分为以下两种:
一、按流分发
按流分发保序是将同一用户的报文分发到同一个线程上处理。图1是根据相关技术的按流分发报文的示意图,硬件在接收单元接收到报文之后,首先按照一定规则将报文分成不同的数据流。然后将不同的数据流分发到不同的核上处理。这样可以将同一用户的报文被分发到同一个核上进行处理,可以保证报文处理的顺序。由于不同流间的报文相互间没有联系,不同流的报文顺序是不需要考虑的。按流分发的实现过程比较简单,但是由于多核处理器的硬件分类单元对报文的分类能力有限,不能解析出所有的用户报文。并且由于用户报文的随机性,容易出现线程之间负荷分担不均匀,导致有的线程比较空闲,而有的线程负荷比较大。
二、序列号保序
序列号保序是根据报文序列号和期望序列号并通过期望序列号的不断推进来实现报文的保序。图2是根据相关技术的序列号报文保序的示意图,硬件接收单元将从同一端口接收的报文打上一个序列号(pkt_seq),其中,每接收一个报文,pkt_seq就会递增1,不同端口的报文序列号是独立编号、互不影响的。然后,硬件分发单元按照轮询的方式将报文分担到每个线程进行并行处理。在报文处理完毕之后,将报文送入保序单元。保序单元预先为每个接收端口分配一个期望序列号(exp_seq)和保序队列(order_que),期望序列号和保序队列为每个线程都能共同访问的共享变量。图3是根据相关技术的保序队列结构示意图,保序队列不同于一般的先入先出队列,报文根据自身序列号在保序队列中有一个对应位置,期望序列号指向保序队列中当前的保序位置。保序队列节点有两个特性:一是节点状态,包括有效和无效,其中,“有效”表示线程可以处理当前节点的报文;二是节点动作,根据业务要求可以将用户报文分为保序和非保序,区别在于是否需要保序单元发送该报文。
报文在进入保序单元之后,线程判断当前处理报文的序列号与期望序列号是否相同,如果相同则通过原子锁(spin_lock)的方式(即,线程通过原子锁的方式来操作期望序列号exp_seq和保序队列)锁住当前报文在保序队列中的位置,处理该报文,并将期望序列号递增1,然后继续判断保序队列下一个节点的状态,直到队列下一个节点状态无效;否则将报文缓存到保序队列中,并返回接收新的报文。
上述的在报文进入保序单元之后,线程是根据spin_lock的方式来锁住当前报文在保序队列中的位置。发明人发现,在网络流量比较大的情况下,这样的处理方式,会使获得锁的线程一直处于保序发送状态,如果这个线程还要执行其他功能,那么由于该线程一直处于保序发送状态而无法执行其应该执行的功能。从而有可能导致影响单板性能或流控机制,引起流量抖动。
发明内容
本发明的主要目的在于提供一种报文保序方案,以至少解决上述问题。
根据本发明的一个方面,提供了一种报文保序方法,包括以下步骤:多个线程竞争原子锁;得到所述原子锁的线程对保序队列中的预定个数的报文进行处理,并在处理之后,释放所述原子锁。
根据本发明的另一个方面,提供了一种报文保序系统,包括:竞争模块,用于使多个线程竞争原子锁;处理模块,用于使得到所述原子锁的线程对保序队列中的预定个数的报文进行处理,并在处理之后,释放所述原子锁。
通过本发明,采用多个线程竞争原子锁;得到该原子锁的线程对保序队列中的预定个数的报文进行处理,并在处理之后,释放该原子锁。解决了获取到原子锁的线程一直处于保序发送状态而无法执行其应该执行的功能而导致影响单板性能或流控机制的问题,进而完善了保序处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010190599.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种盲均衡器及盲均衡处理方法
- 下一篇:告警同步方法、装置和系统





