本发明涉及嵌入式领域,尤其涉及一种rapidio系统链路聚合的方法及装置。
背景技术:
基于数据包交换的互连体系(rapidio)总线作为一种高速串行总线,与万兆以太网相比,具有高性能、低延迟、高效率等特性,更能满足强实时嵌入式系统的应用需求。rapidio总线技术是一种基于数据包交换的系统级互连协议,主要应用于系统内部的互连,可支持芯片间和板间的灵活高效通信,最大通信速率支持60gbps。
在atca中应用rapidio总线技术,可以实现rapidio总线技术的优点,现有技术下,参阅图1所示,为atca机箱rapidio网络连接示意图。
atca机箱中,节点板业务通道通过机箱背板分别连接到7槽和8槽两块交换板,这两块交换板可以工作在双活工作模式下,而双活工作模式要求7槽和8槽交换板能够同时交换来自节点板之间的rapidio报文。
但是,现有技术下,rapidio协议中不支持链路聚合技术,这就导致这种连接会使得rapidio交换可能出现相同的路由,会造成rapidio交换工作异常。例如,节点板1通过rapidio背板网络访问节点板2,rapidio报文到达rapidio交换器,rapidio交换器查找交换路由表时发现,有两条路由可以到达节点板2,既可以通过port0,也可以通过port1,然而rapidio交换器没有规则约束走哪条路由,这样会造成rapidio交换器的工作异常,甚至环路;而有些rapidio系统通过枚举发现功能,也只能发现7槽或8槽rapidio交换板其中的一条路由。
由此可见,现有技术下,rapidio协议中不支持链路聚合技术,且在atca 架构中,在双活工作模式下,可能出现rapidio交换工作异常,导致rapidio交换吞吐容量不足的问题。
技术实现要素:
本发明实施例提供一种rapidio系统链路聚合的方法及装置,以解决现有技术中不能在rapidio系统中实现链路聚合,导致rapidio终端单端口性能不足的问题。
本发明实施例提供的具体技术方案如下:
一种基于rapidio系统链路聚合的方法,包括:
rapidio交换器在接收到rapidio报文时,根据预设的交换路由映射关系,确定目的终端标识所对应的交换聚合组;其中,上述rapidio报文中至少包括目的终端标识,上述交换聚合组表示多个交换物理端口的集合;
rapidio交换器根据预设的交换聚合组负载分担类型,从上述交换聚合组中,确定当前使用的交换物理端口;
rapidio交换器通过上述当前使用的交换物理端口,向目的终端发送rapidio报文。
较佳的,rapidio交换器在接收到rapidio报文之前,进一步包括:
创建交换聚合组,并根据预设规则,将多个交换物理端口分别添加到上述交换聚合组中,以及设置上述交换聚合组的交换聚合组负载分担类型。
较佳的,上述预设的负载分担类型,至少包括:1+1负载分担模式、n:1负载分担模式和基于源或目的终端标识的流分发模式,其中,n>=1。
较佳的,设置上述交换聚合组的交换聚合组负载分担类型之后,在rapidio交换器在接收到rapidio报文之前,进一步包括:
若交换聚合组负载分担类型为1+1负载分担模式,则从上述交换聚合组中任意选择一个交换物理端口作为参考端口,并将除上述参考端口之外的另一个交换物理端口作为备用端口;或,
若交换聚合组负载分担类型为n:1负载分担模式,则从上述交换聚合组 中任意选择一个交换物理端口作为备用端口;或,
若交换聚合组负载分担类型为基于源或目的终端标识的流分发模式,则设置源或目的终端标识与交换物理端口之间的映射关系;其中,上述rapidio报文中还至少包括源终端标识。
较佳的,rapidio交换器根据预设的交换聚合组负载分担类型,从上述交换聚合组中,确定当前使用的交换物理端口,具体包括:
若上述预设的负载分担类型为1+1负载分担模式,则将上述交换聚合组中的参考端口作为当前使用的交换物理端口;或,
若上述预设的负载分担类型为n:1负载分担模式,则将上述交换聚合组中的除上述备选端口之外的任意一个交换物理端口,作为当前使用的物理端口;或,
若上述预设的负载分担类型为基于源或目的终端标识的流分发模式,则根据rapidio报文中的源或目的终端标识,以及预设的源或目的终端标识与交换物理端口之间的映射关系,确定当前使用的交换物理端口。
一种基于rapidio系统链路聚合的装置,包括:
第一确定单元,用于在接收到rapidio报文时,根据预设的交换路由映射关系,确定目的终端标识所对应的交换聚合组;其中,上述rapidio报文中至少包括目的终端标识,上述交换聚合组表示多个交换物理端口的集合;
第二确定单元,用于根据预设的交换聚合组负载分担类型,从上述交换聚合组中,确定当前使用的交换物理端口;
发送单元,用于通过上述当前使用的交换物理端口,向目的终端发送rapidio报文。
较佳的,第一确定单元在接收到rapidio报文之前,进一步包括:
创建单元,用于创建交换聚合组,并根据预设规则,将多个交换物理端口分别添加到上述交换聚合组中,以及设置上述交换聚合组的交换聚合组负载分担类型。
较佳的,上述预设的负载分担类型,至少包括:1+1负载分担模式、n:1负载分担模式和基于源或目的终端标识的流分发模式,其中,n>=1。
较佳的,设置上述交换聚合组的交换聚合组负载分担类型之后,在rapidio交换器在接收到rapidio报文之前,创建单元进一步用于:
若交换聚合组负载分担类型为1+1负载分担模式,则从上述交换聚合组中任意选择一个交换物理端口作为参考端口,并将除上述参考端口之外的另一个交换物理端口作为备用端口;或,
若交换聚合组负载分担类型为n:1负载分担模式,则从上述交换聚合组中任意选择一个交换物理端口作为备用端口;或,
若交换聚合组负载分担类型为基于源或目的终端标识的流分发模式,则设置源或目的终端标识与交换物理端口之间的映射关系;其中,上述rapidio报文中还至少包括源终端标识。
较佳的,根据预设的交换聚合组负载分担类型,从上述交换聚合组中,确定当前使用的交换物理端口时,第二确定单元具体用于:
若上述预设的负载分担类型为1+1负载分担模式,则将上述交换聚合组中的参考端口作为当前使用的交换物理端口;或,
若上述预设的负载分担类型为n:1负载分担模式,则将上述交换聚合组中的除上述备选端口之外的任意一个交换物理端口,作为当前使用的物理端口;或,
若上述预设的负载分担类型为基于源或目的终端标识的流分发模式,则根据rapidio报文中的源或目的终端标识,以及预设的源或目的终端标识与交换物理端口之间的映射关系,确定当前使用的交换物理端口。
本发明实施例中,rapidio交换器在接收到rapidio报文时,根据预设的交换路由映射关系,确定目的终端标识所对应的交换聚合组;其中,上述rapidio报文中至少包括目的终端标识,上述交换聚合组表示多个交换物理端口的集合;rapidio交换器根据预设的交换聚合组负载分担类型,从上述交换聚合组 中,确定当前使用的交换物理端口;rapidio交换器通过上述当前使用的交换物理端口,向目的终端发送rapidio报文,这样,将多个交换物理端口聚合在一起,成为一个交换聚合组,实现rapidio系统中多个链路的聚合,rapidio交换器接收到rapidio报文时,查找到对应的交换聚合组,并根据预设的负载分担类型,确定从对应交换聚合组中的哪一个交换物理端口将rapidio报文发送给目的终端,不仅解决了单交换物理端口性能不足的问题,而且实现了出/入流量在各个交换物理端口中的负载分担。
附图说明
图1为现有技术下,atca机箱rapidio网络连接示意图;
图2为本发明实施例中,rapidio系统链路聚合的方法流程图;
图3为本发明实施例中,atca机箱rapidio链路聚合示意图;
图4为本发明实施例中,创建交换聚合组的方法流程图;
图5为本发明实施例中,从交换聚合组中删除交换物理端口的方法流程图;
图6为本发明实施例中,rapidio系统链路聚合的装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术中不能在rapidio系统中实现链路聚合的问题,本发明实施例中,发送rapidio报文时,确定对应的交换聚合组,并根据预设的交换聚合组负载分担类型,从交换聚合组中确定出当前使用的交换物理端口,以及通过上述当前使用的交换物理端口,完成rapidio报文的发送。
下面通过具体实施例对本发明方案进行详细描述,当然,本发明并不限于以下实施例。
参阅图2所示,本发明实施例中,rapidio系统链路聚合的方法的具体流程如下:
步骤100:rapidio交换器在接收到rapidio报文时,根据预设的交换路由映射关系,确定目的终端标识所对应的交换聚合组;其中,上述rapidio报文中至少包括目的终端标识,上述交换聚合组表示多个交换物理端口的集合。
值得说明的是,rapidio系统中,终端和交换器是构成rapidio系统的两类主要器件,其中,终端是数据包的源或目的地,数据包从一个终端传送到另一个终端,不同的终端以终端标识(id)来区分,而交换器负责数据包在各个终端间的路由和传送。
在执行步骤100之前,创建交换聚合组,将rapidio交换器上多个交换物理端口添加到相应的交换聚合组中,并且,预先设置每一个交换聚合组的负载分担类型,并根据负载分担类型,相应地对每一个交换聚合组进行配置,具体地,创建交换聚合组的过程如下:
首先,创建交换聚合组,并对于每一个交换聚合组都给定一个标识,例如,交换聚合组0、交换聚合组1,……。
然后,在每一个交换聚合组中添加交换物理端口,其中,一个交换聚合组中可以包含多个交换物理端口,也可以只包含一个交换物理端口。
进一步地,若交换聚合组中不需要某个交换物理端口时,可以将不需要的交换物理端口从相应的交换聚合组中删除。
然后,设置每一个交换聚合组的负载分担类型。
其中,负载分担类型可以包括以下几种:1+1负载分担模式、n:1负载分担模式(n>=1)和基于源或目的终端标识的流分发模式,当然,交换聚合组的负载分担类型,并不仅限于以上三种,其它负载分担类型也可以,这里就不再一一赘述了。
最后,基于每一个交换聚合组设置的负载分担类型,分别对每一个交换聚合组进行配置,具体地分为以下三种情况:
第一种情况:若交换聚合组负载分担类型为1+1负载分担模式,则从上述交换聚合组中任意选择一个交换物理端口作为参考端口,并将除上述参考端口之外的另一个交换物理端口作为备用端口;或,
第二种情况:若交换聚合组负载分担类型为n:1负载分担模式,则从上述交换聚合组中任意选择一个交换物理端口作为备用端口;或,
第三种情况:若交换聚合组负载分担类型为基于源或目的终端标识的流分发模式,则设置源或目的终端标识与交换物理端口之间的映射关系;其中,上述rapidio报文中还至少包括源终端标识。
进一步地,也可以将交换聚合组进行删除,同时释放交换聚合组中的交换物理端口和该交换聚合组的属性资源,例如,负载分担类型、参考端口、备用端口等。
这样,创建完交换聚合组之后,对于每一个rapidio交换器,都对应一个交换路由映射关系,例如,可以设置一个交换路由表,用于记录不同目的终端标识和交换聚合组的映射关系。
执行步骤100时,就可以查找预设的交换路由映射关系,确定目的终端标识所对应的交换聚合组。
步骤110:rapidio交换器根据预设的交换聚合组负载分担类型,从上述交换聚合组中,确定当前使用的交换物理端口。
执行步骤110时,具体可以分为以下三种情况:
第一种情况:若上述预设的负载分担类型为1+1负载分担模式,则将选择的参考端口作为当前使用的交换物理端口。
第二种情况:若上述预设的负载分担类型为n:1负载分担模式,则将除备用端口之外的任意一个交换物理端口,作为当前使用的物理端口。
第三种情况:若上述预设的负载分担类型为基于源或目的终端标识的流分发模式,则根据rapidio报文中携带的源或目的终端标识,以及源或目的终端标识与交换物理端口之间的映射关系,确定当前使用的交换物理端口。
进一步地,当检测到当前使用的交换物理端口的链路发生故障时,就停止在此交换物理端口上发送rapidio报文,并根据预设的负荷分担类型,在剩下链路中重新计算发送rapidio报文的交换物理端口,故障交换物理端口恢复后再次重新计算发送rapidio报文的交换物理端口。
步骤120:rapidio交换器通过上述当前使用的交换物理端口,向目的终端发送rapidio报文。
这样,将多个交换物理端口聚合在一起,成为一个交换聚合组,实现多个链路的聚合,rapidio系统中,链路是与交换物理端口对应的,因此,链路的聚合就是交换物理端口的聚合,并根据预设的负载分担类型,确定从交换聚合组中的哪一个交换物理端口发送和接收rapidio报文,实现出/入流量在各个交换物理端口中的负载分担。
进一步地,通过当前使用的交换物理端口的链路传送rapidio报文,这样在上述链路的另一端接收rapidio报文就可以了,之后再由rapidio交换器直接转发给目的终端。
下面采用一个具体的应用场景对上述实施例作出进一步详细说明。具体参阅图3所示,为atca机箱中rapidio系统链路聚合示意图。
参阅图3上述,atca机箱中,有四个终端,分别为终端a、终端b、终端c和终端d,相应的终端标识分别为0、1、2和3。其中,终端a和终端b在节点板1上,终端c和终端d在节点板2上,每一个节点板内有一个板内rapidio交换,每一个板内rapidio交换对应一个预设的交换路由表,节点板1和节点板2的业务通道通过机箱背板(rapidio背板网络)分别连接到7槽和8槽rapidio交换板。
其中,每一个板内rapidio交换可能对应多个交换物理端口,将多个交换物理端口聚合成一个交换聚合组,实现链路聚合,每一条链路对应一个交换物理端口,预设的交换路由表中记录的为,目的终端标识和交换聚合组标识的对应关系,这里以仅有一个交换聚合组为例,交换聚合组的标识为0,且包含两 个交换物理端口port0和port1。
下面介绍下,rapidio系统链路聚合的方法的具体执行过程:
首先,节点板1中的板内rapidio交换器接收到rapidio报文时,例如,rapidio报文中包含的源终端标识为0,目的终端标识为2,则需要将该rapidio报文转发到终端c。
然后,节点板1中的板内rapidio交换器查找对应的交换路由表,确定发送到终端c的交换聚合组为交换聚合组0。
然后,节点板1中的板内rapidio交换器根据交换聚合组0的负载分担类型,例如为1+1负载分担模式,且设置的参考端口为port0,则确定当前使用的交换物理端口为port0。
然后,节点板1中的板内rapidio交换器通过port0发送rapidio报文到目的终端,即通过port0的链路(7槽rapidio交换板)传送rapidio报文。
然后,节点板2中的rapidio交换器相应的从port0上接收到rapidio报文,并将rapidio报文发送的终端c。
这样,将rapidio交换器的多个交换物理端口聚合成为一个交换聚合组,以实现各交换物理端口之间的负载分担,解决rapidio交换器单端口性能不足的问题,且支持atca机箱双活rapidio交换工作模式,即7槽和8槽rapidio交换板可以同时交换来自节点板之间的rapidio报文,避免了环路或单条rapidio通路故障引起的问题,解决了atca机箱在双活工作模式下,rapidio交换异常的问题。
下面采用一个具体的应用场景对上述实施例作出进一步详细说明。具体参阅图4所示,创建交换聚合组的具体执行过程如下:
步骤200:创建交换聚合组,并给定交换聚合组的标识。
步骤201:向交换聚合组中添加交换物理端口。
步骤202:配置交换聚合组负载分担类型。
步骤203:若配置的负载分担类型为1+1负载分担模式,则执行步骤204。
步骤204:选择参考端口和备用端口。
具体地,可以将编号最小的交换物理端口作为参考端口,也可以任意选择其中一个作为参考端口,则另一个即为备用端口。
步骤205:若配置的负载分担类型为n:1负载分担模式,则执行步骤206。
步骤206:选择备用端口。
具体地,可以将编号最小的交换物理端口作为备用端口,也可以任意选择其中一个作为备用端口,则除备用端口外其它任意一个交换物理端口都可以作为参考端口,用于传输rapidio报文。
步骤207:若配置的负载分担类型为基于源或目的终端标识的流分发模式,则执行步骤208。
步骤208:建立源或目的终端标识与交换物理端口映射关系。
这样,在传输rapidio报文时,根据源或目的终端标识与交换物理端口映射关系,确定对应的交换物理端口,作为当前使用的交换物理端口。
下面采用一个具体的应用场景对上述实施例作出进一步详细说明。具体参阅图5所示,从交换聚合组中删除交换物理端口的具体执行过程如下:
步骤300:判断交换聚合组负载分担类型。
步骤301:若确定负载分担类型为1+1负载分担模式,则执行步骤302。
步骤302:判断待删除的交换物理端口是否为参考端口,若是,则执行步骤303,否则,执行步骤304。
步骤303:删除参考端口,并从交换聚合组内其余的交换物理端口中选择一个链路状态正常(linkup)的交换物理端口作为参考端口。
步骤304:直接删除该交换物理端口。
步骤305:若确定负载分担类型为n:1负载分担模式,则执行步骤306。
步骤306:判断待删除的交换物理端口是否为备用端口,若是,则执行步骤307,否则,执行步骤304。
步骤307:删除备用端口,并从交换聚合组内其余的交换物理端口中选择 一个链路状态linkup的交换物理端口作为备用端口。
基于上述实施例,参阅图6所示,本发明实施例中,rapidio系统链路聚合的装置,具体包括:
第一确定单元40,用于在接收到rapidio报文时,根据预设的交换路由映射关系,确定目的终端标识所对应的交换聚合组;其中,上述rapidio报文中至少包括目的终端标识,上述交换聚合组表示多个交换物理端口的集合;
第二确定单元41,用于根据预设的交换聚合组负载分担类型,从上述交换聚合组中,确定当前使用的交换物理端口;
发送单元42,用于通过上述当前使用的交换物理端口,向目的终端发送rapidio报文。
较佳的,第一确定单元在接收到rapidio报文之前,进一步包括:
创建单元43,用于创建交换聚合组,并根据预设规则,将多个交换物理端口分别添加到上述交换聚合组中,以及设置上述交换聚合组的交换聚合组负载分担类型。
较佳的,上述预设的负载分担类型,至少包括:1+1负载分担模式、n:1负载分担模式和基于源或目的终端标识的流分发模式,其中,n>=1。
较佳的,设置上述交换聚合组的交换聚合组负载分担类型之后,在rapidio交换器在接收到rapidio报文之前,创建单元43进一步用于:
若交换聚合组负载分担类型为1+1负载分担模式,则从上述交换聚合组中任意选择一个交换物理端口作为参考端口,并将除上述参考端口之外的另一个交换物理端口作为备用端口;或,
若交换聚合组负载分担类型为n:1负载分担模式,则从上述交换聚合组中任意选择一个交换物理端口作为备用端口;或,
若交换聚合组负载分担类型为基于源或目的终端标识的流分发模式,则设置源或目的终端标识与交换物理端口之间的映射关系;其中,上述rapidio报文中还至少包括源终端标识。
较佳的,根据预设的交换聚合组负载分担类型,从上述交换聚合组中,确定当前使用的交换物理端口时,第二确定单元41具体用于:
若上述预设的负载分担类型为1+1负载分担模式,则将上述交换聚合组中的参考端口作为当前使用的交换物理端口;或,
若上述预设的负载分担类型为n:1负载分担模式,则将上述交换聚合组中的除上述备选端口之外的任意一个交换物理端口,作为当前使用的物理端口;或,
若上述预设的负载分担类型为基于源或目的终端标识的流分发模式,则根据rapidio报文中的源或目的终端标识,以及预设的源或目的终端标识与交换物理端口之间的映射关系,确定当前使用的交换物理端口。
综上所述,本发明实施例中,rapidio交换器在接收到rapidio报文时,根据预设的交换路由映射关系,确定目的终端标识所对应的交换聚合组;其中,上述rapidio报文中至少包括目的终端标识,上述交换聚合组表示多个交换物理端口的集合;rapidio交换器根据预设的交换聚合组负载分担类型,从上述交换聚合组中,确定当前使用的交换物理端口;rapidio交换器通过上述当前使用的交换物理端口,向目的终端发送rapidio报文,这样,将多个交换物理端口聚合在一起,成为一个交换聚合组,实现多个链路的聚合,rapidio交换器接收到rapidio报文时,查找到对应的交换聚合组,并根据预设的负载分担类型,确定从对应交换聚合组中的哪一个交换物理端口将rapidio报文发送给目的终端,不仅解决了单交换物理端口性能不足的问题,而且实现了出/入流量在各个交换物理端口中的负载分担。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。