发明内容
有鉴于此,本发明的主要目的在于提供一种通信设备平滑升级方法及系统,能够实现通信设备的平滑升级。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供一种通信设备平滑升级方法,包括:
加载新版本的备板上需要同步的业务进程向主板上对应业务进程发送进程数据区备份请求,进程数据区备份请求中携带进程数据区版本号;
收到进程数据区备份请求后,主板判断自身业务进程的进程数据区版本号与备板上业务进程的进程数据区版本号是否一致,若一致,则主板发送备份响应消息给备板;若不一致,则主板发送备份结束消息给备板;
所有进程数据区数据备份结束后,进行主备倒换。
其中,所述备份响应消息中包括:主板上对应业务进程的进程数据区版本号及进程数据区数据。
上述技术方案中,所述主板和备板上需要同步的业务进程均设置有数据区版本一致性全局变量;
在主板与备板上对应的业务进程的进程数据区版本号相同时,设置该数据区版本一致性全局变量为“相同”;
在主板与备板上对应的业务进程的进程数据区版本号不相同时,设置该数据区版本一致性全局变量为“不同”。
上述技术方案中,所述主备倒换具体为:主板释放非保护数据区,倒换成新备板,向原备板发送倒换成功消息,原备板收到倒换成功消息后倒换成新主板,向外围板链路发送链路切换命令,将通信链路切换至新主板,启动新版本处理业务。
上述技术方案中,该方法进一步包括:新备板加载新版本,进行版本升级。
上述技术方案中,所述主板设置有模块;
该方法进一步包括:主板上的模块接收到其他模块发来的模块间消息后,判断自身的消息版本号与收到的模块间消息中携带的消息版本号是否一致,若一致,则根据模块间消息内容进行相应的业务处理;若不一致,则释放或者丢弃该模块间消息。
本法明还提供了一种通信设备平滑升级系统,包括:备板和主板;其中,备板包括:备板升级单元、数据备份单元;主板包括:主板判断单元;具体的:
备板升级单元,用于加载新版本,并发送包含备板上业务进程的进程数据区版本号的进程数据区备份请求给主板;
数据备份单元,用于接收主板判断单元发来的备份响应消息或备份结束消息,进行进程数据区数据的备份;
主板判断单元,用于获取进程数据区备份请求中的备板上业务进程的进程数据区版本号,判断备板上业务进程的进程数据区版本号与主板上对应业务进程的进程数据区版本号是否一致,在一致时,判断单元发送备份响应消息给备板升级单元;在不一致时,判断单元发送备份结束消息给备板升级单元。
其中,所述备份响应消息中包括:主板上对应业务进程的进程数据区版本号及进程数据区数据。
上述技术方案中,所述主板和备板上需要同步的业务进程均设置有数据区版本一致性全局变量;
在主板与备板上对应的业务进程的进程数据区版本号相同时,该数据区版本一致性全局变量被设置为“相同”;
在主板与备板上对应的业务进程的进程数据区版本号不相同时,该数据区版本一致性全局变量被设置为“不同”。
上述技术方案中,所述主板设置有模块,所述模块包括:消息接收单元和判断单元;具体的:
消息接收单元,用于接收其他模块发来的模块间消息;
判断单元,用于判断自身的消息版本号与收到的模块间消息中携带的消息版本号是否一致,在一致时,根据模块间消息内容进行相应的业务处理;在不一致时,则释放或者丢弃该消息。
本发明的通信设备平滑升级方法及系统,在通信设备升级过程中,通过在进程数据区备份请求中增加进程数据区版本号,实现进程数据区版本号的传递、检测,进而根据检测结果进行相应处理,避免因在进程数据区版本号不一致的情况下进行进程数据区备份带来的系统问题。同时,本发明进一步在模块间消息中增加消息版本号,实现消息版本号的传递、检测,进而根据检测结果进行相应处理,避免因模块版本不一致,导致的消息处理错误。
具体实施方式
本发明的基本思想是:通信设备升级过程中,通过在进程数据区备份请求中增加相应的版本号,实现版本号的传递、检测,进而根据检测结果进行相应处理。避免因在版本号不一致的情况下进行进程数据区备份带来的系统问题。
图2为本发明通信设备平滑升级方法的流程示意图,如图2所示,本发明方法包括:
步骤1:备板加载新版本并重启,备板上需要同步的业务进程向主板上对应业务进程发送进程数据区备份请求,进程数据区备份请求中携带进程数据区版本号。
步骤2:收到进程数据区备份请求后,主板判断自身业务进程的进程数据区版本号与备板上业务进程的进程数据区版本号是否一致,若一致,则主板发送备份响应消息给备板;若不一致,则主板发送备份结束消息给备板;
本步骤中,备份响应消息中包括:主板上对应业务进程的进程数据区版本号及进程数据区数据。
步骤3:所有进程数据区数据备份结束后,进行主备倒换;
本步骤中,主备倒换具体为:主板释放非保护数据区,倒换成新备板,向原备板发送倒换成功消息;原备板收到倒换成功消息后倒换成新主板,向外围板链路发送链路切换命令,将通信链路切换至新主板,启动新版本处理业务。
该方法进一步包括:新备板加载新版本,进行版本升级。
步骤1中通过在进程数据区备份请求中携带进程数据区版本号,实现了版本号的传递,具体的:
对于与进程数据区主备同步有关的消息,需要在消息体中增加进程数据区版本号字段,如:备板加载新版本重启后,备板上进程基站子系统应用部分(BSSAP,Base SubSystem Application Part)向主板上BSSAP进程发送进程数据区备份请求消息:mbSynchrDataReqEvent,要求备份BSSAP进程数据区数据,在消息体中增加WORD类型字段:BSSAP信息版本号(wBssapInfoVersionNo),用来表示备板当前BSSAP进程数据区版本号。
对于主备同步过程,在备板加载新版本,备板上电后,向主板发送进程数据区备份请求,该进程数据区备份请求中携带备板上该进程数据区的版本号,主板发送给备板的备份响应消息中携带主板上对应业务进程的进程数据区版本号。
步骤2中通过比较主板上业务进程的进程数据区版本号与备板上对应业务进程的进程数据区版本号是否一致,实现了进程数据区版本号的检测,具体的:
对于进程数据区主备同步,主板上的业务进程在收到备板的进程数据区备份请求后,获取该程数据区备份请求中携带的进程数据区版本号,并与主板上对应业务进程的进程数据区版本号比较,实现进程数据区版本号的检测。主板上业务进程通过进程数据区的备份响应消息或备份结束消息将主板上业务进程的进程数据区版本号传递给备板上对应业务进程。
步骤2中对进程数据区版本号不一致的处理,具体为:
对于进程数据区主备同步过程,主板上的业务进程检测到与备板上对应业务进程的进程数据区版本号不一致时,后续进行以下处理:
1)进程数据区主备同步过程中,不进行进程数据区的备份过程;
2)业务处理过程中,不进行稳态进程数据区主备备份过程;或
3)在主备倒换过程中,原主板上业务进程释放所有正在进行的业务过程和有关资源,并进行计费。
主板和备板上需要同步的业务进程均设置有数据区版本一致性全局变量,用来记录主、备板上对应业务进程的进程数据区版本号是否一致,下面,对数据区版本一致性全局变量,以下可简称为全局变量进行说明:
主板和备板上需要同步的业务进程依靠该业务进程的数据区版本一致性全局变量来记录主、备板上对应业务进程的进程数据区版本是否一致。如:业务进程BSSAP定义字节(BYTE)类型的数据区版本一致性全局变量:g_bssapSynDataReliability,通过维护此全局变量的值来记录主、备板上BSSAP数据区版本是否一致。在业务进程上电进入主用状态或者备用状态时,该全局变量应初始化为“未知(Unknown)”。在备板上业务进程向主板上对应业务进程传递备板上该业务进程数据区版本号后,主板上业务进程的该全局变量应修改为“相同(SAME)”或者“不同(DIFF)”。在主板上业务进程向备板上业务进程传递主板上的此业务进程数据区版本号后,备板上该业务进程的全局变量也应修改为“SAME”或者“DIFF”。主板与备板通信中断,该全局变量的取值置为“Unknown”。主板与备板通信恢复,则不修改该全局变量取值。主备倒换过程,也不修改该全局变量的取值。
下面结合附图和实施例进一步说明本发明通信设备平滑升级方法。
实施例
本实施例以呼叫业务为例。
图3为本发明实施例通信设备平滑升级方法示意图,如图3所示,该实施例中包括四个单板,分别为:单板a、单板a’、单板b及单板b’;其中,单板a’为单板a的备板,单板b’为单板b的备板,单板a及单板b处于主用状态。单板a与单板a’、单板b与单板b’之间交互进程数据区消息。下面,以单板a与单板a’之间的主备升级过程为例进行说明。
单板a’加载新版本,上电后,单板a’各业务进程进入备用状态,各业务进程的数据区版本一致性全局变量置为“Unknown”。单板a上电后,各业务进程进入主用状态时,各业务进程的全局变量也被设置为“Unknown”。单板a’呼叫业务进程向单板a呼叫业务进程发送进程数据区备份请求消息,携带此呼叫业务进程数据区对应的版本号。单板a呼叫业务进程收到该进程数据区备份请求后,获取该进程数据区备份请求中携带的版本号,与单板a上对应呼叫业务进程的进程数据区版本号进行比较。
如果版本号相同,即版本一致,则单板a发送备份响应消息给单板a’进行正常的备板备份过程,且单板a上将本业务进程的全局变量设置为“SAME”。单板a’上收到进程数据区备份响应消息后,将本业务进程的全局变量设置为“SAME”。
如果版本号不相同,即版本不一致,则单板a向单板a’进程发送进程数据区备份结束消息,不再进行进程数据区的主板与单板a’之间的备份处理,并将该进程数据区版本一致性全局变量设置为“DIFF”,进程数据区备份结束消息中携带数据区版本不一致信息。单板a’收到该进程数据区备份结束消息后结束单板a’上对应业务进程的数据区备份过程,并将单板a’上该业务进程的全局变量设置为“DIFF”。另外,单板a在判定单板a与单板a’之间的呼叫业务进程数据区版本号不一致后,通知呼叫链上的其它进程,进行去保护的相关处理。
如果进程数据区版本号不一致,则在主备倒换时,单板a上的所有呼叫将被全部释放掉,并且在释放呼叫的同时,需要把对端半呼叫以及相关的其它资源全部释放掉。
主板和备板设置有若干模块,该模块可为CPU。由于升级过程中各单板的升级顺序有先有后,在业务不中断的情况下,就会出现主板上版本不同的模块或不同主板上的模块之间发生消息交互的情况,此处发生消息交互的模块可以是不同主板上的模块,也可以是同一主板上的模块。在通信设备升级过程中,单板的升级顺序有先有后,若新版本与原版本相比,模块间消息的结构发生了变化,则数据指针有可能指向错误的数据地址,使接收模块间消息的模块不能正确处理收到的消息。
如图3所示,单板a上设置有两个模块,分别为:模块a1和模块a2;单板b上也设置有两个模块,分别为:模块b1和模块b2。在单板a、单板b处于主用状态时,模块a1、模块a2、模块b1和模块b2之间发生消息交互。在通信设备升级过程中,单板a和单板b的升级顺序有先有后,若新版本与原版本相比,模块间消息的结构发生了变化,则会导致消息处理错误。
为了解决上述问题,进一步优化通信设备的平滑升级,本发明方法进一步包括:对于业务处理过程中的模块间消息,如:呼叫过程中的消息、短消息过程中的消息、呼叫过程中发生切换等,需要在消息体中增加消息版本号字段;整个升级过程中,模块间交互消息需要携带发送消息的模块消息版本号。
接收模块间消息的模块判断自身的消息版本号与收到的模块间消息中携带的消息版本号是否一致,若一致,则接收并进行相应的业务处理;若不一致,则释放或者丢弃该模块间消息。
对于升级过程中的模块间消息,模块在收到模块间消息后,获取模块间消息中携带的消息版本号,并与本模块中该消息的版本号宏进行比较,实现版本号的检测。
对于模块间消息,接收模块间消息的模块检测到消息版本号不一致后,将直接丢弃能够抛弃的消息,抛弃不可行时则发起业务释放过程。
下面以不同模块间的交互业务消息为例,进一步说明升级过程中,处于不同模块的业务进程之间的消息版本号的传递、检测和后续处理。
本实施例中,业务进程A和业务进程B分别处于不同的模块。
业务进程A在主用状态业务处理过程中,发送模块间消息到业务进程B。模块间消息中携带业务进程A的消息结构对应的版本号。业务进程B在收到该模块间消息后,获取该模块间消息中携带的版本号,并与自身所处模块的该消息结构对应的版本号进行比较,若相同,即版本一致,则业务进程B进行正常的消息处理;若不相同,即版本不一致,则业务进程B则按照以下原则处理:
1)对于有定时器保护和不影响业务的消息,可以直接丢弃;
2)对于影响业务进展,如果丢弃会导致资源挂死的重要消息,需要发起释放而不能直接丢弃;
3)对于新接入的业务,如呼叫业务,如果是模块间第一条消息,立即发起释放或者发送NACK消息;
4)对于释放类消息,应该获取释放消息中的可靠数据来进行业务释放;
5)对于一些与业务无关的维护管理类消息,如:复原类消息、负荷控制消息、维护管理消息,即使版本不一致也需要根据消息中可靠的数据来正常处理。
模块间消息版本号采用集中注册登记维护机制,具体的:由于模块间消息数量非常多,并且不同的业务进程针对交互的消息可能会由于协调和沟通产生理解的误差。为了避免这种误差,因此将所有的消息是否需要传递版本号以及当前的版本号值由专门进程集中注册、维护、和管理,通过查询注册表决定应该如何处理;模块间消息的交互可以统一调用封装好的发送函数和接收函数,发送函数携带本模块消息版本号,接收函数通过查询注册表来决定消息版本号是否一致,此非本发明重点,在此不予赘述。
对于本板主备的进程数据区版本一致,其它单板的主备进程数据区版本不一致的情况,则在其它单板发生主备倒换的时候,需要处理来自于其它单板的模块倒换消息,并利用该模块倒换消息把对端半呼叫在该模块上的非稳态和稳态不保护的呼叫全部释放掉,保证相关的资源释放干净,避免资源挂死。
对于存在主备同步机制的各个进程数据区和各条模块间消息,都需要维护各自的版本号宏。在新版本的开发过程中,如果新版本与原版本相比,某个进程数据区或者某条模块间消息结构发生了变化,则必须将此变化的进程数据区或者模块间消息版本号宏的取值在原版本的基础上增加某一数值,如加1,作为新版本的版本号,以区别新旧版本号。
本发明还提供了一种实现上述通信设备平滑升级方法的系统,该系统包括:备板和主板;其中,备板包括:备板升级单元、数据备份单元;主板包括:主板判断单元;具体的:
备板升级单元,用于加载新版本,并发送包含备板上业务进程的进程数据区版本号的进程数据区备份请求给主板;
数据备份单元,用于接收主板判断单元发来的备份响应消息或备份结束消息,进行进程数据区数据的备份;
主板判断单元,用于获取进程数据区备份请求中的备板上业务进程的进程数据区版本号,判断备板上业务进程的进程数据区版本号与主板上对应业务进程的进程数据区版本号是否一致,在一致时,判断单元发送备份响应消息给备板升级单元;在不一致时,判断单元发送备份结束消息给备板升级单元。
其中,备份响应消息中包括:主板上对应业务进程的进程数据区版本号及进程数据区数据。
其中,主板和备板上需要同步的业务进程均设置有数据区版本一致性全局变量;
在主板与备板上对应的业务进程的进程数据区版本号相同时,该数据区版本一致性全局变量被设置为“相同”;
在主板与备板上对应的业务进程的进程数据区版本号不相同时,该数据区版本一致性全局变量被设置为“不同”。
同时,主板还设置有模块,所述模块包括:消息接收单元和判断单元;具体的:
消息接收单元,用于接收其他模块发来的模块间消息;
判断单元,用于判断自身的消息版本号与收到的模块间消息中携带的消息版本号是否一致,在一致时,根据模块间消息内容进行相应的业务处理;在不一致时,则释放或者丢弃该消息。
目前,核心网网元小版本升级都可以采用此种升级方法来实现。核心网网元从安全系统考虑,单板都是1+1备份的,可根据上述升级步骤进行升级,从而做到无风险平滑升级,降低升级过程对业务的影响。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。