引言


  • 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对数据平面进行编程的更多相关文章

  1. 阅读 用P4对数据平面进行编程

    引言 关于题目,对数据平面进行编程,在之前读过the road to SDN,软件定义网络的思想在于数控分离,其对网络行为的编程暂时只局限于网络控制平面.其转发平面在很大程度上受制于功能固定的包处理硬 ...

  2. 数据平面可编程与SDN关系理解,以及数据平面可编程的理解

    数据平面可编程与SDN关系 狭义 广义 数据平面可编程的理解 狭义 广义

  3. 实验8:数据平面可编程实践——P4

    一.实验目的 掌握V1Model框架下P4_16的程序结构和基本语法 能够运用 P4 进行简单数据平面编程 二.实验报告 在修改basic_tunnel.p4的内容之后输入make run 验证创建结 ...

  4. P4简介:数据平面的编程语言

    15-05-29          http://p4.org/join-us/ 由两位SDN大师----来自普林斯顿的Jennifer Rexford和斯坦福的Nick McKeown---- 共同 ...

  5. 可编程数据平面将OpenFlow扩展至电信级应用(一)

    可编程数据平面将OpenFlow扩展至电信级应用(一) 案例:基于WinPath网络处理器的电信极OpenFlow (CG-OF)client实现 作者:Liviu Pinchas, Tao Lang ...

  6. 可编程数据平面将OpenFlow扩展至电信级应用(二)

    可编程数据平面将OpenFlow扩展至电信级应用(二) 案例:基于WinPath网络处理器的电信极OpenFlow (CG-OF)client实现 作者:Liviu Pinchas, Tao Lang ...

  7. 解析与动作联动得SDN数据平面

    一种解析与执行联动的SDN可编程数据平面 现有问题和目标 在传统协议处理方式中,各层的协议类型和组合方式固定,使得添加或修改协议很困难(因为需要修改网络设备的解析模式) 基于解析和执行联动结构的可编程 ...

  8. 软件定义网络基础---SDN数据平面

    主要介绍SDN架构和转发模型 一:传统网络设备 (一)传统设备控制平面和数据平面 (二)数据平面的任务 数据平面对数据包的处理,主要通过查询由控制平面所生成的转发信息表来完成 (三)传统网络数据平面数 ...

  9. EF – 2.EF数据查询基础(上)查询数据的实用编程技巧

    目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...

随机推荐

  1. K8s集群安装和检查(经验分享)

    一.组件方式检查 1. Master节点: root>> kubectl get cs 2. Node 节点: 无  二.服务方式检查 1. Master 节点: root>> ...

  2. c# Reverse()的两点用法

    Rervese的基本用途是:反转数组中元素的顺序,常见的两种用法如下: 1.void Array.Reverse(Array array) static void Main(string[] args ...

  3. shell习题第10题:打印每个单词的字数

    [题目要求] 用shell打印下面这句话中字母数小于6的单词. Bash also interprets a number of multi-character options. [核心要点] for ...

  4. Redis笔记 -- 链表和链表节点的API函数(三)

    链表和链表节点API 函数 作用 时间复杂度 listSetDupMethod 将给定的函数设置为链表的节点值复制函数 复制函数可以通过链表的dup属性直接获得,O(1) listGetDupMeth ...

  5. C语言链队列

    链队列类似于单链表,为了限制只能从两端操作数据,其结构体内有2个指针分别指向头尾,但队列里的节点用另一种结构体来表示,头尾指针则为指向该结构体的类型.只能通过操作头尾指针来操作队列. typedef ...

  6. git——本地项目上传到git

    1.对于github相信大家写自动化代码的人都不陌生,而且这也可以说是你进军自动化的一项必须解锁的技能,今天抽空开始整理笔记,顺便整理下github的基本使用,从本地上传代码托管: 一.从无到有:先注 ...

  7. 关于 idea 快捷键 alt + f7 无法使用的一些尝试

    1. 概述 问题 使用 idea 时, 快捷键 alt + f7 无法生效 环境 OS: win10 idea: idea 2018.1.5 GeForce Experience: 3.17.0.12 ...

  8. vs2013发布网站合并程序是出错(ILmerge.merge:error)

    Vs2013发布网站时,生成错误提示: 合并程序集时出错: ILMerge.Merge: ERROR!!: Duplicate type 'manage_ForcePasswrod' found in ...

  9. 20155317 实验二 Java面向对象程序设计

    20155317 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...

  10. 2017-2018-1 20155329《信息安全技术》实验二——Windows口令破解

    2017-2018-1 20155329<信息安全技术>实验二--Windows口令破解 实验原理 口令破解方法 字典破解: 指通过破解者对管理员的了解,猜测其可能使用某些信息作为密码,利 ...