0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

探讨SONiC-DASH网络可编程技术

SDNLAB 来源:SDNLAB 2024-04-25 13:00 次阅读

SONiC(Software for Open Networking in the Cloud,云中开放网络软件)是一个基于 Linux 的开源网络操作系统 (NOS),旨在为现代网络环境带来灵活性和效率。与传统的专有网络操作系统相比,SONiC的核心思想是引入开放网络原则,即将硬件与软件解耦,使得网络设备的操作系统可以在各种硬件平台上运行,从而促进了互操作性。SONiC是最受欢迎的网络开源项目之一。 SONiC-DASH是SONiC NOS的扩展,全称为Disaggregated API for SONiC Hosts,简称DASH。它是一款开源软件,旨在利用各种智能网卡(SmartNIC)、智能交换机(SmartSwitch)、数据处理单元(DPU)、IPU、加速器和其他网络设备,为云应用提供企业级网络性能。

DASH的设计目标是将SONiC扩展到标准功能之外,允许在边缘或者定制网络路径上使用。通过DASH,管理员能够利用外部处理元件来卸载CPU并加速各种任务,例如人工智能/机器学习、数据分析、深度数据包检测、媒体和信号处理、虚拟现实以及科学和军事应用等。DASH还提供了一个框架,用于编写这些服务的行为模型,以及测试用例。 DASH 的主要目标是让可编程技术足够具体,以优化网络性能并充分利用商用硬件技术,从而实现10倍甚至100倍的状态连接性能。

SONiC 和 DASH 架构

SONiC 是一款专为交换机(包括TOR交换机、spine交换机和边界leaf交换机)量身定制的网络操作系统,为网络设备管理提供了强大的框架,实现了网络操作的可编程性和自动化。 另一方面,DASH主要运行在智能设备上,专注于从CPU上卸载处理任务以提升任务加速。DASH 利用 SONiC 提供的现有 API 扩展其功能来与基于 SONiC 的网络环境集成。 DASH 建立在 SONiC 的基础系统架构之上。它仍然依赖于 redis-db 作为数据和模块的中心点,这些数据和模块打包到容器中,发布/订阅数据并与外部环境进行交互。DASH 由 SONiC 模块组成,并进行了一些扩展,可以与现有 SONiC 生态系统无缝集成。 下图展示了 DASH 扩展或添加的模块以及它们之间的交互:

328d90b8-0222-11ef-a297-92fbcf53809c.png

图 1:SONiC 和 DASH 架构 如果我们将 DASH 视为与外部环境交互的黑盒软件,则会涉及两个主要组件用于通信。第一个是北向API,称为DASH API,它方便SDN控制器对DASH的管理。第二个是南向 API,它是一种扩展的 SAI API(交换机抽象接口 API),提供独立于供应商的机制来控制转发元件。 DASH扩展的组件:

gNMI容器:负责实现gNMI协议的组件,基于gRPC和Protocol Buffers。它支持使用基于 gNMI 的网络管理工具和平台远程管理和配置 SONiC-DASH 设备。

Redis DB:主要用于存储实时操作数据以及SONiC生态系统内各个组件之间的通信。

orchagent:负责将高级配置转换为低级操作的关键组件。Orchagent 抽象了网络设备配置,使 SONiC 能够通过与 SAI API 接口在各种硬件平台上无缝工作,SAI API 提供了用于访问特定于硬件的功能的标准化接口。

交换机抽象接口(SAI)API:提供标准化编程接口,抽象不同底层交换ASIC和硬件平台的功能。

DASH 配置由 SDN 控制器编排,管理基础设施物理层(underlay)之上建立的overlay层。SDN 控制器和 DASH 设备之间的通信通过托管在新 SONiC-DASH 容器内的基于 gRPC 的 gNMI 端点进行。在 DASH 容器中,在 gNMI 中建模的 SDN 配置被转换为 Redis DB 中的 DASH_APP_DB 对象。

随后,交换机状态服务 (SWSS) 容器内的 SONiC orchagent得到增强,可将这些对象转换和解释为 ASIC_DB 对象,包括新引入的 DASH 特定 SAI 对象。然后,改进的syncd利用供应商特定的SAI 库来配置数据平面。

DASH管道

DASH 在传统 SONiC 管理的底层基础设施之上建立了overlay服务。这种overlay服务或应用利用管道作为自适应处理单元,允许创建自定义处理逻辑,每个阶段都描述了一系列表,表项根据指定的标准匹配数据包并执行相应的操作。这些管道位于数据平面(例如SmartNIC, DPU),支持动态配置。 此外,还可以对管道进行编程,以动态适应不断变化的网络需求。这种灵活性支持定义针对特定数据包行为的操作,如丢弃、转发、修改或保存。例如,入站数据包处理管道可以管理发往虚拟网络 (VNET) 内的虚拟机 (VM) 的流量。

329ded64-0222-11ef-a297-92fbcf53809c.png

图2:入站数据包处理管道 DASH 是一个相对较新的项目,目前已经为云提供了一些初始服务。 以下是支持的应用程序:

VNET 到 VNET - 允许 VNET 中的 VM 到 VM 通信、路由支持、LPM 支持、ACL 支持;

VNET 对等互连 - 连接两个或多个虚拟网络;

高可用性 (HA) - 在故障转移的情况下提高可用性;

负载均衡 - 使用虚拟机之间的直接路径在端点之间分配传入网络流量以确保高效利用;

服务隧道和专用链路 - 在允许访问的 VNET 的专用链路之间建立连接;

加密网关 - 管理网络内数据流量的加密和解密的服务;

快速路由网关 - 允许客户建立云服务的私有和专用连接。

P4和 DASH

P4是一种特定于领域的编程语言,旨在定义交换机和路由器等转发设备如何处理网络数据包。与传统的网络语言不同,P4 专注于提供高水平的抽象来对数据平面进行编程,让网工能够自定义和优化数据包处理,无需依赖于特定的硬件或协议。

P4 是协议无关的,这意味着它允许用户定义数据包处理的行为,无需绑定到特定的网络协议。在快速发展的网络环境中,新的协议和技术不断涌现,P4 的灵活性显得尤其有价值。借助 P4,网络运营商可以调整其基础设施来支持这些变化,无需进行大量硬件升级或更换。

P4 的主要用例之一是SDN环境。SDN将控制平面与数据平面分离,允许网络管理员动态地控制和管理网络行为。P4 支持在数据平面中对自定义数据包处理逻辑进行编程,从而促进高度灵活和可编程的网络架构的创建。
DASH 定义了数据平面设备处理数据包的方法,主要通过管道来实现。而P4 用于建模和描述 DASH 管道。通过P4,网工可以定义在硬件中执行的自定义数据包处理逻辑,从而减轻通用 CPU 的工作负担并加快数据包处理速度。

P4代码是数据平面行为的最终规范。具体来说,通过使用P4代码或由P4编译器生成的P4Info,可以自动生成DASH SAI头文件,从而建立P4代码与相应的DASH-SAI API之间的连接。此外,用于测试overlay服务的SAIThrift代码也是自动生成的。这种集成突显了P4作为数据平面行为的单一来源的重要性。 需要注意的是,P4用于描述数据平面的行为,用于生成头文件,但数据平面本身的实现并不一定要在P4中进行。如何实现数据平面取决于硬件供应商,但必须符合P4中描述的模型。

32b15a66-0222-11ef-a297-92fbcf53809c.png

图 3:带有 P4 的 DASH 管道

如前所述,DASH是SONiC的扩展,其代码库和API有单独的存储库。尽管有这些单独的存储库,但构建过程通过其指定的构建环境(称为SONiC-buildimage)与SONiC无缝集成。在启动SONiC构建时,DASH代码会自动包含并编译,以确保其集成到SONiC生态系统中。为了确保操作功能的完整性,某些组件必须与DASH一起构建。 DASH旨在通过增强硬件编程来实现广泛的网络功能,它借助SONiC的架构和关键组件,并遵循SDN方法来实现数据平面。尽管DASH仍处于开发阶段,但已经与SONiC的主流基线集成。当前,硬件供应商还需要更多时间来发布符合DASH标准的设备。我们看到了这项技术的巨大潜力,它将成为未来网络实施的一个重要组成部分。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 交换机
    +关注

    关注

    20

    文章

    2608

    浏览量

    99040
  • 网络设备
    +关注

    关注

    0

    文章

    306

    浏览量

    29574
  • Sonics
    +关注

    关注

    0

    文章

    2

    浏览量

    6200
  • DASH
    +关注

    关注

    0

    文章

    8

    浏览量

    2673

原文标题:SONiC-DASH:网络可编程的进化之路

文章出处:【微信号:SDNLAB,微信公众号:SDNLAB】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    可编程技术的引爆点

    25年前,赛灵思(Xilinx)公司发明了FPGA(现场可编程门阵列)。如今,以FPGA为代表的可编程芯片应用已经成为势不可挡的发展趋势,尤其在ASSP和传统ASIC之间出现的市场缺口上,FPGA将开辟出新的领域,而目前席卷全球的金融危机更是成为FPGA迅速发展的催化剂。
    发表于 07-25 08:05

    分享一款不错的基于SRAM编程技术的PLD核心可重构电路结构设计

    CPLD的核心可编程结构介绍基于SRAM编程技术的PLD电路结构设计
    发表于 04-08 06:51

    如何设计具有相似功能且基于SRAM编程技术的电路结构?

    CPLD的核心可编程结构是怎样的?如何设计具有相似功能且基于SRAM编程技术的电路结构?基于SRAM编程技术的PLD电路结构是怎样设计的?基于SRAM编程技术的P-Term电路结构是怎
    发表于 04-14 06:51

    PLC控制系统的编程技术

    介绍了可编程序控制器控制系统开发过程中,PLC梯形图编程要注意的问题及相应的编程技术。关键词:可编程序控制器;控制系统;梯形图;编程技术
    发表于 05-31 14:28 15次下载

    DSP器件的现场可编程技术

    DSP器件的现场可编程技术 DSP问世以来,以其强大的功能、合理的价格已经被设计者广泛应用。但不同于FPGA器件的是,DSP并不是为现场可编程而开发的,因此,在嵌入了DSP器
    发表于 01-07 10:11 911次阅读
    DSP器件的现场<b class='flag-5'>可编程技术</b>

    Xilinx针对消费数字电视显示器扩展可编程技术优势

    Xilinx针对消费数字电视显示器扩展可编程技术优势  全球可编程逻辑解决方案领导厂商赛灵思公司(Xilinx, Inc. )日前在美国国际消费电子展 (CES) 上宣布推出首款为开发最
    发表于 01-09 09:09 520次阅读

    赛灵思发布28纳米FPGA平台 推进可编程技术

    赛灵思发布28纳米FPGA平台 推进可编程技术 赛灵思公司(Xilinx)宣布发布赛灵思新一代可编程FPGA平台。 据悉,目前过高的ASIC设计和制造成本、快速演化的相关
    发表于 02-24 09:31 738次阅读

    可编程SoC(SoPC),什么是可编程SoC(SoPC)

    可编程SoC(SoPC),什么是可编程SoC(SoPC) SOPC ( System on a Programmable Chip,片上可编程系统)是以PLD(可编程逻辑器件)取代A
    发表于 03-26 17:01 2414次阅读

    现代可编程序控制器网络通信技术_部分2

    通信、网络通信技术原理及IEEE802等网络通信协议国际标准;工业网络可编程序控制器网络通信的
    发表于 04-19 15:45 5次下载

    现代可编程序控制器网络通信技术_部分1

    通信、网络通信技术原理及IEEE802等网络通信协议国际标准;工业网络可编程序控制器网络通信的
    发表于 04-19 15:45 3次下载

    Flash单片机自编程技术探讨

    Flash单片机自编程技术探讨
    发表于 01-14 12:32 6次下载

    可编程技术网络芯片上的应用

    网络是数据中心里的交通枢纽,连接着所有运行应用业务的设备。没有网络,也就没有数据中心,没有互联网的今天,网络在数据中心里发挥着非常关键的作用,所以网络技术一直是热点,在不断发展进化着,
    发表于 08-23 17:48 1125次阅读

    可编程时代下网络芯片如何应用可编程技术

    网络是数据中心里的交通枢纽,连接着所有运行应用业务的设备。没有网络,也就没有数据中心,没有互联网的今天,网络在数据中心里发挥着非常关键的作用,所以网络技术一直是热点,在不断发展进化着,
    发表于 12-24 15:27 1502次阅读

    可编程技术网络芯片的应用,可增强网络的灵活性

    没有网络,也就没有数据中心,没有互联网的今天,网络在数据中心里发挥着非常关键的作用,所以网络技术一直是热点,在不断发展进化着,其中就包含可编程技术
    发表于 04-13 11:35 1069次阅读

    采用5管单元的SRAM结构实现CPLD可编程电路的设计

    显然,设计基于SRAM编程技术的CPLD可以很好解决上述应用问题。CPLD的设计和实现的关键问题是核心可编程电路结构的实现。因此,本文主要探讨针对CPLD的核心可编程结构,如何设计具有
    发表于 04-25 10:21 1927次阅读
    采用5管单元的SRAM结构实现CPLD<b class='flag-5'>可编程</b>电路的设计