本系列我学习P4的学习笔记,很多是翻译自官方文档,很多不是很准确的地方,建议大家去看官方文档。
P4是一种语言,用于表示如何通过可编程转发元件(如硬件或软件交换机,网络接口卡,路由器或网络)的数据平面处理数据包。P4(Programming Protocol-independent Packet Processors:独立于编程协议的数据包处理器)名字的来源于下面这篇论文: https://arxiv.org/pdf/1312.1719.pdf。 虽然P4是最初设计用于编程交换机,但现在其范围已扩大到涵盖各种各样的设备。在本文档的其余部分中,我们对所有此类设备使用通用术语目标。
许多类似设备的实现包含控制平面和数据平面。 P4旨在仅实现数据平面功能。 P4程序还部分地定义了控制平面和数据平面通信的接口,但P4不能用于描述控制平面功能。在本文档的其余部分中,当我们将P4称为“编程目标”时,我们的意思是“编程目标的数据平面”。作为目标的具体示例,图1说明了传统的特定功能的交换机和P4可编程交换机之间的差异。

在传统的交换机中,制造商定义了数据平面功能,控制平面通过管理表格中的条目来控制数据平面(例如:路由表),配置专用对象(例如:meters),以及处理控制分组(例如:路由协议分组)或异步事件,例如链路状态改变或学习通知。
P4可编程交换机与传统交换机有以下主要两个区别:

图2显示了使用P4可编程交换机的典型工作流程。交换机制造商为该交换机提供硬件或软件实现框架,架构定义和P4编译器。 P4程序员为特定的架构编写程序,在交换机及其外部定义一组P4可编程组件数据平面接口。
编译一组P4程序实现以下两个功能:
•数据平面配置,实现输入程序中描述的转发逻辑
•用于管理控制平面中数据平面中对象状态的API
来源:网络
Main Memory 主存 1. 主存在系统中的位置 2. 共享资源 3. 主存面临的问题 内存子系统 channel->DIMM(内存条)->Rank->Chip->Bank->Row/Column 内存子系统分解 channel DIMM 3. Rank 4. chip 5. bank...
P4 近来在SDN的数据平面可以算是大行其道,无论是Nick 大神的Barefoot 公司的成立,还是美国高校和产业界几乎半年一次的workshop 和讨论,都让从事网络研究的人特别是年轻人趋之若鹜。之前,我的一些工作更关注与控制平面,关注点也更多的在控制器。 p4, 我最早的接触还是当时follow Nick Feamster 教授的SDN公开课时, 后来陆陆续续看了些相关的文章。 但是数据平面...
现有的SDN解决方案将控制平面与转发平面分离,并为我们提供了控制平面的可编程能力。而事实上,目前通过软件编程实现的控制平面的功能,在传统的高级交换机和路由器上也都能实现,差别是厂商把这些功能固化在了系统/硬件中,这些系统/硬件是封闭的,第三方难以介入进行定制或二次开发。虽然一些高级设备提供了SDK,使得用户能够进行一定程度的定制,但也必须受厂商所制定的规范的限制,能做到的事情十分有限。目前SDN所...
1.上官网下载jdk的安装包 https://www.oracle.com/ 进入官网,按如下所示步骤进行 选择jdk 选择版本 windows安装教程,下面是linux安装教程 由于新版需要登录才可以下载,所以我们选择去网上找一个,哈哈,我根本不想注册,感谢这位大佬分享账号了,大家不要改密码啊 参考文档 https://b...
残差块 残差块是两层神经网络在L层**,得到a[l+1]再次进行**。在ReLU非线性**前加上a[l],a[l]的信息直接到达神经网络的深层 不再沿着主路径传递。也称跳远连接(捷径)。 跳远连接构成残差块,残差块构成残差网络。 由此得出a[l+2]=a[l]。所以尽管多了两层,也只是把a[l]的值赋给a[l+2],建立了恒等函数。 要保证a[l]和a[l+2]的维度相同 若不同需要将...
最近在优化一个办公系统,需要计算请假时间 首先要实现请假时间的计算,需要以下几步 第一步、首先我们要知道时间表(我们以最常用的 上午上班时间(09:00 - 12:00)下午(13:00 - 18:00)为例) 第二步,我们分析可能出现的可能性 1、早上请假 2、下午请假 3、跨中午请假 4、跨天但又不满一天请假 5、跨天满一天请假 6、跨周请假(需要除去周末) 7、节假日请假 (需要除去节假日)...
Eclipse下Maven新建Web项目步骤 1、 2、 3、 4、 5、 问题描述 最近用eclipse新建了一个maven项目,...
1.javascript中的Iterator 参考链接 参考链接 执行Symbol.iterator这个属性,会返回一个遍历器对象。该对象的根本特征就是具有next方法。每次调用next方法,都会返回一个代表当前成员的信息对象,具有value和done两个属性。 js中具备Iterator接口的数据结构有: 总结:Iterator主要是供for of使用。只有部署了Iterator接口的数据结构,...
1、picdiet是一款在线批量压缩图片神器,它不需要后端服务器或者API的支持,仅通过你的浏览器来压缩图片大小,这意味着它压缩图片极快并且不会导致隐私或敏感图片泄漏。同时我们大量的测试结果也证明其压缩表现要远好于常规的压缩软件如:jpegoptim,jpegtran,jpegrescan和jpegmini 2、cloudconvert是一款在线全能格式转换工具 3、smallpdf在线pdf处理...
难得放假了,除了弹吉他以外,也画一下画。 绘画的过程也发上来给大家看看: 接下来说说绘画的工具。 我是使用iPadPro2 10.5英寸+Apple Pencil来画画的。 一开始我打算使用Surface Go来画画的,我想,之前我都是拿Wocam画板+PhotoShop来画画的,Surface能直接在屏幕上画画,按道理应该更好用才对。Surface Go买回来几个月,那支笔都没怎样用过,于是就试...
I, have a DecimalField in Django model and form, likewise I, have an input in html form, with comma as thounsand separator and dot for decimal separator (123,456.78), formated with jquery plugin Cleav...
I dont quite understand why Static methods can be inherited in Java ? Inheritance is like inheriting from the base class AND Static belongs to the Class and not Object. So if the Static belongs to the...
I am using javascript to hide the post button until text has been entered into the form. It works fine but when i have the form being rendered for each post in a loop it only works for the first post ...
I ask earlier about this. here is the link and I used the checked answer. When I tried to add another listdown with not the same array. I'm having an error if I choose all. here is my full formula: {=...
I'm using MvxSpinner and just want to show drop down selected value over spinner.Currently its showing first item from dropdown list but i want to show blank as i didn't choose any value from dropdown...