CN100524219C - 执行不同版本软件的冗余处理器的配置同步的方法和装置 - Google Patents
执行不同版本软件的冗余处理器的配置同步的方法和装置 Download PDFInfo
- Publication number
- CN100524219C CN100524219C CNB2004800326710A CN200480032671A CN100524219C CN 100524219 C CN100524219 C CN 100524219C CN B2004800326710 A CNB2004800326710 A CN B2004800326710A CN 200480032671 A CN200480032671 A CN 200480032671A CN 100524219 C CN100524219 C CN 100524219C
- Authority
- CN
- China
- Prior art keywords
- order
- unit
- stand
- mirror image
- supported
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/56—Routing software
- H04L45/563—Software download or update
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2064—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring while ensuring consistency
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了用于在活动单元和备用单元具有不同版本的软件镜像时维持配置同步的方法和设备。优选实现方式允许了即使在备用单元经历镜像升级之后系统也能在有状态模式中工作。其他实现方式允许了在活动单元具有比备用单元更高级别版本的镜像之时系统在有状态模式中工作。
Description
技术领域
本发明涉及共享配置要求的冗余设备。更具体而言,本发明涉及维持网络设备的高可用性。
背景技术
在被配置用于使用冗余性的系统内,需要至少两个处理单元,其中至少一个被指定为“活动单元”,而至少另一个被指定为“备用单元”。这里所使用的“单元”是指一个或多个处理器、线路卡等等。备用单元的任务是在活动单元发生故障时接替活动单元,在理想情况下这是在没有任何服务中断的情况下进行的。活动单元负责提供服务并管理系统配置。为了提供备用能力,在任何时刻,其配置视图必须与活动单元所拥有的视图保持同步。初始配置以及所有后续的配置变化都必须被同步到备用单元。
一般而言,系统可以被配置处于“冷”、“暖”或“热”备用状态。尽管这些术语未精确地定义,但是象征性的温度增加指示出备用单元的相对较高的准备就绪状态。一般而言,冷备用状态是指硬件冗余性。当在冷备用状态期间发生故障时,网络设备将会重启动,并且备用单元变成活动。在暖备用状态中,存在硬件冗余性和足够的应用冗余性,从而在切换(switch over)时网络设备不必重启动。但是,经由网络设备的会话丢失并且需要重启动。热备用状态是指存在硬件冗余性和足够的应用冗余性,从而使得一旦发生切换,设备不被重启动,并且经由网络设备的会话经过切换之后仍被保持。在本发明的上下文中,我们描述的是工作在被称为“有状态切换”(SSO)的热备用模式中的系统中的配置同步。
本发明的受让人开发了这样的方法,在这些方法中,活动单元可以执行与备用单元的镜像不同的镜像。除此之外,这些方法还允许了在网络设备在无任何服务中断的情况下工作的同时网络设备的备用单元的软件镜像被改变。这种改变提供了更新的镜像(即升级)或更旧的镜像(即降级)以在备用单元上执行。在这个改变期间,系统继续在SSO(热备用)模式中工作。
发明内容
提供了用于在活动单元和备用单元执行不同版本的软件镜像时维持配置同步的方法和装置。优选实现方式允许了即使在备用单元执行与活动单元上执行的镜像不同的镜像的情况下系统也能在热备用状态中工作。
根据本发明的某些方面,提供了维护其中两个镜像不同的网络设备中的配置同步的方法。该方法包括以下步骤:a)动态地确定具有被活动单元的第一镜像所支持但不被备用单元的第二镜像所支持的第一语法的第一组命令;以及b)将第一组命令的至少第一部分变换成具有被备用单元上的第二镜像所支持的第二语法的第一经变换命令。
第二语法可以是较低级别的语法。变换步骤可以由活动单元执行。该方法还可以包括确定第一组命令中不能被变换成第二语法的第二部分以及确定第二部分的命令是否需要被同步到备用单元。
步骤b)可以在多个部分中执行,每个部分包括连续的变换级别之间的变换。步骤a)可以包括以下步骤:确定用于第一镜像的第二组可能的命令;确定用于第二镜像的第三组可能的命令;以及将第二组与第三组相比较以确定第一组。该方法可以包括确定被第二镜像支持但不被第一镜像支持的命令的备用差异列表。该方法可以包括以下步骤:将第一经变换命令同步到备用单元。
本发明的其他方面还提供了一种维持配置同步的方法。该方法包括以下步骤:a)动态地确定具有被活动单元的第一镜像所支持并且被备用单元的第二镜像所支持的第一语法的第一组命令;以及b)将第一组命令的至少第一部分变换成具有被第二镜像所支持的不同语法的第一经变换命令。不同语法可以是较高级别的语法。变换步骤可以由备用单元执行。步骤b)可以在多个部分中执行,每个部分包括连续的变换级别之间的变换。
本发明的其他实现方式提供了一种维持活动单元和备用单元之间的配置同步的方法。该方法包括以下步骤:由活动单元接收先前不是活动单元上的活动运行配置的一部分的新命令;以及确定新命令是否具有被备用单元的备用镜像所支持的第一语法。
该方法可以包括以下步骤:如果确定第一语法被备用镜像所支持,则将命令同步到备用单元。该方法可以包括以下步骤:当确定第一语法不被备用镜像所支持时,确定命令是否可变换到被备用镜像所支持的第二语法。
该方法可以包括以下步骤:当确定命令可变换到被备用镜像所支持的第二语法时,将新命令变换为经变换的命令。该方法可以包括以下步骤:将经变换的命令同步到备用单元。当确定命令不可变换到被备用镜像所支持的第二语法时,该方法还可以包括以下步骤:确定是否允许同步该命令或者是否需要调用策略以确定适当的纠正性动作。
本发明的某些实施例提供了一种包含在机器可读介质中的计算机程序。计算机程序包括用于控制至少一个网络设备执行以下步骤的指令:a)动态地确定具有被活动单元的第一镜像所支持但不被备用单元的第二镜像所支持的第一语法的第一组命令;以及将第一组命令的至少第一部分变换成具有被备用单元上的第二镜像所支持的第二语法的第一经变换命令。第二语法可以是较低级别的语法。变换步骤可以由活动单元执行。
该计算机程序还可以包括用于控制至少一个网络设备执行以下步骤的指令:确定第一组命令中不能被变换成第二语法的第二部分。如果命令的第二部分不能被变换,则它们将不会与备用单元同步。它们将会被对照DCL来验证,并且如果在其中找到这些命令,则当它们在活动单元上被执行之后,它们将不被同步。如果在DCL中未找到命令,则将调用策略并且将会通过策略判决的结果确定进一步的动作。
步骤b)可以在多个部分中执行,每个部分包括连续的变换级别之间的变换。步骤a)可以包括以下步骤:确定用于第一镜像的第二组可能的命令;确定用于第二镜像的第三组可能的命令;以及将第二组与第三组相比较以确定第一组。
本发明的其他实施例提供了另一种包含在机器可读介质中的计算机程序。该计算机程序包括用于控制至少一个网络设备执行以下步骤的指令:a)动态地确定具有被活动单元的第一镜像所支持并且被备用单元的第二镜像所支持的第一语法的第一组命令;以及b)将第一组命令的至少第一部分变换成具有被第二镜像所支持的不同语法的第一经变换命令。不同语法可以是较高级别的语法。变换步骤可以由备用单元执行。
步骤b)可以在多个部分中执行,每个部分包括连续的变换级别之间的变换。
本发明的其他实施例提供了一种用于维持配置同步的装置。该装置包括:至少一个被配置成用于动态地确定具有被活动单元的第一镜像所支持但不被备用单元的第二镜像所支持的第一语法的第一组命令的设备;以及至少一个被配置成用于将第一组命令的至少第一部分变换成具有被备用单元上的第二镜像所支持的第二语法的第一经变换命令的设备。第二语法可以是可以较低级别的语法。变换步骤可以由活动单元执行。
该装置还可以包括至少一个被配置成用于确定第一组命令中不能被变换成第二语法的第二部分的设备。该装置还可以包括至少一个被配置成用于确定第二部分的命令是否需要被同步到备用单元的设备。
本发明的其他实施例提供了一种用于维持配置同步的装置。该装置包括:至少一个被配置成用于动态地确定具有被活动单元的第一镜像所支持并且被备用单元的第二镜像所支持的第一语法的第一组命令的设备;以及至少一个被配置成用于将第一组命令的至少第一部分变换成具有被第二镜像所支持的不同语法的第一经变换命令的设备。不同语法可以是较高级别的语法。变换步骤可以由备用单元执行。步骤b)可以在多个部分中执行,每个部分包括连续的变换级别之间的变换。
本发明的其他实施例提供了一种用于维持配置同步的装置。该装置包括:其上存储有第一镜像的至少一个活动单元,所述至少一个活动单元被配置成创建被第一镜像所支持的命令的第一列表。该装置还包括其上存储有第二镜像的备用单元,该备用单元被配置成执行以下步骤:创建被第二镜像所支持的命令的第二列表;确定在第一列表上但不在第二列表上的命令的活动差异列表;以及确定在第二列表上但不在第一列表上的命令的备用差异列表。
所述一个或多个活动单元还可以被配置成执行以下步骤:生成第一镜像的运行配置;以及确定是运行配置的一部分并且是活动差异列表的一部分的命令的第三列表。所述一个或多个活动单元还可以被配置成执行以下步骤:当第三列表是空集时,将运行配置同步到备用单元。
所述一个或多个活动单元还可以被配置成执行以下步骤:将命令的第三列表变换成第二语法;以及将经变换的命令的第三列表同步到备用单元。该装置可以包括多个活动单元。备用单元还可以被配置成将经同步的运行配置的命令变换到较高级别的语法。
附图说明
图1是示出具有活动单元和备用单元的网络设备的图。
图2是概括成批(bulk)配置同步过程的流程图。
图3A和图3B是指示成批配置同步过程的细节的流程图。
图4是概括逐行配置同步过程的流程图。
图5示出可以被配置成实现本发明的某些方面的网络设备的简化版本。
具体实施方式
在下面的描述中阐述了许多具体细节,以便全面理解本发明。但是,没有这些具体细节中的某些或全部也可以实施本发明,这对于本领域的技术人员来说是很明显的。在另外一些例子里,没有对公知过程步骤进行详细的描述,以免不必要地模糊了本发明。
思科系统公司(Cisco Systems,Inc.)已经开发出了允许操作系统镜像的不同版本在网络设备的活动和备用单元上运行的方法和设备。一个这种方法被称为服务中软件升级(“ISSU”),它通过在备用单元加入配置时检查兼容性并且在工作期间在有状态客户端之间进行协商,来完成这一点。ISSU的某些方面例如在美国专利申请No.10/156,563和10/156,556中有描述,这里通过引用将这些专利申请并入,用于所有目的。虽然本发明的某些优选实现方式涉及ISSU,但是本发明并不局限于与ISSU一起使用。
图1示出网络设备100,其具有机箱101内的活动单元105和备用单元110。由于网络设备100包括不止一个单元,因此这样配置的单元有时在这里被称为“冗余的”。网络设备100还包括多个线路卡105。活动单元105负责为路由器提供服务。
当活动单元105发生故障时,备用单元110接管。优选地,备用单元保持在“热”备用状态中,从而允许在活动单元105发生故障时进行有状态切换。备用单元110和活动单元105的配置状态必须保持同步,以允许在活动单元105发生故障时进行有状态切换。如果,例如,更新版本的操作系统镜像被安装在了备用单元上,则这种同步可能会成问题。进一步使情况复杂化的是,在活动单元处于工作中的同时,活动单元的配置状态可能被修改。
根据本发明的某些优选实现方式,同步过程发生在两个不同的阶段中。首先,在备用单元初始化并向“热备用”状态发展期间,可以触发成批配置同步或“bulk config sync”过程,在这个过程期间,运行配置与活动单元同步。这例如可以通过将运行配置复制到备用单元中的指定RAM位置来实现。
根据优选实现方式,通过遍历所有静态定义的解析节点并将“命令行接口(“CLI”)转储(dump)”的结果存储在缓冲器中,来收集单元中可以实现的所有可能的命令。于是输出缓冲器反映了单元上的镜像的当前解析器链的瞬象。通过比较备用单元和活动单元的CLI转储结果,确定(优选通过备用单元)哪些命令在活动单元上可用但在备用单元上不可用,以及反之。正如下文中更详细描述的,一个比较用在活动单元运行更高级别版本的命令时。这个比较是确定哪些命令在被同步到备用单元之前必须被变换的基础。这些命令在同步之前被变换成较低级别的语法。其他命令被同步到备用单元,然后可以被变换成较高级别的语法。当备用单元运行更高级别版本的命令时,会发生这种情况。
在完成成批配置同步之后,在网络设备处于工作中的同时,活动单元的配置状态将会经常改变。因此,有必要经由进行中的逐行同步过程来使备用单元维持在“热”备用状态。
图2、图3A和图3B是示出根据本发明的某些实现方式的成批配置同步(“bulk config sync”)过程的流程图。在成批配置同步期间,备用单元将会接收活动单元的运行配置文件,该文件将被用于配置备用单元。图2的左侧部分指示成批配置同步期间活动单元的功能200,右侧部分指示备用单元的功能250。
在步骤202和252中,活动单元和备用单元初始化。活动单元进行到“活动”状态,而同时备用单元在其初始化期间被暂停,直到活动单元达到活动状态,从而,活动单元启动完成并运行(步骤204),同时备用单元在初始化期间被停止,等待活动单元通知它继续进行。在初始化过程期间,通过遍历所有静态定义的解析节点来收集在每个单元中可以实现的所有可能的配置命令,从而创建该单元所支持的所有可能的CLI命令的列表,在这里这被称为“CLI转储”。
所有模式(除了“exec”模式之外)下的所有命令都在一个模式即“全局配置模式”下被收集,这是因为各个配置命令在整个CLI上都是唯一的。在这个CLI收集过程中,活动单元中创建的二元树被填充以解析链遍历期间生成的所有命令,以去除任何冗余条目。然后,所有命令都被转储到缓冲器中,并被写入物理上位于备用单元中的DRAM占位符中,以便活动CLI转储可以被备用单元所读取。
同时,通过经历相同的过程,在备用单元中也创建二元树。通过对相同条目的备用二元树搜索,遍历来自活动CLI转储的每行命令。如果未找到命令,则该命令被输入到“差异(Diff)列表”中,该列表将被传送给活动单元。
优选实现方式还包括在配置同步初始化期间由活动单元和备用单元创建变换函数表(“TFT”)。根据某些这样的实现方式,TFT是一个跳跃列表,其被可编程地填充以用于在解析链被初始化时通过每个组件对命令进行升级或降级的函数指针。每个预先编程的函数可以对一个命令进行升级或降级。调用者判定是否调用函数,并且这些函数天生就会按其定义进行升级或降级。因此,在这个示例性实现方式的步骤202和步骤252期间,活动单元和备用单元初始化解析链,并以用于升级和降级函数的函数指针来填充其各自的TFT。
在步骤206和步骤254的某些实现方式中,两个单元都将其各自的CLI转储输出提取到单独的缓冲器中。在某些实现方式中,备用CLI转储保持二元树格式。活动单元还向备用单元发送指示活动单元的CLI转储输出的大小的信息。在步骤256中,备用单元在可由备用单元访问的存储器中(例如在备用单元的DRAM区域中)创建一个文件,该文件在这里被称为CLI转储文件系统或“filesys”(“CDFS”)。在步骤208和步骤258中,活动单元将其CLI转储复制到备用单元的CDFS中。然后活动单元暂停HA初始化过程,直到接收到来自备用单元的更多信息为止。
在步骤260中,备用单元通过将CDFS的内容与其自己的CLI转储输出相比较,来比较来自活动单元和备用单元的CLI转储,在本示例中其自己的CLI转储输出是以二元树格式存储的。在另一种实施例中,该计算是由网络设备的另一个部分执行的。在该步骤期间,备用单元确定在活动单元上可用但在备用单元上不可用的命令的列表。这个列表被称为活动差异列表(“ADL”)。ADL被用于识别如果不修改就直接同步则无法在备用单元上成功执行的命令:或者ADL上的命令必须在同步之前被转换成可在备用单元上执行的格式,或者这些命令根本无法同步。
某些命令可能在备用镜像中被删除,但仍被活动镜像所支持。某些命令可能是在活动单元上新创建的,但尚未被备用单元所支持。这组命令不能被变换以使其起作用,从而它们不能被同步到备用单元。根据优选实现方式,不关心列表(“DCL”)被填充以只在活动单元中可用而不需要被同步到备用单元的命令条目。
在步骤260中,备用单元还确定“SDL”(备用差异列表),该列表是在备用单元上可用但在活动单元上不可用的命令的列表。SDL被用于验证为备用单元上不是备用单元的DCL的一部分并且不是活动单元的CDFS的一部分的那些命令注册了适当的变换函数。如果这些命令的用于对命令进行升级/降级的变换函数未被注册,则加载在活动单元和备用单元上的两个镜像被声明为不兼容(例如ISSU不兼容)。工作模式被降级到无状态冗余模式。
在步骤262中,备用单元将ADL发送到活动单元,活动单元在步骤212中验证ADL。在步骤264中,备用单元验证SDL。作为该验证过程的一部分,使每个DL的每个条目经过TFT,以确定是否注册了匹配的变换函数。
在步骤214中,活动单元收集其运行配置,并向备用单元发送指示经变换的运行配置的文件大小的信息。在步骤266中,备用单元部分基于文件大小信息创建一个文件(在这里是“RCSF filesys”),活动单元的运行配置将被复制到该文件中。
在步骤216至步骤232中,如果必要的话,运行配置的命令被变换。如果在ADL中找到运行配置的命令的匹配条目,则将运行配置的那一行馈送到对命令版本进行降级的至少一个变换函数。重复这个变换过程,直到或者(1)发现来自变换的输出命令是可在备用单元上执行的命令,或者(2)系统确定命令不兼容。如果命令不兼容,则系统优选地将工作模式改变成无状态模式,或将系统置于非冗余模式中,并重启动备用单元。这个过程在图3A中示出。
在步骤318中,备用单元将收集到的运行配置的每一行馈送到成批配置同步变换引擎中。在步骤320中,将运动配置的每个命令与ADL相比较,以确定是否存在匹配。如果没有匹配,则意味着命令可以被备用单元使用。因此,命令被写入到输出缓冲器(步骤330),并且过程继续到步骤232。
如果在步骤320中找到匹配,则意味着命令不能被备用单元使用。过程继续到步骤322,在该步骤中,活动单元确定命令是否可变换。如果是的话,则在步骤324中命令被降级。
优选地,命令每次被变换一个级别,而不是一次就被直接转换到目标格式。例如,假设cmd_x被升级为cmd_y,然后被升级为跨操作系统镜像的多个版本的cmd_z。在升级场景中,cmd_x首先被转换为cmd_y,然后被转换为cmd_z;cmd_x不被直接变换为cmd_z。从而,活动单元上执行的所有配置命令都以相对于其在活动单元上的情况被降级或保持不变的方式被同步到备用单元。
当命令被降级时,经变换的命令的输出可能不同于原始输入的命令的输出。为了针对解决这一潜在问题,针对这种经变换的命令,支持解析器返回代码(“PRC”),以便可以验证在备用单元上执行的结果。降级情形发生在较高(较后)版本的镜像运行在活动单元上时,因而某些在活动单元上可配置的命令在备用单元上则不是有效的。因此,这些命令或者必须被变换成在备用单元上可配置的较低的版本,或者这些命令不应当被同步。
如果命令不可变换,则在步骤326中备用单元确定命令是否在其“不关心列表”上。如果是的话,则命令不需要被同步(因此不被同步)。
如果命令不在DCL上,则调用策略处理器(步骤328)。这种情形不会意外地发生,这是因为任何可能导致这种差错的情况都会在镜像被装运之前被得知和公布。策略处理器例如是调用一组规则的软件。如果策略处理器确定命令较重要但不能被同步,则在某些实现方式中,将丢弃命令,声明“丧失同步”状态并报告差错,如步骤329中所示。命令不被写入到输出缓冲器,也不被用于同步备用单元。备用单元将会被重启动,系统将会返回非冗余配置中或无状态工作模式中。然后过程继续到步骤328。
但是,如果图3A中所示的过程正常地完成,则方法以图2的步骤234和268继续。在这里,活动单元将其经变换的运行配置复制到备用单元所准备的文件中(在这里是“CDFS filesys”),该文件可能位于备用单元的DRAM中。
在升级场景中,在备用单元上支持较高版本的命令,因此升级转换发生在备用单元上下文中。即,备用单元支持比从活动单元同步的镜像的版本更高的命令。如果备用单元在运行更新的镜像版本,则每个命令行通过TFT被处理,以查明它是否能被进一步升级。然后在备用单元上执行该命令。
一个这种命令升级过程由图3B的流程图所示。在步骤374中,备用单元读取从活动单元接收到的运行配置文件的每一行(在这里是通过读取RCSF进行的),并将每一行发送到升级变换引擎。在步骤376中,备用单元确定命令是否可变换(在本示例中是确定命令是否可被升级)。如果是的话,则在步骤378中命令被变换(在这里是被升级)。重复步骤376和步骤378,直到在备用单元的TFT中没有升级变换函数可用。此时,确定命令不能再被进一步变换,并且在步骤380中处理命令行。
在备用单元处理了RCSF的所有命令行之后,在步骤284中触发验证过程(见图2),以确定是否所有经解析的命令都被正确地配置。步骤284确保了不存在由于在活动单元和备用单元上运行不同版本的镜像而引起的配置失配。
逐行配置同步
在成批配置同步完成并且网络设备正常工作之后,只要在活动单元上发生配置变化,运行在备用单元上的镜像就必须被升级,以使其保持与活动单元的镜像同步。这个过程在图4中示出。
在步骤405中,新的命令从活动单元进入。在步骤410中,确定该命令是否在ADL中。如果不是的话,则在步骤415中,新命令被同步。如果是的话,则确定命令是否可变换(步骤420)。如果命令是可变换的,则在步骤425中它被变换。然后过程返回步骤410,在该步骤中对经变换的命令进行估计,以确定它是否在ADL上。
如果命令不可变换,则将其与DCL相比较(步骤430)。如果命令在DCL上,则命令不被同步(步骤435)。如果命令不在DCL上,则策略处理器被调用(步骤440),并且命令不被同步。根据策略处理器的判决,会随之发生其他后果。例如,如步骤445所示,可以仅仅是丢弃命令并发出警告。或者,如步骤450所示,可以对备用状态进行降级。
图5示出可以被配置成实现本发明的某些方法的网络设备的示例。网络设备560包括活动中央处理单元(CPU)562、备用CPU 592、接口568和总线567(例如PCI总线)。一般而言,接口568包括适用于与适当介质通信的端口569。在某些实施例中,接口568中的一个或多个包括至少一个独立处理器574,并且在某些情况下包括易失性RAM。独立处理器574例如可以是ASIC或任何其他适当的处理器。
根据某些这样的实施例,这些独立处理器574执行这里所描述的逻辑的至少某些功能。在某些实施例中,接口568中的一个或多个控制诸如介质控制和管理这样的通信密集型任务。通过为通信密集型任务提供单独的处理器,接口568允许了活动CPU 562高效地执行诸如路由选择计算、网络诊断、安全性功能等其他功能。
接口568一般是作为接口卡(有时称为“线路卡”)提供的。一般而言,接口568控制经由网络的数据分组的发送和接收,并且有时支持与网络设备560一起使用的其他外围设备。可以提供的接口有PC接口、以太网接口、帧中继接口、线缆接口、DSL接口、令牌环接口等等。此外,可以提供各种甚高速接口,例如快速以太网接口、千兆比特以太网接口、ATM接口、HSSI接口、POS接口、FDDI接口、ASI接口、DHEI接口等等。
在本发明的某些实现方式中,当在适当的软件或固件的控制之下动作时,活动CPU 562和备用CPU 592可以负责实现与本申请中描述的所需网络设备的功能相关联的特定功能。根据某些实施例,活动CPU 562和备用CPU 592在包括操作系统(例如由思科系统公司开发的专用操作系统Cisco IOS,等等)和任何适当的应用软件在内的软件的控制下实现所有这些功能。
CPU 562可以包括一个或多个处理器563,例如来自Motorola微处理器家族或MIPS微处理器家族的处理器。在另一个实施例中,处理器563是专门设计的用于控制网络设备560的操作的硬件。在特定实施例中,存储器561(例如非易失性RAM和/或ROM)也构成CPU 562的一部分。但是,有许多不同的将存储器耦合到系统的方式。存储器块561可以用于多种用途,例如缓存和/或存储数据、编程指令等等。类似地,备用CPU592可以包括一个或多个处理器593和存储器块591。
不论网络设备的配置如何,它都可以采用一个或多个存储器或存储器模块(例如存储器块565),这些存储器或存储器模块被配置成存储数据、用于通用网络操作的程序指令以及/或者其他与这里所描述的技术功能相关的信息。程序指令例如可以控制操作系统和/或一个或多个应用程序的操作。
由于这种信息和程序指令可以被用来实现这里所描述的系统/方法,因此本发明涉及包括用于执行这里所描述的各种操作的程序指令、状态信息等的机器可读介质。机器可读介质的示例包括但不限于:磁介质,例如硬盘、软盘和磁带;光介质,例如CD-ROM盘;磁光介质;以及被专门配置成存储和执行程序指令的硬件设备,例如只读存储器设备(ROM)和随机访问存储器(RAM)。本发明也可以实现在传播经过适当介质的载波中,例如无线电波、光线路、电线路等等。程序指令的示例既包括例如由编译器产生的机器代码,也包括包含可由计算机利用解释器执行的更高级别的代码的文件。
虽然图5所示的系统示出了本发明的一个特定网络设备,但是它决不是唯一的可在其上实现本发明的网络设备体系结构。例如,常常使用具有处理通信以及路由选择计算等的单个处理器的体系结构。此外,其他类型接口和介质也可以与网络设备一起使用。接口/线路卡之间的通信路径可以是基于总线的(如图5所示),或者是基于交换结构的(例如纵横式交换机)。
其他实施例
一般而言,本发明的技术可以实现在软件、硬件、固件和/或微代码上。例如,它们可以实现在操作系统内核中、单独的用户进程中、绑定到网络应用中的库程序包中、专用构造的机器上或网络接口卡上。在所有情况下,这些处理单元都必须按冗余关系成对。在本发明的特定实施例中,本发明的技术是在诸如操作系统这样的软件中或运行在操作系统上的应用程序中实现的。
本发明的技术的软件或软件/硬件混合实现方式可以实现在由存储在存储器中的计算机程序选择性地激活或重配置的通用可编程机器上。这种可编程机器可以是被设计成处理网络流量的网络设备,例如以上参考图5所描述的网络设备。在另一种实施例中,本发明的技术可以实现在诸如个人计算机或工作站之类的通用网络主机上。此外,本发明可以至少部分地实现在网络设备或通用计算设备的卡(例如接口卡)上。
虽然这里示出和描述了本发明的示例性实施例和应用,但是许多保持在本发明的概念、范围和精神内的变化和修改都是可能实现的,并且本领域的普通技术人员在熟读本申请之后将会清楚看出这些变化。
例如,本发明的方法可以以1:1或1:N处理单元关系来实现。换言之,可以存在具有单个备用单元的单个活动单元或者多个活动单元。
因此,当前的实施例应当被认为是示例性的而非限制性的,并且本发明并不局限于这里给出的细节,而是可以在所附权利要求范围和等同物内被修改。
Claims (33)
1.一种维持配置同步的方法,该方法包括:
a)动态地确定具有被活动单元的第一镜像所支持但不被备用单元的第二镜像所支持的第一语法的第一组命令;
b)接收来自所述第一组命令中的一个命令;
c)确定来自所述第一组命令中的所述命令是可变换的;
d)将来自所述第一组命令中的所述命令变换成具有被所述备用单元上的所述第二镜像所支持的第二语法的第一经变换命令;以及
e)将包括所述经变换命令的经变换的运行配置复制到要应用的备用单元。
2.如权利要求1所述的方法,其中所述第二语法是较低级别的语法。
3.如权利要求1所述的方法,其中所述变换步骤由所述活动单元执行。
4.如权利要求1所述的方法,还包括:
f)确定所述第一组命令中不能被变换成所述第二语法的第二部分。
5.如权利要求4所述的方法,还包括:
g)确定所述第二部分的命令是否需要被同步到所述备用单元。
6.如权利要求1所述的方法,其中步骤d)是在多个部分中执行的,每个部分包括连续的变换级别之间的变换。
7.如权利要求1所述的方法,其中步骤a)包括:
确定用于所述第一镜像的第二组可能的命令;
确定用于所述第二镜像的第三组可能的命令;以及
将所述第二组与所述第三组相比较以确定所述第一组。
8.如权利要求1所述的方法,还包括
确定被所述第二镜像支持但不被所述第一镜像支持的命令的备用差异列表。
9.如权利要求1所述的方法,还包括以下步骤:将所述第一经变换命令同步到所述备用单元。
10.一种维持配置同步的方法,该方法包括:
a)动态地确定具有被活动单元的第一镜像所支持并且被备用单元的第二镜像所支持的第一语法的第一组命令;
b)接收来自所述第一组命令中的一个命令;
c)确定来自所述第一组命令中的所述命令是可变换的;
d)将来自所述第一组命令中的所述命令变换成具有被所述第二镜像所支持的不同语法的第一经变换命令;以及
e)将包括所述经变换命令的经变换的运行配置复制到要应用的备用单元。
11.如权利要求10所述的方法,其中所述不同语法是较高级别的语法。
12.如权利要求10所述的方法,其中所述变换步骤由所述备用单元执行。
13.如权利要求10所述的方法,其中步骤d)是在多个部分中执行的,每个部分包括连续的变换级别之间的变换。
14.一种维持活动单元和备用单元之间的配置同步的方法,该方法包括:
由所述活动单元接收先前不是所述活动单元上的活动运行配置的一部分的新命令;
确定所述新命令是否具有被所述备用单元的备用镜像所支持的第一语法;
当确定所述第一语法不被所述备用镜像所支持时,确定所述命令是否可变换到被所述备用镜像所支持的第二语法;以及
当确定所述命令可变换到被所述备用镜像所支持的所述第二语法时,将所述新命令变换为经变换的命令。
15.如权利要求14所述的方法,还包括以下步骤:如果确定所述第一语法被所述备用镜像所支持,则将所述命令同步到所述备用单元。
16.如权利要求14所述的方法,还包括以下步骤:当确定所述命令不可变换到被所述备用镜像所支持的所述第二语法时,确定所述命令是否需要被同步到所述备用单元。
17.如权利要求14所述的方法,还包括以下步骤:将所述经变换的命令同步到所述备用单元。
18.如权利要求16所述的方法,还包括以下步骤:当确定所述命令不可变换到被所述备用镜像所支持的所述第二语法时,调用策略函数。
19.一种用于维持配置同步的装置,该装置包括:
用于动态地确定具有被活动单元的第一镜像所支持但不被备用单元的第二镜像所支持的第一语法的第一组命令的装置;
用于接收来自所述第一组命令中的一个命令的装置;
用于确定来自所述第一组命令中的所述命令是可变换的装置;
用于将来自所述第一组命令中的所述命令变换成具有被所述备用单元上的所述第二镜像所支持的第二语法的第一经变换命令的装置;以及
用于将包括所述经变换命令的经变换的运行配置复制到要应用的备用单元的装置。
20.如权利要求19所述的装置,其中所述第二语法是较低级别的语法。
21.如权利要求19所述的装置,其中所述变换步骤由所述活动单元执行。
22.如权利要求19所述的装置,还包括用于确定所述第一组命令中不能被变换成所述第二语法的第二部分的装置。
23.如权利要求22所述的装置,还包括用于确定所述第二部分的命令是否需要被同步到所述备用单元的装置。
24.一种用于维持配置同步的装置,该装置包括:
用于动态地确定具有被活动单元的第一镜像所支持并且被备用单元的第二镜像所支持的第一语法的第一组命令的装置;
用于接收来自所述第一组命令中的一个命令的装置;
用于确定来自所述第一组命令中的所述命令是可变换的装置;
用于将来自所述第一组命令中的所述命令变换成具有被所述第二镜像所支持的不同语法的第一经变换命令的装置;以及
用于将包括所述经变换命令的经变换的运行配置复制到要应用的备用单元的装置。
25.如权利要求24所述的装置,其中所述不同语法是较高级别的语法。
26.如权利要求24所述的装置,其中所述变换步骤由所述备用单元执行。
27.如权利要求24所述的装置,其中将来自所述第一组命令中的所述命令变换成具有被所述第二镜像所支持的不同语法的第一经变换命令的步骤是在多个部分中执行的,每个部分包括连续的变换级别之间的变换。
28.一种用于维持配置同步的装置,该装置包括:
其上存储有第一镜像的至少一个活动单元,所述至少一个活动单元被配置成创建被所述第一镜像所支持的命令的第一列表;
其上存储有第二镜像的备用单元,所述备用单元被配置成执行以下步骤:
创建被所述第二镜像所支持的命令的第二列表;
确定在所述第一列表上但不在所述第二列表上的命令的活动差异列表;以及
确定在所述第二列表上但不在所述第一列表上的命令的备用差异列表
其中,当该装置确定所述第一镜像所支持的命令不被所述第二镜像所支持时,确定该命令是否可变换到被所述第二镜像所支持的命令;
当确定该命令可变换到被所述第二镜像所支持的命令时,将该命令变换为经变换的命令。
29.如权利要求28所述的装置,其中所述至少一个活动单元还被配置成执行以下步骤:
生成所述第一镜像的运行配置;以及
确定是所述运行配置的一部分并且是所述活动差异列表的一部分的命令的第三列表。
30.如权利要求29所述的装置,其中所述至少一个活动单元还被配置成执行以下步骤:当所述第三列表是空集时,将所述运行配置同步到所述备用单元。
31.如权利要求29所述的装置,其中所述活动单元还被配置成执行以下步骤:
确定所述命令的第三列表是否是可变换的;
如果所述命令的第三列表是可变换的,则将所述命令的第三列表变换成第二语法;以及
将经变换的命令的第三列表同步到所述备用单元。
32.如权利要求28所述的装置,其中所述装置包括多个活动单元。
33.如权利要求28所述的装置,其中所述备用单元还被配置成将经同步的运行配置的命令变换成较高级别的语法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/723,684 | 2003-11-25 | ||
US10/723,684 US7320127B2 (en) | 2003-11-25 | 2003-11-25 | Configuration synchronization for redundant processors executing different versions of software |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1875346A CN1875346A (zh) | 2006-12-06 |
CN100524219C true CN100524219C (zh) | 2009-08-05 |
Family
ID=34592341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800326710A Active CN100524219C (zh) | 2003-11-25 | 2004-11-16 | 执行不同版本软件的冗余处理器的配置同步的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7320127B2 (zh) |
EP (1) | EP1820097A2 (zh) |
CN (1) | CN100524219C (zh) |
WO (1) | WO2005055061A2 (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7284236B2 (en) * | 2002-10-29 | 2007-10-16 | Brocade Communications Systems, Inc. | Mechanism to change firmware in a high availability single processor system |
JP4457581B2 (ja) * | 2003-05-28 | 2010-04-28 | 日本電気株式会社 | 耐障害システム、プログラム並列実行方法、耐障害システムの障害検出装置およびプログラム |
JP2008511898A (ja) * | 2004-09-02 | 2008-04-17 | パケットフロント スウェーデン アーベー | ネットワーク管理システムのコンフィギュレーション |
US7792930B1 (en) * | 2004-11-10 | 2010-09-07 | Juniper Networks, Inc. | Network device configuration using separate logic and version-based configuration files |
US8412750B2 (en) * | 2005-09-26 | 2013-04-02 | Research In Motion Limited | LDAP to SQL database proxy system and method |
US20070169083A1 (en) * | 2005-12-12 | 2007-07-19 | Penubolu Shyam P | Method for secure in-service software upgrades |
US7661025B2 (en) * | 2006-01-19 | 2010-02-09 | Cisco Technoloy, Inc. | Method of ensuring consistent configuration between processors running different versions of software |
US8028046B2 (en) * | 2007-07-23 | 2011-09-27 | At&T Intellectual Property I, L.P. | System and method of configuring a network device |
US8250535B2 (en) * | 2008-09-09 | 2012-08-21 | Lockheed Martin Corporation | Maintaining vitality of data in safety-critical systems |
US9274851B2 (en) * | 2009-11-25 | 2016-03-01 | Brocade Communications Systems, Inc. | Core-trunking across cores on physically separated processors allocated to a virtual machine based on configuration information including context information for virtual machines |
US8503289B2 (en) * | 2010-03-19 | 2013-08-06 | Brocade Communications Systems, Inc. | Synchronizing multicast information for linecards |
US8769155B2 (en) * | 2010-03-19 | 2014-07-01 | Brocade Communications Systems, Inc. | Techniques for synchronizing application object instances |
US9104619B2 (en) | 2010-07-23 | 2015-08-11 | Brocade Communications Systems, Inc. | Persisting data across warm boots |
US8495418B2 (en) | 2010-07-23 | 2013-07-23 | Brocade Communications Systems, Inc. | Achieving ultra-high availability using a single CPU |
US9143335B2 (en) | 2011-09-16 | 2015-09-22 | Brocade Communications Systems, Inc. | Multicast route cache system |
US8782632B1 (en) * | 2012-06-18 | 2014-07-15 | Tellabs Operations, Inc. | Methods and apparatus for performing in-service software upgrade for a network device using system virtualization |
US10581763B2 (en) | 2012-09-21 | 2020-03-03 | Avago Technologies International Sales Pte. Limited | High availability application messaging layer |
US9967106B2 (en) | 2012-09-24 | 2018-05-08 | Brocade Communications Systems LLC | Role based multicast messaging infrastructure |
US9203690B2 (en) | 2012-09-24 | 2015-12-01 | Brocade Communications Systems, Inc. | Role based multicast messaging infrastructure |
US8943490B1 (en) * | 2012-09-28 | 2015-01-27 | Juniper Networks, Inc. | Intelligent non-stop software upgrade |
CN103309713A (zh) * | 2013-06-25 | 2013-09-18 | 北京小米科技有限责任公司 | 系统升级的方法、装置及设备 |
US9619349B2 (en) | 2014-10-14 | 2017-04-11 | Brocade Communications Systems, Inc. | Biasing active-standby determination |
CN105681108B (zh) * | 2016-03-15 | 2018-10-30 | 迈普通信技术股份有限公司 | 一种实现配置同步的方法及设备 |
CN108551405B (zh) * | 2018-04-24 | 2021-05-28 | 新华三技术有限公司 | 设备操作方法及装置 |
US11109017B2 (en) | 2018-09-12 | 2021-08-31 | Semiconductor Components Industries, Llc | Systems and methods for fault detection in image sensor processors |
US10838711B2 (en) | 2018-09-20 | 2020-11-17 | Mellanox Technologies Tlv Ltd. | In-service software/firmware update |
CN113032085A (zh) * | 2019-12-24 | 2021-06-25 | 中兴通讯股份有限公司 | 云操作系统的管理方法、装置、服务器、管理系统及介质 |
US11741232B2 (en) | 2021-02-01 | 2023-08-29 | Mellanox Technologies, Ltd. | Secure in-service firmware update |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5179703A (en) | 1987-11-17 | 1993-01-12 | International Business Machines Corporation | Dynamically adaptive environment for computer programs |
US6108300A (en) | 1997-05-02 | 2000-08-22 | Cisco Technology, Inc | Method and apparatus for transparently providing a failover network device |
US5983371A (en) * | 1997-07-11 | 1999-11-09 | Marathon Technologies Corporation | Active failure detection |
US6014669A (en) | 1997-10-01 | 2000-01-11 | Sun Microsystems, Inc. | Highly-available distributed cluster configuration database |
US6487591B1 (en) | 1998-12-08 | 2002-11-26 | Cisco Technology, Inc. | Method for switching between active and standby units using IP swapping in a telecommunication network |
US6636873B1 (en) * | 2000-04-17 | 2003-10-21 | Oracle International Corporation | Methods and systems for synchronization of mobile devices with a remote database |
US7178056B2 (en) * | 2001-12-04 | 2007-02-13 | Intel Corporation | Rolling software upgrades for fault tolerant systems |
EP1347373A3 (en) | 2002-03-20 | 2005-02-02 | Seiko Epson Corporation | Apparatus for processing instructions of different instruction set architectures |
-
2003
- 2003-11-25 US US10/723,684 patent/US7320127B2/en active Active
-
2004
- 2004-11-16 WO PCT/US2004/038361 patent/WO2005055061A2/en not_active Application Discontinuation
- 2004-11-16 EP EP04811177A patent/EP1820097A2/en not_active Withdrawn
- 2004-11-16 CN CNB2004800326710A patent/CN100524219C/zh active Active
Non-Patent Citations (2)
Title |
---|
Compilers:Principles,Techniques,and Tools. ALFRED V. AHO,RAVI SETHI,JEFFREY D. ULLMAN,1,463,ADDISON-WESLEY PUBLISHING COMPANY. 1986 |
Compilers:Principles,Techniques,and Tools. ALFRED V. AHO,RAVI SETHI,JEFFREY D. ULLMAN,1,463,ADDISON-WESLEY PUBLISHING COMPANY. 1986 * |
Also Published As
Publication number | Publication date |
---|---|
US7320127B2 (en) | 2008-01-15 |
US20050114846A1 (en) | 2005-05-26 |
WO2005055061A2 (en) | 2005-06-16 |
CN1875346A (zh) | 2006-12-06 |
WO2005055061A3 (en) | 2005-09-15 |
EP1820097A2 (en) | 2007-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100524219C (zh) | 执行不同版本软件的冗余处理器的配置同步的方法和装置 | |
US7076689B2 (en) | Use of unique XID range among multiple control processors | |
US8375363B2 (en) | Mechanism to change firmware in a high availability single processor system | |
US6823474B2 (en) | Method and system for providing cluster replicated checkpoint services | |
US7174547B2 (en) | Method for updating and restoring operating software in an active region of a network element | |
EP1705566A1 (en) | Server system and online software update method | |
US20040153624A1 (en) | High availability synchronization architecture | |
US20040083358A1 (en) | Reboot manager usable to change firmware in a high availability single processor system | |
US8612973B2 (en) | Method and system for handling interrupts within computer system during hardware resource migration | |
US7065673B2 (en) | Staged startup after failover or reboot | |
US6226694B1 (en) | Achieving consistency and synchronization among multiple data stores that cooperate within a single system in the absence of transaction monitoring | |
JP2001134454A (ja) | コンピューティング環境において構成要素を更新する方法、システムおよび製造品 | |
CN112477919A (zh) | 一种适用于列车控制系统平台的动态冗余备份方法及系统 | |
KR20150111608A (ko) | 가상화 서버의 이중화를 위한 제어 방법 및 이를 위한 가상화 제어 장치 | |
US20020073409A1 (en) | Telecommunications platform with processor cluster and method of operation thereof | |
JP2007080012A (ja) | 再起動方法、システム及びプログラム | |
JP2004086769A (ja) | アプリケーションの更新処理方法、更新処理システム及び更新処理プログラム | |
CN101251815A (zh) | 用于恢复计算系统的系统和方法 | |
CN109189444A (zh) | 一种服务器虚拟化系统的管理节点的升级控制方法及装置 | |
JP2002123398A (ja) | 通信装置におけるソフトウェアのバージョンアップ処理装置及び通信装置におけるソフトウェアのバージョンアップ処理方法 | |
JP2008217202A (ja) | ディスクアレイ装置及びファームウェア更新方法 | |
CN114500279B (zh) | 一种插件配置方法及装置 | |
KR100462860B1 (ko) | 개방형 교환시스템에서 새 버전 소프트웨어 패키지 설치방법 | |
KR100402326B1 (ko) | 프로세서간 통신 프로토콜 변경 방법 | |
KR101615577B1 (ko) | 클러스터 시스템에서 클러스터를 처리하기 위한 방법과 장치 및 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |