P4语言入门

P4简介

P4语言在设计之初,就是为了实现以下三个特性:
(1)协议无关性
网络设备不与任何特定的网络协议绑定,用户可以使用P4语言描述任何网络数据平面协议和数据包处理行为。这一特性通过自定义包解析器、匹配-动作表的匹配流程和流控制程序实现。

(2)目标无关性
用户不需要关心底层硬件的细节就可实现对数据包的处理方式的编程描述。这一特性通过P4前后端编译器实现,前端编译器将P4高级语言程序转换成中间表示IR,后端编译器将IR编译成设备配置,自动配置目标设备。

(3)可重构性
允许用户随时改变包解析和处理的程序 ,并在编译后配置交换机,真正实现现场可重配能力。
为了实现上述特性,P4语言的编译器采用了模块化的设计,各个模块之间的输入输出都采用标准格式的配置文件,如p4c-bm模块的输出作为载入到bmv2模块中的JSON格式配置文件。P4的架构图如图1所示。
在这里插入图片描述
P4交换机中也有流水线(pipeline)的概念,一条流水线表示一组完整的数据处理流程,这一概念和传统交换机中的的流水线是相似的。如图3所示,在P4交换机中一条流水线可以包含以下组件:解析器/逆解析器、匹配-动作表、元数据总线。其中除了元数据总线,其他组件都是非必须的。
解析器(parser):将分组数据转化成元数据。
逆解析器(Deparser):将元数据转化成序列化的分组数据。
匹配动作表(match-action table):操作元数据。
元数据(metadata):在流水线内存储数据信息。
在这里插入图片描述

数据包经过解析后,会被传递到一个“匹配-动作”表,并支持串行和并行操作。类似于OpenFlow流水线,这些表决定了数据包将被送往哪里,如丢弃或送到某个出端口。P4的流水线分为入口流水线和出口流水线:

  • 入口流水线中,数据包可能会被转发、复制、丢弃或触发流量控制
  • 而出口流水线可以对数据包作进一步的修改,并送到相应的出端口

P4交换机将流水线处理数据的过程进行抽象和重定义,数据处理单元对数据的处理抽象成匹配和执行匹配-动作表的过程,包头的解析抽象成P4中的解析器,数据处理流程抽象成流控制。P4基础数据处理单元是不记录数据的,所以就需要引入一个元数据总线,用来存储一条流水线处理过程中需要记录的数据。P4交换机的专用物理芯片Tofino,最高支持12个数据处理单元,可以覆盖传统交换机的所有功能。
在这里插入图片描述

每个P4程序包含如下的5个关键组件:

Headers:定义报文头部格式,支持重定义的头部名称和任意长度字段
Parses:定义数据包解析流程的有限状态机
Tables:“匹配-动作”表,定义匹配域以及对应的执行动作
Actions:动作指令集,包括构造查找键(Construct lookup keys)、根据查找键查表、执行动作等
Control Flow:控制程序,决定了数据包处理的流程,比如如何在不同表之间跳转等

P4的完整工作流程为:

  • 首先用户需要自定义数据帧的解析器和流控制程序
  • 然后,P4程序经过编译器编译后输出JSON格式的交换机配置文件和运行时的API
  • 再次配置的文件载入到交换器中后更新解析起和匹配-动作表
  • 最后交换机操作系统按照流控制程序进行包的查表操作

在这里插入图片描述
以新增VLAN包解析为例,图中解析器除VXLAN以外的包解析是交换机中已有的,载入VXLAN.p4文件所得的配置文件的过程就是交换机的重配置过程。配置文件载入交换机后,解析器中会新增对VXLAN包解析,同时更新匹配-动作表,匹配成功后执行的动作也是在用户自定的程序中指定。执行动作需要交换机系统调用执行动作对应的指令来完成,这时交换机系统调用的是经过P4编译器生成的统一的运行时API,这个API就是交换机系统调用芯片功能的驱动,流控制程序就是指定API对应的交换机指令。

P4和SDN

如同基于OpenFlow实现的SDN,其最重大的改进是逻辑上的集中控制,在大规模数据中心和WAN网络接入这种全局视角可以更好的解决网络拥塞等传统网络的问题。利用P4来实现可编程的设备,他们完成的也只是数据平面的工作,实现报文的转发流程还需要控制平面的参与。因此在OpenFlow时代诞生了OpenDaylight和ONOS等SDN控制器项目;P4语言的协议独立意味着不会原生支持任何协议,P4语言只是描述报文头部格式以及程序中需要的协议字段。所以并没有解决控制层面的问题。P4优化了数据平面的实现,但是控制层面的工作一点也不能少。
无论是采用传统OSPF/BGP路由协议,或者是沿用SDN控制器都可以实现对P4设备的控制。Opendaylight和ONOS都提供远程控制插件,可以Runtime实现控制流的发送。

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Perforce P4V是一款强大的版本控制管理工具,可帮助开发团队追踪和管理项目的代码变化。入门Perforce P4V需要以下步骤: 1. 下载和安装:首先,你需要从Perforce官方网站下载并安装P4V客户端软件。根据你的操作系统选择合适的版本并按照安装向导进行安装。 2. 创建账户:安装完成后,打开P4V软件并选择"创建新帐户"。填写注册信息包括用户名、密码和邮箱。点击"创建"按钮完成账户创建。 3. 连接到服务器:在P4V的主界面,点击"连接"菜单并选择"新建连接"。填写服务器地址和端口号,然后点击"连接"按钮。如果连接成功,你将看到服务器上所有可用的存储库。 4. 设置工作区:在连接成功后,你需要设置一个工作区来管理你的代码文件。点击"文件"菜单并选择"新建工作区"。填写工作区名字和本地路径,然后点击"应用"按钮。你可以在工作区中添加、删除和更新文件。 5. 检出文件:一旦设置好工作区,你可以从服务器上检出文件进行修改。在工作区中,右键点击需要检出的文件并选择"检出"选项。这将将文件复制到本地,你可以通过P4V编辑这些文件。 6. 提交更改:完成文件修改后,你需要将这些更改提交到服务器。在工作区中右键点击修改过的文件并选择"提交"选项。填写提交描述并点击"提交"按钮。 7. 更新代码:当其他人员在服务器上提交了更改后,你需要更新你的工作区以获得这些更改。在工作区中右键点击选择"获取最新版本"选项,P4V将自动更新你的代码文件。 总结来说,Perforce P4V的入门步骤包括下载和安装软件、创建账户、连接到服务器、设置工作区、检出文件、提交更改和更新代码。通过熟练使用P4V,你可以更好地管理和追踪你的项目代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值