本页融合 NSD 的设计差距、演进目标与六大能力轴,作为路线规划输入。架构概念见 architecture.md。
NSD 的演进必须保留以下产品差异化:
WgConfig 故意不含 private_key 字段,使"NSD 不持私钥"成为协议而非流程承诺。来自 MVP 升级清单与跨组件缺陷的 NSD 责任面,合并去重后的 P0:
| ID | 一句话 | 修复方向 |
|---|---|---|
| NSD-P0-01 | 所有 HTTP 端点走明文,MVP 设计无 TLS 终结 | 前置 traefik / ingress 终结 TLS,或 NSD 自身 https |
| NSD-P0-02 | JWT 使用 alg: none,任何人可伪造 token | RS256 / ES256 + 暴露 /.well-known/jwks.json + 吊销机制 |
| NSD-P0-03 | authkey 仅判"非空字符串即过";无一次性 / 限用次数 / 过期 / 撤销 | authKeys 表 + 原子减次数 + 绑定 org / site |
| NSD-P0-04 | acl_config / acl_projection 事件永远不推(MVP 未实现);NSN 启动期 fail-open 窗口 | 生产由 roles / userResources 合成下发;订阅建立后 2s 内推 acl_config(即使空) |
| NSD-P0-05 | MVP 设计无持久化,重启即丢全部 registry / services / subscribers | 持久化层 + migration(SQLite / PostgreSQL) |
| NSD-P0-06 | 节点端 to_http_base() 把 noise:// / quic:// 重写为明文 http:// | NSD 必须开 https 入口(8443);或把 register / auth / heartbeat 也装进 Noise/QUIC transport |
| ID | 一句话 | 修复方向 |
|---|---|---|
| NSD-P1-01 | device_flow 的 /device 页面是占位 | 真实用户批准 UI + 登录态校验 |
| NSD-P1-02 | heartbeat 路由不校验 JWT,任何人可刷 last_heartbeat | 要求 JWT 且 sub == body.machine_id |
| NSD-P1-03 | gateway/report 路由不校验 JWT,任何人可注册"假网关" | 要求 gateway JWT |
| NSD-P1-04 | SSE 订阅表是进程内 Map,多实例不可用 | Redis pub/sub 广播 + sticky session |
| NSD-P1-05 | 可观测性仅 console.log,无 metrics / trace | Prometheus + OpenTelemetry,所有路由进结构化日志 |
| NSD-P1-06 | 无审计日志,谁改过什么无从追溯 | requestAuditLog 表 + 敏感操作告警 + S3 / SIEM 导出 |
| NSD-P1-07 | authenticate 签名仅含本地时间戳,无 server nonce(重放窗口 ≤ 300s) | 新增 POST /api/v1/machine/auth/challenge;签名嵌入 nonce + nsd_url |
| NSD-P1-08 | 控制面 backoff 指数退避时 token 过期,重连 401 再退避 | 延长 JWT 有效期或支持 refresh_token;实现 token_refresh SSE 事件;401 时立即续签而非退避 |
| NSD-P1-09 | register / authenticate / heartbeat / services_report / gateway_report 5 个 HTTP API 不经过 Noise/QUIC transport | Noise / QUIC listener 后也暴露这 5 个 HTTP API;契约层声明"所有控制面 API 必须可在三种 transport 上运行" |
| NSD-P1-10 | 无统一审计事件流出口 | POST /api/v1/events 通用事件上报 + S3 / Splunk HEC / Sentinel 导出 |
| ID | 一句话 | 修复方向 |
|---|---|---|
| NSD-P2-01 | NSGW 推送的 WSS Open frame 缺 source identity(已决议加 TLV) | 在 acl_projection 中下发 Subject::User/Group/Nsgw 维度 |
| NSD-P2-02 | QUIC 信任只靠 SHA-256 fingerprint,无法轮换吊销 | Machine PKI(F1.1)+ ca_bundle_update SSE 事件 |
| NSD-P2-03 | 无证书自动化,HTTPS 要手工配 | Let's Encrypt / 企业 CA 集成 |
| NSD-P3-01 | SSE 快照 CDN 化(企业级) | 把订阅广播交给 Cloudflare Workers / 同等边缘平台 |
| NSD-P3-02 | 跨区 NSD(企业级) | active-active + Raft-like 共识 |
NSD 生产化能力组织成 6 条正交轴:
| 轴 | 主问题 | MVP | GA | 企业级 |
|---|---|---|---|---|
| ① 身份与组织 | "谁是谁,谁属于哪个组织" | OIDC + 本地账号 + 邀请 + Realm + Org | SAML 2.0 + SCIM + 2FA 强制 + 三层 API Key + 审批工作流 | HSM + ABAC + Machine PKI + FIDO2 特权 |
| ② 策略与编排 | "谁能访问什么,怎么路由" | 硬编码 ACL + Resources/Roles/UserResources | 版本号 + 一键回滚 + 灰度 + 策略测试 + Ingress | DSL(Rego/CEL)+ 仿真 + Posture + 定时 + 双人审批 + Egress |
| ③ 网络编排 | "站点与网关如何组网" | 单区 + Site Provisioning Key + Resource 管理 | 多区 + GeoDNS + 站点 / 用户分组 + Exit Node + Subnet Router + ACME | 流量工程 + 跨站点 P2P + 拓扑编辑器 + Blueprint + Share Link |
| ④ 可观测与审计 | "现在什么在跑,过去谁做了什么" | 实时设备列表 + 审计落盘 + 邮件通知 | OTel 统一 + 流式日志 + Webhook + 告警引擎 + 审计 S3 导出 | SIEM + SLA 月报 + 异常检测 + 合规导出 |
| ⑤ 运营与生态 | "如何对接 CI/CD / IaC / 告警" | Web UI + i18n(en+zh)+ CLI 基础 + 初始向导 + 邮件通知 + 组织仪表盘 | OpenAPI + SDK(TS/Py/Go)+ TF Provider + Webhook + Stripe Billing + SMS | k8s Operator + 插件系统 + air-gap License + Rust SDK + Kafka 事件总线 |
| ⑥ 高可用与扩展 | "NSD 挂了怎么办,百万节点怎么扛" | 单实例 SQLite + Maintenance Mode + IP 限流 | active-active + Postgres + Redis + 热升级 + 备份 PITR + IP 白名单 | 跨区 NSD + SSE CDN + 读写分离 + 多 NSD 并行产品化 |
目标:10 个 NSN + 100 个 NSC 内部使用。
NSD 核心清单:
acl_config 与 acl_projection SSE 事件下发MVP 验收:单 NSD + 单 NSGW 跑 72 小时不崩;所有 4 套 E2E 测试(WG/WSS/Noise/QUIC)用生产 NSD 仍通过。
目标:100~1000 人企业客户,SLA 99.9%。
NSD 核心:
nsdctl policy test)POST /api/v1/machine/auth/challenge)token_refresh SSE 事件触发逻辑GA 验收:3 区 NSGW + 2 NSD active-active;1000 节点 p99 注册延迟 < 500ms;SAML + SCIM 对接 Okta / Azure AD / Google Workspace;TF apply 一键创建。
目标:大型企业 / 金融 / 政府。
NSIO 差异化能力产品化:
nsdctl federation list + Web UI 联邦视图 + 跨 NSD 审计关联 + 策略冲突检测)NSD 企业级核心:
企业级验收:10 万节点 p99 注册延迟 < 1s;4 区跨大洲 NSGW,单区失效 30s 内 failover;策略 DSL 客户 security 团队可维护;合规审计满足 SOC2 + GDPR;air-gap 部署 license 跑通。
| 新契约 | 方向 | 用途 | 支撑能力 |
|---|---|---|---|
POST /api/v1/machine/posture | NSN/NSC → NSD | 设备 posture 上报(OS / 磁盘加密 / 2FA) | 条件策略 |
POST /api/v1/authz | NSGW → NSD | 查询"此 user 对此 resource 能做什么" | 零信任策略点 |
POST /api/v1/billing/ingest | NSGW → NSD | 上报 bytes / duration / connections | 计费 |
POST /api/v1/gateway/topology | NSGW → NSD | 上报活跃 peer / session | 连接拓扑图 |
POST /api/v1/events | Any → NSD | 通用事件上报 | 事件总线 / 审计 |
POST /api/v1/machine/auth/challenge | NSN/NSC → NSD | 取 server nonce | 防重放 |
SSE ca_bundle_update | NSD → NSGW | 证书包更新 | Machine PKI |
SSE quota_update | NSD → NSGW | 每 org 配额更新 | 配额 |
SSE policy_version | NSD → NSN/NSGW | 策略版本号 | ACL 版本号 |
SSE gateway_drain | NSD → NSN | "网关 X 即将下线"预告 | 热升级 |
GET /api/v1/policy/simulate | CLI / SDK → NSD | 策略仿真查询 | 策略仿真 |
| Webhook POST | NSD → 客户 | 事件外发 | Webhook |
兼容性原则:① 新增事件 / 字段 optional,不删旧类型;② register 时协商 protocol_version: "2.0";③ 同时工作在 SSE / Noise / QUIC 三种传输上。
| 形态 | 目标规模 | NSD 部署 | 存储 | SLA |
|---|---|---|---|---|
| T0 · 单机 POC | ≤ 5 人 | 单进程(MVP) | 内存 | 无 |
| T1 · 单区 MVP | ≤ 1k 节点 | 2 实例 active-active + Nginx/Traefik | Postgres 主从 | 99.0% |
| T2 · 多区 GA | 1k–10k 节点 | 多区 active-active + Raft-like 共识 | Postgres Multi-AZ + PITR 7 天 | 99.9%;SOC2 Type II + ISO 27001 + GDPR 驻留 |
| T3 · 跨云企业 / 私有化 | 万级节点 | 联邦(multi-NSD 并存)+ air-gap | Postgres + ETCD + 对象存储,三地五中心 | 99.99%;等保三级 / FedRAMP High / PCI-DSS / HIPAA |
| 风险 | 应对 |
|---|---|
| MVP 迁生产时 API 漂移 | 契约测试(E2E 全套重跑) |
| Web UI 框架版本与 NSIO 栈其他部分不兼容 | 独立部署 |
| 配置轮询模型与 NSIO SSE 推送不一致 | 先做 adapter 层,渐进切换 |
| 多实例 NSD 的 SSE subscriber 分发 | 外置 Redis subscriber registry;或走负载均衡 sticky |
| Terraform Provider 与 Web UI 状态漂移 | 提供 data "nsio_*" 数据源 |
| 多 NSD 联邦管理 UX 难设计 | 先做"只读视图"最小版,迭代 |
| SOC2 Type II 需 6 个月运行记录 | Phase 2 末启动,Phase 3 末拿到 |
| 里程碑 | 阶段 | 验收 |
|---|---|---|
| M1.0 Alpha | MVP 中期 | 3 节点 E2E + Web UI 登录 |
| M1.1 Beta | MVP 末 | 10 节点试点 + SLA 99.5% |
| M1.2 GA-candidate | MVP→GA | 100 节点压测 + SLA 99.9% |
| M2.0 GA | GA 末 | 1000 节点 + SaaS 上线 + Webhook/TF/SDK 齐 |
| M2.1 GA + Multi-region | GA+1Q | 3 区 + GeoDNS |
| M3.0 Enterprise Beta | 企业级 中 | 大客户试点 + Anycast + 策略 DSL |
| M3.1 Enterprise GA | 企业级 末 | air-gap + 合规认证 + 多 NSD 并行产品化 |