# wvp-test **Repository Path**: pan648540858/wvp-test ## Basic Information - **Project Name**: wvp-test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-13 - **Last Updated**: 2026-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GB28181 压测工具 基于 go-sip 实现的国标 GB/T 28181 协议压力测试工具,支持设备注册和心跳功能。 ## 功能特性 - ✅ GB28181 设备注册 (REGISTER) - ✅ 定时心跳 (Keepalive) - ✅ 支持多设备并发压测 - ✅ 自动分配设备 ID 和端口 - ✅ 优雅退出处理 ## 编译 ```bash go build -o 28181-test ``` ## 使用方法 ### 基本用法 ```bash ./28181-test \ -local-ip 192.168.1.100 \ -local-port 5060 \ -server-ip 192.168.1.200 \ -server-port 5060 \ -device-id 34020000001320000001 \ -server-id 34020000002000000001 ``` ### 参数说明 | 参数 | 说明 | 默认值 | |------|------|--------| | `-local-ip` | 本地IP地址 | 192.168.1.100 | | `-local-port` | 本地起始端口 | 5060 | | `-server-ip` | SIP服务器IP | 192.168.1.200 | | `-server-port` | SIP服务器端口 | 5060 | | `-device-id` | 设备ID(20位国标编码) | 34020000001320000001 | | `-server-id` | 服务器ID(20位国标编码) | 34020000002000000001 | | `-password` | 认证密码 | 12345678 | | `-expires` | 注册有效期(秒) | 3600 | | `-heartbeat` | 心跳间隔(秒) | 60 | | `-concurrent` | 并发设备数量 | 1 | ### 压测示例 启动 10 个并发设备进行压测: ```bash ./28181-test \ -local-ip 192.168.1.100 \ -local-port 6000 \ -server-ip 192.168.1.200 \ -server-port 5060 \ -device-id 34020000001320000001 \ -server-id 34020000002000000001 \ -concurrent 10 \ -heartbeat 30 ``` 这将创建 10 个虚拟设备: - 设备 ID: `34020000001320000001` ~ `34020000001320000010` - 端口: `6000` ~ `6009` - 每 30 秒发送一次心跳 ## 协议说明 本工具实现了 GB/T 28181-2016 国标协议的以下功能: ### 1. 设备注册 (REGISTER) 设备启动后会自动向 SIP 服务器发送 REGISTER 请求进行注册。 SIP 消息示例: ``` REGISTER sip:34020000002000000001@192.168.1.200:5060 SIP/2.0 Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK...;rport From: ;tag=... To: Call-ID: ...@192.168.1.100 CSeq: 1 REGISTER Contact: Max-Forwards: 70 Expires: 3600 User-Agent: GB28181-Device/1.0 Content-Length: 0 ``` ### 2. 心跳保活 (Keepalive) 注册成功后,设备会按照配置的心跳间隔定时发送 MESSAGE 请求。 心跳消息体 (XML): ```xml Keepalive 2 34020000001320000001 OK ``` ## 日志输出 工具会输出详细的运行日志: ``` ======================================== GB28181 压测工具 ======================================== 本地地址: 192.168.1.100:5060 服务器地址: 192.168.1.200:5060 设备ID: 34020000001320000001 服务器ID: 34020000002000000001 注册有效期: 3600秒 心跳间隔: 60秒 并发数量: 1 ======================================== 2026/01/12 10:00:00 [设备 34020000001320000001] 开始监听 192.168.1.100:5060 2026/01/12 10:00:00 [设备 34020000001320000001] 发送REGISTER请求 2026/01/12 10:00:00 [设备 34020000001320000001] 收到REGISTER响应: 200 OK 2026/01/12 10:00:00 [设备 34020000001320000001] ✓ 注册成功 2026/01/12 10:00:00 已启动 1 个设备 2026/01/12 10:01:00 [设备 34020000001320000001] 发送心跳 2026/01/12 10:01:00 [设备 34020000001320000001] 心跳成功 ``` ## 停止运行 按 `Ctrl+C` 优雅退出,工具会自动清理所有资源: ``` ^C2026/01/12 10:05:00 正在停止设备... 2026/01/12 10:05:00 已停止所有设备 ``` ## 注意事项 1. **端口占用**: 确保配置的端口范围未被占用 2. **防火墙**: 确保 UDP 端口可以正常通信 3. **设备ID**: 必须符合国标 20 位编码规则 4. **并发限制**: 建议根据系统资源合理设置并发数量 5. **认证**: 当前版本未实现 SIP 摘要认证,适用于无认证或简单密码场景 ## 依赖库 - [gosip](https://github.com/ghettovoice/gosip) - SIP 协议实现 - [logrus](https://github.com/sirupsen/logrus) - 日志库 ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request!