12

George Zhao:开源网络数据平面生态

 3 years ago
source link: https://www.sdnlab.com/24261.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者简介:George Zhao,目前任职华为在美国的研发公司 Futurewei Technologies,主要从事网络开源与生态发展。曾经担任过 OpenDaylight 董事,技术指导委员会成员,社区经理和版本经理,目前是DPDK 董事会董事 和FD.io 技术指导委员会成员。

在2020网络数据平面峰会上,DPDK董事会董事和FD.io技术指导委员会成员George Zhao给大家分享了主题演讲《开源网络数据平面生态》。

开源软件正在吞食整个世界

2011年,Mosaic的创始人‍‍马克·安德森说过这么一句话:简而言之,软件正在吞食整个世界;2013年,‍‍麦克·斯考克对这句话进行了扩展:开源软件正在吞食整个世界;2014年,Linux 基金会执行总裁Jim Zemlin表达了同样的观点。

George Zhao表示,‍‍开源在整个软件中的地位正变得越来越重要。‍‍

2012年,多个设备厂商共同组织了ODL SDN开源项目,‍‍把网络的开源推上了一个新的台阶。‍在此之前,开源大多是个人主导的,主要是一些软件工具、简单的软件等等,‍‍以个人兴趣维护为主。‍‍从ODL 开始,公司和企业开始进入网络开源领域。2014年之后,OPNFV等网络开源项目‍‍‍‍全面开花,各个方向各个领域‍‍各种技术都可以在开源领域中找到它相对应的开源项目。‍‍‍‍

LFN - Linux基金会网络开源伞项目

下面看一下LFN的开源伞项目,主要包括下图列出的8个子项目。‍‍‍‍

DPDK-1.jpg

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等公司支持的网络开源项目。

DPDK-2.jpg

PNDA和SNAS.io是工具型的开源项目,主要是由思科贡献的。

PNDA集成了多个开源项目,例如kafka,Spark‍‍等,经过整合测试,PNDA提供了一个大数据分析平台框架,‍‍在网络开发应用时无需自己一个个去测试这些‍‍数据平台和开源项目,可以直接利用PNDA。它还提供了很多对外的接口,包括‍‍SDN控制器、分析器等,用户可以直接对接PNDA‍‍来实现自己的目的,不需要再为非功能项目的整合测试‍‍浪费精力跟时间。

DPDK-3.jpg

SNAS.io是一个流网络分析系统,‍‍收集跟踪存取多条实时路由对象,也是一个比较小型的工具。

DPDK-4.jpg

Tungsten fabric是‍‍Juniper主导的SDN控制器项目,原名是Open Control,‍‍是当时三个主要的开源SDN控制器之一。为了加入LFN,Juniper针对Open Control做了很多改进,最终通过了LFN的听证。

下面介绍一下其他几个开源项目,他们不属于LFN开源伞项目。

DPDK-5.jpg

DRNOS和DENT都是网络操作系统,DRNOS是AT&T贡献的,主要是在白盒上的一个分离网络的操作系统,DENT是基于Linux内核打造的一个新的网络操作系统,主要是简化现有的抽象层、API和驱动程序等等。‍‍DPDK、IO Visor、OvS都是跟数据面比较强相关的,后面会详细介绍。

ONF基金会下的网络开源项目

Stratum主要是用于软件定义网络,‍‍它是利用独立于silicon交换机的一个操作系统,‍‍为白盒交换机构建一个开放的‍‍、最低限度的商用发布。Stratum开放了一组SDN接口,包括P4Runtime和OpenConfig,实现了转发设备的可互换性和转发行为的可编程性。

DPDK-6.jpg

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。

DPDK-7.jpg

网络开源项目在整个网络领域的地位举足轻重。‍‍对应OSI 7层模型,开源在每一层都有涉足,在引领创新、达成共识和生态建设方面都起着非常重要的作用。‍‍

DPDK

首先介绍一下DPDK,虽然DPDK加入Linux Foundation只有三年的时间,‍‍但早在10年前它就已经创立了。DPDK‍‍是一个应用广泛,且相对比较成熟的开源项目,也是‍‍大家比较熟知的一个开源项目。

DPDK-8.jpg

‍‍DPDK是Linux 基金会下托管的开源项目,主要是为了加快网络IO,DPDK能够避免网络数据包在用户空间进行‍‍内存复制所带来的损耗,数据包可以得到快速的处理。‍‍DPDK使得标准内核网络的堆栈得到扩展,‍‍对有高吞吐量和低时延要求的网络性能的提升至关重要。‍‍许多流行的 Linux发行版都把DPDK的支持作为其标准包装的一部分。由于ARM放弃ODP转而支持DPDK,‍‍目前DPDK在硬件‍‍抽象层领域一统江湖。‍‍

FD.io

在最初成立的时候,DPDK是FD.io的一个子项目,‍‍这两个项目存在着大量的共同因素以及互补元素。‍‍FD.io实际上利用了DPDK,‍‍通过DPDK跟网卡以及下层的硬件沟通。‍‍

DPDK-9.jpg

VPP矢量数据包处理库,是FD.io中的核心项目之一。VPP的核心部分是从成熟的商业产品中剥离出来的,‍‍充分利用通用处理器的优化技术,用矢量指令‍‍批处理数据包,通过这种技术能快速实现数据包和报文的高性能处理。‍‍‍‍

NSM

NSM(Network Service Mesh,网络服务网格)‍‍主要使用了云原生的设计概念‍‍作为连接微服务的通讯基础架构。服务网格在安全、控制面数据面分离、基础设施和应用解耦等方面拥有许多优势。

DPDK-10.jpg

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相对于‍‍其他开源数据面在生态方面发展有些缓慢。

DPDK-11.jpg

OvS是运行在虚拟化平台上的一个‍‍虚拟交换机。‍‍‍‍单纯的OvS并不是一个完整的数据面,它是原生支持Open Flow的,其本身实际上支持多个数据面。‍‍OvS在实际应用上比较多,是大家比较熟悉的一个‍‍开源项目,跟DPDK也有很多紧密的联系。

OCI和OvS有点类似,OCI同样跟数据面是强相关的,但它本身并不是一个完整的数据面开源项目,‍‍它只是针对操作系统级别的Linux容器‍‍的开放标准的一个设计。‍‍

ODP项目到后期主要成员都加入了DPDK,因此后续缺少了一些推动力,尽管其目前依旧是存在的,但是生态基本上消失了,失去了发展的动力。

在本次分享中,George Zhao主要介绍了开源网络数据平面生态,其中很多网络开源项目都是在Linux基金会托管的,Linux基金会在网络开源项目中起到了非常重要的作用,感兴趣的朋友可以登录开源项目官网查看更多内容。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK