用P4对数据平面进行编程
引言
- SDN架构强调了对控制平面的可编程,数据平面只负责转发,导致数据平面很大程度上受制于功能固定的包处理硬件。
- P4语言的特性:
- 目标无关性:P4语言不受制于具体设备,所有可编程芯片都可以使用P4编程。
- 协议无关性:P4可以表达任何转发行为。
- P4可以生成南向API,帮助控制器与数据平面交互。

- 交换机通过P4,也可以变成防火墙、负载均衡器等等网络设备。
可编程数据平面的目标
| 不同领域 | 目标 |
|---|---|
| 网络服务厂商 | 快速迭代,易修复漏洞 |
| 网络拥有着 | 自定义网络功能,百家争鸣。 |
| 芯片制造商 | 不用考虑过多的协议细节(协议无关),只考虑提升芯片的转发速度。 |
| 科研人员 | 容易实现研发的新功能。 |
- P4的总体好处
- 新功能:频繁的推出新的网络功能。
- 降低复杂性:交换机中不用事先设定好那么多复杂的协议(其实有些协议已经不经常使用了),通过P4定义转发规则。省去或者去掉那些不使用且复杂的协议。
- 提高资源利用率:去掉一些不必要的协议,网络资源利用率自然提高。
- 可视化:传统硬件只负责转发,忽视了流量的监控、分析、诊断功能。加入可编程后,可以通过自定义模块来增加这些功能。
- 模块化:别人写的P4代码库可以被调用。
- 可移植性:一个P4代码可以配置到多台交换机上。
协议无关交换机架构
- 中端包处理硬件:CPU,FPGA。
- 中端包处理硬件的速度还不够,而且可编程高速包处理硬件是可行的,额外开销也可以做到足够低。
PISA架构

- PISA包括:可编程解析器,可编程匹配单元。
- 必须通过编程来告诉解析器和匹配-动作单元:
- 怎么解析包。
- 解析之后根据什么匹配。
- 每个匹配之后要执行什么动作。
- 没有配置的PISA芯片不会实现任何功能,这也是协议无关的一个体现。
- PISA内部有多个匹配-动作单元,多个包处理阶段以流水线方式工作(循序安排)。
- 每个阶段有多个匹配-动作单元并行。好像超标量流水线。
- PISA中其它的基本模块
| 名称 | 功能 |
|---|---|
| 逆解析模块 | 逆解析:经过修改过的数据包头在输出之前需要重新组合,PISA的逆解析操作也是可编程的。 |
| 回流路径 | 某些数据包需要重新反馈到流水线进行重新处理。 |
| 可编程数据包生成器 | CPU(控制平面)可以将周期生成数据包的工作交给这个模块。有些特殊情况是要生成数据包的。 |
| 连接数据平面与控制平面的高带宽通道 | 顾名思义 |
P4语言简介
- P4程序构成
| 模块 | 功能 |
|---|---|
| 包头 | 定义一系列数据包头部字段的长度,顺序。 |
| 解析器 | 如何识别出包头 |
| 表 | 匹配动作表。定义匹配字段(包括:完全匹配,三元匹配,最长前缀匹配,范围匹配。)和相应的操作。 |
| 动作 | 表中的动作。自定义执行序列。 |
| 控制顺序 | 定义以什么顺序用表来处理包。一个表到下一个表的控制流(由条件语句和表的引用组成的命令程序) |
- P4编译器的功能:P4语言-转换成交换机的硬件语言。
用P4对数据平面进行编程的更多相关文章
- 阅读 用P4对数据平面进行编程
引言 关于题目,对数据平面进行编程,在之前读过the road to SDN,软件定义网络的思想在于数控分离,其对网络行为的编程暂时只局限于网络控制平面.其转发平面在很大程度上受制于功能固定的包处理硬 ...
- 数据平面可编程与SDN关系理解,以及数据平面可编程的理解
数据平面可编程与SDN关系 狭义 广义 数据平面可编程的理解 狭义 广义
- 实验8:数据平面可编程实践——P4
一.实验目的 掌握V1Model框架下P4_16的程序结构和基本语法 能够运用 P4 进行简单数据平面编程 二.实验报告 在修改basic_tunnel.p4的内容之后输入make run 验证创建结 ...
- P4简介:数据平面的编程语言
15-05-29 http://p4.org/join-us/ 由两位SDN大师----来自普林斯顿的Jennifer Rexford和斯坦福的Nick McKeown---- 共同 ...
- 可编程数据平面将OpenFlow扩展至电信级应用(一)
可编程数据平面将OpenFlow扩展至电信级应用(一) 案例:基于WinPath网络处理器的电信极OpenFlow (CG-OF)client实现 作者:Liviu Pinchas, Tao Lang ...
- 可编程数据平面将OpenFlow扩展至电信级应用(二)
可编程数据平面将OpenFlow扩展至电信级应用(二) 案例:基于WinPath网络处理器的电信极OpenFlow (CG-OF)client实现 作者:Liviu Pinchas, Tao Lang ...
- 解析与动作联动得SDN数据平面
一种解析与执行联动的SDN可编程数据平面 现有问题和目标 在传统协议处理方式中,各层的协议类型和组合方式固定,使得添加或修改协议很困难(因为需要修改网络设备的解析模式) 基于解析和执行联动结构的可编程 ...
- 软件定义网络基础---SDN数据平面
主要介绍SDN架构和转发模型 一:传统网络设备 (一)传统设备控制平面和数据平面 (二)数据平面的任务 数据平面对数据包的处理,主要通过查询由控制平面所生成的转发信息表来完成 (三)传统网络数据平面数 ...
- EF – 2.EF数据查询基础(上)查询数据的实用编程技巧
目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...
随机推荐
- Linux相关网络命令
1.简述osi七层模型和TCP/IP四层模型 OSI七层模型 TCP/IP四层模型 2.简述iproute家族命令 ip命令: ip [OPTIONS] OBJECT {COMMAND|help} i ...
- js的组合函数
1.组合函数即由若干个函数组合成一个新的函数,同时完成数据的传递 1>最简单版本 这种方法实现的组合函数,需要我们指定函数的执行顺序 /**第一种方法 */ function add(a, b) ...
- Node.js——fs模块(文件系统),创建、删除目录(文件),读取写入文件流
/* 1. fs.stat 检测是文件还是目录(目录 文件是否存在) 2. fs.mkdir 创建目录 (创建之前先判断是否存在) 3. fs.writeFile 写入文件(文件不存在就创建,但不能创 ...
- Centos7.5搭建Hadoop2.8.5完全分布式集群部署
一.基础环境设置 1. 准备4台客户机(VMware虚拟机) 系统版本:Centos7.5 节点配置: 192.168.208.128 --Master 192.168.208.129 --Slave ...
- LIFO栈 ADT接口 数组实现
LIFO 栈结构 typedef int ElemenType; struct seqStack{ ElemeType data[MaxSize]; int top; }; typedef struc ...
- 【EXCEL】簡単に重複探し
下記のような表があって.重複があるかどうか探すのが大変と思いますが. 簡単に重複探す方法を紹介します. Step1.重複を探す(例えこちらでは項目)を選択します. Step2.メニューで 条件付き書式 ...
- Java程序设计 第16周 课堂实践 —— 数据库4
Java程序设计 第16周 课堂实践 -- 数据库4 课堂实践任务4 查询world数据库,查询哪个国家的平均寿命最长. 代码分析 实现查询数据库需要我们修改Message.java,MessageD ...
- 20155232 2016-2017-3 《Java程序设计》第4周学习总结
20155232 2016-2017-3 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 继承与多态 所谓继承就是避免多个类间重复定义共同行为. 1.重复在程序设计上就是不好 ...
- python append extend区别
1. 列表可包含任何数据类型的元素,单个列表中的元素无须全为同一类型. 2. append() 方法向列表的尾部添加一个新的元素. 3. 列表是以类的形式实现的.“创建”列表实际上是将一个类实例化.因 ...
- 源码阅读-GlobalTimer
最近看到一篇文章推了一个开源项目,GlobalTimer.主要是可以用一个定时器来统一管理多个定时任务,可以针对特定任务进行管理. 一.原理 1.一个公共的timer 2.封装任务到自定义个Event ...