跳转到内容

NS · 演进路线与开发计划

本页汇总 NS 三个部分(账户模式、Quick 模式、应用模式)进行中的计划、延期验收项与已知差距。计划编号对应 ns 仓库 docs/plan/。

  1. 统一节点 —— 一个二进制同时访问与发布。
  2. 三种数据面共享上层 —— tun 是默认且功能最完整的形态,dns-vip / proxy 保留”免 root 也能用”的差异化。
  3. 链路阶梯可恢复 —— 降级与恢复由健康证据驱动,不新增 NSD / NSGW 协议。
  4. ACL 全部 fail-closed —— 不存在”偏宽放行”的路径。
  5. 私钥不出节点 —— 协议级硬约束。
  6. 本地能力声明是兜底 —— services.toml / ns subnet 绑定不可被 NSD 绕过。
  7. 账户模式与 Quick 模式并存 —— 账户模式承载团队、策略与运维;Quick 模式让任意两台设备免账户直接配对,两者同一二进制,自 2026-10-12 起作为同一个节点引擎上的平等 membership 同时运行。

状态以 ns 仓库分支 refactor/nsplane(fbc8ded8,2026-10-13) 的 plan / task 索引为准。

计划目标状态
PLAN-173 认证的有状态 Node L3 访问控制同 Account 全 L3 保留,跨 Account 新流需显式 Grant,返回流有状态实现与跨账号 live 矩阵已完成;尚需补齐 diff coverage 与威胁模型评审
PLAN-160 统一发布产物编排CLI / App 库统一构建目标、同 commit provenance 与发布归档构建编排已完成;仅余 Windows CLI 本地化发布验收
Quick 模式 macOS / Windows 平台支持Quick 模式在 macOS(utun)与 Windows(Wintun)上运行,桌面清理可验证实施中;已发布并通过两台物理 Mac 验收,Windows 原生验收未闭合
PLAN-220 测试目标平台可见性恢复 Windows 测试目标编译,不改变运行时行为实施中
单引擎(20261003-2200-one-engine)ns 每个进程一个 nsplane 引擎,只保留业务逻辑与控制面;第 1 阶段(账户模式,M4)、第 2 阶段(Quick v2,M5)与两轮后续已完成,第 3 阶段随 nsplane 的 MG / MT / MD 事项删除剩余的逐报文循环、Windows tun crate 与 acl 执行进行中;见 账户模式 §2.4.1
M4 账户模式换引擎(20261003-1300-account-mode-engine)账户模式只运行在 nsplane 引擎上,旧数据路径删除;决策 2026-10-03-account-mode-engine-only 及其三次附录已完成(2026-10-03,后续轮 2026-10-04 / 05 / 06)
M5 Quick v2 上引擎(20261003-2145-quick-v2-on-engine)Quick 只实现 v2:overlay 的 Quick 来源、记录、relay 与登记表客户端、信箱配对、隧道内控制通道;删除 quick-runtime / quick-wire / quick-pairingns 侧已完成(2026-10-04);relay v2 服务端待 nsgw M2
M3 覆盖网核心(20261003-0800、20261003-1200)overlay crate(约 17k 行),账户与 Quick 都在用实现完成,待最终 QA
nsplane 0.11 采用(20261010-1328-nsplane-0.11-adoption)Node L3 模型移回 ns(account_engine::wg::node_l3)并编译到 nsplane 通用流网关;来源策略改为 key:<hex> 标签;翻译器改用 EAM 名字已完成(2026-10-10);之后 10-12 升到 v0.12.0、10-13 升到 v0.13.0(Enforce 下原生 N6 判定、Subnet L3 回程身份的运行时准入)与 v0.14.0(重叠 LAN 的本地虚拟网段)
同时连接多个 NSD(20261010-1542-concurrent-nsd-connections,决策 2026-10-11-node-memberships)设备密钥链与按 NSD 加盐的身份;平等的 membership 运行时(每个 NSD 的每个 Network 与 Quick 各为一个 nsplane 本地身份);上报隔离;节点策略权威;路由、名字、出口归节点;新的 CLI / 状态 / FFI 面;不兼容旧 ns已完成(campaign 于 2026-10-13 关闭):工作流 A–E 全部合入;多节点互通套件(just multi-node-e2e:进程内 23 通过 / 1 忽略、mock crate、Docker 里真实 ns 守护进程 10 步全部通过);剩余:同一 Node 身份出现在两个 NSD 时只有先绑定者可达(nsplane 0.14 已提供按本地身份的密钥路由,ns 尚未接入);NSD 与 nsgw 的配套未开始
后续里程碑M6 的 ns 侧已随 membership 运行时开始(身份对端、NSD IPv4 删除);NSD / nsgw / relay v2 未开始;M7–M9,见迁移计划待排期
Windows ns quick down 间歇 internal_error(PQD,20261006-1130)杀死 worker 后的 down 偶发内部错误未闭合
剩余 Keynet 拼写只剩 v1 存储上下文 keynet/runtime-state/v1(迁移读取用)、配置校验里的 /keynet/v1 回退与未用的 v1 向量基本完成
应用模式 · 文件发送ns send / receive,见 apps.md、file-send.md;依赖单一 nsplane 引擎设计,未排期

3. 延期验收项(不阻断开发,阻断对应发布)

Section titled “3. 延期验收项(不阻断开发,阻断对应发布)”
项说明
Windows native artifact / smoke所有计划统一把 Windows native 作为 release gate,不登记 runner gate
单引擎的发布门Windows / macOS 原生 TUN smoke(just windows-smoke 已自动化,账户引擎部分通过);tests/live-e2e;吞吐不低于旧基线(嘈杂主机上 −3.7 %,在噪声内,需在安静主机复测);Windows quick0 MTU 65535 待 nsplane MT-3
子网路由(PLAN-164)与网络互联(PLAN-165)的 macOS / Windows 原生验收Linux native 与 Docker live-e2e 已闭合;原生 runner 证据延期到发布
Linux arm64 独立环境的容器 smokeLinux amd64 与 Colima arm64 已通过
PLAN-213 移动端 App / 真机验收Core / FFI / CLI 本机验证已闭合;手机网络观察接入与真机证据留作发布门
Quick 模式 Windows 原生验收编译与本地测试通过;原生运行时验收与 Windows 安装器迁移证据未闭合
production 公钥 / 稳定 fingerprint 与 arm64 / macOS 原生发布证据Docker 离线发布链路的发布前置
领域差距方向
子网路由首版始终 SNAT;不支持原生 IPv6 LAN;不提供 --virtual-cidr / 关闭 SNAT;移动端不能作子网网关真实源地址保留、原生 IPv6 LAN 另立计划
网络互联只支持 IPv6 发起终端与静态路由 / 既有默认网关;不自动配置路由器、热点、RA、DHCPv6;只支持 TCP / UDP / ICMP Echo;外部路由只能报告 unverified保持首版边界;路由器自动化与 NAT46 不在计划内
直连 P2Pdirect 只在已认证 WG 会话后竞争;无冷启动打洞、无跨网关选择由 NSD PeerCandidates 与 NSGW 反射探测驱动,按需扩展
Gateway Egress短名已收敛为 <service>.<gateway-label>.svc;macOS 原生 DNS 失败保留为发布跟进发布前补齐原生验收
Short DNS不提供 enrollment 后 Node rename、不提供省略 gateway label 的 <service>.svc 歧义短名、不改公共 DNS zone明确非目标
Quick 模式未开放能力bridge(IPv4-only 服务桥)、别名快照、身份恢复、本地密钥绑定管理命令隐藏;命名层未实现;自定义 relay 只能一个条目按需开放;多 relay 注册由内置列表提供
Quick 模式能力边界只做设备间 L3;不发布 Service、子网、出口;自 2026-10-12 起可作为节点引擎上的一个 membership 与账户模式同时运行,但不共享对端(跨来源默认拒绝)保持;需要这些能力时使用账户模式
事项理由
在 membership 之间转发流量,或按优先级解决 membership 之间的冲突节点从不在 membership 之间转发;所有 membership 平等,冲突由本地决定而不是按排序(决策 2026-10-11-node-memberships)
手工 Noise / QUIC / Envelope pin信任材料只来自 WebPKI 认证的发现文档
在 auto 之外增加候选顺序 / 阈值 / timeout 的公开配置保持 auto 语义简单
改造NS 侧NSD / NSGW 配套
Node L3 Grant 执行node_l3_acl.v1、enforced 代际NSD PLAN-123 统一 Access Grant 与代际标记
pair transport 权威心跳携带异常快照、消费 overrideNSD 能力门控的 pair observation;NSGW 无改动
Gateway Exit 撤销fenced withdrawal journalNSD TASK-252 认证 clear API 与 opaque selection identity
Short DNS v2 / Gateway Egress 短名resolver、平台 scope、FFI catalogNSD TASK-205 / Egress 投影
容器 DNSNS_CONTAINER=1 原生 resolver 管理无
控制信任发现control_trust.v1 消费NSD PLAN-137 发布方;NSGW PLAN-132 消费方
网关 RTT 探测relay_gateway_rtt.v1 探测 probe_roster,gateway_rtt.v1 心跳上报分档 RTTNSD 投影 gateway_config.probe_roster 并确认 gateway_rtt.v1;NSGW 应答反射探测
Quick 模式 relay短码目录、/quick/v1 配对客户端、区域成员轮转NSGW nsgw-quick-relay 提供 relay(UDP / /keynet/v1 WSS)、/quick/v1 配对服务与区域成员间协议
身份对端与 membership(2026-10-12)WgConfig 不再有 ip_address,node_identity 携带身份键;每个 membership 独立登记与控制连接;到网关载体的 IPv4 从本机 carrier4 不经翻译发出NSD 投影身份键、停止分配 Node IPv4(迁移计划 §5 的工作包);NSGW 接受已准入客户端的任意 IPv4 源并按对端伪装(D3 修订)