具体实施方式
为了解决现有技术中存在的缺少公共、通用的平滑升级机制,并且,有些协议由于标准协议报文的可扩展性较差,甚至不支持扩展,因此,无法实现软件平滑升级的问题,本申请的以下实施例提供了一种软件平滑升级的实现方法以及可以应用该方法的通信设备。本申请的技术方案中,通过扩展邻居发现协议报文,提供了一种公共的、通用的实现软件(或协议)平滑升级的机制。
本申请的实施例的软件平滑升级的实现方法可以由网络中的任意一个通信设备执行,该通信设备可以是路由器、交换机、网关、防火墙等,本申请对此不做限定。
需要说明的是:下文中的第一通信设备可以是网络中的任意一个通信设备,并不特指某一个通信设备,而第二通信设备可以是任意一个与第一通信设备直连的通信设备。
如图1所示,该实现方法包括以下步骤:
步骤S102,第一通信设备接收到相邻的第二通信设备发来的携带有ISSU开始标记的邻居发现协议报文,其中,携带有ISSU(In-Service Software Upgrade,不中断业务升级)开始标记的邻居发现协议报文是在第二通信设备要进行软件升级时发送的;
第二通信设备在要进行软件升级时,会发送携带有ISSU开始标记的邻居发现协议报文给与自己直连的邻居设备(包括第一通信设备)。这样,就需要在通信设备中运行邻居发现协议,通信设备中就需要包括有:运行邻居发现协议的邻居发现协议模块,在第二通信设备要进行软件升级时,由第二通信设备中的第二邻居发现协议模块向邻居设备发送携带有ISSU开始标记的邻居发现协议报文。
则,在步骤S102中,具体是由第一通信设备中的第一邻居发现协议模块接收到第二通信设备中的第二邻居发现协议模块发来的携带有ISSU开始标记的邻居发现协议报文。
第一通信设备与第二通信设备通过邻居发现协议建立邻居关系。
步骤S104,第一通信设备根据该ISSU开始标记,向本设备中的配合协议模块通知第二通信设备的软件升级开始,配合协议模块是与该软件升级有关的、需要配合邻居设备以实现软件平滑升级的协议模块;
具体的,第一邻居发现协议模块在步骤S102中接收到携带有ISSU开始标记的邻居发现协议报文之后,根据其中的ISSU开始标记获知第二通信设备软件升级开始,然后,向本设备中的配合协议模块通知第二通信设备的软件升级开始。
其中,需要配合邻居设备实现软件平滑升级的协议模块,可以称为配合协议模块。配合协议模块可以是任意需要对邻居设备进行超时检测或老化处理,即在一定时间内接收不到邻居设备发来的保活报文,就会认为该邻居设备暂停处于活跃状态的协议模块,可以是OAM(Operation Administration and Maintenance,操作维护管理)协议模块、CFD(Connectivity Fault Detection,连通错误检测)/CFM(Connectivity FaultManagement,连通错误管理)协议模块或者生成树协议模块等。
步骤S106,在接收到第二通信设备的软件升级开始的通知之后,配合协议模块暂停对第二通信设备对应的协议实体进行老化处理。
暂停对第二通信设备对应的协议实体进行老化处理,即,暂停对第二通信设备对应的协议实体进行超时检测,从而,一直保持与第二通信设备的邻居关系。
在实际实施过程中,在携带有ISSU开始标记的邻居发现协议报文中还可以包括:第二通信设备的信息,则,上述的步骤S106具体包括以下步骤1-2:
步骤1:配合协议模块根据以下信息至少之一:第二通信设备的信息、接收到携带有ISSU开始标记的邻居发现协议报文的端口信息,确定本协议模块中对应于第二通信设备的协议实体;
由于一个协议模块中包含有多个协议实体,不同的协议实体可能针对不同的邻居设备,即,可能某一个或某一些(多个)协议实体对应于一个邻居设备,另一个或另一些(多个)协议实体对应于另一个邻居设备,因此,需要确定出本协议模块中针对第二通信设备的协议实体是哪个或哪些。只有针对第二通信设备的协议实体才需要做特殊处理,即,暂停对与第二通信设备对应的协议实体进行老化处理,而其他的协议实体不需要做特殊处理。
其中,第二通信设备的信息可以是第二通信设备的桥MAC地址,也可以是第二通信设备的名称或发送邻居发现协议报文的端口信息等基本信息,还可以是以上信息的任意组合。在实际实施过程中,配合协议模块在确定本协议模块中对应于第二通信设备的协议实体时,若需要依据第二通信设备的信息,则可以依据第二通信设备的桥MAC地址、第二通信设备的名称、发送邻居发现协议报文的端口信息等信息中的任意一个信息,也可以依据这些信息中任意多个信息的组合,本申请对此不做限定。
例如,当第一通信设备中的一个配合协议模块是CFM/CFD协议模块时,CFM/CFD协议模块根据本设备接收到上述携带有ISSU开始标记的邻居发现协议报文的端口(即该报文的入端口)以及该报文中携带的第二通信设备的桥MAC地址,即可确定出本CFM/CFD协议模块中对应于第二通信设备的协议实体。
或者,当第一通信设备中的一个配合协议模块是OAM协议模块时,OAM协议模块根据本设备接收到上述携带有ISSU开始标记的邻居发现协议报文的端口(即该报文的入端口),即可确定出本OAM协议模块中对应于第二通信设备的协议实体。
步骤2:配合协议模块暂停对在步骤1中所确定的协议实体进行老化处理。
本申请的上述实施例中,第二通信设备在要准备进行软件升级时,向与自己直连的邻居设备发送携带有ISSU开始标记的邻居发现协议报文,第二通信设备的任一邻居设备(称为第一通信设备)在接收到该携带有ISSU开始标记的邻居发现协议报文之后,根据其中的ISSU开始标记即可知道第二通信设备要开始进行软件升级了,然后,通知本设备中的配合协议模块,配合协议模块在接收到该通知后就暂停对与第二通信设备对应的协议实体进行老化处理,从而保证了通信设备在进行软件升级的过程中,其邻居设备仍然能够对其进行保活,认为其是正常工作的,实现了该通信设备的软件平滑升级。并且,第二通信设备通过扩展邻居发现协议报文,在邻居发现协议报文中携带ISSU开始标记来通知邻居设备自己要开始进行软件升级,从而实现了通信设备的软件平滑升级,避免了每一种协议通过扩展自己的标准协议报文来实现软件平滑升级,提供了一种公共的、通用的软件平滑升级实现方法。
为了能够实现步骤S104中第一邻居发现协议模块根据接收到的邻居发现协议报文中携带的ISSU开始标记,向本设备中配合协议模块进行通知,在步骤S104之前,还可以包括以下步骤:第一通信设备中的需要配合邻居设备实现软件平滑升级的配合协议模块在启动时,向第一邻居发现协议模块进行注册,以指示自己在邻居设备进行软件升级时需要配合;第一邻居发现协议模块对向自己注册的配合协议模块的信息进行记录。这样,第一邻居发现协议模块在接收到携带有ISSU开始标记的邻居发现协议报文后,就可以根据自身记录的向自己注册的配合协议模块的信息,确定出对应的配合协议模块并向它们进行通知。
后续,当第二通信设备软件升级完成之后,第二邻居发现协议模块还会向邻居设备发送携带有ISSU结束标记的邻居发现协议报文,此时,第一邻居发现协议模块还需要执行以下步骤:
步骤S202,在接收到第二邻居发现协议模块发来的携带有ISSU结束标记的邻居发现协议报文之后,第一邻居发现协议模块向配合协议模块通知第二通信设备的软件升级结束;其中,携带有ISSU结束标记的邻居发现协议报文是在第二通信设备完成软件升级之后发送的;
步骤S204,配合协议模块恢复对在上述步骤2中所确定的协议实体的老化处理。
或者,在第二通信设备升级过程中,第一通信设备在检测到自己与第二通信设备连接的链路故障后,此时,第一通信设备还需要执行以下步骤:
步骤S302,在检测到第一通信设备与第二通信设备之间的链路故障之后,第一邻居发现协议模块向配合协议模块通知第二通信设备的软件升级结束;
导致第一通信设备与第二通信设备之间的链路故障的原因可能有多种,例如:第二通信设备在软件升级过程中发生了故障,从而导致重启,或者,第二通信设备运行正常、而第一通信设备与第二通信设备之间的物理链路中断等。
步骤S304,在接收到所述第二通信设备的软件升级结束的通知之后,配合协议模块恢复对在上述步骤2中所确定的协议实体的老化处理。
上述方法为第二通信设备作为升级设备,而第一通信设备作为配合设备时,第一通信设备所要执行的操作。
同样,第一通信设备也可以作为升级设备,在第一通信设备要进行软件升级时,第一邻居发现协议模块也会向相邻的邻居设备(包括第二通信设备)发送携带有ISSU开始标记的邻居发现协议报文,此时,第二通信设备作为配合设备也会执行步骤S102-S106中第一通信设备所执行的操作;在第一通信设备完成软件升级之后,第一邻居发现协议模块也会向相邻的邻居设备发送携带有ISSU结束标记的邻居发现协议报文,此时,第二通信设备也会执行步骤S202-S204、步骤S302-S304中第一通信设备所执行的操作。
上述方法中的邻居发现协议可以是作为邻居发现协议的典型代表的LLDP(LinkLayer Discovery Protocol,链路层发现协议)协议,也可以是其他类似的邻居发现协议,例如,CDP(Cisco Discovery Protocol,思科发现协议)和NDP(Neighbor DiscoverProtocol,邻居发现协议)等,本申请对此不做限定。首先对LLDP协议进行一下简单的介绍。
目前,网络通信设备的种类日益繁多且各自的配置错综复杂,为了使不同厂商的设备能够在网络中相互发现并交互各自的系统配置信息,需要有一个标准的信息交流平台。LLDP就是在这样的背景下产生的,它提供了一种标准的链路层发现方式,可以将本端设备的主要能力、管理地址、设备标识和接口标识等信息组织成不同的TLV(Type/Length/Value,类型/长度/值),并封装在LLDPDU(Link Layer Discovery Protocol Data Unit,链路层发现协议数据单元),即LLDP报文中发布给与自己直连(即相邻)的邻居,邻居设备接收到这些信息后将其以标准MIB(Management Information Base,管理信息库)的形式保存起来,以供网络管理系统查询及自己判断链路的通信状况。
LLDP是通信设备之间的信息交互桥梁,可承载各种基本的设备信息交互及扩展信息交互,协议设计上有很大的可扩展性,基于LLDP的扩展应用有很多。LLDP通过TLV加OUISubType(组织唯一标识子类型,用于表示对应的TLV字段的类型)形式组织报文,可以方便不同的厂商对LLDP报文进行各种扩展使用。
LLDP报文中的TLV的主要类型如表1所示。
表1
下面以LLDP协议为例,详细地说明上述的方法。
如图2所示,网络中有一个通信设备需要进行软件升级,将这个要进行软件升级的通信设备称为升级设备,每一个与其直接相连的通信设备称为配合设备。升级设备和配合设备上运行有LLDP协议,升级设备与配合设备之间通过LLDP协议建立邻居关系。如图3所示,该升级设备的软件平滑升级的实现方法包括以下步骤:
步骤S301,配合设备的需要支持邻居设备实现平滑升级的协议模块(称为配合协议模块)在启动时,向本设备中的LLDP协议模块进行注册,表示自己关心邻居设备的软件升级事件;
步骤S302,配合设备中的LLDP协议模块将向其注册的配合协议模块记录下来,以便在相应事件发生时进行通知;
步骤S303,升级设备开始准备进行软件升级时,向本设备中的LLDP协议模块上报升级预处理事件;
步骤S304,升级设备的LLDP协议模块获知该升级预处理事件后,向所有配合设备发送携带有ISSU开始标记的LLDP报文,其中,该LLDP报文中携带有升级设备的信息,包括:升级设备的桥MAC地址、名称,发送该LLDP报文的端口等信息;
其中,携带ISSU开始标记的方式包括:
方式1,使用特殊的TTL作为ISSU开始标记
现有的LLDP报文中的TTL是LLDP协议模块通过计算LLDP报文的发送间隔与TTL乘数的乘积得到的,前者是不小于5的正整数,后者是不小于2的正整数,两者的乘积必然不是素数。TTL的最大值不能超过65535。因而,可以使用一个接近65535的素数(如65521)作为上述ISSU开始标记,即当TTL的值置为该素数时,表示该ISSU开始标记。
方式2,在LLDP协议报文中新增一个TLV类型,携带ISSU开始标记
步骤S305,配合设备的LLDP协议模块接收到带有ISSU开始标记的LLDP报文,在本设备内通知配合协议模块升级设备的软件升级开始;
步骤S306,配合设备的配合协议模块在接收到该软件升级开始的通知时,根据携带有ISSU开始标记的LLDP报文中携带的升级设备的信息,如桥MAC地址、设备名称、设备描述信息等和/或接收到该LLDP协议报文的端口信息,确定本协议模块中的对应于升级设备的协议实体,对该协议实体做特殊处理,在升级设备进行软件升级过程中暂停对该协议实体进行老化处理;
步骤S307,升级设备完成软件升级之后,通过LLDP协议恢复与配合设备的邻居关系,向本设备中的LLDP协议上报软件升级结束;
步骤S308,升级设备的LLDP协议模块逐一通知各配合设备软件升级结束,具体的通过发送携带ISSU结束标记的LLDP报文进行通知。与ISSU开始标记类似,ISSU结束标记的携带方式包括:
方式1,对应于使用特殊TTL表示ISSU开始标记的方式,使用一个正常的TTL表示ISSU结束标记;
方式2,新增一个TLV,在该TLV中携带ISSU结束标记。
步骤S309,配合设备的LLDP协议模块在收到携带有ISSU结束标记的LLDP报文时,在本设备内通知配合协议模块升级设备软件升级结束;或者如果升级设备在进行软件升级过程中发生了故障,导致升级设备重启,或升级设备与配合设备之间的链路中断等,此时,配合设备的LLDP协议模块可以检测到配合设备与升级设备之间的链路故障,需要提前结束升级配合,也会在本设备内通知配合协议模块升级设备软件升级结束;
步骤S310,配合设备的配合协议模块在收到软件升级结束通知时,恢复对相应协议实体的老化处理。
针对上述的方法,本申请的实施例还提供了一种第一通信设备,该第一通信设备为任意一个通信设备。如图4所示,该第一通信设备包括以下模块:第一邻居发现协议模块10和配合协议模块20,其中:
第一邻居发现协议模块10,用于运行邻居发现协议,接收第二通信设备中的第二邻居发现协议模块发来的携带有ISSU开始标记的邻居发现协议报文,其中,携带有ISSU开始标记的邻居发现协议报文是在第二通信设备要进行软件升级时发送的,以及,根据该ISSU开始标记,向本设备中的配合协议模块通知第二通信设备的软件升级开始,配合协议模块是与该软件升级有关的、需要配合邻居设备以实现软件平滑升级的协议模块;
配合协议模块20,用于在接收到所述第二通信设备的软件升级开始的通知之后,暂停对第二通信设备对应的协议实体进行老化处理。
其中,配合协议模块20还用于在启动时,向第一邻居发现协议模块10进行注册,以指示自己在邻居设备进行软件升级时需要配合;第一邻居发现协议模块10还用于对向自己注册的配合协议模块20的信息进行记录,在接收到携带有ISSU开始标记的邻居发现协议报文时,进一步根据记录的配合协议模块的信息,向对应的配合协议模块通知第二通信设备的软件升级开始。
另外,携带有ISSU开始标记的邻居发现协议报文中还包括:第二通信设备的信息,则,配合协议模块20进一步包括以下单元:
确定单元,用于在接收到所述第二通信设备的软件升级开始的通知之后,根据以下信息至少之一:第二通信设备的信息、接收到携带有ISSU开始标记的邻居发现协议报文的端口信息,确定本协议模块中对应于第二通信设备的协议实体;
老化单元,用于对本协议模块内的各个协议实体进行老化处理,并且,在接收到所述第二通信设备的软件升级开始的通知之后,暂停对确定单元所确定的协议实体进行老化处理。
后续,在第二通信设备进行软件升级结束之后,第二邻居发现协议模块还会发送携带有ISSU结束标记的邻居发现协议报文,此时,第一邻居发现协议模块还用于在接收到第二邻居发现协议模块发来的携带有ISSU结束标记的邻居发现协议报文、或者在检测到第一通信设备与第二通信设备之间的链路故障之后,向配合协议模块通知第二通信设备的软件升级结束;配合协议模块中的老化单元还用于在接收到所述第二通信设备的软件升级结束的通知之后,恢复对确定单元所确定的协议实体的老化处理。
同样,第一通信设备也会进行软件升级,此时,第一邻居发现协议模块还用于在本设备要进行软件升级时,向与本设备相邻的邻居设备发送携带有ISSU开始标记的邻居发现协议报文,以及,在本设备完成软件升级之后,向与本设备相邻的邻居设备发送携带有ISSU结束标记的邻居发现协议报文。
本申请的以上实施例尤其适用于整个通信设备的软件升级的应用场景。
综上,本申请以上实施例可以达到以下技术效果:
第二通信设备在要准备进行软件升级时,向与自己直连的邻居设备发送携带有ISSU开始标记的邻居发现协议报文,第二通信设备的任一邻居设备(称为第一通信设备)在接收到该携带有ISSU开始标记的邻居发现协议报文之后,根据其中的ISSU开始标记即可知道第二通信设备要开始进行软件升级了,然后,通知本设备中的配合协议模块,配合协议模块在接收到该通知后就暂停对与第二通信设备对应的协议实体进行老化处理,从而保证了通信设备在进行软件升级的过程中,其邻居设备仍然能够对其进行保活,认为其是正常工作的,实现了该通信设备的软件平滑升级。并且,第二通信设备通过扩展邻居发现协议报文,在邻居发现协议报文中携带ISSU开始标记来通知邻居设备自己要开始进行软件升级,从而实现了通信设备的软件平滑升级,避免了每一种协议通过扩展自己的标准协议报文来实现软件平滑升级,提供了一种公共的、通用的软件平滑升级实现方法。
另外,减少了各种不同协议在软件升级前的交互,简化了软件平滑升级的实现方法。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。