While json sends everything around as a u64, many of the cake
variables internally and in the protocol, are 16-32 bit. It
seemed a major memory savings to have the types more closely
match the underlying reality, and one small step towards
actually getting these values from the kernel more directly.
In terms of surprise several of those can actually roll over,
which is something we need to look out for in the future.
callback-based setup that elides the need to clone data on the
hot path.
Clean up the throughput data collection into clearly defined
stages, using Rayon where appropriate to speed up iterator-based
tasks.
This removes: 2 memcpy and 1 memmove per circuit, per second.
The previous wording was confusing, making people think that the
configuration entry was referring to the Linux bridge - while it
meant "use the XDP bridge that happens to run in kernel space".
The new wording should be more obvious.
IMPORTANT: run "remove_pinned_maps.sh" before you run the new
version of lqosd. The eBPF map structure has changed.
1) Add a "last_seen" value to the map_traffic eBPF map.
2) Whenever traffic is seen, update "last_seen" to equal the
result of a bpf_ktime_get_boot_ns() call.
3) When retrieving the unknown IP list, perform a syscall to
obtain the time since boot in nanoseconds and subtract
five minutes.
4) Filter out any unknown IPs that exceed the 5 minute window.
This should solve the problem with "unknown IPs" filling up
on start, and gradually accumulating.
1) lqos_config understands writing to a new ispConfig.py file, copying the
previous one and amending to avoid changing any not-covered data.
2) The web UI can adjust the config, upload a new one and it is saved.
Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
* The new Rust utility "webusers" manages /opt/libreqos/webusers.toml.
* You can add/update/remove/list users from that tool.
* The "allow anonymous" option in webusers.toml permits access for
unauthenticated users, but won't let them change anything. This is
for payne demonstrations.
* All web APIs and pages should now be secured, requiring a login.
* The login requires cookies.
Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
* The frequency with which TC queues are polled for statistics is
now controled by `queue_check_period_ms` in `/etc/lqos`.
* Example file updated.
* Configuration display updated.
This is designed to act as a compromise: for detailed analysis, it
can be updated to a low number. For regular running, it can be updated
to 1000 or more.
Signed-off-by: Herbert Wolverson <herberticus@gmail.com>