一种流量转发方法及设备与流程

文档序号:16582420发布日期:2019-01-14 18:05阅读:364来源:国知局
一种流量转发方法及设备与流程

本发明涉及通信技术领域,具体而言,涉及一种流量转发方法及设备。



背景技术:

在跨设备分布式聚合组(multi-chassislinkaggregationgroup,mlag)实现中,内部控制链路(intra-portallink,ipl)故障而保活链路处于正常工作的情况下。备用设备会下发多active检测(multi-activedetection,mad)down指令,使所有未被加入madexculd组中的接口全部被mad-down。此时,客户端的流量走主设备前往公网。

图1为现有技术提供的mlag组网结构示意图,如图1所示,设备c101为终端侧的交换机,在设备c101向网络侧的服务器104上传流量数据时,假设设备a102为主设备,设备b103为备用设备,如果主设备102的上行链路发生故障,则流量无法通过主设备进行转发,而且由于ipl故障导致备用设备103的下行接口被maddown。因此流量无法到达公网,导致业务中断。



技术实现要素:

有鉴于此,本发明实施例的目的在于提供一种流量转发方法,以解决当主设备的上行链路及ipl链路同时故障时,流量无法转发的技术问题。

第一方面,本发明实施例提供了一种流量转发方法包括:

第二设备接收对端的第一设备发送的第一报文,从所述第一报文中获取所述第一设备对应的上行链路组状态,其中,所述第一设备与所述第二设备中的一个为主设备,另一个为备用设备;

若主设备的上行链路组状态为非工作状态且所述第一设备与所述第二设备之间的ipl链路故障,则所述第二设备根据预先配置的确定设备优先级的参数进行角色选举,确定新的主设备,以使新的主设备进行流量转发。

进一步地,所述第二设备根据预先配置的确定设备优先级的参数进行角色选举,包括:

所述第二设备根据预先配置的确定设备优先级的参数确定所述第一设备的第一当前优先级以及所述第二设备的第二当前优先级;

确定所述第一当前优先极和所述第二当前优先级中较大者对应的设备为所述新的主设备。

进一步地,所述方法,还包括:

在所述ipl链路故障前,所述第二设备通过所述ipl链路接收第一配置优先级以及第一操作类型。

进一步地,所述方法,还包括:

所述第二设备接收上行设备发送的双向转发检测bfd消息;

所述第二设备从所述bfd消息中确定所述第二设备的上行链路组状态。

进一步地,所述方法,还包括:

所述第二设备向所述第一设备发送包括所述第二设备的上行链路组状态的第二报文,以使所述第一设备根据所述第二设备的上行链路组状态计算所述第二设备的当前优先级。

进一步地,所述方法,还包括:

若所述主设备的上行链路组恢复为工作状态,且所述ipl链路仍故障,则所述第二设备进行角色选举,重新确定新的主设备。

进一步地,若所述第二设备被选举为新的主设备,所述方法还包括:

若所述ipl链路恢复,且主设备的上行链路组为非工作状态,则所述第二设备继续进行流量转发。

进一步地,所述第二设备为备用设备,所述第二设备根据预先配置的确定设备优先级的参数确定所述第一设备的第一当前优先级以及所述第二设备的第二当前优先级,包括:

所述第二设备根据所述第一设备对应的第一配置优先级和第一操作类型计算所述第一当前优先级;

若所述第二设备的上行链路组状态为工作状态,则所述第二设备确定所述第二设备对应的第二配置优先级为所述第二当前优先级;

若所述第二设备的上行链路组状态为非工作状态,则所述第二设备根据所述第二设备对应的第二配置优先级和第二操作类型计算所述第二当前优先级。

进一步地,所述第二设备为主设备,所述第二设备根据预先配置的确定设备优先级的参数确定所述第一设备的第一当前优先级以及所述第二设备的第二当前优先级,包括:

所述第二设备根据所述第二设备对应的第二配置优先级和所述第二操作类型计算所述第二当前优先级;

若所述第一设备的上行链路组状态为工作状态,则所述第二设备确定所述第一设备对应的第一配置优先级为所述第一当前优先级;

若所述第一设备的上行链路组状态为非工作状态,则所述第二设备根据所述第一设备对应的第一配置优先级和第一操作类型计算所述第一当前优先级。

进一步地,所述第二设备为备用设备,所述第一报文为保活报文,且所述第一报文还包括提示字段;所述提示字段用于提示所述第二设备是否需要获取所述第一报文中的第一设备的上行链路组状态;

在第二设备接收对端的第一设备发送的第一报文之后,以及从所述第一报文中获取所述第一设备对应的上行链路组状态之前,所述方法还包括:

所述第二设备确定所述第一报文中所述提示字段置位。

进一步地,所述第二设备为主设备,所述方法还包括:

若所述第二设备的上行链路组状态为非工作状态,所述第二设备生成第三报文,所述第三报文包括提示字段,且所述提示字段被置位,以使所述第一设备在确定所述提示字段置位后,从所述第三报文中获取所述第二设备的上行链路组状态。

第二方面,本发明实施例提供一种流量转发装置,包括:

第一接收模块,用于接收对端的第一设备发送的第一报文,从所述第一报文中获取所述第一设备对应的上行链路组状态,其中,所述第一设备与所述第二设备中的一个为主设备,另一个为备用设备;

选举模块,用于若主设备的上行链路组状态为非工作状态且所述第一设备与所述第二设备之间的ipl链路故障,则根据预先配置的确定设备优先级的参数进行角色选举,确定新的主设备,以使新的主设备进行流量转发。

进一步地,所述选举模块,具体用于:

根据预先配置的确定设备优先级的参数确定所述第一设备的第一当前优先级以及所述第二设备的第二当前优先级;

确定所述第一当前优先极和所述第二当前优先级中较大者对应的设备为所述新的主设备。

进一步地,所述装置,还包括:

第二接收模块,用于在所述ipl链路故障前,通过所述ipl链路接收所述第一配置优先级以及所述第一操作类型。

进一步地,所述装置,还包括:

第三接收模块,用于接收上行设备发送的双向转发检测bfd消息;

第一确定模块,用于从所述bfd消息中确定所述第二设备的上行链路组状态。

进一步地,所述装置,还包括:

发送模块,用于向所述第一设备发送包括所述第二设备的上行链路组状态的第二报文,以使所述第一设备根据所述第二设备的上行链路组状态计算所述第二设备的当前优先级。

进一步地,所述装置,还包括:

第二选举模块,用于若所述主设备的上行链路组恢复为工作状态,且所述ipl链路仍故障,则进行角色选举,重新确定新的主设备。

进一步地,若所述第二设备被选举为新的主设备,所述装置,还包括:

转发模块,用于若所述ipl链路恢复,且主设备的上行链路组为非工作状态,则继续进行流量转发。

进一步地,所述第二设备为备用设备,所述选举模块,具体用于:

根据所述第一设备对应的第一配置优先级和第一操作类型计算所述第一当前优先级;

若所述第二设备的上行链路组状态为工作状态,则确定所述第二设备对应的第二配置优先级为所述第二当前优先级;

若所述第二设备的上行链路组状态为非工作状态,则根据所述第二设备对应的第二配置优先级和第二操作类型计算所述第二当前优先级。

进一步地,所述第二设备为主设备,所述选举模块,具体用于:

根据所述第二设备对应的第二配置优先级和所述第二操作类型计算所述第二当前优先级;

若所述第一设备的上行链路组状态为工作状态,则确定所述第一设备对应的第一配置优先级为所述第一当前优先级;

若所述第一设备的上行链路组状态为非工作状态,则根据所述第一设备对应的第一配置优先级和第一操作类型计算所述第一当前优先级。

进一步地,所述第二设备为备用设备,所述第一报文为保活报文,且所述第一报文还包括提示字段;所述提示字段用于提示所述第二设备是否需要获取所述第一报文中的第一设备的上行链路组状态;

所述装置,还包括:

第二确定模块,用于确定所述第一报文中所述提示字段置位。

进一步地,所述第二设备为主设备,所述装置,还包括:

报文生成模块,用于若所述第二设备的上行链路组状态为非工作状态,所述第二设备生成第三报文,所述第三报文包括提示字段,且所述提示字段被置位,以使所述第一设备在确定所述提示字段置位后,从所述第三报文中获取所述第二设备的上行链路组状态。

第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器和总线,其中,

所述处理器和所述存储器通过所述总线完成相互间的通信;

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面的方法步骤。

第四方面,本发明实施例提供一种非暂态计算机可读存储介质,包括:

所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的方法步骤。

本发明实施例的流量转发方法,在主设备的上行链路组以及ipl链路故障时,在向备用设备发送的报文中增加主设备的上行链路组状态的字段,并降低主设备的优先级,并进行角色选举,获得新的主设备,以使新的主设备进行流量转发,从而避免了流量无法转发的问题,提高了组网的可靠性。

本发明的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为现有技术提供的mlag组网结构示意图;

图2本发明实施例提供的一种流量转发方法流程示意图;

图3本发明实施例提供的一种流量转发装置结构示意图;

图4为本发明实施例提供的电子设备实体结构示意图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

相关技术中,mlag是一种实现跨设备链路聚合的机制,将一台设备与另外两台设备进行跨设备链路聚合,从而把链路可靠性从单板级提高到了设备级,组成双活系统。其中,另外两台设备之间通过内部控制链路(intra-portallink,ipl)和保活链路(keep-alive)进行通信,在ipl链路交换drcp报文,在keep-alive链路交换保活(keep-alive)报文。并且,drcp报文用于交换上行链路组的信息,keep-alive报文用来交换上行链路组的状态。

其中,drcp报文中携带有以下字段:

htype:0001表明后续携带的为链路组信息;

seq:表明当前序列号;

m:表明是否为最后一个链路组信息报文;

gn(groupnumber):12比特,表明本端配置的上行链路group编号;

c:4比特;0001:当前组up;0010:当前组down;0100:当前组recover;

a:4比特;0001:减少role优先级;0010::增加role优先级;0100:本端在上行链路组up的时候强制为p;

v:8比特,当a为0001或0010时指定role优先级的变化量;

f:4比特;0001:表示本端发出的;0002:表示回复报文;

keep-alive报文包括以下字段:

type_l:12比特,前3位表明类型,后9位表明该类型报文的总长度为4;

001xxxxxxxxx表明后面长度为xxxxxxxxx*4的报文携带的为gn和c的信息;

if_a:4比特,用于通告对端是否关注此条keep_alive报文携带的信息。

本发明实施例不修改dr协商状态机,而是在dr协商完成之后增加上行链路组状态。即在现有的keep-alive报文的基础上增加如下字段:

gn(groupnumber):12比特,表明本端配置的上行链路group编号;

c:4比特;0001:当前组up;0010:当前组down;0100:当前组recover。

本发明实现的工作原理为:

在主设备和备用设备之间的ipl链路正常情况下,在ipl链路上通过drcp报文交换上行链路组信息,通过keep-alive交换上行链路组状态,但是不触发选举。在ipl链路失效后激活根据上行链路组状态选举新的主设备的能力,此时只通过keepalive交换上行链路组状态,不再新增或删除维护的上行链路组。

step1:设备配置好mlag基础功能之后,进行角色选举,完成后进行数据同步。

step2:开始配置上行链路组和对应的bfdtrack,由双向转发检测(bidirectionalforwardingdetection,bfd通知mlag进程链路状态,实现上行链路的快速监控。

step3:主设备的上行链路组对应bfdsessionup时,drcp报文中包括gn及c字段,且c字段置up,此时,主设备的上行链路组状态置init。

step4:备用设备收到c字段置up的drcp报文后,检查本地是否有该上行链路组,及对应的操作是否一致。如果一致,将该gn字段添加到keep-alive报文中,c为本地group状态。

step5:主设备收到备用设备的keep-alive报文后,发现后面带有gn及c。如果主设备有对应gn且对应bfdsession状态为up时,本地上行链路组状态置up。

通过drcp报文及keep-alive报文的交互,确保只有配置正确且创建时处于正常状态的链路会被加入维护的列表中。

由上可知,在主设备和备用设备在交换keep-alive报文时,在keep-alive报文中增加各自的上行链路组状态信息,从而当主设备对应的上行链路组发生故障后,通过keep-alive报文中携带的主设备的上行链路组状态激发角色选举能力,从而能够选择出性能较优的作为新的主设备,使新的主设备进行流量转发。

图2示出了本发明实施例的一种流量转发方法流程示意图,如图2所示,该方法,包括:

以图1中的mlag组网为例,在正常情况下,终端侧的交换机c向外网侧发送流量时,会将该流量的负载让主设备a和备用设备b共同承担。主设备a和备用设备b之间通过keep-alive链路和ipl链路进行信息交换。其中,主设备a为第一设备;备用设备b为第二设备。

步骤201:第二设备接收对端的第一设备发送的第一报文,从所述第一报文中获取所述第一设备对应的上行链路组状态。

在具体的实施过程中,当第一设备的上行链路组发生故障时,第一设备会将第一报文中的对应上行链路组编号对应的第一上行链路组状态(c字段)设置为down,以及将该第一报文通过第一设备和第二设备之间的keep-alive链路发送至第二设备。第二设备在接收到第一报文之后对其进行解析,获得第一报文中的第一设备的上行链路组状态为down,则得知第一设备的上行链路组发生了故障。应当说明的是,在第一报文中除了包括第一设备的上行链路组状态之外,还可以包括其他字段,例如:提示字段if_a,上行链路组编号等,上行链路组编号及对应的第一上行链路组状态的个数与第一设备对应的上行链路组的个数相关,一般不超过10个。可以理解的是,第二设备也会向第一设备发送第二报文。还应当说明的是,第一设备向第二设备发送报文的时机可以是按照预先配置的周期发送,也可以是当第一设备得知对应的上行链路组发生故障时,无论是否达到发送报文的时机,都会立即向第二设备发送第一报文。

步骤202:若主设备的上行链路组状态为非工作状态且所述第一设备与所述第二设备之间的ipl链路故障,则所述第二设备根据预先配置的确定设备优先级的参数进行角色选举,确定新的主设备,以使新的主设备进行流量转发。

在具体的实施过程中,在第二设备接收到第一设备发送的第一报文后,通过第一报文判断得知第一设备的上行链路组状态为非工作状态,并且第二设备得知第一设备与第二设备之间的ipl链路发生了故障后,第二设备根据预先配置的确定设备优先级的参数进行角色选举,通过角色选举确定新的主设备,使得通过主设备进行流量转发。假设将第二设备确定为新的主设备,则第二设备的下行接口将被置为up,此时,流量可以通过第二设备及对应的上行链路组进行转发。应当说明的是,在ipl链路正常的情况下,第二设备会根据预设的周期接收第一设备通过ipl链路的发送报文,因此,如果第二设备在预设时间内没有接收到第一设备通过ipl链路的发送报文,则可以判定为ipl链路故障。并且预先配置的确定设备优先级的参数是预先配置的,或者在第一设备与第二设备在进行建立协商时获取到的。其中,在第二设备中的预先配置的确定设备优先级的参数可以是第二设备的第二配置优先级、第一设备对应的第一配置优先级和第一操作类型等。

还应当说明的是,第一设备对应的上行链路组中有任意一条上行链路发生故障,则该第一设备的上行链路组状态为非工作状态。

本发明实施例通过在主设备的上行链路组以及ipl链路故障时,在向备用设备发送的报文中增加主设备的上行链路组状态的字段,并降低主设备的优先级,并进行角色选举,获得新的主设备,以使新的主设备进行流量转发,从而避免了流量无法转发的问题,提高了组网的可靠性。

在上述实施例的基础上,所述第二设备根据预先配置的确定设备优先级的参数进行角色选举,包括:

所述第二设备根据预先配置的确定设备优先级的参数确定所述第一设备的第一当前优先级以及所述第二设备的第二当前优先级;

确定所述第一当前优先极和所述第二当前优先级中较大者对应的设备为所述新的主设备。

在具体的实施过程中,第二设备在进行角色选举时,会根据存储的预先配置的确定设备优先级的参数确定第一设备的第一当前优先级,以及第二设备的第二当前优先级。然后比较第一当前优先级和第二当前优先级,如果第一当前优先级高于第二当前优先级,则第一设备为新的主设备,如果第一当前优先级低于第二当前优先级,则第二设备为新的主设备。

本发明实施例通过计算第一当前优先级和第二当前优先级,并将优先级高的设备作为新的主设备,在原来的主设备的上行链路组发生故障后,触发角色选举,选出性能相对较好的设备作为主设备,保证了始终选择最优的设备进行流量转发,提高流量转发的成功率。

在上述实施例的基础上,所述方法,还包括:

在所述ipl链路故障前,所述第二设备通过所述ipl链路接收第一配置优先级以及第一操作类型。

在具体的实施过程中,在ipl链路故障之前,第一设备和第二设备之间根据预设周期通过ipl链路进行互传drcp报文,第二设备在接收到第一设备通过ipl链路发送的drcp报文后,从drcp报文中获得第一设备的第一配置优先级以及第一操作类型。此时,第二设备可以根据第一配置优先级以及第一操作类型计算第一设备对应的第一当前优先级。

在上述实施例的基础上,所述方法,还包括:

所述第二设备接收上行设备发送的双向转发检测bfd消息;

所述第二设备从所述bfd消息中确定所述第二设备的上行链路组状态。

在具体的实施过程中,第二设备与上行设备通过对应的上行链路组通信连接,上行设备会向第二设备发送bfd消息,在bfd消息中包含有上行链路组状态的信息。当第二设备对应的上行链路组发生故障时,第二设备对应的上行设备会向第二设备发送bfd消息,在bfd消息中包含有上行链路组故障的信息,第二设备在接收到该bfd消息后,可以得知其上行链路组发生了故障。

同理,第一设备与其对应的上行设备之间也存在bfd机制,第一设备接收对应的上行设备发送的bfd消息,通过bfd消息获知对应的上行链路组状态。

本发明实施例通过bfd机制使得第二设备获知其对应的上行链路组状态,为后续第二设备计算其自身对应的第二当前优先级提供依据。

在上述实施例的基础上,所述方法,还包括:

所述第二设备向所述第一设备发送包括所述第二设备的上行链路组状态的第二报文,以使所述第一设备根据所述第二设备的上行链路组状态计算所述第二设备的当前优先级。

在具体的实施过程中,在触发选举时,不但备用设备要进行角色选举,主设备也要进行角色选举。因此,第二设备作为备用设备不但会接收第一设备发送的第一报文,还会向第一设备发送第二报文,该第二报文中包括第二设备的上行链路组状态,使得第一设备也能够获知第二设备当前的上行链路组状态,并根据第二设备的上行链路组状态计算第二设备的当前优先级,进一步用于角色选举。

在上述实施例的基础上,所述方法,还包括:

若所述主设备的上行链路组恢复为工作状态,且所述ipl链路仍故障,则所述第二设备进行角色选举,重新确定新的主设备。

在具体的实施过程中,如果第一设备的上行链路组恢复正常,则第一设备重新计算对应的当前优先级,并且第一设备会向第二设备发送第一报文,此时的第一报文中的第一上行链路组状态为工作状态,即第一报文中的c字段为up,当第二设备接收到第一设备发送的第一报文后,得知第一设备对应的上行链路组已经恢复正常,但是第二设备在超时时间内没有接收到drcp报文,则第二设备得知ipl链路仍然处于故障中,此时,再次出发角色选举,在角色选举时,第二设备再次计算自身的第二当前优先级以及第一设备对应的第一当前优先级,然后根据计算得到的自身的第二当前优先级和第一设备的第一当前优先级进行比较,将优先级高的设备重新作为新的主设备。

另外,在新的主设备进行流量转发之后,第一设备对应的第一上行链路组仍然为非工作状态,但是ipl链路恢复正常,此时,并不会触发角色选举,仍然通过新的主设备进行流量转发。

本发明实施例通过当第一设备的上行链路组恢复工作状态,但ipl链路仍故障时,再次出发角色选举,从而一方面保证只有一个主设备一个备用设备,另一方面,能够保证使用性能最优的设备作为主设备进行流量转发。

在上述实施例的基础上,所述第二设备根据预先配置的确定设备优先级的参数确定所述第一设备的第一当前优先级以及所述第二设备的第二当前优先级,包括:

第二设备根据第一设备对应的第一配置优先级和第一操作类型计算所述第一当前优先级;例如:第一操作类型为将优先级降低20,当第一设备发生故障时,若第一配置优先级为100,此时第二设备计算获得第一当前优先级为80。

若第二设备的上行链路组状态为工作状态,则第二设备确定所述第二设备对应的第二配置优先级为第二当前优先级;应当说明的是,第二设备也可以根据第二设备的第二配置优先级和第二操作类型计算第二当前优先级。

若第二设备的上行链路组状态为非工作状态,则第二设备根据第二设备对应的第二配置优先级和第二操作类型计算第二当前优先级。应当说明的是第二设备在根据第二配置优先级和第二操作类型计算第二当前优先级的过程与计算第一当前优先级一致,此处不再赘述。

在上述实施例的基础上,第一报文为保活报文,且第一报文还包括提示字段,即if_a字段,当if_a字段置位时,用于提示所述第二设备是否需要获取所述第一报文中的第一设备的上行链路组状态。这是由于第一设备和第二设备之间会较为频繁的交换第一keep-alive报文和第二keep-alive报文,因此,为了提高效率,第二设备要先确定第一报文中的提示字段是否被置位,当第一keep-alive报文中的if_a字段没有置位时,第二设备不需要读取第一keep-alive报文中if_a字段之后的信息,相反的,当if_a字段置位,则第二设备需要读取第一keep-alive报文中if_a字段之后的信息,即第一设备对应的上行链路组编号及状态。可以理解的是,第二设备在向第一设备发送第二keep-alive报文中同样也携带有if_a字段。

本发明实施例通过提示字段来告知第二设备是否需要获取第一keep-alive报文中的提示字段之后的字段信息,从而大大提高了第二设备处理第一keep-alive报文的能力。

当第一设备为备用设备,第二设备为主设备时,本发明实施例提供另一种流量转发方法,包括:

第二设备接收对端的第一设备发送的第一报文,从所述第一报文中获取所述第一设备对应的上行链路组状态;若主设备的上行链路组状态为非工作状态且所述第一设备与所述第二设备之间的ipl链路故障,则所述第二设备根据预先配置的确定设备优先级的参数进行角色选举,确定新的主设备,以使新的主设备进行流量转发。

在具体的实施过程中,第二设备在向第一设备发送第二报文的同时,还会接收对端的第一设备发送的第一报文,应当说明的是,第一设备可以是按照预先约定的周期发送第一报文,也可以是第一设备接收到第二设备发送的上行链路组故障的第二报文后立即发送的。第一设备发送的第一报文中包括有第一设备对应的上行链路组状态,这是由于无论主设备和备用设备,其对应的上行链路组均有可能发生故障,在后续进行角色选举时,需要根据各自当前的状态来选择最优的设备作为主设备。

如果第二设备的上行链路组状态为非工作状态,则说明主设备的上行链路组发生了故障,此时,如果第一设备和第二设备之间的ipl链路也发生了故障,则第二设备根据预先配置的确定设备优先级的参数进行角色选举,从而从第一设备和第二设备中重新确定新的主设备,通过新的主设备进行流量转发。

本发明实施例的流量转发方法,在主设备的上行链路组以及ipl链路故障时,在向备用设备发送的报文中增加主设备的上行链路组状态的字段,并降低主设备的优先级,并进行角色选举,获得新的主设备,以使新的主设备进行流量转发,从而避免了流量无法转发的问题,提高了组网的可靠性。

在上述实施例的基础上,所述第二设备根据预先配置的确定设备优先级的参数进行角色选举,包括:

所述第二设备根据预先配置的确定设备优先级的参数确定所述第一设备的第一当前优先级以及所述第二设备的第二当前优先级;

确定所述第一当前优先极和所述第二当前优先级中较大者对应的设备为所述新的主设备。

在具体的实施过程中,当主设备的上行链路组和ipl链路均故障时,在主设备侧也需要进行角色选举,具体为:第二设备根据预先配置的确定设备优先级的参数确定第一设备的第一当前优先级以及第二设备的第二当前优先级。确定第一设备的第一当前优先级的目的是获知备用设备的当前性能,确定第二设备的第二当前优先级的目的是获知主设备的当前性能。

然后将第一当前优先级与第二当前优先级进行比较,如果第一当前优先级高于第二当前优先级,则将第一设备作为主设备,反之,则将第二设备作为主设备。应当理解的是,备用设备的上行链路组也可能发生故障,因此第二设备需要计算第一设备对应的第一当前优先级,可能会出现第一设备对应的第一当前优先级低于第二设备的第二当前优先级,所以经过角色选举之后,第二设备仍然为主设备的情况。

本发明实施例通过主设备侧计算第一当前优先级和第二当前优先级,然后将优先级高的设备确定为新的主设备,能够保证使用性能较优的设备进行流量转发。

在上述实施例的基础上,所述方法,还包括:

在所述ipl链路故障前,所述第二设备通过所述ipl链路接收第一配置优先级以及第一操作类型。

在具体的实施过程中,第二设备在计算第一设备的第一当前优先级时,可以根据第一设备的第一配置优先级以及第一操作类型进行计算。其中,第一配置优先级和第一操作类型可以在ipl链路故障之前,第二设备通过ipl链路获得到。应当说明的是,在ipl链路正常的情况下,第一设备和第二设备按照预先约定的周期会通过ipl链路互相发送drcp报文,第一设备发送的drcp报文中包括第一配置优先级和第一操作类型,第二设备发送的drcp报文中包括第二配置优先级和第二操作类型。

在上述实施例的基础上,所述方法,还包括:

所述第二设备接收上行设备发送的双向转发检测bfd消息;所述第二设备从所述bfd消息中确定所述第二设备的上行链路组状态。

在具体的实施过程中,第二设备第二设备与上行设备通过对应的上行链路组通信连接,上行设备会向第二设备发送bfd消息,在bfd消息中包含有上行链路组状态的信息。当第二设备对应的上行链路组发生故障时,第二设备对应的上行设备会向第二设备发送bfd消息,在bfd消息中包含有上行链路组故障的信息,第二设备在接收到该bfd消息后,可以得知其上行链路组发生了故障。

同理,第一设备与其对应的上行设备之间也存在bfd机制,第一设备接收对应的上行设备发送的bfd消息,通过bfd消息获知对应的上行链路组状态。

本发明实施例通过bfd机制使得第二设备获知其对应的上行链路组状态,为后续第二设备计算其自身对应的第二当前优先级提供依据。

在上述实施例的基础上,所述方法,还包括:

所述第二设备向所述第一设备发送包括所述第二设备的上行链路组状态的第二报文,以使所述第一设备根据所述第二设备的上行链路组状态计算所述第二设备的当前优先级。

在具体的实施过程中,在触发选举时,不但主设备要进行角色选举,备用设备也要进行角色选举。因此,第二设备作为主设备不但会接收第一设备发送的第一报文,还会向第一设备发送第二报文,该第二报文中包括第二设备的上行链路组状态,使得第一设备也能够获知第二设备当前的上行链路组状态,并根据第二设备的上行链路组状态计算第二设备的当前优先级,进一步用于角色选举。

在上述实施例的基础上,所述方法,还包括:

若所述主设备的上行链路组恢复为工作状态,且所述ipl链路仍故障,则所述第二设备进行角色选举,重新确定新的主设备。

在具体的实施过程中,如果第二设备的上行链路组恢复正常,则第二设备重新计算对应的当前优先级,并且第二设备会向第一设备发送第二报文,此时的第二报文中的第二上行链路组状态为工作状态,即第二报文中的c字段为up。但是第二设备在超时时间内没有接收到drcp报文,则第二设备得知ipl链路仍然处于故障中,此时,再次出发角色选举,在角色选举时,第二设备再次计算自身的第二当前优先级以及第一设备对应的第一当前优先级,然后根据计算得到的自身的第二当前优先级和第一设备的第一当前优先级进行比较,将优先级高的设备重新作为新的主设备。

另外,在新的主设备进行流量转发之后,第二设备对应的第二上行链路组仍然为非工作状态,但是ipl链路恢复正常,此时,并不会触发角色选举,仍然通过新的主设备进行流量转发。

本发明实施例通过当第二设备的上行链路组恢复工作状态,但ipl链路仍故障时,再次触发角色选举,从而一方面保证只有一个主设备一个备用设备,另一方面,能够保证使用性能最优的设备作为主设备进行流量转发。

在上述实施例的基础上,所述第二设备根据预先配置的确定设备优先级的参数确定所述第一设备的第一当前优先级以及所述第二设备的第二当前优先级,包括:

第二设备根据第二设备对应的第二配置优先级和第二操作类型计算所述第二当前优先级;例如:第二操作类型为将优先级降低20,当第二设备发生故障时,若第二配置优先级为100,此时第二设备计算获得第二当前优先级为80。

若第一设备的上行链路组状态为工作状态,则第二设备确定第一设备对应的第一配置优先级为第一当前优先级;应当说明的是,第二设备也可以根据第一设备的第一配置优先级和第一操作类型计算第一当前优先级。

若第一设备的上行链路组状态为非工作状态,则第二设备根据第一设备对应的第一配置优先级和第一操作类型计算第一当前优先级。应当说明的是第二设备在根据第一配置优先级和第一操作类型计算第一当前优先级的过程与计算第二当前优先级一致,此处不再赘述。

在上述实施例的基础上,所述方法还包括:

若所述第二设备的上行链路组状态为非工作状态,所述第二设备生成第三报文,所述第三报文包括提示字段,且所述提示字段被置位,以使所述第一设备在确定所述提示字段置位后,从所述第三报文中获取所述第二设备的上行链路组状态。

在上述实施例的基础上,当第二设备对应的上行链路组故障时,第二设备生成第三报文,其中第三报文可以为保活报文,且第三报文还包括提示字段,即if_a字段,当if_a字段置位时,用于提示第一设备是否需要获取第三报文中的第二设备的上行链路组状态。这是由于第一设备和第二设备之间会较为频繁的交换报文,因此,为了提高效率,第一设备要先确定第三报文中的提示字段是否被置位,当第三报文中的if_a字段没有置位时,第一设备不需要读取第三报文中if_a字段之后的信息,相反的,当if_a字段置位,则第一设备需要读取第三报文中if_a字段之后的信息,即第二设备对应的上行链路组编号及状态。可以理解的是,第一设备在向第二设备发送第一报文中同样也携带有if_a字段。

本发明实施例通过提示字段来告知第一设备是否需要获取第三报文中的提示字段之后的字段信息,从而大大提高了第一设备处理第三报文的能力。

图3为本发明实施例提供的一种流量转发装置结构示意图,如图3所示,该装置包括:第一接收模块301和选举模块302,其中,

第一接收模块301用于接收对端的第一设备发送的第一报文,从所述第一报文中获取所述第一设备对应的上行链路组状态,其中,所述第一设备与所述第二设备中的一个为主设备,另一个为备用设备;选举模块302用于若主设备的上行链路组状态为非工作状态且所述第一设备与所述第二设备之间的ipl链路故障,则根据预先配置的确定设备优先级的参数进行角色选举,确定新的主设备,以使新的主设备进行流量转发。

在上述实施例的基础上,所述选举模块,具体用于:

根据预先配置的确定设备优先级的参数确定所述第一设备的第一当前优先级以及所述第二设备的第二当前优先级;

确定所述第一当前优先极和所述第二当前优先级中较大者对应的设备为所述新的主设备。

在上述实施例的基础上,所述装置,还包括:

第二接收模块,用于在所述ipl链路故障前,通过所述ipl链路接收所述第一配置优先级以及所述第一操作类型。

在上述实施例的基础上,所述装置,还包括:

第三接收模块,用于接收上行设备发送的双向转发检测bfd消息;

第一确定模块,用于从所述bfd消息中确定所述第二设备的上行链路组状态。

在上述实施例的基础上,所述装置,还包括:

发送模块,用于向所述第一设备发送包括所述第二设备的上行链路组状态的第二报文,以使所述第一设备根据所述第二设备的上行链路组状态计算所述第二设备的当前优先级。

在上述实施例的基础上,所述装置,还包括:

第二选举模块,用于若所述主设备的上行链路组恢复为工作状态,且所述ipl链路仍故障,则进行角色选举,重新确定新的主设备。

在上述实施例的基础上,若所述第二设备被选举为新的主设备,所述装置,还包括:

转发模块,用于若所述ipl链路恢复,且主设备的上行链路组为非工作状态,则继续进行流量转发。

在上述实施例的基础上,所述第二设备为备用设备,所述选举模块,具体用于:

根据所述第一设备对应的第一配置优先级和第一操作类型计算所述第一当前优先级;

若所述第二设备的上行链路组状态为工作状态,则确定所述第二设备对应的第二配置优先级为所述第二当前优先级;

若所述第二设备的上行链路组状态为非工作状态,则根据所述第二设备对应的第二配置优先级和第二操作类型计算所述第二当前优先级。

在上述实施例的基础上,所述第二设备为主设备,所述选举模块,具体用于:

根据所述第二设备对应的第二配置优先级和所述第二操作类型计算所述第二当前优先级;

若所述第一设备的上行链路组状态为工作状态,则确定所述第一设备对应的第一配置优先级为所述第一当前优先级;

若所述第一设备的上行链路组状态为非工作状态,则根据所述第一设备对应的第一配置优先级和第一操作类型计算所述第一当前优先级。

在上述实施例的基础上,所述第二设备为备用设备,所述第一报文为保活报文,且所述第一报文还包括提示字段;所述提示字段用于提示所述第二设备是否需要获取所述第一报文中的第一设备的上行链路组状态;

所述装置,还包括:

第二确定模块,用于确定所述第一报文中所述提示字段置位。

在上述实施例的基础上,所述第二设备为主设备,所述装置,还包括:

报文生成模块,用于若所述第二设备的上行链路组状态为非工作状态,所述第二设备生成第三报文,所述第三报文包括提示字段,且所述提示字段被置位,以使所述第一设备在确定所述提示字段置位后,从所述第三报文中获取所述第二设备的上行链路组状态。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。

综上所述,本发明实施例的流量转发方法,在主设备的上行链路组以及ipl链路故障时,在向备用设备发送的报文中增加主设备的上行链路组状态的字段,并降低主设备的优先级,并进行角色选举,获得新的主设备,以使新的主设备进行流量转发,从而避免了流量无法转发的问题,提高了组网的可靠性。

图4为本发明实施例提供的电子设备实体结构示意图,如图4所示,所述电子设备,包括:处理器(processor)401、存储器(memory)402和总线403;其中,

所述处理器401和存储器402通过所述总线403完成相互间的通信;

所述处理器401用于调用所述存储器402中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:第二设备接收对端的第一设备发送的第一报文,从所述第一报文中获取所述第一设备对应的上行链路组状态,其中,所述第一设备与所述第二设备中的一个为主设备,另一个为备用设备;若主设备的上行链路组状态为非工作状态且所述第一设备与所述第二设备之间的ipl链路故障,则所述第二设备根据预先配置的确定设备优先级的参数进行角色选举,确定新的主设备,以使新的主设备进行流量转发。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:第二设备接收对端的第一设备发送的第一报文,从所述第一报文中获取所述第一设备对应的上行链路组状态,其中,所述第一设备与所述第二设备中的一个为主设备,另一个为备用设备;若主设备的上行链路组状态为非工作状态且所述第一设备与所述第二设备之间的ipl链路故障,则所述第二设备根据预先配置的确定设备优先级的参数进行角色选举,确定新的主设备,以使新的主设备进行流量转发。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:第二设备接收对端的第一设备发送的第一报文,从所述第一报文中获取所述第一设备对应的上行链路组状态,其中,所述第一设备与所述第二设备中的一个为主设备,另一个为备用设备;若主设备的上行链路组状态为非工作状态且所述第一设备与所述第二设备之间的ipl链路故障,则所述第二设备根据预先配置的确定设备优先级的参数进行角色选举,确定新的主设备,以使新的主设备进行流量转发。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1