在多核处理器系统中使用的报文保序方法

文档序号:7859274阅读:232来源:国知局
专利名称:在多核处理器系统中使用的报文保序方法
技术领域
本发明涉及一种网络设备的报文保序方法,更具体地说,涉及一种在多核处理器系统中使用的报文保序的方法。
背景技术
随着网络的普及,用户对网络带宽的需求不断提高,网络设备的处理能力也越来越高。作为网络设备的核心处理单元,CPU的性能成为决定一个网络设备处理能力的重要标准。自从多核处理器的出现,使得网络设备的处理能力上了一个新的台阶。 多核架构的处理器,能对报文进行并行处理,提高了处理能力,但产生了并行处理中报文乱序的现象,导致报文转发时产生诸如TCP乱序等问题,报文的保序需求随之产生。目前网络处理器制造厂商,大都通过附加一个硬件协处理单元来完成报文保序的工作。例如,octeon系列处理器内置的sso单元用于专门负责报文的同步、保序等工作。由于每个厂商自定义的硬件协处理器单元结构不同,实现原理也不同,使得该功能的通用性不强。并且,通用多核处理器中并没有这样的单元,使得用户在选取网络设备的处理器时只能局限于固定几家厂商的芯片,有很大的局限性。因此,需要一种不必使用硬件协处理器也能够在通用多核处理器中使用的报文保序方法。

发明内容
本发明的一方面在于提供了一种在多核处理器系统中使用的报文保序方法,所述方法通过专门使用一个核处理报文保序的工作,实现了不必使用硬件协处理器也能够在通用多核处理器中使用的报文保序方法,扩大了在选取网络设备的处理器时芯片选择的范围。本发明的另一方面在于提供了一种在多核处理器系统中使用的报文保序方法,所述方法包括将多核处理器系统中的一个核用作保序单元,并将多核处理器系统中的其它核用作业务核;保序单元针对接收到的报文进行保序预处理;业务核向保序单元申请报文;保序单元响应于业务核的申请将接收到的报文调度给业务核;业务核对报文进行业务处理;保序单元发送处理完毕的报文。保序单元针对接收到的报文排序进行保序预处理的步骤可包括设置流匹配规则;根据设置的流匹配规则,对接收到的报文进行流匹配;根据流匹配的结果,针对同一条流中的每个报文生成排序队列,其中,排序队列用于对接收到的报文进行排序并设置索引。保序单元设置流匹配规则的步骤可包括针对每个报文设置流匹配元组;针对每个报文设置保序方案;将流匹配元组相同并且保序方案也相同的报文确定为属于同一条流。保序单元针对每个报文设置流匹配元组的步骤可包括将流匹配元组设置为包括每个报文中的源IP、目的IP、源端口、目的端口、协议类型、物理链路PORT的任意组合,并且,流匹配元组相同表示流匹配元组中包括的每个元组都相同。保序单元针对每个报文设置保序方案的步骤可包括针对每个报文将保序方案设置为并行保序方案、互斥保序方案和非保序方案之一。保序单元将接收到的报文中的报文调度给业务核的步骤可包括保序单元根据流匹配的结果,针对保序方案被设置为并行保序方案的流和针对保序方案被设置为非保序方案的流,保序单元将接收到的报文中的每个报文调度给所述业务核中的一个或多个业务核;针对保序方案被设置为互斥保序方案的流,保序单元将接收到的报文中的每个报文调度给所述业务核中的一个业务核。保序单元发送处理完毕的报文的步骤可包括针对保序方案被设置为并行保序方案的流,保序单元确定该流中处理完毕的报文是否位于排序队列的最前面;如果处理完毕的报文位于排序队列的最前面,则保序单元发送该处理完毕的报文;如果在排序队列中在处理完毕的报文之前存在没被处理完毕的报文,则保序单元不发送该处理完毕的报文,而是等待前面的报文处理完毕并发送之后才发送该处理完毕的报文。
保序单元发送处理完毕的报文的步骤还可包括针对保序方案被设置为互斥保序方案的流,保序单元根据排序队列依次发送被依次处理的多个报文。保序单元发送处理完毕的报文的步骤还可包括针对保序方案被设置为非保序方案的流,保序单元不考虑保序操作而直接发送排序队列中处理完毕的报文。根据本发明的示例性实施例的在多核处理器系统中使用的报文保序方法通过将 多核处理器系统中的一个核用作保序单元以进行对报文的调度和保序,并将多核处理器系统中的其它多个核用作多个业务核以进行对报文的处理,实现了不必使用硬件协处理器也能够在通用多核处理器中使用的报文保序方法,扩大了在选取网络设备的处理器时芯片选择的范围。此外,通过所述方法,多个业务核仅需进行具体的业务处理,而不必考虑复杂的保序工作,简化了多个业务核对报文处理的流程,达到了有效避免乱序,提高处理和转发效率。


通过结合附图,从实施例的下面描述中,本发明这些和/或其它方面及优点将会变得清楚,并且更易于理解,其中图I是根据本发明的示例性实施例的多核处理器系统的配置图;图2是根据本发明的示例性实施例的在多核处理器系统中使用的保序方法的流程图;图3是根据本发明的示例性实施例的图2中保序预处理的流程图;图4是根据本发明的示例性实施例的发送保序方案被设置为并行保序方案的流中的报文的示意图;图5是根据本发明的示例性实施例的发送保序方案被设置为互斥保序方案的流中的报文的示意图;图6是根据本发明的示例性实施例的发送保序方案被设置为非保序方案的流中的报文的示意图。
具体实施例方式提供参照附图的以下描述以帮助对由权利要求及其等同物限定的本发明的示例性实施例的全面的理解。包括各种特定细节以帮助理解,但这些细节仅被视为是示例性的。因此,本领域的普通技术人员将认识到在不脱离本发明的范围和精神的情况下,可对描述于此的实施例进行各种改变和修改。此外,为了清楚和简洁,省略对公知的功能和结构的描述。图I是根据本发明的示例性实施例的多核处理器系统的配置图。参照图1,在根据本发明的示例性实施例的多核处理器系统100中,单独使用一个核专门负责对报文进行总体调度并对报文的转发进行保序,并使用其它多个核负责对报文进行业务处理。这里,将专门负责对报文进行总体调度并对报文的转发进行保序的单个核称为保序单元101,将负责对报文进行业务处理的多个核称为业务核102至105。本领域的技术人员应该理解,多核处理器系统100中的核的数量(5个)仅是示例,本发明不限于此。
如图I所示,当多核处理器系统100从物理链路(未示出)接收到报文时,由保序单元101对报文进行保序预处理,例如,保序单元101可根据预先设置的流匹配规则对接收到的报文进行流匹配,并可对接收到的报文生成排序(in-flight)队列,其中,排序队列用于对接收到的报文进行排序并设置索引,将在稍后对此进行详细描述。业务核102至105可主动向保序单元101申请报文,保序单元101接收到申请之后,可将接收到的报文中的报文调度给业务核102至105。本领域的技术人员应该理解,这里描述的将报文调度给业务核102至105并非指的是将报文本身调度给业务核102至105,而是将报文的地址发送到业务核102至105,而报文本身仍保存在排序队列中,业务核102至105根据报文的地址处理在排序队列中保存的报文,并对报文处理完毕之后,向保序单元101发送报文处理完毕的通知。保序单101在接收到业务核发送的报文处理完毕的通知之后,发送处理完毕的报文,将在稍后对此进行详细描述。下面,将参照图2详细描述根据本发明的示例性实施例的在多核处理器系统中使用的保序方法。图2是根据本发明的示例性实施例的在多核处理器系统中使用的保序方法的流程图。参照图2,在步骤201,将多核处理器系统中的一个核设置为保序单元101,将多核处理器系统中的其它核设置为业务核102至105。在步骤202,保序单元101对从物理链路(未示出)接收到的报文进行保序预处理。下面,将参照图3详细描述保序单元101对从物理链路(未示出)接收到的报文进行保序预处理的步骤。图3是根据本发明的示例性实施例的图2中保序预处理的流程图。参照图3,在步骤301,保序单元101设置流匹配规则。首先,保序单元101可针对每个报文设置流匹配元组。具体地,保序单元101可提取每个报文中的各元组作为流匹配元组。其中,报文的元组可包括报文的源IP、目的IP、源端口、目的端口、协议类型、物理链路PORT等,流匹配元组指的是用于进行流匹配的元组。也就是说,保序单元101可将报文的源IP、目的IP、源端口、目的端口、协议类型、物理链路PORT等的任意组合设置为流匹配元组。流匹配元组可由用户预先设置或者可以是默认值。
其次,保序单元101可针对每个报文设置保序方案。具体地,保序方案可包括并行保序方案、互斥保序方案和非保序方案。其中,并行保序方案表示在业务核102至105中并行处理同一条流中的多个报文,保序单元101发送所述多个报文时进行保序;互斥保序方案表不仅在一个业务核(102至105中的一个)中依次处理同一条流中的多个报文,保序单元101依次发送所述多个报文,即进行天然保序;非保序方案表示在业务核102至105中并行处理同一条流中的多个报文,保序单元101发送所述多个报文时不进行保序。最后,保序单元101可将流匹配元组相同并且保序方案也相同的报文确定为属于同一条流。这里,流匹配元组相同指 的是流匹配元组中包括的每个元组都相同。例如,保序单元101可将流匹配元组设置为包括源ip、目的ip、源端口、目的端口、协议类型,当保序单元101接收到报文时,可从报文中提取源ip、目的ip、源端口、目的端口、协议类型,通过hash算法生成key (关键字)。随后,保序单元101可将报文的保序方案设置为并行保序方案、互斥保序方案和非保序方案之一。因此,当多个报文的key相同并且保序方案也相同时,保序单元101可确定这多个报文属于同一条流。也就是说,例如,报文I (key (100),并行保序方案)和报文2 (key (100),并行保序方案)属于同一条流;报文3(key(100),并行保序方案)和报文4(key(200),并行保序方案)属于两条流;报文5 (key (100),并行保序方案)和报文6 (key (100),互斥保序方案)属于两条流。在步骤302,保序单元101可根据设置的流匹配规则对接收到的报文进行流匹配。在步骤303,保序单元101可根据流匹配的结果,针对同一条流中的每个报文生成排序队列。其中,排序队列用于对同一条流中的每个报文进行排序并设置索引。具体地,保序单元101将同一条流中的每个报文存储为排序队列,此时,排序队列中存储的报文被排序,并被设置索引,例如,索引可以是序号1,2,3……。返回参照图2,在步骤203,业务核102至105向保序单元101申请报文。在步骤204,保序单元101响应于业务核102至105的申请将接收到的报文调度给业务核。具体地,保序单元101可根据流匹配的结果,对接收到的报文中的每个报文进行调度。其中,针对保序方案被设置为并行保序方案的流和针对保序方案被设置为非保序方案的流,保序单元101将接收到的报文中的每个报文调度给业务核102至105中的一个或多个核,从而报文可在业务核102至105中的所述一个或多个核中被并行处理;针对保序方案被设置为互斥保序方案的流,保序单元101将接收到的报文中的每个报文调度给业务核102至105中的一个业务核,从而报文可在业务核102至105中的所述一个业务核中被依次处理。在步骤205,业务核102至105对报文进行业务处理。在步骤206,业务核102至105在对报文处理完毕之后,可向保序单元101发送报文处理完毕的通知。在步骤207,保序单元101在接收到业务核102至105发送的报文处理完毕的通知之后,发送处理完毕的报文。具体地,针对保序方案被设置为并行保序方案的流,保序单元101确定该流中处理完毕的报文是否位于排序队列的最前面。如果处理完毕的报文位于排序队列的最前面,则保序单元101发送该处理完毕的报文。如果在排序队列中在处理完毕的报文之前存在没被处理完毕的报文,则保序单元101不发送该处理完毕的报文,而是等待前面的报文处理完毕并发送之后才发送该处理完毕的报文。例如,图4是根据本发明的示例性实施例的发送保序方案被设置为并行保序方案的流中的报文的示意图。参照图4,排序队列包括索引号为5、6、7、8、9的报文,其中,无阴影框表示处理完毕的报文5、7、9,有阴影框表示正在处理的报文6、8。根据该排序队列,保序单元101确定处理完毕的报文5是否位于排序队列的最前面。如图4所示,处理完毕的报文5位于排序队列的最前面,因此,保序单元101发送处理完毕的报文5。随后,保序单元101确定处理完毕的报文7是否位于排序队列的最前面。如图4所示,在处理完毕的报文7之前存在正在处理的报文6,因此,保序单元101不发送处理完毕的报文7,而是等待前面的报文6处理完毕并发送之后才发送处理完毕的报文7。依此类推。针对保序方案被设置为互斥保序方案的流,保序单元101可根据排序队列依次发送被依次处理的多个报文。 例如,图5是根据本发明的示例性实施例的发送保序方案被设置为互斥保序方案的流中的报文的示意图。参照图5,排序队列包括索引号为5、6、7、8、9的报文,其中,无阴影框表示处理完毕的报文5、6、7,有阴影框表示正在处理的报文8、9。由于互斥保序方案是由一个业务核依次处理同一条流中的多个报文,因此,在该排序队列中,在处理完毕的报文之前不会存在正在处理的报文,保序单元101可依次发送处理完毕的报文,从而达到了自然保序的效果。针对保序方案被设置为非保序方案的流,保序单元101可不考虑保序操作而直接发送排序队列中处理完毕的报文。例如,图6是根据本发明的示例性实施例的发送保序方案被设置为非保序方案的流中的报文的示意图。参照图6,排序队列包括索引号为5、6、7、8、9的报文,其中,无阴影框表示处理完毕的报文5、7、9,有阴影框表示正在处理的报文6、8。根据该排序队列,保序单元101可直接发送处理完毕的报文5、7、9,而不考虑处理完毕的报文5、7或9之前是否存在正在处理的报文6或8。因此,发送的报文不能被保序。根据本发明的示例性实施例的在多核处理器系统中使用的报文保序方法通过将多核处理器系统中的一个核用作保序单元以进行对报文的调度和保序,并将多核处理器系统中的其它多个核用作多个业务核以进行对报文的处理,实现了不必使用硬件协处理器也能够在通用多核处理器中使用的报文保序方法,扩大了在选取网络设备的处理器时芯片选择的范围。此外,通过所述方法,多个业务核仅需进行具体的业务处理,而不必考虑复杂的保序工作,简化了多个业务核对报文处理的流程,达到了有效避免乱序,提高处理和转发效率。虽然本发明是参照其示例性实施例被显示和描述的,但是本领域的技术人员应该理解,在不脱离由权利要求及其等同物限定的本发明的精神和范围的情况下,可以对其形式和细节进行各种改变。
权利要求
1.一种在多核处理器系统中使用的报文保序方法,所述方法包括 将多核处理器系统中的一个核用作保序单元,并将多核处理器系统中的其它核用作业务核; 保序单元针对接收到的报文进行保序预处理; 业务核向保序单元申请报文; 保序单元响应于业务核的申请将接收到的报文调度给业务核; 业务核对报文进行业务处理; 保序单元发送处理完毕的报文。
2.如权利要求I所述的方法,其中,保序单元针对接收到的报文排序进行保序预处理的步骤包括 设置流匹配规则; 根据设置的流匹配规则,对接收到的报文进行流匹配; 根据流匹配的结果,针对同一条流中的每个报文生成排序队列,其中,排序队列用于对接收到的报文进行排序并设置索引。
3.如权利要求2所述的方法,其中,保序单元设置流匹配规则的步骤包括 针对每个报文设置流匹配元组; 针对每个报文设置保序方案; 将流匹配元组相同并且保序方案也相同的报文确定为属于同一条流。
4.如权利要求3所述的方法,其中,保序单元针对每个报文设置流匹配元组的步骤包括 将流匹配元组设置为包括每个报文中的源IP、目的IP、源端口、目的端口、协议类型、物理链路PORT的任意组合,并且,流匹配元组相同表示流匹配元组中包括的每个元组都相同。
5.如权利要求3所述的方法,其中,保序单元针对每个报文设置保序方案的步骤包括针对每个报文将保序方案设置为并行保序方案、互斥保序方案和非保序方案之一。
6.如权利要求5所述的方法,其中,保序单元将接收到的报文中的报文调度给业务核的步骤包括 保序单元根据流匹配的结果,针对保序方案被设置为并行保序方案的流和针对保序方案被设置为非保序方案的流,保序单元将接收到的报文中的每个报文调度给所述业务核中的一个或多个业务核; 针对保序方案被设置为互斥保序方案的流,保序单元将接收到的报文中的每个报文调度给所述业务核中的一个业务核。
7.如权利要求5所述的方法,其中,保序单元发送处理完毕的报文的步骤包括 针对保序方案被设置为并行保序方案的流,保序单元确定该流中处理完毕的报文是否位于排序队列的最前面; 如果处理完毕的报文位于排序队列的最前面,则保序单元发送该处理完毕的报文;如果在排序队列中在处理完毕的报文之前存在没被处理完毕的报文,则保序单元不发送该处理完毕的报文,而是等待前面的报文处理完毕并发送之后才发送该处理完毕的报文。
8.如权利要求5所述的方法,其中,保序单元发送处理完毕的报文的步骤还包括针对保序方案被设置为互斥保序方案的流,保序单元根据排序队列依次发送被依次处理的多个报文。
9.如权利要求5所述的方法,其中,保序单元发送处理完毕的报文的步骤还包括针对保序方案被设置为非保序方案的流,保序单元不考虑保序操作而直接发送排序队列中处理完毕的报文。
全文摘要
本发明提供了一种在多核处理器系统中使用的报文保序方法,所述方法包括将多核处理器系统中的一个核用作保序单元,并将多核处理器系统中的其它核用作业务核;保序单元针对接收到的报文进行保序预处理;业务核向保序单元申请报文;保序单元将接收到的报文中的报文调度给业务核;业务核对报文进行业务处理;保序单元发送处理完毕的报文。所述方法可在不使用硬件协处理器的情况下能够在通用多核处理器中进行报文保序。
文档编号H04L12/56GK102801635SQ20121031565
公开日2012年11月28日 申请日期2012年8月30日 优先权日2012年8月30日
发明者赵晗, 路涛, 范成龙 申请人:北京傲天动联技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1