跳到正文

什么是 Signal Lab ​

Signal Lab 是面向 OSC 和网络协议的测试实验室。它发送您的设备和服务所用协议的消息,显示返回的内容,充当尚未到位的设备或 API,有意劣化它们之间的网络,并把这一切变成可以再次运行的实验——在应用、脚本或 CI 流水线中都能运行。

它的初衷是在装置尚未建成时就开始调试:演出控制器、媒体服务器、传感器和云端 API 都可以在一台笔记本电脑上各自对着替身进行测试,远在它们于现场汇合之前。

适用人群 ​

  • 调试演出控制系统、装置和联网设备的人:灯光与媒体服务器、控制器、传感器、投影机,以及任何使用 OSC、UDP、TCP 或 MQTT 的设备。
  • API 与服务的测试人员:HTTP 和 WebSocket 端点、它们的认证、它们在负载下以及依赖失效时的表现。
  • 为上述工作做自动化的人:同样的实验可以在流水线中无界面运行,可以在设备旁的实验室服务器上运行,也可以由 AI 助手驱动。

能做什么 ​

发送并观察流量 ​

每种协议都有自己的界面:

协议能做什么页面
OSC发送带类型参数的消息,监视端口,向端点持续输出波形OSC
原始 UDP 和 TCP在实验中或从库中发送文本或字节,模拟使用这些协议的设备UDP 与 TCP
HTTP单个请求及其完整响应,Basic、Bearer 或 Digest 认证,Cookie 存储,突发负载HTTP
WebSocket带上服务所需的标头和子协议进行连接,发送文本或字节,读取每条消息WebSocket
MQTT 3.1.1连接代理,查看它保存的每个主题,以 QoS 0、1 或 2 发布,清除保留值MQTT
广播和组播发送到地址列表、广播地址、组播组或子网中的每台主机;监听谁在应答广播与发现

看清每一帧 ​

检查器在同一条时间线上记录工具发送和接收的每一帧:已解码,附带字节,可筛选,可导出。它捕获的帧可以变成信号,逐字节重放。

保留有效的内容 ​

有效的消息可以放进信号库:起好名字,归入文件夹,并附上备注,说明它应当引发什么。之后可以在它所属的界面、在库中,或在任何地方用 Ctrl+K 再次发送它。

扮演另一端 ​

模拟器以您的系统所对接的 API、设备或服务的身份进行应答:带路由和响应的 HTTP API,带规则的 OSC、UDP 或 TCP 设备,MQTT 代理。它们可以慢速应答、按顺序失败、发送格式错误的正文,或按计划停机——这样就能在真正的设备或服务到位之前,测试您的系统如何应对。

有意破坏网络 ​

损伤中继位于客户端与其目标之间,为 UDP 加入延迟、抖动、丢包、重复、乱序或带宽限制,或者让 TCP 连接延迟、限速、重置和停滞。每个决定都遵循种子,因此相同的流量两次都会得到相同的结果。

把它变成测试 ​

实验是您在画布上绘制的步骤流程:发送请求、等待回复、检查、提取值、分支、循环、并行运行分支,以及为本次运行启动模拟器或损伤中继。每次运行都会逐步报告,并保存为一份报告,可以与之前的报告对比。

给服务施加负载 ​

实验中的 HTTP 请求可以在负载下运行——恒定速率、斜坡、阶梯、尖峰或随机到达——并经过测量、由阈值判定。HTTP 界面提供快速的突发负载,风暴则针对您自己的服务器和链路生成原始 UDP 或 TCP 负载。

发现网络中的设备 ​

广播与发现可以找到应答探测的设备,扫描器则显示一台主机上有哪些 TCP 端口是开放的。

自动化 ​

signallab 命令行无需窗口即可运行实验,并以流水线能理解的退出码退出;它会为 CI 写出 JUnit 报告。signallab mcp 让 AI 助手读取、编写和运行实验。服务器通过其 HTTP API 提供同样的功能。

两种运行方式 ​

桌面应用服务器,在浏览器中使用
运行于Windows 10 和 11(x64)、Linux(x86_64)Linux 上的 Docker 镜像(amd64 和 arm64),或从源代码构建
使用方式在它自己的窗口中在 Chrome、Edge 或 Firefox 中,从任何能访问该服务器的机器上
流量发出自本机服务器
附带signallab 命令行signallab 命令行,位于镜像中
更新自行更新,在您同意时随镜像更新

两者是同一个引擎上的同一套界面:每个界面、检查器、实验和报告的用法都一样。当设备位于您自己的电脑无法访问的网络中时,就该选择服务器——机柜中的一台电脑,或设备旁的一台小型 Linux 主机,从笔记本电脑或流水线中使用。参见安装与更新和服务器;两者的区别见概念。

组织结构 ​

  • 界面是您当下手动工作的工具:发送这个、监听那里、启动那个模拟器。侧边栏列出了所有界面;切换到其他界面时,每个界面都会保留您输入的内容和收到的内容。参见窗口。
  • 实验是构建一次、反复运行的流程,每次的运行方式都相同,每次运行都有一份报告。
  • 库保存您创建的内容:信号在信号库中,模拟器在模拟器库中。实验两者都会用到。
  • 任务是长时间运行的工作——监视器、模拟器、中继、一次运行——列在窗口底部,可以在那里停止其中一个或全部。

概念对其中每一项做了更深入的说明。

默认安全 ​

  • 在您按下按钮之前,Signal Lab 不会发送任何内容,并且只发往您指定的地方。唯一的例外是桌面应用每天一次的更新检查,可以将其关闭(参见更新)。
  • 初始信号、初始模拟器和实验模板都指向 127.0.0.1,即本机。要访问网络,需要您自己输入地址。
  • 未设置访问令牌而启动的服务器只监听 127.0.0.1,并拒绝任何其他地址。
  • 只有在您点击允许时,防火墙才会被更改。

负责任地使用 ​

真实的流量,真实的主机

风暴、扫描器和广播会向真实主机发送真实流量,而广播或子网遍历会到达网段上的每一台设备,不只是您想到的那一台。只把它们指向您拥有或获准测试的系统,并先确认自己所在的是哪个网络。高速率可能占满链路,并触发入侵检测。

Signal Lab 的引擎设有防护上限:一次遍历最多覆盖 1024 台主机,一个信标在所有目标上合计每秒最多发送 50,000 个数据包。这些只是防护上限,并不等于许可。

语言 ​

界面及其提示和错误信息、signallab 命令行、服务器的登录页面以及 Windows 安装程序支持 11 种语言:English(英语)、Русский(俄语)、Español(西班牙语)、Français(法语)、Deutsch(德语)、Português(巴西葡萄牙语)、中文(简体中文)、日本語(日语)、한국어(韩语)、हिन्दी(印地语)和 العربية(阿拉伯语,从右到左)。可以在顶栏中即时切换;参见窗口。

下一步 ​

  1. 安装 Signal Lab。
  2. 熟悉窗口。
  3. 在本机上完成快速上手。
  4. 阅读其背后的概念。