报文保序方法及其装置的制作方法

文档序号:7649363阅读:259来源:国知局
专利名称:报文保序方法及其装置的制作方法
技术领域
本发明涉及通信设备和网络设备中报文转发的保序方法和装置。背景技术
随着通信技术和网络技术的发展,通信设备或是网络设备(以下统称
为网络设备)逐步向全IP (Internet Protocol,互联网协议)推进;网 络设备的一个最基本功能就是转发IP报文。许多上层业务报文在传输过程 中需要网络设备严格保证报文的顺序,也就是同一数据流进入网络设备和 离开网络设备的顺序应严格相同。
为提高系统整体性能,目前网络设备通常使用多核多硬件线程芯片进 行报文转发,报文的保序往往利用硬件机制辅助实现,如网络处理器中使 用硬件信号同步报文的接收、处理和发送以实现报文的保序。虽然利用硬 件机制实现报文保序的方案对系统性能影响较小,但是不同的硬件架构, 使用的机制大不相同,保序方案难以通用、统一,且受限于硬件本身的实 现机制。
除利用硬件机制实现报文保序之外,采用多核多硬件线程芯片的网络 设备中,还可以使用软件方案实现报文的保序。软件方案可以屏蔽硬件芯 片的差异,移植性和通用性都优于利用硬件机制的方案。使用软件方案实 现报文保序的基本策略有两种 一是避免报文在多个线程处理时失序;二 是使用软件方案对失序的报文重新进行排序。
'图1 图3给出了现有技术中使用多核多线程网络设备中避免报文失 序的原理示意图图1中的软件方案是所有的核和线程完全采用流水线的 方式完成IP报文的转发,每个核/线程完成报文转发处理的不同阶段和步 骤,前一核/线程处理完成后通知第二个核/线程进行处理,依次类推,最 后完成报文发送;此方案的最大缺陷在于各核/线程上的模块功能分配和处 理负荷难以均衡,难以适应模块功能的不断扩展和升级,易出现性能的瓶 颈点。图2所示软件方案中各线程完全采用并行的工作方式,每个核/线程 完成相同的功能,使用分类单元(软件或是硬件),将不同流分发到不同的 核/线程处理,同一流的报文由同一线程处理,故可避免失序;此方案的最 大缺陷是不同流的负荷差别可能很大,会造成某些线程比较空闲,而有些
线程负荷比较繁重。图3所示的软件折中'图1、图2中的方案,但仍然存 在两种方案的缺点。
考虑业务流在不同核/线程之间的负载均衡和平滑系统整体性能,往往 使用多线程完全并行工作的方式,各核/线程驻留相同的功能模块,业务流 根据一定的策略均匀的分发到不同的核/线程上处理。图4给出了在此系统
方案下报文保序实现的软件原理示意图接收单元为接收到的报文分配一 个序列号seq一mim并均匀分发到并行的线程中处理,各线程为每个业务流 维护一个发送序列号tx一seci—curr,发送序列号属于各线程的共享临界资 源,转发报文时,判断业务流的当前发送序列号tx—seq一curr和报文序列 号seq—num是否相同,如果相同则转发报文,并将tx—seq—curr加1,否 则循环等待。此方案存在的最大不足之处是没有考虑业务流异常处理状态, 业务流有效发送序列号更新粒度固定不变为1,当报文异常状态对应不同 处理策略如需要丢弃或是处理超时后,会造成保序功能的失败、死等或是 引起报文的抖动。
发明内容
本发明的主要目的是克服上述现有技术中的不足之处,提供一种保 序策略更为完善、保序功能更为稳定有效的报文保序方法及其装置。
为实现上述目的,本发明提出一种报文保序方法,包括如下的步骤
11) 流分类标识单元对接收到的报文首先进行流分类和标识操作,将 报文按给定规则划分为不同的业务流,同时为流中每个报文分配一个报文 序列号,同一流中序列号连续递增分配;然后将报文均衡分发到并行的多 个核/线程中;
12) 报文处理单元对报文进行处理时,流状态监控单元为每个业务流 队列维护一个相应的流状态队列,实时监控报文状态,设置每个报文的状 态向量,对于不同的报文状态向量,指定不同的处理策略;
13) 保序与调度发送单元获取业务流当前发送序列号、报文序列号、 业务流报文状态向量和对应的处理策略;锁定业务流当前发送序列号、相 应状态向量;根据不同报文状态向量对应的处理策略,实现对报文调度、 发送的同步;同时更新当前发送序列号,解锁发送序列号和报文状态向量。
上述的报文保序方法,所述步骤13)的具体过程包括如果某个报文 状态向量对应的处理策略为继续处理,当业务流当前发送序列号和报文序 列号相同时,则转发报文,更新当前发送序列号,解锁发送序列号和报文 状态向量;否则解锁发送序列号和报文状态向量,结束本次调度发送。所 述步骤13)的具体过程还包括如果某个报文状态向量对应的处理策略为 丢弃,则丢弃该报文,更新当前发送序列号,解锁发送序列号和报文状态 向量,结束本次调度发送;如果所述报文状态向量为超时,则对应策略为 丢弃报文。所述步骤13)的具体过程还包括如果某个报文状态向量对应 的处理策略为等待,解锁发送序列号和报文状态向量,结束本次调度发送。
上述的报文保序方法,由流分类标识单元初始化每个流的当前发送序 列号,由保序调度发送单元维护该发送序列号;或由保序调度发送单元初 始化每个流的当前发送序列号,并维护该发送序列号。
同时,本发明公开了一种报文保序装置,包括
流分类标识单元按照给定规则,将接收到的报文划分为不同的业务 流中,为流中每个报文分配一个连续递增的序列号;同时完成报文在多核/ 多线程上的负载均衡分发;
报文处理单元对接收到的报文进行处理;
流状态监控单元用来维护流状态队列,标记报文的处理状态;保持 流状态队列和业务流队列一一对应;
保序和调度发送单元根据流状态队列中的报文状态向量和对应的处 理策略,实现对报文调度、发送的同步。
上述报文保序装置,所述报文状态向量包括处理中,对应策略为等 待;已处理,对应策略为继续处理;丢弃,对应策略为丢弃。所述报文状 态向量还包括已超时,对应策略为丢弃。
上述报文保序装置,所述流分类标识单元初始化每个流的当前发送序 列号,保序调度发送单元维护该发送序列号;或所述保序调度发送单元初 始化每个流的当前发送序列号,并维护该发送序列号。
由于采用了以上的方案,本发明的报文保序方法及其装置,通过流状 态监控,使得当前有效发送序列号的更新粒度是可变的,可同时解决业务 流正常报文、异常报文的保序功能。当报文异常状态对应不同处理策略如 需要丢弃或是处理超时后,不会造成保序功能的失败、死等或是引起报文 的抖动。因此,保序策略更为完善、保序功能更为稳定有效。

图1:现有技术下多核多硬件线程芯片中报文保序软件方案之一完 全采用线程串行工作方式避免报文失序的原理示意图。
图2:现有技术下多核多硬件线程芯片中报文保序软件方案之二完 全采用线程并行工作方式避免报文失序的原理示意图。
图3:现有技术下多核多硬件线程芯片中报文保序软件方案之三结 合线程串行和并行工作方式避免报文失序的原理示意图。
图4:现有技术下多核多硬件线程芯片中报文保序软件方案之四基 于流序列号的保序方案的原理示意图。
图5:本发明实施例一的多核多硬件线程系统中报文保序实现原理示 意图6:本发明实施例二具体流程图,其中仅使用报文状态向量"丢弃" 和"已处理";
图7:本发明实施例三具体流程图,同时使用报文状态向量"丢弃"、 "已处理"和"超时";
图8:本发明实施例实现保序方法的网络设备示意图。
具体实施方式
下面通过具体的实施例并结合附图对本发明作进一步详细的描述。 实施例一
请参考附图5,为本例的报文保序装置,包括如下各单元 Cl:接口单元501,接口完成报文的接收和发送,可将接收的报文按照 一定的规则发送到多核处理器单元502中的多个核/线程进行处理,或是发
送来自501中多个核/线程的报文。
C2:多核处理器单元502:多核处理器单元,接收来自接口单板501的
报文、完成报文的处理、转发和保序,并发送到接口单元501向外发送;
多核处理器单元内部多个核/线程实现完全一致的功能,逻辑上包括单元
C3 C7。
C3:流分类标识单元503:用来业务流划分,按照给定规则将不同的报
文划分为不同的业务流,并按照递增的顺序设置报文序列号,流分类标识 可以利用硬件机制或是软件方法实现。
C4:报文处理单元504:完成报文处理,如封装/解封装、IP路由等。 C5:流状态监控单元505:监控报文处理状态,设置相应的业务流状态 队列,供保序调度发送单元506发送序列号更新使用。
C6:保序调度发送单元506:根据发送序列号、报文序列号、业务流状 态和对应的处理策略,按照给定调度策略,完成报文最终的调度和按序发 送。
上述系统中多核处理器单元内部的单元构成,属于一种逻辑分类,实现 时可以进行功能集成,譬如报文处理、流状态监控单元可以合一实现。采 用多核CPU的网络设置中,用于报文处理和转发的多个核完全对等,任何 一个核均可完成报文各阶段处理和转发,接口单元将报文送到多个核,各 个核按照给定的业务规则,划分为不同的业务流,譬如将具有相同的源IP、 目的IP、协议类型和端口的报文划分为一个流。同时按照接收先后的顺序 为流中报文设置连续递增的序列号;保序调度发送单元根据发送序列号、 报文序列号、业务流状态和对应的处理策略,实现报文的保序,最后完成 报文的按序发送。其中流状态监控单元可以监视报文的不同处理状态,如 Processing、 Processed、 Dropped、 Time out,并分别对应不同的策略如 等待、继续处理和丢弃等;保序单元使用报文的状态和对应的处理策略完 全由用户定制。
附图6的报文保序方法,给出了仅使用"丢弃"和"已处理"两个状态, 完成报文保序,具体步骤如下
步骤601:线程从接口单元接收报文
步骤602:根据报文首部包含的信息,如接收端口、 MAC头、IP头、传 输端口号等信息划分报文到不同的流。流划分的规则由用户指定,可以由 硬件机制辅助实现,或是由软件实现,划分使用信息不限于上述信息。
步骤603:根据报文处理结果标记流中报文状态,这里为"已处理/未 处理","需丢弃/不需丢弃"。
步骤604:报文完成处理后,调度发送时,调度选择待发送的业务流, 首先获得此业务流当前发送序列号tx—seq—curr和业务流队列头报文状态 pkt—flag,由于当前发送序列号和报文均属于多核/多线程共享临界资源, 因此操作之前需要加锁,本发明对具体使用的锁机制不限定。
步骤605:判断报文状态是否为"丢弃",如果为"丢弃",需要丢弃报 文(步骤606),更新流当前发送序列号tx—seq—curr (步骤610),然后解 锁tx—seq—curr和pkLflag (步骤611),结束本次调度发送;否则进入步
骤607处理。
步骤607:判断报文是否已经处理完毕,如果未处理完毕,解锁 tx—seq—curr和pkt—flag (步骤611),结束本次调度发送,循环等待报文 处理;否则进入步骤608转发报文
步骤608:判断报文序号是否和流当前发送序列号一致,如果不一致, 解锁tx—seq—curr和pkt—flag (步骤611),结束本次调度发送,循环等待 报文处理;否则进入步骤609。
步骤609:报文按序转发,更新流当前发送序列号tx—Seq_CUiT (步骤 610),然后解锁tx—seq—curr和pkt—flag(步骤611),结束本次调度发送。 实施例三
在附图7给出本发明的另外一种实施方式中,这种实施方式考虑到实 际网络设备可能存在的软件或是硬件问题,造成报文处理时间过长,或是 进入死等状态。增加对报保序处理中文是否超时的判断,如果未超时,转 发报文,否则丢弃报文,具体步骤如下
步骤701 步骤706分别和附图6中的步骤601 步骤606,步骤708 步骤712分别和步骤607 步骤611完全一致,这里不再赘述,这里只描 述新加入的步骤-
步骤707:如果步骤706中报文状态不是丢弃,进入步骤707,判断报 文是否超时,如果超时,需要丢弃报文(步骤706),更新流当前发送序列 号tx—seq—curr(步骤711,然后解锁tx—seq—curr和pkt—flag(步骤712), 结束本次调度发送;否则进入步骤708;
附图6和附图7给出的本发明的具体实施例中,报文保序使用了不同 的流状态,除本发明示例的状态外,还可以是其他任意用户指定的状态; 流状态的使用,使得当前有效发送序列号的更新粒度是可变的,举例来说, 某个业务流的报文A、 B、 C、 D、 E、 F、 G、 H依次进入设备处理,由于某种 异常或是超时,B、 C、 D、 F、 G最后被设备丢弃,只有A、 E、 H需要按序 依次发送,对应E的发送序列号和对应A的发送序列号之差为3,而对应H 的发送序列号和对应E的发送序列号之差为2,即当前有效发送序列号的 更新粒度是可变的。而发送序列号的初始化可以由流分类标识单元或保序 调度发送单元执行。
附图8给出实现上述报文保序方法的一种网络设备示意图,包括接口
单元80K多核处理器单元802、存储单元803和总线804。 一般而言,多 核处理器单元完成对接口单元、存储单元的初始化和控制,负责完成报文 的流分类标识、处理和保序转发,其上可以运行非特定的操作系统。存储 单元用于缓存报文,在多核处理器的适当控制下维护业务流报文队列、流 状态队列,同时作为共享设备,可以用来存储保序时多个核/线程的共享资 源如发送序列号。接口单元作为网络设备和其他设备的接口,可以但不限 定为以太网接口、帧中继接口、 ATM接口等等。总线设备用来完成设备内 部各单元之间的通信,数据交互。本发明中多核处理器单元不限定特殊的 处理器,甚至不限定为多核处理器,多个单处理器单元之间构成的系统, 同样可以实践本发明,附图示意图只是描述而非限制实现的细节。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说 明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术 领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若 干简单推演或替换,都应当视为属于本发明的保护范围。
权利要求
1、一种报文保序方法,包括如下的步骤11)流分类标识单元对接收到的报文首先进行流分类和标识操作,将报文按给定规则划分为不同的业务流,同时为流中每个报文分配一个报文序列号,同一流中序列号连续递增分配;然后将报文均衡分发到并行的多个核/线程中;12)报文处理单元对报文进行处理时,流状态监控单元为每个业务流队列维护一个相应的流状态队列,实时监控报文状态,设置每个报文的状态向量,对于不同的报文状态向量,指定不同的处理策略;13)保序调度发送单元获取业务流当前发送序列号、报文序列号、业务流报文状态向量和对应的处理策略;锁定业务流当前发送序列号、相应状态向量;根据不同报文状态向量对应的处理策略,实现对报文调度、发送的同步;同时更新当前发送序列号,解锁发送序列号和报文状态向量。
2、 如权利要求1所述的报文保序方法,其特征是所述步骤13)的 具体过程包括如果某个报文状态向量对应的处理策略为继续处理,当业 务流当前发送序列号和报文序列号相同时,则转发报文,更新当前发送序 列号,解锁发送序列号和报文状态向量;否则解锁发送序列号和报文状态 向量,结束本次调度发送。
3、 如权利要求2所述的报文保序方法,其特征是所述步骤13)的 具体过程还包括如果某个报文状态向量对应的处理策略为丢弃,则丢弃 该报文,更新当前发送序列号,解锁发送序列号和报文状态向量,结束本 次调度发送。
4、 如权利要求2或3所述的报文保序方法,其特征是所述步骤13) 的具体过程还包括如果某个报文状态向量对应的处理策略为等待,解锁 发送序列号和报文状态向量,结束本次调度发送。
5、 如权利要求3所述的报文保序方法,其特征是如果所述报文状态 向量为超时,则对应策略为丢弃报文。
6、 如权利要求1或2或3所述的报文保序方法,其特征是由流分类 标识单元初始化每个流的当前发送序列号,由保序调度发送单元维护该发 送序列号;或由保序调度发送单元初始化每个流的当前发送序列号,并维 护该发送序列号。
7、 一种报文保序装置,包括流分类标识单元按照给定规则,将接收到的报文划分为不同的业务 流中,为流中每个报文分配一个连续递增的序列号;同时完成报文在多核/ 多线程上的负载均衡分发;报文处理单元对接收到的报文进行处理;流状态监控单元用来维护流状态队列,标记报文的处理状态;保持 流状态队列和业务流队列一一对应;保序调度发送单元根据流状态队列中的报文状态向量和对应的处理 策略,实现对报文调度、发送的同步。
8、 如权利要求7所述报文保序装置,其特征是所述报文状态向量包 括处理中,对应策略为等待;已处理,对应策略为继续处理;丢弃,对 应策略为丢弃。 '
9、 如权利要求8所述报文保序装置,其特征是所述报文状态向量还 包括已超时,对应策略为丢弃。
10、 如权利要求7-9中任一项所述报文保序装置,其特征是所述流 分类标识单元初始化每个流的当前发送序列号,所述保序调度发送单元维 护该发送序列号;或所述保序调度发送单元初始化每个流的当前发送序列 号,并维护该发送序列号。
全文摘要
本发明公开了一种报文保序方法及其装置,该装置包括流分类标识单元按照给定规则,将接收到的报文划分为不同的业务流中,为流中每个报文分配一个连续递增的序列号;同时完成报文在多核/多线程上的负载均衡分发;报文处理单元对接收到的报文进行处理;流状态监控单元用来维护流状态队列,标记报文的处理状态;保持流状态队列和业务流队列一一对应;保序和调度发送单元根据流状态队列中的报文状态向量和对应的处理策略,实现对报文调度、发送的同步。本发明通过可变粒度流发送序列号,可同时解决业务流正常报文、异常报文的保序功能;保序策略更为完善、保序功能更为稳定有效。
文档编号H04L12/56GK101175033SQ20071007751
公开日2008年5月7日 申请日期2007年11月27日 优先权日2007年11月27日
发明者刘志远, 俊 姚, 郭树波 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1