* Adds one more "is not none" check for a line that failed on my
installation.
* Add a level of indentation to the inner "walkGraph" function,
so it doesn't painstakingly check every node when it already
knows that it won't pick them (for a route cost).
My testing gave the same results, substantially faster.
The eBPF iterator interface is now per-CPU aware, and correctly
extracts a slice of data for each per-CPU map (or a slice of 1
when using a non-CPU divided map).
Replaces the eBPF interface "bpf_map_get_next_key" followed by
"bpf_map_lookup_elem" cycle for iterating maps with a call to
the kernel-provided eBPF iterator service.
Currently only implemented for throughput and RTT tracking.
Further commits will tighten the scope and eventually remove
the legacy setup completely.
For 10k hosts, this reduces the number of system calls from
20,002 to 4. The remaining items are a futex lock (required
for safety), and an iterator call.
New tool: lqos_map_perf is included in the distribution. It
runs the two map iterators that pound the lqosd/eBPF system
with map iterations, counts the number of entries returned
and reports on overall performance (in µs).
This is intended to help with diagnosing map reading
performance issues and act as a bench-test to see if
using eBPF iterators actually helps.
Adding "type" to `network.json` is awesome, but it broke a bit of
Rust. This patch adds support for the `type` field, and fixes
a rare "none" issue that mostly seems to affect my UISP setup.
Use `esbuild` to build TypeScript, and bundle components together
in a minified form for the `lts_node` website.
This is very much a work in progress, committing as a checkpoint.
The orchestrator accepts a "new free license request", checks
that there is an available stats host (it picks the least busy).
It then creates a license key, adds the organization and key
to the PostgreSQL database and creates a bucket for the new
organization in InfluxDB2.
The "licman" tool now accepts...
licman license freetrial "My Org Name"
... and returns a license key for inclusion in your lqos.conf
file.
This has been briefly tested, and basic stats appeared.
This is intended to manage the license management server, once it
is running. It starts with a command "licman add host <ip>" that
adds a data-collector to the available stats hosts pool.
To run the migration, you need to have a PostgreSQL installation
setup. It must accept the host you are on, have an empty database
ready to go named "libreqos", and a user with access to that
database.
Make sure you have the sqlx tool installed on the licensing server:
`cargo install sqlx-cli --no-default-features --features rustls,postgres`
You need to create a .env file in this pgdb directory, containing
DATABASE_URL=postgres://license:licensepassword@1.2.3.4/libreqos
Then run `sqlx migrate run` to populate the database with initial
data.