0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:SDNLAB 作者:张渐修 2020-12-04 11:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者简介:张渐修,任职于上海同悦信息科技有限公司从事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的态度。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 交换机
    +关注

    关注

    23

    文章

    2866

    浏览量

    103901
  • 可编程芯片
    +关注

    关注

    0

    文章

    56

    浏览量

    19084
  • python
    +关注

    关注

    57

    文章

    4856

    浏览量

    89547
  • sdn
    sdn
    +关注

    关注

    3

    文章

    257

    浏览量

    46421
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    汽车电子开发必看:基于Perforce P4实现ISO 26262合规认证的版本管理解决方案

    目前全球唯一通过ISO 26262认证的版本控制系统Perforce P4!从代码管理到审计追溯,保障研发的每一步都经得起严苛审核。龙智正在为更多车企和零部件厂商提供合规支持,欢迎交流~
    的头像 发表于 09-09 14:38 2037次阅读
    汽车电子开发必看:基于Perforce <b class='flag-5'>P4</b>实现ISO 26262合规认证的版本管理解决方案

    蓄电池运维的常见误区及解决方法

    和其他工业与电气设备一样,蓄电池也需要定期的维护。但不少工程师对于蓄电池维护项目和方法等还存在一些误解。今天小福为大家深度剖析蓄电池运维的常见4大维护误区,助你避开雷区,精准预判电池寿命!
    的头像 发表于 09-04 13:58 700次阅读
    蓄电池运维的<b class='flag-5'>常见</b><b class='flag-5'>误区</b>及解决方法

    逐点半导体携手真我为P4系列智能手机带来旗舰级视觉体验

    专业的图像和显示处理方案提供商逐点半导体今日宣布, 新发布的真我P4 5G、真我P4 Pro 5G智能手机搭载逐点半导体 X7 Gen 2视觉处理器。该处理器通过集成的分布式渲染解决方案,可降低
    的头像 发表于 08-30 16:58 889次阅读

    【汽车行业案例】重型汽车制造商Scania:采用版本管理平台Perforce P4实现敏捷交付与合规审计

    汽车行业案例】揭秘重型卡车巨头如何用Perforce P4构建单一可信源,实现敏捷交付与合规审计。
    的头像 发表于 08-07 17:30 1042次阅读
    【汽车行业案例】重型汽车制造商Scania:采用版本管理平台Perforce <b class='flag-5'>P4</b>实现敏捷交付与合规审计

    汽车开发团队必看:汽车软件开发的五大挑战及应对解决方案Perforce P4

    Perforce P4作为唯一通过ISO 26262认证的版本控制系统,凭借其强大的分支管理、全球协作能力与DevOps集成,正为全球领先车企提供高效、安全、可追溯的数据管理支撑。
    的头像 发表于 07-24 11:30 633次阅读
    汽车开发团队必看:汽车软件开发的五大挑战及应对解决方案Perforce <b class='flag-5'>P4</b>

    【版本控制教程】如何使用Unreal Engine 5 + UE源代码控制(Perforce P4

    项目越大,越需要靠谱的版本控制系统。Perforce P4不仅是Epic官方推荐的源代码控制工具,更是大厂团队协作的核心支持之一。如何配置P4+UE?手把手教你怎么用↓↓↓
    的头像 发表于 06-25 11:22 1134次阅读
    【版本控制教程】如何使用Unreal Engine 5 + UE源代码控制(Perforce <b class='flag-5'>P4</b>)

    Git vs Perforce P4:版本控制系统选型指南(附适用场景、团队类型)

    Git适合小团队灵活开发,而Perforce P4更擅长管理大型项目与二进制资产。但你真的了解它们各自最适合的使用场景吗?或许不是“非此即彼”,而是“如何共存”,推荐一读!
    的头像 发表于 06-19 17:04 1072次阅读
    Git vs Perforce <b class='flag-5'>P4</b>:版本控制系统选型指南(附适用场景、团队类型)

    主流版本控制工具Git vs Perforce P4:架构模式、性能、大文件管理及分支管理对比详解

    Git vs Perforce P4,如何选型?架构模式、性能、大文件管理、分支策略四大维度对比,帮你全面了解两者的核心差异,选择更合适你团队需求的版本控制系统。
    的头像 发表于 06-13 14:52 575次阅读
    主流版本控制工具Git vs Perforce <b class='flag-5'>P4</b>:架构模式、性能、大文件管理及分支管理对比详解

    直观易用的版本控制客户端:Perforce P4 One简介及常见问题解答

    P4 One界面简洁、操作直观,特别适合处理图像、3D模型、视频等二进制资产的创意团队。无论是P4老用户还是新手,都能快速上手,关键是——完全免费!
    的头像 发表于 06-05 10:12 723次阅读
    直观易用的版本控制客户端:Perforce <b class='flag-5'>P4</b> One简介及<b class='flag-5'>常见</b>问题解答

    Perforce P4产品简介:无限扩展+全球协作+安全管控+工具集成

    P4中文版产品简介,由龙智整理,欢迎下载&交流探讨。来看看为什么3A游戏、虚拟制片、半导体团队都在用P4进行版本控制。还未用过的小伙伴,也欢迎联系免费体验!
    的头像 发表于 05-30 13:32 565次阅读
    Perforce <b class='flag-5'>P4</b>产品简介:无限扩展+全球协作+安全管控+工具集成

    【版本控制】Perforce P4服务器安全配置指南(附常见漏洞、详细配置参数)

    安全提示近期,Perforce产品安全团队发现部分暴露在公网的P4(原HelixCore)服务器存在潜在的配置风险,可能导致源代码泄露或未经授权的访问。网络安全是Perforce的首要任务。作为
    的头像 发表于 05-21 17:15 641次阅读
    【版本控制】Perforce <b class='flag-5'>P4</b>服务器安全配置指南(附<b class='flag-5'>常见</b>漏洞、详细配置参数)

    电机故障诊断常见误区的剖析

    纯分享帖,需要者可点击附件获取完整资料~~~*附件:电机故障诊断常见误区的剖析.pdf (免责声明:本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,删除内容!)
    发表于 04-07 17:35

    Perforce品牌及产品名更新:涵盖版本控制Perforce P4(原Helix Core)、静态代码分析Perforce QAC(原Helix QAC)等

    Perforce推出全新P4平台及P4 One客户端!从广为人知的“P4”到Helix Core到Perforce P4,此次品牌重塑是一次初心回归,也是对开发者和数字创作团队需求的深
    的头像 发表于 03-28 15:04 1083次阅读
    Perforce品牌及产品名更新:涵盖版本控制Perforce <b class='flag-5'>P4</b>(原Helix Core)、静态代码分析Perforce QAC(原Helix QAC)等

    gitee 支持的编程语言有哪些

    Gitee 支持的常见编程语言: Python :一种广泛使用的高级编程语言,以其清晰的语法和代码可读性而闻名。 Java :一种面向对象
    的头像 发表于 01-06 09:50 1101次阅读

    DFT的常见误区与解决方案

    DFT(离散傅里叶变换)在信号处理领域具有广泛的应用,但在使用过程中也常会遇到一些误区。以下是对DFT常见误区的总结以及相应的解决方案: 常见误区
    的头像 发表于 12-20 09:32 2067次阅读