从P4 workshop 2021看P4的发展趋势

举报
荷包蛋好吃 发表于 2021/07/15 21:10:08 2021/07/15
【摘要】 总体来看,更加可编程的P4控制面、智能网卡应用场景、可编程网络(从原来的单点可编程到未来的多点协同编程,大交换机概念,集中编译,分布式部署)、服务化/多租户化可编程资源(用于网络测量、网内计算)是可编程网络趋势。

推荐一个chatgpt代理站(支持gpt4): gptschools.cn

image.png

P4 概述

2013年, 当时还在德州仪器(TI)的 Pat Bosshart,联合斯坦福Nick、微软研究院的 George 等人在SIGCOMM上提出了一种RMT交换机实现,其实现了网络协议的自定义解析,自定义匹配、处理、转发,这个就是现在Intel Tofino 芯片的原型。但当时相关网络编程语言与编译器还未完善。

image.png

2014年,Pat Bosshart 等人进一步完善了编程语言部分,并在 sigcomm2014 上提出了P4,Programming Protocol-independent Packet Processors。P4 通过硬件相关的编译器编译成硬件机器码,下发到硬件中,真正实现硬件的网络可编程。

image.png

image.png

发展到2021年,P4相关功能、生态逐步完善,近期进展主要体现在三个方面:

  • 新特性方面:P4-16不断迭代,P4Runtime、P4架构(PSA,PNA)不断发展;一系列适配P4的开源软件、工具、网络操作系统相继出现,如SONiC,Stratum 等;
  • 硬件设备方面:P4 陆续适配新的平台,如CPU用户态的p4-dpdk(实验阶段),内核态的P4-ovs, FPGAs与SmartNiC等;
  • 应用场景方面:硬件卸载场景,拥塞场景,安全场景相继开始使用P4。例如,MSR,KAUST与intel提出SwitchML加速分布式机器学习框架;国内安全厂商80%开始接触PISA可编程设备。Intel试图复制其在CPU上的成功方式,开源Tofino开发环境与一些实现细节,相关内容详见OpenTofino Github项目。

未来,P4将在如下三个方向发力:

  • 语言设计:语言灵活性,模块化,更多的可编程性,提供更多语言的接口;
  • 架构:完善 PSA (Portable Switch Architecture),PNA(Portable NIC Architecture)与 P4-stdlib。特别是发展PNA,以将P4程序部署到智能网卡中,用于包括存储的多种网卡卸载场景,这个可能是P4的一个重要发展方向;
  • APIs: 与工业级网络操作系统进行整合;

PSA 进展

Pat Bosshart 在2013年提出的PSA架构主要解决了如下问题:

  • 协议头解析可随时调整;
  • MAU 的数量、拓扑、宽度、大小可以调整;
  • 动作域可以自定义;
  • 数据包可以放到特定的队列

Pat Bosshart 在论文中证明了使用 RMT(Reconfigurable Match Tables)模型实现可编程网络的巨大潜力。
对比固定的pipeline交换机,可编程交换机多消耗20%的芯片面积,资源消耗完全在一个可以接受的范围。

image.png

可编程芯片拥有4Kbit PHV。
首先,用户定义解析器逻辑(解析图),编译器将用户定义的解析图转换为TCAM表项(256个表项,匹配域40bits,与Table中使用的TCAM物理独立),其中32bits的匹配域为数据报文头,8bits为解析状态。当TCAM表项匹配时,将触发动作执行,如更新parser的状态,将数据报文的指针偏移特定的长度,将数据报文的定义字段赋值到PHV的某个字段等。每个解析器是一个LOOP,一个LOOP可以处理32 Gb/s的带宽,事实上,由于不是每个字段都需要解析,一个Parser可很容易就支持40Gbps的速率。

可编程芯片的精确表通过Cuckoo Hash实现,采用4路,每路1K表项,占用一个SRAM block,一个stage总共106个RAM。
可编程芯片可以在一个时钟内并行读取所有路的值。每个表项保存:1)1个指向action内存(action参数值,从106个RAM块中分配)的指针;2)action大小;3)1个指向指令内存(操作函数,如add header,存储在单独的内存)的指针;4)1个指向下一跳table的指针。

此款可编程芯片最大支持640Gbps,32个stage,每个stage支持200多个action 单元,并行操作,每个单元可对一个PHV字段进行设置,总共超过7000个动作单元。
所有动作单元占总芯片面积的7.4%。动作单元都比较简单,每bit少于100个门。

PNA 进展

2021年5月,PNA将发布v0.5 版本,2021年底,将发布v1.0版本。

在NICs中,有许多与交换机相同的功能,如如 counters, meters, registers, action profiles, action selectors, hash, checksum 等。
也有许多 switch 中不同的功能,如Remote DMA offload (RDMA), IPsec encrypt/decrypt, TCP连接跟踪,TCP segmentation offloading(TSO), large receive offload (LRO), Receive Side Scaling (RSS)等。
因此,需要为网卡专门设计一种种可移植网络架构,PNA,其架构图如下所示,pipeline 被拆成了两部分,1)数据包处理:处理大部分MTU的独立的数据包;2)处理从host内存发出的、或发往hostneic的更多的数据块。更多细节参加PNA v0.5.pdf

image.png

P4-DPDK

dpdk 是 intel 的开源项目,intel 在收购 Barefoot 后,很自然地将 P4 与 dpdk 联系了在一起,于是产生了P4-DPDK项目。
通过 P4-DPDK 项目,开发者可以将 P4 语言翻译为dpdk实现,让其跑在多个CPU核上,从而让数据面:
1)代码更加简洁;
2)不需要预定义任何东西,只需定义协议、元数据、table、action,stats等;
3)提供分类器、ACL、FIB、Tunnel、NAT、Meters、Markers、Stats等能力;
3)解耦控制面,直接通过P4Runtime控制。

相关 P4-DPDK 的特性集合如下:

image.png

通过 P4-DPDK 工作流程如下:

  • 线下处理:将.p4的文件转换为.spec中间文件;
  • .spec中间文件定义了产生pipeline的P4对象,如header, metedata, actions, tables,datapath等;
  • P4 action 与 apply代码块被翻译为预定义指令,预定义的指令不是底层X86指令,而是如上所述的P4对象。事实上,p4-dpdk是一个p4虚拟机;
  • 外部控制器连接target-agent,加载.spec文件,从而使agent可以操作table;
  • target agent 为每个pipeline产生p4对象,将每个 pipeline 运行到一个cpu核上,一个pipeline一个线程,一个CPU核可以执行一个或多个pipeline。

相关链接:

其他进展

  • Minlan Yu 分享了P4的近似方法,包括 sketch, sampling, coding, lossy compression, distributed algorithmls。并分享了两篇文章:1)PINT: Probabilistic In-band network telemetry;2)Cheetah: Database queries with switch pruning;
  • Jennifer 分享了使用可编程设备进行高阶遥测的一些思路;
  • ONF 分享了P4用于5G边缘场景的优势与挑战;
  • 星融对其4D-P4交换机进行了简单介绍;
  • 思科分享了其使用P4设备对无线接入点流量进行聚合的实践;
  • google分享了其使用P4实现拥塞控制算法swift的方法,另外,分享了PINS,其将P4Runtime整合到控制面;
  • 阿里云Yiqun Cai分享了其从2016年开始使用可编程交换机的历程,并简单分享了其两篇论文NetSeer,与Lyra;
  • 百度分享了其在P4方面的实践,主要讲了其XGW产品,方案与案例的XGW类似;
  • Keysight Technologies 公司分享了一种通过P4消除重复数据报文的方法;
  • Intel Barefoot 提出一种使用P4抽象出一个大交换机的思路;NDP的SAI接口实现;
  • Axbryd 提出扩展 p4 已实现流缓存机制的思路,并在p4模拟器上进行了实现;
  • Sándor 助理教授提出使用树莓派进行P4教学的思路P4PI,以及分享了将可编程应用于工业互联网的思考;
  • intel正在开发P4-DPDK项目,将P4代码编译为DPDK程序;
  • Pensando Systems公司提出使用多级内存结构解决P4内存不足的问题的思路;分享了在边缘网络使用P4的价值;
  • CodiLime 分享了使用ONOS控制P4可编程网卡的经验;
  • Canopus Networks 公司分享了利用P4-PUSH遥测测量宽带的体验;
  • Intel的Yanfang Le提出一种使用可编程在rack-scale网络中获得确定性实验的方法;
  • OpenNets 公司提出一种使用中间层将不同的编程语言互相转换的思路;

image.png

趋势总结

近几年,工业界与学术界在P4上的研究点主要集中在如下几个方面:

  • P4的新控制面,如PINS,AsterOS
  • P4的新应用场景,如智能网卡、边缘5G、无线接入点
  • P4的编译器,如 Lyra,大交换机的概念
  • P4的新硬件形态,如星融的X3-T系列产品(使用ARM智能网卡扩展内存)、阿里的XGW(使用FGPA卡扩展内存)、P4多级缓存
  • 网络测量,如PINT,NetSeer
  • 网内计算,如SwitchML
  • 新的P4语言语法,如支持有状态存储
  • 新的P4后端,如DPDK

总体来看,更加可编程的P4控制面、智能网卡应用场景、可编程网络(从原来的单点可编程到未来的多点协同编程,大交换机概念,集中编译,分布式部署)、服务化/多租户化可编程资源(用于网络测量、网内计算)是可编程网络趋势。

参考

相关人物

Yubico 科首席产品官。曾任VMware云与网络首席技术官。联合创立Big Switch Networks 与 Voltage Security 公司,分别担任首席执行官/首席技术官。天使投资人。斯坦福大学咨询教授。世界经济论坛科技先锋,麻省理工学院TR100,被评为最具吸引力企业家100强。斯坦福大学的计算机科学博士。

引用最高的论文有:1)Flowvisor: A network virtualization layer-2009

更多内容,请关注微信公众号: nfvschool
原文链接:www.nfvschool.cn

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。