公告

FujoOS公布日延期,以仓库发布为准

文档 架构 网络栈

网络栈

这一节的标题其实有点名不副实:FujoOS 没有网络栈。有的是一个裸的 virtio-net 驱动,加每个 demo 各自手搓的 IP / UDP / TCP 头。把这件事说清楚,比给它起一个好听的名字重要。

现状
网卡驱动 virtio-net,仅 3 个原语
原语 fujo_net_info(186) · fujo_net_tx(204) · fujo_net_rx(253)
用户 ABI 帧级 tx/rx,单帧 ≤ 1514 B,原生 opcode 0x8A04–06
POSIX socket 仅名字占位,dispatch 返回 -ENOSYS
服务模型 srv_net 只存在于文档里;驱动直接从用户 ELF 调用
协议实现 每个 demo 各写一遍 ARP / IP / UDP 头与校验和
回归 UDP 回环 PASS;宿主→客体 TCP PASS;出向 TCP 响应被 slirp 丢弃(已记录)

为什么这块值得单独讲

它是 L0 的靶子。 上面那句“每个 demo 各写一遍协议头”就是这个项目最典型的重复。ARP / IP / UDP 的字段偏移、字节序、校验和是绝对精确的,正好是 .lom 单一真源最擅长消灭的那类跨语言重复。
它需要能力边界。 网络是“一个进程只应该碰它被允许碰的那部分”最自然的例子:端口白名单、允许的目的地址、最大帧长。现有能力表只管 AI 动作,还没有端口 / socket 能力。
网络线是另一件事: 这一页讲的是内核侧的网络现状。用 Loment / Potato 重写用户态网络层的那条开发线,见 项目 · 网络线