解惑P4编程语言的常见误区

作者简介:张渐修,任职于上海同悦信息科技有限公司从事sdn/p4交换机的市场推广工作。
openflow从诞生之日起就与sdn划起了等号,时至今日仍然有用户在寻求sdn方案时潜意识在寻求openflow的支持。实际上,随着sdn的逐步演进,软件定义网络更多是一种设计思路与设计理念,sdn网络的设计经历了螺旋式发展。近几年sdn之父nick教授身体力行的开始改造openflow,网络设备第一次和计算设备一样具有了可编程的能力。和openflow刚刚面世一样,用于网络设备编程的p4编程语言也存在众多误解。本文的主要目的就是解惑p4编程语言的几个常见误区。
误区一:p4就是openflow2.0
这一误区产生的主要原因是斯坦福大学的nick mckeown教授在openflow之后马不停蹄地开始p4的设计与推广,因此很容易让人以为p4就是openflow的新版本。虽然两者之间是超集的关系,但是p4绝不是已经停止更新的openflow新版本。
由onf组织推动的openflow在发展到1.6版本后停止更新,onf组织也历经与on.lab和p4.org两大组织的合并。openflow本身只是sdn南向接口的一种,是控制器向转发设备传递命令的一种方式;而p4 (programming protocol-independent packet processors)则是一种编写协议无关的包处理器的高级编程语言,它可以令设备实现openflow同样的功能,但是它的愿景远不是仅仅实现更灵活的openflow,它要给予数据平面与计算平面一样无与伦比的可编程性。传统上无论是openflow设备还是非openflow设备大部分都是按照固定流水线执行指令,在芯片现有功能内闪转腾挪而不能越雷池半步。p4语言则是要打破藩篱,让数据平面设备也具备在线实现新功能的能力。尤为与fpga这种现场可编程门阵列不同的是,fpga提供的是半定制电路,需要采用vhdl或者verilog等语言来实现硬件的重构,每个逻辑单元的功能在重编程(烧写)时确定。
所以p4是数通芯片的新一次尝试,与openflow只是定义一个南向接口截然不同。
误区二:只有tofino芯片可以支持p4
这个误区仍然与nick教授有很大关系。nick作为sdn之父在看到openflow面临的诸多落地困局后于2013年的acm sigcom发表《forwarding metamorphosis: fast programmable match-action processing in hardware for sdn》一文,并且作为创始人成立了barefoot公司。因此barefoot公司推出的tofino系列芯片天然支持p4。但是一个好汉三个帮,即使nick宣称可编程的数据芯片存在诸多优点,在商业落地时也面临行业巨头的打压与客户的质疑,因此p4语言并不是nick或者barefoot公司的私有产品,它由p4.org社区运作推广,希望借助社区的力量来找到应用场景和市场,近期p4社区刚刚与onf组织合并。
目前支持p4编程的数据平面芯片既可以是传统的网络处理器(npu),也可以是上文提到的fpga芯片,更不用说在cpu上可以模拟p4的各种行为,还有大神在gpu上开展p4的研究工作。
误区三:p4只支持可编程芯片
p4语言并不是学术界灵光闪现的成果,它是业界在openflow的前期探索后的成果,谷歌在其中发挥了重大作用。时至今日谷歌现网仍然有很多运行openflow协议的设备,因此当网络走向可编程走向更加开放,如何利旧就是个现实问题。而p4作为一种语言本身就是对网络行为的描述,所以只要能够让传统非可编程网络芯片可以理解由p4定义的转发流水线就能让传统芯片也支持p4定义的行为。
目前谷歌的sdn网络正在向可编程迈进,传统设备通过抽象层的转译也可以支持p4语言,因此传统厂商支持p4不是不行而是可为不可为的问题,毕竟业界老大哥携压倒性市场份额狂奔在另一条路上。
误区四:p4语言是python一样的高级语言
p4虽然是高级语言但是属于针对特定领域的dsl语言,它和python等计算机高级语言相比有很大的差别,首先p4语言需要考虑物理资源的限制,p4最终管控的是资源有限的数据平面转发芯片,所以注定不会像cpu所处的计算平面具有超高的外置memory资源;也正是这个原因,p4代码并不具备高级语言的通用移植性,在a平台的可运行代码在b平台不一定可以工作,所以每个支持p4语言的厂家都会提供自家产品的架构模型和编译器,用户需要在编译时选择相应物理平台来实现可落地的代码。
p4-16版本推出的目的就是提升目标无关性,通过语言与架构分离和灵活的数据模型支持多种目标设备。
误区五: p4代码就是sdn
如同基于openflow实现的sdn,其最重大的改进是逻辑上的集中控制,在大规模数据中心和wan网络接入这种全局视角可以更好的解决网络拥塞等传统网络的问题。利用p4来实现可编程的设备,他们完成的也只是数据平面的工作,实现报文的转发流程还需要控制平面的参与。因此在openflow时代诞生了opendaylight和onos等sdn控制器项目;p4语言的协议独立意味着不会原生支持任何协议,p4语言只是描述报文头部格式以及程序中需要的协议字段。所以并没有解决控制层面的问题。p4优化了数据平面的实现,但是控制层面的工作一点也不能少。
无论是采用传统ospf/bgp路由协议,或者是沿用sdn控制器都可以实现对p4设备的控制。opendaylight和onos都提供远程控制插件,可以runtime实现控制流的发送。
p4的诞生是sdn演进的自然结果,如同openflow刚刚出现面临的不解一样,p4作为新生事物也存在一些误区,相信随着p4-16的推出以及p4.org与onf的合并,p4将获得更多的关注与落地。当然这一切也取决于intel的态度。


RoHS测试仪有辐射吗
传台积电六大AI客户群明年投片需求将增加
苏-35单挑两架猛禽F22,我国订购即将全部到货
闭口闪点测试仪操作及原理
设计多个移动天线时如何避免效率下降问题?
解惑P4编程语言的常见误区
基于区块链技术的溯源互联网平台根源链介绍
深海恐惧症勿扰,海底版密室逃脱《FREEDIVER: Triton Down》下月登陆PC VR
英码科技精彩亮相火爆的IOTE 2023,多面赋能AIoT产业发展!
Lyft 开始在加州测试自主研发的自动驾驶汽车
家电市场缺芯,国产芯片产业链有望加速市场拓展
信息消费成经济转型抓手 4G建设料再超预期
金风直驱风力发电原理
世强22年先进服务硬创企业已超两万家
智能门锁真的安全吗
变频器键盘面板的功能
腾讯和阿里的最大挑战将是数字货币
美国电网侧储能系统爆炸追踪
Vivado综合阶段什么约束生效?
2020 vivo开发者大会应用服务分会,一站式连接用户与服务