益思芯技术论坛丨P4可以做什么?



前言


当2019年Intel收购Barefoot Networks的时候,在业内并没有引起太多的波澜。因为当时市场上的霸主Broadcom 并没有加入P4的阵营,而推行自己类似P4功能的OpenNAS,而Mellanox的spectrum 系列只是基于自己的SAI的Hybird solution。【1】


时间来到2022年,在AMD斥资19亿美金收购P4 网卡厂家Pensando的时候,P4已经广泛引起了大家的注意。主要原因是Intel在之前推出了自己的支持P4的IPU Mount.Evans,而且交换机老大Cisco也推出了G100 Silicon One,【2】 全面支持P4。


从P4组织的网站上可以找到很多资料以及标准,但是为什么会有P4,而P4可以做什么,这个还要从P4之父掀起的一场网络革命开始。

网络的变迁


对于传统的7层或者4层的网络模型,分层的架构可以消除网络的连接状态的维护,每一层只关注自身的功能实现,因此可以在TCP/IP上实现大量的应用。而分层的架构也可以使IP运行在各种不同的介质上,从Ethernet到wifi,到5G网络,不需要关注底层的具体实现。


互联网基本上就是按这个模型实现的基于包交换的分布式网络,这些网络通过基于存储转发的网关连接起来。这样的网络可以实现早期互联网的基本功能:可靠和可扩展。

从TCP/IP统治了整个3和4层协议之后,网络的变化基本上停滞了。大家接受了以下的网络框架:

1.分布式管理的硬件交换机和路由器

2.基于包交换的存储转发的机制

3.主机侧使用基于内核态的TCP/IP协议栈

在这个基础上,我们在更多的传输介质上实现了网络协议,实现了更多的各种应用,也验证各种流控机制,毕竟在TCP网络中,触发流控的方法就是丢包,以及把IP的地址从IPv4 扩展了到IPv6。

但是从Hyperscale出现之后,有一个重要的变化在发生,Hyperscale有着大量的私有网络,网络中的东西侧流量往往是南北侧的几个数量级。对于这样的数据中心网络,他们提出了新的要求:

🔹基于单独的硬件网络设备的管理已经不够了,他们需要全局的管理。

🔹设备的种类繁多,他们希望可以实现设备的全生命周期管理。

🔹对于Hyperscale来讲,私有的data center的网络环境相对于广域网相对简单,他们要追求更高的性能。



交换机的变化


因此,对于传统的网络交换机硬件设备,将控制路径和数据路径的分离就成为了主流。随着OpenFlow 【3】和SDN【4】控制器的出现,大量的白盒交换机产品成为了Hyperscale数据中心的标准配置。


与此同时,随着数据中心网络规模的扩大,越来越多的网络端口在一个大型的L2的网络上,原来L2 网络依靠的广播发现拓扑的机制出现了问题,广播消耗太多的带宽,同时出现了扩展性的问题。Hypersacle希望在一个物理网络上实现多个逻辑的网络,而原来的VLAN技术因为扩展性也满足不了要求。因此,具有全局概念的SDN就成为数据中心网络的主流。可以看到原来的网络的物理交换机就成为功能单一的包转发的引擎,而控制路径由Network OS来实现。


当数据路径和控制路径分离之后,对于数据路径的灵活控制成为一个新的需求,大家希望可以通过可编程的数据路径实现如下功能:

🔹协议无感知, 交换机的数据路径可以处理任意的包格式。

🔹可配置,交换机的控制器可以定义数据路径中的解析器的配置以及包的处理修改器。

🔹和硬件完全解耦,网络数据包的处理语言和硬件完全无关,由编译器实现和硬件的映射。

交换机P4的出现和应用


于是,最早的PISA架构就出现了【5】。


Barefoot引领了这个方向,目前业界主流的交换机都在向这个方向发展。在学术界,使用P4的应用也有很多,目前主要集中在网络的监测上面。但是国内的Alibaba在2021年的Sigcomm上的洛神网关【6】算是一个真正落地的应用了。


该方案利用Barefoot交换机芯片的可编程功能,和网关业务的流的信息结合,在硬件通路上实现了对于不同的业务的流的定制处理。

在其他的场景中,使用P4的数据路径可编程,也可以很好的实现公有云中多播或者组播应用的主机卸载。【7】


因此,可以看到在支持P4的交换机芯片上,用户可以结合自己的应用在以下几个方向实现对原有应用的加速:

1网络的监控,使用P4的语言进行基于流的统计。

2数据流的转发,在上面的用户例子中数据流只经过交换机的数据通路,而不进入主机的协议栈。

3数据中心网络的流控算法,利用P4定义的INT可以实现对网络端到端的流堵塞控制。

Pensando


在网络交换机侧支持P4之后,Intel在2021年推出的IPU也增加了P4的支持,在Intel之前,发迹于Cisco的“MLPS”四人组成立的Pensando【8】公司也在一开始就在网卡中实现了P4引擎。

从第一代网卡的架构上还可以看到交换机的影子,使用HBM作为P4引擎的内存缓存。在P4 引擎中使用了112 MPU,对于每个P4 stage使用4个MPU, 因此实现了P4 ingress/P4 egress 6+6, 以及P4 TxDMA/RxDMA 8+8 级的流水线。但是在第二代芯片中,使用DDR4取代了HBM,毕竟1.6TB/s的带宽,对于交换机是小儿科,对于网卡的确是牛刀了。


对于每一级的P4 engine, 它的架构是统一的,从TE 开始,包含4个MPU。基于每一个MPU,Pensando实现了自己的P4的指令集。【9】


和传统的交换机丰富的L3/L4的功能相比,有了P4的加持,Pensando可以实现原来在高端设备才能实现的丰富的网络功能。【10】



Intel IPU


Intel在2021年发布的IPU在网络包处理中也包含了P4的引擎,这个引擎和之前Barefoot和Pensando那些基于交换机架构的有所不同,而相对针对于目前在Hyperscale占主导地位的Virtual Switch。【11】


它的特点也非常明确:

1全面支持Open vSwitch,整个OVS的data path 全面硬化。

2可编程的Parser来支持精确查找,通配符查找,以及范围查找,这个和OVS的功能是完全对应的。

3OVS的slow path 和fast path的实现可以无缝mapping 到IPU。

为了让Hyperscale更好地使用IPU, Intel也提供IPDK这样的基于P4的框架。从Intel的框架中,你可以看到在控制路径上ovs-opctl的身影。【12】



Resnics P4


和Intel一样,在实现数据中心网络加速当中,Resnics在一开始,也考虑使用P4的可编程性来保持自己的网络数据路径的灵活性,在控制路径上复用现在最流行的开源虚拟交换软件框架。

实现了基于VLIW指令的P4引擎,来生成自定义的PHV,在网卡的内部实现了全硬件的网络数据通路。和Pensando一样,使用P4 engine在主机的PCIE接口,内部CPU和网络之间进行数据的传输。【13】


通过基于P4的硬件实现和OVS的控制路径,Resnics 的25G 网卡可以提供OVS数据路径的加速功能,同时基于P4的Parser可以支持不同的网络协议,Tunnel协议和各种option header的字段的处理。

对于目前开源虚拟化方案中的OVS data path加速,Resnics在标准的OVS的基础上实现如下功能:

▶OVS精确查找的硬件加速

▶Tunnel 网络协议的encapsulate和decapsulate操作的硬件加速

▶OVS connection tracking基于TCP状态的硬件加速

▶提供基于Virtio设备queue级别的QoS

▶实现对TCP checksum的硬件卸载和原生的RSS 机制

▶实现了基于Ethernet端口的bonding机制


在越来越多的网卡上的包处理引擎支持P4之后,除了可以做Virtual Switch的数据路径的加速外,网卡上的P4引擎可以完成更多的业务处理。

网卡P4的使用场景


和之前引用的Alibaba的数据中心网关的例子一样,目前很多基于Internet的应用需要使用Tunnel 技术和服务器端建立连接,建一个安全的基于Tunnel的数据服务。如目前的企业的VPN,以及各种视频服务等等,这些应用往往需要很多网络接入服务器。在这些服务器上部署基于P4的智能网卡,可以实现对于Tunnel协议的encap/decap的卸载,以及相关的NAT操作的卸载。


另一个相对比较成熟的应用场景和运营商的网络功能虚拟化有关,在NFV的使用场景中,会有大量的vRouter来提供网络上的路由功能。

基于P4的智能网卡可以通过数据通路的可编程是来实现对于不同的网络数据流级别的硬件卸载。



P4在交换机和网卡联动


同样,在P4的使用场景中,P4交换机和P4 智能网卡联动也是一个重要的方向。在目前AI training的场景中,SwitchML【14】也是一个P4 交换机和网卡联动的例子。在服务器端部署基于P4的智能网卡可以使用硬件引擎进行网络封包的处理,从而替代目前使用的kernel-bypass的DPDK框架。


在大型数据中心网络中,基于ICMP的网络监控机制已经不能满足需求,而P4定义了INT, 使用P4的INT可以为用户通per packet的端到端的网络延时信息。


最后,随着大型数据中心网络的端口带宽的增长,更多的应用为了追求低延时和稳定性,更加倾向于底层的硬件进行加速卸载,而基于P4的网络处理引擎会变得越来越重要,会有更多的应用出现。

【1】https://gist.github.com/jopietsch/c1573518516af6071ae9cd0462ff0fd3#file-ethernet_asics-csv
【2】https://www.cisco.com/c/en/us/solutions/collateral/silicon-one/datasheet-c78-744833.html
【3】https://opennetworking.org/sdn-resources/customer-case-studies/openflow/
【4】https://www.sdxcentral.com/networking/sdn/definitions/what-the-definition-of-software-defined-networking-sdn/what-is-sdn-controller/
【5】https://www.infoq.com/presentations/pisa-asic-p4/
【6】https://dl.acm.org/doi/abs/10.1145/3452296.3472889
【7】https://onfstaging1.opennetworking.org/wp-content/uploads/2019/09/5.30pm-Satoshi-Horiuchu-Shinji-Yonesaka-The-Result-of-Usecase-of-P4-and-New-Usecase-of-P4.pdf
【8】www.pensando.io
【9】http://www.opennetworking.org/wp-content/uploads/2020/04/Plenary-4-Slide-Deck.pdf
【10】https://www.youtube.com/watch?v=8UIYP7h_KG4
【11】https://www.servethehome.com/intel-mount-evans-dpu-ipu-arm-accelerator-at-hot-chips-33/hc33-intel-mount-evans-dpu-ipu-packet-processing-p4/
【12】https://www.youtube.com/watch?v=jpE2qdV0tJw&ab_channel=IPDK
【13】www.resnics.com
【14】https://github.com/p4lang/p4app-switchML



关于我们


益思芯科技(上海)有限公司(简称:益思芯科技)成立于2020年7月,总部位于中国上海漕河泾新兴技术开发区。团队由国内外网络、交换、存储领域的核心专业人员组成,在网络、交换、存储及高性能CPU等领域具有深厚的技术实力。

公司致力于为通信、互联网行业提供领先的存储与网络芯片解决方案,旨在成为一家具有国际竞争力,以创新引领行业发展,参与制定行业标准的高科技创新公司。