P4背景
年,NickMcKeown领导的斯坦福大学研究团队在SIGCOMMComputerCommunicationReview上发表论文,P4:ProgrammingProtocol-IndependentPacketProcessors,提出了P4网络编程语言,主要用在网卡、交换机、路由器等网络设备上,允许用户编程来控制报文在数据平面转发行为。
经过近10年的发展,P4已经成为事实上的一个在网络应用领域标准的编程语言。P4是一个开源的,针对于网络行为级别的专用编程语言,相对Verilog/VHDL这种电路行为级别的编程语言,或者C/C++等通用计算编程语言,P4针对网络应用业务的开发效率有数量级的提升。
当前,由CPU、GPU、DPU构成的“3U一体架构”,已成为数据中心基础架构的发展趋势,DPU智能网卡作为第三大功能组件,需要满足多样化应用场景需求,P4网络编程语言是满足DPU可编程性的最佳选择。
P4架构
P4架构图
P4Program深蓝色框图是用P4语言写的程序,作为专门针对网络应用的高级语言,工程师会非常容易的在短时间内完成满足业务需求的代码编写。在交换、路由设备中会有大量的L2转发,L3路由处理代码,在智能网卡中会有大量的流表处理代码。
P4程序写完后,就可以用P4编译器对代码进行编译。编译结果产生两个文件,一个是要下载到硬件中的二进制目标文件,由硬件读取、解析、执行来完成相应的报文处理业务;另一个是硬件做报文转发时所需的表项格式信息,P4Runtime软件会根据这个文件把正确的表项下发到硬件中。
图中浅蓝色的部分都由P4标准组织提供的规范,而绿色部分则是和具体的厂家硬件实现相关。P4编译器前端也是一个规范的实现,编译器的后端需要厂家自己来实现,从而生成和硬件设计相对应的可执行文件。
P4生态系统
P4生态图
P4生态系统增长迅速,目前已有超过50个企业会员和15家高校科研机构加入,共同推动P4的建设和商业应用。P4生态系统采用了自上而下的模式,上面是应用相关,下面是硬件相关,广泛利用P4的产品、项目和服务。
P4数据面特点
1.可以实现现有协议的解析、处理功能;
2.可以自定义数据包结构;
3.可以在现有协议的基础上进行新的功能扩展;
4.软件风格开发——协议处理的开发模式类似于软件开发;
P4数据面要素
1.Parser
2.MatchActionTable(MAT)Deparser
3.Controlflowcode
Parser
数据包到达Switch的时候,Parser解析器解析提取报文Header中的关键字。这个过程,可以通过P4编程的Parser模块进行处理。P4中的Parser解析器模块,包含了定义所支持的各种协议头(Header)格式的存储器,以及进行逐层协议解析的执行机构。该执行机构依据预定义的协议头格式,提取协议头中关键信息,并且判断下一层起始位置和协议类型,以确定报文解析的下一步操作,直至解析结束。
MatchActionTable(MAT)Deparser
MatchActionTable是由Controller通过南向协议进行下发,匹配模式可以包含精确匹配,模糊匹配和最长匹配三种模式;MatchActionTable提供了表以及如何查表,查表之后进行怎样的动作也都完全由P4程序来实现,称为P4Deparser,用户可以根据特定需求通过P4编程完成数据处理的Action,包括转发、封装解封装、包头更新等。
Controlflowcode
类似C程序中的条件逻辑处理结构,这部分的可编程化,把网络数据面的单一功能变得更加自主和智能化,不再是仅完成简单的IP或者某个特定字段的匹配,而是一个相对复杂的可控流程,可以是多个匹配任务的连续,也可以对数据包的包头进行修改,增加,删减等动作。所谓的协议解析和转发策略一切变得跟软件开发一样简单。
关于我们
益思芯科技(上海)有限公司(简称:益思芯科技)成立于年7月,总部位于中国上海漕河泾新兴技术开发区。团队由国内外网络、交换、存储领域的核心专业人员组成,在网络、交换、存储及高性能CPU等领域具有深厚的技术实力。
公司致力于为通信、互联网行业提供领先的存储与网络芯片解决方案,旨在成为一家具有国际竞争力,以创新引领行业发展,参与制定行业标准的高科技创新公司。