Ping 一个 LLM:将 Claude 作为用户空间 IP 协议栈

Ping 一个 LLM:将 Claude 作为用户空间 IP 协议栈

在网络世界中,“ping” 是测试连通性最基本的方法。这是一个由内核网络协议栈在微秒级处理的精简且高效的过程。但如果你用大语言模型 (LLM) 来替换那段高度优化的 C 代码,会发生什么呢?

轻量级 IP 协议栈 lwIP 和 uIP 的创建者 Adam Dunkels 最近进行了一项思想实验,旨在观察 Claude 是否可以充当用户空间 IP 协议栈。目标既简单又荒诞:指示 LLM 逐字节读取原始 IP 数据包,对其进行解析,并手动构建一个有效的 ICMP echo reply——且不使用任何外部库或脚本。

LLM IP 协议栈的架构

为了实现这一点,Dunkels 开发了一个名为 ping-respond.md 的命令。这个 Markdown 文件充当了一组指令(本质上是一个“程序”)供 Claude 执行。该过程被分解为几个离散的步骤:

  1. 数据包获取:Claude 运行一个 bash 命令,通过 Python 助手从 TUN 设备读取原始十六进制字符串。
  2. IPv4 解析:Claude 手动解析十六进制字符串,以识别版本、IHL (Internet Header Length)、TTL 和协议。它必须验证协议是否为 0x01 (ICMP)。
  3. ICMP 解析:模型识别 ICMP 类型(对于 echo request,类型必须为 0x08)并提取标识符和序列号。
  4. 手动数据包构建:这是最密集的部分。Claude 必须交换源 IP 地址和目的 IP 地址,并使用 16 位一补码算术进行手动计算 IP 和 ICMP 校验和。
  5. 传输:生成的十六进制字符串被写回 TUN 设备。

至关重要的是,指令禁止使用 Python 或任何计算器工具。Claude 被要求为校验和计算“展示其过程”,将 LLM 的推理过程视为 CPU 的 ALU (Arithmetic Logic Unit)。

结果:一个非常慢的 Pong

使用 Claude 3.5 Haiku 模型,实验取得了成功。Claude 正确解析了传入的数据包,执行了十六进制算术运算,并返回了一个有效的回复。

然而,性能表现正如预期的那样糟糕。往返时间 (RTT) 测量值约为 42.5 秒

虽然这在网络术语中简直是永恒,但 Dunkels 指出,这仍然比一些更极端的历史网络实验更快,例如 RFC 1149(通过声学耦合器压缩 IP 数据包)。

社区反应与技术辩论

该实验在 Hacker News 上引发了各种反应,从对技术好奇心的钦佩到对资源浪费的沮丧。

“LLM 作为处理器”范式

一些观察者认为这是一种概念验证,证明了 LLM 不仅仅是“愚蠢的自动补全工具”。通过仅凭推理成功实现了一个低层协议栈,该模型展示了对技术规范的严格遵守能力以及处理复杂手动算术的能力。

效率 vs. 好奇心

并非所有人都感到印象深刻。一些用户认为,使用云端托管的 LLM 来执行此类任务是浪费 token 和计算资源。一位评论者指出:

"如果你的 Copilot 订阅有了新的限制……那是因为像 Adam 这样的 PhD 在……他宁愿浪费我们所有人都在使用的服务,只为了写一篇平庸的博客文章。"

其他人建议,同样的结果可以通过使用小型本地模型,或者通过创建一个利用实际 IP 库而非手动推理的“智能体技能 (agent skill)”来更高效地实现。

实际应用?

虽然 ping 实验是一种新奇尝试,但一些用户推测了更具实际意义(尽管仍然很慢)的应用。一个建议是使用 LLM 来分析 TCP 吞吐量,通过将 Wireshark dumps 重定向到模型进行高层分析。相反,安全工程师警告不要将 LLM 用于入侵检测系统 (IDS) 等实时任务,建议 BPF (Berkeley Packet Filter) 仍然是处理数据包的唯一明智选择。

结论

将 LLM 变成网络协议栈是一项荒诞的练习,但它突显了我们对“代码”认知的迷人转变。在这个实验中,Markdown 指令是源代码,而 LLM 的推理窗口是处理器。虽然它永远不会取代内核级 IP 协议栈,但它展示了现代模型在处理低层二进制数据和协议逻辑时令人惊讶的灵活性。

Sources