引言

关于题目,对数据平面进行编程,在之前读过the road to SDN,软件定义网络的思想在于数控分离,其对网络行为的编程暂时只局限于网络控制平面。其转发平面在很大程度上受制于功能固定的包处理硬件。而P4语言的出现就是为了完全摆脱网络数据平面的束缚。P4被称作为完全可编程南向编程接口,其提出的目的就是为了解决Openflow编程能力不足及其设计本身所存在的可拓展性差的难题。

  • P4的特性

    • 目标无关性:其不受限于具体目标设备的方式控制转发行为。
    • 协议无关性:可以利用编译器在不受限与具体协议的交换机或网卡上生成具体的配置。

关于P4这个名字的由来其实来自于“Programming Protocol-Independent Packet Processors”,翻译过来就是“与协议无关的数据包处理编程语言”


可编程数据平面可以达到的目标

针对于不同的使用者,其带来的优势也有所不同。

人员 优势
网络系统供应商 更快速的迭代,快速便捷的修复数据平面的漏洞,可以与软件行业有所交流收益
网络拥有者 自定义网络功能,对于网络功能的设计更简便更具有针对性和可操作性
网络芯片供应商 将开发设计重点转移芯片的基本素质,数据包处理架构以及基本模块
科研人员 更方便的验证实现新的想法与功能

文章中总结了如下优点:

  • 新功能:高速频繁的推出新的网络功能
  • 降低复杂性:在网络设备中可以只保留所需要的协议功能,去除那些无用又复杂的协议。
  • 有效利用资源:去掉不必要的功能(协议)之后就可以释放物理资源。提高资源利用率。
  • 增强可视化:出于对硬件资源的合理利用和为了满足所有的转发需求,原本的芯片设计倾向于牺牲监测、分析、诊断功能。而可编程之后,对于功能定制的自由度就更高。
  • 模块化:可以重用别人的P4代码库。
  • 可移植性:单P4代码可以配置到多台设备中。

最后两点可以看出和如今的软件开发有着很相似的特点,这也说明了,在未来的开发中可以更多的借鉴和参考如今已经很成熟的软件开发模式。

总结

P4编程语言具有对交换机的协议解析流程和数据处理流程进行编程的能力,通过P4,交换设备无需关注协议语法语义等内容,就可以完成数据处理,进行网络编程无需关心底层设备的具体信息。就像python or C写上层应用时不需要关心CPU的信息一样。


协议无关的交换机架构

出于对先前用于固定功能的数据包处理硬件的不满足,提出了一种通用架构是协议无关的交换机架构——Protocol-Independent Switch Architecture 即PISA。

PISA架构

  • 具有完全可编程数据包解析器,通用“匹配-动作”单元
  • 没有配置的PISA芯片不能实现任何功能,这就是所谓的协议无关。
  • 解析器和“匹配-动作”单元必须被编程后才能进行工作
    • 解析包
    • 解析之后的匹配原则
    • 匹配之后进行的动作
  • 高效率数据包处理
    • 多个数据包处理以流水线方式工作
    • 每个阶段有大量的“匹配-动作”单元进行并行操作。
  • 逆解析:可编程,经过修改过的数据包头在输出之前需要重新组合。
  • 回流路径:数据包可以重新反馈到解析器流水线进行重新处理。
  • 数据包生成器:CPU可以将周期生成数据包的工作由此模块完成。
  • 提供了连接数据和控制平面的高带宽通道。使得二者交互更为快速。

P4语言简介

每一个P4程序包含如下五个关键组件:

组件 功能
Header(包头) 定义描述一系列字段的顺序和结构,包括字段的宽度和字段值的限制
Parser(解析器) 定义如何识别出包头
Table(表) “匹配-动作”表是执行数据包处理的机制,P4程序定义了在表内可以匹配的字段和可以执行的操作
Action(动作) 预先定义的与协议无关的简单基本操作,可以在表中使用
Control Program(控制程序) 决定以什么顺序用“匹配-动作”表处理数据包
  • Herder:由于数据包的处理都需要包头的字段内容决定其操作,所以P4中也需要相对应的去定义包头。
  • Parser:定义包头之后,必须要定义包头协议字段之间的关系以及数据包的解析流程,所有的解析均从start开始,并在stop或者错误之后结束。
  • Table:P4中需要定义多种用途的表来存储匹配表项,其表的格式为Match-Action,即匹配域和对应的执行动作。具体的流表项需要在网络运行过程中通过控制器来编程下发,从而完成对应数据流的处理。
  • Action:P4定义了一套协议无关的原始指令集,基于这个指令集可以实现复杂的协议操作。与OpenFlow的动作类似,不过P4的是抽象程度更高的协议无关动作。
  • Control Program:控制程序决定了数据包处理的流程,即数据包在不同匹配表中的跳转关系。当表和动作被定义和实现之后,还需要控制程序来确定不同表之间的控制流。

关于P4的语言规范

  • P4算是一种声明式编程语言
  • 强类型:所有数据类型、有效的运算符和操作规则已明确定义,避免歧义。
  • 表达式:支持通用运算符组成各种表达式。
  • 顺序执行语义。

阅读 用P4对数据平面进行编程的更多相关文章

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

    引言 SDN架构强调了对控制平面的可编程,数据平面只负责转发,导致数据平面很大程度上受制于功能固定的包处理硬件. P4语言的特性: 目标无关性:P4语言不受制于具体设备,所有可编程芯片都可以使用P4编 ...

  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. PHP文档生成器(PHPDoc)的基本用法

    目录 PHP文档生成器(PHPDoc)的基本用法 PHPDoc概述 安装 PHPDoc注释规范 页面级别的注释 代码级别的注释 生成API文档 额外软件 PHP文档生成器(PHPDoc)的基本用法 P ...

  2. Hexo博客部署到个人服务器

    本文跳过阿里云创建git仓库.hexo部署到github的步骤,有需要的可以移步下面博客地址查看: 在阿里云服务器上创建git远程仓库 使用Hexo建立博客 一.服务器相关配置 本文使用hexo在本地 ...

  3. [Doctrine Migrations] 数据库迁移组件的深入解析一:安装与使用

    场景分析 团队开发中,每个开发人员对于数据库都修改都必须手动记录,上线时需要人工整理,运维成本极高.而且在多个开发者之间数据结构同步也是很大的问题.Doctrine Migrations组件把数据库变 ...

  4. Hadoop 动态扩容 增加节点

    基础准备 在基础准备部分,主要是设置hadoop运行的系统环境 修改系统hostname(通过hostname和/etc/sysconfig/network进行修改) 修改hosts文件,将集群所有节 ...

  5. Linux入门——SSH免密登录

    SSH免密登录 1.简介 SSH是一种网络协议,用于计算机之间的加密登录. 本文针对的实现是OpenSSH,它是自由软件,应用非常广泛. 2.初始化公钥私钥 有rsa,dsa两种加密方式,生成的公钥私 ...

  6. 中国软件大会上大快搜索入选中国数字化转型TOP100服务商

    大快搜索自荣获“2018中国大数据企业50强”殊荣,12月20日在由工信部指导,中国电子信息产业化发展研究院主办的2018中国软件大会上,大快搜索获评“2018中国大数据基础软件领域领军企业”称号,入 ...

  7. QEP之init()和dispatch()流程图

    抽象状态机类QFsm或QHsm有一个函数指针,用于在继承的具体状态机类中指向具体的状态函数,其有两个对外的接口函数init()和dispatch(),其工作原理是理解状态机处理事件过程的关键. 具体状 ...

  8. python3 安装pyhanlp方法

    直接pip install pyhanlp的时候会提示缺少Microsoft Visual c++环境, 其实没有Microsoft Visual c++环境也是可以的, 可以先安装jpype1,然后 ...

  9. git改密码出现授权问题

    git修改密码后显示Authentication failed for …… ,意思就是电脑修改密码后导致和git账户密码不匹配 解决方法:

  10. BZOJ2330_糖果_KEY

    题目传送门 看题目可知这是一道差分约束的题目. 根据每种关系建边如下: 对于每种情况建边,然后跑一边SPFA.(最长路) 因为可能会有自环或环的情况,都不可能存在. 跑SPFA时记录入队次数,超过N弹 ...