LWN:可由BPF编程的网络设备!

Linux6.7内核引入了BPF可编程网络设备netkit,通过简化数据包处理流程,减少协议栈开销,提高性能,特别适用于容器和虚拟机环境中的网络密集型应用。

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

The BPF-programmable network device

By Jonathan Corbet
November 6, 2023
ChatGPT translation
https://lwn.net/Articles/949960/

在 Linux 上,容器和虚拟机是通过虚拟网络设备与世界通信。这样就使得其可以利用 Linux 网络协议栈的全部功能了,但也引入了 network stack 的全部开销。通常,这些网络流量的路由可以通过相对简单的逻辑处理;BPF 可编程网络设备在 6.7 内核发布中合并,使得至少在某些情况下可以避免网络处理出现太大的开销。

在当前系统中,当客户端(容器或虚拟机)通过网络发送数据时,该数据首先进入该客户(guest)端的网络协议栈,在这里会将其生成为数据包,并通过虚拟接口发送出去。在主机(host)端,该数据包再次在网络协议栈内接收和处理。如果数据包的目的地是主机外的网络节点,则该数据包将被路由到(真实的)网络接口进行重传(retransmission)。客户端的数据就进入真实网络世界了,但这是在经过两个网络协议栈的处理之后才实现的。

新的网络设备名为"netkit",希望能简化部分开销。从某种意义上说,它是一种典型的虚拟设备,即从一端传输的数据包在被另一端接收之前仅经过主机系统的内存。这里的主要差异是在传输的工作方式上。每个网络接口驱动程序都提供了一个包含大量函数指针的net_device_ops 结构 - 在 6.6 内核中多达 90 个。其中的一个函数是 ndo_start_xmit():

netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb, struct net_device *dev);

此函数的作用就是通过指定的设备 dev 来发起对 skb 中的数据包进行传输。通常在虚拟设备中,此函数将立即通过调用类似netif_rx() 的函数将数据包“接收”到对端的网络协议栈中。然而,netkit 设备的行为略有不同。

当配置好了这个虚拟接口时,就可以将一个或多个 BPF 程序加载到接口的两侧。由于 netkit BPF 程序可以影响主机端的流量的路由动作,因此只允许主机为主机或客户端加载这些程序。由 netkit 提供的 ndo_start_xmit() 回调函数不会仅仅将数据包传递回网络协议栈,而是按顺序调用每个附加上来的 BPF 程序,将数据包传递给每一个程序。BPF 程序能够修改数据包(例如更改目标设备),并且期望返回值可以指示接下来应该执行什么操作:

  • NETKIT_NEXT: 继续处理这个系列中的下一个 BPF 程序(如果有的话)。如果没有更多程序要调用,则此返回将被视为 NETKIT_PASS 。

  • NETKIT_PASS: 立即将数据包传递到接收方的网络协议栈,而不调用任何其他 BPF 程序。

  • NETKIT_DROP: 立即丢弃数据包。

  • NETKIT_REDIRECT: 立即将数据包重定向到新的网络设备,将其放到队列中从而可以进行传输,而无需经过主机的网络协议栈。

每个接口可以配置默认策略( NETKIT_PASS 或 NETKIT_DROP ),如果没有加载 BPF 程序进行决策,则将其应用。大多数情况下,正确的策略可能是丢弃数据包,确保在完全配置接口来处理数据包之前不会有网络数据泄漏出去。

如果尽早做出丢弃数据包的决定,就可以获得性能提升。通常会有大量没有价值的网络数据流入,因此花在上面的时间越少越好。但正如更改日志所述,最大的性能提升可能来自于在不重新进入网络协议栈的情况下就对数据包数据包进行了重定向(redirect):

例如,如果 BPF 程序确定必须将 skb 发送出节点,则可以直接对物理设备进行重定向,而无需经过每个 CPU 的积压队列。这有助于将此类流量的处理从 softirq 转移到进程上下文,从而改善调度决策/性能。

根据 2023 年 Linux 存储、文件系统、内存管理和 BPF 峰会演讲幻灯片显示,通过 netkit 设备(当时称为"meta")运行的客户端能够获得与直接在主机上运行一样高的 TCP 传输速率。换句话说,在客户端内部运行的性能开销已经完全被消除了。

鉴于对一些用户的潜在性能提升,这个由 Daniel Borkmann 提出但也包含 Nikolay Aleksandrov 的补丁系列被迅速合并。它首次发布到 BPF 邮件列表上是在 9 月 26 日,然后在那里经过四次修订,一个月后应用于 6.7 合并窗口。这个功能并非适用于所有用户,但对于那些在容器或虚拟机中部署网络密集型应用程序的用户来说,这可能确实是个很有吸引力的功能。

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

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

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

format,png

内容概要:本文系统介绍了Ćuk转换器的工作原理及其在Simulink环境下的建模与仿真实现方法,重点阐述了该转换器如何实现输入直流电压到极性相反的输出直流电压的能量转换。内容涵盖电路拓扑结构、工作模式分析(连续导通模式与断续导通模式)、关键元器件(如电感、电容、开关管和二极管)的参数设计原则,以及仿真模型的构建步骤与动态响应特性分析,深入揭示其能量传递机制和电压反转特性。此外,文档还整合了多个科研方向的Matlab/Simulink代码实现案例,涉及智能优化算法、机器学习、电力系统优化、信号处理、路径规划、通信技术等多个领域,充分展示了仿真工具在现代科研中的广泛应用价值和技术交叉潜力。; 适合人群:电气工程、自动化、控制科学与工程、电力电子及相关专业的本科生、研究生、科研人员及工程技术人员,尤其适合具备电路理论基础和一定Matlab/Simulink操作经验的学习者; 使用场景及目标:①用于深入理解Ćuk转换器的拓扑结构与工作机理,掌握其建模与仿真方法;②作为电力电子课程教学或科研项目的实践参考;③结合文中丰富的跨学科科研案例,拓展研究视野,辅助论文复现与创新课题设计; 阅读建议:此资源以仿真实践为核心导向,建议读者在学习过程中同步搭建并调试Simulink模型,细致观察系统参数变化对输出性能的影响,并积极借鉴其他科研方向的技术路线,推动多领域融合创新研究。
内容概要:本文提出了一种基于粒子群优化算法(PSO)的求解方法,用于解决包含风能、光伏、柴油发电机及储能系统的综合能源系统容量优化配置问题,并充分引入需求响应机制以提升系统运行的灵活性与经济性。通过构建兼顾经济性、可靠性和可再生能源利用率的多目标优化模型,利用Matlab进行仿真求解,获得各类电源与储能设备的最优容量组合方案。该方法能够有效降低系统全生命周期成本,提高能源自给率与资源利用效率,适用于微电网、离网系统及混合供电系统的规划与设计。文中提供的Matlab代码实现了完整的建模、优化与结果分析流程,具有较强的可复现性与工程参考价值。; 适合人群:从事新能源系统规划、电力系统优化、微电网设计等领域的科研人员、工程技术人员及电气工程、能源动力类专业的研究生;需具备一定的Matlab编程能力、优化理论基础及对分布式能源系统的基本认知。; 使用场景及目标:①解决风光柴储多能互补系统的容量配置优化问题;②研究需求响应策略对系统运行经济性与稳定性的影响;③为实际微电网项目提供技术方案比选与决策支持;④作为智能优化算法在能源系统中应用的教学案例。; 阅读建议:建议结合Matlab代码深入理解目标函数设计、约束条件建模及PSO算法参数设置等关键环节,重点关注需求响应模型的数学表达与求解过程,可进一步拓展至其他智能算法(如GA、GWO、HLOA等)的对比分析与算法改进研究。
标题大学健身场所管理系统的设计与开发研究AI更换标题第1章引言介绍大学健身场所管理系统的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义分析大学健身场所管理现状及开发管理系统的必要性。1.2国内外研究现状综述国内外健身场所管理系统的研究进展及存在的问题。1.3研究方法以及创新点概述本文采用的系统设计方法及主要创新点。第2章相关理论总结健身场所管理系统设计的相关理论,为系统开发提供理论基础。2.1系统设计理论介绍系统设计的基本原则、方法和流程。2.2数据库管理理论阐述数据库设计、管理和优化的基本理论。2.3软件开发理论介绍软件开发模型、生命周期及项目管理理论。第3章大学健身场所管理系统需求分析详细分析大学健身场所管理系统的功能需求和非功能需求。3.1功能需求分析列举系统应具备的各项功能,如用户管理、课程预约等。3.2非功能需求分析分析系统的性能、安全性、易用性等非功能需求。3.3用户需求调研介绍通过问卷调查、访谈等方式收集的用户需求。第4章大学健身场所管理系统设计详细介绍大学健身场所管理系统的设计过程,包括架构、数据库和界面设计。4.1系统架构设计给出系统的整体架构,包括前端、后端和数据库的连接方式。4.2数据库设计设计系统的数据库结构,包括表结构、字段和关系等。4.3界面设计设计系统的用户界面,包括布局、色彩和交互方式等。第5章大学健身场所管理系统实现与测试阐述系统的实现过程和测试方法,确保系统满足设计要求。5.1系统实现技术介绍系统开发所采用的技术栈和工具。5.2系统实现过程详细描述系统的编码、调试和集成过程。5.3系统测试方法介绍系统的测试方法,包括单元测试、集成测试和用户测试等。第6章结论与展望总结大学健身场所管理系统的设计与开发成果,并提出未来研究方向。6.1研究结论概括系统的主要功能、性能和创新点。6.2展望指出系统存在的不足及未来改进的方向
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值