前言
近年来随着国际形势剧变,中国在多个关键技术领域都面临着被“卡脖子”的难题,“国产”这一话题也成为了强技术领域的核心议题之一,操作系统自然不例外。从采购现成产品到自研,再向蓬勃发展迈进,内部需求和外部环境的变化正在加速国内操作系统的进化升级。与此同时,不少国产操作系统都在打造开源根区,汇聚各方力量,以此提升国产操作系统的话语权和地位。
随着开源池子里的水越来越多,国家层面、公司战略层面对开源的重视程度越来越高,中国开源也逐渐迎来了发展的高光时刻。作为国内领先的DPU企业,大禹智芯同样借助于国内开源社区平台,推动与DPU相关的新型架构在标准化、兼容性等方面的高速发展。
在国产操作系统的技术发展和生态系统建设上,我们还有很长的路要走。那么,国内开源社区之路又将走向何处?
以下文章内容来自大禹智芯软件研发部负责人王伟在“新一代基础软件发展与国家数字经济安全研讨会”上的分享《中国服务器操作系统开源社区发展的思考》。
本文试图从企业级开发者的维度,从使用者和参与者的角度出发,结合自身DPU的运作环境以及开发过程中遇到的问题,分析当前操作系统的发展现状与需求,进而探讨国内开源操作系统社区的业务模式和生态发展。
众所周知,DPU是一种专门为网络数据处理而生的全新处理器类型,是继CPU、GPU以后的云计算第三引擎。其出现将推动计算架构从以算力为中心向以网络通讯为中心进行转变。而DPU作为底层基础设施组件,要完成这样技术架构的升级和革新,势必需要与上层的应用层进行衔接,同时涉及到庞大的生态协同和共建,所以开源操作系统也是DPU重点关注的一环。
一、DPU的系统结构与运行环境
在上图中,左图是传统服务器的结构,网络数据直接交由CPU处理,CPU在处理业务的同时,还需要处理繁重的通信、虚拟化任务,使得CPU的有效使用率大幅度下降。部署DPU以后,网络数据则将首先经由DPU,目前常见的DPU使用形态是通过PCIE接口与Host相连,在DPU上运行一个独立的操作系统,上面运行着用户以及厂商的应用软件,DPU会针对网络、存储、安全等领域对数据做一些预处理,让应用程序更专注于处理业务逻辑。
DPU是集芯片、硬件板卡、操作系统以及应用软件的一整套解决方案。从逻辑结构上看,DPU拥有与主机部分相同的逻辑处理单元,甚至拥有额外的加速单元,可以说,DPU就是一台部署在服务器内部的“服务器”。但DPU的集成度更高,数据处理会经过特殊调度与加速单元。DPU也可作为CPU的安全壁垒,保证CPU的数据和网络安全。
DPU可通过PCIE提供Ethernet和Storage相关功能,支持SRIOV、VirtIO、NVMe等标准驱动,用户通过合理的划分,将部分逻辑跑在DPU OS上,协同配合控制DPU做数据处理,因此DPU OS需要有和Host OS相同的软件兼容性,以此降低用户的开发成本。而且在DPU OS中,会存在一些与CPU OS通信的需求,因此这块也是DPU OS标准化的一个很重要的部分。
而对大禹智芯DPU来说,其应用场景可拓展至云计算、高性能组网、边缘计算等广泛领域。这里我将以云计算领域作为例子,通过虚拟化和裸金属这两个常见的应用场景,详述下DPU结构里数据的流动方向和处理过程。
左图为虚拟化场景,右图为裸金属场景
虚拟化场景中,在网络虚拟化方面,Host对虚拟机提供网络接口,Host会通过IOMMU做地址空间映射,让DPU可以直接访问虚拟机的物理地址,这样虚拟机的数据流就可以Bypass Host,直接与DPU交互,DPU在接到网络数据后会做一些网络虚拟化方面的处理,常见的处理软件是OVS。
在DPU中,OVS分为slowpath和fastpath,slowpath软件运行在DPU OS中,fastpath则运行在DPU的硬件逻辑中,两者相互配合从而高效地完成网络虚拟化处理。对于存储虚拟化侧,DPU给虚拟机提供virtio blk/Nvme存储接口,DPU在接到数据以后,会根据DPU OS运行的Initiator程序,选择如何与远端的存储集群通信。
而在裸金属场景DPU侧运行的软件与虚拟机无差别。
从例子中可以看到DPU OS侧会运行OVS、DPDK、SPDK和Ceph RBD等应用程序。
更广泛地来看,DPU侧会关联许多开源应用,比如云平台相关的OpenStack、K8s、安全相关的SNORT、OpenSSL、SURICATA等。而Host侧会有如KVM、QEMU等相关虚拟化软件,这里只是简单举了几个例子。实际上整个DPU的生态是相当复杂且庞大的,这些都需要依赖于OS来提供生态相关软件的运行环境。
二、企业级开发需要什么样的OS?
大禹智芯于2022年6月加入OpenCloudOS社区,并于同年8月份加入openEuler社区。在深度参与以及社区共建过程中,我们联合OS社区共同解决了一些我们在开发过程中遇到的问题,一类是兼容性的,一类是标准化的。
首先是不同发行版kernel多样化导致的驱动兼容性问题。因为内核不同版本间,一些接口结构有时候变动很大,在驱动上需要兼容不同的版本。
其次是基础库,有一些库在不同版本上也会存在接口结构兼容性问题,应用程序也需要提供不同版本库的兼容版本。除此之外,如之前提及,DPU会有与Host通信的需求,因为有应用无感知的期望,所以选择走网络是不合适的。如果选择走网络,则需配置IP地址,为此需要一个PCIE物理通道加上multichannel协议来满足要求,对上是一个统一的平台,如果对下不同硬件厂商是私有实现,那么对于平台来说兼容性就存在很大问题,并且用户应用起来也有适配问题,因此这里需要将接口标准化,各DPU厂商提供统一私有驱动来实现这个逻辑。
最后是云平台结构的标准化。在传统结构中,OpenStack的计算节点上一般会运行nova-compute及ovn-controller服务,nova-compute主要负责调用libvirt api来创建及销毁虚拟机,ovn-controller负责配置OVS流表,更新neutron端口状态。而在计算节点上使用DPU卡后,OVS、nova-compute及ovn-controller将运行在DPU内置的操作系统中。
当前我们接触较多的版本主要有redhat和Debian、centOS、fedora、ubuntu以及国内发展较好的openCloudOS、openEuler、openanolis等,在选择版本的时候我们的关注点一般会集中在兼容性、稳定性、安全性以及功能方面。
在兼容性上,则主要包括硬件兼容性和软件兼容性。硬件上国产设备与国内的操作系统兼容性最好,软件兼容性主要是接口兼容性。
稳定性则体现在系统稳定性和接口稳定性上。系统稳定性一般会在版本发布前被充分测试,软件组件在发布前也会被大规模验证过。而接口稳定性体现在同一个版本在升级软件时,不会出现软件接口变动,从而导致操作系统上跑的系统软件需要重新适配这个版本的操作系统。
在安全性上,比如0day的及时更新以及如最近出现的centOS转向centos stream,ubuntu对俄罗斯停止支持等事件,都面临着不同程度的安全性挑战。
在功能方面,要求则是满足行业需求。
在服务器操作系统方面,目前大家应用最多的当属centOS,因为centOS是在redhat发布以后的rebuild版本,相当于centOS的稳定性、兼容性、安全性以及功能都是和redhat企业版相当的,并且有独立社区支持,这对于生产环境来说,适用度较高。
但转向centOS Stream以后,情况有所转变。本来Fedora算是redhat的前置版本,redhat跑的软件都在Fedora上验证过,现在centOS Stream变成了前置版本,并且是滚动更新的,这对稳定性和兼容性都存在一些挑战。例如,可能会存在本来一次0day的安全更新导致了软件接口变动,那么跑在操作系统上的软件就需要重新适配。对于一个商用产品来讲,功能确定后,对于操作系统的功能性更新需求一般没那么大,所以对于企业级开发来讲还是更倾向于一个长期稳定的版本。
从另一个层面讲,服务器的CentOS系统停服也造成相应的市场缺口,国产操作系统厂商需承接CentOS生态延续与技术兜底带来需求,这也为国产操作系统带来了更大的潜在机遇。
三、对国产操作系统及开源社区的未来展望
从我个人来看,国产操作系统的发展前景广阔。首先,源是有保障的,源上提供的都是二进制程序,里面是有隐藏后门风险的,而国产操作系统都是国内的源,并且是国内社区维护的源,这个风险就没有了,并且所有代码都可经过一次安全扫描,再出对应的二进制包,代码中隐藏的一些问题,也不用那么担心。
另外一个就是国内源更新效率很好,并且社区由国内搭建和运营,沟通效率比国外社区更高。目前国内的几个社区产出的操作系统以及操作系统上的软件都是经过大规模生成环境验证的,因此可靠性高,同时也与国产化也有很好的兼容性。
国内操作系统的发展过程是源于国内ICT的高速发展,伴随着互联网行业掀起的热潮,这一过程中大量的软件人才聚集进入,深度参与并贡献了众多开源软件,也有催生很多自有的软件开源。国内不少厂商由于自身场景的高复杂度,也都有自己维护的一个内部操作系统版本,随着开源文化的逐步普及,各厂商也开始选择把自维护的操作系统贡献出来,由此形成了国内几大开源操作系统社区。
目前,一些国内能力很强的社区发展非常迅速,这说明国内开源环境和开发能力都是不错的,但也带来了一些问题。比如社区多样化导致的兼容性挑战,从一个硬件厂商的视角来看,对于不同根社区,不同的kernel版本,意味着硬件驱动需要兼容这些不同的内核版本,应用程序也存在不同的库版本的适配问题。另外,各操作系统有大多软件都是重叠的,每个社区单独维护,这样可能会产生一些重复的工作,造成了开发者力量的浪费。
这里我们简单梳理一下操作系统社区的结构。首先,OS根社区会根据社区的版本理念统筹规划OS的发展路线,然后硬件厂商通过将驱动以及驱动依赖的框架feautre提交给社区,以此达到硬件兼容操作系统的目的。之后各个厂商根据自己的需求,会从根社区里选择版本,然后构建自己的验证版本,并持续将一些feature和bugfix回馈给社区。开发者会根据操作系统路线,到开源社区中选择软件版本,并选择一些feature做backport,同时开发者也在不断维护选择的软件分支,并做bugfix。因此社区的开发者会涵盖很多领域。
对于一个理想化的社区环境来讲,我们期望的是各社区支持的行业是不重叠的,维护理念是不重叠的。在维护理念方面,需要就注重功能最新和注重稳定性之间权衡。一般来说,实验室版本注重功能最新,以满足其研究需求;生产版本一般注重稳定性好,以满足生产环境。对社区进行清晰划分可以让开发者力量充分应用到各个组件上,让某一个项目有更多的人在参与,并能够保证做着不重叠的工作。另外,社区需要有一个良性、可持续发展的商业模式,不需要借助外力就能自给自足,这样才能保证社区版可靠、稳定的质量。
依托于庞大的用源社区,对于一些必要的开源项目,也可以建立一个国内分支,满足国内需求,并反馈到upstream。当然也可以根据国内的硬件现状,开发一些个性化的内容,来统一硬件接口,以此激励中国ICT行业的创新。
总结
应当看到,虽然国外操作系统仍然占据市场主要地位,但国产操作系统也在开源开放的生态环境中迅速崛起。开放开源的核心是软件根技术创新,需要联合开发者、社区、软硬件上下游产业链企业来,共同构建多元生态。而作为生态中的一员,大禹智芯也在为推动打造共建共享、开放共赢的社区环境贡献力量,助力操作系统自主生态加速推进。我们也期待着国内操作系统产业实现跨越式发展,迎来真正的高速发展。
关于大禹智芯
大禹智芯一家专注于提供DPU产品设计、研发与服务的国家高新科技企业,目前已获得“专精特新”中小企业认证,是北京市中关村高新技术企业。
大禹智芯通过现有和自主研发的先进制程芯片,自研高性能IaaS组件和针对特定协议的加速能力,提供包括芯片、硬件产品、系统软件、应用集成等一整套围绕DPU/智能网卡的软硬件产品及服务,致力于打造新一代的云计算引擎,助力用户构建领先的
公司愿景是“以大禹之道释放高速网络的应用潜力,让企业有选择地享受技术红利,助力企业又好又快地搭建领先的IT基础设施”。
标签:DPU,操作系统,社区,开源,版本,OS From: https://blog.51cto.com/u_15948243/6147276