On Wed, 25 Nov 2015, David Lamparter wrote:

 easily swapped out.  The time needed to discuss the merits of one over
 another is longer than the time to just support both.

Agreed, and anyway, different people will want different transports and storage thingies. So should design to at least allow others to more easily write code map Quagga's state to and from such.

 d1- choosing a method of schema representation
 d2- implementing a chosen schema

For d1, YANG seems to be the current method.  However, it is rather
complex and not that well suited to match an internal representation of
software written in C like Quagga.

Agreed.

While it may be necessary to adapt a lot of the routing code in order to provide a good abstraction to its state, rewriting the internal structure of the routing code should be avoided.

component (which could be written in a more high-level language). That component could either be in-process (using something like Swig

Swig is interesting alright.

implementation choice. That said, it doesn't neccessarily imply much for the actual schema, it just decides how that schema works out in internal operations.

If rewriting the internal structures is to be avoided, then the schema is already decided by the routing code, mostly. Just have to see how much can be described in data (and bloat is a consideration too).

P.S.: I do not currently have the time to engage on this thread since my
priority is on acquiring useful real-world datapoints on this topic (and
I haven't seen that in this thread so far ;).  I can probably do a more
interesting report in a few months.  That said, again, please ping me if
you're writing code.

OpenSwitch has an adapted version of Quagga which retrieves configuration state from and publishes other state to OVSDB:

  https://git.openswitch.net/cgit/openswitch/ops-quagga/

There is a schema, an extended version of the OVSDB format:

  https://git.openswitch.net/cgit/openswitch/ops/tree/schema/vswitch.extschema

The modifications to Quagga are pretty direct and unabstracted.

What I (and/or others in HPE Networking) would like to do is to abstract Quagga's internal state and make it available in a clean, structured way so that plugins can easily be written to support things like the OPS way, or Daniel's relational database, or whatever, in addition to the traditional Quagga things that have to be supported (CLI and its closely associated config files).

If no one else is doing it, I'm fairly sure we're going to start writing that code, but this thing is 'big' and high-impact enough that it needs thrashing out in public first and getting consensus early to have a chance of success / minimise risks, I suspect.

regards,
--
Paul Jakma      p...@jakma.org  @pjakma Key ID: 64A2FF6A
Fortune:
I guess the Little League is even littler than we thought.
                -- D. Cavett

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to