技术领域 基于集群路由器结构的高可用分布式边界网关协议系统属于路由协议系统结构领域,尤 其涉及双节点备份技术和多节点分布式计算系统。 背景技术 Internet的飞速发展对网络设备的计算能力、转发能力和端口密度都提出了更高的要求。 单个路由节点在可靠性、性能可扩展性、规模可扩展性和服务可扩展性等方面有其难以逾越 的障碍,已经不能满足下一代Internet发展需要。核心路由器技术正在经历着巨大的变化,以 T比特核心路由器为代表,路由器体系结构向着路由器群集、分布式、可扩展方向发展。 路由器硬件体系结构从集中控制方式发展到集群结构下的分布式并行处理方式,路由器 软件技术的发展则相对比较滞后。在传统的路由器中,所有路由协议、路由策略相关的计算 功能还只能在单个节点上运行,其他节点只是作为备份节点,并没有真正实现软件系统可扩 展和高可用。 边界网关协议(BGP)作为Internet域间网络协议,负责自治域间的路由可达信息的交互。 BGP协议对等体之间相互建立连接,通过发送路由更新(UPDATE)报文通知路由信息的变 化。每个BGP实体根据自己的策略计算路由信息的优先级,并选择出最优的路由。 Internet核心路由器控制平面的BGP协议性能面临新的挑战。目前Internet骨干结点的BGP 路由表容量呈现出线性增长与指数增长交替的趋势,在大容量路由表条件下,路由器需要消 耗更多的存储空间,造成路由更新处理变慢,增加BGP协议的计算开销。传统单进程集中控 制的BGP实现在可靠性、路由表容量、路由计算能力和支持的邻居规模上都无法满足未来 Internet的发展需求。 本发明充分利用集群结构路由器硬件平台所提供的分布式计算资源与存储能力,设计了 合理的划分算法,将BGP实现分布到各个节点并行运行,使各节点的计算负载和内存消耗得 到均衡,从而提高BGP系统的整体效率。同时,对系统中可能存在的单一失效点实现冗余备 份,达到提高整体系统可靠性的目的。 发明内容 本发明的目的在于克服传统的单节点BGP实现的计算能力、存储能力以及可靠性的不 足,提供一种基于集群路由器结构的高可用分布式的BGP实现方案。 本发明解决其技术问题所采用的技术方案是:如图1所示,在集群结构中,一个节点为 连接节点,一个节点作为主控节点,另一个节点为主控节点的备份节点,其他节点作为从节 点。连接节点负责与外部Internet的连接,在外部Internet和内部节点之间转发数据。主控节 点负责管理从节点以及与对等体建立连接,并根据划分算法,将对等体的路由更新(UPDATE) 报文分配给从节点处理,从节点对UPDATE报文进行解析后计算路由。 基于集群路由器结构高可用分布式BGP系统由两部分组成:主控节点子系统和从节点子 系统。主控节点子系统运行在主控节点上,实现与接对等体建立连接、对从节点的管理以及 负载的分配,同时,将重要信息发送给备份节点;从节点子系统运行在从节点上,用于解析 UPDATE报文以及路由计算。 通过主控节点的集中控制,使分布式BGP系统便于管理,通过对主控节点的备份,使系 统没有单一失效点,提高了系统的可靠性;通过划分算法的合理分配,使各从节点的负载均 衡,提高了整体BGP系统的性能。 本发明的特征在于:在集群路由器结构中,选取一个节点作为主控节点,另一个节点为 主控节点的备份节点,构成主控节点子系统;一个连接节点;其他节点作为从节点,构成从 节点子系统;主控节点、从节点和连接节点通过高速交换网组成所述基于集群路由器结构的 高可用分布式边界网关协议系统,所述系统基于网络传输控制协议通过连接节点和对等体建 立连接,所述对等体是指与所述系统交互协议信息的边界网关协议系统;其中, A.主控节点子系统运行在所述主控节点上,负责以下任务:与所述对等体建立连接; 根据划分算法把从对等体接收的载有路由更新消息的路由更新报文发送给相应的从节点处 理,所述的路由更新消息用“UPDATE消息”表示;接收各从节点UPDATE消息处理后的局 部最优路由并从中选择出全局最优路由;将UPDATE消息通告给所述对等体;管理从节点以 及把重要消息发送给所述备份节点; 在所述主控节点上维护以下数据库: 全局最优路由数据信息库:保存路由计算得到的路由器全局最优路由信息; 从节点数据库:保存分布式BGP系统中工作的从节点ID,每个从节点的工作负责情况, 以及主控节点与从节点的通讯操作备份,所述BGP系统指的是边界网关协议系统; 输出路由信息库:保存发送给对等体的路由更新信息; 在所述主控节点上配置了以下软件模块: (1)分布式划分算法模块 当所述BGP系统与新的对等体建立连接后,主控节点选择负载最小的从节点来处理新的 对等体的UPDATE消息; (2)从节点管理模块 该模块包括以下各子模块: (2.1)从节点加入子模块 新加入节点由管理员配置ID和主控节点ID,当新节点加入Cluster时,立即发送消息通 告主控节点,主控节点回应这个消息,确认新节点的加入,并将新节点的信息加入到从节点 信息库中,所述Cluster即集群路由器结构; (2.2)从节点退出子模块 主控节点删除从节点信息库中退出从节点的信息,并按照划分算法把这个从节点上处理 的对等体重新分配给其他的从节点处理; (2.3)从节点状态监控子模块 主控节点周期性的向其他所有从节点发送询问消息,收到询问消息的从节点向主控节点 回复消息,没有回复消息的从节点将被认为故障; (2.4)从节点故障处理子模块 主控节点通过状态监控发现某个从节点出现故障,主控节点删除从节点信息库中这个从 节点的信息,并按照划分算法把这个从节点上处理的对等体重新分配给其他的从节点处理; (3)与对等体建立连接模块 该模块依次按以下步骤实现与对等体的连接: 步骤3-1:启动与对等体的连接; 步骤3-2:启动TCP连接; 步骤3-3:建立BGP连接,按以下步骤进行: 步骤3-3-1:向对等体发送用来建立BGP对等体连接的问讯消息,称为OPEN消息; 步骤3-3-2:接收到对等体的OPEN消息后,向对等体回复保持BGP连接的通告消息称 为KEEPALIVE消息,同时等待对等体的KEEPALIVE消息,连接状态设置为OpenConfirm; 步骤3-3-3:接收对等体的KEEPALIVE消息,完成与对等体的连接,连接状态设置为 Established; 步骤3-4:主控节点根据所述分配算法选出负载最小的从节点,由该从节点处理该对等体 的UPDATE消息; (4)处理BGP消息模块 该模块按以下步骤实现消息处理: 步骤4-1:主控节点调用TCP socket读函数得到BGP消息; 步骤4-2:主控节点处理不同类型消息: 步骤4-2-1:处理OPEN消息 从OPEN消息中读取版本号、自治域号、超时时间、BGP标识符四个域的值,并分别予 以检验; 根据自治域号和BGP标识符判断OPEN消息是否来自管理员设置的邻居节点:若不是, 则发送用NOTIFICATION表示的故障消息与对等体中断连接;若是,则进行以下检测; 根据BGP协议的连接冲突检测定义进行冲突检测:若有冲突并需关闭该连接便发送故障 消息以中断与该对等体的连接;若无冲突,便执行以下检测: 检测版本号是否正确:若不正确,发送故障消息给该对等体以中断连接;若正确,便执 行以下检测; 检测超时时间是否为零或者小于3秒:若不是,发送故障消息以中断与该对等体的连接; 否则,便执行以下检测; 比较本路由器BGP实体设置的超时时间置和接收的OPEN消息中的超时时间值,以值小 的作为这个连接的超时时间值,设置保持BGP连接的通告消息定时器的值为所述连接超时时 间值的三分之一; 发送保持BGP连接的通告消息给该对等体确认接收OPEN消息,连接状态设置为 OpenConfirm状态; 步骤4-2-2:处理保持BGP连接的通告消息 当连接状态为OpenConfirm状态时,主控节点把连接状态变为Established状态并向对等 体发送保持BGP连接的通告消息; 当连接状态为Established状态时,增加保持BGP连接的通告消息接收计数,重置超时时 间定时器; 步骤4-2-3:处理从对等体接收到的路由更新消息 主控节点收到路由更新消息后,把路由更新消息发送给相应的从节点;由从节点作以下 检查; 对整个属性长度作检查,若超过规定长度,通过故障消息通告对等体,丢弃该路由更新 消息; 若路由更新消息中包括不可用路由,检查该路由长度是否正确,若超过规定值,向对等 体发送故障消息并丢弃该路由更新消息;否则,对该不可用路由进行语法检查,若有错误, 便丢弃该路由更新消息;若正确,便获取不可用路由的值存入变量中; 若路由更新消息中包含可用路由,则检查该路由的长度,若超过规定值,向对等体发送 故障消息并丢弃该路由更新消息;否则,对该可用路由的路径属性的每个域进行检查,若有 错误,便丢弃该路由更新消息;若正确,便获取路由属性各个域的值存入一个结构变量中; 对于不可用路由,从输入路由信息库中删除该路由,启动分布式BGP路由计算; 对于可用路由,更新输入路由信息库,保存路径属性,启动分布式BGP路由计算; 步骤4-2-4:处理故障消息 主控节点获取该故障消息中各个域的值,显示错误信息,断开与故障对等体的连接;接 着,通知该对等体UPDATE消息的处理从节点删除包括故障对等体所发布的路由以及路由属 性在内的所有相关信息; (5)双节点冗余备份模块 主控节点和备份节点形成双节点备份的硬件环境,但是节点之间不提供相互的软硬件失 效的硬件检测机制,它们通过心跳算法实现双机的状态监测;主控节点和备份节点都运行主 控节点子系统,当主控节点正常工作时,备份节点只能接收主控节点的备份消息,并把备份 消息中的备份数据备份到相应的数据库中;当主控节点出现故障时,备份节点接替主控节点 的工作; 为实现这种失效转移,采用了的方法是进行检查点(CheckPoint)状态备份,然后进行状 态回滚恢复;该模块按以下步骤实现: 步骤1.双节点备份的状态检测 主控节点定时发送查询消息给备份节点,备份节点回复消息;当主控节点收不到备份节 点的回复消息时,就认为备份节点故障,这时主控节点将不会向备份节点发送备份消息;当 备份节点不能收到主控节点的查询消息时,就认为主控节点出现故障,这时备份节点将进行 状态回滚恢复,接替主控节点的工作; 步骤2.状态备份 在主控节点模块中,需要备份的状态信息可以分为两类,一类是:通讯相关的状态信息, 包括主控节点与从节点的通讯信息;另一类是:应用相关的状态数据,包括对等体连接状态、 全局最优路由信息库、输出路由信息库、从节点信息库; 对于通讯相关的状态数据来说,任何一次操作都可能涉及到从节点的状态变化,所以它 们的状态备份必须做到小粒度的备份,在每一次主控节点与从节点进行通讯后进行相应的状 态备份;当主控节点与从节点通讯时,主控节点同时将通讯数据读写操作备份到备份节点中, 备份的读写操作中包括读写操作的读取和写入数据,数据长度,以及操作返回的结果; 而对于应用相关的状态数据,数据量大,备份粒度较大,主控节点每隔一段的时间把这 些应用相关数据发送给备份节点; 步骤3.状态回滚恢复 当主控节点出现故障时,备份节点接替主控节点工作,这时应用相关的状态数据已经保 存在备份节点的相应数据库中,备份节点上的主控节点子系统可以直接使用这些状态数据启 动,然后重复进行通讯数据读写操作,但是通讯数据读写操作不是在进行实际的数据读写操 作,而是从备份的读写操作中返回相应的数据和结果; B.从节点子系统,负责路由更新消息处理,局部最优路由选择,还要配合主控节点进 行全局最优路由选择;该从节点子系统仅有分布式BGP路由计算子模块,按以下步骤以完成 从节点子系统的任务: (1)优先级计算 当从节点对UPDATE报文解析后,发现有可用路由,触发优先级计算过程;在优先级计 算过程中,锁定输入路由信息库,根据预先设定好的策略,对新的可用路由或者是替代路由 计算一个优先级;计算完成后,解开输入路由信息库,触发路由选择过程; (2)路由选择 在分布式BGP系统中,路由选择分为两步完成,第一步是从节点选择局部最优路由,第 二步是主控节点选择全局最优路由; 当优先级计算过程完成后,首先激活从节点路由选择;从节点路由选择过程锁定输入路 由信息库,从所有与新的可用路由目的地相同的路由中选出优先级最高的一条路由,如果选 出的路由与局部最优路由信息库中保存的路由相同,结束路由选择过程;否则,更新局部最 优信息库,解开输入路由信息库,同时通过系统的分布式消息机制把这条路由信息发送给主 控节点,激活主控节点全局路由选择过程; 主控节点上保存着所有从节点的局部最优路由,当收到一条从节点发送来的新的路由时, 锁定全局最优路由信息库,从所有与新的可用路由目的地相同的路由中选出优先级最高的一 条路由,更新全局最优路由信息库,解开全局最优路由信息库,触发路由分发过程; (3)路由分发 路由分发过程被路由选择过程激活,将全局最优路由信息库的更新路由包装到UPDATE 消息中,发送给每个对端,同时在每个对等体的输出路由信息库中记录发送的路由; 本发明所提出的基于集群路由器结构高可用分布式BGP系统,克服了传统的单节点BGP 系统性能和可靠性的不足,提供了一种新的BGP系统实现方案,通过构建一个集群结构分布 式处理系统,可以实现BGP报文的快速处理和BGP的可靠服务。 附图说明 图1.基于集群路由器结构分布式BGP系统结构 图2.从节点状态信息查询示意图 图3.主控节点子系统与对等体建立连接流程图 图4.分布式BGP路由计算示意图 图5.容错应用系统的状态备份和回滚恢复示意图 具体实施方式 基于集群路由器结构高可用分布式BGP系统主要由两个子系统构成:主控节点子系统和 从节点系统子系统。 ●主要功能 主控节点子系统:与对等体建立连接;根据划分算法把接收的路由更新报文发送给相应 的从节点处理;接收各从节点BGP消息处理后的局部最优路由并选出全局最优路由;将路由 更新通告给对等体;管理从节点。 从节点子系统:对UPDATE消息进行解析;计算各条路由的优先级;选出局部最优路由。 ●几个重要概念 BGP实体:路由器上运行的BGP系统。 BGP对等体:与当前系统交互协议消息的BGP系统。 BGP定义了4种报文: □OPEN消息:用来建立BGP对等体连接的问讯消息; □UPDATE消息:路由更新消息; □KEEPALIVE消息:保持BGP连接的通告消息; □NOTIFICATION消息:故障通告消息; 同时BGP定义了六种与对等体连接状态:启动对等体连接即Idle状态,启动TCP连接 即Connect状态、等待TCP连接即Active状态、发送Open消息即OpenSent状态、等待接收 OPEN消息确认即OpenConfirm状态、BGP连接成功即Established状态,用来描述与BGP 对等体连接建立过程中的不同阶段。在每个连接状态,需要接收的BGP消息不同,并且,会 根据接收到的BGP消息改变连接状态 主控节点子系统维护的数据库: □全局最优路由信息库:保存路由计算得到的路由器全局最优路由信息; □从节点数据库:保存分布式BGP系统中工作的从节点ID,以及每个从节点的工作负 载情况。 □输出路由信息库:保存发送给对等体的路由更新报文信息; 从节点子系统维护的数据库: 输入路由信息库:保存接收到的对等体更新报文信息。 局部最优路由信息库:保存从节点路由计算得到的本节点最优路由信息。 ●分布式划分算法 主控子系统维护的从节点信息库中记录了当前有哪些从节点,每个从节点上分配了多少 个对等体报文的处理工作,当BGP系统与新的对等体建立连接后,主控子系统选择负载最小 的从节点处理新的对等体的UPDATE消息。这个分配算法能够保证各从节点的负载比较均衡。 ●从节点管理 □从节点的加入 1.配置从节点的标识号和主控节点的标识号。 2.向主控节点发送加入通告消息,等待主控节点回应消息; 3.主控节点收到从节点的加入通告消息,将新节点的信息加入到从节点库中,发送回应 消息给从节点。 □从节点的退出 1.主控节点删除从节点库中退出从节点的信息; 2.按照划分算法把退出从节点上处理的负载重新分配给其他的从节点处理; □从节点的状态检查 主控节点周期性的向所有从节点发送询问消息,收到询问消息的节点向主控节点回复消 息,没有回复消息的从节点将被认为故障。主从节点状态信息查询流程如图2所示。 □从节点的故障处理 1.主控节点通过从节点状态检查发现故障从节点; 2.主控节点等待从节点恢复,等待时间由管理员设定,缓存由故障从节点处理的UPDATE 消息; 3.如果在等待时间内从节点没有恢复工作,主控节点删除从节点库中故障从节点的信息, 按照划分算法把故障从节点上处理的负载重新分配给其他的从节点处理。 4.如果在等待时间内故障从节点恢复工作,主控节点将缓存的UPDATE消息发送给它处 理。 ●与对等体建立连接 当前路由器BGP实体首先要和对等体建立连接,流程如图3所示。BGP是基于网络传输 控制协议(TCP)之上的路由协议。因此,与对等体建立连接可以分为两个步骤:先建立TCP 连接,再建立BGP连接。与对等体建立连接之前将连接状态设置为Idle。 □建立TCP连接有两种模式:主动模式和被动模式 主动模式:主控节点子系统主动向对等体发起TCP连接请求,通过三次握手与对等体 被动模块:主控节点子系统监听TCP的179端口,对等体请求建立TCP连接,通过三 次握手与对等体建立TCP连接; 启动TCP连接前将连接状态设置为Connect。 □建立BGP连接 1.向对等体发送OPEN消息,等待对等体的OPEN消息,连接状态设置为OpenSent; 2.接收到对等体的OPEN消息,回复KEEPALIVE消息,同时等待对等体的KEEPALIVE 消息,连接状态设置为OpenConfirm; 3.接收KEEPALIVE消息,完成与对等体的连接,连接状态设置为Established。 当BGP实体与对等体建立连接后,主控节点根据分配算法选出负载最小的从节点,由这 个从节点处理这个对等体的UPDATE消息。 ●处理BGP报文流程 主控节点子系统通过调用TCP socket读函数得到BGP报文。 □OPEN消息处理 在分布式BGP系统中,OPEN消息的处理是在主控节点上实现的,OPEN消息的处理流 程如下: 1.从OPEN报文中读取版本号(Version)、自治域号(AS Number)、超时时间(Hold Time) 和BGP标识符(BGP Identifier)四个域的值; 2.根据AS Number和BGPI dentifier判断OPEN消息是否来自管理员设置的邻居节点。 如果不是,发送NOTIFICATION消息给对等体。 3.根据BGP协议的连接冲突检测定义进行冲突检测,如果有冲突并需要关闭这个连接, 则发送NOTIFICATION消息给对等体中断这个连接。 4.检测版本号是否正确,不正确发送NOTIFICATION消息给对等体中断这个连接。 5.检测AS Number是否正确,不正确发送NOTIFICATION消息给对等体中断这个连接。 6.检测Hold Time是否为零或者大于3秒,如果不是,发送NOTIFICATION消息给对 等体中断这个连接。 7.比较本路由器BGP实体设置的Hold Time值和接受的OPEN消息中的Hold Time值, 以值小的作为这个连接的Hold Time值,设置KEEPALIVE消息定时器为连接Hold Time值的 三分之一。 8.发送KEEPALIVE消息给对等体确认接受OPEN消息,使对等体连接的有限状态变为 OpenConfirm状态。 □KEEPALIVE消息处理 在分布式BGP系统中,KEEPALIVE消息的处理是在主控节点上实现的。KEEPALIVE消 息只有一个消息头,对它的处理比较简单。 当连接状态为OpenConfirm状态时,处理流程如下: 1.将连接状态变为Established状态。 2.发送KEEPALIVE消息给对等体。 3.把当前路由器路由表全部通过UPDATE消息发送给对等体。 当连接状态为Established状态时,处理流程如下: 1.增加KEEPALIVE消息接收计数。 2.重置HOLD Time定时器。 □UPDATE消息处理 在分布式BGP系统中,UPDATE消息由主控节点接收,对UPDATE消息的处理是在从 节点上实现的,处理流程如下: 主控节点接收到UPDATE消息,把UPDATE报文发送给相应的从节点; 对整个属性长度检查,如果超过规定长度,通过NOTIFICATION消息通知对等体,丢弃 这个UPDATE消息; 如果UPDATE消息中包含不可用路由,检查不可用路由长度是否正确。如果超过规定长 度,通过NOTIFICATION消息通知对等体,丢弃这个UPDATE消息; 对不可用路由进行语法检查,如果错误,丢弃这个UPDATE消息;如果正确,获取不可 用路由的值存入变量中; 如果UPDATE消息中包含可用路由,对可用路由长度检查,如果太长,通过 NOTIFICATION消息通知对等体,丢弃这个UPDATE消息; 对可用路由的路径属性的每个域进行检查,如果有错误,通过NOTIFICATION消息通知 对等体,丢弃这个UPDATE消息;如果正确,获取路径属性各个域的值存入一个结构变量中; 对可用路由进行语法检查,如果错误,丢弃这个UPDATE消息;如果正确,获取不可用 路由的值存入变量中; 如果有不可用路由,从输入路由信息库中删除这条路由,启动分布式BGP路由计算; 如果有可用路由,更新输入路由信息库,保存路径属性;启动分布式BGP路由计算。 □NOTIFICATION消息处理 在分布式BGP系统中,对NOTIFICATION消息的处理是由主控节点和从节点配合实现 的,处理流程如下: 1.获取NOTIFICATION消息中各个域的值; 2.把错误信息显示出来; 3.断开与对等体的连接。 4.主控节点通知处理这个对等体UPDATE消息的从节点删除与之有关的所有相关信息 (包括它所发布的路由以及描述这些路由的属性),启动分布式BGP路由计算; ●分布式BGP路由计算 在BGP协议中,BGP路由计算又称为决策过程,分为三期:优先级计算、路由选择、路 由分发。这三期分别是三个独立的过程,由不同的事件激发,图4为路由计算示意图。 分布式BGP路由算法描述如下: 1.优先级计算 当从节点对UPDATE报文解析后,发现有可用路由,触发优先级计算过程。在优先级计 算过程中,锁定输入路由信息库,根据预先设定好的策略,对新的可用路由或者是替代路由 计算一个优先级。计算完成后,解开输入路由信息库,触发路由选择过程。 2.路由选择 在分布式BGP系统中,路由选择分为两步完成,第一步是从节点选择局部最优路由,第 二步是主控节点选择全局最优路由。 当优先级计算过程完成后,首先激活从节点路由选择。从节点路由选择过程锁定输入路 由信息库,从所有与新的可用路由目的地相同的路由中选出优先级最高的一条路由,如果选 出的路由与局部最优路由信息库中保存的路由相同,结束路由选择过程;否则,更新局部最 优信息库,解开输入路由信息库,同时通过系统的分布式消息机制把这条路由信息发送给主 控节点,激活主控节点全局路由选择过程。 主控节点上保存着所有从节点的局部最优路由,当收到一条从节点发送来的新的路由时, 锁定全局最优路由信息库,从所有与新的可用路由目的地相同的路由中选出优先级最高的一 条路由,更新全局最优路由信息库,解开全局最优路由信息库,触发路由分发过程。 3.路由分发 路由分发过程被路由选择过程激活,将全局最优路由信息库的更新路由包装到UPDATE 消息中,发送给每个对端,同时在每个对等体的输出路由信息库中记录发送的路由。 ●主控节点的双节点冗余备份 主控节点和备份节点形成双节点备份的硬件环境,但是节点之间不提供相互的软硬件失 效的硬件检测机制,它们通过心跳算法实现双机的状态监测。主控节点和备份节点都运行主 控节点子系统,当主控节点正常工作时,备份节点只能接收主控节点的备份消息,并把备份 消息中的备份数据备份到相应的数据库中;当主控节点出现故障时,备份节点接替主控节点 的工作。 为实现这种失效转移,采用了的方法是进行检查点(CheckPoint)状态备份,然后进行状 态回滚恢复,如图5所示:主控节点上的主控节点子系统一步一步执行,在每个步骤完成后 都插入一个检查点,检查系统当前的状态,并把系统状态保存到备份节点相应的数据库中, 当主控节点上的主控节点子系统在某个步骤,如步骤3出现故障时,备份节点将检查点2的 系统状态信息恢复到备份节点上,备份节点的主控节点子系统可以继续执行步骤3。 处理流程如下: 主控节点定时发送查询消息给备份节点,备份节点回复消息;当主控节点收不到备份节 点的回复消息时,就认为备份节点故障,这时主控节点将不会向备份节点发送备份消息;当 主控节点能够收到备份节点的回复消息时,就认为备份节点正常工作,可以向备份节点备份 状态信息; 在主控节点模块中,需要备份的状态信息可以分为两类,一类是:通讯相关的状态信息, 包括主控节点与从节点的通讯信息;另一类是:应用相关的状态数据,包括对等体连接状态、 全局最优路由信息库、输出路由信息库、从节点信息库; 对于通讯相关的状态数据来说,任何一次操作都可能涉及到从节点的状态变化,所以它 们的状态备份必须做到小粒度的备份,在每一次主控节点与从节点进行通讯后进行相应的状 态备份;当主控节点与从节点通讯时,主控节点同时将通讯数据读写操作备份到备份节点中, 备份的读写操作中包括读写操作的读取和写入数据,数据长度,以及操作返回的结果; 而对于应用相关的状态数据,数据量大,备份粒度较大,主控节点每隔一段的时间把这 些应用相关数据发送给备份节点; 当备份节点不能收到主控节点的查询消息时,就认为主控节点出现故障,这时备份节点 将进行状态回滚恢复,接替主控节点的工作; 备份节点接替主控节点工作,这时应用相关的状态数据已经保存在备份节点的相应数据 库中,备份节点上的主控节点子系统直接使用这些状态数据启动,然后重复进行通讯数据读 写操作,但是通讯数据读写操作不是在进行实际的数据读写操作,而是从备份的读写操作中 返回相应的数据和结果。