LWN:关于更快进行网络传输的两个议题!

【信息科学与工程学】【产品体系】第三十三篇 DPU/smartinic芯片中的学科知识03 需求实现DMA 与流边界检测优化​分级超时状态机(短/中/长)+ 积压计数 + 批量触发DMA 控制器优化​描述符预取(深度 4)+ 中断合并(阈值 8)Fence 语义正确性验证​RTL 断言 + C 语言序列号检测 + 性能对比 + 硬件计数器所有代码均为可综合 Verilog,已在仿真器中通过基本功能测试。在 FPGA 原型上运行上述 RTL,配合 ChipScope 观察 fence 时序在 BlueField-3 上运行 DOCA DPA 测试程序,对比加/不加 fence 的结果。 阅读详情

关注了就能看到更多这么棒的文章哦~

Two sessions on faster networking

By Daroc Alden
June 4, 2025
LSFMM+BPF
Gemini flash translation
https://lwn.net/Articles/1022648/

Cong Wang 和 Daniel Borkmann 分别在 2025 年 Linux 存储、文件系统、内存管理和 BPF 峰会 (Linux Storage, Filesystem, Memory Management, and BPF Summit) 上主持了一场会议,讨论了他们各自加速 Linux 内核 (Linux kernel) 中网络功能的计划。两次会议都探讨了如何在网络协议栈 (networking stack) 中移除不必要的操作,但侧重点不同。Wang 讨论了如何利用 BPF (Berkeley Packet Filter) 加速 socket 操作,而 Borkmann 则讲述了如何消除虚拟机 (VM) 网络操作的开销。

sk_msg

Wang 首先解释说,struct sk_msg 是一种在 socket 层消息传递中内部使用的数据结构。他将其与更广泛使用的 struct sk_buff 进行了比较,并表示 sk_msg 要简单得多 。BPF 程序可以通过 socket 映射 (socket maps) 访问 sk_msg 结构体,它们主要用于让 BPF 程序在不同 socket 之间重定向消息。

这种重定向有一些使用场景。例如,在同一台机器上的客户端和服务器之间发送消息时,绕过 TCP 协议栈 (TCP stack)。Wang 解释说,这可以避免不必要的开销,但前提是使用 BPF 转发消息确实更快。在 Borkmann 提问后,Wang 澄清说这个使用场景是推测性的,目前并未在生产环境中使用。

取决于涉及的 socket 类型,消息重定向的具体方式也会有所不同。例如,当从发送 socket 重定向到接收 socket 时,BPF 程序完全不需要对数据进行任何修改,从而实现快速传输。另一方面,当从接收 socket 重定向到发送 socket 时,BPF 程序需要执行一系列转换,将接收到的数据转换为正确的格式。

多年来,TCP 协议栈已经进行了大量优化。例如,它可以高效地批量处理短消息。因此,对于短消息而言,BPF 重定向实际上比遍历整个 TCP 协议栈更慢。Zijian Zhang 的工作 部分纠正了这一点,他在 socket 中添加了一个缓冲区来批量处理短消息。然而,Wang 认为可以通过复用 TCP 协议栈中 Nagle 算法 (Nagle's algorithm) 的代码来进一步提升性能。

随后,Wang 提出了一些不同的、更具推测性的提升性能的想法。这些想法包括引入新的、更高效的接口供 BPF 程序操作 socket 消息,尽可能移除锁,以及简化接收 socket 到发送 socket 情况所需的转换。

会议中讨论了 sk_msg 结构体在整个内核中的使用位置以及这些区域将如何受到影响。Wang 在会议结束时指出,TCP socket 被广泛使用;越来越多的容器化工作负载使用 TCP socket 在同一物理机内部通信。任何旨在加速本地 socket 的工作都无疑会普遍有用。

Netkit 用于虚拟机

虚拟机 (VM) 提供了与物理硬件的全面隔离,代价是额外的开销。在可能的情况下,最好能减少这种开销。Borkmann 讲述了他为消除 VM 网络开销所做的工作,这是让 VM 工作负载和容器 (container) 工作负载在 Kubernetes 中使用相同底层工具的大计划的一部分。

如今,在 Kubernetes 下运行的 VM 位于一个包含 QEMU 的容器中。这种奇怪的现状是因为 Kubernetes 最初是一个容器管理引擎,因此将虚拟机管理器放在容器内可以让 Kubernetes 复用许多现有工具。Borkmann 分享了这张幻灯片来解释这会对网络协议栈造成什么影响:

简而言之,发往虚拟机中运行的应用的网络数据包必须由物理硬件接收,由主机内核处理,转发到虚拟容器桥接网络 (virtual container bridge network),然后交给 QEMU 虚拟网络设备的主机端,传入虚拟机,最后由客户机内核处理。

Borkmann 说,这带来了大量不必要的工作。大约一年前,QEMU 获得了一个基于 AF_XDP socket (AF_XDP sockets) 的新网络后端;他感觉怀疑 AF_XDP socket 可以用来绕过上述步骤。这项改动并不简单,因为快速数据路径 (XDP - express data path) 在网络命名空间 (network namespaces) 内不受支持 (容器中使用了网络命名空间)。Borkmann 的想法是在物理网卡上预留一组队列,将这些队列绑定到 Cilium 的 Netkit (一个旨在帮助减少网络命名空间开销的内核驱动程序),并将这些队列专用于容器的网络命名空间。

这将使流量可以直接从物理硬件到达 QEMU 的 AF_XDP 网络后端,再到 VM 的内核。这是开销能达到的最低限度,因为宿主机系统仍然需要控制实际的硬件。这种设计也将允许在宿主机上运行的 BPF 程序正常地拦截和修改流量。

就在峰会前,Borkmann 完成了一个概念验证 (proof-of-concept) 实现,并且运行成功。他说,代码本身并不太复杂,但仍有一些 API 他希望稍微调整一下,以简化整体构思。特别是,与硬件网络设备相比,XDP API 相当有限;Borkmann 希望扩展该 API,以支持各种类型的硬件卸载 (hardware offload)。

尽管这场会议并非 BPF 分会的最后一场,但它标志着 LWN 今年对 BPF 相关报道的结束。BPF 分会的最后一场会议已在与 Mahé Tardy 早期会议相同的文章中 报道 过。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

2027年新疆职业院校技能大赛“网络系统管理”A模块网络构建真题 2027年新疆职业院校技能大赛“网络系统管理”A模块——网络构建真题,仅供学习使用。 阅读详情

相关推荐

告别深度学习!用5个麦克风搞定多说话人分离:ReTM算法保姆级教程

本文详细介绍了ReTM算法,这是一种无需深度学习、仅需5个麦克风即可实现多说话人语音分离的创新信号处理方法。它通过估计相对传递矩阵,利用空间物理信息在混响环境中分离语音,具有数据需求低、计算复杂度小、无需先验几何信息等优势,特别适合嵌入式设备和资源受限场景。

desk3的博客 156

四路 CAN 转 4G 网关

SG‑CAN‑4G‑410 为**四路隔离 CAN 转 4G 工业网关**,把 CAN2.0A/B 报文封装成 TCP/UDP 报文,通过 4G 无线网络实现 CAN 总线远程监控、远程控制。四路 CAN 相互独立;以太网仅用于本地配置,不做业务数据传输;支持移动 / 联通 / 电信 4G 网络。

S2003120416的博客 160

GD32H7实战:5步搞定YOLO轻量化模型部署到MCU(附避坑指南)

本文详细介绍了如何将YOLO轻量化模型部署到GD32H7 MCU的完整实战流程。通过五个关键步骤,涵盖环境搭建、模型训练、格式转换到工程集成,并重点分享了使用GD32AI-ModelZoo工具链进行MCU部署的避坑指南,帮助开发者在资源受限的边缘设备上实现高效目标检测。

weixin_29070861的博客 445

【计算机网络】断点续传是怎么做到的:从 Range 请求到分片上传的完整机制

断点续传在下载侧靠的是 HTTP 现成的 Range 协议,Content-Range 保证偏移对得上,If-Range 防止文件变更导致的错误拼接;上传侧没有标准,需要自己设计 init/part/complete 三段式交互,核心是让服务端记住“哪些块已经收下”,从而把失败粒度从整个文件降到单个分片。 这套机制可以迁移到任何长耗时操作的设计上。判断方法很简单:先问失败粒度是多少。如果一次操作失败就得从头再来,那它迟早会在生产环境里出问题——传输、批量导入、数据迁移、长事务,都是同一个道理。把大操作切成

2503_94545876的博客 513

Python爬虫实战:逆向解析腾讯视频API,高效获取结构化视频信息

首先,我们定义期望获取的数据结构,这有助于数据验证和代码清晰度。python"""腾讯视频信息数据模型"""title: str = Field(..., description="视频标题")vid: str = Field(..., description="视频唯一ID")play_count: Optional[int] = Field(None, description="播放量")

2201_76125261的博客 2378

FLUENT Meshing Watertight Geometry工作流入门 - 4 局部加密区域

总结一下本课程中学到的内容:我们了解了如何使用模型中特定兴趣区域的BOI和FOI局部尺寸控制来加密网格。然后,了解了如何使用Box类型的局部细化区域。最后,学习了Ansys Fluent Meshing Watertight Geometry Workflow的Offset Surface类型创建局部细化区域任务。

B_etter_Man的博客 6640

汽车电子标定与测量的核心基石XCP协议

控制逻辑(算法)与标定参数(数据)。如果每次优化参数都要修改源码、重新编译并刷写Flash,整个研发周期的效率将趋近于零。标定(Calibration)技术正是为了解决这一痛点而生。它允许工程师在ECU运行过程中,动态观察内部变量(测量,Measurement),并在不中断运行的前提下实时修改控制变量(标定,Calibration)。在这一领域,XCP(Universal Measurement and Calibration Protocol,通用测量与标定协议)是公认的行业标准与核心基石。

diansandaosilaodanan的博客 374

Far planner 代码系列(14)

MatchContourWithNavGraph(3) this->EnclosePolygonsCheck(); //可能有些ctnode的is_contour_necessary属性变成了true // 这说明我的contour_graph是一个local层级的 才会从这里面 get new vertices new_convex_vertices.clear(); //! 把contour_graph_里符

博客 899

Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位

iptables 四表五链模型、firewalld zone 信任级别、云安全组与主机防火墙的关系与优先级,避坑改了防火墙把自己挡在服务器外面的翻车事故。

2502_91473995的博客 287

把浮点数这件小事讲清楚:ABAP 7.51 里 Open SQL 与 ABAP CDS 的 FLTP 新玩法与避坑指南

ABAP浮点数计算的风险与应对 摘要:ABAP项目中的浮点数(FLTP)在跨平台计算时存在误差风险,同一逻辑在不同数据库平台可能产生细微差异。ABAP 7.51新增了两项关键能力:1)Open SQL和ABAP CDS中可为AVG函数指定结果类型,避免默认返回FLTP;2)ABAP CDS提供FLTP_TO_DEC转换函数。但需注意这些转换仍可能存在平台相关差异,且FLTP_TO_DEC会截断而非四舍五入小数位。开发者在涉及金额、数量等关键业务计算时,应明确数值语义并设计容错机制。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 213

《网络安全自学教程》- 802.1x协议

802.1x协议架构,工作原理/认证流程,认证方式,MAB认证,触发认证的三种方式,EAP报文格式,EAPOL报文格式

wangyuxiang946的博客 2万+

【Linux网络】TCP 服务器并发处理多客户端:从 fork 分发到双重 fork 彻底消灭僵尸进程

拆解 TCP 服务器并发演进链:fork 分发连接、SIGCHLD 循环回收僵尸、双重 fork 交孙进程给 init 收养,并给出模型选型与线上排错对照。

2301_78967866的博客 414

Win10或Win11电脑找不到以太网网络适配器的解决方法

Win10或Win11电脑找不到以太网网络适配器的解决方法

Robot_PLC_HMI_Automation 653

SD-WAN 与传统企业组网方式有什么区别?六个维度分析技术差异与适用场景

SD-WAN 与传统组网区别,主要体现在网络管理模式、链路调度能力、可视化水平以及多站点扩展方式上。传统组网技术成熟、架构灵活,对于站点较少、业务简单、网络结构稳定的企业来说,仍然具有较高的实用价值。SD-WAN 则通过软件定义和集中化管理,为多站点网络管理、链路质量监测和业务流量调度提供了另一种技术实现方式。两者并不存在绝对的替代关系。在实际网络建设中,也可以根据不同业务和网络区域采用混合架构。

ESDWAN的博客 789

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

网口ps端--基础知识--调试(1)--deepseek

你现在卡住,是因为这每一层(硬件、驱动、lwIP 协议、IP 地址)中,只要有一层不对,网口就不通。物理层:看灯。灯亮说明线没问题,PHY 没死。MAC 驱动层:看串口打印。有没有打印出Link Speed?如果卡在自协商,说明你的 PHY 驱动还没配好。lwIP 协议层:如果底层通了,IP 也配对了,你调用udp_recv注册了回调函数,当电脑发来 UDP 包时,lwIP 会自动把数据包拆开,送到你的回调函数里。你之前一直在改,就是一直在死磕第 1 层和第 2 层。

AlibabaApple的博客 95

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Windows syslog日志服务器搭建与模拟器对接

二 HCL 华三模拟器连接HOST直接让路由器接口UP。1.下载visualsyslog 日志服务器软件。4.7 日志服务器可以看到年份为2026年。2.2 华三路由器配置并执行日志服务器。2.4 华三路由器可以与日志服务器互通。3.2 日志服务器可以实时查看日志。3.4 日志服务器可以实时看到日志。4.6 路由器配置日志显示年份。五 日志服务器查看日志存放位置。4.5 日志服务器查看到日志。2.3 华三路由器接口UP。4.3 日志服务器清掉日志。路由器本地日志显示年份成功。4.在桌面生成快捷方式。

huainingning的博客 246

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

HTTP、SSE、WebSocket、Socket.IO:实时通信方案深度对比与选型指南

HTTP 是基础,是整个 Web 的底座;SSE 是单向推送的轻量最优解;WebSocket 是高性能双向实时通信的底层标准;Socket.IO 是一套降低开发门槛、抹平环境差异的上层框架。技术选型永远不是“哪个技术更酷”,而是匹配业务的实时性、交互方向、网络环境、团队维护成本。简单需求优先轻方案,复杂双向实时再上 WebSocket;如果追求快速落地、兼容各种奇葩网络,Socket.IO 是很好的选择。

changshuaihua001的博客 335

Linux网络编程:TCP多线程远程命令执行与线程池改造

前面已经实现了 TCP Echo Server,并且通过多进程和多线程解决了多个客户端连接的问题。不过目前服务器的业务还是比较简单,客户端发送什么,服务器就返回什么。这次在原来的多线程服务器上继续做一些改动,实现一个简单的远程命令执行功能。这次主要学习了两个内容。第一个是多线程远程命令执行。通过 Command 类封装命令的接收、检查、执行和结果返回,并使用 set 对允许执行的命令进行限制。第二个是线程池版本的 TCP Echo Server。通过和std::bind。

2501_93388101的博客 354

计算机毕业论文系统测试怎么写:从测试用例设计到对比实验,让“工作量“看得见

本文系统阐述计算机毕业论文中“系统测试”章节的撰写方法,涵盖功能测试用例设计(等价类、边界值、判定表)、性能测试压测方案与关键指标(平均响应时间、P99、吞吐量)、对比实验设计原则及评价指标选取。强调通过量化数据、阶梯加压曲线、瓶颈定位与多维度对比,真实展现研究工作量与技术深度,提供可直接套用的测试用例表与实验方案模板,助力论文脱颖而出。

wuwangzhiduoshao的博客 299

物联网通信协议全景梳理

本文系统梳理物联网通信协议体系,按分层架构(接入、网络、传输、应用层)解析主流协议特性与选型逻辑。核心观点:接入层决定连接方式,应用层决定数据交互模式,两者可灵活组合。关键建议:资源受限用CoAP+BLE/Zigbee;大规模云接入选MQTT+WiFi/NB-IoT;长距离低功耗用LoRa/NB-IoT;智能家居优先Matter over Thread/WiFi;实时交互用WebSocket;安全通信优选DTLS/QUIC。最终实现“按需选型,协同高效”的物联网通信设计。

weixin_67448099的博客 453

python如何编通讯程序

通讯程序需要处理IP地址和端口。IP地址用于标识网络上的设备,端口用于标识设备上的服务。编写通讯程序时,需要选择合适的端口号并确保它不与其他服务冲突。此外

2601_96798011的博客 175

五个压测工具简介

本文对比五款主流性能测试工具:JMeter(开源全能,适合接口与复杂业务压测)、sysbench(数据库基准调优标杆,轻量高效)、ab(极简HTTP压测,快速摸底)、LoadRunner(商业企业级,支持复杂场景与特殊协议)、mysqlslap(MySQL内置,快速验证并发能力)。各具优势,适用于不同场景,开发者可根据需求选择。

呆萌很的博客 178

reqrio协议指纹库ja3 ja4

HTTP 层的行为参数看起来琐碎,但每一条都是可比对的信号:Header 的名称大小写与排列顺序、Cookie 的存储与携带策略、重定向的跟随层数与跨域处理、压缩算法的支持范围(gzip、Deflate、Brotli、Zstd)、请求体的编码方式(表单、JSON、文本、二进制、Base64、十六进制、URL 编码)。更进一步的是流式模型——把 HTTP/1.1、HTTP/2、HTTP/3 的处理统一成同一种“流”,可以同时发出多个请求,再按需接收响应,这对需要精细控制时序的采集场景很有价值。

2603_96485347的博客 267

秋招学习笔记 day109

在三次握手阶段,首先初始状态下,是 close 的服务端进入 listen 状态,然后客户端是发送一个序号以及 SYN 标志,然后进入 SYN_SENT 阶段,服务端收到之后发送一个 ACK,它 ACK 是客户端发的序号加一,然后发送 ACK 标志,以及自己的 SYN 标志。SYN 进入 SYN_RECEIVE 阶段之后,客户端收到服务端的确认之后,返回最后的确认和 SYN,这时候可以写数据,这时候客户端进入 ESTABLISHED 的状态,然后服务端收到确认后也是一样的。但是事实上,不知道就是不知道。

m0_57222081的博客 183

财务共享中心与每刻档案:从集中处理到资料统一利用

采购付款的链路通常更长,可能涉及合同、订单、验收、发票、付款申请、银行回单和会计凭证。因此,档案建设不能只把文件导出到同一个目录,还应根据可靠的业务编号和会计信息,保留申请、审批、原始资料、付款和凭证之间的联系。企业可以先选择业务量大、资料来源较稳定的费用报销或采购付款场景,梳理单据、凭证和原始资料的对应关系,再逐步覆盖更多法人、业务类型和资料来源。对形成时间不同的资料,应规划接收、补充和关联方式。费用报销中,员工提交申请和电子发票,业务负责人审批,共享中心审核并进行会计处理,付款后还可能产生银行资料。

yuyijun222的博客 137

HART转Modbus TCP网关支持仪表故障诊断信息同步上传

某精细化工企业通过部署远创智控YC-HART-TCP-1协议转换网关,破解HART阀门定位器与TCP上位机协议异构难题,实现阀门开度、状态数据实时上传与远程精准调控。项目打通控阀数据孤岛,消除人工调校误差,提升工艺稳定性与产品良品率;依托智能预警与数据归档,实现故障提前发现与工艺持续优化,显著提高运维效率与数字化水平,为精细化工智能化升级提供高性价比解决方案。

2401_83539075的博客 176
上一篇: LWN:OSPM 2025 报道——第三天!
下一篇: LWN:6.16 合并窗口前半部分!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值