新一代网络操作系统的新特征

标签:
网络操作系统虚拟化高性能可靠性开放it |
分类: 软件平台 |
文/樊迟
一、 网络操作系统的发展
在网络应用的直接推动下,网络操作系统自诞生以来就时刻不停的在自己完善与发展中,尤其互联网的变化与变革更是其发展的催化剂。纵览其二十多年的发展历程,已经发生了三次大的蜕变。
http://www.h3c.com.cn/res/201112/21/20111221_1307746_01_736188_30008_0.GIF
关键词:连通
第一代网络操作系统主要任务是实现网络的连通性,即保证网络各层协议通信的可达,业务相对单一。转发以“尽力转发”为主,采用软件转发,以提高报文转发效率为主要目标,控制平面与数据平面缺乏明显分界线。网络操作系统以传统的嵌入式操作系统为基础,运行在单核CPU,全部为集中式处理,运行于低端网络设备。
第一代网络操作系统采用传统嵌入式软件模型,追求节省硬件系统资源,使用单一内存空间,被所有任务共用。这种方式缺乏内存保护,任何一行代码错误、内存越界都可能导致系统崩溃。而且网络操作系统采用非抢先式任务调度*(见注释),使得系统实时性差,总体效率难以提高。
另外传统嵌入式软件普遍采用专用接口,属于内部封闭式系统,网络操作系统无法为用户留有自行开发、扩展功能的余地。
*注:
非抢先式:进程持续运行,直至结束或阻塞,才主动放弃CPU,调度其它就绪进程。
抢先式:进程在运行过程中,可以被其它就绪进程抢先调度,即现运行进程将被迫放弃CPU,系统将CPU立刻分配给新的进程。
http://www.h3c.com.cn/res/201112/21/20111221_1307746_01_736188_30008_0.GIF
关键词:分布式
首先是系统架构的变化。随着转发逐渐以ASIC/FPGA、NP和Multicore为主,网络操作系统的首要功能转变为确保控制平面的健壮性、容错性、模块化、可补丁以及特性丰富,数据平面实现高效和不间断转发,以及控制平面与数据平面分离。又由于网络的复杂性越来越高,为了强化管理功能,单独分离出了管理平面提供管理相关功能。控制平面、数据平面、管理平面的划分已经成为网络操作系统的共识,并且一直延续到现在。
其次是业务的多样化。随着IP业务的多样化,网络除了数据以外还要承载语音、视频等多种不同的业务,同时还增加了MPLS、VPN等多种新的业务功能,网络操作系统不仅要保证网络数据的可达,还需要感知不同业务,进行精细化控制,保证服务质量以及各种不同的网络安全要求。随着网络技术的发展,对网络的附加要求也越来越多,例如高可靠性,低收敛时间,深层业务检测等等。
再次是处理能力的提升。网络操作系统特性不断丰富,使得软件规模不断膨胀,系统复杂度不断增长,在第一代系统的软件模型下保证系统可靠变得越来越困难。随着Multicore成为高性能CPU技术发展的主流,网络操作系统还需要增加对Multicore的支持。因此第二代网络操作系统开始采用模块化的结构,并提高了系统的并行处理能力。
另外由于出现了分布式的硬件平台,以及将多个设备堆叠、级联的虚拟设备,相应的网络操作系统逐渐演变成了可以进行分布式处理的系统。
http://www.h3c.com.cn/res/201112/21/20111221_1307746_01_736188_30008_0.GIF
关键词:模块化 开放
虽然第二代网络操作系统的设计已经非常完善,并且有长期的成功应用,但随着网络应用的发展,还是遇到了一些难于解决的问题。首先随着网络应用的不断深入,短时间的网络中断都会造成巨大影响及重大损失,这在数据中心以及云计算网络尤为突出。用户需要有更长的设备持续运行时间,并期望将网络升级对业务的冲击降至最小甚至没有影响。但是第二代网络操作系统进一步提高可靠性的余地已经不大。其次网络个性化需求也越来越多,这些需求不可能全部由网络操作系统提供,一些具有开发能力的用户希望厂商能够提供一个开放的网络操作系统,以满足自身的特殊需求。
而软硬件技术的发展也为新一代网络操作系统的产生提供了保证。随着基于Linux的嵌入式产业链已经成熟,包括Linux嵌入式操作系统、CPU和芯片供应商支持、以及GNU开发工具等均已比较完善,Linux已经成为网络操作系统普遍使用的系统。而硬件系统CPU普遍具备MMU(Memory Management Unit,内存管理单元)功能,内存和外部存储容量增大,硬件能力的提升使网络操作系统采用UNIX模型逐渐成为主流。这也为新一代网络操作系统奠定了良好的基础。
新一代网络操作系统采用了完全的模块化结构,各模块运行空间隔离,单个模块的异常不会影响系统其他部分,提高了系统的可靠性。模块化的运行也使得新一代网络操作系统可以成为真正开放的系统。同时采用的抢先任务调度,可以有效的提高系统的实时性,同时直接发挥Multicore的能力。新一代网络操作系统业务也进一步发展,已经不仅仅局限于单一的IP网络功能,而是集IP网络、存储网络等多网业务于一身,支持多网融合的网络操作系统。
二、 新一代网络操作系统的特征
http://www.h3c.com.cn/res/201112/21/20111221_1307746_01_736188_30008_0.GIF
网络操作系统的虚拟化技术分有两种,一种是将多个物理设备虚拟为一个逻辑设备,称为N:1的虚拟化;另一种是将一个物理设备虚拟为多个逻辑设备,称为1:N的虚拟化。
N:1的虚拟化减少了网络上逻辑设备的数量,简化网络层次,并且提高了设备的扩展能力,更好的保护用户投资。该技术包括H3C的IRF、CISCO的VSS。新一代网络操作系统中,N:1的虚拟化受硬件平台的局限越来越少,例如IRF已经不局限于横向的同类型设备的堆叠,还可以实现将不同拓扑连接,不同类型的物理设备虚拟化成单一的逻辑设备,从而适应更多不同的应用场景。
1:N的虚拟化是在一个物理网络设施上虚拟化多个相互隔离的网络,从而减少了物理设备数量,提高设备使用率。早期的VLAN、VRF等技术都可以认为是局部的1:N的虚拟化,发展到新一代网络操作系统,1:N的虚拟化更加彻底、完全,可以将整个软件系统分为多个实例,分别独立运行,相互隔离,最大限度的保证各个逻辑设备的独立性,以提高每个逻辑设备的可靠性及安全性。H3C将该技术定义为VD。
总之在新一代操作系统中,虚拟化技术已经是完善的可以灵活使用在不同场合的通用技术。每种虚拟化技术都能解决一类虚拟化需求,并且不同虚拟化技术还可以灵活组合使用。
http://www.h3c.com.cn/res/201112/21/20111221_1307746_01_736188_30008_0.GIF
新一代网络操作系统在通过Multicore等硬件提升性能的同时,也通过分布式计算进一步提高系统的性能。传统的网络操作系统对于分布式的支持仅仅是被动适应分布式的硬件环境,新一代网络操作系统则是主动利用分布式中多CPU的能力进行分布式计算,使得原来被闲置的CPU都参与到系统的运行,提高整个系统的处理能力和性能。例如过去分布式设备通常采用主备主控板方式,所有控制协议在主板上运行,与其有相同处理能力的备板却仅仅进行少量的备份处理,处理能力被闲置。而新一代网络操作系统可以将各种功能分布到不同的主控板进行运行,使得每个主控板都运行部分服务,同时又作为另外一些服务的备份,这样充分发挥了所有主控板的处理能力。
http://www.h3c.com.cn/res/201112/21/20111221_1307746_01_736188_30008_0.GIF
新一代网络操作系统的模块化技术可以使软件的各个部分做到故障隔离,保证了一个模块的异常不会影响系统其他部分的运行。模块的快速异常检测及恢复,也进一步提高了系统可用性。在软件升级方面,从依赖硬件的冗余备份保证升级业务不中断,发展到依赖软件技术在一些没有硬件冗余的场景也能做到升级时业务不中断。
除了系统自身的可靠性提升,在网络可靠性方面,过去的网络操作系统往往需要专门的硬件,以达到所需的性能要求。新一代网络操作系统模块化的设计可以直接利用多核及分布式计算提高性能,不再依赖专门的硬件,扩展了应用范围。同时抢先的调度也提高了故障检测的实时性。
http://www.h3c.com.cn/res/201112/21/20111221_1307746_01_736188_30008_0.GIF
新一代网络操作系统必须具备丰富的特性,以适应包括企业网及运营商网络等多种不同的应用场合的需求。这些特性包括传统IPv4、IPv6网络中的各种数据链路层协议、路由协议、MPLS协议、VPN、QoS、网络安全、以及语音等各种网络应用功能,还包括非IP的存储网络的FC(Fibre Channel 光纤通道)协议功能以及FCoE(Fibre Channel over Ethernet 以太网光纤通道)功能。此外重点新增了与云计算相关的各种新技术的支持,例如TRILL(Transparent Interconnection of Lots of Links 多链接半透明互联)、EVB(Edge Virtual Bridging 边缘虚拟桥接)、EVI(Ethernet Virtualization Interconnection 以太网虚拟化互联)等特性。
http://www.h3c.com.cn/res/201112/21/20111221_1307746_01_736188_30008_0.GIF
一直到第二代网络操作系统,在系统开放性上都没有太多发展。系统提供什么功能,就只能使用什么功能,差异化的需求很难得到满足。随着网络应用变得更加灵活,开放性的要求日益增强。针对这种需求,标准化组织也开始制定设备内部的软件/硬件接口标准,如IETF的ForCES等。随着网络操作系统普遍采用UNIX作为软件平台基础架构,开放式系统成为软件架构的主流。
新一代网络操作系统支持两种开放的方式,一种是提供脚本功能,用户可以编写脚本,完成一系列对系统的控制。脚本中可以进行命令行执行、MIB操作以及直接使用网络操作系统开放的编程接口更加灵活的实现个性化的功能。另一种方式是用户直接使用网络操作系统开放的编程接口进行应用软件的开发,开发的软件可以直接在系统上运行。这除了提高用户使用的灵活性外,也便于集成第三方软件,提高网络操作系统的附加价值。
三、 结束语
随着技术的发展及应用的深入,网络操作系统特性不断丰富、架构逐渐清晰。从专用的封闭的操作系统越来越向通用操作系统靠拢,成为开放的系统。同时,基于高可靠、高性能,未来的网络操作系统会向着更加灵活、智能的方向发展。
网络操作系统一直是只有专业技术人员才可以使用的专门技术,在系统维护和管理上,目前很多情况还需要由管理员参与,例如系统的设置、异常恢复等。智能化的控制,可以简化系统的使用,最终达到即插即用,零配置,自适应,自动恢复的效果。
除了网络操作系统自身的发展以外,在实现智能化方面未来还可以通过增加网络操作系统间协同工作的能力来解决。例如网络操作系统对设备外部单独的控制服务器开放接口,针对整个网络进行控制,这样运行在网络设备上的网络操作系统的控制平面将变得简单,通过开放接口,外部的控制服务器可以对网络进行编程,控制整个网络的行为。通过对网络的统一控制,简化网络部署。这方面已经有了一些有益的尝试,例如通过OpenFlow相关协议对网络中的各个设备进行控制,提高网络的可编程能力。另外针对特定功能的网络通用服务或云计算,可以将整个网络作为一个服务的提供者,而无需部署每个设备,这也是简化网络使用的方法之一。
附录:网络操作系统的版本发行方式
对于操作系统的版本发行,各厂商主要采用了两种不同的方式:单一版本和多版本方式。单一版本是指针对不同的网络设备采用单一的网络操作系统,多版本是指针对不同的网络设备发布多个不同的网络操作系统。对用户而言,单一的网络操作系统在使用上更加方便:一方面多个发布版本使得使用的复杂度增加,网络工程师们必须学习多种不同的操作系统的使用;另一方面,单一的版本由于功能的一致,还可以简化网络运营与管理。
正因为单一版本的优势,H3C的Comware在诞生之日起就采用了完全的单一版本发行方式,Juniper的JUNOS也是尽力按照单一版本方式发行,虽然版本间或多或少还是存在一些差异。而CISCO有IOS、IOS XE、IOS XR、NX-OS等多个发行版本,虽然也会在不同版本的界面风格上尽量保持一致,多少减少一些用户使用上的困难,但其功能实质性的差异,仅仅依靠形式上的相似,无法做到使用上的一致,还是会对用户的使用造成影响。
能否实现单一版本发布,是由网络操作系统的发展历史与开发模式决定的。传统网络操作系统的封闭性,决定了网络操作系统包含内容的广泛。这一点不同于一般的桌面操作系统或服务器操作系统,这些操作系统仅仅提供基本功能,由各种应用软件提供用户最终服务,只需要不断开发新的应用软件就可以满足用户不断变化的需求,而操作系统本身可以保持相对稳定。网络操作系统由于所有功能均在此系统内,不能用额外的应用程序扩展功能,因此每个版本均需要包含所有需要的应用功能服务。但是随着网络技术和用户需求的不断变化,网络操作系统需要涉及以前不曾涉及的各种新技术新领域,以及应用于更多的硬件平台。一个操作系统的历史越长,涉及的这种挑战就越多,因为其产生的初期不可能预计到这些变化。另外,涉及到厂商的并购行为时,收购的技术很难直接包容到原有网络操作系统中。即使是自行开发的功能,也可能出现原有的功能无法适应新的硬件平台的情况。这些问题使新的版本不得不偏离原有版本,多个发布版本由此产生。
理想的情况当然是单一的版本发行,这也是用户最欢迎的。这个要求对于一些没有历史包袱的、较新的网络操作系统具有一定的优势,但并不意味着做到这一点就很容易:首先单一的版本发布要求所有功能均应完全融入此版本中,因此厂商或者针对操作系统自行开发所有功能,或者要求操作系统有开放的接口可供其他软件运行。同时,网络操作系统的各种功能必须适应不同的硬件平台的差异。正因为这些技术实现上的难度,能够做到真正意义上的单一版本发行的网络操作系统比较少。