ChirpStack 开源 LoRaWAN 网络服务器技术分析

一、概述

1. 项目简介

A. 是什么

ChirpStack 是一个开源的 LoRaWAN 网络服务器,用于搭建和管理 LoRaWAN 网络。它提供 Web 界面用于管理网关、设备和租户,支持与主要云提供商、数据库和服务建立数据集成。

B. 核心特性

  • 开源 MIT 许可证
  • 支持多租户架构
  • 提供 gRPC API
  • Web 管理界面
  • 支持多种数据库后端(PostgreSQL、SQLite)
  • 丰富的集成选项

C. 技术栈

  • 后端:Rust(86.3%)
  • 前端:TypeScript(13.6%)
  • 构建工具:Makefile、Nix、Docker

2. 项目状态

  • Stars:919
  • Forks:235
  • 贡献者:46
  • 最新版本:v4.16.0(2026-01-23)
  • 活跃维护中

二、核心架构

1. 系统组成

graph TB
    subgraph 前端层
        UI[Web UI]
        API[gRPC API]
    end

    subgraph 后端层
        CS[ChirpStack Core]
        LF[lrwn-filters]
        LW[lrwn]
    end

    subgraph 存储层
        PG[(PostgreSQL)]
        SQ[(SQLite)]
        RD[(Redis)]
    end

    subgraph 消息层
        MQ[Mosquitto MQTT]
    end

    subgraph 集成层
        CI[ChirpStack Integration]
    end

    UI --> API
    API --> CS
    CS --> LF
    CS --> LW
    CS --> PG
    CS --> SQ
    CS --> RD
    CS --> MQ
    CS --> CI

mermaid

ChirpStack 系统架构

2. 核心组件

A. ChirpStack Core

主服务程序,负责:

  • 设备注册和管理
  • 网关管理
  • 数据处理和路由
  • 租户管理

B. lrwn

LoRaWAN 网络协议实现,包含:

  • LoRaWAN 1.0.x 和 1.1 协议支持
  • MAC 层命令处理
  • 加密和解密
  • 漫游支持

C. lrwn-filters

上行数据过滤和处理:

  • 数据帧过滤
  • Uplink Frames 处理
  • 自定义过滤规则

D. ChirpStack Integration

数据集成组件:

  • HTTP 集成
  • MQTT 集成
  • 数据库集成
  • 云平台集成

三、技术细节

1. 开发环境

A. 必需工具

  • Nix(推荐)
  • Docker

B. 开发环境启动

使用 Nix:

nix-shell

使用 Docker:

make docker-devshell

2. 构建系统

A. UI 构建

make build-ui

B. 二进制构建

调试版本(快速编译):

make debug-amd64

发布版本(性能优化):

make release-amd64

全平台打包:

make dist

C. 数据库后端选择

默认使用 PostgreSQL:

make debug-amd64

使用 SQLite:

DATABASE=sqlite make debug-amd64

3. 测试流程

A. 启动依赖服务

docker compose up -d

B. 运行测试

PostgreSQL 后端:

make test

SQLite 后端:

DATABASE=sqlite make test

4. 数据库迁移

A. 生成新迁移

make migration-generate NAME=test-migration

B. 应用迁移

make migration-run

C. 回滚迁移

make migration-revert

四、部署架构

1. 容器化部署

graph LR
    subgraph Docker_Compose
        CS[ChirpStack]
        PG[(PostgreSQL)]
        RD[(Redis)]
        MQ[Mosquitto]
    end
    GW[LoRa Gateways] --> CS
    CS --> PG
    CS --> RD
    CS --> MQ
    CS --> EXT[External Integrations]

mermaid

容器化部署架构

2. Docker Compose 服务

项目提供的 docker-compose.yml 包含:

  • ChirpStack 主服务
  • PostgreSQL 数据库
  • Redis 缓存
  • Mosquitto MQTT Broker

3. 生产环境部署要点

A. 持久化存储

  • PostgreSQL 数据卷
  • Redis 持久化配置
  • 配置文件映射

B. 网络配置

  • 端口映射(8080 Web UI)
  • MQTT 端口(1883)
  • 网关 UDP 端口

C. 高可用考虑

  • 数据库主从复制
  • Redis 哨兵模式
  • 负载均衡配置

五、API 设计

1. gRPC API

ChirpStack 提供 gRPC 接口用于:

  • 设备管理
  • 网关管理
  • 租户管理
  • 数据查询

2. API 访问方式

# 连接到 ChirpStack API
grpcurl -plaintext \
  -d '{"tenant_id":"..."}' \
  localhost:8080 \
  api.DeviceService/List

六、数据流分析

1. 上行数据流

sequenceDiagram
    participant DEV as LoRa Device
    participant GW as Gateway
    participant CS as ChirpStack
    participant DB as Database
    participant INT as Integration

    DEV->>GW: LoRaWAN Uplink
    GW->>CS: Forward UDP Packet
    CS->>CS: Decrypt & Validate
    CS->>DB: Store Frame
    CS->>INT: Payload Data

mermaid

上行数据流时序图

2. 下行数据流

sequenceDiagram
    participant APP as Application
    participant CS as ChirpStack
    participant GW as Gateway
    participant DEV as LoRa Device

    APP->>CS: gRPC Downlink
    CS->>CS: Schedule & Encrypt
    CS->>GW: Downlink Frame
    GW->>DEV: LoRaWAN Downlink

mermaid

下行数据流时序图

七、关键技术实现

1. 多租户架构

A. 租户隔离

  • 逻辑隔离(非物理隔离)
  • 租户级别的资源配额
  • API Key 认证

B. 组织结构

  • Tenant(租户)
  • Application(应用)
  • Device(设备)
  • Gateway(网关)

2. LoRaWAN 协议支持

A. 支持的协议版本

  • LoRaWAN 1.0.0 - 1.0.4
  • LoRaWAN 1.1

B. MAC 命令

  • LinkCheckReq
  • LinkADRAns
  • DutyCycleReq
  • RXParamSetupReq
  • DevStatusReq

C. 漫游支持

  • 被动漫游(Passive Roaming)
  • 主动漫游(Active Roaming)

3. 数据集成

A. 支持的集成类型

  • HTTP Webhook
  • MQTT 发布
  • InfluxDB
  • Cassandra
  • Azure IoT Hub
  • AWS IoT
  • Google Cloud IoT

B. 集成配置

通过 Web UI 或 gRPC API 配置:

  • JSON 负载格式
  • Headers 配置
  • 数据转换规则

八、性能与扩展性

1. 性能指标

A. 单实例容量

  • 设备数:10,000+
  • 每日消息数:100,000+
  • 网关数:100+

B. 资源占用

  • 内存:512MB - 2GB
  • CPU:2-4 核
  • 存储:根据数据量

2. 扩展策略

A. 水平扩展

  • 多实例部署
  • 负载均衡
  • 共享数据库

B. 垂直扩展

  • 增加硬件资源
  • 数据库优化
  • Redis 集群

九、安全机制

1. 认证与授权

A. API 访问

  • API Key 认证
  • JWT Token(可选)

B. Web UI

  • 用户名密码认证
  • 基于角色的访问控制(RBAC)

2. 数据加密

A. LoRaWAN 层加密

  • AppSKey(应用层加密)
  • NwkSKey(网络层加密)

B. 传输加密

  • TLS/HTTPS 支持
  • MQTT over TLS

3. 安全最佳实践

A. 网络隔离

  • VPN 访问
  • 防火墙规则
  • 网络分段

B. 密钥管理

  • 定期轮换密钥
  • 安全存储密钥
  • 访问审计

十、部署实践

1. 快速启动

A. 使用 Docker Compose

# 克隆仓库
git clone https://github.com/chirpstack/chirpstack.git
cd chirpstack

# 启动服务
docker compose up -d

# 访问 Web UI
# http://localhost:8080

B. 初始配置

  • 默认用户:admin
  • 默认密码:admin

2. 生产部署建议

A. 数据库优化

  • PostgreSQL 连接池配置
  • 索引优化
  • 定期备份

B. 监控指标

  • 设备在线状态
  • 网关连接状态
  • 消息处理延迟
  • API 响应时间

C. 日志管理

  • 结构化日志输出
  • 日志轮转
  • 集中日志收集

十一、与其他解决方案对比

1. 开源 LoRaWAN 网络服务器对比

特性ChirpStackThe Things NetworkEverynet
许可证MITSource Available商业
自托管完全支持有限不支持
多租户支持有限商业版
数据库PostgreSQL/SQLiteCassandra专有
语言RustGo/Java专有

2. ChirpStack 优势

A. 技术优势

  • Rust 内存安全
  • 高性能并发处理
  • 跨平台支持

B. 部署优势

  • 简单的 Docker 部署
  • 灵活的配置选项
  • 多数据库支持

C. 生态优势

  • 活跃的社区
  • 丰富的集成选项
  • 详细的文档

十二、应用场景

1. 典型应用

A. 智慧城市

  • 环境监测
  • 智能照明
  • 垃圾管理
  • 停车管理

B. 智慧农业

  • 土壤监测
  • 精准灌溉
  • 牲畜追踪
  • 温室控制

C. 工业物联网

  • 设备监控
  • 预测性维护
  • 资产追踪
  • 能源管理

2. 成功案例

A. 规模部署

  • 城市级 LoRaWAN 网络
  • 校园物联网
  • 工业园区监控

B. 集成案例

  • 云平台对接
  • 自定义应用开发
  • 数据分析平台

十三、社区与生态

1. 项目维护

A. 核心维护者

  • Orne Brocaar(创始人)
  • 46+ 贡献者

B. 商业支持

  • ChirpStack 商业支持服务
  • 企业级功能
  • 专业咨询

2. 相关项目

A. ChirpStack Gateway OS

基于 OpenWrt 的网关操作系统

B. ChirpStack Application Server

应用层服务器组件

十四、总结与展望

1. 技术总结

A. 架构优势

  • 现代化的 Rust 技术栈
  • 模块化设计
  • 良好的可扩展性

B. 适用场景

  • 中小型 LoRaWAN 网络部署
  • 企业私有网络
  • 研究和教育

2. 未来展望

A. 技术趋势

  • LoRaWAN 1.1 广泛采用
  • 边缘计算集成
  • AI/ML 数据分析

B. 生态发展

  • 更多云平台集成
  • 标准化接口
  • 互操作性提升

参考资料

  1. ChirpStack GitHub 仓库
  2. ChirpStack 官方文档
最后修改:2026 年 01 月 24 日
如果觉得我的文章对你有用,请随意赞赏