高端路由器作为Internet骨干网的核心设备,其位置决定了它必须具备很高的稳定性与可靠性。通过采用1+1的主控板冗余热备份机制,是常用的提高设备可靠性与稳定性的重要解决方案之一。主控板冗余机制,是指两块软硬件相同的主控板同时工作,一块为主用主控板,一块为备用主控板。通常情况下,主用主控板处于正常工作状态,备用主控板处于备用状态,在一定的触发条件下,备用板接替主用板所有工作,完成主备倒换功能,从而保证设备的可靠运行。
而使倒换前后整个系统的业务状态不发生变化的前提是由主备问的数据同步和链路切换来保证的。本文关注的重点为软件层面,基于主备倒换热备份的数据同步解决方案。通过结合高端路由器主备控制板卡之间需要同步数据的不同特点,采用合适的方法对这些数据进行同步;同时采用私有的以太网二层通信协议,建立一条独立的主备数据同步通道。该方案提高了主备数据同步速率,保证数据同步的稳定可靠,采用模块化设计,实现简单,实用性高。
1 高端路由器主备同步的总体软件模型
1.1 主备同步方式的软件实现方案
高端路由器一般采用分布式架构,控制平面和转发平面严格分开,功能完全独立。主控板负责控制平面,即整个设备的控制与管理,包括用户的各种配置信息以及运行各种协议,转发板负责转发平面,即单纯的数据转发业务,它根据主控板通知消息维护自己的转发表项,同时根据转发表项转发数据。主备同步完成后,主备控制板卡上的控制信息相同,此时进行主备倒换,转发表项并不会删除后重新学习,从而能保证业务的无间断转发,实现主备控制板卡的无缝倒换。
因此,主备同步在主备倒换功能中具有非常重要的地位,其实现有两种方式:分散式同步方式和集中式同步方式。分散式同步是由上层应用根据自身的情况,采用不同的数据同步机制,在各自的本模块内部完成主备同步。相对于分散式同步,适用于简单应用系统,不便于统一管理调度,资源浪费的缺点,本文采用集中式同步方式。集中式同步方式,如图1,是由操作系统为上层应用提供统一标准的同步接口,上层应用进程需要同步时,只需调用主备同步模块提供的API函数,通过专有的主备数据同步通道传输数据,而不必关心数据同步的具体实现。这样把主备倒换过程中的主备数据同步作为一个主备同步模块,从主备倒换功能中独立出来,便于对应用进程的同步对象进行统一管理与调度,模块化的设计也更具有通用性、可移植性、自适应性。
1. 2 主备数据同步通道
以往旧方案中的主备数据同步都是在倒换过程中并发进行的,数据的传输使用UDP一次处理,这种方法数据易丢失且会增加主备倒换时间。为解决以上问题,提高传输的可靠性和同步速率,主备同步模块提供一条采用消息确认方式的可靠链路层同步通道,并针对同步数据的不同特点,在链路层通道中采用不同的同步方式。
上层应用需要同步数据时,调用主备同步模块提供的接口后,数据通过私有协议进行封装,根据目的板卡和发送板卡设置相应的目的MAC地址和源MAC地址,采用消息确认方式,可靠的传输到目的板卡。主用板给备用板发送同步数据后,启用定时器等待备用板数据接收的确认消息,特定时间没有收到确认消息后,主用板向备用板重传数据。备用板收到主用板传输的数据后,调用上层应用接受同步数据的接口,然后执行相关命令,执行成功后给主用板发送一个确认消息。当主用板收到备用板的确认消息后,对相关资源进行调整和释放,然后开始发下一个同步数据包。
2 主备数据同步
主备同步模块工作的实质是在合适的时机,针对具体的配置信息的特点,采用合适的同步方法对这些配置数据进行同步。因此主备同步模块主要需要完成三部分的工作,即同步时机的获取、同步对象的划分、同步方法的实现。如图2所示,为主备同步模块结构。
2. 1 同步时机的获取
为了在合适的时机进行主备数据同步,即获取同步时机,需要对主备板卡的状态进行管理,主备板卡的状态由私有控制协议HA的状态机维护,如图3所示。
HA协议主要实现了以下3个方面的功能:1)主、备控制板卡的彼此发现和会话连接的建立;2)主、备控制板卡的网管配置同步时机的获取;3)提供硬件和软件结合的故障检测
机制。
HA协议通过心跳机制提供主备板卡的软件故障检测,同时接受硬件中断信息的上报,从而实现硬件和软件结合的故障检测机制。心跳信息也用于主控板和备用板之间的握手,维护它们的状态变迁。系统初始化的时候,HA协议创建并启动心跳和故障检测定时器,为上层应用模块提供注册用的函数钩子,当主备板卡的状态发生变迁时,通知相关模块进行角色变化,数据同步等相应的操作。
因此,主备板卡之间除了需要传输需要同步的数据外,还需要传输HA协议的心跳信息。主备板卡之间通常需要留有另外的连接通道用于心跳机制的通信,把控制传输和数据同步传输分离开来,防止因数据传输通道的故障导致主备板卡状态的异常,从而导致整个设备的故障。
2.2 高端路由器主备同步数据分类
高端路由器主备倒换功能中主控板需要同步的信息有系统全局配置信息、系统的状态信息、软件各模块的配置信息、CPU状态信息、软件路由表项等。每种配置信息都有自己的特点,比如对实时性要求的高低、信息量的大小、信息更新的频率、对系统的重要程度等。对不同的配置信息采取与其相适应的备份机制同步方法,可以提高主备数据同步效率。
根据信息来源的不同,可以把需要同步的配置信息分为静态配置信息和动态配置信息。
静态配置信息根据其信息量的大小和实时性的要求又可以分为两种:主用板和备用板都处在稳定态的时候,用户手动配置的命令行信息,即需要实时同步的信息;以及主用板处在稳定态的时候,备用板上电,此时需要同步到备用板上的配置信息,即主控板的所有配置信息,网管把主用板上的所有配置信息保存到主用板的 CFCard或Flash,然后HA协议通知网管同步该配置信息。
动态配置信息是指系统运行协议而产生的动态信息,协议运行产生的邻居状态,相关协议表项等都是动态配置信息。动态配置信息根据是否需要被周期性同步可以分为周期性同步配置信息和非周期同步配置信息,有些协议表项需要定时周期性的刷新,即周期性同步配置信息,有的协议表项不需要周期性刷新或者周期很大,即为非周期性同步配置信息。
静态配置信息一般相对稳定,用户易控制,动态配置信息一般具有相对不稳定,量较大,用户无法控制等特点。
2.3 同步方法的实现
针对静态配置信息和动态配置信息的不同特点,通过相同的数据同步通道,采用不同的同步方式来提高同步的效率。
2.3.1 静态配置信息同步
静态配置信息中,主用板与备用板都处在稳定工作态时,用户手动配置的命令行信息实时性要求高,信息量小,以增量的方式实时同步到备用板,通过命令行解析,执行与主用板上相同的操作。主备用板卡执行相同的命令行解析,备用板收到主用板同步过来的命令行配置,调用和主用板相同的上层应用接口,但应用进程可以通过携带不同的标志位,同步数据通道根据标志位来判断是否需要给对端同步数据,防止备用板收到主用板同步的命令行配置后,又给主用板同步配置。
而主用板处于稳定工作态后,备用板再上电,这时主用板的所有配置信息都要同步到备用板,这种初始化同步配置信息的信息量一般较大。通常软件模块把配置信息以字符串格式写入后缀名为“.cfg”配置文件,然后把配置文件通过FTP同步到备用板,备用板收到后按照配置文件里的配置逐一执行配置,从而保证主备板数据一致。这种传统的方法配置恢复采用单任务,各个模块按一定的顺序,依次经过命令解析、命令匹配和命令下发等流程,配置恢复效率低下,同时在配置恢复时各模块存在较强的耦合性,各模块必须按一定的顺序进行恢复工作,否则可能出现配置执行失败。把配置文件采用二进制格式保存,并按模块和特性进行组织保存,并且配置恢复采用直接赋值的形式,简化了配置信息的解析和下发,去除了各模块间的耦合,并使用多进程技术可以实现多模块并行的数据恢复,极大的提高了同步效率。
2.3.2 动态配置信息同步
动态配置信息,是由系统运行协议而产生的与协议有关的信息,这些数据信息关系到倒换后协议状态是否正确,关系到主备板卡能否实现无缝倒换,根据其是否需要周期性同步而分类。ARP,ND,TCP等这些协议表项数据,会定时周期性刷新软件表项,需要周期性同步到备用板卡;而运行路由协议而产生的软件路由表项,邻居信息等,当路由协议的状态发生变化会导致这些表项变化,很长周期后协议自己刷新表项也会导致表项变换,因此是非周期的动态同步配置信息,采用严格消息确认方式同步数据。
对于那些短时间内变化频繁,需要定时刷新表项的协议,为了保证主备板卡的协议状态一致,一般是把协议进程的消息定时或者实时的同步转发给备用板进程。对于这种周期性同步消息没有必要进行严格确认,因为动态数据在短时间内会再改变,当同步周期很短的时候,会给主用板的处理器和主备板之间的通信造成很大压力。协议模块可以通过携带标志位,在数据同步通道根据其标志位来进行不同的处理。
3 实验与验证
在相同的硬件环境下,采用新旧两个不同的方案制作的软件版本进行实验对比。方案一,使用UDP传输主备同步数据的传统方案;方案二,改进后实现主备数据同步的新方案。
1)实验环境
高端路由器设备,设备上有一块主用控制卡、一块备用控制卡、一块业务线卡,思博伦TestCenter仪表。按图4拓扑图搭建环境。
2)实验方法
TestCenter仪表的两个端口分别与业务线卡上的两个端口相连,仪表与设备相连的端口运行路由协议(RIP、OSPF、ISIS、BGP等),仪表与设备建立邻居,仪表口通告路由(IPV4路由50 W,IPV6路由25 W),两个仪表口对打流。记录同步不同类型不同容量路由的时间,得出其平均值;短周期不停同步大量数据到备用板,统计失败次数,计算丢包率,得出可靠性。
3)实验结论
多次主备倒换后,可以看到主备控制卡角色变换,没有数据包丢失,主备控制卡实现了无缝倒换。图5所示,为用命令行rsp switch进行主备倒换的结果图,可以看到9号槽和10号槽主控角色的变换。统计多次数据,得出方案一和方案二各个阶段数据同步的平均时间,并计算出两个方案主备同步的可靠性,如表1所示。
由此可以得出,改进后的主各同步方案,可以应用在高端路由器设备中,实现了主备控制卡的无缝倒换,并且相对传统旧的同步方案,提高了数据同步的可靠性与速率。
4 结束语
主备数据同步技术是实现通信设备主备倒换的关键技术之一,本文主要对这一技术进行了研究与改进。通过改进主备数据传输通道,划分同步对象,采用合适的同步方法,从而实现高效可靠的主备同步。该技术方案已经通过测试,在高端路由器设备上能够有效可靠的运行,并且实现简单,实用性高。