把报文再扔回内核,DPDK这样做

news2025/8/9 2:24:57

在DPDK中经常看到一个词,exception path,它是什么?

在DPDK使用环境中,物理网卡收到的报文不再进入内核协议栈,而是直接到达DPDK应用。但是在有些场景中,用户希望把报文(如控制报文)再次发送至内核协议栈进行处理。报文从用户空间再次进入内核的过程在DPDK中称为exception path。

DPDK支持几种方式让用户空间的报文重新进入内核协议栈:

1.TAP/TUN设备

可以使用内核提供的TAP/TUN设备,这种设备的使用需要使用系统调用,并涉及到copy_to_user()和copy_from_user()的开销。

使用virtual TAP设备实现exception path的流向图:

2.DPDK Kernel NIC Interface(KNI)

DPDK提供了KNI接口用于提高用户态和内核态之间报文的处理效率。KNI是通过内核模块构造了一个虚拟网络接口,并且通过FIFO和用户态的DPDK应用交换报文。

正如DPDK官方所讲,使用DPDK KNI的好处是:

  • 比现有的Linux TUN / TAP(通过消除系统调用和copy_to_user()/ copy_from_user()操作)。
  • 允许使用标准Linux网络工具(如ethtool,ifconfig和tcpdump)管理DPDK端口。
  • 允许与内核网络协议栈的交互。

3.virtio-user+vhost-net

DPDK提供了virtio-user虚拟设备,使用它与现有的vhost-kernel方案配合来实现exception path。需要内核中vhost.ko和vhost-net.ko两个模块。

启动virtio-user,会操作/dev/vhost-net创建一个内核态的虚拟设备tap。从DPDK收到的包进入到virtio-user,通过vhost-kthread进入到tap设备,tap设备支持内核协议栈。从而实现了用户态和内核态的数据交互。

本文图片全部来自DPDK官方网站www.dpdk.org

(免费订阅,永久学习)学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂

更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加qun免费
领取,关注我持续更新哦! !   

原文链接:https://cloud.tencent.com/developer/article/1087122?from=article.detail.1418603

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

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

相关文章

iTOP3A5000_7A2000开发板龙芯全国产处理器LoongArch架构核心主板

主要参数 处理器: 龙芯3A5000 主频: 2.3GHz-2.5GHz 桥片: 7A2000 内存: 8GB、16GB DDR4带ECC纠错(配置可选) 系统: Loongnix 典型功耗: 35W 核心板: 16层 底板: 4层 核心板参数 尺寸: 125*95mm CPU: 龙芯四核3A5000处理器 主频: 2.3GHz-2.5GHz 桥片…

101个CV模型集体开源,魔搭社区视觉AI深度解析

作者:谢宣松 达摩院开放视觉智能团队 11月3日,在2022云栖大会上,阿里达摩院联手 CCF 开源发展委员会共同推出了 AI 模型社区“魔搭”ModelScope,旨在降低 AI 的应用门槛。 AI 模型较为复杂,尤其是要应用于行业场景&…

前后端分离项目,vue+uni-app+php+mysql在线考试系统设计与实现(H5移动项目)

功能介绍 用户首次登陆系统需要注册一个用户或直接使用微信作为账号,用户在登录平台后,可以进行平台的操作。主要模块包括以下几点: 注册登录功能:注册普通账号登录;也可以直接使用微信登录;登录后可以修改…

python学习——numpy库的使用[超详细的学习笔记]

目录 前言 1 导入及查看版本信息 2 数组的创建 2.1 基础数据类型转换为数组 2.2 数组内置方法 2.2.1 np.arange() 线性序列数组 2.2.2 np.linspace() 等差数组 2.2.3 np.logspace() 等比数组 2.2.4 np.zeros() 全零的数组 2.2.5 np.ons() 全一的数组 float型 2.2.6 np.zeros_…

浅谈数商云供应链协同系统物流管理功能在医疗器械行业的作用

近年来,我国医疗器械行业发展快速,但医疗器械物流作为医疗器械供应链中承上启下的重要环节,目前仍处于相对传统和粗放的发展阶段。随着国家经济的发展及人民对医疗健康需求的不断增加,医疗器械供应链与物流的升级已是大势所趋。 …

程序员在平台兼职接单,月入30K,方法我全写出来了!(附接单渠道和注意事项)

本月兼职的收入又到账了,程序员副业实在是太香了! 虽然这点小钱还远远达不到财富自由,也比不上那些真正的大佬,但在这个行业寒冬里,能有一笔相对稳定的收入,作为全职之外的补充,还是让人倍感踏实…

海棉结构sponge construction

海棉结构,或称海绵哈希,是当前密码学中一种重要构造结构,如当前sha-3采用的即是海绵结构。 海绵结构是一类具有有限内部状态的算法,可以将任意有限长的输入消息变成任意长度输出的消息摘要,其结构如下,其中…

docker-network网络

docker network网桥 作用:实现主机和容器之间可以通过网桥相互通信。 定义 正常不指定网络的情况下。所有的应用都跑在一个网桥上,影响其他应用的交互、网络传输。一般都是一个应用使用一个网桥,容器之间互通,则进行容器间通信的配置&…

粉丝提问:26想转行做Python开发,是不是已经晚了?

前言 26岁基本上是一个硕士研究生刚毕业的年纪,相当于本科毕业工作了2年,总体来说时间耽误的并不算太多,想转行做Python开发,不算太晚! (文末送读者福利) 1、转行前先想清楚这5点&#xff01…

【vue.js】使用高德地图选择省市区后,再点击确认当前选择的位置

成品展示 前期准备 先去高德开放平台申请一个web端的key。 2022年后申请的key,必须和它生成的secret一起使用。 可使用服务选择web端 在vue项目中,可以通过直接引入js文件,也可以安装vue-amap等插件使用。 使用 安装官方的js API 插件 …

数据治理系列:数仓建模之数仓主题与主题域

背景: 数据仓库之父 Bill Inmon 将数据仓库描述为一个面向主题的、集成的、稳定的、反应历史变化的数据集合,用于支持管理者的决策过程。 从上面的引言里面,我们其实可以知道主题在数仓建设里面绝对是很重要的一环,这的确是的。…

警惕,11月这6本期刊已被剔除SCI/SSCI

2022年11月22日晚,科睿唯安更新了Web of Science核心期刊目录,SCIE/SSCI期刊数据库剔除(Dropped)或停止检索(Ceased)了6本期刊,被剔除的6本期刊中,有4本期刊是信息更改,其中1本期刊更改了名称和ISSN号,2本期…

S4 image save:save_image_lzo函数分析

save_image_lzo函数分析 save_image_lzo在S4中运行,运于保存image数据,函数的调用逻辑如下: hibernate()->swsusp_write()->save_image_lzo()1. 基本流程 该函数实现了S4中内核image压缩的功能,大致流程如下图所示&#…

35+程序员该怎么办?有哪些破局方法?

在互联网行业一直有一种说法,如果35岁还没到管理岗,基本就是被裁的命运了。作为互联网行业的主力军,程序员的职业发展,也被人总结成,三年升高工、七年做架构、十年送外卖。虽然是个段子,也透露了大家对于年…

Python列表类型详解

今天继续给大家介绍Python相关知识,本文主要内容是Python列表类型 一、列表类型定义与创建 在Python中,列表类型是序列类型的一种,也是一种非常重要、非常常用的数据类型。列表使用方括号[]或list()函数创建,列表中的元素使用逗…

如何转变固定资产管理方式,让企业降本增效?

作为企业资产的重要组成部分,固定资产管理直接影响到企业的运营和核心的支出。固定资产的科学管理是企业管理者很关心问题。传统的纸质表格固定资产管理方式,通常是企业在成立之初采取的方式。因为成立之初企业需要节省成本,而且资产数量和种…

Android入门第33天-Android里的弹出式对话框

简介 Android Studio里在4.0前有一种ProgressDialog,这个已经淘汰了。我们完全可以使用ProgressBar来取代。但是还有一种Dialog叫PopWindow,它是一种“可阻塞式Dialog”。即弹出后除非你给它一个“动作”否则就一直显示在那。 今天我们就来看看这种Dia…

python面向对象(下)

python面向对象下封装封装的方法获取私有属性继承单一继承语法格式同名的情况私有属性的调用方法多重继承语法格式小例子同名的情况多态持续更新中~~~~~~~~~封装 封装是面向对象的核心思想。它是指将对象的属性和行为封装起来,其载体就是类,类通常对客户…

linux搭建git服务器,windows客户端配置git

Linux服务器配置之Git服务器搭建步骤: 一、配置环境 1、服务器:CentOS 8.2(64位) Git (version 2.27.0) 2、客户端:Windows 10 (64位) Git(version 2.38.…

基于深度学习的AI绘画为何突然一下子火了?

CLIP |Midjourney | dreamstudio AIGC | Stable Diffusion | Imagen 随着Disco、Midjourney、dreamstudio 、AIGC、Stable Diffusion、Imagen、深度学习、高性能计算、数据分析、数据挖掘等技术的快速发展,AI绘画技术得到迅速发展。 即使今年年初的AI绘…