我的编程空间,编程开发者的网络收藏夹
学习永远不晚

利用DDP技术提升Tungsten Fabric vRouter性能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

利用DDP技术提升Tungsten Fabric vRouter性能

在刚刚结束的“2020虚拟开发人员和测试论坛”上,来自瞻博网络的工程师Kiran KN和同事,介绍了在Tungsten Fabric数据平面上完成的一组性能改进(由Intel DDP技术提供支持),以下为论坛技术分享的精华:

利用DDP技术提升Tungsten Fabric vRouter性能
作为DPDK应用的vRouter

利用DDP技术提升Tungsten Fabric vRouter性能

在深入到DDP技术之前,首先介绍一下vRouter,它是什么,以及在整个Tungsten Fabric框架中的位置。
 

实际上,vRouter可以部署在常规X86服务器上,也可以在OpenStack或K8s的计算节点当中。vRouter是主要的数据平面组件,有两种部署的模式,分别是vRouter:kernel module,以及vRouter:DPDK模式。

 利用DDP技术提升Tungsten Fabric vRouter性能


在用DPDK改善性能之前,此用例将涉及DPDK应用和vRouter。vRouter的职责是数据平面,用于数据包转发和由vRouter代理在计算节点上编程的数据包转发,但实际上,整个配置是通过控制器上的XMPP提供的。我们使用XMPP通过vRouter agent与控制器通信,并且有一个专门的接口来对vRouter数据平面进行编程以转发软件包。
 
在DPDK中,vRouter是一个高性能、多核和多线程的应用程序,这里想强调一下,它是专用于多核的DPDK应用,我们需要寻找多核的正确用法。
 
我们可以从示例中看到,网卡具有与vRouter相同数量的队列,已为数据包或链接分配了核心。
 
首先,数据包需要由网卡平均地分配到所有路由器转发核心。为此,使用了带有5元组哈希的算法,在所有内核之间正确分配流量。而且,适当的负载平衡是基于数据包的,并且要实现该数据包需要具有5元组,多个源的目标端口IP地址。如果该协议正确,则该协议可以确定所有内核之间的流量平均分配,并且我们可以利用它分配给vRouter DPDK的所有内核的性能。尽管此流量包分布在各个处理内核上,但可以通过TX接口队列,将它们适当地放置到虚拟机中。
 
如果此流量在各个内核之间没有得到适当的平衡,则vRouter将在没有内核的情况下进行重新平衡,但是对于内核来说,通过内核重新哈希化它们的代价很高,这意味着它们会消耗CPU周期并带来额外的延迟。
 
这就是我们面临的问题,但在今天得到了很大程度的解决,我们可以期待网卡能够完成此任务,并适当地平衡vRouter核心之间的流量。

 利用DDP技术提升Tungsten Fabric vRouter性能


也就是说,具有MPLSoGRE的计算类型没有足够的熵(entropy)。由于熵的存在,我们的报头中没有足够的信息,或无法正确平衡数据包的负载。
 
具体来说,数据包应该具有完整的端口信息,包含完整的5个要素,即源IP、目标IP、源端口、目标端口和协议。但是在MPLSoGRE只有源IP、目标IP和协议三元组信息。因此,网卡无法适当地平衡数据包的负载,由于该CPU内核,一对计算节点之间的所有数据包都落在瓶颈中的同一区域,这将导致网卡队列成为整个计算的瓶颈,并且性能受到影响。
 
例如,假设一对计算节点之间有数千个流(flows)。理想情况下,我们希望将流平衡分布在所有的内核上,以便可以由不同的CPU将其拾取,以进行数据包处理。但是对于MPLSoGRE,已知端口的信息没有足够的熵,来自特定计算节点的所有数据包都会发生,即使有很多流量,网卡也不会将它们分发到所有队列。因此,这里不再像我们所知道的那样,实际上数据包不会像这样分散在多个内核中,它只会分配给一个内核。

因此,尽管有很多CPU内核,但由于所有数据包必须经过C1,C1本质上成为了瓶颈。数据包无法直接流经C2、C3、C4,是因为它们没有在硬件上加载,所有其它内核必须从C1获取数据包,显然C1将会过载。
利用DDP技术提升Tungsten Fabric vRouter性能

引入DDP消除瓶颈


利用DDP技术提升Tungsten Fabric vRouter性能

我们为Tungsten Fabric数据平面引入了一项新功能,该功能消除了MPLSoGRE数据包的瓶颈,使得性能与CPU内核数成正比。这意味着没有单个CPU内核会成为瓶颈,并且网卡硬件将数据包平均分配给所有CPU内核。
 
我们的解决方案由Intel DDP(dynamic device personalization)技术提供支持,使用以太网700系列的产品来提供。英特尔转向可编程管线模型后,确保它们引入了诸如固件可升级之类的功能,DDP允许在运行时动态重新配置网卡中的数据包处理管道,而无需重启服务器。软件可以将自定义配置文件应用到网卡,我们可以将这些配置文件视为附件,可以由最终用户自己构建。这些配置文件可以通过软件刷新到网卡上,以便它们可以开始在线识别和分类新的数据包类型,并将这些数据包分配到不同的Rx队列。

这是MPLSoGRE实施的情况,首先是这是一个没有DDP提取功能的MPLSoGRE数据包,它没有获得在当前数据包中听到的内部实际存在的启动信息,因此它没有足够的信息来正确分配数据包。在第二个图例中启用了DDP,配置文件便可以开始识别内部数据包标头,以及内部IP标头和内部UDP标头,因此它可以开始使用该信息来计算哈希。
 
如何使DDP成为最终用户需要为其数据包类型创建配置文件的方式?
 
可以通过使用Intel的配置文件编辑器(profile editor)工具来创建,Intel在其上发布了一些标准配置文件,可以直接从Intel网站下载。配置文件编辑器可用于创建新条目,或者修改分析器的现有条目,这是第1步。第2步,为MPLSoGRE数据包创建一个新的配置文件,该配置文件在不同的层上定义数据包头的结构。第3步,是编译并创建一个二进制程序包,可以应用于网卡。第4步,我们可以使用DPDK API在每个工具接口将这些配置文件加载到网卡。接下来第5步,网卡就能够识别MPLSoGRE数据包。

利用DDP技术提升Tungsten Fabric vRouter性能

利用DDP技术提升Tungsten Fabric vRouter性能

对性能提升的测试及确认


利用DDP技术提升Tungsten Fabric vRouter性能

接下来,我们需要测试并确认,DDP可以提供帮助带来性能提升。
 
首先,我们的测试框架广泛用于开发和测试vRouter。我们使用代理方式以拥有快速概念验证的能力,并收集信息。测试vRouter性能的所有方法,包括封装和计算节点之间的封装,并且总是会包含overlay网络,就像在图例中的所看到的那样,我们通过第三个对象(rapid jump VM),该对象只有控制流量(不通过其它任何流量),向VM发送指令并收集信息。为了实现测试目标,我们采用丢包率只有0.001%的二进制搜索,使用标准的测试框架和规范。
 
在vRouter中,我们可以找到脚本,显示每个内核CPU数据包处理的统计信息,以证明网卡正确地集中了所有内核之间的流量。这些统计信息来自VM0接口,这意味着连接与物理网卡之间的接口。
 
在左侧,你可以看到内核1没有在处理软件包,这实际上意味着该内核未接收到任何由vRouter处理的软件包。此内核只是忙于轮询程序包,并在vRouter上的其它可用内核之间分配程序包。这意味着vRouter将成为瓶颈,因为首先需要将所有进入vRouter的流量从网卡队列中拉出,然后将其进行重新分配(跨其它核心)以转发到VM。
 
而在右侧,你可以看到使用DDP的网卡已经正确分配了流量,Rx队列中所有内核之间的流量几乎相等。证明网卡完成了自己工作,并平均分配了流量。
 
可以看到,是否使用DDP,在性能结果中统计数据上的差别。在不大于3个内核的情况下,使用DDP并没有得到任何好处——因为对于轮询内核和跨内核重新分配流量,目前网卡处理这样的队列还是足够快的。
 
但是一旦增加内核数量,然后提高整体性能,那么网卡就成为了瓶颈——在没有DDP的情况下性能不会提高,即使增加了内核数也是如此,因为总有一个内核在拉动流量,并且你可以看到,在没有DDP的部分中6.5mpps左右是一个内核从网卡队列中轮询的最大值。
 
利用DDP技术提升Tungsten Fabric vRouter性能

随着内核的数量增加,每个内核都从网卡接收了相同数量的流量。一旦内核数量超过6个,则收益将变得更高。正如我们所看到的,具有6个内核的增益大约为73%,这确实是个很酷的数字。不仅可以提高性能,使用DDP还可以得到更好的降低延迟。这是因为我们不需要平衡内核之间的流量,也不需要计算每个数据包的哈希值。在vRouter上,这将由网卡完成,收益的增加平均为40%,最多为80%,这已经是非常棒的数字了。

综上,对于拥有多个内核的用例,我们可以借助DDP技术获得很大的收益。另外,对于5G用例而言,DDP能够减少延迟这一点非常重要。在所有我们希望使用MPLSoGRE情况下,借助vRouter,我们已经准备好在多核中进行5G应用部署。
 
【本文相关资料pdf文档下载】

https://tungstenfabric.org.cn/assets/uploads/files/tf-vrouter-performance-improvements.pdf 

视频链接

https://v.qq.com/x/page/j3108a4m1va.html

利用DDP技术提升Tungsten Fabric vRouter性能

利用DDP技术提升Tungsten Fabric vRouter性能

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

利用DDP技术提升Tungsten Fabric vRouter性能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

利用DDP技术提升Tungsten Fabric vRouter性能

在刚刚结束的“2020虚拟开发人员和测试论坛”上,来自瞻博网络的工程师Kiran KN和同事,介绍了在Tungsten Fabric数据平面上完成的一组性能改进(由Intel DDP技术提供支持),以下为论坛技术分享的精华:作为DPDK应用
2023-06-03

PHP利用缓存技术提升性能技巧及原理探究

本文探讨了PHP中缓存技术的原理和应用,旨在提升应用性能。缓存技术通过存储经常访问的数据,避免重复读取和计算,从而减少数据库查询、提高响应时间和降低服务器负载。PHP支持多种缓存类型,包括内存缓存、文件缓存、对象缓存和分布式缓存。选择合适的缓存策略和遵循最佳实践对于充分利用缓存至关重要。本文提供了使用Redis、APC和OPcache扩展的示例以及最佳实践指南,帮助开发人员优化PHP应用的性能。
PHP利用缓存技术提升性能技巧及原理探究
2024-04-02

PHP框架中的缓存技术详解:提升应用性能的利器

缓存技术可提升 php 应用性能,通过存储数据副本实现快速访问。主流 php 框架提供缓存支持,如 laravel 提供多样化的缓存驱动,symfony 提供灵活的缓存组件,zend framework 提供抽象层以轻松切换适配器。实例如:
PHP框架中的缓存技术详解:提升应用性能的利器
2024-05-23

掌握RESTful 服务缓存技术,提升应用程序性能

RESTful 服务缓存技术是一种有效提升应用程序性能的方法,它可以帮助减少服务器端的调用次数,从而提高应用程序的响应速度。本文将介绍几种常见的 RESTful 服务缓存技术,并通过演示代码对它们的用法进行详细讲解。
掌握RESTful 服务缓存技术,提升应用程序性能
2024-02-04

如何使用代码重构技术提升 PHP 函数性能?

代码重构是提升 php 函数性能的有效技术,通过内联变量、提取方法、使用查找表等方式优化代码结构和减少重复,包括:1. 内联变量:消除变量创建和销毁开销。2. 提取方法:提高代码可读性和可维护性。3. 使用查找表:加速常量值查找。如何使用代
如何使用代码重构技术提升 PHP 函数性能?
2024-04-26

如何利用静态重定位技术提高系统性能

如何利用静态重定位技术提高系统性能摘要:随着计算机技术的发展,系统性能的提升成为了计算机工程师们的一项重要任务。静态重定位技术是一种可以提高系统性能的方法之一。本文将介绍什么是静态重定位技术,以及如何使用静态重定位技术来提高系统性能,并附
如何利用静态重定位技术提高系统性能
2024-01-18

【数据库优化黑科技】利用 AI 技术优化数据库,性能提升10倍不是梦!

利用人工智能技术优化数据库,可以大幅提升数据库性能,甚至可以达到性能提升10倍的效果。本文将介绍如何利用AI技术优化数据库,并提供代码示例。
【数据库优化黑科技】利用 AI 技术优化数据库,性能提升10倍不是梦!
2024-02-10

PHP接口性能优化之连接池技术应用(PHP接口中连接池技术的使用与性能提升)

PHP接口连接池技术通过预先建立持久连接,避免频繁创建和销毁连接,从而优化PHP接口性能。优点包括减少连接开销、提高并发性能、降低延迟和节省资源。实现方法包括扩展模块(如PDO)和第三方库(如php-db)。合理配置和优化连接池,如池大小、连接超时和并发控制,至关重要。使用连接池可显著提升PHP接口性能,例如减少连接开销90%、提升并发性能1000%和降低延迟80%。这使其成为优化PHP接口性能的有效技术。
PHP接口性能优化之连接池技术应用(PHP接口中连接池技术的使用与性能提升)
2024-04-02

提升网站性能,从技术到用户体验的全面优化

随着互联网的迅猛发展,越来越多的企业和个人将重心转向了网站建设和运营。然而,随之而来的问题是,网站的性能优化成为了一个非常重要的挑战。网站性能优化不仅能够提高用户的访问体验,还能够提升搜索引擎排名和增加网站流量。本文将从技术和用户体验两个方
提升网站性能,从技术到用户体验的全面优化
2024-02-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录