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 ...
随机推荐
- Windows.Devices API in a C# WinForm Win32 Desktop application in Windows 10
https://social.msdn.microsoft.com/Forums/windows/en-US/40b4f86d-b6d5-430e-a235-7fc003dec4c4/how-to-u ...
- 了解MapReduce_2
再写MapReduce执行流程之前,首先先对MapReduce有一些了解: 1. 简介 MapReduce是一个计算框架,既然是做计算的框架,那么表现的形式上就有输入,操作输入,得到结果2.主从结构 ...
- 树莓3B+_root密码开启
开启root用户的方法:1.设置密码:sudo passwd2.sudo passwd --unlock root3.root用户登录:su
- Python学习 :多线程
多线程 什么是线程? - 能独立运行的基本单位——线程(Threads). - 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位. - 一条线程指的是进程中一个单一 ...
- Go语言中的字符串处理
1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号(“”)或反 ...
- WPF自定义命令
WPF的自定义命令实现过程包括三个部分,定义命令.定义命令源.命令调用,代码实现如下: public partial class MainWindow : Window { public MainWi ...
- ASP.NET底层与各个组件的初步认识与理解 (转载)
ASP.NET底层的初步认识与理解 最近在国外的网站乱走一通,发现一些比较好的文章,收集整理加于自己的理解,作为笔记形式记录下来,让以后自己有个回忆. ASP.NET是一个非常强大的构建Web应用 ...
- PostgreSQL的pg_stats学习
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL统计信息索引页 回到顶级页面:PostgreSQL索引页 对于pg_stas,说明文档在这里: http://w ...
- FFT&NTT总结
FFT&NTT总结 一些概念 \(DFT:\)离散傅里叶变换\(\rightarrow O(n^2)\)计算多项式卷积 \(FFT:\)快速傅里叶变换\(\rightarrow O(nlogn ...
- luogu 2051 [AHOI2009]中国象棋
luogu 2051 [AHOI2009]中国象棋 真是一道令人愉♂悦丧心并框的好题... 首先"没有一个炮可以攻击到另一个炮"有个充分条件就是没有三个炮在同一行或同一列.证明:显 ...