蓝盟校园网络基础设施项目

从校园的每一个角落
感知网络状态

通过部署在不同校区、楼栋和网络环境中的轻量级探测节点, 持续执行 ICMP 与 HTTP 拨测,为校园网络运行状态提供 更真实、更细粒度的分布式观测。

开源探针 ICMP / HTTP Windows / Linux / Docker
How it works

探测节点

部署在宿舍、实验室、办公室、服务器或其他校园网络环境。

NetProbe Gateway

向节点下发拨测配置,并接收节点周期性上报的测量结果。

状态监测

汇总不同区域的观测结果,形成校园网络状态视图。

About the project

为什么需要分布式探测?

一个中心服务器只能看到自己所在网络位置的连通情况。 校园网覆盖多个校区、楼栋和接入网络,同一时间不同区域的网络体验可能完全不同。 分布式节点让我们能够从更多真实的校园网络位置观察问题。

真实校园网络视角

节点运行在校园不同网络位置,可以观察中心服务器难以感知的 楼栋级和区域级网络异常。

ICMP 与 HTTP 拨测

探针根据 Gateway 下发的配置周期执行 ICMP 和 HTTP 测量, 从网络层和应用层共同观察目标状态。

由社区共同构建

一台长期连接校园网的电脑、服务器、软路由或其他设备, 就可以成为校园网络的一个观测点。

Distributed monitoring

一个节点看到的是一点,很多节点看到的是校园网络。

当多个区域同时出现异常,可以辅助判断问题是否具有普遍性; 当只有少数节点异常,则可以进一步缩小问题所在的网络区域。 节点覆盖越丰富,对校园网络状态的观察就越完整。

覆盖不同校区与楼栋

从更多真实校园网络出口持续进行拨测。

区分局部异常与整体异常

通过不同节点之间的结果差异辅助判断问题范围。

持续积累网络运行数据

长期观察网络质量变化,为问题排查提供参考。

A 区节点
B 区节点
宿舍节点
实验室节点
教学区节点
服务器节点
Join the network

接入一个探测节点

完成节点登记并获取接入信息后, 在设备上运行 CQU NetProbe 即可加入校园网络分布式监测体系。

02

获取 Token

创建节点后获取平台提供的接入信息和节点 Token。 Token 用于识别和认证你的探测节点,请妥善保存,不要公开分享。

03

运行 CQU NetProbe

根据设备环境选择 Docker, 或从 GitHub Releases 下载对应平台和架构的二进制程序并启动。

准备好加入了吗?

创建节点,获取 Token,然后选择一种部署方式即可。

前往节点管理平台
Deployment

选择你的部署方式

CQU NetProbe 提供 Docker 镜像和预编译二进制程序。 对于服务器、NAS、软路由等长期运行环境可以使用 Docker; 也可以直接下载与设备平台和 CPU 架构对应的 Release。

使用 Docker 部署

从节点管理平台获取 Gateway 地址和 Token, 然后替换下面命令中的 GATEWAY_URLYOUR_GATEWAY_TOKEN

Docker
docker run -d \
  --cap-add NET_RAW \
  --name cqu-netprobe \
  -e CQU_NETPROBE_GATEWAY_URL=GATEWAY_URL \
  -e CQU_NETPROBE_TOKEN=YOUR_GATEWAY_TOKEN \
  -e CQU_NETPROBE_LOG_LEVEL=info \
  --restart unless-stopped \
  tano26/cqu-netprobe:1
Linux 下探针优先使用非特权 ping socket, 不可用时会回退到 raw socket, 因此 Docker 容器需要 NET_RAW capability。
Token 是探测节点的身份凭据,请勿将真实 Token 发布到公开仓库或分享给无关人员。

运行预编译二进制文件

如果不使用 Docker,可以直接下载官方 Release。 v1.0.0 已提供常见 Linux 与 Windows 平台的预编译程序, 无需在本地安装 Go 或自行编译。

Linux x86-64 linux_amd64
Linux ARM64 linux_arm64
Linux ARM linux_armv6 / linux_armv7
Linux MIPS linux_mips / linux_mipsle
Windows x86-64 windows_amd64
Windows ARM64 windows_arm64
Linux 示例

以常见的 Linux x86-64 主机为例,下载 cqu-netprobe_v1.0.0_linux_amd64.tar.gz 后执行:

Linux
mkdir cqu-netprobe
cd cqu-netprobe

tar -xzf ../cqu-netprobe_v1.0.0_linux_amd64.tar.gz

cp config.example.json config.json

nano config.json

./cqu-netprobe
配置节点信息

编辑同目录中的 config.json, 将 Gateway 地址和 Token 替换为节点管理平台提供的实际内容。

config.json
{
  "gateway_url": "GATEWAY_URL",
  "token": "YOUR_GATEWAY_TOKEN",
  "log_level": "info"
}
Windows 示例

下载对应的 ZIP 文件并解压后, 创建 config.json, 即可运行 cqu-netprobe.exe

PowerShell
Expand-Archive .\cqu-netprobe_v1.0.0_windows_amd64.zip .\cqu-netprobe

cd .\cqu-netprobe

Copy-Item .\config.example.json .\config.json

notepad .\config.json

.\cqu-netprobe.exe
Release 压缩包中已经包含程序本体、 README.mdconfig.example.json。 程序默认读取当前工作目录中的 config.json
不确定设备架构时,可以先执行 uname -m 查看 Linux CPU 架构,再选择对应的 Release 文件。
How NetProbe works

探针如何工作

节点接入后无需人工维护探测目标。 探针会从 Gateway 获取配置, 并按照服务端下发的任务持续执行测量和上报。

配置获取

启动时自动从 Gateway 拉取探测配置。
拉取失败后从 1 秒开始指数退避,最大间隔 1 分钟。
没有可上报目标时,每个测量周期会主动检查配置。

测量调度

配置拉取成功后立即执行第一轮测量。
同一轮中的 Target 和不同拨测类型可以并发执行。
测量轮次不会重叠,耗时过长时会跳过已经错过的调度点。

结果上报

每轮测量完成后向 Gateway 上报最新结果。
Push 失败不会补传历史数据。
下一轮继续测量,并只上报最新结果。

ICMP / HTTP

ICMP 域名目标优先使用 IPv4,无 IPv4 时使用 IPv6。
HTTP 拨测直接连接目标,不读取系统代理配置。
HTTP 耗时包含重定向和响应体读取过程。
Network status

看看校园网络现在怎么样

通过状态页面查看校园网络相关目标的实时监测结果, 快速了解当前网络服务状态。

FAQ

常见问题

什么设备适合部署探测节点?

能够长期保持校园网连接并运行 CQU NetProbe 的设备都可以考虑, 例如服务器、软路由、NAS、实验室主机或其他长期在线设备。

应该选择 Docker 还是二进制文件?

如果设备已经具有 Docker 环境,可以直接使用容器部署。 如果是普通 Windows、Linux 主机或者不希望安装 Docker, 可以从 GitHub Releases 下载对应架构的二进制程序直接运行。

节点需要开放公网端口吗?

CQU NetProbe 主动从 Gateway 获取配置并上报测量结果, 因此通常不需要为了探针本身开放公网入站端口。

为什么 Docker 需要 NET_RAW?

Linux 下探针优先使用非特权 ping socket。 当该方式不可用时会回退到 raw socket, 因此容器需要 NET_RAW capability 才能完成 ICMP 探测。

Token 可以分享给别人吗?

不建议。Token 用于识别和认证一个探测节点, 应当像其他访问凭据一样妥善保管。

哪里可以查看源码和最新版本?

项目代码托管于 GitHub ,二进制程序可以在 v1.0.0 Release 下载。