Commit Graph

26 Commits

Author SHA1 Message Date
Herbert Wolverson
d14526e0a5 ISSUE #183 - Remove the redundant "dashboard" link from all pages,
since the logo already links to the dashboard.
2023-03-20 16:07:08 +00:00
Herbert Wolverson
798e65b107 Properly redact funnel entry names on the circuit_queue page. 2023-03-08 22:23:18 +00:00
Herbert Wolverson
6575517040 Squish JSON into MsgPack for most common queries, resulting in a big reduction in bandwidth usage. 2023-03-08 21:08:38 +00:00
Herbert Wolverson
67cc8d8e99 Large batch of improvements:
* The JavaScript RingBuffer structure updated correctly.
* Replaced the funnel graph with text - easier to read.
* Discovered that the current "parking_lot" could become unstable
  under very heavy load, and only with "fat" LTO. Since it's
  no longer recommended (recent change), removed it.
* Replaced the "lazy_static" macro suite with the newly recommended
  "once_cell" system. Less code.
* Full source format.
* Update some dependency versions.
2023-03-07 21:37:23 +00:00
Herbert Wolverson
9fa1318350 Lots of polish. Funnel chart on the front page, rename menu item to tree, move login to the right section, breadcrumbs in the tree. 2023-03-07 15:41:15 +00:00
Dave Taht
6671eb7c64 Updated copyrights to 2022-2023
Someday I hope something other than my amazing sed skills will be
of use in refactoring this project.
2023-02-25 15:46:32 -08:00
Herbert Wolverson
d688522c13 Hide UI elements for features that aren't ready yet. 2023-02-03 15:51:59 +00:00
Dave Taht
75950be5fc Add Bandwidth test to the circuit_queue html page 2023-01-21 21:08:36 +00:00
Dave Taht
0a0248a534 Modern javascript supports the defer option
Move the javascript at the bottom of the file to the top.

Also it seems a matter of luck that vendor/bla worked when
/vendor/bla was needed.
2023-01-17 16:55:07 -08:00
Herbert Wolverson
6f98e0f088 Lazy queue tracking
Instead of polling every TC queue, maintain a "watch list" (with
auto expiration). Opening a queue in the GUI adds that queue to
the "watch list".

Only queues in the watch list are polled.
2023-01-17 19:44:53 +00:00
Herbert Wolverson
05bb1ee959 Fix failure to display Cake Tins in web UI
Cake Diff functions now use "checked_sub" to ensure that an overflow
doesn't mess up data.

Web UI includes checks that Cake data is available on each history
tick.
2023-01-16 14:30:48 +00:00
Herbert Wolverson
2906c1b8f0 Ignore 0 band in quantile display. 2023-01-12 16:50:39 +00:00
Herbert Wolverson
858ed06286 Update redaction, it's now in Klingon. 2023-01-12 16:41:52 +00:00
Herbert Wolverson
44171d15ea Support redaction mode. 2023-01-12 16:13:10 +00:00
Herbert Wolverson
8fade0b1b1 Add a CSS file and move a lot of inline styles out of the body. 2023-01-12 14:57:23 +00:00
Herbert Wolverson
80b79684da #148 - Show quantile utilization on queue details. 2023-01-11 20:44:44 +00:00
Herbert Wolverson
165dae030b Adds an authentication system.
* 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>
2023-01-10 14:12:51 +00:00
Herbert Wolverson
0cddf107de Easier to read queue data, now showing graphs for throughput, delays, queue length, etc. 2023-01-10 14:12:50 +00:00
Herbert Wolverson
56f421daed TC Queue Check Frequency and Display
* 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>
2023-01-10 14:12:50 +00:00
Herbert Wolverson
c5e8da8159 Oops - forgot to multiply bytes into bits for consistency. 2023-01-10 14:12:50 +00:00
Herbert Wolverson
0422384b21 Show a few more data items per queue 2023-01-10 14:12:50 +00:00
Herbert Wolverson
dbfee1f079 Less horrible graphing code, ringbuffer properly scrolling.
Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
2023-01-10 14:12:50 +00:00
Herbert Wolverson
e3c7245838 Forgot to invert upload
Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
2023-01-10 14:12:50 +00:00
Herbert Wolverson
d8bffa2137 Initial work on displaying queue data. Very early days.
Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
2023-01-10 14:12:50 +00:00
Herbert Wolverson
97ff2ad288 Work in progress: visual prototype for most of the configuration
system.

Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
2023-01-10 14:12:50 +00:00
Herbert Wolverson
32597813e8 Add Rust source tree to the main repo.
Replaces the previously separate repo, merging the Rust
system into the mainline ready for 1.4.

The Rust system currently provides:

* lqos_bus: type definitions for localhost control bus.
* lqos_config: handler for configuration files.
* lqos_node_manager: local web-based monitor and manager.
* lqos_sys: eBPF program that handles all of the tracking,
  CPU assignment, VLAN redirect, TC queue assignment,
  and RTT tracking. Wrapped in a Rust core, providing
  consistent in-Rust building and mostly-safe wrappers
  to C code.
* lqosd: a daemon designed to run continually while
  LibreQoS is operating. On start, it parses the configuration
  files and sets up interface mapping (the Python code is still
  required to actually build queues). It then assigns the various
  eBPF programs to appropriate interfaces. The eBPF systems are
  removed when the daemon terminates.

  lqosd also provides a "bus", listening to requests for changes
  or information on localhost, providing a control plane for
  the rest of the project.
* lqtop: An example program demonstrating how to use the bus,
  acts like "top", showing current network traffic and mappings.
* xdp_iphash_to_cpu_cmdline: a Rust wrapper providing the same
  services as the cpumap originated tool of the same name. This is
  a "shim" - it will go away once the native Python library is
  ready.
* xdp_pping: also a shim, providing equivalent services to the
  cpumap service of the same name.

A helper shell script "remove_pinned_maps.sh" can be used to
remove all pinned eBPF maps from the system, allowing for eBPF
program upgrades that change persistent map structures without
a reboot.

Signed-off-by: Herbert Wolverson <herberticus@gmail.com>
2023-01-10 14:12:50 +00:00