DPDK系列之三十五DPDK网络数据发送

一、网络数据发送

DPDK分析了不少,但DPDK主要功能是啥?网络通信。所以还得回归到本源来分析一下其对网络数据是如何发送的,也就是说,DPDK如何保证网络数据的高效发送,采用了什么相应的技术手段。
本篇分析介绍一下DPDK中整个网络数据发送的相关模块并初步进行说明,然后会在后面逐一展开分析。

二、DPDK对网络数据的处理

DPDK中对网络数据的处理主要有以下几个方面,涉及到从硬件(网卡等)到数据通信(DMA等);从基础数据包到上层分发处理队列;从IO处理到性能优化等等多个方面。
1、基础数据包的转发
也就是数据报文的转发就是最基础的网络数据的转发,它涉及到报文的输入、输出、调度、缓存等方方面面。
2、IO处理
在计算机中,目前PCIe是CPU和IO通信的重要总线。一般来说,在计算机,限制IO速度的除了IO通信本身的速度外,计算机总线的带宽也是一个重要的瓶颈。在DPDK中对其进行了淡民的优化并且使用DMA等技术尽量减少中间环节提高通信效率。
3、硬件优化
特别是网卡的优化,是重中之重。在计算软件的设计中,有一个原则,就是最小功能原则,自己只管自己的事。这从设计一般来说是最优的,但在性能角度未必。DPDK就是抓住了这一点,把网卡等硬件整体来看,通过一系列的软件设计和硬件优化达到了一个整体的最优的效果。
4、流分类和多队列技术
网卡多队列技术是指一个网卡上的DMA队列有多个,即网卡有基于多个DMA队列分配的机制。而流分类则是指网卡可根据具体的网络数据包的性质将其分成不同的类型的技术。前者很好理解,多队列意味着数据包转发可以并行进行;而后者稍微难以理解,其实分析后就明白了。流分类和多队列技术是一个衔接匹配的流程,只有将原始数据包可以根据一定类别进行分类,才可以有针对性的对某些数据进行加速或者优化。比如实时控制数据,就可以专门分流出来引导入一个专门的队列进行数据处理。

5、软件定义网络和硬件加速和卸载
软件定义网络(SDN)是指抽象出控制平面、数据平面、管理平面三个不同的层,通过分层实现网络流量的灵活控制,使网络更加智能并提供一个应用创新的良好平台。它其实就是网络虚拟化的一种实现形式。
硬件卸载是指将某些任务或计算从计算机的CPU 转移到专用硬件组件(例如 NIC 或GPU等硬件专门芯片)的过程,以提高系统性能和效率。
软件定义网络相当抽象,大家可以简单理解为一种网络虚拟化,和硬件虚拟化有些类似,只是抽象的层次更高一些。而硬件卸载主要是不要被名字卸载误导,硬件卸载指的是对主流的混合处理单元(如CPU等)进行功能卸载,卸载的功能由于处理呢?即专门的硬件芯片也就是刚刚提到的网卡或者GPU等。
前者的意义不必多说,后者主要是降低了CPU与网卡等的来回通信浪费的时间,一种很好的优化手段。

三、总结

DPDK的设计精髓在分析的流程中,逐渐变得越来越清晰。还是那句话,重点是借鉴DPDK的设计思想和具体实现方法为我所用。拿来主义,好的,就得要拿来,不但拿来,还要消化吸收。intel能发起这个项目,也正是因为自身有这方面的需求。而国内的开发者也可以从这个角度来学习并从中有所启发,搞好自己的项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/129276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[创业之路-85]:创业公司如何办理云服务器(PaaS)

目录 一、云服务 1.1 云服务器类型 1.2 云服务案例 二、搭建云服务器的基本步骤 二、云服务的架构(架构) 2.1 层次架构 2.2 云平台统一管理功能 2.3 管理工具 一、云服务 1.1 云服务器类型 云服务(Cloud Services)是一种…

【BUG】记一次Maven install 报错 Could not find artifact ...:pom:0.0.1-SNAPSHOT

问题描述 创建一个maven多模块项目,执行install报错Could not find artifact …:pom:0.0.1-SNAPSHOT,然后点击clean也是报错。 原因分析: 从错误日志发现提示无法从远程maven仓库下载父模块,一看应该是哪里配置了强制从远程仓库…

python中split函数的用法

在 Python 中,split() 函数用于将字符串按照指定的分隔符进行划分,并返回一个分割后的字符串列表。 split() 函数的基本语法是: str.split(sepNone, maxsplit-1) 其中,sep 是可选的参数,表示分隔符,默认为 …

【POI-EXCEL-下拉框】POI导出excel下拉框数据太多导致下拉框不显示BUG修复

RT 最近在线上遇到一个很难受的BUG,我一度以为是我代码逻辑出了问题,用了Arthas定位分析之后,开始坚定了信心:大概率是POI的API有问题,比如写入数据过多。 PS:上图为正常的下拉框。但是,当下拉…

微信小程序设计之页面文件pages

一、新建一个项目 首先,下载微信小程序开发工具,具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后,注册小程序账号,具体注册方法,可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…

【LeetCode刷题-链表】--146.LRU缓存

146.LRU缓存 方法一:哈希表双向链表 使用一个哈希表和一个双向链表维护所有在缓存中的键值对 双向链表按照被使用的顺序存储了这些键值对,靠近头部的键值对是最近使用的,而靠近尾部的键值对是最久使用的哈希表即为普通的哈希映射&#xff0…

[shell,hive] 在shell脚本中将hiveSQL分离出去

将Hive SQL语句写在单独的.hql文件中, 然后在shell脚本中调用这些文件来执行Hive查询。 这样可以将SQL语句与shell脚本分离,使代码更加清晰和易于维护。 基本用法 以下是一个示例,展示如何在shell脚本中使用.hql文件执行Hive查询&#xf…

IntelliJ IDEA 安装mybaits当前运行sql日志插件在线与离线安装方法

先安装好idear 去网上找找这个安装包下载下来,注意版本要完全一致! 比如: https://www.onlinedown.net/soft/1233409.htm手动安装离线插件方法举例 提前下载好插件的安装包 可以去网上下载这个安装包 搜索离线安装包的资源,包…

Java与Redis的集成以及Redis中的项目应用

一、Java连接Redis Redis与MySQL都是数据库&#xff0c;java操作redis其实跟操作mysql的过程是一样的。 1.1 导入依赖 打开IDEA&#xff0c;进入Java项目&#xff0c;导入pom依赖&#xff0c;代码如下&#xff1a; <dependency><groupId>redis.clients</gro…

(复刷) 面试题02.07.链表相交

原题链接&#xff1a;面试题02.07.链表相交 思路&#xff1a; 求相交的起始结点&#xff0c;并不是值相交&#xff0c;而是结点相交&#xff0c;那么也就代表判断条件是指针指向的位置相等即可 A、B链表长度可能不一致&#xff0c;假设他们一定有相交的结点 那么需要做的 就是…

王坚院士:云计算与 GPT 的关系,就是电和电动机的关系

无论是行业&#xff0c;还是阿里&#xff0c;都身处巨变时。已经年过六十的王坚院士&#xff0c;重回阿里&#xff0c;重回大众视野&#xff0c;今年以来&#xff0c;在多个场合都能够看到他的身影。 而每一次他的分享&#xff0c;都值得我们细细品味。 以下为王坚院士在 202…

mysql 元数据

1.概述 数据库元数据&#xff08;DatabaseMetaData&#xff09;&#xff1a;是由Connection对象通过getMetaData方法获取而来&#xff0c;主要封装了是对 数据库本身的一些整体综合信息&#xff0c;例如数据库的产品名称&#xff0c;数据库的版本号&#xff0c;数据库的URL&am…

使用OBS Browser+访问华为云OBS存储【Windows】

背景 项目中使用华为云 S3 存储,java 代码中通过华为云 OBS 提供的esdk-obs-java 来访问文件。 但是,通过 JAVA SDK 方式不太方便运维,所以我们需要一款可视化的客户端软件。 华为云 OBS 自身也提供了一款客户端软件,名为 OBS Browser+。 OBS Browser+简介 OBS Browse…

摩托车商家做展示预约小程序的作用

摩托车与电动车是人们短距离出行的主要工具&#xff0c;而其使用寿命一般是3年左右及以上、一家可能有多个&#xff0c;市场人群庞大且复购属性强&#xff0c;所以其经营商家也非常多。 如今互联网深入&#xff0c;在品牌宣传、客户获取、信息承载、营销等方面需要车辆经营商家…

网络取证-Tomcat-简单

题干&#xff1a; 我们的 SOC 团队在公司内部网的一台 Web 服务器上检测到可疑活动。为了更深入地了解情况&#xff0c;团队捕获了网络流量进行分析。此 pcap 文件可能包含一系列恶意活动&#xff0c;这些活动已导致 Apache Tomcat Web 服务器遭到破坏。我们需要进一步调查这一…

若依笔记(四):代码生成器

已知使用MyBatisPlus代码生成器可以自动生成Entity、Mapper、Service、Controller代码&#xff0c;前提是数据库中有数据表&#xff0c;生成pojo类以及对于该数据表的增删改查命令的代码&#xff0c;若依更进一步能选择表后生成代码、预览、下载&#xff0c;同时可以生产前端代…

【equals比较方法 和 内部类】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言对象比较equals方法内部类实例内部类静态内部类总结 前言 对象比较equals方法 三种比较相等方法&#xff1a; 第一种&#xff0c;如果两侧是基本数据类型&…

使用 C# 在Word中插入图表

Word中的图表功能将数据可视化地呈现在文档中。这为展示数据和进行数据分析提供了一种方便且易于使用的工具&#xff0c;使作者能够以直观的方式传达信息。要通过C#代码来实现在Word中绘制图表&#xff0c;可以借助 Spire.Doc for .NET 控件&#xff0c;具体操作参考下文。 目录…

关于GLibC

查看使用的编译器依赖glibc库位置&#xff1a; gcc --print-file-namelibc.a gcc --print-file-namelibc.so

Qt扫盲-QFont理论总结

QFont 理论总结 一、概述二、使用三、字体匹配算法 一、概述 QFont类指定用于绘制文本的时候来描述字体的工具类。QFont可以看作是对系统上一个或多个字体的查询。 当我们创建QFont对象时&#xff0c;我们可以指定希望字体具有的各种属性。Qt将使用具有指定属性的字体&#x…