Commit Graph

162 Commits

Author SHA1 Message Date
Herbert Wolverson
5d5bfcb26d Free trial invite button is a green badge 2023-10-03 20:44:19 +00:00
Herbert Wolverson
05fff66736 First version of collecting mark/drop stats for submission to the long-term-stats system. 2023-09-21 17:53:55 +00:00
Herbert Wolverson
159f7b806f Client-side version check working. 2023-08-30 16:40:07 +00:00
Herbert Wolverson
d8e7a20177 First version of the version checker 2023-08-30 15:40:00 +00:00
Herbert Wolverson
eb0585d275 Unknown devices download in node manager includes bandwidth used and a header line. 2023-07-11 16:52:07 +00:00
Herbert Wolverson
fada0a6e92 Fix displayed plans in Top/Worst N tables
A value was transposed in the IPStats to IPStats transit
conversion. The UI now displays (max download/max upload)
correctly.

Fix an accidental inclusion of a console.log statement
logging needlessly.
2023-04-12 13:29:33 +00:00
Herbert Wolverson
04bc7326ad Add DNS resolution to displayed flow IP addresses 2023-04-12 13:29:33 +00:00
Herbert Wolverson
2c63393356 Adds "client throughput" to the queue tree tab of circuit_queue
Also moves all the circuit graphs to use the same graphing
system as the other graphs on the plot.

FIXES #315
2023-04-12 13:29:33 +00:00
Herbert Wolverson
4ed077c634 Last 5 minutes of throughput data are stored server-side on node_manager
A server-side ringbuffer retains just the last 5 minutes of throughput.
When the dashboard first loads, it collects all 5 minutes of data,
so nothing appears skipped. Subsequent updates query the latest
value in the buffer.

FIXES #317
2023-04-12 13:29:32 +00:00
Herbert Wolverson
da167fb84d Backlog is in bytes 2023-04-12 13:27:49 +00:00
Herbert Wolverson
a34505eca0 Use base delay (which is sparse delay) rather than average delay, and use log y values on the delays chart. 2023-04-12 13:27:48 +00:00
Herbert Wolverson
b8921fb7b3 Add pause button and fast/slow modes to circuit_queue page
FIXES #303

Adds a pause button to freeze a snapshot of the current circuit
queue page.

Adds a "fast mode" and "slow mode" toggle. Slow mode continues
at a 1s update cadence. Fast mode uses animation frame support
to update at a good speed, at the expense of CPU usage.

Stores the preference in local storage, so it will resume the
same mode next time you visit the page.
2023-04-12 13:27:29 +00:00
Herbert Wolverson
ec9028c3b2 Change units on backlog graph to packets. FIXES #304 2023-04-12 13:26:59 +00:00
Herbert Wolverson
83825e0376 Packet analysis page has a lot more options
See ISSUE #302

* Filter by FlowID
* Pagination is a select/drop-down
* Filtering is a select/drop-down
* Graph type is selectable from:
   * Packet size (the previous view)
   * Piano Roll (flows plotted by time)
   * TCP Window (differntiated by flow)
2023-04-12 13:26:13 +00:00
Herbert Wolverson
da0489b638 IP Dump supports flow filtering
Every packet is assigned a "flow id", and the UI allows you to
filter displayed packet data by flow id.
2023-04-12 13:26:10 +00:00
Herbert Wolverson
34e3381af4 Add file missing from previous commit 2023-04-03 15:34:32 +00:00
Herbert Wolverson
16721208e6 Add DNS resolution to displayed flow IP addresses 2023-04-03 15:34:32 +00:00
Herbert Wolverson
9fce5d51de Adds "client throughput" to the queue tree tab of circuit_queue
Also moves all the circuit graphs to use the same graphing
system as the other graphs on the plot.

FIXES #315
2023-04-03 15:34:32 +00:00
Herbert Wolverson
3bc2c16328 Last 5 minutes of throughput data are stored server-side on node_manager
A server-side ringbuffer retains just the last 5 minutes of throughput.
When the dashboard first loads, it collects all 5 minutes of data,
so nothing appears skipped. Subsequent updates query the latest
value in the buffer.

FIXES #317
2023-04-03 15:34:32 +00:00
Herbert Wolverson
1b73c3765c Backlog is in bytes 2023-04-03 15:34:32 +00:00
Herbert Wolverson
3f4ee288ae Use base delay (which is sparse delay) rather than average delay, and use log y values on the delays chart. 2023-04-03 15:34:32 +00:00
Herbert Wolverson
53acf90600 Add pause button and fast/slow modes to circuit_queue page
FIXES #303

Adds a pause button to freeze a snapshot of the current circuit
queue page.

Adds a "fast mode" and "slow mode" toggle. Slow mode continues
at a 1s update cadence. Fast mode uses animation frame support
to update at a good speed, at the expense of CPU usage.

Stores the preference in local storage, so it will resume the
same mode next time you visit the page.
2023-04-03 15:34:32 +00:00
Herbert Wolverson
7321c00234 Change units on backlog graph to packets. FIXES #304 2023-04-03 15:34:32 +00:00
Herbert Wolverson
536d165f9b Fix loss of context when clicking zoom in/out buttons. 2023-04-03 15:34:32 +00:00
Herbert Wolverson
869f97ff3b Packet analysis page has a lot more options
See ISSUE #302

* Filter by FlowID
* Pagination is a select/drop-down
* Filtering is a select/drop-down
* Graph type is selectable from:
   * Packet size (the previous view)
   * Piano Roll (flows plotted by time)
   * TCP Window (differntiated by flow)
2023-04-03 15:34:32 +00:00
Herbert Wolverson
182dbcf8d9 IP Dump supports flow filtering
Every packet is assigned a "flow id", and the UI allows you to
filter displayed packet data by flow id.
2023-04-03 15:34:32 +00:00
Herbert Wolverson
920399c4e5 Add favicon with explicit link rel element to call it. 2023-03-28 21:05:13 +00:00
Herbert Wolverson
e50e03411e Revert WebGL on tins, it doesn't work well on Apple devices. 2023-03-25 14:47:51 +00:00
Herbert "TheBracket
0cf7d5dd0a Heimdall circuit UI speed (#296)
* Circuit queue - lazy rendering by active tab

Only perform network requests for the active tab on the
circuit_queue.html page. Small to moderate performance
improvement, but it greatly reduces the time spent polling.

* Significantly optimize network and rendering performance of the queues funnel display.

* Substantially improve performance on the flows display by using msgpack with a dictionary.

* Remove some commented code

* Fetch circuit info via efficient msgpack

* Use MsgPack for circuit throughput

* Get rid of the monstrosity that was copying queue data over the bus in a raw JSON string, hideously wasteful. Instead, we now have a 'transit' series of objects in the bus definition for tight encoding. This also cleaned up some node manager code. It's mostly useful for the next stage, which will start to reduce the amount of data we are transmitting.

* A lot of the redundant network transport is culled.

* More unused fields culled.

* Elimate a HUGE amount of garbage collection by allocating and reusing a single object, and cleaning up the JS rendering. Still not good enough.

* Switch to an efficient msgpack transmission format.

* Cleanup handling of 'none' in msgpack

* Fix scale delays to ms

* Commit to send to payne

* Use WebGL for a slight rendering boost.

* Further reduce draw time of circuit page by using redraw commands.

* Finish previous commit

* Use redraw with preallocated/non-GC data for all ringbuffer renders.

* Fix a rare issue with reloading network.json that could cause a stall.

* Optimize RTT graphs with the reload system.
2023-03-25 07:37:04 -07:00
Herbert "TheBracket
cf41b47b77 Issue 288 - 0s showing up as dots, delays unit (#295)
* Hide zero values for throughput, backlog and delays graphs

Relates to ISSUE #288

* New function `array_to_zero` to reduce repetition.
* Transform zero values to `null` in Y value arrays for the
  throughput, backlog and delay graphs on circuit_info.html
* Also change tin labelling to match the "backlog" graph on
  Delays.
* Reduce marker size.

* Scale displayed/graphed queue delays to ms

References ISSUE 288

Scale the delays graph entries, which are apparently in usec, to
ms.
2023-03-23 11:50:19 -07:00
Herbert "TheBracket
25801b6445 Issue 291 capture time (#293)
* Make packet capture time user configurable.

* Add `packet_capture_time` to /etc/lqos.conf as a number (seconds)
* Rework the capture logic to obtain the capture time and wait for
  the specified period.
* Rename some functions that specified ten seconds in the name.

Relates to ISSUE #291

* Remove a dangling dashboard link

* Change libpcap download filename to <capture-circuit_id.pcap>

Relates to ISSUE #291

* Pass the circuit_id to the ip_dump page.
* Include the circuit_id in the downloaded packet capture
  filename.

* Add starting timestamp to capture filename

Adds the starting timestamp (in ns) to the capture filename when
you download a libcap dump. Ending timestamp isn't included; the
starting stamp is almost certainly unique.

Relates to ISSUE #291 and fixes the parts that I intend to
touch.
2023-03-23 11:49:36 -07:00
Herbert "TheBracket
c17d269ad6 Rust licenses (#292)
* Add license specifier to all Cargo.toml files

Explicitly specify `license = "GPL-2.0-only"` in each Cargo.toml
file. The wording is from the SPX guidelines.

* Add shell script to check licenses of Rust projects

rust/check_licenses.sh automatically verifies all dependencies
for accidental usage of GPLv3. Since basically nobody in the
universe uses GPLv3, it tends not to do much.
2023-03-23 11:48:03 -07:00
Herbert Wolverson
4f574cd668 Improved circuit queue graph labelling 2023-03-22 17:55:12 +00:00
Herbert Wolverson
7326163918 Combine axes on the circuit queue front tab. 2023-03-22 17:30:43 +00:00
Herbert Wolverson
7f746d71a1 Start labelling axes 2023-03-22 15:46:09 +00:00
Herbert Wolverson
1daf727374 Consistent naming: 'tree' not 'funnel'. 2023-03-22 15:34:02 +00:00
Herbert Wolverson
b05afdac0c Hyperlink trees from front-page funnel to the appropriate tree page. 2023-03-22 15:03:43 +00:00
Herbert Wolverson
ebb01286ce Correct 'DHCSP' to 'DSCP'. I think I had DHCP on my mind. 2023-03-22 14:39:32 +00:00
Herbert Wolverson
13e65cad70 Fix a bad case of the NaNs. 2023-03-22 14:39:32 +00:00
Herbert Wolverson
98d7bb88e1 The new Heimdall UI which requires explicitly starting capture sessions. 2023-03-22 14:39:32 +00:00
Herbert Wolverson
17100415dd Add libpcap format support and ability to download a snapshot of the last 10 seconds in pcap format for Wireshark (or other tool) analysis. 2023-03-22 14:39:32 +00:00
Herbert Wolverson
8288bb3f9b Extend the capture to include TCP flags, window and ACK data. 2023-03-22 14:39:32 +00:00
Herbert Wolverson
d542bf1660 Abuse error bars to show packet durations on dump view. 2023-03-22 14:39:32 +00:00
Herbert Wolverson
521b383ef7 Oops - packet buttons didn't render. 2023-03-22 14:39:32 +00:00
Herbert Wolverson
d58c1cb459 Slightly more efficient circuit_queues page, and fix the issue with tin data not appearing. 2023-03-22 14:39:32 +00:00
Herbert Wolverson
f6d4542598 Add a packet dump page, and the beginnings of a packet browser at NS resolution. 2023-03-22 14:39:32 +00:00
Herbert Wolverson
7180eb48dc WIP: You can now view the last 10 seconds of flow data in the API. 2023-03-22 14:39:31 +00:00
Herbert Wolverson
7d055d9796 Cleanup ICMP tracking, add documentation to source code.
This should make the Heimdall branch usable.
2023-03-22 14:32:31 +00:00
Herbert Wolverson
d3feb64911 Improve ECN display 2023-03-22 14:32:31 +00:00
Herbert Wolverson
07354b868d Change rendering of marks and drops on circuits. 2023-03-22 14:32:31 +00:00