Many ISPs need the kinds of quality shaping cake can do
 help / color / mirror / Atom feed
From: Herbert Wolverson <herberticus@gmail.com>
To: libreqos <libreqos@lists.bufferbloat.net>
Subject: [LibreQoS] Integration system, aka fun with graph theory
Date: Thu, 27 Oct 2022 16:33:28 -0500	[thread overview]
Message-ID: <CA+erpM7kjCKZm8K3WWC-pBDCgEFohEj22W49rn=jo9qA1sx72g@mail.gmail.com> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 1738 bytes --]

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.

[-- Attachment #1.2: Type: text/html, Size: 2233 bytes --]

[-- Attachment #2: image.png --]
[-- Type: image/png, Size: 573568 bytes --]

             reply	other threads:[~2022-10-27 21:33 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-27 21:33 Herbert Wolverson [this message]
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
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+erpM7kjCKZm8K3WWC-pBDCgEFohEj22W49rn=jo9qA1sx72g@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