【P4论文分享】基于P4的可编程数据平面研究及其应用

【P4论文分享】基于P4的可编程数据平面研究及其应用P4综述论文学习,了解P4架构和发展前景,文章发布于2019年,仅具有一定的参考价值

大家好,又见面了,我是你们的朋友全栈君。

前言

本文是本人学习的笔记,如有错误欢迎指正。

论文下载地址:基于P4的可编程数据平面研究及其应用

本文目录


1 引 言

传统交换机的局限性

  1. 传统交换机内控制逻辑与底层转发硬件紧密耦合, 导致新的业务逻辑难以实现;

  2. 交换机品牌类别多种多样, 不同品牌交换机的管理接口封闭独立, 因此网络管理员只能通过命令行依次操作每台设备, 手动地将高级网络策略转化为设备配置命令并下发到不同品牌的交换机上, 配置难度和运维成本随着网络规模急剧上升 ;

  3. 报文处理逻辑不可更改, 不具备可编程性, 只能依靠更换设备的方式来更新升级支持新协议与新功能, 并且交换机长达数年的研发周期与高昂的购置成本增加了其支持新协议和新功能的时间成本与资金成本。

如何增强网络开放性?

a) 2 0世纪9 0 年代 , DARPA提出了主动网络这一新型网络体系架构

首次提出了面向定制化服务的可编程网络基础设施的想法

b) 世界多国开展过未来网络体系结构相关的研究项目

例如美国的GENI、欧盟的FIR E、日 本 的JGN2plus以 及我国的SOFIA2等

c) IETF提出的ForCES将网络元素分为控制件和转发件

用ForCES协议来实现各部件的协同和交互, 以提高网络的管控能力;

d) 4D架构重新设计了互联网控制和管理结构,

将控制平面与数据平面分离, 实现控制平面逻辑中心化与自动化

e) RCP是基于 AS结构的逻辑中央平台,

通过原型系统验证了B G P的路由决策与转发分离架构的可行性

f) S A N E是面向企业网的管理架构, 所有路由和接入控制决策都由一台逻辑中央服务器控制

g) 在2006年, 斯坦福大学的C a s a d o博士和他的导师 M c K e o w n教授领导了一个关于网络安全与管理的项目E t h a n e

受此项目启发, 斯坦福大学的研究人员们进一步抽象Ethane的设计, 将传统转发设备的数据平面和控制平面相互解耦, 通过集中式控制器以标准化的接口对网络设备进行配置和管理, 增强了网络管控的灵活性与支持新协议的能力,

h) 2008年首次提出了OpenFlow的概念, 并详细介绍其工作原理, 还列举了OpenFlow的应用场景, 包括校园网络内的协议测试、 网络域内的访问控 制、 网 络 环 境 隔 离 等

基 于 O p e n F l o w技术,M c K e o w n等 人 提 出 了 软 件 定 义 网 络( S o f t w a r e – D e f i n e d N e t w o r k i n g,S D N) 的 概 念

OpenFlow局限性

O p e n F l o w支持的匹配域数目随着新版本支持特性的更新而不断增加
每增加一个匹配域就需要重新编写控制器程序、 交换机的协议栈以及交换机转发芯片的数据包处理逻辑

(1) 增加了交换机设计的难度
(2) 影响O p e n F l o w协议的可扩展性

解决OpenFlow问题

M c K e o w n等人提出了可编程协议无关报文处理语言P4 以 及 相 应 的 转 发 模 型

(1) 可以实现诸如网桥、 路由器、 防火墙等已有的网络设备功能 与 网 络 协 议
(2) 很 容 易 地 支 持 包 括V x L A N3、 R C P在内的新协议. 并且, 诸如带状态负载均衡、 大 流 检 测、 分 布 式 计 算等

2 P4语言及架构

2 . 1 P 4设计目标

1) 可重配置性
交换机的数据包处理方式能够被重新配置

这个设计目标是为了在不更换交换机硬件的前提下通过编程的方式灵活定义数据平面的报文处理流程

2) 协议无关性
交换机支持的数据包处理行为不受协议类型局限, 并且管理员可以定制交换机本身所支持的协议.

这个设计目标是为了让数据平面设备无需关注协议的语法语义内容, 让网络管理人员可以去除不需要的协议、 快速定义新的协议.

3) 平台无关性
网络管理员能够独立于特定的底层平台来描述报文处理功能, 管理员编写的P 4 程序与平台实现无关.

平台无关性的好处在于使P 4代码能够跨平台无缝移植, 并且网络管理员可以像编写C或者C++程序那样不用关注底层架构, 从而减轻网络管理员负担.

2 . 2 P 4抽象转发模型

在这里插入图片描述

(1) 解析器.
解析器的功能是将头部域从报文中提取出来, 按照数据包头解析图解析, 余下的载荷与头部分开缓存, 并且载荷不参与后续匹配

管理员可以定制数据包头结构和解析流程, 解析流程会被编译器编译为数据包头解析图并配置到解析器上.

(2) 多级流水线.

a. 从空间上来看
被提取出来的头部经过多级匹配动作表
b. 从逻辑上来看
流水线是由匹配动作表组成的一个有 向 无 环 图 ( D i r e c t e d A c y c l i c G r a p h, D A G) , 这个D A G也被称作数据平面控制流.

i) 匹配动作表
多级匹配动作表以流水线的形式组织起来, 分为入口流水线和出口流水线两部分:

  • 入口流水线的匹配动作表决定了报文的输出端口与队列, 基于入口流水线的处理, 报文可能被转发、 复制、 丢弃或者触发流控;
  • 出口流水线的匹配动作表主要负责修改报文头部.

ii) 定义控制流
编写P4程序时, 管理员可以按照P 4语法规范去定义控制流以及每张匹配动作表要匹配什么样的数据包、 执行什么样的动作, 从而达到自定义数据平面流水线处理逻辑的目的;

iii) 元数据
报文头部在各级匹配动作表之间传递的过程中, 可以携带被称为元数据的额外信息, 具体来说, 元数据可以包括入端口信息、 时间戳等等

(3) 缓冲区.

缓冲区用来缓存载荷与交换机队列中等待被匹配动作表处理的已解析的头部.

P4与OpenFlow主要不同点:

(1) O p e n F l o w仅 支 持 固 定 协 议 的 解 析器, 而P 4支持可编程的解析器来自定义新的头部;

(2) O p e n F l o w假定多级匹配动作表是顺序执行的, 而P 4的匹配动作表可以是并行或者顺序执行的;

(3) O p e n F l o w假 定 动 作 是 一 系 列 固 定 的 动 作, 而P 4的动作可以是由交换机所支持的协议无关原动作组成的复合动作.

2 . 3 P 4工作流程

P 4程序而言, 其 工 作 流 程 可 以 分 为 两 个相互独立的阶段— — —配置阶段和运行阶段:

1) 配置阶段决定了交换机支持何种协议以及交换机如何处理报文. 在这里插入图片描述

2) 运行阶段决定了网络策略在指定的时间作用在报文上.

2 . 4 P 4语法要素

P 4语言是一种能够实现可重配置性、 协议无关性、 平台无关性的数据平面编程语言。

语法要素是P 4提供给管理员来描述基于抽象转发模型的数据包处理行为的手段.。
在这里插入图片描述

1)头部( H e a d e r)

定义了数据平面需要解析的数据包头格式, 包括数据包头所含域的结构、 宽度和值的限定等.

头部的内容决定数据包后续的操作.

2) 表( T a b l e)
表的 格 式 为 匹 配+动 作, 即 匹配域和相应的执行动作.

3) 动作( A c t i o n)
动作用来描述数据包头部和元数据如何被处理.

P 4定义了一套协议无关的原动作( P r i m i t i v e A c t i o n) , 包括丢包、 设置字段、复制包头等.
管理员可以自定义一个由多个原动作组成的复合动作( C o m p o u n d A c t i o n).

4) 控制流( C o n t r o l F l o w)
控制流是匹配动作表组成的有向无环图, 定义了数据包在不同的匹配动作表中的跳转关系. 其跳转逻辑包括顺序逻辑、 判断逻辑等

不允许一张匹配动作表对同一个数据包执行多次匹配.

5) 解析器( P a r s e r)
解析器定义了如何鉴别数据包头部以及数据包头部域的有效顺序,

用于指导数据平面上的物理解析器按照 何 种 逻 辑 去 解 析 数据包.

6) 逆解析器( D e p a r s e r)
逆解析器是当数据平面多级流水线处理完数据包后, 将处理完的数据包头部进行重组的结构.

7) 用户自定义元数据( U s e r – d e f i n e d m e t a d a t a)
用户自定义元数据是用户自定义的与每个报文相关的数据结构,可以存放用户定义的值、 临时变量等.

用户自定义元数据能够有效地支持数据平面带状态处理, 数据包在各级匹配动作表之间传递时,可以携带这些用户自定义元数据以完成匹配动作表间的参数传递.

8)固有元数据( I n t r i n s i c m e t a d a t a)
由数据平面自身产生或者消耗的信息, 例如收到报文的入端口信息、 报文将被转发的出端口信息等.

可以利用读取或者设置固有元数据来完成一些数据平面预定义的功能, 例如多端口洪泛等 >>

9)外部对象( E x t e r n o b j e c t )

外部对象是事先定义好 的 库 函 数 结 构, P 4程 序 可 以 通 过 A P I 对其进行调用. 但是其内部行为是硬件实现,不能编程。

10) 结构定义( A r c h i t e c t u r e d e f i n i t i o n)**

一系列用来描述可编程网络设备的声明

2 . 5 P 4语言的局限性

直到P 4 1 6版本发布, P 4语言仍然存在以下的局限性:

a)语法局限性

(1) P 4程序不支持循环解析. 没有专门的循环函数, 解析器只能通过有限状态机来支持循环.

(2) P 4程序不支持动态内存分配. 资源消耗需要在编译时静态估计, 会导致资源利用不充分.

(3) P 4程序不支持指针或者引用.

(4) P 4 1 4程 序 通 过c o u n t e r、 r e g i s t e r和 m e t e r来维持跨越不同数据包之间的状态, 但是P 4 1 4无法遍历所有计数器来计算统计信息;

P 4 1 6为了维持跨越不同数据包之间的状态, 需要使用外部方法( e x t e r n m e t h o d).

b) 功能局限性

(1) P 4程序自身不能支持多播与广播, 需要通过设置特定的固有元数据表示“ 广播组” 来触发P 4的外部机制, 执行所需的报文复制.

(2) P 4程 序 不 能 支 持 描 述 队 列、 调 度 或 者 多 路复用.

(3) P 4程序不适合做深度包检测. 一般而言, 很多对报文载荷做操作的事情P 4都不能完成

(4) P 4程序不支持报文的分段和重组, 因此P 4 程序不能实现T C P协议的所有功能.

(5) P 4程 序 不 支 持 产 生 新 的 报 文 ( 例 如: I C M P r e p l y) , 只能处理已有的报文.

c) 标准规范局限性

目前数据平面和控制平面之间没有标准的通信方式, 通 常 使 用 自 定 义 的 外 部 方 法 ( 例 如: l e a r n i n g) 来完成.

2 . 6 其它数据平面编程语言

  1. P O F将数据包头视为{ 偏移量, 长度} 元组, 从而生成类似 汇 编 语 言 的 低 级 编 程 语 言. 虽 然P O F能够简化编译器,

但是把数据包解析的负担转嫁给了管理员, 并且没有提供一个简单易用的编程模型来描述数据包头和解析器.

  1. C l i c k ]使用C++编写的模块来构建交换机, 富有表现力, 适合表达数据包在C P U中的处理逻辑.

但是C l i c k不能满足“ 控制器-交换机” 的架构需求, 无法将“ 解析-匹配-动作” 的流水线操作映射到指定的硬件上,无法描述交换机上的数据包处理逻辑.

  1. p a c k e t C 允许访问数据包载荷、 允许通过为全局共享内存提供同步结构来实现带状态处理

但是p a c k e t C着眼于N P U以及软件交换机等灵活性更高但是性能较低的设备, 很难满足诸多网络场景下高吞吐的线速转发需求.

  1. P X 是 面 向 F P G A 平 台 ( 例 如:X i l i n x V i r t e x – 7) 的数据包处理语言, 将数据包解析和处理的高级声明规范转换为 V e r i l o g或 VH D L中目标基板 的 寄 存 器 传 输 级 ( R e g i s t e r – T r a n s f e r L e v e l, R T L) 描述, 然后通过标准F P G A工具链将此R T L 描述进一步编译为F P G A的可执行文件.

然而, P X 仅将R T L作为输出, 仅能运行在F P G A平台上, 无法满足平台无关性的需求.

3 P4相关研究的最新进展

本节系统地提出 了 P 4的研究框架

在这里插入图片描述

3 . 1 异构平台与编译器设计

不同的平台有着各自不同的特点: 例如, 可编程交换机这类硬件平台的性能较高, 但是包括软件交换机在内的软件平台的灵活性更强. 负责将P4程序编译到不同平台的后端编译器设计成为了一个重要的研究点

3 . 1 . 1 硬件平台与后端编译器

1) 在可编程交换机上运行P4程序

文献[ 2 6] 针 对P 4语 言 首 次 为 RMT [12]、 I n t e l F l e x p i p e1以及C a v iu m X P l i a n t2等可编程交换机芯片提出了编译器设计方法, 该工作主要解决了可编程交换机芯片中的匹配动作表配置问题.

i) 首先, 该工作系统地研究了可编程芯片 中 的 结 构 和 资 源 限制, 并对P 4程序中决定匹配动作表相对位置的依赖关系进行了深入的分析.

ii) 其次,提出了匹配动作表的映射问题, 并结合已有的贪心算法和整数线性规划算法解决该问题中存在的四类限制:

针对单个逻辑表的流表项分配限制、 针对物理表的内存容量限制、 针对逻辑表之间的依赖限制以及可编程芯片特有的限制.

实验结果:
实验结果表明贪心算法拥有较高的运行效率, 但是针对不同目标( 如优化资源、 优化延迟等) 的优化效果弱于整数线性规划.

2) 在FPGA上运行P4程序

由于网络数据包需要被线速处理, 因此对硬件平台的性能有着较高要求; 并且, 在数据中心和一些企业网中,需要修改网络策略或者部署新的协议来满足实际的生产需求

因此, 数据包处理对硬件平台的灵活性与可编程性提出了新的要求.

i) F P G A 比C P U有更高的性能, 比A S I C有更强的灵活性, 因此将F P G A用来做数据包处理的硬件平台可以很好地兼顾性能与灵活性.

但是, F P G A使 用 低 级 语 言 编 程, 上 手 难 度 较大, 调试非常复杂, 并且无法做到不同平台间的移植

ii) 文献[ 2 8 – 2 9] 设计了报文解析器生成模型以及相应的转换算法, 可以将P 4的解析描述图转化为适合在F P G A上部署的合成VH D L代码

其中, 报文解析器硬件架构由一组可重配置解析器引擎以流水线方式构成, 生成的解析器支持对1 0 0 G b p s流量的线速解析,但是与手写的 VH D L相比, 在延迟和资源消耗方面增加了一倍性能开销.

iii) W a n g等人[ 2 7, 3 0]设计了一个可以将完整的P 4程序编译成F P G A程序的开源编译器, 将程序员编写的P 4代码先编译为B l u e s p e c代码, 然后生成 V e r i l o g代码.

(a) 优点
编译生成的代码可以线速运行在X i l i n x或者A l t era等多种商用FPGA硬件上 为FPGA上新协 议 和 应 用 的 开 发 提 供 了 一 个 更 加 灵活、 高效、 可移植的编程抽象 降低了F P G A的开发门槛,缩短了开发周期
(b) 缺点
生成的解析器的吞吐会随着所支持协议栈的复杂度的增加而减少

iv) 文献[ 3 1] 针对以前工作在性能和资源利用上的不足, 提出将P 4程 序 高 效 转 化 到F P G A 上的开源框架和相关算法 >>

延迟降低了4 5 %、 查表的资源占用降低了4 0 %.

v) K e k e l y等人[ 32]为了能够兼顾较快的处理速度与较高的内存资源使用, 基于D C F L 算 法 设 计 了 将 P 4匹 配 动 作 表 映 射 到F P G A的新硬件架构.

vi) C a b a l等人[ 3 3]为了对数据包做更快的解析以实现更高的吞吐, 提出了一个可以由P 4语言重配置的解析器架构, 将复杂的报文解析划分为多个简单的并行报文解析

首次实现了能够在单个F P G A上达到1 T b p s的吞吐
能够在小包突发流的情况下保证线速转发,只引入了很小的硬件资源开销.

3) 在GPU上运行P4程序

充分利 用 G P U 多 核 并 行 计 算 的 优 势, 提升P 4程序的执行效率

i) 文献[ 3 4 – 3 5] 研究了将P 4程序映射到G P U与C P U组成的混合架构上.

核心思想是将数据包的解 析操作在CPU上执行, 将数据包的匹配动作操作在GPU上并行执行

做了如下的优化:

对GPU内核设计做了优化以支持匹配动作的原语、 提出了延迟隐藏技术来缩小CPU/GPU间通信开销、 设计了负载均衡策略来最大化CPU与G PU的资源利用率.

具体的工作流程如下:

i) 在配置阶段将P4程序转化为中间表示形式,然后使用正则表达式从IR中找到所有表的正确执行顺序,最后将匹配动作表加载到GPU中。

ii) 在运行阶段, 数据包通过直接内存访问从网卡加载到内存,然后CPU控制数据 包 以 批 处 理 的 方 式 从 内存按 照一 定 比 例 分 别 加 载 到 G P U 与 C P U ,最 后G P U与C P U将各自处理完的报文返回至内存, 交付给网卡。

实验结果表明该系统可以实现较高的查找速度与较小的报文延迟.

4) 抽象编程模型的研究

P4使得交换机支持带状态数据包处理, 使以前需要在控制平面运行的一些处理逻辑可以直接实现在数据平面。

高效正确地管理分布式的、带状态的数据平面是很有挑战的。

文献[ 36]提出了一个带状态编程模型— — —S N A P .

通过S N A P, 编程人员可以在“ 一个大交换机模型” ( O n e B i g S w i t c h) 上进行编程,只需要针对一个交换机定义最基本的数据包处理逻辑, 该系统会自动将程序部署到多个交换 机 并 完 成 存 储、 通 信 等 协 调 工 作.

  • S N A P的编译器会检查各状态间的读写依赖, 并将S N A P程序转化为扩展转发决策图( e x t e n d e d F o r w a r d i n g D e c i s i o n D i a g r a m s,x F D D)
  • 之后使用混合整数 线 性 规 划 (M i x e d – I n t e g e r L i n e a r P r o g r a m, M I L P) 来联合优化状态存储和路由
  • 最后据此生成各个交换机的具体配置.

3 . 1 . 2 软件平台与数据平面虚拟化

1) 软件平台

在数据中心里, 管理程序(H y p e r v i s o r) 通常会使用软件交换机来完成虚拟机之间的通信.

软件交换机的升级和对新协议的支持是一个复杂而艰难的过程:

i) 文献[ 3 7] 基于如今最流行的软件交换 机 O p e n v S w i t c h( O V S) [ 3 8]提 出 了 可 编 程的、 协议无关的软件交换机架构P I S C E S

使得软件交换机的数据包转发行为可以使用P 4语言进行描述
将定制协议的行为与底层软件交换机的代码解耦, 只需要修改P 4程序就能支持新协议、添加新功能.

P I S C E S将写好的P 4程序经过编译器编译产生能 够 在 O V S上 运 行 解 析、 匹 配 和 动 作 的 代 码。
P I S C E S的性能与O V S基本接近, 但是实现相同功能的P I S C E S比O V S节省约4 0倍的代码量。

ii) 文献[3 9] 研究了针对D P D K的P 4编译器模型设计, 该编译器模型将软件交换机模型抽象分为平台相关部分与平台无关部分.

编译器仅需负责将P4程序编译到平台无关部分 生成平台无关部分的代码之后, 需要重新对软件交换机进行编译。

p4c – bmv2是P 4语言联盟 提 供针对P 4行为模型的编译器, 它可以生成P4行为模型所需的JSON配置文件.作为软件交换机的P 4行为模型无需再重新编译.

iii) 文献[40] 利用了预取和批处理两种方式对基于P 4程序编译生成的软件交换机性能进行了优化

P 4软件交换机编译器生成的代码的执行效率能够接近经过手工代码优化的软件交换机.

iv) V P P( V e c t o r P a c k e t P r o c e s s i n g) ——基于x 8 6C P U架构开发的高性能数据包处理软件平台, 有文献[ 4 1 – 4 2] 设计并实现了将P 4程序编译到该平台上.

V P P中, 报文以批处理的形式实现每一级流水线的处理, 这使得VPP具有较高的并行处理能力和较高的可扩展性.

该工作将P 4程序中的表映射到了V P P中的节点处理, 因此使得基于该工作开发V P P程序变得更加简单高效

v) 开 放 数 据 平 面 ( O p e n D a t a P l a n e, O D P) 为数据平面编程提供了 统 一 的 抽 象 接 口

基于ODP规范API开发的数据平面程序可以移植到不同厂商生产的不同 软 件 平 台 上 ( 例 如: x 8 6, x 8 6 +DPDK,ARM- So C等).

文献[43 – 44] 为P4程序实现了一个从P4语言到ODP的编译器MACSAD

设计并实现了从P4程序到ODP规范A P I的编译器,借助ODP项目的多平台支持性,使得P4程序可以无缝的迁移到大量支持ODP接口的设备上。
主要包括三部分:

i) 辅助前端插件以插件的方式支持不同DSL的前端编译器
ii) 核心编译器将不同DSL前端编译器生成的中间语言统一编译为ODP支持的API
iii) 辅助后端插件负责屏蔽不同设备平台的实现, 为核心编译器提供统一的底层接口

2) 数据平面虚拟化

单个P 4可编 程 交 换 机 提 供 的 数 据 平 面只能支持单个网络环境, 无法在单个网络设备上同时支持多租户.

i) Hyper4[45]在单个物理数据平面上虚拟出多个可编程数据平面

不同的网络功能可以同时在相同的物理数据平面上运行, 允许在运行时修改程序以及连接它们的虚拟网络, 而不会中断当前活动的程序.

  • 由于缺乏结构化的设计, Hyper4中的数据平面只能被部分虚拟化, 并且 Hyper4不支持包括布尔表达式在内的重要元素, 使得 Hyper4不适用于大多数P4程序.
  • Hyper4使用了大量的 重投递操作, 使得Hyper4遭受严重的性能损失
  • 硬编码的实现方式也导致硬件资源被过度消耗.

ii) HyperV [46]提出了具有结构化设计和抽象模型的虚拟化数据平面的解决方案

HyperV采用控制流排序和动态阶段映射技术, 可以实现数据平面的完全虚拟化, 使得任意P 4程序都可以被部署到虚拟数据平面上.

  • HyperV通过抽象出stage slot的模 型, 可 以 容 纳 任 意 数 量 的stage, 不同 程 序 的 不
    同stage可 以 分 配 到 同 一 个slot, 因此大大提升了资源使用效率.

    HyperV 提出了快速解析和绕过流水线技术, 进一步降低了虚拟化所带来的性能影响.

  • HyperV可以实现虚拟化和 性 能 之 间 的 较 好 折 衷

  • 与 Hyper 4相 比, HyperV实现了更全面的数据平面虚拟化, 在提供2.5倍性能提升的同时节省了4倍的资源使用

iii) 实际的生产环境中, 不同的网络功能可能会存在冲突, 并且网络功能的动态管理需要中断数据平面的操作, 增加了网络功能的操作开销( O P E X)

MPVisor使用高性能的数据平面管理程序与模块化可编程A PI 使得可以在不中断数据平面操作的同时实例化新的网络功能、 实施策略隔离

3 . 2 编译中间表示与编译器优化

在编译过程中对P4程序进行优化, 实现对数据平面资源的高效利用
在这里插入图片描述

3 . 2 . 1 编译中间表示设计

由Python对象表示的高级中间表示 H L I R可以由P 4语言联盟提供的前端编译器p4 – hlir生成.
H L I R可 以 便 捷 地 转 换 为 其 它 语 言, 是 包 括p4cbmv2在内的众多后端编译器的输 入.

文献[ 48] 为包括P4在内的多种领域专用语言提供了中间表达语言 NetASM,

NetASM可以通过平台特定的后端编译器编译运行在不同平台上.

整个可编程数据平面编译架构中, NetASM充当了后端编译器与前端编译器的桥梁

  • 一方面具有足够的表达能力, 满足各种面向可编程数据平面的领域特定语言的表达需求;
  • 另一方面NetASM也具有表达底层指令的能力, 能够兼容底层平台的特性

3 . 2 . 2 基于策略信息的编译优化

(1)P5创新性地提出了基于上层策略信息的P 4 程序编译优化.

P 5实现编译优化的主要原理是网络流量仅仅需要被特定的交换机功能所处理。

在满足网络流差异化需求的前提下实现对P4程序的优化.

  • P5能够提升P4程序的并行度, 同时减少所需的匹配动作表的级数, 降低P4程序的部署要求.
  • P5 仅仅能够根据历史策略信息进行编译时优化

当网络流量的策略的需求发生变化时, P5无法做出动态调整以满足网络流量策略的需求.

3 . 3 对P 4语言进行扩展的研究

网络管理员可以使用P 4语言在网络设备上定义数据平面的行为, 实现新的网络功能. 然而随着需要实现的功能数量的增加, P4程序的大小和复杂性也在增加>

在运行阶段, 大量有相同行为的流会重复匹配同一个匹配动作表项, 带来转发速率和吞吐量上的开销。

3 . 3 . 1 P 4模块化编程研究

(1)为了满足大量不同的网络策略的需求, 程序需要复杂的设计, 开发难度高;

  • 在P4程序部署之后, 不能根据实际的策略需求变动, 也不能实时动态地编排网络功能, 灵活性差;

  • P4程序具有可自定义流表结构和控制流的灵活性, 使得在大量可编程设备上, 管理流表项和数据平面行为非常复杂.

(2) ClickP4提出了模块化的编程模型和支持动态编排网络功能的数据平面结构

管理员不需要直接开发复杂的P4程序, 只需要开发功能模块, 把所有需要的模块和库注册到配置文件中, C l i c k P 4就可以将其编译集成到C l i c k P 4代码中, 降低了开发难度.

C l i c k P 4在引入模块化设计的同时也带来了 性能上的损失.

在数据平面 上, C l i c k P4按 流水线的形式组织网络功能, 通过流水线头部和尾部的初始化器和倒带器维护状态机和对应于每个报文的令牌, 可以在运行时为不同的流构建不同的功能链, 实现动态编排.

管理员可以使用C l i c k P 4提供的一套编排描述原 语 便 捷 地 管 理、 编 排 网 络 功 能

3 . 3 . 2 P 4转发匹配表缓存机制研究

P4通过将一系列匹配动作表(MA T) 以流水线形式依作用于报文.

即使第一个报 文 通 过 匹 配MAT就可以确定该流的行为, 之后的报文仍然需要在所有 MAT中进行头部域匹配查找并依次执行动作, 既消耗了时间又消耗了数据平面资源.

C a c h e P 4采用在流水线之前设计缓存表的方法优化 ,报文如果匹配缓存可以直接按照表中存储的复合动作完成处理,从而提升了P 4设备的数据包转发速率和吞吐量.

i) 配置阶段, C a c h e P 4会先对原P 4程序进行预处理分析, 生成缓存表的结构, 并输出带缓存的P 4程序, 然后编译配置到P 4设备中;

ii) 在运行阶段, 控制平面根据需要缓存的报文头部信息和P 4 设备中已有的流表项, 计算并填入新的表项, 完成选定流的性能加速.

iii) 实验表明, C a c h e P 4可以进一步提升网络性能, 并且优化收益会随着跳过的匹配动作表数目的增加而 增 大.

在 缓 存 未 命 中 的 情 况下, C a c h e P 4比无缓存时的性能表现更差.

3 . 4 P4开发工具

3 . 4 . 1 调试开发工具

1) 针对P 4语言模型本身的调试工具

从头构建符合语言特性的调试开发工具

p4pktgen 通过符号执行来生成包括测试包、表条目和预期路径在内的P4程序测试用例, 并通过bmv2验证这些测试用例.

可以对大型P4程序生成有效的测试用例, 展现静态P4程序中存在的错误.

p4pktgen在使用深度优先遍历访问节点来生成路径时, 依据上下文处理前缀并及时进行回溯尽早丢弃搜索空间中不可行的部分,

部署P 4程序之后, 运行期间也可能会出现错误, 并且运行时的错误具有多样性、 复杂性、不可见性等特点, 让 静 态 调 试 工 具 很 难 发 挥 作 用.。

P4DB提出了P4程序的运行时调试方案, 提供了网络级、 设备级和流表级的调试视图.

管理员可以通过P4DB提供的 w a t c h、 b r e a k和n e x t等 原 语 来 进行调试,
但是会带来吞吐下降与延迟.

2) 将P4语言模型进行转换的调试工具

将P 4语言模型转换为其它的成熟语言模型, 直接使用该语言模型的调试开发工具.

文献[54]提出了被称为A S S E R T – P 4的调试方法

该方法能够检测出静态P 4程序中的隐晦错误, 但是符号执行会带来指数级的时间复杂度, 限制了验证特性的数目.

  • 通过在P 4源程序中人工插入断言语句标注来反映所预期的网络行为
  • 之后, 添加了标注的P4源程序和附加的流表规则信息被翻译成C语言程序,
  • 最后,通过符号执行来检测是否违反断言从而检测源程序的正确性

文献[55] 也是采用线下静态程序分析*

将P4程序翻译成操作语义集, 在合并去冗余优化后转化为D a t a l o g要求的D N F格式规则供网络管理员进行监测,自动验证网络数据包的可达性.

3 . 4 . 2 基准测试工具

对于这些不同的编译器, 缺乏一个统一的评价标准

W h i p p e r s n a p p e r [ 5 6]提供了一套综合P 4语言各特性的评价基准

W h i p p e r s n a p p e r分为平台相关基准和平台无关基准两部分, 使用延时、 吞吐量、内存占用等不同指标, 对P 4在编译器中的解析、 处理、 状态访问、 数据 包 修 改 等 不 同 特 性 分 别 进 行 评估。

3 . 4 . 3 模拟仿真工具

对可编程数据平面相关的架构及应用进行快速模拟验证和分析

(1) PFPSim

PFPSim通过一种抽象的转发架构描述语言来帮助使用者定义适用于 目 标 应 用 的 底 层 架构

  • 操作者可以用C++和P 4来定义不同的模块来完成数据包转发等功能.
  • 然后, PFPSim提供的编译器来将不同代码及操作者输入的配置文件统一编译为可执行的二进制模型, 最后可以通过数据包生成器向模型发送模拟数据流来进行模拟.

PFPSim无法模拟包含多个P 4设备的大规模网络.

(2) NS4

大规模网络的模拟.

NS4提出了一个基于离散事件的模拟器, 在n s – 3网络模拟器基础上, 增加了模拟P 4交换机的模块, 并增加了对应的控制器模块.

i) 操作者可以使用n s – 3的接口定义网络拓扑, 其中可以包含多个NS4提供的P 4交换机模块,同时使用P 4 来定义数据包的处理行为, 并加载相应的模块.

ii) 相比其它模拟器, NS4可以模拟多个可编程交换机协同工作的情形, 并且由于NS4占用的资源更少, 因此可以模拟更大规模的网络.

4 基于P4的应用

基于P4与可编程数据平面作出的应用成果

4 . 1 面向负载均衡与资源分配的应用

4 . 1 . 1 二层三层负载均衡

数据中心网络的节点有很大的度( d e g r e e) , 可以支持多路径路由, 为负载均衡提供了拓扑上的条件.
传统的负载均衡机制E C M P只是随机地分摊流量, 在某些路径( 例如: 两条大流挤占同一条链路、 非对称拓扑、 链路故障) 上依然会产生拥塞。

(1) 基于拥塞感知的负载均衡技术C O N G A

i)	存在可扩展性差的缺点, 只能在边缘节点维护小部分拥塞状态信息. 
ii)	C O N G A维护所有路径信息 

(2) 数据平面逐跳负载均衡机制HUL A

设计了生成与转发探针的机制来感知网络拥塞状况

i)	交换机只维护通向目的节点的最佳下一跳信息, 提高了可扩展性

ii)	最佳路径上按照flowlet粒度转发, 避免了T C P包乱序. 

iii)ns-2上的仿真结果显示 HU L A 比已 有 的 负 载 均 衡 方 案 在 流 完 成 时 间 上 快1 . 6~ 3 . 3倍.

4 . 1 . 2 传输层负载均衡

44 %的流量是虚拟I P地址流量, 需要做带 状 态 负 载 均 衡 来 维 持 每 条 连 接的一致性。
数据中心通常会使用上百台服务器专门来做负载均衡, 占用大约4 %的计算资源. 并且, 使用服务器做负载均衡会引入较高计算开销, 带来较高的延迟与抖动, 影响用户体验.

(1) S i l k R o a d
使用可编程交换机来做带状态四层负载均衡

S i l k R o a d可以使用一台可编程交换机替代上百台服务器来完成带状态负载均衡的工作
不仅将带状态负载均衡的成本降低了两个数量级, 而且还降低了延迟与抖动.

  • 通过存储流的五元组哈希值与D I P池版本号来分别减少匹配域和动作的大小,实现在交换机上同时维护上百万条流的带状态连接;
  • 通过硬件实现的bloom filter,确保即使 IP池发生更新也能维持每条连接的一致性

(2) B e a m e r
使用P 4在网络设备 上 实 现 无 状 态 的 T C P负 载 均 衡 器

B e a m e r的核心想法是利用后端服务器维持每条流的状态信息, 并且让当前服务器将未知状态的数据包发送给其余的服务器进行处理,

多路复用器无需保存流的状态, 实现了网络设备无状态的负载均衡.

(3) 现有的传输层协议并不能很好地兼顾低延迟与高吞吐传输

P 4技术可以在数据中心定制全新的传输层协议 N D P

在N D P的设计中, 发送方与接收方不进行连接握手, 发送方一开始就以全速发送报文, 交换机对报文进行逐包的多路径负载均衡;交换机采用很小的缓冲区, 当缓冲区队列快满时采用砍掉载荷、 优先转发头部的方式告知接收方.

虽然逐包的负载均衡会引入报文乱序, 但是转发头部的方式不会丢失元数据, 可以告知接收方实时流量的全局视图.

在包括P4交换机在内的多种部署实验结果表明, N D P 可以同时实现小流近似最优的流完成时间与大流的高吞吐传输.

4 . 1 . 3 应用层负载均衡

互联网服务依赖于高并发、 低延迟的键值对查询.

h o t i t e m s会受到远多于其它项目的请求, 因此会导致网络负载的严重不均衡, 从而使得服务器过载或者空闲,
造成吞吐的下降与响应时间的长尾分布.

(1) 一种新的键值对存储架构 N e t C a c h e
利用可编程交换机给用户提供热键值对项目, 从而均衡跨存储节点的负载.

N e t C a c h e 的核心是数据平面设备使用匹配动作表对k e y进行分类、 使用寄存器来存储v a l u e、使用大流检测器来辨认h o t i t e m s, 控 制 平 面 只 负 责k e y的 插 入 和 删除.

实验表明单个可编程交换机每秒可以处理超过2 0亿次的请求, 提升了3~1 0倍的吞吐; 即使在高度不均衡和快速变化的工作负载下, Ne t
C a c h e也能实现高聚合吞吐量和低延迟.

(2) A p p S w i t c h
在可编程交换机上对键值缓存操作进行负载均衡

减少了端到端的平均延迟.

(3) N e t C h a i n

设计了新的链复制协议与快速故障转移机制

在实现低延时、 高吞吐的键值对查询的同时还提供了强一致性和容错性 >>

4 . 1 . 4 资源分配协议的近似实现

受到计算能力以及硬件资源的限制, 可编程交换机不具备足够的能力来支持网络协议的实现.
将一些协议做近似实现也是一种可行的解决方案.

(1) 采用基数估计方法近似计算流聚合值、 采用加法近似计算乘除法以及采用c o u n t – m i n s k e t c h技术近似维持每个流状态, 在数据平面上实现了近似的资源分配协议.

(2) 考虑到可部署性
在可编程交换机上采用近似公平队列按照轮询的方式进行调度

使用多个先进先出队列与近似排序队列来缓存数据包, 达到接近于公平队列机制的性能.

(3) 考虑到可扩展性
设计了近似公平带宽分配新机制FDPA

基于流的历史发送速率, 动态地赋予其优先级, 用以解决公平队列调度扩展性不足的问题.

4 . 2 面向网络测量、 监控与诊断的应用

4 . 2 . 1 网络测量与监控的通用方法

(1) N e t F l o w是 应 用 广 泛 的 网 络监控工具
在监控所有流时会带来较高的处理时间与较大的存储空间消耗, 很难在数据中心的商用交换机中进行部署,

因此N e t F l o w需要对数据包进行抽样, 只能监控一 部分流.

(2) F l o w R a d a r
对暂 态 路 由 循环、 路由黑洞、 突发流等进行检测需要在短时间内对所有 流 不 采 样 地 进 行 监 控。

核心思想是在可编 程 交 换 机 上 使 用扩展的可逆布鲁过滤器查询表对每条流的计数器进行编码 ,然后使用远程采集器的计算能力对全网流计数器进行解码和分析.

F l o w R a d a r比N e t F l o w 的可扩展性更好, 可以监控所有的流.

(3) 通用的流监控框架

提供了“ One Big Switch” 的 抽 象, 在 数 据 平 面 使 用sketch 进行测量, 并把这个sketch传到控制平面,控制平面根据自己的监控任务选择一个估计函数得到估计结果。

兼顾通用性和准确性.

(4) 带内网络遥测( I n b a n d N e t w o r k T e l e m e n t r y, I N T) 技术
周期性地将测量结果上传至终端.

i) 采用INT技术, 可以查询交换机内部的状态

实现网络瞬态故障诊断、 数据平面验证等高级应用

ii) INT技术和知识定义网络(K n o w l e d g e – D e f i n e d N e t w o r k,K D N) 相结合, 可以构建自驱动网络( s e l f – d r i v i n g n e t w o r k) , 减轻网络管理的成本

4 . 2 . 2 大流检测相关研究

通用网络测量与监控方法在某些具体场景下并不适用

上述测量与监控方法需要通过控制器或者终端设备周期性地与交换机交互来获取网络事件, 缺乏实时性, 同时也增加了链路带宽占用,因此不宜采用控制器参与的方式检测大流。

H a s h P i p e算法
直接在数据平面检测大流,为每个大流维护counter, 同时对小流进行 “驱逐”

获得了可观的性能收益, 使用少于8 0 K B的交换机内存可以检测出9 5%的大流.

在数据平面上对全网范围分布的大流做检测

每台交换机为不同的流设置不同的阈值, 超过阈值的流被认为是heavy hitter

  • 将其计数发给协调器, 协调器整合不同交换机上的数据来计算全网heavy hitter
  • 根据每台边缘交换机流量分布自适应地调整每台交换机上的heavy hitter检测阈值.

4 . 2 . 3 网络故障诊断相关研究

(1) D a p p e r系统

使用可编程数据平面在“ 靠近” 终端的位置( 例如: h y p e r v i s o r、 网卡和架顶交换机等) 对T C P连接的性能瓶颈做实时的诊断.

D a p p e r可以检测出来一条T C P连接是受发送方限制( 例如: 共享带宽竞争力不足) , 还是受网络限制( 例如: 网络拥塞)还是受接收方限制( 例如: 接收缓冲区很小) , 从而获知T C P连接的瓶颈位置.

(2) 快速检测丢包的通用系统L o s s R a d a r
减轻丢包对应用性能和吞吐的影响

使用可逆布鲁过滤器来计算数据包的摘要, 分别在流进入和离开一个网络域时部署上游计量表和下游计量表, 比较该对计量表产生的数据包摘要的差异来实时检测和定位丢包.

(3)可扩展的故障处理平台
使用布鲁过滤器以数据包行为( p a c k e t s b e h a v i o r) 为粒度做p o s t c a r d上传

与逐包和逐流上传p o s t c a r d的方案相比, 兼顾了检测的覆盖范围和可扩展性.

4 . 2 . 4 网络监控查询语言研究

(1)网络性能查询语言M a r p l e
通过M a r p l e编译器编译并在可编程交换机上运行, 查询结果将自动反馈给收集服务器.

网络管理员只需要使用M a r p l e 编写一个性能查询请求

(2) S o n a t a
借助流 式 分 析 平 台 和 可 编 程 网 络 设备, 提供了数据包级别的网络遥测系统

让管理员可以通过查询的方式收集并分析测量数据.

4 . 3 面向网络安全的应用

4 . 3 . 1 防御DDoS攻击

DDoS攻击是目前网络环境 中 规 模 最 大、 频 率最高的网络攻击手段

传统方法使用中间件来缓解

SDN技术可以被用来防御D D o S攻击, 但是其本身 又 引 入 了 新 的 D D o S的 攻 击 点

完全实现在可编程数据平面上的DDoS流量清理方法: (避免了与控制器的交互)

  • 数据平面设备会拦截并代理SYN请求, 根据报文重新计算出的随机SYNACK challenge作为应答号, 成功响应challenge的源地址 会 被 加 入 白 名 单 并 重 设 连 接.
  • 在 通 过challenge验证前, 服务器和数据平面设备都不需要维护任何带状态的信息, 可以应对很大的攻击流量.

当攻击流量超过了单一设备资源限制时, 使用同一条转发路径上所有可编程数据平面的资源对攻击流量进行协同过滤, 每个设备只负责清洗一部分流量,
剩下的交由下游设备处理.

4 . 3 . 2 防止网络监控结果受到操控

网络监控中经常会采用抽样或者使 用s k e t c h来对报文做统计,基于s k e t c h的监控算法的设计没有考虑安全问题。

由于算法公开, 攻击者可以通过观测、 操纵经过监控设备的流量, 预测甚至控制监控结果, 使网络管理员根据监控结果采取不当的操作,使安全策略失效。

基于加密哈希函数的count-min sketch算法

i) 攻击者在不知道密钥的情况下无法预测监控算法的行为
ii) 通过存储和查询旧密钥的统计信息

避免了运行时密钥更新带来的前后哈希函数映射计数器位置的不一致

4 . 3 . 3 保障安全策略的执行

(1) P4增加了数据平面产生软件漏洞的可能性, 这些漏洞很可能会被利用来绕过一些安全策略

基于断言检查和符号执行的静态程序分析机制

验证P4程序的行为, 保证安全策略的执行

  • 首先, 需要人工地使用断言语言, 在程序中相应的位置标注应当满足的安全策略或期望的程序行为;
  • 然后标注好的程序将和转发规则一起被翻译为等价的C 语言程序;
  • 最后符号执行C程序并枚举程序的各个分支, 遍历程序所有可能的执行路线,在执行到断言处检查验证程序的行为是否和标注一致, 报告不一致的情况.

该方案的P4程序验证的时间复杂度是以流表内动作数目为底数、 流表个数为指数的形式, 可扩展性较差.

(2) P4程序可能会造成安全策略的违背

软件沙箱( S a n d b o x) 的机制

通过监控数据平面程序与底层设备的交互来拦截系统调用( 如动作原语等) , 将数据平面程序行为限制在安全策略范围内

4 . 4 使用P 4技术提升其它技术的性能

4 . 4 . 1 分布式计算与分布式系统

(1)将计算任务卸载到数据平面

可编程数据平面可以对报文做灵活的操作以及具有高达6.5Tbp s的吞吐, 为网内计算提供了新的机遇.

在数据中心里, 服务器之间依靠交换机进行通信, 如果把一部分原本在服务器端完成的计算 任 务 (M a p – R e d u c e,Ma c h i n e L e a r n i n g,G r a p h P r o c e s s i n g,S t r e am P r o c e s s i n g等) 卸载到可编程数据平面上执行,当数据包穿过网络到达终端服务器时, 计算任务也就相应完成

可以减少网络流量、 缓解拥塞, 还可以缓解应用层负担、 腾出服务器CPU周期.

但是可编程网络设备的内存资源有限、 动作集有限、 对每个报文的操作次数有限, 必须审慎地选择放在网络中完成的计算工作, 才能做到既符合上述限制, 又保证计算的全局正确性, 提高数据中心的整体性能。

并行编程框架p 4 m r

对数据平面计算开销做了初步的理论建模

D A I E T系统 : 对M a p – R e d u c e 等计算任务卸载到数据平面的 收 益 进 行 实 验 评估
使用基于P4的可编程交换机执行网内数据聚合的工作

实验表明达到了近9 0%的数据聚合率.

流处理应用L i n e a r R o a d

流处理( S t r e a m P r o c e s s i n g) 不需要进行循环操作, 并且所需记录的状态有限, 因此适合在可编程数据平面上完成.

比现有基于软件的L i n e a r R o a d吞吐更高、 速度更快.

(2)将一致性协议卸载到数据平面

P a x o s协议

用来实现应用层的一致性复制备份, 以确保当服务器故障时数据的可用性

P a x o s协议包括4种角色:p r o p o s e r、 c o o r d i n a t o r、 a c c e p t o r和l e a r n e r

P a x o s需要对每个请求进行复杂的协调, 引入了较高的延迟, 限制了系统的可扩展性.

P a x o s加速: 将c o o r d i n a t o r和a c c e p t o r的工 作 直 接 实 现 在 数 据 平面上

在数据中心实现较小复制开销的新方法: 将网络与应用层协议的角色进行了重新划分

  • 网络设备使用有序不可靠组播( O r d e r e d U n r e l i a b l e M u l t i c a s t,O UM) 的新原语将请求排序

保证请求是有序的, 但是不保证请求的可靠传输, 可能会有丢包

  • 应用层使用新的复制协议 N e t w o r k O r d e r e d P a x o s ( N O P a x o s) 来确保已经有序报文的可靠性传输

实现了高性能的复制备份, 比P a x o s在延迟和吞吐量上都有明显优化.

R a f t一致性算法

在可编程数据平面上实现, 降低一致性延迟、 感知网络故障、 提升R a f t一致性算法在分布式系统中的性能

R a f t协议中, 有l e a d e r、 f o l l o w e r和c a n d i d a t e 三种角色

l e a d e r通过发起 A p p e n d E n t r i e s的远程程序调用( R e m o t e P r oc e d u r e C a l l,R P C) 来发送心跳信息或日志 信 息

A p p e n d E n t r i e s R P C的信息处理由可编程交换机实现.

  • 前端的可编程交换机负责日志的复制和提交、 运行R a f t感知的数据包转发, 并且通过改写到达的数据包实现对R a f t请求的快速响应
  • 后端的服务器运行完整的R a f t协议.

实验结果表明心跳信息延迟降低了十分之一, 写请求延迟降低了接近五分之三.

(3) 带状态更新与迁移

分布式网络更 新 机 制e z – S e g w a y
能 够 快 速 地 进行网络状态的一致性更新, 避免更新时的转发异常和链路拥塞.

通用的状态管理框架S w i n g S t a t e

核心思想是在数据包中捎带状态更新信息来实现状态迁移, 能够支持带状态数据平面的状 态一致性迁移

  • 在 P 4程 序 编 译 时, S w i n g S t a t e分析器自动识别需要迁移的流与共享的状态, 修改P 4程序使其支持运行时的实时迁移.

  • 当控制器下发流迁移的指令时, S w i n g S t a t e的状态管理器检查程序分析的结果

  • 在确认状态迁移的安全性后, 通知源端和接收端进行状态迁移

4 . 4 . 2 网络功能虚拟化

P 4与可编程数据平面也为加速网络功能虚拟化( N e t w o r k F u n c t i o n V i r t u a l i z a t i o n,N F V) 提供了新的机遇

(1)P4驱动的模块化转发框架

利 用P 4的灵活性和可编程性实现高性能网络功能

许多网络功能已经实现在了 N F V平台上,通 过 牺 牲 可 编 程 性 来 保 证 N F V 系 统 的 性能

HyMoS

利用兼容P4的网卡提升 N F V平台的性能, 同时能够提供模块化的软件和硬件设计, 并保证了较高的可编程性.

(2)P4驱动的虚拟网络资源管理

实现虚拟环境下的网络资源管理

(3) N E R V

能够支持多种网络架构的 网络资源管理器

基 于 微 服 务 架 构 的 设 计 理 念 和P 4 可编程协议无关的转发元件, N E R V提出了一种包含多个微小应用的框架

  • 每个应用能够管理网络中的一组资源, 同时兼容多种不同的协议栈和转发策略
  • N E R V利用标准A P I将这些应用重组, 允许管理员调用通用接口来管理网络资源.

4 . 4 . 3 路由与流表资源优化

(1) 流表资源是影响网络可扩展性的重要因素

P 4为流表资源优化以及实现更可扩展的数据平面带来了机遇.

  • P4能够实现更加灵活的流表匹配方式
  • P4能够提供智能的流表过期机制实现流表资源的充分利用

(2)基于P 4的实现新型转发机制

目前数据平面设备主要依赖二层到四层的标 识 符 来 指 定 转 发 策略, 而并不关注上层应用信息.

P R P L

将用户I D、进程I D等进程级信息通过哈希操作嵌入到数据包中, 可编程交换机则通过进程级信息实现更加智能的数据包处理.

实现软件定义多播

能够提供可扩展的数据包多播服务, 并支持包括B I E R、B I E R – T E在内的多种功能. >>

(3)基于P 4的智能流表过期机制

现有的O p e n F l o w流表过期机制依赖于一个固定的超时时间,交换机主动地移除超时的流表项,超时时间值的设定是流表空间利用率与交换机— —控制器通信开销之间的折衷.

使用基于P4的交换机, 能够在T C P流结束时及时从流表中删除相应的表项, 减少流表空间的占用, 并且不会带来额外的与控制器通信的开销.

(a) 通过检测TCP 流中F I N和R S T报文来确定流是否结束, 从而移除多余的流表项;

(b) 对于UDP等没有结束标志的流, 仍通过超时过期机制移除流表项.

4 . 5 其它应用

4 . 5 . 1 物联网

物联 网 ( I n t e r n e t – o f – T h i n g s, I o T) 是 互 联 网 的应用扩展. 为了实现自动化管理大规模物联网

B L E S S
可以灵活地实现包括I o T服务切片以及组织在内的多种功能

可编程交换机的主要功能是实现高性能的I o T设备 连 接 模 块以及数据转发模块

4 . 5 . 2 多媒体网络

主要目标是为视频供应商提供足够的敏捷性和灵活性

S D N为实现可编程的多播控制提供了控制接口, 但是底层的交换设备所支持的多播功能是十分有限的

利用可编程交换机的协议无关特性和可编程性加速视频流转发, 实现高性能的视频转发技术.

4 . 5 . 3 航空电子领域

(1) 对于专用网络协议的安全性有特殊要求

通常不会使用普通的商用交换机

P 4的出现允许开发者自己定义数据包处理逻辑, 增加了通用交换机应用的可能性.

(2) 航空领域对网络时延要求十分严格

P 4使得数据包转发模型更加独立, 为形式化地分析系统时延提供了可能.

(3) 使用P4基本实现了AFDX协议

P4在航空领域有一定的适用性,但是在安全性、 功能性上仍不完善, 在航空电子领域的P4商业应用仍需时日

4 . 5 . 4 云服务市场

P4带来的可编程性使得在交换机上完成流量的区分和不同服务的编排成为可能

使用P4技术设计了新的第三方服务体系结构

i) 通过交换机识别数据包所需要的服务, 将这些数据包复制或直接转发到对应的服务模块进行处理

ii) 同时为了高效率地对数据包所需服务进行区分, 该工作在数据包头部增加了一个域来提供必要信息帮助判别;

iii) 通过插入多个数据包头部, 可以实现多种服务的协作.

4 . 5 . 5 新型网络体系结构

包括命名数据网络( N a m e d – D a t a N e t w o r k i n g, N D N) 在内 的 新 型 网 络 体 系 结 构 在 短 期 内 较 难 部署, 借助P 4技术可以在真实网络设备上实现其处理逻辑.

使 用 可 编 程 交 换 机 实 现 了 N D N 数据包的处理逻辑, 包括对 N D N两种类型数据包格式的解 析、 对 存 储 兴 趣 包 处 理 信 息 的P I T表 定义、 对存储数据包转发位置的F I B表 定 义, 以 及 相应下发规则所需的控制逻辑

N D N协议中最长前缀匹配等逻辑并不被P 4直接支持, 所以使用P 4的基本功能实现 N D N的功 能 会 造 成 性 能 上 的损失.

4 . 6 P4 应用小结

(1) P4这项技术在提供数据平面可编程能力的同时兼顾了报文处理速度

数据平面可以在保证高速处理报文的前提下完成自 定 义 的 报 文 处 理 逻辑, 于是数据平面可以帮助终端设备完成部分工作,从而获得大幅性能提升.

(2) 可重配置性、 协议无关性、 平台无关性的特点能够大幅降低支持新应用的开发时间与成本, 加快网络创新的步伐

将各种应用卸载到可编程数据平面之前需要仔细思考两个问题::

什么样的应用急需被卸载到数据平面执行 ?

需要局部测量+决策的应用、 需要频繁通信的应用、 I /O为瓶颈的应用、延迟敏感的应用等, 急需被卸载到数据平面上执行

可以充分利用数据平面快速响应局部事件、 低时延报文处理、 高吞吐报文转发等优势, 最大化提升网络与上层应用的整体性能;

什么样的应用适合在数据平面执行 ?
可以被“ 匹配+动作” 模式描述的应用、 可以被分布式处理的应用等, 适合在数据平面上执行

只有这样才能符合数据平面的抽象转发模型以及数据平面分布式特性, 是将应用卸载到数据平面执行的前提.

5 未来工作

1) 对P4语言进行扩展

P4语言存在着语法上的局限性、 功能上的局限性、 标准规范上的局限性, 制约着P 4语言能够表达的数据包处理逻辑.

a) 平台无关的扩展

仅对P4语言本身进行扩展, 并且保证扩展是不依赖于平台的

b) 平台相关的扩展

平台相关的扩展包含两种方式:

(1) 第一种是扩展新原动作

原动作是P4语言的最小处理单元
原动作集合是固定,所能支持的数据包处理功能也相对比较局限

不同平台可以扩展不同的原动作集合,程序员比较方便调用原动作

(2) 第二种是增加新的P4 语言要素

比如设备内增加新的带状态操作 A L U, 此时仅增加原动作并不能够完 整 地 定 义 带 状 态 操作, 因此需要定义新的P4语言要素.

2) 高效利用有限的数据平面资源

相比终端服务器, 可编程数据平面本身的计算资源与存储资源有限

可编程数据平面计算资源和存储资源进行有效抽象

(1)能帮助程序员合理地设计和实现数据平面应用  	

(2)能指导P4程序编译器设计, 使其更好地对数据平面的使用进行优化

3) P 4技术新应用场景研究

P4技术在诸多本文未提及的应用场景下仍可有所作为.

4) P 4安全问题研究

a) 可编程数据平面可能会在三方面存在漏洞, 分别是P4表项、 P4程序以及P4交换机.

  • 目前研究人员已经开始关注P 4表项和P 4程序的验证, 但是缺乏对于P 4交换机的验证
  • 目前P4验证的相关工作存在执行效率低、 可扩展性差等缺陷

b) 完善数据平面的安全机制和框架, 确保安全策略的执行, 将成为P 4与可编程数据平面安全的重要保障

6 结束语

  1. 首先, P4吸收了SDN数据平面与控制平面分离的思想, 促进了网络设备的开放性, 加快了新协议与新应用的部署;

  2. 然后, P4着眼于数据平面的可编程性, 具备O p e n F l o w等技术并不具有的可重配置、 协议无关、 平台无关的特性, 进一步抽象了网络设备转发模型, 提升了数据 平 面 灵 活 性, 降 低 了 网 络 运 维 成本;

  3. 最后, 由于P4融合了数据平面高性能报文处理能力与可编程能力, 因此许多在中间件与终端服务器上完成的工作可以在数据平面上完成, 从而获得性能上的大幅提升.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140652.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 软件测试:测试用例

    一、通用测试用例八要素  1、用例编号;  2、测试项目;  3、测试标题;  4、重要级别;  5、预置条件;  6、测试输入;  7、操作步骤;  8、预期输出。二、具体分析通用测试用例八要素  1、用例编号  一般是数字和字符组合成的字符串,可以包括(下划线、单词缩写、数字等等),但是需要注意的是,尽量不要写汉语拼音,因为拼音的意义可能有好几种,有可能会导致乱码;  用例编号具有唯一性和易识…

  • 激活成功教程软件_奇()怪()

    激活成功教程软件_奇()怪()这是博主的私人网站,里面收录了很多激活成功教程软件,以及一些奇奇怪怪的网站,这个网站已经经过国家工信部备案了,里面的内容博主都测试过才收录进来的,可以放下访问http://www.resourcestation.xyz…

    2022年10月12日
  • 当和尚遇到钻石「建议收藏」

    当和尚遇到钻石「建议收藏」 序推荐序    麦克尔·罗奇先生,我不认识他,但是看了他写的《当和尚遇到钻石》这本书以后,令我对他产生了由衷的敬佩之意。他身在商业界,实修清净行,特别是他具有高人一等的智能,将《金刚经》融会贯通,运用万法潜能,发挥在商场的经营上……      罗奇先生的道心坚定,虽然事业经营成功,但内心从来没有忘记自己是一位修道者,他尊师重道,对师父的指示从不敢疏忽或违背,在穿着上保持着端

  • mysql timestampdiff>_「timestampdiff」MySQL timestampdiff()函数 – seo实验室

    mysql timestampdiff>_「timestampdiff」MySQL timestampdiff()函数 – seo实验室timestampdiffMySQLTIMESTAMPDIFF函数简介下面说明了TIMESTAMPDIFF函数的语法。TIMESTAMPDIFF(unit,begin,end);TIMESTAMPDIFF函数返回begin-end的结果,其中begin和end是DATE或DATETIME表达式。TIMESTAMPDIFF函数允许其参数具有混合类型,例如,begin是DATE值,end可以是DAT…

  • 概率/随机数算法

    概率/随机数算法包含主要的概率/随机数问题相关算法

  • AArch64 是什么

    AArch64 是什么AArch64是ARMv8架构的一种执行状态。

    2022年10月17日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号