5月24日,2022网络开源技术生态峰会(线上)盛大开幕,本届大会由“科创中国”未来网络专业科技服务团指导,江苏省未来网络创新研究院主办,SDNLAB社区承办。在“P4技术与应用”论坛上,英特尔Barefoot事业部技术总监康海涛分享了《P4和IPDK助力可编程网络》主题演讲。
康海涛首先给大家介绍了英特尔在网络领域的愿景。在未来的数据中心里网络会扮演越来越重要的角色,主要是将算力与存储互连,算力包括CPU、GPU、面向于AI的专用处理器,以及基于FPGA和FPGA ASIC化的加速器件。在服务器之上是各种标准的网卡,包括英特尔刚推出的IPU(面向基础设施的处理单元)。此前,英特尔推出了基于FPGA的IPU,以及和谷歌联合设计的基于ASIC的支持P4的IPU Mount Evans。
英特尔基于P4可编程的Tofino交换芯片系列也在一直更新,Tofino 1的处理能力从1.8T到6.4T,Tofino 2处理能力有12.8T,Tofino 3处理能力最大可达25.6T。和现有传统的交换芯片相比,Tofino交换芯片在不损失功耗性能以及成本的基础上,额外的引入了P4,可以给最终用户带来可编程性。英特尔还投资了十多年的硅光技术,主要是面向高带宽的100G、400G、硅光模块以及硅光引擎等,上图是英特尔面向网络的产品线示意图。
另外,英特尔也在基于各种各样的网络产品做端到端协同的优化,比如说端到端的网络可视化、端到端的拥塞控制、流量控制以及面向下一代的可靠传输协议等。
P4
P4(Programming Protocol-Independent Packet Processors)是对协议无关的包处理器进行编程的语言,所谓的协议无关是指用户可以基于P4代码实现现有的网络协议,或者说对现有的网络协议做一些增强扩展,甚至是基于用户自己的需求实现一个全新的网络协议。包处理器不仅仅包括基于Tofino的以太网可编程芯片,也包括各种各样的智能网卡、IPU、DPU以及在应用层上运行的虚拟交换解决方案(如OVS、DPDK、eBPF)。下图是一段P4代码片段。
P4是一个真正开放开源的生态,用户可以基于自己业务的诉求,用P4去实现所需要的数据面的转发行为。用户可以使用P4进行快速简洁的迭代开发,来实现自己的业务逻辑,同时又能保留自己和业务逻辑所相关的一些差异化。
接下来康海涛介绍了英特尔基于P4所做的一些创新,PINS是集成了P4的网络协议栈,最主要的目标是把SDN和基于P4的可编程性带到SONiC网络操作系统。SONiC是一个开放的操作系统,但如果想在SONiC的框架之上引入一些新的功能,用户就必须和业界一起定义整个管理模型,包括数据链的实现以及SAI的配置模型,过程会比较冗长。
引入P4之后,用户可以非常快的去引入一些新的功能。PINS可以让大家从现有传统的操作系统平滑地往SDN领域迁移。用户第一步可以把SONiC用作本地的控制平面做部署,然后在业务网络演练的过程中,把一部分功能SDN化,通过P4配置。最后,用户如果需要,可以把整个网络演进到SDN路径上。
上图是一个典型的PINS介绍,PINS在SONiC的基础上利用已经引入过的OpenConfig做固定功能的配置,更为重要的一点是它引入了P4 以及P4Runtime。它可以用P4去描述SONiC、SAI已经定义好的流水线,用P4定义好之后,就可以用P4Runtime去管理配置现有SAI所定义的表以及对象。PINS可以灵活引入一些新的功能,支持用户的差异化。另外由于P4 有非常好的协议无关性,所以即使一个设备已经在线上部署,仍然可以做到快速且不中断业务的软件升级以及扩展。
下图是PINS的整体架构。PINS在SONiC中引入了P4Runtime模块,来处理从远端控制器下发的P4Runtime的各种对象以及源数据。英特尔在Application DB里增加了P4Runtime,用来管理各种各样的P4对应的对象。在SWSS容器里引入了P4Orch,作为Application DB和ASIC DB之间的桥梁,可以把最上层基于P4的对象配置到ASIC DB里,然后再通过标准的SDK接口下发到对应的底层平台,同时P4Orch也可以管理一些状态的通知。
PINS从引入之初就得到了整个业界的认可,现在有很多项目在并行开发,可以基于PINS做接入网的路由器多协议平台,包括面向固网的BNG,以及面向5G接入网的UPF的功能。基于PINS架构SONiC也可以很好的支持虚拟网络。
IPDK
IPDK是一个开源的、与厂商无关的驱动程序和API框架,可管理由CPU、IPU、DPU或交换机构建的基础设施。IPDK能够利用现有的一些工具以及平台,包括DPDK、SPDK、P4以及SONiC和PINS来满足不同基础设施应用的需求。这些基础设施应用包括网络虚拟化、存储虚拟化,以及容器网络所对应的K8S。IPDK还可以支撑各种各样的工作负载的卸载以及加速,包括防火墙、入侵检测系统、5G、边缘计算、网络可视化层面的加速。基于IPDK框架,基础设施应用程序的用户可以根据对功能和性能的不同要求,把自己的应用在各种具有不同能力的平台之间做一个无缝的切换。
IPDK是基于用例驱动的一个框架,基于对业务逻辑和框架的不同需求,可以简化框架的定义,优化IPDK框架以及底下不同的转发平台,IPDK的开发以及管理都是遵循开源开放的标准。另外也提供了一些预先编译好的容器,用户可以直接运行来评估IPDK。
IPDK包括两大开放接口,一种是Infrastructure Application Interface(基础设施应用接口),另一种是Target Abstraction Interface (TAI)(目标设备抽象接口)。基础设施应用接口是IPDK的北向接口,代表支持的不同RPC接口,包括P4Runtime、OpenConfig以及面向SPDK协议的RPC接口等。目标设备抽象接口是南向接口,基础设施应用程序可以通过此接口管理调度设备资源。
超融合可编程网络平台
超融合可编程网络平台把Server和Switch融合在一起,包含了全可编程的架构,由服务器级双路至强CPU、Tofino的交换芯片,以及可以选配的FPGA或IPU组成的,它上面可以运行IPDK或者PINS/SONiC。整个平台有非常好的灵活性,可应用于算力网络、云网融合、边缘计算等场景。
最后康海涛希望英特尔提供的网络产品线以及各种各样的开放平台,能给用户在业务上带来更多的价值。
【活动专栏】
【转载须知】
若转载文章为原创文章,可在相应文章下或公众号后台留言;其他非转载类文章须在文首以不小于14号字体标明转载自SDNLAB。
【投稿】
欢迎SDN、NFV、SD-WAN、智能网卡、确定性网络、TSN、5G 网络切片等网络方向的观点类、新闻类、技术类稿件。
联系人:kk__wu(微信号)
投稿邮箱:pub@sdnlab.com
详情请参考:SDNLAB原创文章奖励计划