一种实现软件上主备双机热备份的方法

文档序号:7552848阅读:159来源:国知局
专利名称:一种实现软件上主备双机热备份的方法
技术领域
本发明涉及电信设备的冗余技术,尤其涉及一种实现软件上主备双机热备份的方法。
背景技术
电信设备运行的可靠性和连续性是至关重要的,所以,许多关键的电信设备在硬件上都设置有主备双机热备份的冗余机制。主备双机热备份是指相同的两个机器同时工作,一旦主机发生故障,系统应能够自动切换,将备机升为主机,以保证通信畅通。由于通信协议是非常复杂的协议,通信软件也是复杂度很高的软件。多年以来,通信软件一直是以集中式为主,近年来,随着接入业务的不断扩展, 出现了分布式结构的通信软件。分布式软件有主控板和接口板软件之分。其中主控板软件承载比较重要的系统控制数据,并记录了所有单板的配置数据及信息,需要很高的可靠性。为了最大限度地减少意外情况下主控板死机对系统造成的灾难性影响,现在有些技术在软件上也执行主备双机热备份的倒换机制,即在软件上有主用板和备用板之分,一旦主用板软件发生死机时或复位等其他故障,备用板软件能够自动转变为主用板软件,系统可以继续正常运行,同时对一些系统内已经成功建立的业务,如视频、语音、下载等,在倒换前后不发生中断,整个过程对用户透明。
当前很多通信业务都是基于传输控制协议(TCP)实现的,在基于TCP协议实现的通信业务的使用过程中,应用程序不会直接操作TCP协议层,而是利用一种编程接口Socket与TCP协议进行通信,Socket作为一种TCP协议和应用程序之间的编程接口,可以向应用程序提供客户端对服务器(client-server)形式的面向连接的或无连接的通信服务。对于面向连接的服务,一个公用的服务器长期监听连接请求,有请求时就创建新Socket和新进程与客户端通信,通信结束后新Socket和新进程都被关闭。
Socket和TCP所涉及的数据结构庞大且复杂,将其简化、抽象后得到如图1所示的结构,如图1所示,其中Socket和TCP的数据结构用虚框分隔成三部分虚框101中的部分为Socket数据结构;虚框102中的部分是传输层协议的协议控制块INPCB(InternetProtocol Control Block);虚框103中的部分是连接状态控制块(TCPCB)。各传输协议,比如TCP、用户数据报协议(UDP)等,都有INPCB,而TCPCB是面向连接的TCP协议特有的。
在系统中存在一条任务控制块结构(TCB_S)的单向链表104,每个使用Socket的任务唯一对应一个TCB_S,比如TCB_S105,TCB_S105的主要内容包括任务号task id和FILE_S,FILE_S是用于描述任务所打开的“文件”结构,这里所说的“文件”可以是普通意义上的磁盘文件,也可以是Socket,但嵌入式系统中并不使用磁盘文件,为了描述方便我们将其抽象,认为只有Socket。一个任务可以打开多个文件,也就有多个FILE_S,这些FILE_S组成线性表放在TCB_S中,就是TCB_S中的file
、file[1]…,每个file对应一个FILE_S106,FILE_S106中主要包括诸如读(read)、写(write)等方法,以及一个指向Socket结构(SOCKET_S)107的指针socket。
SOCKET_S107主要包括一个指向传输协议控制块结构(INPCB_S)108的指针pcb、协议开关表指针proto_sw、任务号task_id、发送队列send_q以及接收队列rcv_q等。
每个INPCB_S唯一对应一个SOCKET_S。INPCB_S108主要包括远端地址及端口号foreign、本地地址及端口号local、Socket指针、锁定路由route以及指向TCPCB_S09结构的协议相关控制块指针prorelated_pcb。
TCPCB_S109是TCP特有的,用于描述连接的各种参数,主要包括接收数据队列、连接状态state、各定时器timers、PCB指针pcb、未被确认的数据起始指针send_unack、发送指针send_next以及期望接收的数据指针rcv_next。
由上述可知,TCP协议不但是一种面向连接的协议,而且它的数据结构非常复杂,TCP协议有自己的状态机,有确认和重传机制,有发送窗口等拥塞避免方法,因此在两个单板上保持TCP协议本身的一致是非常困难的,实现基于TCP协议的通信业务热备份方法的难度太高,所以当前还没有一种有效的、实现基于TCP协议的通信业务主备双机热备份的方法。

发明内容
有鉴于此,本发明的主要目的是提供一种实现软件上主备双机热备份的方法,从而保证通信系统的主用板发生死机或复位等故障时,通信系统内基于TCP协议实现的通信业务不会受到影响,保证通信的畅通,提高通信系统地可靠性。
为了实现上述目的,本发明的技术方案具体是这样实现的一种实现软件上主备双机热备份的方法,其特征在于,其该方法包括以下步骤a、备用板运行正常后,向主用板发出就绪信息和批量备份请求;b、主用板接收到就绪信息和批量备份请求,向备用板进行包括TCP协议数据在内的数据的批量备份;c、进入数据的实时备份状态,在该状态下,实时判断主用板上包括TCP协议数据的数据是否发生变化,如果是,则主用板向备用板发送实时备份的消息,备用板接收到该消息后,将主用板上发生改变的包括TCP协议数据在内的数据,实时地传输给备用板,并执行步骤d;否则,直接执行步骤d;d、实时判断主用板是否正常运转,如果是,则返回步骤c;否则,执行步骤e;e、进行主用板和备用板的切换,备用板升为主用板,并进入正常运行状态。
所述的TCP协议数据包括所有的TCP协议的配置数据和状态数据。
所述的TCP协议数据为主用板中每个TCP连接所对应的数据结构TCB_S、FILE_S、SOCKET_SINPCB_S以及TCPCB_S中的数据。
所述的步骤b中进一步包括备用板上收到批量备份的TCP协议数据以后,根据TCB_S和SOCKET_S中包含的TCP连接对应的任务号,恢复TCP连接对应的数据和数据结构。
在所述的实时备份状态下,当主用板上的TCP连接断开以后,主用板向备用板发消息,通知备用板清除该TCP连接。
所述判断主用板是否正常运转的处理过程为系统判断主用板的在位信息,如果有在位信息,则主用板正常运转,否则,主用板没有正常运转。
所述主用板和备用板的切换过程为系统通知所有的接口板断开与主用板的连接,改为与备用板连接,由备用板接收和发送数据以及进行数据的处理。
所述的切换过程中进一步包括平滑处理过程,将包括TCP协议数据在内的数据进行平滑处理。
所述的数据平滑处理为备用板刚刚切换为新主用板时,从接口板上将各个变化的状态数据读取到新主用板上。
所述的平滑处理过程还包括所述的新的主用板检查数据中本端各个TCP连接的顺序号和状态信息与对端各个TCP连接的顺序号和状态信息是否一致,如果一致,则进入正常运行状态,否则,先对发生错误的TCP连接进行断开或丢包处理,之后再重新进入正常运行状态。
本发明所述的方法在主备两板都运转起来,并进入实时备份状态后,随时可以进行主备倒换,并针对TCP协议特有的、复杂的数据结构,在批量备份过程中不考虑到底有哪些数据结构发生过变化,而是把所有的数据结构统一都由主用板备份到备用板上,在实时备份状态中,主用板上引起TCP协议状态发生的一切变化,都会触发主用板向备用板进行备份,如果一旦主用板发生死机或复位等情况,备用板会自动升为主用板,此时系统内基于TCP协议实现的通信业务由于在备用板上都有备份,所以通信不会受到影响,从而保证通信的畅通,降低了由于通信系统发生故障时造成的损失,间接地节约了成本,并且可避免在意外情况下主用板死机对电信系统造成的服务中断等可怕后果,提高通信系统的工作可靠性。


图1为Socket和TCP所涉及的数据结构图;图2为本发明所述方法的流程图;图3为本发明所述方法在进行软件热备份时的状态迁移图。
具体实施例方式
下面结合附图和具体实施例对本发明再作进一步详细的说明。
本发明所述的方法是在硬件设置有主用板和备用板、且该两板互为备份的正常运行条件下进行的,其中,主用板软件运行在主用板上,备用板软件运行在备用板上。本发明的核心思想是在正常情况下系统中有两块控制板同时在位运行,但是其中只有一块被称为主用板的在真正地起到主控的作用,另外一块被称为备用板的则处于备份状态,将主用板上的包括TCP协议数据在内的数据备份到备用板上,即在主用板和备用板上同时分别保存相同的数据,一旦主用板由于某种原因不能正常运转时,系统会自动切换到备用板,由该备用板接替原主用板担任新主用板继续工作,从而使基于TCP协议实现的通信业务不会受到影响。
由于与TCP协议相关的数据都存放在数据结构TCB_S、FILE_S、SOCKET_SINPCB_S、TCPCB_S中,所以,针对TCP复杂的数据结构,本发明所述的方法在备份过程中不考虑到底有哪些数据结构发生过变化,而是把所有的数据结构统一都由主用板备份到备用板上,如图2所示为本发明所述方法的流程图,其具体过程包括以下步骤a、备用板插入通讯系统的插槽中,运行正常后,向主用板发出就绪信息和批量备份请求;b、主用板接收到就绪信息和批量备份请求,向备用板进行数据的批量备份,其中包括TCP协议数据的批量备份,即把主用板上所有的TCP协议的配置数据和状态数据批量备份到备用板;如图1所示,每个TCP连接对应的数据结构TCB_S、FILE_S、SOCKET_SINPCB_S、TCPCB_S中的数据,都要备份到备用板,由于备份的过程中,数据是打包备份的,数据在数据结构中的存储顺序可能被打乱,所以备用板上收到这些数据以后,找到TCB_S和SOCKET_S中包含的该TCP连接对应的任务号taskid,根据该任务号依次恢复该TCP连接对应的这些数据和数据结构。
c、数据的批量备份结束后,进入数据的实时备份状态,在该状态下,实时判断主用板中包括TCP协议数据在内的数据是否发生变化,如果是,则主用板向备用板发送实时备份的消息,备用板接收到该消息后,将主用板上发生的配置数据的实时改变以及状态数据的实时改变,实时地传输给备用板,并执行步骤d;否则,直接执行步骤d;本步骤中,主用板上引起TCP协议状态发生的一切变化,都会触发主用板向备用板进行备份,例如,主用板收到TCP报文、主用板向外发送TCP报文或者应用程序从缓冲区中放入、取出报文时,都要将相应的数据发送到备用板进行备份,而且当主用板上TCP连接断开以后,主用板向备用板发消息,通知备用板清除掉该TCP连接。主用板上每个数据的动态改变都被实时备份到备用板上,由于此时备用板无法收到外界的数据,因此当主用板上的TCP连接每次发送、接收报文,应用程序从缓冲区中放入、取出报文时,都需要把数据结构TCB_S、FILE_S、SOCKET_SINPCB_S、TCPCB_S中变化的数据实时备份到备用板上,并及时恢复数据,从而使得在主用板和备用板上运行相同的应用程序,执行同样的处理时,主用板和备用板上的所有标识TCP协议状态的数据完全保持一致。
d、实时判断主用板是否正常运转,如果是,则返回步骤c;否则,执行步骤e;在通信系统的总线上原本有一套仲裁机制,可以判断主用板的在位信息,如果有在位信息,则说明主用板正常运转,否则,主用板没有正常运转,通信系统通过这套机制来判断主用板是否正常运转。
e、进行主用板和备用板的切换,备用板升为主用板,同时对数据进行平滑处理,其中包括对TCP协议数据的平滑处理,从而实现软件热备份的目的。
所述主用板和备用板的切换是通过通信系统总线本身的机制实现的,当主用板没有在位信息时,系统总线通知所有的接口板断开与主用板的连接,改为与备用板连接,由备用板接收和发送数据以及进行数据的处理,这样,备用板就自动升为主用板。
上述的数据平滑处理为在发生主备切换时,备用板刚刚切换为主用板,由于没有来得及对变化的数据进行实时备份,因此新主用板从接口板上将各个变化的状态数据读取到新主用板上;又由于在主备切换的过程中可能丢失数据,新的主用板检查数据中本端,即数据接收端的各个TCP连接的顺序号和状态等信息与对端,即数据输出端的各个TCP连接的顺序号和状态等信息是否一致,如果一致,则进入正常运行状态,否则,先对发生错误的TCP连接进行断开或丢包处理,之后再重新进入正常运行状态。
图3所示为本发明在进行软件热备份时的各个状态之间进行转换的状态迁移图,如图3所示,虚线框301表示主用板各个状态的迁移,其中包括主用板的等待备用板插入状态303、等待批量备份请求状态304、批量备份状态305、实时备份状态306以及数据平滑处理状态307;虚线框302表示备用板各个状态的迁移,其中包括备用板的接收批量备份数据状态308、接收实时备份数据状态309和就绪状态310。
图3同时说明了热备份过程中各个状态事件的进展过程,这些过程包括a、主用板先处于等待备用板插入状态303,当事件1发生后,主用板进入等待批量备份请求状态304,其中的事件1为备用板插入通讯系统的插槽中;b、当事件2发生后,主用板进入批量备份状态305,事件2为主用板接到备用板批量备份请求;
c、当事件3发生后,主用板就进入实时备份状态306,事件3为软件系统中各个模块的批量备份结束;d、当事件1发生后,备用板处于就绪状态310,当事件5发生后,备用板进入接收批量备份数据状态308,事件5为备用板发送的备用板就绪信息和批量备份请求被主用板成功接收;e、当事件6发生后,备用板开始处于接收实时备份数据的状态309,事件6为备用板接收到主用板的实时备份消息;f、当事件7发生后,系统执行主备倒换,新主用板进入数据平滑处理的状态,事件7为主备倒换、主用板复位或主用板发出倒换命令;g、事件8结束后,主备切换成功,事件8为平滑处理过程。
在上述过程中,当事件4发生时,主用板会从各个不同状态回到等待备用板插入状态303,同时备用板也从不同状态回到就绪状态310,事件4为备用板重启、发送消息到备用板失败、备用板复位或者备用板收到错误消息。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
权利要求
1.一种实现软件上主备双机热备份的方法,其特征在于,其该方法包括以下步骤a、备用板运行正常后,向主用板发出就绪信息和批量备份请求;b、主用板接收到就绪信息和批量备份请求,向备用板进行包括TCP协议数据在内的数据的批量备份;c、进入数据的实时备份状态,在该状态下,实时判断主用板上包括TCP协议数据的数据是否发生变化,如果是,则主用板向备用板发送实时备份的消息,备用板接收到该消息后,将主用板上发生改变的包括TCP协议数据在内的数据,实时地传输给备用板,并执行步骤d;否则,直接执行步骤d;d、实时判断主用板是否正常运转,如果是,则返回步骤c;否则,执行步骤e;e、进行主用板和备用板的切换,备用板升为主用板,并进入正常运行状态。
2.如权利要求1所述的方法,其特征在于,所述的TCP协议数据包括所有的TCP协议的配置数据和状态数据。
3.如权利要求1所述的方法,其特征在于,所述的TCP协议数据为主用板中每个TCP连接所对应的数据结构TCB_S、FILE_S、SOCKET_S INPCB_S以及TCPCB_S中的数据。
4.如权利要求3所述的方法,其特征在于,在步骤b中进一步包括备用板上收到批量备份的TCP协议数据以后,根据TCB_S和SOCKET_S中包含的TCP连接对应的任务号,恢复TCP连接对应的数据和数据结构。
5.如权利要求1所述的方法,其特征在于,在所述的实时备份状态下,当主用板上的TCP连接断开以后,主用板向备用板发消息,通知备用板清除该TCP连接。
6.如权利要求1所述的方法,其特征在于,所述判断主用板是否正常运转的处理过程为系统判断主用板的在位信息,如果有在位信息,则主用板正常运转,否则,主用板没有正常运转。
7.如权利要求1所述的方法,其特征在于,所述主用板和备用板的切换过程为系统通知所有的接口板断开与主用板的连接,改为与备用板连接,由备用板接收和发送数据以及进行数据的处理。
8.如权利要求1所述的方法,其特征在于,所述的切换过程中进一步包括平滑处理过程,将包括TCP协议数据在内的数据进行平滑处理。
9.如权利要求8所述的方法,其特征在于,所述的数据平滑处理为备用板刚刚切换为新主用板时,从接口板上将各个变化的状态数据读取到新主用板上。
10.如权利要求9所述的方法,其特征在于,所述的平滑处理过程还包括所述的新的主用板检查数据中本端各个TCP连接的顺序号和状态信息与对端各个TCP连接的顺序号和状态信息是否一致,如果一致,则进入正常运行状态,否则,先对发生错误的TCP连接进行断开或丢包处理,之后再重新进入正常运行状态。
全文摘要
本发明公开了一种实现软件上主备双机热备份的方法,该方法包括a.备用板运行正常后,向主用板发出批量备份请求;b.主用板接收到该请求,向备用板进行包括TCP协议数据在内的数据的批量备份;c.数据的批量备份结束,进入数据的实时备份状态,判断主用板上包括TCP协议数据的数据是否发生变化,如果是,则主用板向备用板发送实时备份的消息,并执行步骤d;否则,执行步骤e;d.备用板接收到该消息后,将主用板上发生改变的包括TCP协议数据在内的数据,实时地传输给备用板;e.判断主用板是否正常运转,如果是,则返回步骤c;否则,执行步骤f;f.进行主用板和备用板的切换,对包括TCP协议数据在内的数据进行平滑处理,之后进入正常运行状态,利用本方法可以保证通信系统的主用板发生死机或复位等故障时,通信系统内基于TCP协议实现的通信业务不会受到影响,从而保证通信的畅通。
文档编号H04L29/02GK1622483SQ200310115279
公开日2005年6月1日 申请日期2003年11月27日 优先权日2003年11月27日
发明者韩厚晓 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1