From: Herbert Wolverson <herberticus@gmail.com>
Cc: libreqos <libreqos@lists.bufferbloat.net>
Subject: Re: [LibreQoS] Integration system, aka fun with graph theory
Date: Fri, 28 Oct 2022 07:40:15 -0500 [thread overview]
Message-ID: <CA+erpM5m6b4geceAwK2oXJW3RGJOpOm5vzhNPKyC2K=Ac2TtRw@mail.gmail.com> (raw)
In-Reply-To: <CAA_JP8XKOiQLu2ZW2KOSjVEr6_755aSuA_0h4CBkA9RjrOh9Sg@mail.gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 4917 bytes --]
Dave: I love those Gource animations! Game development is my other hobby, I
could easily get lost for weeks tweaking the shaders to make the glow "just
right". :-)
Dan: Discovery would be nice, but I don't think we're ready to look in that
direction yet. I'm trying to build a "common grammar" to make it easier to
express network layout from integrations; that would be another form/layer
of integration and a lot easier to work with once there's a solid
foundation. Preseem does some of this (admittedly over-eagerly; nothing
needs to query SNMP that often!), and the SNMP route is quite remarkably
convoluted. Their support turned on a few "extra" modules to deal with
things like PMP450 clients that change MAC when you put them in bridge mode
vs NAT mode (and report the bridge mode CPE in some places either way),
Elevate CPEs that almost but not quite make sense. Robert's code has the
beginnings of some of this, scanning Mikrotik routers for IPv6 allocations
by MAC (this is also the hardest part for me to test, since I don't have
any v6 to test, currently).
We tend to use UISP as the "source of truth" and treat it like a database
for a ton of external tools (mostly ones we've created).
On Thu, Oct 27, 2022 at 7:27 PM dan <dandenson@gmail.com> wrote:
> we're pretty similar in that we've made UISP a mess. Multiple paths to a
> pop. multiple pops on the network. failover between pops. Lots of
> 'other' devices. handing out /29 etc to customers.
>
> Some sort of discovery would be nice. Ideally though, pulling something
> from SNMP or router APIs etc to build the paths, but having a 'network
> elements' list with each of the links described. ie, backhaul 12 has MACs
> ..01 and ...02 at 300x100 and then build the topology around that from
> discovery.
>
> I've also thought about doing routine trace routes or watching TTLs or
> something like that to get some indication that topology has changed and
> then do another discovery and potential tree rebuild.
>
> On Thu, Oct 27, 2022 at 3:48 PM Robert Chacón via LibreQoS <
> libreqos@lists.bufferbloat.net> wrote:
>
>> This is awesome! Way to go here. Thank you for contributing this.
>> Being able to map out these complex integrations will help ISPs a ton,
>> and I really like that it is sharing common features between the Splynx and
>> UISP integrations.
>>
>> Thanks,
>> Robert
>>
>> On Thu, Oct 27, 2022 at 3:33 PM Herbert Wolverson via LibreQoS <
>> libreqos@lists.bufferbloat.net> wrote:
>>
>>> So I've been doing some work on getting UISP integration (and
>>> integrations in general) to work a bit more smoothly.
>>>
>>> I started by implementing a graph structure that mirrors both the
>>> networks and sites system. It's not done yet, but the basics are coming
>>> together nicely. You can see my progress so far at:
>>> https://github.com/thebracket/LibreQoS/tree/integration-common-graph
>>>
>>> Our UISP instance is a *great* testcase for torturing the system. I
>>> even found a case of UISP somehow auto-generating a circular portion of the
>>> tree. We have:
>>>
>>> - Non Ubiquiti devices as "other devices"
>>> - Sections that need shaping by subnet (e.g. "all of 192.168.1.0/24
>>> shared 100 mbit")
>>> - Bridge mode devices using Option 82 to always allocate the same
>>> IP, with a "service IP" entry
>>> - Various bits of infrastructure mapped
>>> - Sites that go to client sites, which go to other client sites
>>>
>>> In other words, over the years we've unleashed a bit of a monster.
>>> Cleaning it up is a useful talk, but I wanted the integration to be able to
>>> handle pathological cases like us!
>>>
>>> So I fed our network into the current graph generator, and used graphviz
>>> to spit out a directed graph:
>>> [image: image.png]
>>> That doesn't include client sites! Legend:
>>>
>>>
>>> - Green = the root site.
>>> - Red = a site
>>> - Blue = an access point
>>> - Magenta = a client site that has children
>>>
>>> So the part in "common" is designed heavily to reduce repetition. When
>>> it's done, you should be able to feed in sites, APs, clients, devices, etc.
>>> in a pretty flexible manner. Given how much code is shared between the UISP
>>> and Splynx integration code, I'm pretty sure both will be cut to a tiny
>>> fraction of the total code. :-)
>>>
>>> I can't post the full tree, it's full of client names.
>>> _______________________________________________
>>> LibreQoS mailing list
>>> LibreQoS@lists.bufferbloat.net
>>> https://lists.bufferbloat.net/listinfo/libreqos
>>>
>>
>>
>> --
>> Robert Chacón
>> CEO | JackRabbit Wireless LLC <http://jackrabbitwireless.com>
>> _______________________________________________
>> LibreQoS mailing list
>> LibreQoS@lists.bufferbloat.net
>> https://lists.bufferbloat.net/listinfo/libreqos
>>
>
[-- Attachment #1.2: Type: text/html, Size: 6664 bytes --]
[-- Attachment #2: image.png --]
[-- Type: image/png, Size: 573568 bytes --]
next prev parent reply other threads:[~2022-10-28 12:40 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-27 21:33 Herbert Wolverson
2022-10-27 21:41 ` Dave Taht
2022-10-27 21:44 ` Dave Taht
2022-10-27 21:48 ` Robert Chacón
2022-10-28 0:27 ` dan
2022-10-28 12:40 ` Herbert Wolverson [this message]
2022-10-28 17:43 ` Herbert Wolverson
2022-10-28 19:05 ` Robert Chacón
2022-10-28 19:54 ` Herbert Wolverson
2022-10-28 21:15 ` Robert Chacón
2022-10-29 15:57 ` Herbert Wolverson
2022-10-29 19:05 ` Robert Chacón
2022-10-29 19:43 ` Dave Taht
2022-10-30 1:45 ` Herbert Wolverson
2022-10-31 0:15 ` Dave Taht
2022-10-31 1:15 ` Robert Chacón
2022-10-31 1:26 ` Herbert Wolverson
2022-10-31 1:36 ` Herbert Wolverson
2022-10-31 1:46 ` Herbert Wolverson
2022-10-31 2:21 ` Dave Taht
2022-10-31 3:26 ` Robert Chacón
2022-10-31 14:47 ` [LibreQoS] metaverse-ready metrics Dave Taht
2022-10-31 14:50 ` Dave Taht
2022-10-31 15:56 ` [LibreQoS] Integration system, aka fun with graph theory dan
2022-10-31 21:19 ` Herbert Wolverson
2022-10-31 21:54 ` Dave Taht
2022-10-31 21:57 ` Robert Chacón
2022-10-31 23:31 ` dan
2022-10-31 23:45 ` Dave Taht
2022-11-01 3:31 ` Dave Taht
2022-11-01 13:38 ` Herbert Wolverson
2022-10-29 19:18 ` Dave Taht
2022-10-30 1:10 ` Herbert Wolverson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://lists.bufferbloat.net/postorius/lists/libreqos.lists.bufferbloat.net/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CA+erpM5m6b4geceAwK2oXJW3RGJOpOm5vzhNPKyC2K=Ac2TtRw@mail.gmail.com' \
--to=herberticus@gmail.com \
--cc=libreqos@lists.bufferbloat.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox