尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
DPDK数据面收包过程
分阶段明确两端角色1、收包 burst 阶段硬件 DMA 环生产者 NIC 网卡 DMA 硬件消费者rx_threadCPU2、rte_ring 传递阶段软件无锁环生产者rx_threadCPU消费者worker 线程CPU以下代码是第 1 阶段。/* 轮询网卡接收报文mbuf 送入无锁 rx_ring 完全不解析控制命令只处理业务数据帧 1、网口收到报文 - NIC DMA 硬件把报文写入 mbuf 物理内存更新硬件 RX 描述符 2、rte_eth_rx_burst() CPU 线程去 poll 硬件desc ring拿到已填好的 mbuf 3、软件做 vlan 过滤丢弃不匹配的报文 4、把合法的 mbuf 指针 push进 rte_ring软件无锁队列只存指针 5、worker 线程从 rte_ring 取出 mbuf 指针处理报文 6、worker 线程处理完调用 rte_pkt_mbuf_free 归还 mbuf 到 mempool */staticintdata_plane_rx_thread(void*arg){RTE_SET_USED(arg);printf([DataPlane] RX thread start\n);structrte_mbuf*bufs[32];while(1){// 从网卡硬件Rx队列批量收包uint16_tnb_rxrte_eth_rx_burst(g_port_id,0,bufs,32);if(nb_rx0){for(inti0;inb_rx;i){structrte_mbuf*mbufs[i];uint16_tvlanrte_vlan_get_vlan(m);if(vlan!g_dev_cfg.target_vlan){rte_pktmbuf_free(m);continue;}// 推入无锁ring交给worker处理rte_ring_enqueue(rx_ring,m);}}rte_pause();}return0;}DPDK 大页内存/* 1、struct rte_mbuf 报文描述头对象这个结构体本身的地址是用户态虚拟地址 2、mbuf 结构体 报文 buffer(payload) 是连续存在一个 mempool 对象里面都在大页内存 3、mempool 大页内存同时可供 DMA 硬件 用户进程 CPU 访问 */structrte_mbuf{void*buf_addr;// 虚拟地址VACPU访问报文数据用rte_iova_tbuf_iova;// IOVA物理地址DMA硬件使用// ...}/* 1、m 这个指针的值就是 struct rte_mbuf 实例的用户态虚拟地址 2、CPU通过这个虚拟地址访问 mbuf 里各个成员buf_addr、buf_iova、data_off 3、struct rte_mbuf元数据头只有 CPU 访问硬件不碰地址是用户虚拟地址。 4、payload 报文缓冲区CPU (VA)、网卡 DMA (IOVA) 两边都访问这块才是 DMA‑coherent 内存。 5、默认情况下mbuf 结构体和 payload 缓冲区在 mempool 里面物理连续的一大块大页 6、硬件只往 payload 部分 DMA 写数据 7、mbuf 结构体那一段硬件根本不去碰。 */structrte_mbuf*mrte_pkt_mbuf_alloc(pool)【rte_mempool】 ├─大页整块内存 │ ├─mbuf#0structrte_mbuf{buf_addr,buf_iova,...}紧随其后的报文buffer │ ├─mbuf#1structrte_mbuf{buf_addr,buf_iova,...}紧随其后的报文buffer │ └─mbuf#2structrte_mbuf{buf_addr,buf_iova,...}紧随其后的报文bufferRX 描述符环是网卡硬件自己维护的一块内存// 网卡硬件RX Descriptorstructrx_desc_hw{rte_iova_tbuf_iova;// DMA写入的IO物理地址CPU填入uint64_tstatus;// 硬件写收包完成、包长度、错误标记};整个 RX ring 就是一个数组头尾循环形成环rx_desc_hw desc_ring[DESC_NUM];// 环形数组比如512个描述符head(硬件指针)↓ ┌─────┬─────┬─────┬─────┬─────┬─────┐ │desc0│desc1│desc2│desc3│desc4│desc5│ └─────┴─────┴─────┴─────┴─────┴─────┘ ↑tail(CPU软件指针)head网卡硬件维护指针硬件下一个要用的描述符位置硬件顺着 head 填报文、更新 status。 tailCPU 软件维护指针CPU 下一个要填充新 buffer 的位置。1 个硬件 RX 描述符对应 1 个 struct rte_mbuf*对应 bufs[] 里面的一个元素 bufs[i]。
RELATED

相关推荐

DDrawCompat 终极指南:零基础 5 步让 Windows 11 满血运行 DirectDraw 老游戏

DDrawCompat 终极指南:零基础 5 步让 Windows 11 满血运行 DirectDraw 老游戏

DDrawCompat 终极指南:零基础 5 步让 Windows 11 满血运行 DirectDraw 老游戏 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.co…

📅 2026/10/6 13:27:42
AI NPC 的性能预算:思考频率、并发和降级要分开定

AI NPC 的性能预算:思考频率、并发和降级要分开定

AI NPC 的性能预算:思考频率、并发和降级要分开定 NPC 接入模型后,不能让每个角色每帧都“思考”。决策频率、同时请求数和上下文大小应由玩法重要性决定。 把角色分层 近景关键角色可以使用较完整的决策链,远景角色降低更新频率或回到行为树…

📅 2026/9/10 0:49:17
AI辅助学术PPT制作:GPT-5.6与Codex协同工作流实践

AI辅助学术PPT制作:GPT-5.6与Codex协同工作流实践

最近在技术社区里,经常看到有人问:能不能用最新的AI模型,比如GPT-5.6和Codex,来帮我自动生成高质量的学术PPT?乍一听,这像是个“懒人”的终极幻想——输入一个想法,AI就给你一套逻辑清晰、图文并…

📅 2026/9/10 6:16:29
MORE NEWS

更多资讯

📰

源极跟随器直流与交流电流分析:从偏置到小信号模型

1. 源极跟随器到底在电路里扮演什么角色 1.1 从共源放大器到共漏放大器的思路转换 搞模拟电路的人都有一个共识:共源放大器是电压增益的主力,但它有个致命短板——输出阻抗太高,带不动负载。你辛辛苦苦设计了一个增益漂亮的共源级&#xff0…

📰

Multisim丙类功放仿真不收敛?高频设置三要素揭秘

1. 为什么丙类功放仿真总“跑偏”?——从Multisim默认设置说起 你有没有试过在Multisim里搭好一个丙类谐振功率放大器,参数全按教科书抄的:偏置电压设-0.7V,LC谐振回路算好中心频率,输入信号调成10MHz正弦波……一仿真…

📰

AXI Quad SPI IP核实战:从架构配置到Flash读写与调试避坑

1. 为什么要在FPGA里折腾AXI Quad SPI这个IP核 但凡做过FPGA嵌入式项目的人,大概率都绕不开SPI Flash这颗小芯片。无论是上电加载比特流、存储配置参数,还是跑一个轻量级文件系统,SPI Flash几乎是最经济实惠的选择。而Xilinx 7系列及之后的器…

📰

互补推挽电路六种经典用法与炸管避坑指南

1. 互补推挽到底是个什么东西1.1 从一个翻车现场说起前两年帮朋友调一个直流有刷电机的驱动板,方案很简单:MCU出PWM,经过一级三极管推挽,去驱动一颗N沟道MOS管,MOS管再带动电机。板子打回来,上电&#xff0…

📰

Awesome GPT Image 2 信息图篇:用 GPT Image 2 生成知识卡片、健身计划与高考卷的提示词大全

Awesome GPT Image 2 信息图篇:用 GPT Image 2 生成知识卡片、健身计划与高考卷的提示词大全 【免费下载链接】awesome-gpt-image A curated collection of the best GPT Image 2 and GPT Image 2.5 prompts and examples. The prompts come from top creators on X…

📰

WorkBuddy实战手册:从能用到敢交活的30个AI Agent落地技巧

1. 这不是又一个“AI工具测评”,而是一份从真实战场里抠出来的作战手册WorkBuddy这个词,过去三个月我每天至少和它打三次照面——晨会前用它自动整理会议纪要并生成待办清单,下午三点它准时把销售漏斗数据拉进看板,下班前最后一刻…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬