ComwareV7

Comware是用于网络设备的网络操作系统,所有功能都针对网络设备设计,更加有针对性。Comware包含了设备上全部软件功能,使得设备上只需要使用Comware单一系统就可以支持设备的全部软件功能。另外从低端到高端、以及各种类型的网络设备均只使用Comware单一的网络操作系统,保证了功能的一致。

Comware发展到V5版本已经是一个非常完善的单进程多任务的网络操作系统,在非常广泛的网络设备上得到了使用。要更进一步发展,就是要实现完全的模块化,以解决单进程无法解决的问题;同时提高系统的开放性。

Comware V7就是为了解决这些问题开发的全新的系统。其采用多进程的实现方式,实现了完全的模块化。通过模块化使得系统在可靠性、虚拟化、多核多CPU应用、分布式计算、动态加载升级等方面都有了很大的改进。同时,Comware V7使用了主流的Linux操作系统,使得网络操作系统从一个封闭的专用系统向更加通用、开放转变。Comware V7在一些细节上也进行了改进,例如使用抢先的调度,提高了系统的实时性。

与Comware V5相比,Comware V7还具有如下优势:

· 完善了虚拟化功能。不仅支持将多台物理设备虚拟为一台逻辑设备(称为N:1的虚拟化,即IRF技术),还支持将一台物理设备虚拟为多台逻辑设备(称为1:N的虚拟化,即MDC技术),并且支持两种虚拟化的混合使用。

· 完善了ISSU机制,使得接口板软件升级也可以做到业务不中断。

· 完善了辅助CPU、OAA等功能,使得设备更加容易扩展功能。

· 支持TRILL、EVB、EVI等多种新技术,使得使用Comware V7的设备更加便于数据中心等网络的部署。

· 增强了开放性:

   Comware V7使用通用的Linux操作系统,提供开放的标准编程接口,可供用户利用Comware V7提供的基础功能实现自己的专用功能。

   Comware V7内嵌了TCL功能,用户可以利用TCL脚本语言直接编写脚本;用户还可以利用Comware V7提供的命令行、SNMP Get、SET操作以及Comware V7公开的编程接口等实现所需功能。

   Comware V7模块化的结构确保可以运行各种应用程序。利用Comware V7开放的编程接口,用户可以编写第三方程序在Comware V7系统上运行。

· 增强了可操作性和维护性。Comware V7在用户界面上完全继承Comware V5的风格,确保使用过Comware V5的用户容易上手。在此基础上,Comware V7丰富了设备维护功能,为使用者提供更加清晰、详实的设备运行信息。Comware V7还支持EAA,系统发生变化时进行所需动作,在提高系统可维护性的同时,满足用户一些个性化需求。

1.1 Comware V7系统构成

图1 Comware V7体系结构

Comware V7包括4个平面:管理平面、控制平面、数据平面和基础设施平面。

1. 基础设施平面

基础设施平面在操作系统的基础上提供业务运行的软件基础,包括操作系统基础服务和业务支撑功能。基础服务功能是与业务无关的各种软件功能,包括Linux操作系统的各种基本功能,C语言库函数,数据结构操作,标准算法等。业务支撑系统是整个系统业务运行的基础,为Comware各进程提供软件和业务基础设施,后面提到的各种系统架构中涉及的基础功能均在这部分提供。

2. 数据平面

数据平面提供数据报文转发功能,包括本地报文的收发,即IPv4/IPv6协议栈、socket、基于各层转发表的数据转发功能等。

3. 控制平面

控制平面运行路由、MPLS、链路层、安全等各种路由、信令和控制协议,生成各种转发表项以控制数据平面的转发行为。

4. 管理平面

管理平面对外提供设备的管理接口,如Telnet、SSH、SNMP、HTTP和Web Services等。通过管理平面,实现人机交互,对Comware V7进行设置、监控、管理。

1.2 模块化

图2 Comware V7模块化体系结构

Comware V7采用模块化设计,实现了全面的模块化功能。Comvare V7基于Linux内核,各个网络服务功能分别运行各自的进程,实现模块化。Linux天然支持多进程的调度,进程间运行空间隔离,单个进程的异常不会影响系统其他部分,提高了系统的可靠性。Linux中各线程采用抢先的调度,保证各种服务及时得到处理。同时Linux在多核、多CPU以及SMP(Symmetrical Multi-Processing,对称多处理)技术方面也有很好的支持,可以发挥多CPU的作用。

模块化的设计使得Comware V7的体系结构完全不同于以前版本,在很多方面有了新变化。

· 进程隔离

Comware V7中各个特性均运行于独立的进程,相互内存隔离,提高了系统的可靠性。同时对每个进程还可以分别管理,这种精细化的管理更利于系统整体的稳定和性能。

· 故障隔离

Comware V7的模块化设计使软件的各个部分做到故障隔离。一个进程的异常不会影响其他进程以及内核的正常运行。软件的故障也可以通过自行恢复,不影响硬件的运行。

· 多核支持

Comware V7对多核的支持不再仅限于数据平面,可以全面的支持Multi-core CPU及SMP技术。模块化的实现,使得可以通过Linux的调度直接完成线程间的并行运行,从而发挥多CPU的作用,可以通过增加CPU个数提高系统整体性能。通过运算性能的提高,使路由更快的收敛;同时在出现在异常时,减少了恢复时间,增强系统可用性。

Comware V7系统还支持将指定进程集合运行在专用的CPU Set上,为关键任务的运行提供资源保障。配合线程的抢先调度,及合理的优先级设置,保证系统CPU负荷高时,有实时性要求的功能仍然可以及时响应事件进行处理。

通过控制平面支持多核,可以在多核上完成以前必须由辅助CPU完成的功能,减少了对硬件的依赖,简化了软件运行。

· 按需运行

模块化以后,进程可以做到动态加载,只加载运行需要的功能,当前未使用的功能完全不占用系统资源,提高系统性能。同时由于不使用的功能完全不运行,使得这些功能既不会影响系统运行,也不会遭受攻击,提高了系统的安全性。

· 模块升级

模块化后可对单个特性进行升级,使得升级操作对系统的影响降到最小。模块化对系统的扩展性也有很大好处,在不影响系统运行的情况下可以很容易地添加新功能。

· 裁减性

模块化的结构使得Comware V7中各个进程是分别独立的可执行程序,这样每个特性天然就是相互独立存在的,因此裁减变得更加简单,无需重新编译,只需要将所需功能打包即可完成裁减。

· 多包发布

如果产品需要,Comware V7的版本可以以多个包的形式发布。即一个基础包及多个功能包。与裁减类似,这也是模块化带来的便利。

· 基于功能的License

还可以基于功能提供License,使得Comware软件使用更加灵活,避免无关功能的干扰。

· 开放接口

Comware V7模块化的结构确保可以运行各种应用程序,同时还可以以动态链接库的形式提供编程接口,这些为用户提供了编写在Comware V7系统上运行的第三方程序的可能,即Comware V7开放编程接口,供用户编写个性化的、在Comware V7系统上运行的程序。这种方式比以前的OAA功能更加灵活。

1.3 分布式

1.3.1 分布式架构

Comware V7虽然支持各种硬件形态,以及虚拟化等不同分布式结构的设备,但只有单一的分布式架构。

Comware V7的分布式架构将系统抽象为逻辑上全连接的多节点协同工作的体系结构。节点分为具有全部功能的主控系统节点及只有节点本地处理功能的接口板系统节点。此软件系统架构与拓扑无关。这样保证软件在各设备处理一致,增强了软件适应多种网络设备的扩展性及稳定性。

图3 Comware V7分布式逻辑结构

Comware V7的分布式架构与以前架构最大的区别在于所有的主控系统节点不再是原来一主多备的形式,而是多个主控系统负载分担。由于实现了模块化,各进程分别运行,因此各个控制进程可以分别运行在不同的节点,实现控制平面分布式。

1.3.2 分布式计算

在Comware V7的分布式架构下,通过合理的进程划分及协同工作,可以实现多种分布式运算方式,最大限度的利用系统资源,有效提高系统整体性能。

1. 按相关硬件分布

每一个单板上都有一些功能仅仅是对本单板的控制,相关处理可以在单板上运行,实现分布式计算。例如链路层协议与接口相关,可以分布到各个接口所在单板自治运行。

图4 分布式计算一

2. 按特性分布

一些功能是针对整个系统提供服务的,这种功能一般运行在主控系统,例如路由协议、VLAN功能。很多系统将这样的服务运行在同一主控板,而其他主控板作为备份。这种方式对主用主控板的压力很大,限制了系统整体的处理能力。Comware V7可以将这些功能运行于不同的主控系统。即每个主控系统既是主用主控板也是备用主控板,运行一些服务的主进程,同时运行另外一些服务的备用进程。运行的具体位置可以由用户指定,也可以由分布式架构层根据当前运行情况自动决定。这样将各全局服务的主程序分布到不同的主控系统,可以有效的分担各CPU的压力,提高系统的整体性能。

图5 分布式计算二

3. 特性分布计算

以特性服务为粒度的分布式计算,在一些场合仍然不能发挥系统整体性能,例如只有一两个服务在大量使用,而其他服务占用CPU比例很少,这样无论将这一两个服务运行在哪个CPU上都会造成分布处理的不均衡,降低并行处理效果。为了解决这个问题,Comware V7中一些计算量大的全局服务可以实现单一特性的分布式计算。

一种方式是通过进一步拆分子功能,将子功能分布到不同主控系统运行,实现单一全局服务的分布式计算。但多数情况下功能内部的子功能间数据交互比较多,不利于并行处理。另一种常用的方法是针对不同控制对象分布到不同处理节点进行分布式处理。由于不同对象间的相关性比较小,因此具有很好的并行效果,有效提高系统性能。例如,BGP协议可以根据不同的Peer,分布到不同节点处理。

图6 分布式计算三

1.4 高可用性

1.4.1 高可用性架构

系统的高可用性的目标是减少系统出现的故障,并在出现故障时减少对系统业务的影响。Comware V7通过迅速感知系统中各种服务进程发生的故障,并且快速恢复服务,从而提高系统的可用性。系统可用性是涉及系统中各个服务进程的功能,需要各进程配合实现,Comware V7为此设计实现了一种高可用性架构,为各进程服务,确保各进程提高可用性,并为各种进程的高可用性确定了统一的标准。

Comware V7高可用架构中,各种服务进程可以使用三个系统功能:可靠的进程间通信、高可用性控制、实时数据库。

图7 高可用性架构

2. 可靠的进程间通信——IPC

Comware V7提供了可靠的进程间通信。完成可靠的跨节点的进程间单播、组播通信,保证在主备进程间,以及不同进程间可靠高效的数据同步。同时提供了通信的迁移功能,通信的一端迁移时可以无损切换。即,一个进程在软件升级等场景进行可控的倒换时,与此进程进行通信的进程不感知此倒换的发生,转而与倒换后新的进程通信,所有通信数据连续不丢失。

3. 高可用性控制——HA

高可用性控制功能维护各组主备进程,进行主备选举,对进程进行异常监控,发现异常及时进行主备倒换,并恢复故障的进程。高可用性控制功能还提供主备进程间专用的备份通道。

4. 实时数据库——DBM

DBM(Database in memory,内存数据库)为嵌入式实时数据库,为各进程提供可靠的进程外的数据存储。进程实时将变化数据更新到数据库,数据在进程退出或异常时不丢失。数据库可在进程重新运行时用于数据恢复。

图8 内存数据库DBM示意图

此数据库为内存数据库,保证数据高效存取,采用Non-SQL数据库设计,彻底解决数据库性能问题。数据库在为各进程的高可用性提供服务的同时,自身也具有高可靠性。一方面其支持自动的数据备份,保证主备倒换时数据的一致;另一方面,在需要的时候可以将数据持久化保存到其他存储介质中,确保在更加恶劣的情况下数据不丢失。数据库的存储方式对应用透明,使得高可用性架构更加通用,适用于不同的设备形态,并且扩展性更强。

1.4.2 进程级GR

Comware V7中各后台守护进程均需要使用高可用性架构,实现自身功能的高可用。Comware V7采用进程级的GR技术,实现进程级的高可用性。即每个进程运行过程中进行备份,重启时,与此进程相关的软硬件均不删除此进程的相关数据,待进程重新运行,恢复自身数据后,与相关软、硬件进行数据平滑,保证运行状态一致,继续运行。整个重启过程中业务不中断,系统其他部分功能不受影响,邻居设备不感知此过程。异常重启的服务只在重启期间不提供服务,重启后马上恢复服务,且不影响重启前正在进行中的服务。

进程级GR的冗余备份有两种方式:数据的备份和进程的备份。根据备份方式不同,进程级GR分为单进程的GR和主备进程的GR。

· 单进程的GR:进程运行过程中将必要的数据进行备份,备份数据保存在本地的内存数据库中。当系统发现进程故障时,自动重启。进程重新启动后使用备份的数据恢复运行,最后与系统中其他相关进程交互数据,以弥补重启期间可能缺失的变化事件,完成整个恢复过程。这种方式对系统的要求少,占用资源少,一般用在盒式设备的进程或分布式设备接口板的进程上。

图9 单进程GR

· 主备进程的GR:提供备份进程的运行,实时接收主进程的状态,以随时准备接替主进程运行。当系统发现主进程故障后自动重启,但无需等待其重启,备进程将升级为主进程,直接接替工作。当故障进程重启完成后,将工作在备状态,以备进程身份运行。这种方式相对于单进程的GR,恢复时间更短,可用性更高,但占用资源稍多,一般分布式系统的主控板进程使用此方式。

图10 主备进程的GR

通过支持进程级的GR,使得系统中的各进程可以自行进行平滑的重启恢复。这不仅提高了系统可用性,而且不会对网络上其他节点的协议运行造成影响。如果是路由协议进程发生异常重启,通过路由进程的GR,不会影响数据平面,网络上其他设备也不会感知此异常的发生,实现NSR功能。

1.4.3 系统高可用性

当更恶劣的故障发生,需要重启系统时,可以通过主备系统的倒换实现高可用性。即同时在主用主控板及备用主控板运行主用系统及备用系统,当主用系统发生故障时,自动进行倒换,备用系统直接接替其工作。原来的主用系统重启后,重新以备用系统身份运行。

系统级的高可靠性在网络操作系统中是产生比较早的技术。随着新技术的不断产生,需要使用系统级高可靠性的场合越来越少,另一方面系统级倒换对系统运行的影响范围也越来越小。

以前,系统级的倒换基本上是解决软件故障的唯一办法。随着进程级GR功能的出现,大部分的软件故障可以通过进程级的GR修复,无需进行整系统的倒换。这样大大减小了需要系统级倒换的场景,提高了整个系统的可用性。

另外随着技术的发展,目前的主备系统与传统意义上的主备系统也有很大区别。在Comware V7上,实现了控制平面分布式功能,可以将控制进程的主进程运行在不同的控制单元上,即原来意义上的主、备系统上均运行了部分控制进程的主进程。当一个主控单元发生故障时,只有运行在发生故障的控制单元上的主进程才会受到影响。这样大大减小了系统级倒换对整个系统的影响范围。

图11 控制平面分布式对高可用性的影响

Comware V7的MDC技术可以将一个设备虚拟成多个逻辑设备使用。支持MDC后,每个控制节点被虚拟成了多个虚拟控制系统。在一个虚拟系统出现故障,需要系统倒换时,也不会影响其他逻辑设备的运行,进一步减少了系统级倒换对设备的影响。