P4: 面向服务器主导网络互联推进技术创新

P4是一种新的高级编程语言,P4用于软件定义网络。P4用于描述数据平面的行为,这些数据平面的行为可以对应于任何转发,修改或检查网络流量的系统或设备。P4最先在网络核心应用,但服务器主导网络互联研究人员认识到P4的应用价值。部署到数据中心的智能网卡可以使用P4处理服务器主导网络互联。研究人员在服务器主导网络互联方向使用P4,降低服务器任务负荷并实现新功能。

本文介绍了P4面向服务器主导网络互联的最新研究成果。我们首先简要介绍P4。

关于P4

P4语言使用OpenFlow 匹配-行为流处理模式。 在这种方法中,当数据包携带数据项匹配特定键时,依据行为项目的内容修改数据包。 语言使用户能够有效地描述匹配-行为流。

P4用于描述或规定数据平面行为,不用于实现数据平面。 依据系统/设备灵活度/复杂度要求,数据平面可以运行于固定功能ASIC(例如2层交换机ASIC),也可以运行于完全可编程的通用CPU(路由器,Web代理服务器和防火墙)。

P4的主要目标之一是保持语言硬件无关(或目标无关)。P4的设计者声明它是一种面向数据包处理器的编程语言,设计者们指的是哪种数据包处理设备? ASIC,FPGA或CISC CPU? 答案是:所有的,只要他们能解释P4。

目标系统制造商负责解释P4行为代码和生成低级别设备特定代码。 例如,Netronome的Agilio Smart NIC拥有可编程数据平面。 Netronome硬件软件使用户可以在这些智能网卡上设计,开发和调试P4代码。 P4代码可以被编译且应用于x86 TCP / IP栈, 也可以被编译且应用于全定制ASIC。

P4,降低服务器任务负荷和系统设计

许多网络系统使用专用硬件来加快网络处理,满足高处理速率要求和功能要求并降低服务器任务负荷。 P4语言本身假定面对某些场景使用外部装备更好,外部装备被当成黑盒,对应加速器或专用外部硬件。

高程度可编程加速器包含大量可编程核心(与网络处理器可编程核心相同)或者大量逻辑门(与FPGA逻辑门相同) ,可以满足网络灵活度/复杂度要求。高程度可编程加速器的使用比较受影响,因为开发人员通常发现加速器很难编程。 开发人员必须实现操作系统提供的功能或通用系统服务提供的功能。 开发人员在编程加速器时必须实现两类功能:

  • 数据包物理管理:接口到接口传输数据包并访问系统资源的逻辑。
  • 数据包处理功能:改变数据包内容(协议报头)并将其传输到适当接口(实际应用逻辑)的逻辑。
  • 网络系统开发人员通常对第2类功能感兴趣。 在具有加速器的系统中,开发人员需要实现第1类型功能才可以达到目的。

    像P4这样的语言在具有可编程加速器的系统中支持一种有趣的方法。 物理数据包管理可以独立于数据包处理管理。 加速器的部分可编程逻辑可以被设置为资源岛,砂箱。 加速器供应商现在可以提供一个工具链将P4代码映射到砂箱。 加速器供应商可以编写性能管理软件,利用加速器非砂箱资源管理数据包。 管理软件通过逻辑接口向砂箱提交数据包。 网络开发人员可以编写P4代码说明加速器逻辑网络功能。

    利用这种方法,网络功能开发人员可以专注做与他们有关的数据包处理功能。Netronome在P4 SDK和工具链中使用砂箱方法。此外,Netronome支持 开发人员用C实现 P4 功能。 这种做法可以帮助开发人员实现P4不能支持的功能(状态机功能)。图 3显示了开发人员创建、编译P4代码和C代码,下载P4代码和C代码到Netronome SmartNIC的流程。图3也显示了如何将P4/C代码插入到资源岛。

    P4和服务器主导网络互联

    P4的发展重点以前是网络核心的控制数据平面,以后也不会变。然而P4已经在服务器主导网络互联方向急速前进。

    大多数网络数据平面执行3种基本操作:数据包解析,匹配/行为操作和数据包重组。P4支持这些操作,让开发者代码容易被理解。P4程序必须说明需处理的数据包(数据包预期内容)以及数据包被修改的方式。P4有能力支持标准数据包包头(用于分析器提取),也有能力支持全新的协议(图4)。

    P4开发人员可以在软件定义网络网络栈任何层尝试使用全新的协议。这种做法不对应先前的SDN技术方向(例如基于现有网络标准的OpenFlow)。使用OpenFlow解析以太网报头,IP报头或TCP报头没有问题,因为OpenFlow支持这些协议。但是如果需要支持较新的协议(如NVGRE数据包),只能等待OpenFlow支持新协议。

    支持新协议可以帮助数据平面研究人员研发网络互联硬件。 更重要的是,利用岛屿方法数据平面研究人员可以集中力量做特定任务,并且同时不干扰真实网络的运转。 其次,使用C代码,研究人员能够做的任务更多。Netronome利用社区门户Open-NFP支持P4(和其他数据平面加速技术)的研究和开发。 我们简要讨论Open-NFP社区的一些P4项目。

    研究人员的重点领域是使用P4 推动找寻新方法,这样的新方法用于实现商用服务器网络互联系统。这些新方法对应底层软件或者NFV系统虚拟应用。 对应底层软件,研究人员提出使用P4为网络媒体数据流提供组播功能,使用P4实现信息中心模式网络互联, 使用P4降低宿主任务负荷并在SmartNIC上实现5G网络协议, 使用P4帮助 OpenFlow控制器向NIC和交换机推送安全策略。对应虚拟应用,研究人员使用P4降低NFV系统宿主VNF功能任务负荷和/或增强VNF功能。

    第2个领域是支持新的协议功能。使用NIC降低宿主任务负荷,更好地使用宿主主机资源或帮助应用程序。这个方向可以找到很多的例子,比如应用程序绕过网络协议栈直接接收网络数据。 研究人员还提出使用P4在Open VirtualSwitch中对数据平面编程。
    研究人员还计划在NIC上使用用户自定义协议,研究新的安全和监控方案。方案包括新的连接认证协议等。

    结论

    展望未来,更多的变化是可能的。研究人员可以通过几种方式参与和推进这项工作。P4组织每年举办两次开发日活动,每年举办一次研究会议。该组织设有工作组。 例如,P4的下一个版本P4-16将会很快发布。P4语言资源库托管了许多示例应用程序和示例网络互联代码。

    P4打折硬件,SDK和学习材料,包括数个完整的P4和P4 / C项目[24],实验室,可以提供给研究人员和Open-NFP人员使用。

    本文译者:刘正,多年在美国和中国的顶尖软件研发中心从事特大型系统软件的研发工作,先后在高通 (Qualcomm),贝尔实验室无线部 (Lucent Bell Lab),中科院软件所,信产部通讯研发中心参加多个特大级系统软件研发项目。

    原文链接: http://www.datacenterdynamics.com/content-tracks/core-edge/p4-driving-in...

    文章转载自: