跳转到内容

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 同时运行。

状态按 2026-10-20 同步的 main / fix/live-e2e、fix/container-dns-authority 和 feat/r3-gateway-node 核对;证据入口及适用边界见 迁移进度与分支依据。文件传输和 relay 目录迁移状态单独更新至 2026-10-25;未在本次验收中覆盖的历史延期项继续保留。

计划目标状态
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)节点 v2、relay / 登记 / 信箱客户端已实现,旧 Quick 运行时已删除节点侧完成;nsgw R1 已有开发交付和真实 relay 联调,生产切换仍待持久性、恢复及发布验收
M3 覆盖网核心(20261003-0800、20261003-1200)账户与 Quick 共用 overlay / nsplane已运行并有后续限定 Node DNS / ICMP / 私有服务验收;普通 Node ACL 撤销是独立未关闭范围
nsplane 采用Node L3 语义由 ns 编译至通用数据面,持续接入本地多身份、LAN 映射与 flow retirement0.11 采用已完成;当前 ns main pin 为 v0.19.1(2026-10-25/26 由 0.16.2 升级,同时把普通 DNS 应答编码迁到 nsplane-dns;分支交付只跑了聚焦的 Linux 集成目标,未跑全量 QA)。历史原生验收使用自己的精确版本,不据当前 pin 改写旧证据
架构分层(20261024-2123-architecture-layering)把 ns 单 crate(约 32 万行、75 个顶层模块、49 对互相引用的模块)分为账户、业务、数据与接口层 crate仅文档:2026-10-26 批准为参考目标架构,不授权任何实现;每个阶段须另立任务、计划并获批
发布 0.5.0-rc.x公开、要求签名的更新包与网站安装器0.5.0-rc.8 的六个更新资产于 2026-10-22 发布到公开签名包并只指向 testing,stable 未提升;Gitea main、GitHub main 与 refactor/nsplane 于 2026-10-21 一次性对齐到同一提交(ADR 2026-10-21-pr407-release-main-alignment)。真实多 Network 流量与全平台安装验收的限制保留
同时连接多个 NSD(20261010-1542-concurrent-nsd-connections,决策 2026-10-11-node-memberships)每个 NSD Network 与 Quick 是平等 membership,无 active / primary / default;不兼容旧 ns基础 campaign 已完成;后续分支已有真实独立 NSD 地址 / 命名空间与流量验收,旧“仅先绑定者可达”不再作为现状。PLAN-269 严格 scoped logout 配对通过;同一 NSD 多 Network、主线集成和发布边界另验
后续里程碑M6 私有服务 / 本地名字已部分验收;R3 普通网关、L8 family、M7 呈现统一及 M8 应用 / 公共名字仍有交付工作NSD / nsgw 已在实现;R3 按 family 与显式 CIDR 先行,见迁移计划
Windows ns quick down 间歇 internal_error(PQD,20261006-1130)杀死 worker 后的 down 偶发内部错误未闭合
剩余 Keynet 拼写协议、wire fixture、持久 runtime 名与日志 target 可能保留历史拼写依据 ns 的 docs/archive/legacy-nsc-nsn/INVENTORY.md 判断;不以文本替换更名,也不因此恢复旧状态兼容
应用模式 · 文件发送ns send / receive,见应用模式和文件发送本轮实现与验收范围完成;C05 延期不阻塞本轮,Windows 原生验收仍为发布门;固定证据见文件发送页

3. 延期验收项(按项保留阻断范围)

Section titled “3. 延期验收项(按项保留阻断范围)”
项说明
Windows native artifact / smoke所有计划统一把 Windows native 作为 release gate,不登记 runner gate
文件传输 C05:同 daemon 的 Account A→B→A用户于 2026-10-25 明确延期,不阻塞本轮完成或合并;仍未验证,仅在用户通知后恢复,验证重新接纳、旧句柄失效和健康邻居原连接保持
文件传输 Windows 原生验收未验证;阻断首次包含此功能的 Windows 发布,须覆盖文件事务、命名管道权限、真实 CLI 收发和清理
单引擎的发布门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 离线发布链路的发布前置
领域差距方向
内置公共 relay 域名迁移未完成;允许当前 *.sslip.io 部署,文件传输验收不会关闭本项最终迁移到 *.relay.ns.io 并以 DNS-01 签发证书;NS 内置目录与公共 relay 部署协同,具体主机名、负责人及时间待确定;关闭条件见会合协议 §5.4
子网路由首版始终 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 模式 relayv2 RelayClient、登记 / 信箱与 /rendezvous/v1 客户端nsgw R1 的 NSR2 / /ns/v2 已开发交付;生产持久性与恢复另验,旧 /quick/v1 / /keynet/v1 不作当前接入目标
身份对端与 membership平等来源、派生身份地址、局部退出与独立来源连续性;R3 仍需移除 gateway carrier / EXIT4NSD 已实现私有服务和限定配对验收;R3 由普通 Node / Egress / Subnet authority 及实际消费者接入闭合,不再等待首次派发 NSD 工作包