周丽平,张亚君
(杭州电子科技大学电子信息学院,浙江杭州310018)
随着计算机网络技术的快速发展,各种增值业务在互联网上开始得到了广泛的应用,网络设备的软件版本更新越来越频繁,使得业务因软件版本升级而被迫中断,极大地影响了网络设备的高可用性要求。所以一种提高设备高可用性的方案显得越发重要[1-3]。高可用性是指一个产品或系统对客户持续服务的能力,所以如果能寻求到一种高可性的方法,就可以很好的解决网络设备在升级过程中带来的业务中断的问题。本文提出的业务不中断升级(In-Service Software Upgrade)ISSU[4]系统的进程升级可以很好的做到在对旧版本软件的升级过程中,提高调备的无故障运行时间,而降低设备的恢复正常运行时间,最终提高了网络设备的可用性。
本文提出的ISSU系统的软件升级是通过基于Linux系统的命令行执行顺序进行的。它结合主备倒换热备份技术、IPC以及NSF/SSO等外部模块来完成加载、安装、确认、卸载4个升级软件的过程[5、6]。同时在升级过程中还有异常回滚过程,这个回滚包括升级过程中出现异常自动进行回滚以及手动执行回滚,回滚都能使设备的版本回退到原来正常的状态,这样就增强了升级系统的灵活性和容错能力。
ISSU系统的软件升级流程如图1所示:
当分布式交换机进行升级时,对传入的到主控板上的升级软件(一般以包的形式发放)通过加载命令对传入的软件包文件解压到对应的要升级的板上,然后通过安装命令进行升级,升级完成后可以用确认命令将原主控板以新版本替换旧版本完成本次升级。在升级过程中,如果想取消本次升级操作可以执行取消命令完成;在升级完成后,如果想回退到旧版本,则可能通过卸载或回滚命令回退到以前的版本。
业务不中断升级系统,是一种可持续运行网络,以分布式网络设备交换机为例,在硬件上拥有两块或两块以上的主控板(一般以两块为主),主用主控板和备用主控板,也常叫做主控冗余,其很大一个特点就是主控板和备用板之间实现热备份机制,只有拥有热备份技术的支持,才能保证当主用主控板升级出现了异常或是板出现挂死的故障时,ISSU系统立即会启动主备倒换过程,由备用板接管主控板的工作,系统依然能够正常运行。而在备用板倒换为主用板之前,备用主控板会去同步主用主控板的数据,即进行热备份。通过热备份,备用主控板可以保证与主用主控板具有相同的配置信息。这样备用主控板就可以保证和主用主控板一样的配置,从而数据转发能够不间断地正常进行,进而保护网络中各种流量和报文转发几乎不受影响。
对于存在热备份的进程(主控板进程),进程升级是通过进程级备份以及高可用性机制达到ISSU的。如图2所示:基于热备的进程升级流程。(图2中的主进程是指主用主控板所起进程,备进程是指备用主控板所起的进程)。
图2 进程级ISSU(基于热备)
在进程升级过程中,应按照ISSU升级原则进行升级:先升级备用主控板,再升级主用主控板。先升级备进程到新版本(对业务运行无影响),再通过高可用性机制进行进程倒换,控制权交给新版本进程,从而完成新版本更新。业务中断的时间仅为主备倒换的时间,时间极短。
对于不同的交换机设备,可能在设备升级前的版本与要升级的版本存在兼容性的问题,这就导致交换机在选择升级策略时会有不同。ISSU系统为不同版本的设备升级提供了如下两种升级策略:
(1)进程升级,该升级是通过分析前后版本间的差异,仅对差异部分的进程实施升级,该升级方式对系统影响最小、升级速度最快,是ISSU升级的最佳方式;
(2)重启升级,该方式通过重启本成员设备加载新软件的方式完成升级。
两种升级策略都可以保证设备的在线升级不中断的业务,两种升级的配置相同,但软件实现有差异。进行ISSU升级时,设备会根据新、旧软件版本差异自动选择一种升级策略。本文重点介绍进程升级。
在ISSU系统中,一般版本的发布都是以一个软件包的形式发布的,而一个软件包可以包含多个特性,一个特性有独立的版本号,在本文提出的进程升级中对于升级的包采用了一种二次升级版本号ma-jor.maintenace,既:
Major,一级版本号,一但该版本号变化则ISSU系统会进行重启升级。
Maintenace,二级版本号,一但该版本号变化则ISSU系统会进行进程升级。
这种软件包一般ISSU系统会有专门的打包工具,将其各种要升级的进程打包进入到软件包中。下面以一个ssh特性包为例来说明进程升级的实现,如表1所示:
表1 ssh新旧特征包的版本比较
在进程升级时,系统会对新传入的版本软件包,与原来的版本软件包进行版本的比较,而比较的方式就是对新旧软件包中的各个版本号进行比较,如表1中举出的ssh这个特性包,对应用版本号、lib库版本号两个版本号进行比较,发现的只有应用版本号ssh的二级版本号有所变化,所以ISSU系统执行进程升级。而在升级过程中只对ssh包中变化的ssh进程执行升级,既是重启这个ssh进程,这样整个系统升级的影响变化只是对一个ssh进程实施了重启,不会影响整个系统其它的业务。
在先对备用主控板进行了升级完成后,然后对主用主控板进行升级,同时接口板同主控板一起升级,如图3所示:
图3 ISSU 系统命令行进程升级操作
由图3可以看出接口板slot 5随主控板slot 3一并升级,主控板进程升级过程中会重启对应的进程,重启的进程就是要升级的软件版本。如图3中的CFA进程,在升级过程中,系统先比较新旧版本间的差异,发现新的软件版本与旧的版本中CFA进程有变化,所以系统就对旧的CFA进程实施重启,即先让旧CFA进程停止,然后再次对CFA进程启动,而这次启动的就是新版本的CFA新进程,最后让CFA新进程运行起来。这样就完成了新版本的升级替换。整个升级时间就是重启一个进程的时间,一般是1 5s。
通过用H3C公司的核心交换机网络设备的测试,按照测试用例(分别对两种升级方式执行多次)对进程升级、重启升级两种升级测试其升级时间,例出8次结果如表2所示:
表2 ISSU系统的两种升级方式的升级时间
由表2可以看出,两种升级方式中,进程升级的平均时间是2.9s,而重启升级要184.2s,近3min,所以在升级的效率来看,进程升级是对系统影响最小、升级速度最快的升级方式,很好符合在线业务不中断的需求。
本文基于Linux系统,介绍了ISSU系统的原理,并提出了一种在线业务不中断升级方法,即进程升级,这种升级可以保证交换机在版本升级过程中业务不中断或中断的时间极短,很好的提高了网络设备的可用性。本文提出的进程升级方法适用于分布式网络设备。
[1] Garbin D A,Knepley J E.Design and analysis of high availability networks[C].Falls Church:Design of Reliable Communication Networks,2009:1 -6.
[2] 周晓云,覃雄派.高可用性数据库Hot Standby系统及其性能研究[J].中国矿业大学学报,2011,40(2):1-5.
[3] 曹进明,房鑫炎,吴蓉.基于IEC61850标准的变电站高可靠性通信研究[J].电力自动化设备,2008,28(9):1-6.
[4] AnttiKennebunk.Non-Service Affecting Software Upgrades for Multi-Service Routers[C].Naperville:Design of Reliable Communication Networks,2005:16 -19.
[5] 博韦,西斯特.深入理解 linux内核[M].北京:中国电力出版社,2007:766-796.
[6] 张敏狄,郭裕顺.分布式网络设备的软件在线升级系统设计[J].计算机系统应用,2010,19(6):1-4.