Hi Brian and Anima Folks,
Thanks for these interesting questions around coordination topic.
Before responding directly to Brian questions, I would suggest we keep in mind
a preliminary question:
Do we intend inside Anima to design coordination solutions that achieve
coordination in between
1 - a pre known set of (function, algorithm) pairs,
2 - any sets of (function, algorithm) pairs, that could be installed on
the network.
I use here the wording (function, algorithm) pair as I consider the autonomic
function along with its implemented ASA piece of code form such a pair. Exemple
of what I mean: e.g. function: load balancing inside an OSPF area ; algorithm:
re-inforcement learning based on links load ratios and modifying the metric of
links.
Dealing with the pros and cons of these approaches:
- Coordination type 1 solutions offer a specific (though tailored)
solution to a given problem (coordinating a given set of ASAs a priori known)
- Coordination type 2 solutions offer a generic (though not tailored)
solution to a wide range of problems (coordinating ASAs which are present in
the Autonomous network not precluding which ASAs they are).
Of course the specific solution is likely to converge faster on the problem it
is designed for but will not adapt to additional Autonomic functions.
[Extra comment: For coordination type 1 solution, I would even favor to embed
the coordination code directly inside the concerned ASA as those are a priori
known, this is a joint design, both the ASA and their coordination. Put simply
the feed-back loops being known, coordinating them is easy.*]
Moving to consensus-forming algorithm, it would be absolutely nice to have
them abroad, and the scope of the draft is quite open to those. This is more or
less simple to achieve depending whether we consider Coordination of type 1 or
Coordination of type 2. I am not versed that much in such algorithms, but the
case in which I have encountered those were addressing a specific problem, so I
cannot imagine whether making them generic is feasible and which are the meta
info they require on the functions to coordinate in order to drive them towards
a consensus. It would be interesting to know more...
The question of having a master is something that does not sound pretty
autonomic, once again I think this also looks quite differently depending of
the context of in which this master is emerging: coordination can either be
delegated to ASAs or achieved by a dedicated coordination function.
Coordination is required when we have a set (a herd) of ASAs instances which
are polling the network and enforcing actions onto the network, each pursuing
its own optimization goal.
- If coordination is delegated to ASAs and a "selected" instance will have the
power to lead the herd, we will have to convince the network operators that
this leader will not overlook the others ASAs optimization goals.
- If we provide a "kind of third-party" Coordination function which we ask the
network operator to entrust with the ability to coordinate this herd of ASAs,
this one having the only objective of getting the best of the others, is easier
to trust.
In draft-ciavaglia-anima-coordination we favor a coordination that is generic
and then external to ASAs**, in which case, the coordination itself may or may
not be based on a master, but it's in any case clearly a third-party
coordination. Then in a dedicated entity but not an ASA as a piece of an
autonomic loop polling the network and enforcing actions onto the network, it
is more a function enforcing settings onto the ASA instances.
Finally, I would clarify a point raised by Brian concerning
draft-ciavaglia-anima-coordination, though we could believe the coord
algorithms aim at avoiding simultaneous actions (and then avoiding collision)
by competing ASAs, they really aim at avoiding that the control loops either
annihilate each other or continuously diverge or continuously move back and
forth.
Regards,
Pierre
* That is also the reason why I consider that there is no need to have external
coordination between instances of a given ASA, I would expect the ASA designers
to have made their job properly and provide the appropriate mechanism to
coordinate the a priori known interacting instances. (There the feed-back loops
are known a priori)
** To be totally honest, there are some expected APIs in the ASA to support the
coordination (e.g. allowing the coordination function to control the pace of
the execution of an ASA control-loop)
> -----Message d'origine-----
> De : Anima [mailto:[email protected]] De la part de Brian E Carpenter
> Envoyé : lundi 13 juin 2016 00:44
> À : Anima WG
> Objet : [Anima] ASA coordination and consensus
>
> Hi,
>
> I was looking at draft-ciavaglia-anima-coordination, and noticed that
> although it mentions several possible algorithms for coordination, they are
> mainly aimed at avoiding simultaneous actions by competing ASAs.
>
> Is there also scope for applying explicit consensus-forming algorithms as
> well?
> There is quite a large literature on consensus algorithms, mainly starting
> with Paxos. I'm not saying that any of that is directly applicable to Anima,
> but it seems like a closely related problem space.
>
> What I did notice is that all consensus algorithms seem to assume that at any
> one moment, there is a designated "master" that is in effect the arbitrator.
> It would be nice to avoid that, if possible. It isn't clear to me whether
> draft-ciavaglia-anima-coordination assumes that the actual coordination
> function runs in a specific master.
>
> Regards
> Brian
>
> _______________________________________________
> Anima mailing list
> [email protected]
> https://www.ietf.org/mailman/listinfo/anima
_______________________________________________
Anima mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/anima