可编程数据平面

原文 《A Survey on the Programmable Data Plane: Abstractions, Architectures, and Open Problems》

可编程交换机允许数据包处理行为应用于传输的数据包,包括处理操作的类型、顺序和语义,以系统的方式动态地重新配置。

随着5G移动标准、大规模云计算、无处不在的物联网、大规模机器学习和大数据应用的出现,运营商将需要采用全新的方式来构建通信网络,实现软件定义网络、边缘计算、网络功能虚拟化、服务链接规范。即将到来的应用需要网络接口卡(nic)和网络设备,如交换机和路由器,支持持续发展和异构的协议和功能集,包括基本的L2/L3/L4处理、隧道和VPN协议,负载均衡、拥塞控制和服务质量、防火墙和入侵检测系统等。

一方面,添加新功能需要一个漫长的开发过程和快速的设备升级周期。这就迫使供应商只在某个特性被广泛要求时才支持它,从而阻碍了创新。另一方面,在包处理逻辑中实现每一个网络协议和可能永远不会在操作中使用的特性会导致效率低下。

为了解决这些问题,最近引入了新一代的网络设备,允许设备实现的数据包处理功能可以动态地全面重新配置。新的基于软件的网络交换机,运行在通用CPU上,通过大量的处理原语集提供了可重构性,通过这些原语,可以使用标准编程技术构建各种管道。

可编程交换机的结构

传统的网络设备,无论实现(例如,纯软件或专用硬件)和功能(例如,交换机、边缘路由器或防火墙),通常都包括控制平面和数据平面,集成到一个单一的设备形式因素中。在这种情况下,控制平面负责建立报文的处理策略(如报文转发到哪里、如何重写报文头等),以及管理设备的操作(如检查设备的健康状态、维护操作等)。相反,数据平面只负责执行控制平面设置的报文处理策略。

网络设备可编程性的一个基本推动因素是控制平面与数据平面在逻辑和物理上的分离,通过一个标准和开放的API来允许两者之间的交互。

为了加强控制平面的决策,数据平面对接收到的数据包执行少量操作。首先,它解析数据包,以理解它们携带的控制信息。然后,提取的信息被用来确定需要应用到包的处理操作的顺序,如执行一些计算(例如,计算校验和),写入包的某些部分(例如,写入新的校验和),或者存储监视和状态信息(例如,在校验和错误时更新计数器)。最后,根据执行的操作的结果转发修改的数据包,这些操作通常包括输出端口的规范。

可编程性指的是交换机向控制平面公开数据包处理逻辑的能力,以便系统地、快速地、可理解地重新配置。强调的是全面性。

可编程交换机的分类

系统级视图

在上层,控制平面负责协调整个网络的操作。传统上,这需要详细说明每个交换机控制程序来设置设备级行为。然而,随着软件定义的网络范例的实现,控制平面逐渐向综合捕捉网络范围的策略(所谓的意图层)的更高层次的抽象转移,然后在单独的步骤中编译成常规设备级策略(中间表示)。

在较低的一层,网络的数据平面由控制平面共同管理的可编程交换机的分组处理逻辑共同表示。数据平面向控制平面公开其可配置功能的某些抽象,而控制平面又使用数据平面编程语言来配置静态包处理语义。在运行时,这个管道充满了动态策略。同时,通过数据平面不断收集状态信息和监控信息,将状态信息和监控信息呈现给控制平面,用于行为正确性验证、性能监控和故障处理。

在这个分层的视图中,数据平面编译是一种向下的映射,从高层次的网络行为描述到较低层的抽象,验证/监视是一种向上的映射,其中下层将其状态的一些聚合视图暴露给上层以进行检查和验证,两者之间的耦合是由数据平面采用的抽象创建的。

基于软件和基于硬件的交换机

数据平面处理设备接收到的每一个数据包,是网络中最关键的性能部分,因此,通常使用专门的硬件组件和复杂的软件加速方法来实现它。

在现实中,硬件和软件交换机之间的区别可能不是那么明显。基于硬件的设备可能仍然会调用通用CPU来运行不需要高性能或底层硬件不支持的某些功能。类似地,为了提高效率,现代软件切换也依赖于特定于领域的硬件辅助。

抽象和架构

数据平面技术之间的差异通常反映在暴露于控制平面的包处理原语和可用于访问这些原语的编程语言构造中。

数据流图抽象

数据流图将处理逻辑描述为一个图,其中节点表示基本计算阶段,边表示数据从一个计算阶段移动到另一个计算阶段的方式。这种抽象的一个很好的特性是它的简单性,允许程序员使用熟悉的面向图的心理模型将一组定义良好的处理节点组装成有意义的程序。这样,计算基元(节点)只开发一次,然后可以根据需要自由地重复使用多次,以生成新的模块化功能,创建一个具有平滑学习曲线的快速开发平台。

匹配操作管道抽象

匹配操作抽象使用一系列被组织成层次结构的查找表来描述数据平面程序。包的头字段是用来执行流表查找第一个表来确定相应的数据包处理行动,然后指示交换机重写的数据包内容,封装/解封隧道头,下发或转发数据包,或推迟数据包处理进一步流表。程序员反过来通过动态设置流表的内容,通过通过标准化的API添加、删除或修改关联的匹配规则和处理操作来配置包处理行为。这样做的好处是,可以将可重新配置的数据平面功能暴露给操作者,操作者使用熟悉的流概念,通过匹配某些报头字段上定义的规则来识别流,作为查找表的层次结构。

混合交换机抽象

可以很容易地将分层匹配操作管道定义为一种特殊的数据流图,其中查找表作为处理节点,转表指令作为边缘。

有状态的和无状态的

至关重要的是,网络设备内嵌存储器的内容可以在运行中被访问和修改。这些状态信息可以粗略地分为两类:包状态(或元数据)和全局状态。报文状态与单个报文相关联,每个报文都有自己的报文状态,这种状态只在处理关联的报文时才存在。相反,全局状态是与设备相关联的,它是全局的,在报文之间持久存在。虽然包状态只能在数据平面内访问和修改,但全局状态也可以通过控制平面访问。

基于这些考虑,可编程的数据平面技术通常被称为无状态,而允许从内部写入全局状态的数据平面称为有状态的。一般来说,无状态数据平面要简单得多,但提供的功能有限,而有状态数据平面则复杂得多。

开放问题

可编程交换机架构围绕着抽象展开。理想情况下,抽象应该足够简单,以捕获适当数量的可配置数据平面功能,以实现有效的硬件和软件实现,但又足够深刻,允许更高层次在上面综合复杂的包处理行为。此外,理想的抽象应该借本身容易被暴露在控制平面作为一种安全、有效的数据平面API,它应该充分处理全局状态嵌入到数据平面,并提供一个定义良好的一致性模型,它应该承认分析性能模型,它应该将静态语义和动态行为分开,最后,它应该包含一个网络操作员和程序员熟悉的方便的心理模型。毫不奇怪,该领域的许多开放问题都与为数据平面功能找到正确的抽象有关。

一、全面可重构性的抽象

抽象和开发交换机可能执行的处理功能的每个方面已经变得至关重要。这不仅限于数据包处理策略在数据平面中表示的方式,包括数据包与相应的处理操作相关联的方法,而且扩展到进一步的关键数据包处理操作及其可重构性,从可编程数据包解析到通用调度和排队方案。

但是,对数据层面上更全面的可重构性的追求不应该止步于此。事实上,还有多路径路由、动态负载平衡、数据平面级隔离和加密的新抽象,网络加速键值存储和分布式共识协议,基于数据平面神经网络的网络范围机器学习,可编程监测和测量等。

开放问题

找到新的抽象以使数据平面功能可配置,并使用简单的API将这些抽象公开给控制平面、

二、用于公开全局状态的抽象

扩展系统以处理大量工作负载的需求,越来越多地促使设计者探索更复杂的解决方案,以处理交换机数据平面中的某些状态。虽然目前可以认为无状态包处理的抽象相当可靠,但有状态抽象仍在探寻。

有状态抽象的复杂性在于需要以程序员友好的方式处理状态管理问题(例如一致性),同时仍然保证支持高性能实现的能力。目前的建议遵循三种不同的方法:一致性、执行器和基于应用程序的内存抽象。

基于一致性的内存抽象根据所需的一致性属性组织内存。一些抽象可能提供一致性模型的子集。在基于执行程序的内存抽象中,程序员可以看到底层执行程序体系结构的简化视图。最后,基于应用程序的内存抽象公开对状态的访问,遵循网络应用程序中常见的编程抽象。

这三种方法实现了不同的权衡。例如,基于执行者的抽象为程序员提供了最大的灵活性,但代价是增加了编程的复杂性并降低了执行者体系结构之间的可移植性,因为程序员需要清楚地了解如何在不同的内存区域中划分其应用程序的状态。另一方面,基于应用程序的抽象提供了符合大多数网络应用程序的状态访问模型,因此简化了程序员的开发,但没有留下多少灵活性来试验非常规的解决方案。

开放问题

找到一个表达力强但简单的模型来处理数据平面中的状态操作,在确保能够支持高性能实现的同时简化应用程序编程和编排。

三、基于意图的网络的抽象

基于意图的网络标志着最近的一种趋势,即根据更高层次的业务策略来设计和操作网络,并让网络以自动化、敏捷、安全和可验证的方式处理低层次的问题。然而,基于意图的网络在可编程交换机设计中提出了许多关键问题。

尽管最近在高级网络编程语言方面,以高效的语言构造和模块化组合框架的形式的进展已经为实现基于意图的网络愿景提供了重要的见解。目前还不清楚如何最好地将数据平面功能暴露给操作者,以提供最大的编程自由,同时有效地掩盖底层的复杂性。理想情况下,基于意图的数据平面编译器应该积极地尝试寻找数据平面表示,以最小的数据平面占用空间获得最高的性能,并建立在优化数据平面程序和性能推理的坚实理论基础上。

开放问题

设计一个基于优化意图的数据平面编译器,将高级业务策略(以及相应的全局状态)映射到底层物理基础设施,建立在数据平面程序转换和性能建模的良好理论基础上。

抽象的可验证性

数据平面编译,即从意图层向下映射到数据平面只是一方面。为了关闭控制回路,还需要一个向上的映射,这将允许控制平面监视和验证数据平面的操作。事实上,最近的结果表明,网络的架构应该从头开始,注重可验证性,这可能需要定义新的抽象。

可编程数据平面(论文阅读)相关推荐

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

    前言 本文是本人学习的笔记,如有错误欢迎指正. 论文下载地址:基于P4的可编程数据平面研究及其应用 本文目录 前言 1 引 言 传统交换机的局限性 如何增强网络开放性? OpenFlow局限性 解决O ...

  2. 网内计算:可编程数据平面和技术特定应用综述

    网内计算:可编程数据平面和技术特定应用综述 摘要--与云计算相比,边缘计算提供了更靠近终端设备的处理,降低了用户体验的延迟.最新的In-Network Computing范例采用可编程网络元素在数据达 ...

  3. 交通时空数据预测·论文阅读

    Spatial-Temporal Fusion Graph Neural Networks for Traffic Flow Forecasting 论文来自2021年的AAAI,作者是来自清华的Me ...

  4. [时序数据趋势预测]论文阅读思考总结[2022.3.25-2022.4.1]

    文章目录 1.时序数据预测为什么要用LSTM网络? 2.LSTM结构介绍 LSTM单元的网络体系架构 3.深度学习在大数据环境下的时间序列预测 4.时序数据预测应用领域 5.元启发式算法 6.短期电力 ...

  5. 【论文阅读】SABRE: Protecting Bitcoin against Routing Attacks

    文章目录 摘要 一.引言 二.背景 三. SABRE:比特币的安全中继网络 四.SABRE SECURE NETWORK DESIGN 五.SABER弹性中继节点设计 六.NETWORK ARCHIT ...

  6. SDN软件定义网络 学习笔记(4)--数据平面

    SDN软件定义网络 学习笔记(4)--数据平面 1. 简介 2. SDN数据平面架构 2.1 传统网络交换设备架构 2.2 SDN交换设备架构 2.3 数据平面架构图 3. SDN芯片与交换机 3.1 ...

  7. SDN(软件定义网络)数据平面

    数据平面 传统网络数据平面 数据平面主要执行网络控制逻辑,数据包的处理主要通过查询由控制平面所生成的FIB表来完成 FIB表是转发信息表(Forwarding Information Base的缩写, ...

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

    数据平面可编程与SDN关系 狭义 广义 数据平面可编程的理解 狭义 广义 转载于:https://www.cnblogs.com/wpqwpq/p/6002326.html

  9. 论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类+数据增强

    论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类+数据增强 摘要 1 介绍 2 相关工作 带增强的聚类方法 具有一致 ...

最新文章

  1. php表单数量,php – 解析具有未知数量字段的表单
  2. 全面讲解Python列表数组(一)创建,增删改查,萌新版,
  3. 2017蓝桥杯:承压计算
  4. Magicodes.IE 2.0发布
  5. ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器)
  6. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(一)既然你选择了这系列教程那么我就要让你听得懂
  7. oracle primavera p6 下载,【项目管理软件套装】Oracle Primavera P6 Enterprise
  8. 九九乘法表Python+Java
  9. 爬虫如何监听插件_NodeJS概述2-事件插件-简易爬虫
  10. XML的DTD约束和Schema约束
  11. qpython3l使用手册_qpython3l怎么用
  12. Spring Could+Ant Design Pro表格数据加载
  13. JAVA网络编程个人笔记 第五章 URL和URI
  14. CruiseControl.NET and MSBuild
  15. SEGGER_RTT
  16. H5 video 自动播放(autoplay)不生效解决方案
  17. signature=1c1223d10236c18f125cb9f7a490588e,Microscaled proteogenomic methods for precision oncology
  18. magento|paypal快速结账和结账页开发疑难
  19. 数据来源渠道及采集工具_鹰眼智客大数据可以采集哪些渠道客源?
  20. 算法与数学之美:最全数学各个分支简介

热门文章

  1. Mybatis从入门到精通(全)
  2. 最新-手把手教Unity2017.3 Android Studio3.0.1 SDK接入教程含jdk和sdk环境配置
  3. 前女友闺蜜给我发了一个压缩包,居然还带密码?暴力破解ZIP加密文件的密码!
  4. 总线揭密 串行传输VS并行传输
  5. 当命运欺骗了你,落到谷底时,唯一的出口就是向上
  6. 数字逻辑电路(三、集成门电路与触发器)
  7. java毕业设计校园招聘系统设计mybatis+源码+调试部署+系统+数据库+lw
  8. 2019 初入IT十年(下)---- 视线所及只剩生活
  9. 使用 LayUI+SpringBoot+Solr 模仿百度、做站内搜索引擎
  10. 中国都市女性抗衰洞察:Z世代抗衰意识普遍觉醒,“纹”题成抗衰重点