P4 Runtime和p4 info
p4runtime
P4 Runtime是一套基于Protobuf以及gRPC框架上的协议,通过P4runtime,SDN控制器可以控制能够支援p4的设备。
p4runtime当前由p4 API workgroup指定,主要来自于barefoot公司。
barefoot公司,其还设计了第一款原生支持p4的芯片——tofino,以及基于tofino的交换机——wedge 100bf-65x。
控制器也能通过p4runtime去修改装置上的pipeline。与openflow不同的除了具备高度弹性的信息格式意外,控制器与设备之间连接的顺序也不同,以往openflow是需要控制器开始特定的接口,然后设备才能连上控制器。
p4runtime则是在设备上开始gRPC server,由控制器联系设备,因此设备上会有一个代理人Agent负责处理由控制器来的连接。
关于p4runtime是通过一个protobuf档案定义出来的,最新的定义现在在github上。
https://github.com/p4lang/p4runtime/blob/master/proto/p4/v1/p4runtime.proto
gRPC除了提供单向的RPC(RPC就是远程过程调用)界面以外,还提供双向的stream channel,这个就是双向流式调用,举例来说有时候我们会希望switch做出packet-in/out的动作,这部分就需要stream channel,p4runtime也提供了下相关信息格式来使用。
p4 info
p4 info就是p4的infomation。
原则上在编译阶段,前端的编译器除了将原始的p4档案编译成中间码(IR)以外,也会将名称与ID讯息转换成p4 info档案,p4 info档案会和编译好的p4 binary(bmv2->json,Tofino->bin)一起上传给设备上的Agent,p4 info也会导入给控制器供控制器去查询。
p4源码转换成p4 info如下:
控制器取得p4 info之后,可以通过p4 info来产生p4 runtime的信息。
P4 Runtime和p4 info的更多相关文章
- Run P4 without P4factory - A Simple Example In Tutorials.
前言 本文是我运行P4社区于Github开源教程Tutorials中的P4 SIGCOMM 2015 Tutorial一些实战小结,Github链接: Github. 测试的例子:P4 SIGCOMM ...
- A Simple Note on "P4FPGA: A Rapid Prototyping Framework for P4"
论文:P4FPGA: A Rapid Prototyping Framework for P4 Github:https://github.com/p4fpga Reference: Han Wang ...
- P4编程环境搭建
本文参照了sdnlab上相关文章的搭建推荐. 使用的系统环境为ubuntu 18.04 组件介绍 主要安装五个组件: BMv2:是一款支持P4编程的软件交换机 p4c:是一款P4的编译器 PI:是P4 ...
- 使用p4c将P4 14代码转换为16代码
参考: [Question] How to make conversion between P4 14 and P4 16? 使用p4c将P4 14代码转换为16代码: $ p4test --p4v ...
- Future Works on P4
Future Works on P4 P4 and NV: MPvisor, Hyper4, HyperV, Flex4 P4 and NFV P4 and Network Cache P4 and ...
- 2017年P4中国峰会北京站 会议小结
2017 P4 中国峰会 北京 本次会议依然侧重介绍P4,并highlight P4的benifit,大致分为以下几类: 1.学术界 - 未来网络的发展,为何提出P4技术? 未来网络和实体经济.其他学 ...
- 【P4语言学习】basic_routing.p4
headers.p4 /* Copyright 2013-present Barefoot Networks, Inc. Licensed under the Apache License, Vers ...
- 用P4对数据平面进行编程
引言 SDN架构强调了对控制平面的可编程,数据平面只负责转发,导致数据平面很大程度上受制于功能固定的包处理硬件. P4语言的特性: 目标无关性:P4语言不受制于具体设备,所有可编程芯片都可以使用P4编 ...
- P4语法(5) Package
Package 对于package这个概念,类似于将一个框架中各组成部件以一个规律进行打包,以正常运转. 基于一个架构去编写一个新的pipeline的时候,需要先了解初始化的时候需要提供那些东西,pa ...
随机推荐
- colemak,你用了吗?
为了输入代码的感觉更好,我学习了colemak键盘布局,这个布局它是在QWERTY的基础上改了10多个键. 开始的三天,感觉非常不好,每按一个键都要思考很长时间,干脆在网上找了个在线打字的网页去练,感 ...
- Flume(5)-Ganglia监控
一. 安装Ganglia 1. 安装httpd服务与php sudo yum -y install httpd php 2. 安装其他依赖 sudo yum -y install rrdtool pe ...
- 20155217 实验四 Android程序设计
20155217 实验四 Android程序设计 任务一: 完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号. R.java文件是定义该项目所有资源的 ...
- 20155222 2016-2017-2 《Java程序设计》实验一
实现Fibonacci数列功能,并进行测试. 源代码: import java.util.Scanner; public class fibonacci { public static void ma ...
- 20155224 2016-2017-2 《Java程序设计》第4周学习总结
20155224 2016-2017-2 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 第六章主要学习了子类与父类的继承. 先定义一个程序,另一程序可继承他 如: publ ...
- 20155321 《Java程序设计》实验三 敏捷开发与XP实践
实验内容 XP基础 XP核心实践 相关工具 实验步骤 敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括下列领域:软件需求分析.软件设计.软件构 ...
- Python:静态方法、类方法、实例方法
1. 静态方法@staticmethod (1)无需自身对象的self参数和自身类的cls参数,可直接通过 类名.方法名 进行调用 (2)Python中并不是真正意义上的静态方法,因为类定义本身就是个 ...
- IIS解决上传文件大小限制
目的:通过配置文件和IIS来解决服务器对上传文件大小的限制 1:修改配置文件(默认为4M 值的大小根据自己情况进行修改) <httpRuntime maxRequestLength=" ...
- javaweb(三十八)——事务
一.事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 例如:A——B转帐,对应于如下两条sql语句 update from account set mone ...
- JavaScript 中函数的定义和调用
3种函数定义方式: 1.使用关键字 function 来声明并定义函数 function myFunction(a, b) { return a * b; } 调用函数: var x = myFunc ...