陈志华:Netronome智能网卡与P4编程

非常感谢主办方给我提供这么好的平台跟大家分享Netronome的产品以及Netronome在P4上做的工作。非常感谢大家的参与。

有部分人对Netronome不是太熟悉,Netronome是一家芯片公司,成立于2003年,有自己的网络流处理器,网络流处理器源于intel NFP处理器。从3000系列开始,我们就已经注意到不管是ITN,还是CTN领域,已经慢慢的从简单的包处理过渡到流处理。从3000系列和芯片开始,我们引入了新的技术,带宽、处理器核数对IXP的网络处理器进行了升级,从流方面引入新的技术,满足目前数据面对流处理的要求。

除了面向传统的数据安全领域,以及CT领域的数据通信,Netronome也预见到数据中心,特别是像高性能的云、NSDN的快速发展,我们基于4000系列的芯片推出了一系列的智能网卡和配套软件,以满足于对高性能的云计算数据中心、NSDN的加速。

除了提供商业化的软件以外,我们也会提供一套基于芯片的SDK开发环境。

这里是4000和6000系列芯片的大致框架,底层是支持PCLe接口。中间层可以实现高速互联。最上层是开发者看到的各种资源,包括左侧的72个CPU,可以支持576个硬接线程在CPU内运行,提供高并发的大带宽处理能力。

右侧是内存系统和各种各样的硬件处理器,包括针对网络流处理的,做分类、CAM查找、原子操作、队列操作、流库、队列管理。通过硬件加速引擎,辅助72个CPU,实现各种各样快速的数据链处理。

基于4000系列芯片推出了针对数据中心和云计算网络的智能网卡。主要目的是提供网络业务的卸载。智能网卡就是一个CPU小系统,上面有4000系列的CPU和内存,完全是可编程的计算平台。可以使用C语言或者是P4语言,实现比较快速的开发。

为了帮助客户把产品推向市场,我们也提供了一系列的商业化软件,通过这些软件配合智能网卡的使用,可以显著地提高服务器的性能,可以显著降低数据中心的成本。从编程的角度来讲,它是软件。从使用的角度来讲,它是网卡,完全可以通过软件编程实现新的业务特性,又可以以智能网卡的形式为整个计算节点和整个网络提供非常高的性能,用软件的方式实现硬件的快速发展。

OS技术采用的是智能卸载模式,不会对网络架构产生影响,支持openstek的管理。客户也可以通过SDK用P4语言编写自己的数据链,实现新的网络特性。

这是Netronome在云数据中心的价值。我们认为云数据中心可以抽象成三个层次。第一个层次是管理软件,运行在最上层,对云计算中心的资源进行管理、调控。中间一层是业务逻辑,用来管理数据流量,生成业务逻辑。最下一层是对交换面的抽象,包括目前比较流行的OVS、Linux Firewall。在真正意义上的可编程的交换芯片出现之前,传统云计算中心的交换网络没有办法满足云计算中心的业务发展需求。

打个比方,需要实现新的overlay网络,需要加一些新的头部信息,比如支持100万条隧道,这对传统的交换芯片而言是一个巨大的挑战。这也导致一个趋势,我刚刚提到这些功能的实现已经向数据中心的边缘推移。简单来讲就是向服务器推移,把很大一部分网络功能转移到服务器上。

这带来的问题就是数据中心的服务器要提供虚拟化,给用户提供计算资源。同时,又要承担很重的网络负担,影响它的处理性能,特别是隧道的支持等等方面。引入智能网卡的主要目的就是将计算节点上的网络负载从原来的X86卸载到智能网卡上,让X86专注的提供虚拟化的计算平台。一方面可以极大的提升整个服务器的处理带宽。同时,可以释放CPU资源,运行更多的虚拟机,给最终用户提供更好的虚拟化平台。

这是对OVS技术的简单描写。在计算节点上插入智能网卡,通过透明卸载的模式,将原本运行于X86上的OVS的数据链放在网卡上运行,再通过SR-IOV的模式跟虚拟机打交道,将流量送给需体积。在这种流量下可以保持跟原有的控制面和管理面的结合不变,对软件架构不会造成影响,同样支持控制机控制和openstek的管理,提供高带宽、高性能,节省网络处理方面的CPU资源,运行更多的虚拟机,提供更好的虚拟化服务。

有些数据中心有自己的专有设备,拥有自己的数据链转化逻辑。传统的做法,要么是基于X86,自己写软件;要么是基于FPGA,或者是类似于NPO多核的系统。采用的是一些专有的语言,即使采用的是C语言,也面临着一系列的库文件,写出来的代码是不可移植的,更换平台就得重新写一套。

我们现在可以提供集成的开发环境,通过C语言和P4语言的方式实现完全可移植、可重用的开发。

P4语言主要实现数据链,也可以给客户提供一个选项,支持C的混合编程,弥补P4在某些方面的不足,基于流的处理、基于状态的处理,或者是更为复杂的业务处理,可以用C语言这样更复杂的语言来描述它。

P4 SDK在哪些方面帮助云服务供应商,实现它的价值,包括产品化、可刻转、投资保护和处理能力方面。我们的SDK集成了很多资源,用P4可以显著地减少代码开发量。实际上就是一个计算系统,非常的灵活,也可以拓展,可以结合C语言实现更复杂的业务处理。基本上是采用P4语言定义数据链,在可移植性和重用方面给用户带来极大的便利。因为我们的是网络流处理器,在细力度的流处理上有很大的优势。这也是为什么叫流处理器的原因。用智能网卡技术,可以对细密度的流和大流量的流表进行管理和处理,同时具有更高的处理性能。我们可以为数据中心管理者提供细密度的流管理,可以实现更细密度的业务流的区分,从而带来更好的价值。

用SDK支持P4和C的编译抽象示意图。可以编写P4代码,用P4的前端编译器做编译。通过它的前端编译器编译以后,会有一个后端编译器,将它生成的中间文件编译成可以在Netronome的网络处理器上运行的部件。在编译成部件的同时,也可以结合C语言编写的复杂业务,把它们链接在一起,运行在智能网卡上。同时,可以支持运行期的CPI接口,加快流转化规则,定义数据链。

这里显示了SDK的特性,它是完全可视化的开发环境。同时,集成了调试环境。可以通过仿真的形式来实现,可以导入流量,软件可以仿真性能,可以单步调试、跟踪。同时,它也支持硬件联调,可以直接连到实际运行的硬件上,可以做单步、跟踪、性能分析。

可以提供一套工具,对数据落流程进行抽象,我们可以一目了然地看到数据链的工作逻辑。通过哪个表转到哪个表、做了哪些匹配,可以在SDK的界面上一目了然,可以直接观察到数据链是怎么工作的。

为了更好地帮助P4开发者,Netronome专门创立了一个网站“Open-NFP”,可以帮助开发者在网络上注册P4项目,可以在实验室里分配对应的资源。目前不仅可以用软件仿真的方式调试P4项目,我们可以提供真正的P4硬件运行环境,让你实验、验证、测试P4项目。这个网站上已经有超过25家大学、研究院、公司的P4项目。同时,我们也提供了很多Netronome公司维护的P4项目,用P4怎么实现自定义的隧道、自定义的解析;怎么让P4在SDK上跑起来,怎么在硬件上运行去做调试。上面有很多资料,欢迎大家访问。

Open NFP实验室包括两个部分。一个是基于云端的虚拟的IP开发环境,提供一套虚拟机,上面预装好ID的开发环境。P4项目在网站上注册以后,我们可以提供资源。你可以通过远端登录云开发环境,可以编写代码、软件仿真,可以通过隧道联到我们位于加州总部的实验室,会有一系列的网卡服务器,通过ID开发环境,可以把P4程序下载到自动网卡上,或者是NFP处理器上,让它执行P4程序。通过ID环境,可以远程链调、单步跟踪,也可以组一个小网来验证P4程序的运行效果。

这里是SDK真实运行的截图。我们可以把附加的信息,包括Data、包的统计、P4数据链的调整流程,都可以在上面显示。你可以设断点,也可以单步调试,是非常便利强大的P4开发环境。它也支持真正的硬件环境。不仅可以仿真,还可以在实际的硬件上面跑。

通过智能网卡加上商业化软件,你可以建立自己的P4实验室,实现自己的数据链,甚至可以验证实现新的网络APP。欢迎P4爱好者多多跟Netronome交流。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/18204.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于16-12-08
2