Orne Brocaar 098f8db4c6 Migrate device-sessions from Redis to PostgreSQL.
This migrates the device-sessions from Redis into PostgreSQL. This fixes
a performance issue in case the same DevAddr is reused many times
(e.g. devices rejoining very often or a NetID with small DevAddr space).

There were two issues:

The Redis key containing the DevAddr -> DevEUIs mapping could contain
DevEUIs that no longer used the DevAddr. This mapping would only expire
from the Redis database after none of the devices would use the DevAddr
for more than the configured device_session_ttl.

The other issue with the previous approach was that on for example a
Type 7 NetID, a single DevAddr could be re-used multiple times. As each
device-session could be stored on a different Redis Cluster instance,
there was no option to retrieve all device-sessions at once. Thus a high
re-usage of a single DevAddr would cause an increase in Redis queries.

Both issues are solved by moving the device-session into PostgreSQL
as the DevAddr is a column of the device record and thus filtering on
this DevAddr would always result in the devices using that DevAddr, as
well all device-sessions for a DevAddr can be retrieved by a single
query.

Note that to migrate the device-sessions, you must run:

chirpstack -c path/to/config migrate-device-sessions-to-postgres

A nice side-effect is that a PostgreSQL backup / restore will also
restore the device connectivity.

Closes #362 and #74.
2024-02-27 16:17:15 +00:00
2023-05-30 12:13:52 +01:00
2024-01-12 09:19:50 +00:00
2023-12-07 09:43:57 +00:00
2024-01-12 09:19:50 +00:00
2024-01-12 09:19:50 +00:00
2023-05-30 12:13:52 +01:00
2022-04-06 21:50:23 +01:00
2023-12-18 09:56:23 +00:00
2023-05-30 12:13:52 +01:00
2022-04-06 21:18:32 +01:00
2024-01-11 15:26:13 +00:00
2023-05-31 12:11:48 +01:00
2023-11-20 12:09:02 +00:00

ChirpStack open-source LoRaWAN(R) Network Server

CI

ChirpStack is an open-source LoRaWAN(R) Network Server which can be used to set up LoRaWAN networks. ChirpStack provides a web-interface for the management of gateways, devices and tenants as well to set up data integrations with the major cloud providers, databases and services commonly used for handling device data. ChirpStack provides a gRPC based API that can be used to integrate or extend ChirpStack.

Documentation and binaries

Please refer to the ChirpStack website for documentation and pre-compiled binaries.

Building from source

Requirements

Building ChirpStack requires:

Nix

Nix is used for setting up the development environment which is used for local development and for creating the binaries.

If you do not have Nix installed and do not wish to install it, then you can use the provided Docker Compose based Nix environment. To start this environment execute the following command:

make docker-devshell

Note: You will be able to run the test commands and run cargo build, but cross-compiling will not work within this environment (because it would try start Docker within Docker).

Docker

Docker is used by cross-rs for cross-compiling, as well as some of the make commands.

Starting the development shell

Run the following command to start the development shell:

nix-shell

Or if you do not have Nix installed, execute the following command:

make docker-devshell

Building the UI

To build the ChirpStack UI, execute the following command:

make build-ui

Running ChirpStack tests

Start required services

ChirpStack requires several services like PostgresQL, Redis, Mosquitto, ... to be running before you can run the tests. You need to start these services manually if you started the development shell using nix-shell:

docker-compose up -d

Run tests

Run the following command to run the ChirpStack tests:

make test

Building ChirpStack binaries

Before compiling the binaries, you need to install some additional development tools (for cross-compiling, packaging, e.d.). Execute the following command:

make dev-dependencies

Run the following command within the ./chirpstack sub-folder:

# Build AMD64 debug build (optimized for build speed)
make debug-amd64

# Build AMD64 release build (optimized for performance and binary size)
make release-amd64

# Build all packages (all targets, .deb, .rpm and .tar.gz files)
make dist

License

ChirpStack Network Server is distributed under the MIT license. See also LICENSE.

Description
ChirpStack open-source LoRaWAN Network Server
Readme MIT 21 MiB
Languages
Rust 85.5%
TypeScript 14.2%
Makefile 0.1%