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.
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)
* 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.
* 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.
FIXES#289
Extend TC parser to handle cases that don't have a colon at all.
Use this to parse the `fwmark` field in the Cake stats, which
is probably a TC handle - but since the cake source doesn't
document it, it might be a random number for all we know.
The `fwmark` field isn't actually referenced anywhere in the
program.
* 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.
* 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.
* 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.