NS · 演进路线与开发计划
本页汇总 NS 三个部分(账户模式、Quick 模式、应用模式)进行中的计划、延期验收项与已知差距。计划编号对应
ns仓库docs/plan/。
1. 不可放弃的差异点
Section titled “1. 不可放弃的差异点”- 统一节点 —— 一个二进制同时访问与发布。
- 三种数据面共享上层 ——
tun是默认且功能最完整的形态,dns-vip/proxy保留”免 root 也能用”的差异化。 - 链路阶梯可恢复 —— 降级与恢复由健康证据驱动,不新增 NSD / NSGW 协议。
- ACL 全部 fail-closed —— 不存在”偏宽放行”的路径。
- 私钥不出节点 —— 协议级硬约束。
- 本地能力声明是兜底 ——
services.toml/ns subnet绑定不可被 NSD 绕过。 - 账户模式与 Quick 模式并存 —— 账户模式承载团队、策略与运维;Quick 模式让任意两台设备免账户直接配对,两者同一二进制,自 2026-10-12 起作为同一个节点引擎上的平等 membership 同时运行。
2. 进行中的计划
Section titled “2. 进行中的计划”状态按 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 retirement | 0.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 独立环境的容器 smoke | Linux amd64 与 Colima arm64 已通过 |
| PLAN-213 移动端 App / 真机验收 | Core / FFI / CLI 本机验证已闭合;手机网络观察接入与真机证据留作发布门 |
| Quick 模式 Windows 原生验收 | 编译与本地测试通过;原生运行时验收与 Windows 安装器迁移证据未闭合 |
| production 公钥 / 稳定 fingerprint 与 arm64 / macOS 原生发布证据 | Docker 离线发布链路的发布前置 |
4. 已知差距与后续设计
Section titled “4. 已知差距与后续设计”| 领域 | 差距 | 方向 |
|---|---|---|
| 内置公共 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 不在计划内 |
| 直连 P2P | direct 只在已认证 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 与账户模式同时运行,但不共享对端(跨来源默认拒绝) | 保持;需要这些能力时使用账户模式 |
5. 明确不做的事
Section titled “5. 明确不做的事”| 事项 | 理由 |
|---|---|
| 在 membership 之间转发流量,或按优先级解决 membership 之间的冲突 | 节点从不在 membership 之间转发;所有 membership 平等,冲突由本地决定而不是按排序(决策 2026-10-11-node-memberships) |
| 手工 Noise / QUIC / Envelope pin | 信任材料只来自 WebPKI 认证的发现文档 |
在 auto 之外增加候选顺序 / 阈值 / timeout 的公开配置 | 保持 auto 语义简单 |
6. 跨仓协调点
Section titled “6. 跨仓协调点”| 改造 | NS 侧 | NSD / NSGW 配套 |
|---|---|---|
| Node L3 Grant 执行 | node_l3_acl.v1、enforced 代际 | NSD PLAN-123 统一 Access Grant 与代际标记 |
| pair transport 权威 | 心跳携带异常快照、消费 override | NSD 能力门控的 pair observation;NSGW 无改动 |
| Gateway Exit 撤销 | fenced withdrawal journal | NSD TASK-252 认证 clear API 与 opaque selection identity |
| Short DNS v2 / Gateway Egress 短名 | resolver、平台 scope、FFI catalog | NSD TASK-205 / Egress 投影 |
| 容器 DNS | NS_CONTAINER=1 原生 resolver 管理 | 无 |
| 控制信任发现 | control_trust.v1 消费 | NSD PLAN-137 发布方;NSGW PLAN-132 消费方 |
| 网关 RTT 探测 | relay_gateway_rtt.v1 探测 probe_roster,gateway_rtt.v1 心跳上报分档 RTT | NSD 投影 gateway_config.probe_roster 并确认 gateway_rtt.v1;NSGW 应答反射探测 |
| Quick 模式 relay | v2 RelayClient、登记 / 信箱与 /rendezvous/v1 客户端 | nsgw R1 的 NSR2 / /ns/v2 已开发交付;生产持久性与恢复另验,旧 /quick/v1 / /keynet/v1 不作当前接入目标 |
| 身份对端与 membership | 平等来源、派生身份地址、局部退出与独立来源连续性;R3 仍需移除 gateway carrier / EXIT4 | NSD 已实现私有服务和限定配对验收;R3 由普通 Node / Egress / Subnet authority 及实际消费者接入闭合,不再等待首次派发 NSD 工作包 |