本文根据DPDK董事会董事和FD.io技术指导委员会成员George Zhao先生在2020网络数据平面峰会上的演讲《开源网络数据平面生态》整理而成。
George Zhao,目前任职华为在美国的研发公司 Futurewei Technologies,主要从事网络开源与生态发展。曾经担任过 OpenDaylight 董事,技术指导委员会成员,社区经理和版本经理,目前是DPDK 董事会董事 和FD.io 技术指导委员会成员。
开源软件正在吞食整个世界
2011年,Mosaic的创始人马克·安德森说过这么一句话:简而言之,软件正在吞食整个世界;2013年,麦克·斯考克对这句话进行了扩展:开源软件正在吞食整个世界;2014年,Linux 基金会执行总裁Jim Zemlin表达了同样的观点。
开源在整个软件中的地位正变得越来越重要
2012年,多个设备厂商共同组织了ODL SDN开源项目,把网络的开源推上了一个新的台阶。在此之前,开源大多是个人主导的,主要是一些软件工具、简单的软件等等,以个人兴趣维护为主。从ODL 开始,公司和企业开始进入网络开源领域。2014年之后,OPNFV等网络开源项目全面开花,各个方向各个领域各种技术都可以在开源领域中找到它相对应的开源项目。
LFN - Linux基金会网络开源伞项目
下图展示了LFN的开源伞项目,主要包括以下8个子项目。
FD.io全称是Fast data-Input/Output,它是基于VPP数据面快速软转发的一个开源项目。
ONAP是AT&T、中国移动与华为共同推出的项目,是一个开源网络自动化平台,从模块到代码量都是比较庞大的,是LFN的旗舰项目。ONAP在网络层面属于网络管理和分析,同时也涉及包括SDN控制器在内的许多网络的功能。
ODL因采用了模型驱动创新而十分出名。在ODL推出的一两年后,开源网络的SDN控制器一度领先于当时商业的SDN控制器。目前很多厂商的SDN控制器也都借鉴了ODL的设计理念。
Open Switch是LFN中最后一个加入的项目,而且也是相对比较小众的一个项目,不少人可能很容易将其跟Open vSwitch搞混。我们可以把Open Switch理解成一个白盒基础上的Network OS,是由Dell、HP、Broadcom等公司支持的网络开源项目。
PNDA和SNAS.io是工具型的开源项目,主要是由思科贡献的。
PNDA集成了多个开源项目,例如kafka,Spark等,经过整合测试,PNDA提供了一个大数据分析平台框架,在网络开发应用时无需自己一个个去测试这些数据平台和开源项目,可以直接利用PNDA。它还提供了很多对外的接口,包括SDN控制器、分析器等,用户可以直接对接PNDA来实现自己的目的,不需要再为非功能项目的整合测试浪费精力跟时间。
SNAS.io是一个流网络分析系统,收集跟踪存取多条实时路由对象,也是一个比较小型的工具。
Tungsten fabric是Juniper主导的SDN控制器项目,原名是OpenContrail,是当时三个主要的开源SDN控制器之一。为了加入LFN,Juniper针对OpenContrail做了很多改进,最终通过了LFN的听证。
下面介绍一下其他几个开源项目,他们不属于LFN开源伞项目。
DRNOS和DENT都是网络操作系统,DRNOS是AT&T贡献的,主要是在白盒上的一个分离网络的操作系统,DENT是基于Linux内核打造的一个新的网络操作系统,主要是简化现有的抽象层、API和驱动程序等等。DPDK、IO Visor、OvS都是跟数据面比较强相关的,后面会详细介绍。
ONF基金会下的网络开源项目
- Stratum主要是用于软件定义网络,它是利用独立于silicon交换机的一个操作系统,为白盒交换机构建一个开放的、最低限度的商用发布。Stratum开放了一组SDN接口,包括P4Runtime和OpenConfig,实现了转发设备的可互换性和转发行为的可编程性
- Trellis主要是用于spine- leaf叶脊的网络架构,支持分布式访问网络、NFV和边缘云应用程序。
- NG-SDN(下一代SDN)主要是采用白盒的硬件和开源软件,提供一个不依靠于硬件、可编程、零接触、可验证的网络解决方案。
- P4是一个通用抽象的数据面编程语言,独立于芯片。
- ODTN是一个使用白盒的光传输解决方案。
- ONOS是针对运营商的一个开放SDN控制器,是原本三大SDN控制器之一。
最火热的开源社区和生态:OpenStack(曾经) vs CNCF KubeCon(现在)
时间倒退到5-10年前,OpenStack无疑是当时最火热的开源社区和生态。OpenStack是一个开源的云计算管理平台项目,主要针对计算、存储和网络三个方面。OpenStack是开源领域起步比较早一个项目,像ODL、OPNFV等开源项目当年都是在OpenStack峰会上发布的,可见OpenStack当年的火热程度。
最近三年,OpenStack的火热程度已经完全被CNCF KubeCon取代了。KubeCon当年曾经希望成为OpenStack中的一个子项目,但目前它的发展速度远远超过了OpenStack本身的速度。
数据面开源项目
下图展示了Linux Foundation的开源项目,包括应用层、网络管理分析层、网络控制层、网络操作系统层以及数据面,George Zhao主要跟大家分享了数据面开源项目FD.io、OvS、IO Visor、DPDK、OCI和ODP。
网络开源项目在整个网络领域的地位举足轻重。对应OSI 7层模型,开源在每一层都有涉足,在引领创新、达成共识和生态建设方面都起着非常重要的作用。
DPDK
首先介绍一下DPDK,虽然DPDK加入Linux Foundation只有三年的时间,但早在10年前它就已经创立了。DPDK是一个应用广泛,且相对比较成熟的开源项目,也是大家比较熟知的一个开源项目。
DPDK是Linux 基金会下托管的开源项目,主要是为了加快网络IO,DPDK能够避免网络数据包在用户空间进行内存复制所带来的损耗,数据包可以得到快速的处理。DPDK使得标准内核网络的堆栈得到扩展,对有高吞吐量和低时延要求的网络性能的提升至关重要。许多流行的 Linux发行版都把DPDK的支持作为其标准包装的一部分。由于ARM放弃ODP转而支持DPDK,目前DPDK在硬件抽象层领域一统江湖。
FD.io
在最初成立的时候,DPDK是FD.io的一个子项目,这两个项目存在着大量的共同因素以及互补元素。FD.io实际上利用了DPDK,通过DPDK跟网卡以及下层的硬件沟通。
VPP矢量数据包处理库,是FD.io中的核心项目之一。VPP的核心部分是从成熟的商业产品中剥离出来的,充分利用通用处理器的优化技术,用矢量指令批处理数据包,通过这种技术能快速实现数据包和报文的高性能处理。
NSM
NSM(Network Service Mesh,网络服务网格)主要使用了云原生的设计概念作为连接微服务的通讯基础架构。服务网格在安全、控制面数据面分离、基础设施和应用解耦等方面拥有许多优势。
NSM网络服务网格实际上是效仿了服务网格istio的做法,根据云原生的设计方法——微服务、容器化,利用kubernetes作为调控器orchestrator,控制应用的生命周期等等。它实际上就是把数据面的网络服务用云原生的方式包装了一下,然后呈现给云原生网络应用,这是一个非常创新的方法。目前,NSM还处于初期阶段,有一些测试用例。
IOVisor
如果对比IOVisor跟FD.io,我们可以发现它们是在同一个层面,实际上他们所做的也是很类似的事情。最大的区别在于IOVisor使用的是 Linux的内核态,FD.io主要使用的是用户态。
IOVisor和FD.io都是在做堆栈技术,IOVisor主要利用的是XDP跟ePBF技术,XDP就是内核数据包的处理框架,通过对内核传入的数据包的运行优化,达到提高性能的目的。ePBF是在BPF的基础上进一步改进的,通过LLVM将用户的编程编译为ePBF指令,然后加载到内核中运行。IOVisor相对于其他开源数据面在生态方面发展有些缓慢。
OvS
是运行在虚拟化平台上的一个虚拟交换机。单纯的OvS并不是一个完整的数据面,它是原生支持Open Flow的,其本身实际上支持多个数据面。OvS在实际应用上比较多,是大家比较熟悉的一个开源项目,跟DPDK也有很多紧密的联系。
OCI
和OvS有点类似,OCI同样跟数据面是强相关的,但它本身并不是一个完整的数据面开源项目,它只是针对操作系统级别的Linux容器的开放标准的一个设计。
ODP
项目到后期主要成员都加入了DPDK,因此后续缺少了一些推动力,尽管其目前依旧是存在的,但是生态基本上消失了,失去了发展的动力。
聚焦网络开源技术,SDNLAB联合网络领域开源先锋力量、行业技术翘楚共同发起首届中国网络开源技术生态峰会,邀请国内外开源组织、行业专家、技术大咖、企业领袖齐聚,围绕网络数据平面、网络操作系统、云网边端协同等热门议题展开多层次对话交流,推动领域内企业、组织间的紧密广泛合作, 促进网络开源技术蓬勃发展,共襄中国网络开源技术生态盛宴,以期让信息技术更好地支撑和引领经济社会的创新发展。
【转载须知】
若转载文章为原创文章,可在相应文章下或公众号后台留言;其他非转载类文章须在文首以不小于14号字体标明转载自SDNLAB。