LWN:P4TC 撞墙了!

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

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

P4TC hits a brick wall

By Jonathan Corbet
June 10, 2024
Gemini-1.5-flash translation
https://lwn.net/Articles/977310/

P4,简称“Programming Protocol-independent Packet Processors”(独立于协议的包处理器编程),是一种针对网络设备的编程语言;它在防火墙和复杂的路由架构配置方面很有用。由于许多高级网络功能都是通过 Linux 系统实现的,因此支持 P4 具有很大价值。实际上,P4 的实现 在 2023 年初由 Jamal Hadi Salim 首次发布到内核的流量控制子系统中。然而,在近 18 个月后,该功能仍未合并,合并的可能性似乎越来越小。

P4TC 简介

内核的网络子系统中支持多种流量控制机制; tc-flower(流量分类器)可能是其中最常用的机制之一。Salim 提出的 P4TC 子系统符合该子系统,它增加了使用 P4 语言描述网络策略的能力。该子系统完全在软件中实现,并在内核中运行。

该软件实现是这项工作最初引起关注的首要方面之一。虽然可以在内核中进行复杂的网络处理和路由,但任何旨在跟上当前网络速度的实现都需要相当多的硬件支持。现在已经有厂商销售支持 P4 编程的网络硬件,P4TC 旨在支持这些硬件,但这种能力在补丁集中(或任何后续版本中)都不存在。Jiri Pirko 在对初始发布的回复中 询问了这个遗漏;Salim 回答 说,流量控制子系统需要一个软件实现来处理任何可以卸载到硬件的功能(从而确保该功能普遍可用),并且硬件卸载接口仍在考虑中。Daniel Borkmann 抱怨 说,没有人会使用软件实现,Salim 不同意 这种说法。

第一个帖子中另一个重要的评论来自 Stanislav Fomichev,他 建议,与其在内核中添加另一个包解析器,不如将 P4 程序编译成 BPF,然后可以在 BPF 验证器的保护下运行。Salim 接受了这个建议;P4TC 补丁的第二个版本 于 2023 年 6 月发布,其中包括对该 BPF 支持的早期实现。

越来越多的反对

P4TC 补丁集之后发布了多个版本,总体上很少受到审阅者的关注。版本 7 于 2023 年 10 月发布,移除了“RFC”标签,表明 Salim 认为它已准备好合并到主线(mainline,指主分支)中。版本 8 于 11 月发布,吸引了更多评论。John Fastabend 是第一个 提出 反对意见的人,而这种反对意见后来演变成持续的反对:补丁集添加的新 kfunc 实现的功能被认为与 BPF 映射提供的功能类似。一些 BPF 社区的成员认为这些 kfunc 至少也是不必要的重复代码,甚至可能算是对 kfunc 机制的滥用。

Fastabend 后来 提出了 一些其他的反对意见。他说,将 P4 集成到流量控制子系统中,可能会在多个方面影响性能。他认为,P4 可以直接编译成 BPF,而无需流量控制部分。他说,使用 netlink 来控制 P4TC 比将策略信息存储在 BPF 映射中更慢、更复杂。他还抱怨说,P4 的真正优势在于硬件卸载,但补丁集仍然没有支持与硬件的接口。在这些讨论中,Salim 试图解决针对这项工作的批评,有时表现出沮丧,经常坚持自己的意见。例如,使用 netlink 被 描述 为“不可协商”。

版本 10 在介绍信中添加了更多上下文,试图解释为什么做出某些决定,但 Fastabend 重申并扩展了 他对 版本 12(2 月发布)的反对意见。同样是对该版本的回复,网络维护者 Paolo Abeni 指出,虽然一些开发人员对这些补丁表示反对,但没有声音(除了 Salim)表达支持;他想知道硬件支持的缺乏是否可能是原因之一。Anjali Singhai 回答 说,英特尔和 AMD 都需要硬件卸载支持,但他们也需要一个标准的内核 API 来管理 P4 程序,以及一个内核管道来混合硬件和软件实现。“这个补丁集有助于创建一个软件管道和标准 API”。Chris Sommers 也 表达了支持,并列举了一长串理由,说明这对他的公司很有用。

版本 13(3 月下旬)获得了 Toke Høiland-Jørgensen 的 ACK(表示同意),但没有其他回复。版本 14(4 月初)反而获得了 BPF 维护者 Alexei Starovoitov 对 BPF 集成(尤其是使用 kfunc)的反对意见,从而导致他 明确的 NACK(表示不同意)。Borkmann 也添加了他的 NACK,之后 Fastabend 也 做出了类似的决定。

寻找前进的道路

Salim 坚持不懈,于 4 月中旬发布了 版本 16。Abeni 建议 删除 BPF 组件(并对系列进行重大重构)作为将这项工作移入内核的一种可能方式,这引起了 Salim 的 恼怒的回应,他认为自己不应该被要求删除 BPF 支持,因为自己是在响应现在反对者的评论后才添加的。他后来 表示:“我的观点是,这组 patch 哪怕有 NACK 也应该被合入,因为它完全位于 networking/TC 中(与 ebpf 无关)”。然而,Abeni 拒绝这么做。

5 月 21 日,Salim 回来了,他介绍了这项工作的历史,并要求“第三方调解人”介入调查情况并提出建议。他创建了 一个网页,描述了这项工作、提出的反对意见以及他对这些反对意见的回应。然而,调解人尚未确定,这种情况似乎不太可能改变。相反,像 Tom Herbert 这样的人开始 质疑 P4 的价值,网络维护者 Jakub Kicinski 表示:“该提交无论是技术上都不够强大,也不够实用,无法考虑做出推翻维护者的可疑先例”。

正如内核补丁争议性越来越大的情况一样,这里的一个基本问题是,子系统维护者的权限到底有多大。P4TC 补丁包含在流量控制子系统中,该子系统由 Jamal Hadi Salim(和其他一些人)维护。正如他多次指出的那样,这项工作/使用/了 BPF,但没有更改 BPF 子系统;他说,BPF 开发人员因此无权阻止它。

尽管有这种观点,这项工作似乎已被有效阻止,目前尚不清楚如何找到一个双方都能接受的解决方案。像 Sommers 这样的潜在用户已经 表达了他们对这种情况的失望,但这似乎并没有动摇那些反对 P4TC 的人。在这一点上,立场已经根深蒂固,很难看出如何协调它们。

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

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

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

44b377696b8b5d7aba1d2e42c519c073.jpeg

C++ bitset总结 数据结构bitset 术语:某1位置位是置1,某一位复位是某一位清零。 文章目录数据结构bitset一、3种初始化方式二、位访问三、位操作四、 位集操作总结实战练习 一、3种初始化方式 bitset<32> tmp; //默认构造函数,默认全0。 bitset<32> tmp(-1); //从整形数构造 bitset<32> tmp("101"); //从包含1和0的字符串构造 二、位访问 bitset<32> tmp(256) 阅读详情

相关推荐

无法找到来自源 nvlddmkm 的事件 ID 14 的描述

具体错误是: 无法找到来自源 nvlddmkm 的事件 ID 14 的描述。本地计算机上未安装引发此事件的组件,或者安装已损坏。可以安装或修复本地计算机上的组件。 出现这样错误的原因有很多了,有可能是硬件有可能是软件。由于我是刚配置的电脑,起初非常怀疑是自己组装的问题,折腾了好久,心态爆炸!!!先说我报这样错误的情况,以及解决办法,供后面人参考。 ...

SeventhBlue 6万+

linux p4使用心得

1.设置使用者信息 export P4PORT=perforce-wsx.com:1966 &amp;&amp; export P4CLIENT=build-toolchain-centos5-32-dev31 &amp;&amp; export P4USER=wsx export PATH=$PATH:/build/apps/bin   2.p4操作命令 $ p4 -h //查看帮助信...

xiaoxinyu316的专栏 8311

ESP32驱动GC9A01圆形屏实战:Arduino平台LVGL移植与图像显示优化

本文详细介绍了在Arduino平台上使用ESP32驱动GC9A01圆形屏的实战指南,包括硬件连接、LVGL移植与图像显示优化。通过SPI配置、LVGL库安装和双缓冲机制等技巧,帮助开发者快速实现高效显示效果,适用于智能家居控制面板等应用场景。

weixin_29182481的博客 734

四路 CAN 转 4G 网关

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

S2003120416的博客 160

时序约束实战:从setup/hold到时钟路径约束的深度解析

本文深度解析数字设计中的时序约束实战,重点探讨如何从setup/hold检查的核心原理出发,理解并应用时钟路径约束。文章通过剖析Path Requirement的计算逻辑,结合同频、倍频及异步时钟域等典型场景,提供了从解读时序报告到编写、调试SDC约束的系统方法,帮助工程师有效应对复杂SoC设计中的时序收敛挑战。

weixin_29291185的博客 105

CentOS7 编译升级GCC至9.3.0

1)下载GCC9.2.0源码并解压 从GCC官方FTP下载地址可以看到GCC最新版本为9.3.0。由于官网下载速度慢,实际上用清华大学的镜像站进行下载,代码如下: wget -c /opt/tmp/ https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz #考虑到安装失败的可能性,创建一个临时文件夹来安装GCC...

haha123486的博客 1万+

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

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

2503_94545876的博客 513

内网渗透—横向移动&IPC横移&Impacket套件&CS插件

以上便是IPC横移的知识。最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

2301_76227305的博客 1890

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

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

diansandaosilaodanan的博客 374

【Windows Server 2019】邮件服务器配置与管理——安装及配置Winmail服务器(上)

博文介绍了如何安装邮件服务器 Winmail,如何配置Winmail,包括运行服务器,Winmail管理工具介绍和域名配置。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 2万+

Unity零基础到入门 ☀️| 小万字教程 对 Unity 中的 协程 ❤️全面解析+实战演练❤️

Unity,为了让Unity基础知识专栏更加完善,又肝了一篇协程来学习。 协程在Unity中还是很常用的,一起来看一下协程的基本概念和使用方法吧!

努力前行,总会成为自己心中的那道光 8万+

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

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

2502_91473995的博客 287

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

2301_78967866的博客 414

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

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

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

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

ESDWAN的博客 789

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

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

AlibabaApple的博客 95

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

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:在今后十年让BPF保持活力!
下一篇: LWN:在GNU C库实现内存封印!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值