草庐IT

云原生5G核心网需要DPU吗?

SDNLAB君 2023-03-28 原文
2022 年,全球 5G 连接数突破 10 亿大关,每个 5G 用户消耗的数据量是非 5G 用户的两倍,移动网络流量正在快速增长。分析机构Omdia 预测:到 2023 年,5G用户平均每月将消耗14GB,到2027年将翻一番,达到28GB。

对于运营商来说,需要考虑如何处理这些快速增长的流量。

5G核心网向云原生演进

目前,5G核心网的设计都是基于NFV虚拟化架构,由VNF(虚拟网络功能)组成。VNF是构建在通用硬件上的软件包,是在虚拟环境中运行的网络功能。

NFV概念最早由ETSI 组织提出,是指通过IT虚拟化技术,利用标准化的通用IT设备来实现各种网络设备功能。其本质是实现硬件资源与软件功能的解耦,目标是通过标准的x86服务器、存储和交换设备来取代通信网络中私有的、专用的网元设备,在为运营商节省投资的同时实现新业务的快速开发和部署,并基于实际业务需求实现自动部署、容量的弹性伸缩、故障隔离和自愈等功能。

如图所示Firewall、VPN Gateway 两台PNF,需要使用两台虚拟机来运行此 VNF。此外,虚拟机的管理程序(Hypervisor)将物理服务器分割成了多个逻辑服务器(VM)。同时,虚拟机还需要在宿主机之上为每台虚拟机运行Guest OS操作系统,这对服务器来说是一个额外的负担。

然而,脱离了专用硬件的VNF是大颗粒的电信软件包,非常庞大、复杂,动辄涉及数百万行软件代码,这意味着从软件开发到发布、测试,整个过程工作量巨大,估计要耗费一年的时间。

为满足5G应用场景大带宽和低时延的特性要求,5G核心网的用户面在部署时不仅要下沉到边缘或区域数据中心以减少传输时延,而且还要大幅减少用户面报文的转发时延,VNF(虚拟网络功能)已经无法快速需求。

那怎么办?基于云原生的设计原则,将大颗粒的VNF进一步分解为多个小颗粒的微服务。微服务不仅颗粒小,且具有独立的生命周期管理,可以实现更细粒度的软件开发、发布、测试和升级,这就提升了运营敏捷性。

云原生(Cloud Native)定义了一种在虚拟云环境中开发和运行应用程序的新方法。云原生原则包括以下内容:

  • 应用程序被“分割”成更小的单元,称为微服务。一组更小的、相互连接的微服务取代了单个应用程序
  • 容器容纳微服务并提供运行时环境。容器无需虚拟机开销,而是打包应用程序代码、二进制文件和依赖项。容器之间共享同一个Guest OS或Host OS系统/内核。
  • Kubernetes 编排提供完整的容器生命周期管理。包括调度、启动/停止/重新启动和可见性。

| 网络功能的演变:从传统的垂直整合方式,到由通用虚拟机编排平台管理的 VNF,再到由通用容器编排平台管理的 CNF

CNF还具有其他突出优势,包括:

  • 提高灵活性和敏捷性,推出新服务或升级不再涉及更换任何硬件。
  • 降低成本,程序部署需要的硬件比支持VNF所需的硬件还要少。
  • 改进的可扩展性,因为容器化的微服务可以根据需要横向或者纵向扩展。由于云的特性,很容易部署更多的硬件资源,支持大量流量或并行用户涌入,基本上可以认为拥有无限可扩展性。
  • 提高容错性和可靠性。如果一个容器因任何原因而离线,运维人员可以立即启动另一个容器。

提高网络性能:软件Or硬件?

长期以来,业界一直在争论最初为计算任务而设计的基础设施,如何有效地处理 5G 用户面和低延迟边缘用例?

关键讨论之一是:使用硬件加速器(又名 SmartNIC 或数据处理单元 (DPU))来卸载数据包处理以此更有效地利用服务器资源,还是寻求优化性能的软件?

有观点认为,软件仍然有可能是主要的效率提升方式,即通过精心设计的云原生网络功能 (CNF),并且这是近期更好的方法,因为它保留了敏捷性和工作负载可移植性,可以使云变得更加强大。

硬件方案指通过将处理工作分配给加速硬件(协处理器)以降低中央处理器负荷,利用适合的加速硬件具有的处理优势可实现性能提升、成本优化的目的。

NFV下的硬件普遍采用x86通用服务器,而x86通用服务器的I/O性能如吞吐量、时延等远不如传统的专用硬件,无法满足5G 场景的商用部署要求。从表面上看,硬件加速在 5G 核心中具有吸引力。

使用DPU/SmartNIC等外置硬件卸载数据包处理,可提高流表查表和报文处理能力。对于需要加速的数据流报文,无需上传CPU,在DPU/SmartNIC本地即可处理转发,实现数据报文硬件级处理和转发,最大限度的降低了业务报文的使用。这样可以极大减少对CPU资源的占用,大幅提升性能并减少时延。

此外在虚拟化层,现有NFV架构的业务层、虚拟化层和硬件层解耦推进缓慢,可探索虚拟化层下沉到DPU,使NFV架构更加开放。

目前运营商正在推动开放的UPF,但当前大量UPF与设备厂商绑定。采用DPU/SmartNIC可以实现UPF的GTP、QoS、Forward等功能卸载,提高UPF转发效率,提高单服务器吞吐量,降低处理时延、抖动和丢包率等,并可以减少各站址用户面服务器部署数量,从而降低对机房空间、功耗、散热要求,降低成本。

用于 5G 核心网的 DPU/SmartNIC

下图是关于“您的组织是否希望在其 5G 核心用户平面中广泛使用硬件加速( DPU/SmartNIC)?”的用户调查结果。

40% 的受访者选择“在特定场景(例如固定无线接入)下使用DPU/SmartNIC”。固定接入服务每次连接产生的吞吐量比移动服务要大得多(根据经验来说,一般高 10 倍左右)。因此,使用硬件加速的理由更为充分。虽然这还需要几年的时间,但如果有线和无线开始融合,并且为固定和移动接入部署同一个用户平面,将有更多人选择使用硬件加速。

38% 的受访者选择了“广泛使用DPU/SmartNIC,用户平面加速在大多数情况下必不可少”,他们预计硬件加速对于有效处理 5G 核心用户平面流量将非常重要。

左右摇摆

DPU硬件加速具有诸多优势,其中最显著的优势是可以极大地提高网络性能,可以提供比传统技术更高的速度、更低的延迟和更强的网络性能。这样可以使5G网络能够更快、更可靠地传输数据。

虽然DPU/SmartNIC硬件加速在 5G 核心网中具有一定优势,但业界一度对核心网 NFV 的用户面是否需要使用硬件加速持怀疑态度。

通用硬件平台虚拟化是大势所趋,运营商刚从专用设备中转型脱身,DPU/SmartNIC似乎又回到了熟悉的专用硬件

硬件加速效能比达不到预期:专用设备被诟病的主要原因在于设备商垄断造成了高昂成本。当前,核心网硬件加速性能提升和成本下降有限,同时引入加速硬件可能带来的硬件绑定问题,使运营商难以下定决心

还有传闻称,当前的 5G 流量负载并不真正需要部署 DPU/SmartNIC加速技术。通过良好的软件设计和明智的部署选择,就可以在标准服务器硬件上轻松处理 5G 移动用户平面流量。

当然,也有观点认为,软硬件协同加速才是大势所趋。

如果目前只有少数地方/服务需要硬件加速,运营商须综合考虑现在是否需要投资这项技术。因此,总体来看,运营商对5G核心网用户面的硬件加速存在兴趣,但目前形势尚不明确。

有关云原生5G核心网需要DPU吗?的更多相关文章

  1. ruby - 我需要将 Bundler 本身添加到 Gemfile 中吗? - 2

    当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/

  2. ruby - rspec 需要 .rspec 文件中的 spec_helper - 2

    我注意到像bundler这样的项目在每个specfile中执行requirespec_helper我还注意到rspec使用选项--require,它允许您在引导rspec时要求一个文件。您还可以将其添加到.rspec文件中,因此只要您运行不带参数的rspec就会添加它。使用上述方法有什么缺点可以解释为什么像bundler这样的项目选择在每个规范文件中都需要spec_helper吗? 最佳答案 我不在Bundler上工作,所以我不能直接谈论他们的做法。并非所有项目都checkin.rspec文件。原因是这个文件,通常按照当前的惯例,只

  3. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  4. ruby - 为什么在 ruby​​ 中创建 Rational 不需要新方法 - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Rubysyntaxquestion:Rational(a,b)andRational.new!(a,b)我正在阅读ruby镐书,我对创建有理数的语法感到困惑。Rational(3,4)*Rational(1,2)产生=>3/8为什么Rational不需要new方法(我还注意到例如我可以在没有new方法的情况下创建字符串)?

  5. ruby-on-rails - 需要帮助最大化多个相似对象中的 3 个因素并适当排序 - 2

    我需要用任何语言编写一个算法,根据3个因素对数组进行排序。我以度假村为例(如Hipmunk)。假设我想去度假。我想要最便宜的地方、最好的评论和最多的景点。但是,显然我找不到在所有3个中都排名第一的方法。Example(assumingthereare20importantattractions):ResortA:$150/night...98/100infavorablereviews...18of20attractionsResortB:$99/night...85/100infavorablereviews...12of20attractionsResortC:$120/night

  6. ruby - 我需要从 facebook 游戏中抓取数据——使用 ruby - 2

    修改(澄清问题)我已经花了几天时间试图弄清楚如何从Facebook游戏中抓取特定信息;但是,我遇到了一堵又一堵砖墙。据我所知,主要问题如下。我可以使用Chrome的检查元素工具手动查找我需要的html-它似乎位于iframe中。但是,当我尝试抓取该iframe时,它​​是空的(属性除外):如果我使用浏览器的“查看页面源代码”工具,这与我看到的输出相同。我不明白为什么我看不到iframe中的数据。答案不是它是由AJAX之后添加的。(我知道这既是因为“查看页面源代码”可以读取Ajax添加的数据,也是因为我有b/c我一直等到我可以看到数据页面之后才抓取它,但它仍然不存在)。发生这种情况是因为

  7. ruby - 需要重构为新的 Ruby 1.9 哈希语法 - 2

    这个问题在这里已经有了答案:HashsyntaxinRuby[duplicate](1个回答)关闭5年前。我有一个Recipe,其中包含以下未通过lint测试的代码:service'apache'dosupports:status=>true,:restart=>true,:reload=>trueend失败并出现错误:UsethenewRuby1.9hashsyntax.supports:status=>true,:restart=>true,:reload=>true不确定新语法是什么样的...有人可以帮忙吗?

  8. ruby-on-rails - 我真的需要在 Rails 中使用 csv gem 吗? - 2

    我的问题很简单:我是否必须在使用RubyonRails的类上require'csv'?如果我打开一个railsconsole并尝试使用CSVgem它可以工作,但我必须在文件中这样做吗? 最佳答案 CSVlibrary是ruby​​标准库的一部分;它不是gem(即第三方库)。与所有标准库(与核心库不同)一样,csv不会由ruby​​解释器自动加载。所以是的,在您的应用程序中某处您确实需要要求它:irb(main):001:0>CSVNameError:uninitializedconstantCSVfrom(irb):1from/Us

  9. ruby-on-rails - 我需要一个真正的 UNIX RoR 开发环境 - 2

    从一开始,我就是一个Windows高手。我从MS-DOS开始。我安装了Windows2.1以及此后的所有Windows。现在,我家里有10台不同的Windows机器在运行,从Windows7Ultimate到各种版本的WindowsServer。我还没有完成Windows8,也不想去那里。我在服务器和各种软件方面都有UNIX经验,但它并不是我的首选环境。但是,我想我正在转换。我试图假装使用Cygwin和MSYS在Windows下运行UNIX。我的目的是搭建一个开发环境。两者都让我失望了。我花了比开发更多的时间来解决一系列技术问题。这是NotAcceptable。到目前为止,我的Ruby

  10. ruby-on-rails - 不兼容的库版本 : nokogiri. bundle 需要 8.0.0 或更高版本,但 libiconv.2.dylib 提供 7.0.0 版本 - 2

    为了在我的mac上为一个rails项目安装mysql,我遵循了安装Homebrew软件和删除mac端口的在线建议。这是问题开始的地方。rails项目不会构建,我得到这个:[rake--prereqs]rakeaborted!dlopen(/Users/Parker/.rvm/gems/ruby-1.9.3-p448/gems/nokogiri-1.6.0/lib/nokogiri/nokogiri.bundle,9):Librarynotloaded:/opt/local/lib/libiconv.2.dylibReferencedfrom:/Users/Parker/.rvm/gem

随机推荐