NSIO Docs
NSIO Docs
首页

NSIO Next · 当前开发基线

统一 L3 + L4 架构
产品能力目录与实现闭环
功能闭环总账
产品闭环与功能实现
实施蓝图与交付契约
发行、升级与卸载
跨组件共享契约
控制资源生命周期
控制投影与 Runtime Protocol
数据面协议
Grant 与策略编译

组件实现规格

ns · 统一节点运行时
Client · App、CLI 与门户
NSD · 身份与控制面
NSGW · 增值数据面
身份、登录与会话
注册、准入与配额协议
商业模型与 Entitlement
采购、计费与发票
服务运营与 SLA
备份与灾难恢复
信任、合规与数据权利

Last Updated: 2026/8/9 11:10:38

Previous PageNSD · 身份与控制面
Next Page身份、登录与会话

#NSGW · Relay、Ingress、Egress 与 Exit 实现规格

NSGW 是 NSIO Next 可选的数据面能力载体。基础 Relay 保证困难网络下可用;托管区域、固定出口、公网入口和企业 SLA 构成增值能力。NSGW 的每项 capability 独立授权、配置和隔离,不能因为一台进程支持多项能力就共享租户权限。

Relay、Egress、Exit 与 Public Application 的产品闭环和状态轴见产品能力目录与实现闭环,精确建流、frame、credential 和 generation 规则见数据面协议,能力申请/激活与 Edge 对象状态见控制资源生命周期;本文件只定义 NSGW 的执行责任。

#1. Capability 模型

Capability数据可见性是否基础能力主要价值
relay端到端密文和最小路由元数据是NAT/UDP 困难环境可达
managed_relay同 relay增值区域、容量、SLA、专属实例
gateway_egress目标 Service 连接明文边界增值固定源 IP、访问白名单 SaaS
gateway_exit用户授权范围的公网/网段流量增值/可自建企业互联网出口
public_ingress外部请求与目标 Service 流量增值公网发布、证书、WAF

CapabilityPolicy 只定义 Gateway/Node 可以申请什么能力和范围;实际运行必须存在逐实例 CapabilityActivation。Activation 事务统一执行批准(含 auto approval)、Managed Resource 配额占用、计量、审计和 Capability Lease 签发。任何代码不得把 Policy allow 直接当成有效 Lease。

Capability Lease 绑定 deployment、organization/network、gateway、capability、activation ID、配置 revision、有效期和 Entitlement revision。缺失、过期或签名错误只关闭对应 capability,不影响其他能力。

状态分为独立轴:Activation=active|suspended|revoked,Availability=ready|degraded|unavailable,再分别报告 projection 与 runtime。suspended 停止新执行但保留配额和计费,恢复保证不重新抢额度;revoked 释放配额并要求重新申请;离线只改变 Availability。暂停可显式设置 auto_revoke_at,没有全局自动撤销期限。

#2. 组件边界

NSGW 负责高速数据路径、租约验证、配置原子应用、健康/容量、有限流量元数据和本地恢复。NSD 负责租户对象、授权、候选、配置编译和计费事实。ns 负责端节点加密、Service backend 和 Exit client capture。Client 只展示和发出用户/管理员命令。

NSGW 不保存完整用户/组/Grant 图,不查询套餐 SKU,不生成终端私钥,不自行扩展 CIDR/Service 范围。

托管 NSGW 的发布、区域灰度、SLA 探针、事故 drain 和恢复分别遵守发行生命周期、服务运营和备份恢复。Gateway 进程不得自行宣称 SLA 或修改客户账单。

#3. 进程模块

模块作用
identityGateway key、注册、轮换、attestation
lease_client控制连接、Capability Lease、配置 snapshot
config_runtime校验、plan、原子切换、回滚和 journal
relay端到端密文转发、opaque session 与 RelayRouteLease
wss_relayUDP 受阻时 TLS/WebSocket 外层
egressService-scoped outbound NAT/proxy
exitNode tunnel termination、routing/NAT/DNS option
ingresslistener、TLS、WAF、Service backend
tenant_isolationnamespace/table/socket/credential 分区
health_capacityreadiness、load、region、drain
metering可审计 usage event/outbox
diagnostics脱敏状态、config revision、path counters

#4. 注册与启动

安装生成 Gateway Key,通过一次性 Gateway Enrollment Key 注册。Key 限定 deployment、capability ceiling、region、expiry 和 uses。注册只创建 Gateway 身份,实际能力需独立 Capability Lease。

启动顺序:验证本地身份 → 恢复 journal → 建 NSD 控制连接 → 报告软件/平台/capability/容量 → 获取 leases/config → 在隔离 staging 中验证 → 逐 capability 启动 → 复验 listener/route → 发布 readiness。

没有有效配置时进程可以健康启动为 registered_idle,不能因为计费或某个租户配置失败退出整个网关。

#5. 配置模型

配置按 (tenant_scope, capability) 独立 snapshot/revision。每份包括 lease、listener、route/backend、credential reference、limits 和 audit settings。Secret 通过本地 secret provider 引用,不在普通 event payload 中明文传输。

应用步骤:schema/签名/lease → 资源上限 → 端口/route 冲突 → secret 可用 → staging listener/table → health probe → atomic activate → drain old revision → ack。失败只保留旧有效 revision 并上报 typed error。

#6. Relay

ns A encrypts peer packet
  → obtains signed RelayRouteLease
  → attaches with opaque relay_route_id / relay_session_id
  → NSGW validates lease and forwards opaque frame to ns B session
  → ns B decrypts and applies target Grant

RelayRouteLease 只包含 relay audience、opaque relay_route_id/relay_session_id、direction、carrier allowlist、流量上限、revision 和有效期。NSGW 不获得稳定 Membership ID、Node ID、WireGuard 公钥、Service/Grant 目录或可跨租约关联的租户标识。两端 attach 成功后只使用轮换的 opaque relay_session_id 路由;租约默认十分钟并可重签,旧 ID 到期不可复用。

attach 握手、32 字节 frame header、DATA/KEEPALIVE/CLOSE/ERROR、sequence/replay 检查和关闭码以数据面协议 §5为唯一线格式。NSGW 只能按本地 lease/session table 判定,不得在每个 frame 或新流上回查 NSD。QUIC DATAGRAM 与 WSS 使用相同 frame 和 lease 语义。

防滥用:per-node/network 带宽和连接上限、公平调度、token bucket、DDoS protection、短期 lease。超限返回 relay_capacity_limited,客户端可尝试其他 Relay,不误报 unauthorized。

基础 Relay 与 Managed Relay 使用同协议。区别仅在区域选择、容量、专属隔离、SLA 和商业 lease,不能人为降低免费路径安全性。

#7. WSS/TLS Relay

WSS 是 UDP 被封锁时的 transport fallback,仍承载端到端加密 frame。认证与 RelayRouteLease 规则相同。HTTP 反向代理和 WSS relay 使用独立 listener/path/限速,避免 header/cookie 或业务路由污染隧道。

代理/CDN 前置时必须保留可验证客户端 session,不信任任意 X-Forwarded-For。中间层缓存、压缩和消息改写关闭。

#8. Gateway Egress

Gateway Egress 是 Service backend,不是默认路由:

Application → Service VIP/Proxy → ns Service Grant
  → encrypted Service flow → NSGW ServiceFlowCredential + EgressOriginLease
  → DNS/origin connect from fixed public IP
  → target SaaS

配置必须绑定 Service ID、允许的 origin host/IP/port、TLS/SNI policy、source Network、publisher projection digest 和 limits。Egress 是 Service publisher:消费端提交 ServiceFlowCredential,NSGW 同时持有只供本地执行的 EgressOriginLease,按数据面协议 §8.1执行 OPEN、目标解析、generation 和实际 origin 校验,不接受客户端任意 CONNECT,也不回查 NSD。公网 origin 不验证 NSIO 凭据,因此该 lease 不发送给 origin;这与必须向后端 ns 出示的 IngressBackendCredential 有意不同。

DNS resolution 采用受控 resolver,防 DNS rebinding:解析后校验 IP policy、限制答案数量/TTL、连接时绑定结果。固定来源 IP 由实例/region 保证并在控制台展示验证状态。

停止 Egress 只使该 Service backend unavailable,不影响其他 Service、L3 或公网连接。

#9. Gateway Exit

Exit Gateway 报告一个或多个 profile:profile_ref、scope(DefaultRoute/CIDRs)、enabled、capabilities 和 operator labels。NSD 对 profile 授权并投影候选,用户选择后下发短租约配置。

NSGW 接受流量前最终校验:Gateway、ExitTunnelLease、source Membership、selection/profile、scope/CIDR、tunnel session、enabled/health。终端和 NSGW 两侧都执行同一 scope:终端只捕获允许范围,NSGW 只 NAT/转发租约允许范围。任一失败不 NAT、不转发并上报稳定 reason;建隧道和数据包处理不回查 NSD。

Default Route 和 CIDR scope 都只处理被配置的流量。DNS/private-network 是否走 Exit 由明确配置决定,不从 Default Route 猜测。IPv6 未被 NSGW/profile 支持时,Client 必须依据终端 runtime 事实展示,NSGW 不宣称“全流量”。

Selection suspended 时保留用户偏好但不转发;重新授权/上线后可按同一 selection 恢复。撤权在 NSD projection 和短 lease 到期两条路径收敛。

#10. Public Ingress 与 Edge Auth

Ingress 创建必须引用已有 Service,完整对象为 PublicApplication(host/path) + EdgeAuthPolicy + IngressBindingLease。流程:

  1. NSD 验证 AdminRoleBinding、Service、CapabilityActivation 和 Entitlement;
  2. 分配/验证域名,创建证书、WAF 与 EdgeAuthPolicy;
  3. 向 NSGW 下发 listener + IngressBindingLease + 最小 IngressBackendCredential/publisher projection;
  4. NSGW staging listener、获取 secret、health probe;
  5. readiness 后 DNS 切换;
  6. 外部请求经 TLS/WAF 后,以受限 EdgeIdentityContext 和 IngressBackendCredential 通过 ServiceFlow 进入授权 Endpoint。

Ingress 不允许填写任意 10.x:port 绕过 Service 对象。NSGW 连接后端使用受限 Gateway identity 与 Service lease,不获得 Network peer map。外部访客只形成 EdgeIdentity,不获得 Membership;可向后端携带签名 EdgeIdentityContext 供应用审计,但它不能扩展 Network 权限。停用先撤 DNS/新连接,再 drain,最后撤 lease;Service 保留。

认证方法是显式枚举:OIDC、API Key、Service Credential、Signed URL、mTLS、Anonymous。Anonymous 不是跳过策略,仍执行 TLS、WAF、rate limit、request audit 和应用范围校验。内部 Service AccessGrant 与 EdgeAuthPolicy 相互独立,NSGW 不能用其中一方结果替代另一方。

NSGW 从 target-minimal projection 获得 versioned EdgeAuthPolicy AST、method verifier/secret reference、PolicyKernel/Edge evaluator version 和 provenance,在每个请求本地求值;请求路径不调用 NSD。OIDC state/nonce/PKCE、EdgeSessionCredential、API Key、Signed URL、mTLS 和 Anonymous 的必需字段、轮换及 API 以控制资源生命周期 §11为权威。

会话索引至少包含 application_id、policy_revision、binding_lease_id、session_id、principal_kind/id、credential_id、identity_provider_session_id,支持按应用、策略、Binding、访客、服务凭据或 IdP 会话精确撤销。

安全撤销必须在 SLA 内主动终止已建立长连接:HTTP 返回 401/403,WebSocket 使用 1008,gRPC 使用 UNAUTHENTICATED/PERMISSION_DENIED,SSE 尽量发送最终错误事件,raw stream 使用 FIN/RST。策略读取/求值故障返回 503,后端不可用返回 502,不能把系统故障伪装成无权限。

WAF、CORS preflight bypass、header rewrite 等改变安全边界的选项必须显式、审计且有影响说明,不能默认开启。

#11. 租户隔离

每个 tenant/capability 至少隔离:配置对象、listener/route table、session map、secret namespace、限速、日志标签和 usage counter。可采用进程、network namespace、VRF/table 或严格内存 key 分区;部署级选择不能改变测试语义。

任何查找都以 tenant scope 为首键。外部 packet/session 不能仅凭目标 IP/端口选择租户。配置删除后先阻止新 session,再 drain 并清理 secret 引用。

#12. Health、容量与调度

Health 分层:process alive、control connected、capability ready、tenant config ready、regional capacity。NSD 调度只能使用 readiness 和容量,不把 process alive 当可服务。

drain 状态不接新 session但保留已有流;安全 revoke 可按租户/capability/application/policy/identity/credential 立即断开。升级滚动过程中配置 revision 和 session stickiness 可追踪。

容量指标包括 sessions、bandwidth、packet drop、CPU/memory、listener errors、region path quality 和 lease expiry。租户只看自己的聚合,平台运营看基础设施但默认不看业务目标。

#13. Metering

计量事件使用 durable outbox,包含 gateway、tenant、capability、resource、time bucket、bytes/connections 和 config revision。事件有稳定 ID、单调序号和去重键。计量失败不阻断安全数据面;outbox 满达到安全阈值时进入 degraded 并告警,不静默丢账。

流量内容不采集。域名/目标等高敏元数据按产品设置、地域和保留期处理。Legal Hold 与删除工作流由 NSD 控制,NSGW 只保留短期运行日志。

#14. 故障与恢复

故障行为
NSD 断线使用未过期 lease/config;到期逐 capability fail-closed
单租户配置错误保留旧 revision,隔离错误,不退出进程
Secret 不可用对应 listener/backend not ready
Relay 过载拒新 session并给容量 reason,已有 session按策略保留
Egress origin 失败仅 Service endpoint unavailable
Exit tunnel/profile 失败不转发该 selection,终端保持安全处理
Ingress cert 失败不激活新 listener,旧证书未过期则保留
进程崩溃journal 恢复配置;租约仍须重新验证

#15. 运维与部署

部署单位可以是单机全能力或按 capability 分池。生产建议 Relay、Exit/Egress、Ingress 分池,缩小明文边界与故障范围。每个实例使用最小 OS capability、只读根文件系统、外部 secret provider 和不可变镜像。

自建 NSGW 使用同一协议和安全门;托管增值来自区域资源、运维、SLA、固定 IP 和合规,不通过私有协议锁死客户。

#16. API 与状态

Gateway 控制 API 只接受 mTLS/设备签名身份,提供 register、report capabilities、fetch/stream config、ack、health、usage 和 revoke。终端数据面使用短期 session/flow token,不复用控制 token。

每项 capability 状态分别返回 activation、availability、projection、runtime、quota allocation、lease、config revision、active sessions、last error、retryable 和 expires_at。管理端不把这些轴或多项能力合成一个“Gateway 在线”。

#17. 安全不变量

  • Relay 不解密内层,不获得目录;
  • Egress/Exit/Ingress 的明文边界明确且分别授权;
  • Capability Lease 不能跨 tenant/gateway/capability 重放;
  • 配置读取/验签失败不使用空默认或宽规则;
  • 客户端提供的目标地址不突破 Service/Profile 配置;
  • NSGW 无权扩大 Grant、本地 Manifest 或 Entitlement;
  • 关闭增值能力不破坏基础 L3/L4 和基础 Relay。

#18. 测试与完成条件

  • capability 隔离和交叉租户 token 重放;
  • 配置 staging/atomic activate/drain/rollback;
  • Relay 端到端密文、容量、公平和 WSS fallback;
  • Relay lease 不暴露稳定身份、attach/frame 互操作、重放/过期/跨 relay audience 反测;
  • Egress DNS rebinding、目标限制和固定 IP;
  • EgressOriginLease 过期、origin digest、跨 Service/gateway 重放和“不向公网 origin 发送 lease”反测;
  • Egress/Ingress 与普通 Service publisher 使用同一 ServiceFlow handshake、half-close/RST/UDP idle 与 generation 语义;
  • Exit scope、撤权、offline/suspended、IPv4/IPv6 和 leak tests;
  • Ingress 只能绑定 Service、证书/WAF、停入口保 Service;
  • Edge OIDC/API Key/Service Credential/Signed URL/mTLS/Anonymous 全矩阵;
  • 按应用/策略/Binding/身份/凭据撤销长连接及精确协议错误;
  • CapabilityPolicy 不绕过 Activation、quota、metering 和 audit;
  • suspended/unavailable/revoked 多轴组合与配额释放语义;
  • lease expiry、NSD 断线、secret 故障、进程崩溃;
  • metering outbox 去重和对账;
  • 多租户压力和每 capability noisy-neighbor;
  • 托管/自建同协议互操作。
  • region SLI、状态页事故关联、签名 image rollout、计量 outbox 恢复和灾备 drain。

NSGW 的每项 capability 单独通过安全、故障和真机数据路径验收后才能启用,不能以“Gateway 整体已测试”代替。