Herbert Wolverson
fbb3960b50
Warning fix
2024-03-14 08:52:36 -05:00
Herbert Wolverson
eab9df4874
Missing file from previous commit
2024-03-13 14:56:59 -05:00
Herbert Wolverson
fb91e8313a
Very silly commit - adds a /showoff page to the node manager firing particles from all endpoints at my ISP in Missouri. Will turn into something useful in the future.
2024-03-13 14:45:53 -05:00
Herbert Wolverson
a63ff0a6f1
Rename all flowbee "retries" to "tcp_retransmits" in code, and
...
"retransmits" in visible HTML.
2024-03-13 08:20:36 -05:00
Herbert Wolverson
fae96280b9
Actually limit the top 10 endpoints to being 10
2024-03-12 16:41:57 -05:00
Herbert Wolverson
c16f06b0ab
Sort countries by download bytes not upload
2024-03-12 15:47:29 -05:00
Herbert Wolverson
66a19c04a4
First example of an actual summary report - we can group flow endpoints in a 5-minute report.
2024-03-12 15:19:07 -05:00
Herbert Wolverson
1fb5838ebe
Remove a test call that was spamming the logs.
2024-03-12 14:46:47 -05:00
Herbert Wolverson
e46aafe5ae
Silly performance: making 12k mutex locks when I need one was really dumb.
2024-03-12 14:20:35 -05:00
Herbert Wolverson
5a3f90412d
Working geocode system, albeit not as useful as I hoped.
2024-03-12 14:02:36 -05:00
Herbert Wolverson
55f24cf71b
Revert previous bad idea
2024-03-12 11:38:19 -05:00
Herbert Wolverson
07239b3d24
That should avoid some flow duplication that was hitting too hard.
2024-03-12 11:30:13 -05:00
Herbert Wolverson
3ca7ca8a0d
Lower threshold for capturing RTT by rate
2024-03-12 10:52:41 -05:00
Herbert Wolverson
e20d6d39b0
Another try at a flow system that cleans up.
2024-03-12 10:29:08 -05:00
Herbert Wolverson
3d9b52e627
More cleanup and logic improvements based on observation. In particular, flow cleanup is more accurate now, and we're a bit more aggressive in what RTT data we accept.
2024-03-12 08:57:29 -05:00
Herbert Wolverson
213a27498e
Improve the flow cleanup logic.
2024-03-12 08:21:33 -05:00
Herbert Wolverson
79247e07f0
Fix a really silly mistake. I did NOT mean to always store the worst RTT we've ever seen.
2024-03-11 15:26:23 -05:00
Herbert Wolverson
d93726e538
Only report RTT for flows exceeding 4kbps - to eliminate noise from basically idle connections.
2024-03-11 15:03:47 -05:00
Herbert Wolverson
71fd1d558f
Probable fix for building this on earlier kernel versions.
2024-03-11 14:04:41 -05:00
Herbert Wolverson
445cdcda81
Remove most of the Heimdall mode 1 path, cleaning up the execution path now that we have global flow tracking.
2024-03-11 13:27:42 -05:00
Herbert Wolverson
91a48bc275
Use the new flows system rather than Heimdall to display the circuits flows tab. Not complete yet - the backend is all there still. Also needs some tweaking on the hyperfocus for packet capture mode.
2024-03-11 12:24:18 -05:00
Herbert Wolverson
eb281b3edd
Revert from a dashmap to a regular mutex for the flow container. Performance improved, and flow removal is less troublesome.
2024-03-11 11:20:27 -05:00
Herbert Wolverson
82ecd5eb17
Eliminate all time fetching calls except one, and store the result in the dissector. Minor speed improvement.
2024-03-10 21:11:55 -05:00
Herbert Wolverson
4a8be30c09
First update of the 'recently finished flows' mechanism for tracking the last 5 minutes of data.
2024-03-09 10:29:49 -06:00
Herbert Wolverson
79fa1d42a8
Revert per-ms timings for now.
2024-03-08 14:53:49 -06:00
Herbert Wolverson
1fb151aa1b
Minimal protocol analysis beginnings.
2024-03-08 14:52:02 -06:00
Herbert Wolverson
5202f447dc
Begin adding a little UI
2024-03-08 14:03:29 -06:00
Herbert Wolverson
6b384b2a5f
Include ASN assessment in flows data.
2024-03-08 13:15:49 -06:00
Herbert Wolverson
b1cd8e5ed4
Setup initial stage of ASN analysis - downloading and loading the table, periodic upgrades.
2024-03-08 12:11:37 -06:00
Herbert Wolverson
9c7a9849ad
Replace mutex locked vector with a dashmap for flow data, to ease sharing and update rather than replace cycle.
2024-03-08 09:32:15 -06:00
Herbert Wolverson
b7d43567ff
Reworked the NetFlow code to batch packets into single submissions of up to 30 packets at a time.
2024-03-07 12:51:08 -06:00
Herbert Wolverson
04b0cd4246
Fix warning
2024-03-07 11:38:12 -06:00
Herbert Wolverson
33c1efdd2c
IPv6 encoding matches the same pattern, needs testing.
2024-03-07 11:27:33 -06:00
Herbert Wolverson
34a2ec7b88
Refactor netflow v9 into readable code, and the IPv4 version is at least somewhat working now.
2024-03-07 11:19:02 -06:00
Herbert Wolverson
10c56f9353
This time with a theoretically valid header...
2024-03-05 14:54:57 -06:00
Herbert Wolverson
b649f7004e
Netflow v9. Probably doesn't work yet, committing before I change PC.
2024-03-05 14:05:18 -06:00
Herbert Wolverson
a5bef2851a
Refactor to clean code up.
2024-03-05 11:02:47 -06:00
Herbert Wolverson
f0ddbe62f8
Netflow V5 is largely working. Still a few kinks to work out, but the exporter sends them out - and they are received correctly by my test ehnt setup.
2024-03-05 09:31:49 -06:00
Herbert Wolverson
28e861aeee
First attempt at adding NetFlow v5 support.
2024-03-05 08:44:57 -06:00
Herbert Wolverson
13f2fabe4c
Merge branch 'develop' into per_flow
2024-03-02 09:16:08 -06:00
Herbert Wolverson
d741a24ed2
Merge branch 'circuit_weights' into develop
2024-03-01 14:28:41 -06:00
Herbert Wolverson
b9d2be426c
Add a safety feature that if a site isn't found, auto-allocate its bin.
2024-03-01 14:28:36 -06:00
Herbert Wolverson
cdadbb2c1a
Undoes last commit. This is stable.
2024-03-01 14:28:36 -06:00
Herbert Wolverson
a1314cccbf
Add support for virtual nodes by accident, finishing up stage 2 that allows us to skip layers in the tree.
2024-03-01 14:28:36 -06:00
Herbert Wolverson
1ac7a44355
Stage 1 of the revamp. Instead of modifying traverseNetwork directly, builds a layer per CPU in the network and then uses the previous code.
2024-03-01 14:28:36 -06:00
Herbert Wolverson
7836dbc3bb
Add a safety feature that if a site isn't found, auto-allocate its bin.
2024-03-01 14:17:59 -06:00
Herbert Wolverson
e9530dff54
Undoes last commit. This is stable.
2024-03-01 13:59:34 -06:00
Herbert Wolverson
728b0a9153
Add support for virtual nodes by accident, finishing up stage 2 that allows us to skip layers in the tree.
2024-03-01 13:50:39 -06:00
Herbert Wolverson
008236796c
Stage 1 of the revamp. Instead of modifying traverseNetwork directly, builds a layer per CPU in the network and then uses the previous code.
2024-03-01 13:36:44 -06:00
Herbert Wolverson
fcf07db112
On flat networks, read calculated LTS (or not) weights and apply them to the binpacking circuit weights if found. This makes binpacking more dynamic for flat networks, taking into account usual usage patterns.
2024-03-01 12:12:32 -06:00
Herbert Wolverson
64fc075066
First try at binpacking the top-level shaper nodes.
2024-03-01 11:17:48 -06:00
Herbert Wolverson
0efa269816
Weight calculation for tree nodes.
2024-03-01 10:24:24 -06:00
Herbert Wolverson
ff0b397395
Dedupe the RTT estimation code.
2024-02-29 12:26:31 -06:00
Herbert Wolverson
0173798981
WIP - Fix my botch at deduping the flow key code.
2024-02-29 12:16:45 -06:00
Herbert Wolverson
28ebecc44d
Forgot to comment out a debug line.
2024-02-29 11:53:10 -06:00
Herbert Wolverson
2be8ce4aa9
Add wraparound logic to handle ACK sequence wraparound.
2024-02-29 11:35:25 -06:00
Herbert Wolverson
370b65fa67
Compromise on 10ms sampling time for rate estimation. Giving pretty accurate results on my tests, and not hitting the CPU too hard.
2024-02-29 11:19:35 -06:00
Herbert Wolverson
23f2cfb9d8
Reduce the flow rate estimation frequency from 1 second to 1 ms.
...
This reduces round-error issues and is generally more accurate -
at the expense of slightly higher CPU usage and a "more bouncy"
rate - that is, for a widely variable flow such as Netflix it
jumps around a lot more. I remain unconvinced that 1ms is the
right number - will continue to test.
Thanks again to Simon Sundberg for this suggestion.
2024-02-29 11:05:37 -06:00
Herbert Wolverson
7d6cbd417a
* Remove most code duplication by tracking rate_index and its reciprocal.
...
* Significantly nicer comments.
* I used a ternary operator. Please shoot me.
Thanks to Simon Sundberg for this recommendation.
2024-02-29 10:17:28 -06:00
Herbert Wolverson
8f343b7c3b
More flexible API for 'top N' calculations based on flow buffer.
2024-02-29 09:10:31 -06:00
Herbert Wolverson
0659cda225
Managed to reduce the amount of space required in the XDP metadata buffer to 32 bits.
2024-02-29 08:45:41 -06:00
Herbert Wolverson
9de53853e7
Improve comments on metadata
2024-02-29 08:28:33 -06:00
Herbert Wolverson
f84798885b
Add a stub for listing top flows by current bitrate.
2024-02-28 15:03:03 -06:00
Herbert Wolverson
7516715874
Add a real-time flow counter to the display and API.
2024-02-28 14:44:20 -06:00
Herbert Wolverson
393c3adc2a
* Restore the tc_dissector, I didn't mean to remove that.
...
* Add SKB metadata support for pass-through and eliding the
second LPM check if we can. Checks at run-time to see if
it is possible.
2024-02-28 12:52:04 -06:00
Herbert Wolverson
95b7c9ac5c
No more second stage dissector.
2024-02-28 10:32:02 -06:00
Herbert Wolverson
22d56a71bf
Correct the ordering of src/dst ports in the flow map.
2024-02-28 09:56:59 -06:00
Herbert Wolverson
ff4c070b7d
Improve the JSON transfer data by listing protocol explicitly for flowbee.
2024-02-28 09:51:43 -06:00
Herbert Wolverson
29b0e07867
Massive improvement in RTT tracking accuracy.
2024-02-28 09:29:20 -06:00
Herbert Wolverson
e98a1864ad
Add a new api call - api/flows/dump_all - that lists all recent flows that have been collected. Intended for debugging.
2024-02-27 16:22:22 -06:00
Herbert Wolverson
df2b9dfe32
Integrate the flow data into the moving average system for RTTs, giving a better spread of results.
2024-02-27 14:54:29 -06:00
Herbert Wolverson
f33d22faa0
In progress. The RTT data from the flows system is integrated into the high-level per-IP RTT tracker.
2024-02-27 14:06:13 -06:00
Herbert Wolverson
b7c02d251d
Warning fix
2024-02-27 11:56:36 -06:00
Herbert Wolverson
8fa53782c6
Work in progress. Add endian conversions. Add Rust interface for iterating the flows list. Add a temporary interface that dumps flow data to the console to prove that it works.
2024-02-27 11:53:18 -06:00
Herbert Wolverson
bfc9b8227c
Skeleton for including UDP and ICMP flow data.
2024-02-27 10:38:17 -06:00
Herbert Wolverson
c7df905e24
WIP - cleanup done, TCP is mostly working on the server-side.
2024-02-27 10:30:48 -06:00
Herbert Wolverson
0fd6b29e6c
Considerably cleaned up flow tracking system.
2024-02-26 20:36:37 -06:00
Herbert Wolverson
23487f3328
The flows now include their very own rate estimator, and only count RTT when rate exceeds a threshold - 5mbps right now, which is probably not a good choice.
2024-02-14 14:56:46 -06:00
Herbert Wolverson
1ca595b16c
Hacking away - remove the fin/reset flags because they shouldn't be needed.
2024-02-14 14:40:58 -06:00
Herbert Wolverson
295caaad91
Very early days - kinda/sorta working per-flow work.
2024-02-14 13:51:55 -06:00
Herbert Wolverson
088eed555a
Correct URL in device_weights.rs
2024-02-08 13:21:56 -06:00
Herbert Wolverson
05d2a398a3
Add a device_weights() call to the Python API
...
Adds the ability to call device_weights() from liblqos_python.
This returns a set of objects containing circuit_id and weight.
1. The weights are loaded from ShapedDevices.csv using HALF the
maximum download mbps.
2. If LTS is enabled, a REST call is made to an LTS API located at
https:/stats.libreqos.io/api/device_weights and the results
merged in (overwiting existing entries).
3. The merged weights are returned as a Python array of classes.
Example Python code:
```python
from liblqos_python import get_weights;
weights = get_weights();
for w in weights:
print(w.circuit_id + " : " + str(w.weight));
```
2024-02-08 12:01:12 -06:00
Herbert Wolverson
d412851560
WIP
2024-02-08 08:32:58 -06:00
Herbert "TheBracket
206ba2641f
Merge pull request #459 from LibreQoE/unifig
...
Unified Configuration System
2024-02-07 12:55:32 -06:00
Herbert Wolverson
7180dd7950
BUGFIX: We weren't correctly honouring requests to use a Linux bridge. This patch fixes it.
2024-02-05 11:33:32 -06:00
Herbert Wolverson
f7c9e82173
Just starting - display some packet info
2024-02-05 11:28:31 -06:00
Herbert Wolverson
3ab165a591
Re-add InfluxDB Support to the unified configuration.
2024-02-04 21:29:02 -06:00
Herbert Wolverson
1ee3543eb1
Add documentation updates for the unified config
2024-02-04 20:55:31 -06:00
Herbert Wolverson
699e265850
Add some small documentation for adding config items.
2024-01-27 10:12:57 -06:00
Herbert Wolverson
e0e81ed715
Finish porting the Sonar integration over
2024-01-27 10:06:46 -06:00
Herbert Wolverson
8a812fe190
Update the parts of the Sonar configuration that are ported. Still have to figure out some types.
2024-01-27 09:46:46 -06:00
Herbert Wolverson
9c2747de37
Update the scheduler to use the latest config system
2024-01-27 09:42:11 -06:00
Herbert Wolverson
ed5cbbc29c
Add the beginnings of the Sonar integration into the config system. Add defaults for every Python field to reduce the chances of getting a partial config.
2024-01-27 09:30:54 -06:00
Herbert Wolverson
a24c51065f
Fix on-a-stick typo messing up vlans
2024-01-26 16:36:36 -06:00
Herbert Wolverson
d851161670
General warning and documentation pass.
2024-01-26 16:33:35 -06:00
Herbert Wolverson
50bc071db1
Fix issue with queueRefreshInterval being optional but not treated as such, and breaking things.
2024-01-26 16:33:26 -06:00
Herbert Wolverson
84f7562d54
Add line to example file to complete on-a-stick outline.
2024-01-26 16:08:29 -06:00
Herbert Wolverson
b1b01b89a6
Update cargo packages to latest releases, update rocket and sysinfo to newer syntaxes.
2024-01-26 12:50:30 -06:00
Herbert Wolverson
8cd8b7d404
Update example.toml to include the powercode required fields
2024-01-26 11:49:24 -06:00
Herbert Wolverson
3769bc3d84
Merge branch 'main' into unifig
2024-01-26 11:42:19 -06:00