Re: [Anima] ASA management discussions [was snip of] Review of ANIMA GRASP

Brian E Carpenter <brian.e.carpenter@gmail.com> Wed, 13 July 2016 16:17 UTC

Return-Path: <brian.e.carpenter@gmail.com>
X-Original-To: anima@ietfa.amsl.com
Delivered-To: anima@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E0AB212D15E; Wed, 13 Jul 2016 09:17:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KazZbYgULmM8; Wed, 13 Jul 2016 09:17:14 -0700 (PDT)
Received: from mail-wm0-x233.google.com (mail-wm0-x233.google.com [IPv6:2a00:1450:400c:c09::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D23FB12D0DC; Wed, 13 Jul 2016 09:17:13 -0700 (PDT)
Received: by mail-wm0-x233.google.com with SMTP id f65so35552309wmi.0; Wed, 13 Jul 2016 09:17:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:to:references:from:organization:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=qxgN/2buQGL2PvUyKJyrmJFEgoqc2XTd9t/Plmcd9QA=; b=bx7FKIa5pTgbvnpeG5bYZYCED5sLSRzSVcZudLfn9rJPFlQs2RzCcso2m7Bgdv/ZYC 1kowiR/YY8+D0EtphLsD13NML2EUOP3/pKmW9otSUeOCWtW5MBJcfEGIGVcwuOlLHs5M Eju5ngv7vluTqms0nPw1LV6KOPu/hbOgy7r2MlzX4jcDe02st4C2h+InLB5IIRPuIhv9 6WJDWJVKFAHqPPMP1KC3RL3cAU0JvtRwVy6XwPpkjugShW0QTvsbH8fvGLrX3Hxe3pJC 40+oM2nfknR/LMX4amdEsTbSHT4SYUogEEBCIh8+5P8vNucw2BuolSfCYGoPZ5sL1Yn6 KPZQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:from:organization :message-id:date:user-agent:mime-version:in-reply-to :content-transfer-encoding; bh=qxgN/2buQGL2PvUyKJyrmJFEgoqc2XTd9t/Plmcd9QA=; b=OVi7VDotaeOIUmAGdVTOFZ5ciMnedELyLhgY0RP+2uSW3y31hzgG+ckGFvj4ECE6DN Bgn8kwUm5h5vi5ODCfAbdJTg8T30+qKoPbpOez88qAUWj7enDxZ6hmex00gPVanktcep ABYFwzvxb9eo6O6YICsZDCf778V/WryBPvOuLwBAEHSBzn7mZrPpBEnjdmx8CTt/tOyY pRbRnOd+SqlMzPwxU9C5IfDyRlLD69tGoReh1WZ107DEFp58YzU6UvYS/NJx8TMmj9CS Kwq5OZQ95q/Bel0TaxmtNN4jRkstYA6Db5h3hJ8mrzzXh8ZxLM8Cqw4ekOagNY7hDa8P VqyQ==
X-Gm-Message-State: ALyK8tKoogw1j/0KkjJt4AQK5UdmacabbDhcRS668xSxHtB3gsIQMG07mHYW95o3Qlu4Qg==
X-Received: by 10.28.14.75 with SMTP id 72mr27049564wmo.85.1468426632117; Wed, 13 Jul 2016 09:17:12 -0700 (PDT)
Received: from [10.0.1.29] (cpc66883-mort6-2-0-cust696.19-2.cable.virginm.net. [92.233.126.185]) by smtp.gmail.com with ESMTPSA id o142sm37234077wme.20.2016.07.13.09.17.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 13 Jul 2016 09:17:11 -0700 (PDT)
To: "Peloso, Pierre (Nokia - FR)" <pierre.peloso@nokia-bell-labs.com>, "Michael Behringer (mbehring)" <mbehring@cisco.com>, Sheng Jiang <jiangsheng@huawei.com>, "anima@ietf.org" <anima@ietf.org>, "draft-ietf-anima-grasp.all@ietf.org" <draft-ietf-anima-grasp.all@ietf.org>
References: <CCC5C4E24279804E8525F189C60FFABCB0BBFE0F@FR712WXCHMBA12.zeu.alcatel-lucent.com> <e9a065ab-651e-6439-fe3e-ec9a3ff77883@gmail.com> <CCC5C4E24279804E8525F189C60FFABCB0BC2A49@FR712WXCHMBA12.zeu.alcatel-lucent.com>
From: Brian E Carpenter <brian.e.carpenter@gmail.com>
Organization: University of Auckland
Message-ID: <085c2600-04a1-40a4-4df1-6a5e7fc0b0ca@gmail.com>
Date: Thu, 14 Jul 2016 04:17:16 +1200
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0
MIME-Version: 1.0
In-Reply-To: <CCC5C4E24279804E8525F189C60FFABCB0BC2A49@FR712WXCHMBA12.zeu.alcatel-lucent.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/anima/o-ZiGY3TnczRPNPsUAUygYetJp0>
Subject: Re: [Anima] ASA management discussions [was snip of] Review of ANIMA GRASP
X-BeenThere: anima@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Autonomic Networking Integrated Model and Approach <anima.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/anima>, <mailto:anima-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/anima/>
List-Post: <mailto:anima@ietf.org>
List-Help: <mailto:anima-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/anima>, <mailto:anima-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 13 Jul 2016 16:17:17 -0000

Hi,

Comments in line.

On 14/07/2016 00:16, Peloso, Pierre (Nokia - FR) wrote:
> Hi Brian and all,
> 
> Though coming late, I take some of the points discussed there are worth being pushed further.
> By the way, I renamed the discussion thread in ASA management were the main concerns addressed in these snipped points.
> A way to make clear that these points go beyond GRASP design, but concern ANIMA WG as a whole.
> 
> Thanks for your answers....
> 
> Pierre
> 
>> -----Message d'origine-----
>> De : Brian E Carpenter [mailto:brian.e.carpenter@gmail.com]
>> Envoyé : samedi 2 juillet 2016 09:50
>> À : Peloso, Pierre (Nokia - FR); Michael Behringer (mbehring); Sheng Jiang;
>> anima@ietf.org; draft-ietf-anima-grasp.all@ietf.org
>> Objet : Re: [Anima] Review of ANIMA GRASP
>>
>> Pierre,
>>
>> Let me try to answer your points below. I have deleted a lot of text to make the
>> message short enough to read. Also, please note that my main concern for now is to
>> ensure that GRASP does everything we need; many aspects that are specific to ASA
>> design do not affect this.
>> On 02/07/2016 03:50, Peloso, Pierre (Nokia - FR) wrote:
>> ...
>>>> Yes, the reference model should give the general overview, so this
>>>> discussion should to a large extent go there.
>>> Seems fair to me to have some more of these in the reference model.
>>> Inside draft-peloso-anima-autonomic-function, there is text on the role of ASA and
>> their management.
>>> Why not building upon it ?
>>
>> Certainly, but we need a common view and the reference model must not become too long
>> and complex, or nobody will read it. So I still suspect we need a separate document
>> on ASA design.
> 
> I think we reached this point:
>  - having some light additions to the reference model to keep it readable,
>  - having a separate document on ASA design: just need augmenting/modifying the draft we proposed from before IETF 94th.
>  
>> ...
>>>> ... and it MUST be possible. We've just had the workshop on AN in
>>>> Athens, and one big discussion point was the coordination function.
>>>> While we haven't concluded whether this coordination function is
>>>> itself an ASA or part of the infrastructure, we do NOT want to make
>>>> it technically impossible for a coordination function to be an ASA. This is a good
>> example of two ASAs on the same device having to communicate.
>>> At this point 2 comments:
>>>    1 - There may definitely be two different ASAs willing to modify the same device
>> parameter...
>>
>> Yes, but a device parameter is not the same thing as a GRASP objective. I have great
>> difficulty with the thought of two ASAs *in the same device* that are both actively
>> negotiating the same GRASP objective.
> 
> If a device parameter modified by an ASA is not one of the ASA objectives, then what is an objective ? Can you provide example of what you have in mind ?

Perhaps I was not clear. There are two parts to this:

1) An objective is (quoting the GRASP spec)
"  o  Technical Objective (usually abbreviated as Objective): A
      technical objective is a configurable parameter or set of
      parameters of some kind, which occurs in three contexts:
      Discovery, Negotiation and Synchronization.  In the protocol, an
      objective is represented by an identifier and if relevant a value.
      Normally, a given objective will not occur in negotiation and
      synchronization contexts simultaneously."

By definition, an Objective is managed by an ASA, using the synchronization
or negotiation method when it needs to communicate with a peer ASA.
So what would be the meaning of having two ASAs *in the same node*
managing the same Objective?

2) A traditional device parameter might normally be mapped 1:1 into
an Objective, but do we want to make that a rule? Do we want to exclude
cases where an autonomic objective is more abstract than that, so that
the same device parameter is affected by more than one Objective? For
example consider a QoS Objective and a Congestion Objective. They might
both want to change some underlying queueing parameters in a router.
There's a coordination problem within the node, to be solved by the ASAs.

> 
>>
>> If two ASAs modify the same underlying device parameter, that must of course be
>> coordinated at device level. It seems like a quite traditional problem needing a lock
>> and/or a token.
>>
>> If two ASAs in *different* devices negotiate the same GRASP objective that is of
>> course absolutely normal and might not create any coordination issue, depending on
>> the semantics of the objective.
>>
>>>    2 - Michael is dealing here with the role of coordination function with regards
>> to GRASP: During the WS discussions,  there was a sort of soft-agreement that:
>>>            - coordination function can be distributed,
>>
>> Of course (and that's the reason I recently became interested in distributed
>> consensus algorithms).
>>
>>>            - coordination function instances should contain a GRASP
>>> client,
>>
>> What's a GRASP client? We have initiators and responders in GRASP. You can think of
>> the initiator as a client and the responder as a server, but any ASA can be both
>> initiator and responder.
> In my understanding there is in each Autonomic Node a GRASP Engine. From that I derive there is a sort of API the ASA should have to push a message to GRASP and receives the coming ones. So basically, a client is the API for both the initiator and the responder.

There is an API and there is a draft:
https://tools.ietf.org/html/draft-liu-anima-grasp-api

> 
> The point above mentioning that coordination function should contain a GRASP client, was just to mean that coordination function should be capable of initiating and responding to GRASP signaling (hence bind to a GRASP engine). 
> Which may not be clear here is the implicit:
> Coordination function is not an ASA (at least in my opinion).
> Why not? Because an ASA is an agent of an autonomic function. Coordination function is not an autonomic function.
> It is a meta function in charge of insuring coordination between autonomic functions.
> Then why not generalize and state that nevertheless let it be an ASA?
> Because all we've been stressing since the beginning of ANIMA is that ASA have to comply to a life-cycle* and duties (like self-describing). Though coordination function may have a life-cycle and duties, I am sure those are different than the ones.
> That is why I place the generalization 1 level higher: ASA and Coordination function contain a GRASP client. 

That's just terminology; I don't object, but as far as GRASP is concerned
a coordination function looks exactly like an ASA.

>  
> * Btw, I saw you just draw some deployment of ASA, and this deployment is just one of the point we've pointed as being part of the ASA life-cycle.
> 

Yes, certainly.

>>>            - it was not clear yet whether coordination would be completely external
>> to ANI (like ASA sitting on top of ANI), or would have some pieces embedded in ANI.
>>
>> My opinion: the semantics of coordination are very dependent on the individual use
>> case. So I am not sure what generic support we could provide, beyond basic GRASP. If
>> you can specify the sort of interaction required between two coordinators *in the
>> general case* we can then see whether it needs any new GRASP message types.
> 
> If you're not convinced that a generic support to coordinate AF is feasible, I then encourage you to attend the presentations that Laurent will be giving during ANIMA meeting in Berlin. It specifically addresses this point.
> There are some requirements to signaling in this presentation (same as the one already presented at Yokohama and Buneos Aeres): mainly having command type of messages.

A command is an imperative request, so I think can probably be mapped directly
onto a GRASP Request Negotiation message. It's probably a negotiation with a loop
count = 1 since no negotiation is possible, but that depends on the exact semantics
you need. If that doesn't work out, we could add a new GRASP message type,
but since it would presumably need a command/response cycle, I think the
existing request/end messages should work well.

> 
>>
>>> Could we get feed-back from the WG there (whether the hypothesis stated above are
>> acceptable, and whether they may prevent something from working, are incompatible
>> with something).
>>>
>>> A related point is the following naming question:
>>> Shall coordination function instances be categorized as ASA or shall they belong to
>> a different category ?
>>> Of course this different category is expected to be GRASP Clients.
>>
>> Again, "GRASP client" isn't defined. I'll assume "GRASP user".
>>
>>> I personally consider a different naming would ease the understanding, for 2
>> reasons:
>>>   - ASA instances are pieces of an autonomic function, while coordination is a
>> utility which participates in managing autonomic functions.
>>>   - ASA instances duties are different that Coordination instances duties, e.g.
>>>            1. An ASA Instance part of an Autonomic function is meant to self-
>> describe itself for coordination to happen, and should then comply to requirements,
>> while coordination function instances have different requirements.
>>>            2. A coordination function instance may send imperative command to
>> Autonomic Functions (i.e. ASA Instances), while an Autonomic Function is certainly
>> not entitled such permissions over other Autonomic Functions.
>>> During Athens WS, Michael named this category "management blobs", what would be
>> naming that could be agreed on?
>>
>> I can have no opinion about this until you can answer my question above about message
>> types. If we can map the coordination interactions onto the existing GRASP
>> interactions (discover, negotiate, synchronize, flood) then I would suggest to
>> minimize the terminology by calling them CASAs (Coordinating ASAs). If we need new
>> GRASP messages, we can discuss.
> 
> Referring to one of the previous point of the email, coordination function not being an autonomic function but one of the management function of autonomic function, I do not like naming them ASA nor something ASA 

Well, arguing about names is not very interesting, but I would suggest that
this will turn out to be a recursive matter ("Quis custodiet ipsos custodes").

> 
>> When considering this, remember that a GRASP Objective can have any data structure
>> and any semantics that you want in its 'value' field.
>>
>> I am thinking about six ASAs each supporting its own objective:
>> "leg", "tail", "trunk", "ear", "belly", "tusk"*. But they each also synchronize an
>> objective called "coordinate_elephant" which is supported by a CASA.
>> We define the semantics of "coordinate_elephant" so that each ASA obeys the
>> instructions of the CASA.
>>
>> * https://en.wikipedia.org/wiki/Blind_men_and_an_elephant
>>
>> ...
>>>> No, I don't think so. For a long time we'll have networks where not
>>>> all nodes are autonomic. I think it is likely that we have ASAs that
>>>> also "manage" other, non- autonomic nodes. Now, you could argue, that
>>>> is out of scope for GRASP and that's probably true. But we shouldn't forget this
>> model.
>>
>>> From a deployment point of view, there are plenty of different ways of linking an
>> ASA instance with a device instance, the ASA instance can be inside the device OS,
>> but can be hosted on a remote host and interact with the device through OpenFlow,
>> SNMP, CLI ... The constraints may come from the ASA code or from the device
>> capacities, hence I definitely agree with Michael on that.
>>
>> We all agree. The ASA uses the GRASP API for its autonomic interactions, but how it
>> actually manages its target device(s) is completely open.
>>
>>>
>>>>>> “Organizing of synchronization or negotiation content” bullet point
>>>>>> in
>>>>> Section 3.2. I believe this point should be rewritten as a
>>>>> recommendation for ASA. GRASP is a generic platform. Consequently,
>>>>> it is independent from content organizing.
>>>>>
>>>>> Correct. From the work I've done on the reference model and the
>>>>> GRASP API, I think we will need a document all about ASAs and how
>>>>> they are organized.
>>>>
>>>> Agree. This should probably be another section in the reference
>>>> model.  Any volunteer for some text?
>>> Some short text for the reference model is on my work table.
>>
>> As I already said, I made some updates to the reference model on GitHub, but we are
>> not done yet.
>>
>>> A full document about ASA and how there management already exists, the work is not
>> complete, but there is already a bunch of material there: draft-peloso-anima-
>> autonomic-function-01, so maybe not worth starting from scratch a new doc why not
>> building upon it?
>>>
>>> Additionally, this document and the presentations of it made both in Yokohama and
>> Buenos Aeres explicit the needs and the fields required for ASA self-description
>> (e.g. on startup) (see section 6).
>>
>> I haven't looked at that for a while, but again I can see how we can map that to a
>> GRASP objective, for example if the ASA is called "abc" then its manifest could be a
>> synchronization objective called "abc.manifest" or whatever convention we choose.

> I am convinced there is a stronger tie between objectives and manifest fields see below
> [Recopied]
> A still pending question is whether, we should embed the full
> self-description in a single objective, or should we split each
> section in a different objectives as the objective modifiers should be different
> depending whether the part of the self description discloses metrics or parameters.
> [end of copy]

I think we have full liberty to decide this later. In fact that's one of the
reasons that the naming rule for Objectives, and the format of the value field
of an Objective, are both extremely flexible at the level of the GRASP protocol:
we can defer the question until we know the answer.

>>> During Athens WS, there was a soft consensus on using the GRASP discovery message
>> to disclose the ASAs self-description.
>>
>> That would be discover() followed by synchronize(). If you agree with the
>> "abc.manifest" convention we can write the code in Python tomorrow.
>>
> [Where the copy was]
>>
>> Again, that is only a matter of how we choose to define it. I don't see either
>> approach creating a technical diffculty. I think we'd need to play with some real
>> examples to discover the best approach. (And before we go too far, this seems like an
>> area where we definitely need an information model.)
> 
> In order to gain in mutual understanding on this specific aspect, and before working on examples (which is fine), I encourage you to have a deeper look in what is the Instance manifest and the life-cycle we propose (see draft-peloso-anima-autonomic-function-01 section 6 and 7 and Laurent's presentation). These items have not been built out of pure theory, but out of confronting ourselves to many examples and generalizing the exemplified solutions. 

I'm sure of that. As I have said, my concern for now, given the Anima WG charter,
is to ensure that GRASP has all the flexibility needed.

Regards,
    Brian

>  
>>> Could there be some additional feed-back? Should I clarify the question first?
>>
>> A concrete example would be very helpful.
>>
>> I think I caught all your points, Pierre, please tell me if not.
>>
>> Regards
>>     Brian
> 
>