跳转到内容

NS · 应用模式

状态:设计阶段,尚未实现。 应用模式是 NS 的第三个部分:文件发送以及之后的功能、第三方应用,都作为应用运行在节点之上,而不是某种连接模式的附属功能。账户模式与 Quick 模式回答”谁是对端、经哪条路径到达”;应用回答”在隧道里做什么”。

目标设计中,每个 ns 节点只有一个 nsplane 数据面引擎。账户模式、Quick 模式、ns send 与第三方应用全部基于这一个引擎:

层组件职责
应用ns send / ns receive、第三方应用应用自己的协议、界面与输出
应用会话接口ns应用通道(会合信箱客户端、引入、按 kind 分发)、app:<session> 对端来源的生命周期、第三方应用接入
连接方式账户模式(NSD 投影的对端)/ Quick 模式(配对产生的对端)决定谁是对端、用哪个 relay、走哪条路径
数据面nsplane 引擎(每个节点一个)WireGuard、直连与 relay 路径、报文过滤;会话对端的安装与移除、隧道内连接(netstack)、按来源命名空间的 ACL 与 pinhole
会合relay 的 /rendezvous/v1与应用无关的会合信箱(会合协议)

应用不自带 WireGuard 引擎、TUN 或 relay 连接;它通过应用会话接口使用节点已有的引擎。这样直连探测、relay 转发预算、入站过滤和路径切换只有一份实现。

现状:账户模式(2026-10-03)与 Quick 模式(2026-10-04)都已运行在同一个 nsplane 引擎上,并自 2026-10-12 起作为平等的 membership 同时运行(在同一模型里应用会话 app:* 是又一种 membership,尚未实现);应用通道的 confirm 模式已用于 Quick 配对,pake / peer 模式与文件发送尚未实现。进度见迁移计划。

组成说明
kind应用标签,例如文件发送为 transfer;relay 只用它做统计
应用通道应用声明一份 profile(kind、鉴权方式 confirm / pake / peer、对端生命周期、隧道内端口);会合、引入、身份交换、PSK、对端安装与隧道内入口由 ns 的应用通道统一实现,需要会合时经 relay 的 /rendezvous/v1 信箱
对端两端已是对端时使用现有对端(peer);否则经应用通道的 pake 建立仅限本次会话的对端:从不进入允许名单,不发布名字,只放行应用端口,会话结束即删除
数据始终在 WireGuard 隧道内,按端口区分应用;relay 上不承载应用数据(会合协议 §10)
界面命令行、--json 事件或嵌入方的回调

Quick 模式的配对同样是应用通道上的应用(kind = "pairing",confirm,长期对端);它是 Quick 模式建立对端的方式,因此不出现在下面的应用清单中。

应用不绑定某一种模式:节点运行在哪种模式,应用就使用那种模式已有的对端与路径;没有现成对端时,经会合信箱建立仅限本次会话的对端。

节点模式已有对端没有现成对端
Quick 模式ready 的已配对对端会合信箱 + 仅限本次会话的对端,经 Quick relay 到达
账户模式NSD 投影的 Node,受 Node L3 ACL 约束待设计
应用kind入口状态
文件发送transferns send / ns receive <票据>设计,未实现
第三方应用自选ns app ...(预留)与 ns 暴露的应用接口规划
语音、聊天待定待定规划;按应用通道 §9 添加

命令约定:内置的高频应用使用顶层短命令(ns send / ns receive),它们跟随节点当前的模式,不属于账户模式或 Quick 模式;第三方应用的列出、授权与运行统一放在预留的 ns app 命令族下。

  • 第三方应用的接入形式:本地 IPC、libns,还是进程内库。
  • 第三方应用的 kind 命名空间与权限:哪些应用可以安装仅限本次会话的对端、可以使用哪些端口。
  • 账户模式下没有现成对端时的会合与准入。