Comware是H3C自主研发的一款应用于网络设备的网络操作系统,包含了丰富的网络功能,支持从SOHO到数据中心、从企业级到运营商级的全系列网络设备。Comware不仅打破了跨国公司和开源社区的垄断,而且带动了国家基础网络的快速发展,具有广阔的应用前景和重要的战略意义。
Comware的发展主要有两个方面:
•功能的不断丰富:针对网络技术的发展以及设备应用场合的变化,增加新的功能,以适应不断变化的用户需求。
•体系结构的不断完善:优化系统,使其更加简洁、通用及开放,以适应不同类型设备的要求以及网络设备的发展。
上一代的Comware V7版本,在模块化、分布式计算、虚拟化等方面表现出色。经过不断的扩展,Comware V7版本已经成为一个超过2千万行代码、3万条命令的超大系统。但是,随着网络技术的不断演进,Comware V7在系统架构上也表现出一些不足,如开放性差,不支持容器;主要的转发功能都是在Linux内核态实现,无法利用业界先进经验;对内核强依赖,导致内核版本升级困难。
在Comware V7的基础上,Comware V9针对开放性、容器化、可编程性、可视化等需求,在体系架构上进行升级和调整,以更好地适应当前网络操作系统的发展趋势。
Comware V9具有如下优势:
•采用原生Linux内核,Comware V9的功能完全在用户态实现,方便升级内核版本。
•支持容器化,支持以容器的形式发布Comware,同时支持在运行Comware V9的设备上部署容器运行第三方应用,提升Comware的开放性。
•深化模块化设计思路,使得业务间相互独立,可以独立部署,或采用独立软件的形式发布Comware的某一个软件功能。
•架构上充分考虑虚拟化形态产品的需求,实现轻量化的支撑架构,使得虚拟化形态产品的部署更加灵活快捷。
•对于不间断业务升级(ISSU),Comware V9增加了对于单机ISSU的支持,解决单机情况下的升级问题。
Comware V9总体架构
Comware V9的总体架构如图1所示,它由如下四个平面组成:
•基础设施平面
在操作系统的基础上提供业务运行的软件基础,包括操作系统基础服务和业务支撑功能。基础服务功能是与业务无关的各种软件功能,包括Linux操作系统的各种基本功能、C语言库函数、数据结构操作、标准算法等。业务支撑系统是整个系统业务运行的基础,为Comware各业务提供软件和基础设施,后面提到的各种系统架构中涉及的基础功能均在这部分提供。
•数据平面
提供数据报文转发功能,包括本地报文的收发,即IPv4/IPv6协议栈、socket、基于各层转发表的数据转发功能等。Comware V9的数据平面,支持基于DPDK(Data Plane Development Kit,数据平面开发套件)的转发模型。
•控制平面
运行路由、MPLS、链路层、安全等各种路由、信令和控制协议,生成各种转发表项以控制数据平面的转发行为。Comware V9的控制平面主要可以分为Layer2、Layer3、DC、MPLS等几类业务。
•管理平面
对外提供设备的管理接口,如CLI、Telnet、SSH、SNMP、HTTP、Netconf、Restful和gRPC等。通过管理平面,实现人机交互,对Comware V9进行设置、监控、管理。
图1 Comware V9体系结构
Comware V9的模块化
Comware V9在模块化设计上做了增强。Comware V7版本虽然也实现了模块化,各个网络服务功能独立运行在各自的进程,但是对于支撑系统强依赖,无法独立发布。Comware V9在原有基础上,将支撑系统轻量化。实现业务之间完全独立,并且可以独立发布。
Comware V9的模块化具有如下特点:
•粒度模块化:实现独立模块的软件故障封闭和故障修复,增强系统的稳定性。
•模块间解耦:通过数据库+消息机制,减少模块间强依赖,实现各模块之间松耦合。
•支撑系统轻量化:通过将支撑系统轻量化,最终实现可以独立发布的轻量化的网络功能。
•业务独立部署:业务间相互独立,可以通过容器实现业务独立部署。
容器化架构
如图2所示,Comware V9采用了容器化架构,为Comware以及第三方应用提供独立的运行环境:
•Comware的基本功能运行在Comwre容器中。
•Comware本身支持基于容器发布,以容器镜像形式发布虚拟化产品,通过业界广泛使用的K8S等管理工具进行管理。
•可以通过独立的容器运行Comware的基本功能,并通过增加容器来运行扩展功能。
•在Comware V9设备上,支持通过容器部署第三方软件。
图2 Comware V9容器化结构
云网融合架构
Comware V9通过数据库+集群的软件架构,提供基于网络功能的轻量化NFV(Network Function Virtualisation,网络功能虚拟化)软件,部署更加灵活、快捷,并可成倍提高部署效率、扩大部署规模,以满足云网融合的需求。
图3 Comware V9云网融合示意图
可编程架构
现代网络规模日益庞大,管理员希望网络管理工具拥有更高效的网络部署能力、反应快速的运维和调度手段。网络设备的可编程性可以满足上述需求。
Comware V9运行在原生的Linux系统上,使用不做任何修改的内核,为第三方软件提供标准的Linux运行环境,可以无缝运行第三方软件。
另外,Comware V9的可编程框架提供了丰富的配置手段(如服务于SDN架构的NETCONF和RESTful接口、广泛应用于Telemetry技术的gRPC软件框架),可以适配各种自动化配置模型,提升网络部署效率;并提供对外发布的编程环境和接口,第三方软件可以利用编程接口开发独有功能。
Telemetry与可视化
网络运维的过程中,需要实时收集网络设备的运行状态、流量统计、告警信息等数据,对网络进行实时监控,以便及时发现和排除网络故障。传统的手段是用网管软件通过SNMP获取设备的信息。这种手段无法解决目前的网络监控需要解决“看不见”的问题,如快速定位哪台网络设备的哪个端口丢包、实时监控每台网络设备buffer的使用情况、端到端延时定位到具体链路等。
Network Telemetry(网络遥测)技术通过在网络设备上实现主动推送数据的能力,解决了SNMP时效性差、CPU消耗高等问题。
Comware V9支持如下几种Telemetry实现方式:
•基于gRPC(Google Remote Procedure Call,Google远程过程调用)/GNMI(gRPC Network Management Interface,gRPC网络管理接口)的Telemetry
•基于INT(In-band Telemetry,带内遥测)的Telemetry
•基于ERSPAN(Encapsulated Remote Switch Port Analyzer,封装远程端口镜像)的Telemetry
Telemetry通过gRPC、INT或ERSPAN将网络设备上的数据主动推送给网管或监控软件。基于网络中各个设备推送的数据,整个网络对网管或监控软件“可见”,实现网络的可视化,为网络维护、突发流量处理、流量调度等提供支持。
目前,应用最为广泛的是基于gRPC/gNMI的Telemetry。它是一种模型驱动(model-based)的Telemetry技术,提供protobuf定义文件。第三方软件可以直接使用gRPC/gNMI与Comware通信,也可以使用基于gRPC封装的H3C SDK接口与Comware通信。gRPC支持Dial-in和Dial-out两种模式,可以实时将订阅的数据从设备主动推送给网管或监控软件。
图4 基于gRPC/gNMI的Telemetry
虚拟化
对于系统虚拟化有两种方式:一种是将多个物理设备虚拟为一个逻辑设备,称为N:1的虚拟化;另一种是将一个物理设备虚拟为多个逻辑设备,称为1:N的虚拟化。
Comware V9支持通过DRNI(Distributed Resilient Network Interconnect,分布式弹性网络互连)实现N:1的虚拟化,通过MDC实现1:N的虚拟化,并且支持两种虚拟化的混合使用。
单机ISSU
对于集中式设备,以及分布式设备的单主控场景,无法通过主备依次升级来实现ISSU,可以采用单机ISSU的形式来升级。
单机ISSU是通过双容器来实现不间断服务的版本升级。如图14所示,老版本在容器C1中运行,升级版本时,先创建容器C2运行新版本的Comware。两个容器中的Comware以主备身份存在,其中C1中的老版本Comware为主节点,C2中的新版本Comware为备节点。主备节点通过HA备份数据,主节点将必要的运行数据写入共享数据库。数据备份与保存完成后,关闭C1,触发主备倒换,C2中的Comware完成备升主的操作,C2中的新版本Comware通过共享数据库恢复数据,最终实现了版本升级。
而在此过程中,由于整个操作系统并未重启,底层芯片的转发依然在正常进行。而对于协议报文的处理,只是在两个Comware主备倒换的瞬间受到影响。配合协议模块的NSR,可以保证协议不断链、不产生路由震荡等不良影响。
图5 Comware V9单机ISSU过程
综述
作为Comware系列网络操作系统的最新一代版本,Comware V9在继承了Comware系统原有特点(功能丰富、性能高、单一系统可以支持多种硬件结构设备等)的基础上,针对行业发展对网络操作系统的新要求,扩展了开放性、容器化、可编程架构等功能,可以更好地支持各种新业务场景和用户需求。