P4runtime及p4info简介

P4 Runtime是一套基于Protobuf以及gRPC框架上的协议,透过P4 Runtime.SDN控制器或是使用者可以控制支援P4的装置。

P4 Runtime目前是由P4 API Workgroup所制定,目前还在开发阶段,但大多数需要的功能已被支持,例如操作Table Entry或Action profile、查询Counter等等。

除了上述的特点以外,使用者或是控制器也可以透过P4 Runtime去修改装置上的pipeline,且p4 Runtime并不会因为装置上使用不同的P4配置而改变。

与OpenFlow不同的点除了具备高度弹性的讯息格式以外,控制器与装置之间连接的顺序也不一样,以往OpenFlow是需要由控制器开放特定接口,然后装置连接上控制器。

而P4 Runtime的设计则是在装置上开放gRPC server,由控制器连接装置,因此在装置上都会有一个代理人(Agent)负责处理由控制器来的连接。
在这里插入图片描述
P4 Runtime是透过一个protobuf档案所定义出来,我们可以在p4的官方的GitHub上找到相关的定义:
https://github.com/p4lang/PI/blob/master/proto/p4/p4runtime.proto

下图来自p4runtime.proto,这一份protobuf中定义了相关的讯息格式,举例来说,一个TableEntry包含了table_id,多个FieldMatch、TableAction、priority以及相关的metadata。
在这里插入图片描述
gRPC除了提供单方向的RPC界面以外,也提供双向的stream channel,举例来说有时候我们会希望switch做Packet-In/Out的动作,这部分就需要用到stream channel来操作,而 P4 Runtime也提供相关讯息格式供这类型的需求使用。

从上图中我们看到,当要对装置里面的咨询进行操作时,需要使用一个unsigned int类型的ID而非名称,名称与ID对应关系必须透过读取P4 Info设定档来获得。

原则上在编译阶段,前端的编译器(front-end compiler)除了将原始的P4档案编译成中间码(IR)以外,也会将名称与ID咨询转换成P4 Info档案,P4 Info档案将与编译好的P4 binary(bmv2→json,Tofino→bin)一起传送给装置上的Agent,而P4 Info也会将进入给控制器供控制器去查询。
在这里插入图片描述
下面是将p4原始码转换成P4 Info的例子,在P4 Info中并不会存在名称,所有的名称都会转换成ID来表示,而不同的ID会指向不同的讯息,像是Table或是Match Field等等。
在这里插入图片描述
当控制器拿到P4 Info之后,即可透过P4 Info来产生P4 Runtime的讯息。下面范例展示了一个用于vrf_classifier_table这个Table的Table Entry。
在这里插入图片描述
在这里插入图片描述
以上内容来源于:https://p4tw.org/p4runtime-p4-info-intro/

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
P4Runtime是一种通过网络对程序进行编程和配置的协议。它是为了支持P4编程语言所设计的,并且可以从控制平面向数据平面发送指令。P4编程语言可以描述数据平面中的数据包处理逻辑,而P4Runtime则可以帮助在网络中管理和配置这些逻辑。 P4Runtime的主要目标是提供一个统一的界面,使控制平面可以管理和控制不同厂商的交换机和路由器。这样,网络管理员就可以通过一个标准的方式管理网络设备,而不用关心特定设备的细节。P4Runtime为控制平面和数据平面之间提供了一个交互的接口,使得控制平面可以向数据平面发送指令,例如请求统计信息、更改流表规则等。 P4Runtime的设计基于GRPC协议,使用Protobuf进行数据编码和解码。通过GRPC,控制平面和数据平面可以建立一个可靠的、基于流的通信通道。P4Runtime定义了一套规范的API,用于在控制平面和数据平面之间交换信息。这个API包括了各种操作,例如创建表、读取表、修改表、删除表等。 P4Runtime的优势包括灵活性和可扩展性。通过P4编程语言,网络管理员可以根据具体的需求编写出高度定制化的数据包处理逻辑。同时,P4Runtime可以与其他网络管理工具集成,例如SDN控制器、自动化管理系统等,从而进一步扩展其功能和适用范围。 总之,P4Runtime是一个用于管理和配置P4编程语言描述的数据平面的协议。通过P4Runtime,控制平面可以与数据平面进行交互,以实现对网络设备的统一管理和控制。它的设计目标是提供灵活性、可扩展性和与其他网络管理工具的集成性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值