一种主从仲裁方法及系统
技术领域
本申请涉及通信技术领域,尤其涉及一种主从仲裁方法及系统。
背景技术
为了保证通信设备的可靠性,一般都对通信设备中的关键板卡实施冗余备份,即采用双板卡的备份工作机制。双板卡的备份工作机制是指,在正常情况下,一张板卡处于主状态,负责处理通信设备的大部分数据业务;而另一种板卡处于从状态,仅负责处理通信设备的小部分数据业务。在特殊的情况下,例如处于主状态的板卡出现故障时,两张板卡之间就会进行主从状态的切换。现有技术中,一般采用以以太报文为基础的主从仲裁方法处理两张板卡之间的主从状态切换,具体的,两张板卡互相发送以太报文,两张板卡能够在解析以太报文后获取对端板卡的状态信息,从而根据对端板卡的状态信息,两张板卡重新设置自身的状态,即完成两张板卡之间的主从状态切换。在上述过程中,由于以太报文的解析需要时间,因此导致两张板卡之间的主从状态切换的时间较长。
发明内容
本申请实施例提供一种主从仲裁方法及系统,能够解决现有技术中由以太报文为基础的主从仲裁方法存在的两张板卡之间主从状态切换的时间过长的问题。
为达到上述目的,本申请实施例提供以下方案:
第一方面,本申请实施例提供一种主从仲裁方法,该方法应用于主从仲裁系统,所述主从仲裁系统包括:第一板卡、第二板卡、第一状态线和第二状态线,其中,第一板卡包括:第一中央处理器CPU和第一可编程逻辑器件PLD,第二板卡包括:第二CPU和第二PLD;该方法包括:
处于主状态的第一CPU周期性地向第一PLD发送第一心跳信息,所述第一心跳信息用于表示第一CPU处于正常工作状态;
若处于主状态的第一PLD在预设时长内未接收到第一心跳信息,第一PLD从主状态切换到从状态,并将第一状态线设置为从状态;
当处于从状态的第二PLD检测到第一状态线处于从状态时,第二PLD从从状态切换到主状态;
当处于从状态的第二CPU检测到第二PLD处于主状态时,第二CPU从从状态切换到主状态。
第二方面,本申请实施例提供一种主从仲裁系统,该系统包括:第一板卡、第二板卡、第一状态线和第二状态线,其中,第一板卡包括:第一中央处理器CPU和第一可编程逻辑器件PLD,第二板卡包括:第二CPU和第二PLD;
第一CPU,用于在自身处于主状态的情况下,周期性地向第一PLD发送第一心跳信息,所述第一心跳信息用于表示第一CPU处于正常工作状态;
第一PLD,用于在自身处于主状态的情况下,当在预设时长内未接收到第一心跳信息时,从主状态切换到从状态,并将第一状态线设置为从状态;
第二PLD,用于在自身处于从状态的情况下,当检测到第一状态线处于从状态时,从从状态切换到主状态;
第二CPU,用于在自身处于从状态的情况下,当检测到第二PLD处于主状态时,从从状态切换到主状态。
本申请实施例提供的一种主从仲裁方法和系统,在处于主状态的第一PLD在预设时间内未接收到第一心跳信息,即第一PLD确定第一CPU不能正常工作时,第一PLD从主状态切换到从状态,并通过将第一状态线设置为从状态以使第二PLD获知第一PLD的状态已经改变,从而第二PLD从从状态切换到主状态;第二CPU检测到第二PLD处于主状态,也从从状态切换到主状态。与现有技术中以以太报文为基础的主从仲裁方法相比,在本申请中,第二板卡通过第一状态线所处的状态来获知第一板卡所处的状态,从而第一板卡和第二板卡之间无需互相发送携带状态信息的以太报文,两张板卡也无需进行以太报文的解析过程,因此能够减少两张板卡之间主从状态切换的时间。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种主从仲裁系统的结构示意图;
图2为本申请实施例提供的一种主从仲裁方法的流程图;
图3为本申请实施例提供的另一种主从仲裁方法的流程图;
图4为本申请实施例提供的又一种主从仲裁方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
如图1所示,本申请实施例提供一种主从仲裁系统,所述主从仲裁系统包括:第一板卡10、第二板卡20、第一状态线13和第二状态线23。
其中,第一板卡10包括:第一中央处理器11(Central Processing Unit,CPU)和第一可编程逻辑器件12(Programmable Logic Device,PLD)。第二板卡20包括:第二CPU21和第二PLD22。
需要说明的是,第一状态线用于使第二PLD获知第一PLD所处的状态。第二状态线用于使第一PLD获取第二PLD所处的状态。例如,当第二PLD检测到第一状态线处于从状态时,第二PLD可以确定第一PLD处于从状态;当第二PLD检测到第一状态线处于主状态时,第二PLD可以确定第一PLD处于主状态。具体实现过程中,第一状态线和第二状态线的主从状态可以用电信号的高低电平表示。示例性的,当第一状态线中的电信号保持高电平时,第一状态线处于主状态;当第一状态线中的电信号保持低电平时,第一状态线处于从状态。
另外,第一板卡和第二板卡可以是主控卡或数据交换卡等。第一CPU和第二CPU可以是无内部互锁流水级的处理器(Microprocessor without interlocked piped stages,MIPS)或Acorn公司的精简指令集(Reduced Instruction Set Computing,RISC)微处理器(Acorn RISC Machine,ARM)等。第一PLD和第二PLD可以是复杂可编程逻辑器件(ComplexProgrammable Logic Device,CPLD)或现场可编程逻辑门阵列(Field Programmable GateArray,FPGA)等。
为了解决现有技术中由以太报文为基础的主从仲裁方法存在的两张板卡之间主从状态切换的时间较长的问题,本申请实施例提供一种主从仲裁方法,所述方法应用于图1所示的主从仲裁系统中。为了便于说明,本申请实施例假设当前第一板卡处于主状态,第二板卡处于从状态,即第一CPU和第一PLD均处于主状态,第二CPU和第二PLD均处于从状态。如图2所示,所述方法包括:
201、处于主状态的第一CPU周期性地向第一PLD发送第一心跳信息。
其中,第一心跳信息用于表示第一CPU处于正常工作状态。
需要说明的是,第一PLD中设置有心跳寄存器,第一CPU周期性地向第一PLD发送心跳信息,即第一CPU周期性地向第一PLD的心跳寄存器写入心跳信息。
202、若处于主状态的第一PLD在预设时长内未接收到第一心跳信息,第一PLD从主状态切换到从状态。
可以理解的是,由于第一心跳信息用于表示第一CPU处于正常工作状态,因此第一PLD在预设时长内未接收到第一心跳信息,说明第一CPU处于非正常工作状态(例如第一CPU出现故障),此时为了保证通信设备能够正常运行,需要进行两张板卡间的主从状态切换,即将处于从状态的第二板卡切换到主状态。
需要说明的是,第一PLD中设置有状态寄存器,所述状态寄存器用于管理第一PLD当前所处的状态。将第一PLD的状态寄存器设置为从状态,即可使得第一PLD从主状态切换到从状态。
203、第一PLD将第一状态线设置为从状态。
204、当处于从状态的第二PLD检测到第一状态线处于从状态时,第二PLD从从状态切换到主状态。
需要说明的是,第二PLD中设置有状态寄存器,该状态寄存器用于管理第二PLD当前所处的状态。将第二PLD的状态寄存器重新设置为主状态,即可使得第二PLD从从状态切换到主状态。
进一步的,第二PLD切换到主状态后,第二PLD会将第二状态线设置为主状态,以便于第一PLD获知第二PLD处于主状态。
205、当处于从状态的第二CPU检测到第二PLD处于主状态时,第二CPU从从状态切换到主状态。
需要说明的是,处于主状态的第二CPU会周期性地向第二PLD发送第二心跳信息,以表明第二CPU正常工作。
本申请实施例提供的一种主从仲裁方法,在处于主状态的第一PLD在预设时间内未接收到第一心跳信息,即第一PLD确定第一CPU不能正常工作时,第一PLD从主状态切换到从状态,并通过将第一状态线设置为从状态以使第二PLD获知第一PLD的状态已经改变,从而第二PLD从从状态切换到主状态;第二CPU检测到第二PLD处于主状态,也从从状态切换到主状态。与现有技术中以以太报文为基础的主从仲裁方法相比,在本申请中,第二板卡通过第一状态线所处的状态来获知第一板卡所处的状态,从而第一板卡和第二板卡之间无需互相发送携带状态信息的以太报文,两张板卡也无需进行以太报文的解析过程,因此能够减少两张板卡之间主从状态切换的时间。
另外,若第一板卡处于从状态,第二板卡处于主状态,当两张板卡之间需要进行主从状态切换时,可以执行下面的主从仲裁方法:处于主状态的第二CPU周期性向第二PLD发送第二心跳信息,所述第二心跳信息用于表示第二CPU处于正常工作状态;若处于主状态的第二PLD在预设时长内未接收到第二心跳信息,第二PLD从主状态切换到从状态,并将第二状态线设置为从状态。然后,当处于从状态的第一PLD检测到第二状态线处于从状态时,第一PLD从从状态切换到主状态。最终,当处于从状态的第一CPU检测到第一PLD处于主状态时,第一CPU从从状态切换到主状态。
在主从仲裁系统刚启动时,第一PLD、第二PLD、第一状态线以及第二状态线均处于从状态。此时,第一板卡和第二板卡均未确定自身所处的状态。因此,为了保证通信设备的正常工作,需要在主从仲裁系统的初始化阶段,确定两张板卡各自所处的状态,即从第一板卡和第二板卡中确定哪张板卡处于主状态,哪张板卡处于从状态。
基于此,在执行图2所示的方法流程之前,本申请实施例提供另一种主从仲裁方法,所述方法应用于主从仲裁系统的初始化阶段,某一PLD接收到心跳信息的时间早于另一PLD接收到心跳信息的时间的场景。为了便于说明,本申请实施例中假设第一PLD接收到第一心跳信息的时间早于第二PLD接收到第二心跳信息的时间。如图3所示,该方法包括:
301、第一PLD在接收到第一CPU发送的第一心跳信息之后,检测到第二状态线处于从状态,将自身状态设置为主状态。
302、第一PLD将第一状态线设置为主状态。
303、当第一CPU检测到第一PLD处于主状态时,第一CPU将自身状态设置为主状态。
304、第二PLD在接收到第二CPU发送的第二心跳信息之后,检测到第一状态线处于主状态,将自身状态设置为从状态。
305、当第二CPU检测到第二PLD处于从状态时,第二CPU将自身状态设置为从状态。
另外,若在主从仲裁系统的初始化阶段,第二PLD接收到第二心跳信息的时间早于第一PLD接收到第一心跳信息的时间,则可以执行下面的主从仲裁方法,确定第一板卡处于从状态,第二板卡处于主状态。该方法包括:第二PLD在接收到第二CPU发送的第二心跳信息之后,检测到第一状态线处于从状态,将自身状态设置为主状态,并将第二状态线设置为主状态。然后,第一PLD在接收到第一CPU发送的第一心跳信息之后,检测到第二状态线处于主状态,将自身状态设置为从状态。可以理解的是,当第二CPU检测到第二PLD处于主状态时,第二CPU将自身状态设置为主状态。当第一CPU检测到第一PLD处于从状态时,第一CPU将自身状态设置为从状态。
通过上述方法,能够在主从仲裁系统的初始化阶段,根据两张板卡中PLD接收到心跳信息的时间早晚,决定两张板卡的主从状态,即接收到心跳信息时间较早的PLD对应的板卡设置为主状态,而接收到心跳信息时间较晚的PLD对应的板卡设置为从状态,从而保证在主从仲裁系统启动后,通信设备能够尽快正常工作。
进一步的,为了在主从仲裁系统的初始化阶段,确定两张板卡各自所处的状态,本申请实施例提供又一种主从仲裁方法,所述方法应用于主从仲裁系统的初始化阶段,第一PLD接收到第一心跳信息的时间与第二PLD接收到第二心跳信息的时间相同的场景。如图4所示,该方法包括:
401、第一PLD在接收到第一CPU发送的第一心跳信息之后,检测到第二状态线处于从状态,将自身状态设置为主状态。
402、第一PLD将第一状态线设置为主状态。
403、第二PLD在接收到第二CPU发送的第二心跳信息之后,检测到第一状态线处于从状态,将自身状态设置为主状态。
404、第二PLD将第二状态线设置为主状态。
需要说明的是,步骤401、402与步骤403、404是同时执行的。
405、当处于主状态的第一PLD检测到第二状态线处于主状态时,第一PLD根据预先设置的主状态标识,将自身状态设置为主状态。
406、当第一CPU检测到第一PLD处于主状态时,第一CPU将自身状态设置为主状态。
407、当处于主状态的第二PLD检测到第一状态线处于主状态时,第二PLD根据预先设置的从状态标识,从主状态切换到从状态。
需要说明的是,第二PLD从主状态切换到从状态后,第二PLD会将第二状态线设置为从状态。
408、当第二CPU检测到第二PLD处于从状态时,第二CPU将自身状态设置为从状态。
具体实现过程中,第二CPU以预设的时间间隔检测第二PLD所处的状态,若第二CPU连续检测到第二PLD处于从状态的次数达到预设次数时,第二CPU将自身状态为从状态。另外,若第二CPU连续检测到第二PLD处于主状态的次数达到预设次数时,第二CPU将自身状态设置为主状态。
另外,若第一PLD预先设置的是从状态标识,而第二PLD预先设置的是主状态标识,则可以执行下面的主从仲裁方法,确定第一板卡处于从状态,第二板卡处于主状态。该方法包括:当处于主状态的第一PLD检测到第二状态线处于主状态时,第一PLD根据预先设置的从状态标识,将自身状态设置为从状态,然后,当第一CPU检测到第一PLD处于从状态时,第一CPU将自身状态设置为从状态。而当处于主状态的第二PLD检测到第一状态线处于主状态时,第二PLD根据预先设置的主状态标识,将自身状态设置为主状态,然后,当第二CPU检测到第二PLD处于主状态时,第二CPU将自身状态设置为主状态。
另外,可以根据两张板卡的槽号位,来确定第一PLD和第二PLD中,哪个PLD预先设置的是主状态标识,哪个PLD预先设置的是从状态标识。示例性的,若第一板卡的槽号位小于第二板卡的槽号位,则第一PLD预先设置的是主状态标识,第二PLD预先设置的是从状态标识。
通过上述方法,能够在主从仲裁系统启动后,在第一PLD接收到第一心跳信息的时间与第二PLD接收到第二心跳信息的时间相同的情况下,能够根据两个PLD中预先设置的主标识、从标识,决定两张板卡的主从状态,即预设设置主标识的PLD对应的板卡设置为主状态,预设设置从标识的PLD对于的板卡设置为从状态,从而保证在主从仲裁系统启动后,通信设备能够尽快正常工作。
如图1所示,本申请实施例提供一种主从仲裁系统,用于执行前述主从仲裁方法,该系统包括:
第一CPU11,用于在自身处于主状态的情况下,周期性地向第一PLD12发送第一心跳信息,所述第一心跳信息用于表示第一CPU处于正常工作状态。
第一PLD12,用于在自身处于主状态的情况下,当在预设时长内未接收到第一心跳信息时,从主状态切换到从状态,并将第一状态线13设置为从状态。
第二PLD22,用于在自身处于从状态的情况下,当检测到第一状态线13处于从状态时,从从状态切换到主状态。
第二CPU21,用于在自身处于从状态的情况下,当检测到第二PLD22处于主状态时,从从状态切换到主状态。
本申请实施例提供的一种主从仲裁系统,在处于主状态的第一PLD在预设时间内未接收到第一心跳信息,即第一PLD确定第一CPU不能正常工作时,第一PLD从主状态切换到从状态,并通过将第一状态线设置为从状态以使第二PLD获知第一PLD的状态已经改变,从而第二PLD从从状态切换到主状态;第二CPU检测到第二PLD处于主状态,也从从状态切换到主状态。与现有技术中以以太报文为基础的主从仲裁方法相比,在本申请中,第二板卡通过第一状态线所处的状态来获知第一板卡所处的状态,从而第一板卡和第二板卡之间无需互相发送携带状态信息的以太报文,两张板卡也无需进行以太报文的解析过程,因此能够减少两张板卡之间主从状态切换的时间。
需要说明的是,在主从仲裁系统刚启动时,第一PLD12、第二PLD22、第一状态线13以及第二状态线23均处于从状态。
在一种具体的实现方式中,第一PLD12,还用于在主从仲裁系统的初始化阶段,在接收到第一CPU11发送的第一心跳信息之后,检测到第二状态线23处于从状态,将自身状态设置为主状态,并将第一状态线13设置为主状态;第一CPU11,还用于检测到第一PLD12处于主状态时,将自身状态设置为主状态;第二PLD22,还用于接收到第二CPU21发送的第二心跳信息之后,检测到第一状态线13处于主状态,将自身状态设置为从状态;第二CPU21,还用于检测到第二PLD22处于从状态时,将自身状态设置为从状态。
在另一种具体的实现方式中,第一PLD12,还用于在主从仲裁系统的初始化阶段,接收到第一CPU11发送的第一心跳信息之后,检测到第二状态线23处于从状态,将自身状态设置为主状态,并将第一状态线13设置为主状态;第二PLD22,还用于在主从仲裁系统的初始化阶段,接收到第二心跳信息之后,检测到第一状态13处于从状态,将自身状态设置为主状态,并将第二状态线23设置为主状态;第一PLD12,还用于在自身处于主状态的情况下,当检测到第二状态线23处于主状态时,根据预先设置的主状态标识,将自身状态设置为主状态;第一CPU11,还用于检测到第一PLD12处于主状态时,将自身状态设置为主状态;第二PLD22,还用于在自身处于主状态的情况下,当检测到第一状态线13处于主状态时,根据预先设置的从状态标识,将自身状态设置为从状态;第二CPU21,还用于在检测到第二PLD22处于从状态时,将自身状态设置为从状态。
另外,第二CPU21,具体用于以预设的时间间隔检测第二PLD22所处的状态,当连续检测到第二PLD22处于从状态的次数达到预设次数时,将自身状态设置为从状态。
本申请实施例提供的主从仲裁系统,能够在初始化阶段,根据第一PLD接收到第一心跳信息的时间和第二PLD接收到第二心跳信息的时间,确定第一板卡和第二板卡所处的状态,从而保证在主从仲裁系统启动后,通信设备能够正常工作。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。