探索通用可编程数据平面

简介: 相比传统网络数据平面,通用可编程数据平面让网络用户可以自定义数据包的完整处理流程,实现理想的协议无关网络数据处理。作为一种理想的SDN数据平面,通用可编程数据平面还不够完善,还需要在不断的尝试中摸索前进。 本文选自《重构网络:SDN架构与实现》。

引言:相比传统网络数据平面,通用可编程数据平面让网络用户可以自定义数据包的完整处理流程,实现理想的协议无关网络数据处理。作为一种理想的SDN数据平面,通用可编程数据平面还不够完善,还需要在不断的尝试中摸索前进。
本文选自《重构网络:SDN架构与实现》。

  相比传统网络数据平面,通用可编程数据平面让网络用户可以自定义数据包的完整处理流程,实现理想的协议无关网络数据处理。而当下的OpenFlow模型还无法成为一种完全的通用可编程数据转发模型,还无法实现协议无关的转发。只有实现了真正的通用可编程数据平面,才会真正释放网络的可编程能力,从而逐步实现网络的软件化和程序化。

  对于网络用户和网络服务供应商,通用可编程数据平面使得他们可以快速地开发新网络功能及部署新网络服务。网络用户可以从软件产业过去几十年已发展成熟的软件编程理论、软件工程实践和工具中受益。计算机软件工程师也能够很容易对网络数据平面设备进行编程、测试和调试,以一个完全可编程的方式来管理整个网络。

  对于网络芯片供应商,通用可编程数据平面使他们能专注于设计及改进那些可重用的数据包处理架构和基本模块,而不是纠缠特定协议里错综复杂的细节和异常行为。而且,一旦证明这些架构和基本模块可行,供应商就可以在多代交换芯片的设计中重复使用它们,不必为客户不断产生的新需求而反复修改。

  对于网络研究人员,通用可编程数据平面为他们验证新想法提供了新的契机。OpenFlow数据平面设备早期被广泛用于网络科研领域这一事实也证明了这一点。网络研究人员基于通用可编程数据平面可以快速搭建满足新实验需求的网络系统,不需要等待设备厂商的产品升级。

  从OpenFlow Switch通用转发模型诞生至今,学术界和产业界在通用可编程数据平面领域做了很多努力,持续推动了SDN数据平面的发展。其中典型的通用可编程数据平面设计思路是The McKeown Group的可编程协议无关交换机架构PISA(Protocol-Independent Switch Architecture)。

        图片描述
                        PISA架构

  PISA是在2013年的RMT(Reconfigurable Match Tables)架构基础上发展起来的一种新的SDN数据平面。到达PISA系统的数据包先由可编程解析器解析,再通过入口侧一系列的Match-Action阶段,然后经由队列系统交换,由出口Match-Action阶段再次处理,最后重新组装发送到输出端口。

  其中可编程协议解析器模型是Glen Gibb等在2013年提出的一种新的通用抽象模型,实现了协议无关的网络数据包协议解析处理,改进了OpenFlow Switch在支持新网络协议方面的不足。可编程的Match-Action模型实现了协议无关的网络数据转发处理,包括匹配逻辑和行动逻辑两部分。匹配逻辑是通过静态随机存储器(SRAM)和三态内容寻址存储器(TCAM)的混合查找表,以及计数器、流量统计表和通用哈希表组合实现的。行动逻辑是通过一组ALU标准布尔和算数运算单元、数据包头修改操作和散列操作组合实现的。PISA还提供了一条回流路径使一些特殊数据包能够被多次反馈到解析器和转发处理流水线。PISA 实现了一个可编程数据包生成器,使控制平面可以将频繁或周期性的数据包生成操作交给数据包生成器来完成。

  可以看出,PISA通用可编程数据平面在可编程协议解析处理和可编程数据包处理操作两个方面进行了扩展。但是中间数据包调度部分还是采用传统的设计思路,不支持用户可编程的数据包队列管理和调度处理。Sivaraman等在2015年提出了一种通用可编程包调度处理模型,实现了用户可编程的包调度处理,改进了PISA在数据包调度处理可编程性方面的不足。

  但是,相比通用计算数据平面,PISA在可编程生态上还有不足。通用计算数据平面就是通用处理器,就是我们所熟悉的如何在通用处理器上编程、基于高级编程语言描述具体的应用,以及编译这些程序并在通用处理器上运行。计算机领域的数据平面可编程生态系统已经非常成熟,而在网络领域里,这样的故事才刚刚开始。

  网络数据平面编程语言的出现,使得用户可以自定义网络数据包的处理流程,进一步提升了通用可编程数据平面的可编程能力。P4(Programming Protocol-Independent Packet Processors)语言是网络数据平面编程语言中的典型例子。用户通过编写一段P4程序来定义数据包的处理流程,然后利用P4编译器将这段程序翻译成指定网络数据平面的配置信息,从而实现用户可编程的网络数据处理。

             图片描述
                           P4语言

  P4数据平面编程语言框架是否能成为一种成功的通用可编程数据平面,其关键在于P4语言的建模能力和P4开发工具的完善程度。P4语言的建模能力依赖于语言本身的发展和功能库的完善。每个P4程序包含Header、Parser、Table、Action和Control Programs五部分。P4联盟创建了一个开源社区,发布了广受支持的1.0.2版本和最新的1.1.0版本语言规范,也维护了一组P4程序案例。

  现有的开源P4开发工具主要包括P4编译器、P4交换机参考模型和测试框架。P4编译器需要从P4程序的Header和Parser部分导出数据平面解析器的配置信息,从Table、Action和Control Programs中导出Match-Action表中的配置信息和所有依赖关系。同时,编译器还需要考虑目标数据平面硬件的功能和特性,尽可能支持更多的目标硬件。需要注意的是,通过编译P4程序,不仅可以生成数据平面设备的配置信息,还可以生成运行API,来实现控制平面与数据平面之间的交互。在这些开发工具的支持下,用户可以很容易地编写和编译自己的P4程序,使用参考模型来运行和调试程序。

  除此之外,在OpenFlow Switch通用转发模型的基础上,研究人员尝试建立更加通用的网络数据处理抽象模型。华为美国研究所的宋浩宇等提出了协议无关转发(Protocol Oblivious Forwarding,POF)框架,通过对网络转发处理行为进行再次抽象,实现协议无关转发处理。具体来说,对任意报文,其报文解析和匹配域读取都可以抽象为在报文特定位置读取特定长度比特串{offset, length},转发面仅需要知道偏移量和长度就可以完成处理。同样,对于报文的处理也可以抽象为在报文特定位置的比特串的插入、删除、拷贝和修改等操作。在POF架构中,POF交换机并没有协议的概念,它仅在POF控制器的指导下通过{offset, length}来定位待匹配的数据,从而完成网络数据转发处理。

  针对OpenFlow Switch不支持描述有状态网络处理的问题,罗马杜维嘉大学的Giuseppe Bianchi等在OpenFlow Switch基础上增加了新的抽象子模型State Table,创建了支持有状态网络处理的新通用数据平面模型OpenState。明尼苏达大学的Hesham Mekky等提出的应用感知SDN架构,在OpenFlow Switch基础上增加了新的应用Table子模块,增强了数据平面支持有状态网络处理的抽象能力。普林斯顿大学研究团队提出了一种新的网络数据处理原语FAST(Flow-level State Transitions),使得用户可以通过SDN控制器对数据平面设备的有状态处理流程进行编程。这些新的研究思路都对OpenFlow Switch通用转发模型的抽象能力做了进一步扩展。

  此外,日本的NEC公司在OpenFlow Switch通用转发模型基础上设计网络领域的专用指令集处理器(ASIP,Application Specific Instruction Set Processor)。在网络数据平面发展过程中,网络处理器(NP,Network Processor)与通用可编程数据平面非常相似。网络处理器是一种可编程的网络处理硬件,它结合了RISC处理器的低成本、灵活性及定制芯片(ASIC)的高性能。网络处理器并不受限于某种具体的网络协议,可以适应任意一种网络协议。网络处理器类似于通用处理器,硬件架构保持固定,由软件决定网络处理器如何处理数据包。相比通用可编程数据平面,网络处理器的设计与实现已经非常成熟,有很多完善的设计工具和案例可供参考。

  任何技术的发展都不是一帆风顺的,也不可能一蹴而就。作为一种理想的SDN数据平面,通用可编程数据平面还不够完善,还需要在不断的尝试中摸索前进。

  本文选自《重构网络:SDN架构与实现》,点此链接可在博文视点官网查看此书。
                    图片描述
  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                       图片描述

相关文章
|
存储 网络安全 对象存储
基于OSS搭建私有 Docker Registry
基于OSS搭建私有 Docker Registry Docker Registry 作为 Docker 的核心组件之一负责了镜像的存储以及分发。用户只需要使用 Docker 的客户端就可以直接和 Registry 进行交互,下载和上传镜像。
15264 43
|
7月前
|
数据采集 人工智能 供应链
国内首个,面向中小企业数据资产估值体系:“荟宸信科面向中小企业数据资产估值体系”正式发布(二)
国内首个,面向中小企业数据资产估值体系:“荟宸信科面向中小企业数据资产估值体系”正式发布(二)
|
10月前
|
缓存 JSON API
1688 商品详情 API 接口实战指南
1688开放平台alibaba.item.get接口,用于获取商品全量信息,支持选品、ERP同步等场景。需企业认证、申请权限并配置IP白名单。通过AppKey/Secret生成签名,调用时指定item_id等参数,返回商品标题、价格、SKU、图片等字段。默认5次/秒调用频次,建议按需请求、本地缓存、异步处理以提升效率。
|
6月前
|
存储 人工智能 弹性计算
阿里云2核4G特价云服务器:轻量应用服务器199元抢购,云服务器199元新购续费同价
2026年阿里云推出2核4G特价云服务器活动,轻量应用服务器以9.9元/月或199元/年价格,适合搭建专属AI助理;通用算力型u1实例云服务器,新购与续费同价199元/年,提供稳定企业级性能,适用Web服务器、中小型数据库等场景。此外,还有u2i实例3折及第九代实例6.4折优惠。活动覆盖个人与企业用户,满足不同预算与需求。
|
6月前
|
运维 安全 Linux
终端管理软件怎么选?五款主流工具一次说清楚
本文对比Intune、NinjaOne、Jamf Pro、Atera和ManageEngine Endpoint Central五款主流终端管理工具,聚焦中小企业IT团队真实需求,从系统兼容性、部署方式、合规支持、成本及适用场景等维度深度分析,助你避开“参数陷阱”,选对真正匹配自身环境的工具。(239字)
623 1
|
8月前
|
机器学习/深度学习 编解码 人工智能
从 Genie 2 到 Genie 3:一年间世界模型发生了什么
2024–2026年,Google DeepMind的Genie系列从2D概念验证(Genie 1)跃升至3D可交互世界(Genie 2),再进化为支持自然语言事件调控、多模态输入与分钟级记忆的Genie 3;2026年1月以Project Genie正式商用,标志世界模型迈入实用化新阶段。
782 2
|
Java 关系型数据库 MySQL
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
1203 2
|
消息中间件 设计模式 人工智能
掌握全维度智能体提示词框架(CAP)重塑AI提示词工程​
本文介绍了全维度智能体提示词框架CAP,通过四层架构实现对AI智能体行为的精准控制,涵盖身份定义、能力调度、安全约束与执行优化,助力企业构建可控、可维护的AI应用系统。
2105 0
|
人工智能 JSON 小程序
【AI编程】AI+高德MCP不到10分钟搞定上海三日游
本文介绍了小白如何通过AI编程工具(如Trae)快速开发应用并实现技术变现。内容涵盖AI编程用途、工具准备、高德地图开发者权限获取、AI工具配置及实战生成旅游攻略与打印页面,帮助零基础用户轻松入门AI编程。
793 0
|
安全 网络协议 网络安全
解析HTTP代理服务器不稳定致使掉线的关键原因
随着数字化发展,网络安全和隐私保护成为核心需求。HTTP代理服务器掉线原因主要包括:1. 网络问题,如本地网络不稳定、路由复杂;2. 服务器质量差、IP资源不稳定;3. 用户配置错误、超时或请求频率异常;4. IP失效或协议不兼容。这些问题会影响连接稳定性。
981 8