NSIO Docs
NSIO Docs
首页
总体架构

NSN · 站点节点

NSN · 站点节点
NSN · 架构与功能设计
NSN · 演进路线与开发计划

NSC · 用户客户端

NSC · 用户客户端
NSC · 架构与功能设计
NSC · 演进路线与开发计划

NSD · 控制中心

NSD · 控制中心
NSD · 架构与功能设计
NSD · 演进路线与开发计划

NSGW · 数据网关

NSGW · 数据网关
NSGW · 架构与功能设计
NSGW · WireGuard Peer Relay 协议层
NSGW · 演进路线与开发计划

Last Updated: 2026/5/8 08:44:39

Previous PageNSD · 架构与功能设计
Next PageNSGW · 数据网关

#NSD · 演进路线与开发计划

本页融合 NSD 的设计差距、演进目标与六大能力轴,作为路线规划输入。架构概念见 architecture.md。

#1. 不可放弃的差异点

NSD 的演进必须保留以下产品差异化:

  1. 多 NSD 并行(企业级独有卖点)—— 同一节点可同时归属客户私有 NSD 与云端共享 NSD,合并发生在节点侧,NSD 间互不感知。
  2. 协议可插拔的控制面 —— SSE / Noise IK / QUIC 三套传输共用同一事件解析器。
  3. 私钥不可见性(协议级) —— WgConfig 故意不含 private_key 字段,使"NSD 不持私钥"成为协议而非流程承诺。
  4. 数据面无应用层依赖 —— NSD 整体不可达时已建立的隧道仍按现有策略继续工作。

#2. 开放差距 · 阻断生产化(P0)

来自 MVP 升级清单与跨组件缺陷的 NSD 责任面,合并去重后的 P0:

ID一句话修复方向
NSD-P0-01所有 HTTP 端点走明文,MVP 设计无 TLS 终结前置 traefik / ingress 终结 TLS,或 NSD 自身 https
NSD-P0-02JWT 使用 alg: none,任何人可伪造 tokenRS256 / ES256 + 暴露 /.well-known/jwks.json + 吊销机制
NSD-P0-03authkey 仅判"非空字符串即过";无一次性 / 限用次数 / 过期 / 撤销authKeys 表 + 原子减次数 + 绑定 org / site
NSD-P0-04acl_config / acl_projection 事件永远不推(MVP 未实现);NSN 启动期 fail-open 窗口生产由 roles / userResources 合成下发;订阅建立后 2s 内推 acl_config(即使空)
NSD-P0-05MVP 设计无持久化,重启即丢全部 registry / services / subscribers持久化层 + migration(SQLite / PostgreSQL)
NSD-P0-06节点端 to_http_base() 把 noise:// / quic:// 重写为明文 http://NSD 必须开 https 入口(8443);或把 register / auth / heartbeat 也装进 Noise/QUIC transport

#3. 开放差距 · 阻断企业销售(P1)

ID一句话修复方向
NSD-P1-01device_flow 的 /device 页面是占位真实用户批准 UI + 登录态校验
NSD-P1-02heartbeat 路由不校验 JWT,任何人可刷 last_heartbeat要求 JWT 且 sub == body.machine_id
NSD-P1-03gateway/report 路由不校验 JWT,任何人可注册"假网关"要求 gateway JWT
NSD-P1-04SSE 订阅表是进程内 Map,多实例不可用Redis pub/sub 广播 + sticky session
NSD-P1-05可观测性仅 console.log,无 metrics / tracePrometheus + OpenTelemetry,所有路由进结构化日志
NSD-P1-06无审计日志,谁改过什么无从追溯requestAuditLog 表 + 敏感操作告警 + S3 / SIEM 导出
NSD-P1-07authenticate 签名仅含本地时间戳,无 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-09register / authenticate / heartbeat / services_report / gateway_report 5 个 HTTP API 不经过 Noise/QUIC transportNoise / QUIC listener 后也暴露这 5 个 HTTP API;契约层声明"所有控制面 API 必须可在三种 transport 上运行"
NSD-P1-10无统一审计事件流出口POST /api/v1/events 通用事件上报 + S3 / Splunk HEC / Sentinel 导出

#4. 开放差距 · 待优化(P2/P3)

ID一句话修复方向
NSD-P2-01NSGW 推送的 WSS Open frame 缺 source identity(已决议加 TLV)在 acl_projection 中下发 Subject::User/Group/Nsgw 维度
NSD-P2-02QUIC 信任只靠 SHA-256 fingerprint,无法轮换吊销Machine PKI(F1.1)+ ca_bundle_update SSE 事件
NSD-P2-03无证书自动化,HTTPS 要手工配Let's Encrypt / 企业 CA 集成
NSD-P3-01SSE 快照 CDN 化(企业级)把订阅广播交给 Cloudflare Workers / 同等边缘平台
NSD-P3-02跨区 NSD(企业级)active-active + Raft-like 共识

#5. 六大能力轴 × MVP / GA / 企业级

NSD 生产化能力组织成 6 条正交轴:

轴主问题MVPGA企业级
① 身份与组织"谁是谁,谁属于哪个组织"OIDC + 本地账号 + 邀请 + Realm + OrgSAML 2.0 + SCIM + 2FA 强制 + 三层 API Key + 审批工作流HSM + ABAC + Machine PKI + FIDO2 特权
② 策略与编排"谁能访问什么,怎么路由"硬编码 ACL + Resources/Roles/UserResources版本号 + 一键回滚 + 灰度 + 策略测试 + IngressDSL(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 + SMSk8s Operator + 插件系统 + air-gap License + Rust SDK + Kafka 事件总线
⑥ 高可用与扩展"NSD 挂了怎么办,百万节点怎么扛"单实例 SQLite + Maintenance Mode + IP 限流active-active + Postgres + Redis + 热升级 + 备份 PITR + IP 白名单跨区 NSD + SSE CDN + 读写分离 + 多 NSD 并行产品化

#6. 阶段排期

#6.1 Phase 1 · MVP(~2 季度)

目标:10 个 NSN + 100 个 NSC 内部使用。

NSD 核心清单:

  • SQLite 持久化 + migration 框架
  • 把 MVP 的 subscriber 注册 / services 上报等逻辑迁到生产栈,API 路径不变
  • Web UI 框架 + 初始设置向导
  • 本地账号 + OIDC SSO(至少 Keycloak + Authentik)
  • 多租户 Org + Realm(self-hosted)
  • User API Key(基础)
  • 邀请链接
  • 邮件发送(邀请 / 密码重置)
  • 审计日志落本地
  • i18n 启用(en + zh)
  • 深色模式
  • 实现 acl_config 与 acl_projection SSE 事件下发
  • 真实 JWT(RS256 / ES256)+ JWKS
  • heartbeat / gateway_report 路由要求 JWT
  • authkey 一次性 / 限用次数 / 过期 / 撤销

MVP 验收:单 NSD + 单 NSGW 跑 72 小时不崩;所有 4 套 E2E 测试(WG/WSS/Noise/QUIC)用生产 NSD 仍通过。

#6.2 Phase 2 · GA(~4 季度)

目标:100~1000 人企业客户,SLA 99.9%。

NSD 核心:

  • Postgres 支持 + NSD 多实例 active-active + Redis 缓存
  • SAML 2.0 + SCIM + 审批工作流 + 2FA 强制选项
  • Org API Key + 作用域
  • 策略版本 + 灰度 + 测试工具(nsdctl policy test)
  • Webhook + HMAC · Terraform Provider v1 · SDK(TS/Py/Go)
  • 邮件 + Slack + PagerDuty 告警
  • 审计日志 S3 导出 · 连接 / 请求 / 访问日志 · 流式日志 · OTel 统一
  • API 限流 · IP 白名单 · 热升级 · 备份 + PITR
  • Billing 基础 + Stripe 对接
  • challenge-response 端点(POST /api/v1/machine/auth/challenge)
  • token_refresh SSE 事件触发逻辑
  • Noise / QUIC transport 后暴露 5 个 HTTP API

GA 验收:3 区 NSGW + 2 NSD active-active;1000 节点 p99 注册延迟 < 500ms;SAML + SCIM 对接 Okta / Azure AD / Google Workspace;TF apply 一键创建。

#6.3 Phase 3 · 企业级(~8 季度)

目标:大型企业 / 金融 / 政府。

NSIO 差异化能力产品化:

  • 多 NSD 并行产品化 —— 联邦管理(nsdctl federation list + Web UI 联邦视图 + 跨 NSD 审计关联 + 策略冲突检测)
  • 协议可插拔数据面 —— 同 NSC 自动选 WG / QUIC / Noise
  • 无 TUN 移动端 SDK —— iOS / Android App 沙箱运行

NSD 企业级核心:

  • Machine PKI(X.509)+ BYO-CA + FIDO2 特权操作
  • 策略 DSL(Rego / CEL)+ 策略仿真 + 策略审批
  • 定时策略 + 条件策略(Posture)+ Condition DNS + Ingress / Egress 策略
  • 跨区 NSD + 读写分离 + SSE 快照 CDN 化
  • 插件系统 + 离线 License + air-gap 部署
  • SLA 月报 + 异常检测 + SIEM 深度对接 + SOC2 / ISO27001 对齐

企业级验收:10 万节点 p99 注册延迟 < 1s;4 区跨大洲 NSGW,单区失效 30s 内 failover;策略 DSL 客户 security 团队可维护;合规审计满足 SOC2 + GDPR;air-gap 部署 license 跑通。

#7. 控制面契约扩展(NSD 新增)

新契约方向用途支撑能力
POST /api/v1/machine/postureNSN/NSC → NSD设备 posture 上报(OS / 磁盘加密 / 2FA)条件策略
POST /api/v1/authzNSGW → NSD查询"此 user 对此 resource 能做什么"零信任策略点
POST /api/v1/billing/ingestNSGW → NSD上报 bytes / duration / connections计费
POST /api/v1/gateway/topologyNSGW → NSD上报活跃 peer / session连接拓扑图
POST /api/v1/eventsAny → NSD通用事件上报事件总线 / 审计
POST /api/v1/machine/auth/challengeNSN/NSC → NSD取 server nonce防重放
SSE ca_bundle_updateNSD → NSGW证书包更新Machine PKI
SSE quota_updateNSD → NSGW每 org 配额更新配额
SSE policy_versionNSD → NSN/NSGW策略版本号ACL 版本号
SSE gateway_drainNSD → NSN"网关 X 即将下线"预告热升级
GET /api/v1/policy/simulateCLI / SDK → NSD策略仿真查询策略仿真
Webhook POSTNSD → 客户事件外发Webhook

兼容性原则:① 新增事件 / 字段 optional,不删旧类型;② register 时协商 protocol_version: "2.0";③ 同时工作在 SSE / Noise / QUIC 三种传输上。

#8. 运维形态(四档)

形态目标规模NSD 部署存储SLA
T0 · 单机 POC≤ 5 人单进程(MVP)内存无
T1 · 单区 MVP≤ 1k 节点2 实例 active-active + Nginx/TraefikPostgres 主从99.0%
T2 · 多区 GA1k–10k 节点多区 active-active + Raft-like 共识Postgres Multi-AZ + PITR 7 天99.9%;SOC2 Type II + ISO 27001 + GDPR 驻留
T3 · 跨云企业 / 私有化万级节点联邦(multi-NSD 并存)+ air-gapPostgres + ETCD + 对象存储,三地五中心99.99%;等保三级 / FedRAMP High / PCI-DSS / HIPAA

#9. 风险与回滚预案

风险应对
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 末拿到

#10. 跨阶段里程碑

里程碑阶段验收
M1.0 AlphaMVP 中期3 节点 E2E + Web UI 登录
M1.1 BetaMVP 末10 节点试点 + SLA 99.5%
M1.2 GA-candidateMVP→GA100 节点压测 + SLA 99.9%
M2.0 GAGA 末1000 节点 + SaaS 上线 + Webhook/TF/SDK 齐
M2.1 GA + Multi-regionGA+1Q3 区 + GeoDNS
M3.0 Enterprise Beta企业级 中大客户试点 + Anycast + 策略 DSL
M3.1 Enterprise GA企业级 末air-gap + 合规认证 + 多 NSD 并行产品化

#11. 不在路线图内

  • 把 NSD 控制面换成 gRPC —— SSE 对 DPI 友好,HTTP/1.1 over rustls 覆盖面广。
  • NSD 与数据面合并 —— 有状态 vs 无状态的解耦是 NSIO 核心架构原则。
  • 把策略引擎换成 OPA / Cedar —— 表达力够用,引入新依赖维护成本高。