Re: [Anima] Intent "beginning to end"

John Strassner <strazpdj@gmail.com> Thu, 21 April 2016 20:34 UTC

Return-Path: <strazpdj@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 1641F12D13A for <anima@ietfa.amsl.com>; Thu, 21 Apr 2016 13:34:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 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, HTML_MESSAGE=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 7KcZU2T0Cd9P for <anima@ietfa.amsl.com>; Thu, 21 Apr 2016 13:34:50 -0700 (PDT)
Received: from mail-lf0-x234.google.com (mail-lf0-x234.google.com [IPv6:2a00:1450:4010:c07::234]) (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 8928412D4FE for <anima@ietf.org>; Thu, 21 Apr 2016 13:34:49 -0700 (PDT)
Received: by mail-lf0-x234.google.com with SMTP id g184so67801305lfb.3 for <anima@ietf.org>; Thu, 21 Apr 2016 13:34:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=HcYFwJYUx4fKs4mTV3YrNowrV3jcHzIpo+fq3aIm2UU=; b=OHDxMy9wmiwPwy0dPEF6MRC2rNXe2zCGyE1cn3BF0DmaKw5bf3FaflSiTOwdWD4Z8D N/AmGECf+zmCRUMg8I5zICCbooXOMwio5rDQ8GgO6712424XyoNDdGBjYdGNwJjqwkGP rS5hHkhy0q0HIUqPU5hWTvHOt29krYob5k3I82rts2vGNGdPLnj8TrhFBxVCDa5J4MaW bWo4bhyfcRSQWeImgFIRG2gY3IOjM5HZF2giYek8vWCGxsOwVsMIpSFGjnPKcQhmNKyW xFwG+ZCUrnpCOWwB6EVNeyTSQAlsHeaVMw3O9Jxswc8zEWnEDGzWoaRWQlRr8BVukFDp TwiA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=HcYFwJYUx4fKs4mTV3YrNowrV3jcHzIpo+fq3aIm2UU=; b=RZ2VJsujn4FUVEVkIG0oN0t4Qrp2QTChTRDPZ3tn4BhNqZ9yp7JfCLLf4mutTSMcWf hBWMZIjCMFIVrff15nMVb2L+O9//55R9orE3ap20Hea865YrrCX58j8cE14JpLPSuqEK ReRt7GT3FZ/BGkKUeXr7qcm6YjNwcx5vXQjbKe5+7YjQuJBcTEJ6Y4IQJ8l5gts6Y2az BNp+cxmD5MMUyK/w+2IHYFScCSNyVh0ll2VEARphhkT8Ru2B3n8lLYC8XadL4OVHH6lI r+TXJ8QC6HpDdw5T2kXCjhlbwMFJHv3iKRBzCBzlzkIt49PFL2LEUEtC/mHALeNu2Ikh 9g0w==
X-Gm-Message-State: AOPr4FXMKS4FPIitdFWl4GcHPSENoiNmo0VeuTPrMBesd/PAbVEx8WOa6bGsoih/0GgFOU6MWz7DuI9WwUbBLA==
MIME-Version: 1.0
X-Received: by 10.25.142.201 with SMTP id q192mr7239816lfd.70.1461270887686; Thu, 21 Apr 2016 13:34:47 -0700 (PDT)
Received: by 10.25.21.105 with HTTP; Thu, 21 Apr 2016 13:34:47 -0700 (PDT)
In-Reply-To: <74b2701c9b10416cbd2c8043e33596f1@XCH-RCD-006.cisco.com>
References: <74b2701c9b10416cbd2c8043e33596f1@XCH-RCD-006.cisco.com>
Date: Thu, 21 Apr 2016 13:34:47 -0700
Message-ID: <CAJwYUrEVcpc-gTvet3YqaqmjV2Qk_+2ZbVaFPU2ZTprpd_Je9w@mail.gmail.com>
From: John Strassner <strazpdj@gmail.com>
To: "Michael Behringer (mbehring)" <mbehring@cisco.com>, John Strassner <strazpdj@gmail.com>
Content-Type: multipart/alternative; boundary="001a11401dcc2e6c7d053104a4eb"
Archived-At: <http://mailarchive.ietf.org/arch/msg/anima/6C4makD3wDOfj3BkvEuhEZo8bY0>
Cc: Anima WG <anima@ietf.org>
Subject: Re: [Anima] Intent "beginning to end"
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: Thu, 21 Apr 2016 20:34:53 -0000

Hi Michael,

well, now you've done it. :-)
This is an interesting and much needed stake in the ground; please see my
replies inline.

...

> It would help the discussion I think if we formalised the entire flow.

Agreed!

> For example, in the below flow it is clear that parameters you
> exchange as a result of interpreting Intent are not called Intent.
> (I think this was one point we don't have agreement on).

I don't understand the term "parameters", but if you mean information
resulting from the intent interpretation/compilation process, I agree.

Note: I also agree that the exchange of such information is NOT intent.

...

> 1. Business goals: The network owner wants the network to follow
> some business goals.
> (These goals are initially not formalised, in a computer science sense.
>  - these goals are formalised in a language -->

Strongly agree. Since intent is by definition high-level, its primary users
will be people that are not technical network admins (the *CIEs).
Furthermore, another important user is the App Developer, most of which
don't have a clue how to configure a network element. So especially for
the latter, a **declarative** (NOT imperative) language is critical.

However, since intent is abstract by definition, it will need specialized
functions to interpret or compile it, and likely other specialized functions
(I've used a multi-agent approach in the past) to understand intent.
This applies to the rest of my comments below.

...

> 4. Intent Distribution: Intent is flooded to all nodes in a network;
>   Every node has a copy of the original "Intent" file(s), without
modification.
>   Each node re-distributes the original Intent files, without
modification.
>   Therefore, Intent is optional and transitive in nature.
>   - the Intent files must now be interpreted by each node -->

While I am happy for this behavior to be documented, and even defined
as a default alternative, I want other behaviors to be possible.

For example, if intent really is business-oriented, I posit that the average
autonomic node will have NO IDEA what to do with it, or how to interpret
it. Furthermore, why should it? In systems that I have seen and have
built, this is a very specialized task.

I would strongly prefer to see intent received by any node, but then sent
to a set of specific nodes for interpretation or compilation. AFTER that,
flood the results to all nodes. But flooding the results before it is
established what intent is introduces too many variables into the mix.


> 5. Intent splitting (on each node):
>   Intent is split into sections, one for the ANI itself, others for
specific Autonomic Functions
>   ASAs are notified if there is new Intent for them.
>   Some intent sections may not apply to a particular  node
>    Now each component of a node (ANI, all ASAs) know their respective
Intent.

You lost me. What is the purpose of splitting intent? This means that
EVERY autonomic node now must have the ability to interpret or
compile intent (perhaps without fully understanding it) AND must be
a "traffic cop" to send the "intentlets" (sorry, low on coffee) to their
proper destination. This means that each autonomic node either
understands both the topology and the autonomic functions that
each node supports (not likely!) or that there is metadata, or bits
in the intent, or something to say where the destination is.

Remember my earlier analogy with phones. Good luck selling
an "intelligent" phone - the consumer will take higher resolution
cameras, or better codecs, or anything other than something
nebulous!


>  6. Intent Interpretation (on each node, by each function):
>   The ANI as well as all ASAs on a node interpret their respective Intent.
...
See above.
...
>    (NB: This interpretation could also be done centrally, and the
resulting configs distributed;
>    This is of course an option, but for that we don't need ANIMA.
Therefore I suggest for the
>   ANIMA work to focus on interpreting Intent locally on each node)
>   Result: target configlet (not applied yet!!).

Sorry, I disagree. Why do we no longer need ANIMA? For example,
let's say we replace GRASP with a pub-sub message queue (I'm NOT
advocating this - just making an example). We still need ANIMA,
because a pub-sub message queue does not understand how to
facilitate autonomic behavior - it just delivers bits.


> 7. Conflict Resolution with non-autonomic management (on each node):
>   The target configlet resulting from Intent has the lowest prio; any
other management
>   method (CLI, NETCONF, etc) overrides Intent.

This seems very difficult to me.
Case 1: fully autonomic node
How does it understand all of the legacy methods and translate those
to an autonomic equivalent? This is an n^2 problem, and you need a
normalized form so that the node doesn't have to understand the
differences between CLI, private MIBs, etc.

Case 2: fully dumb rock
It won't have a clue what to do with autonomic intent. So again, we
need a translation from the intent to a form that the dumb rock can
understand.

Case 3: node that has a clue about autonomics
Even if we assume that it understands all of the legacy methods,
how does it integrate those methods with intent? We could, for
example, dedicate a set of ASAs to serve as translators.
However, as I've stated in earlier posts, this is a very difficult task.
I contend that we will need both models and ontologies (or some
other form of logic) to do this, which is why I get scared when
all  nodes are assumed to be able to understand intent.


> 8. Conflict Resolution between autonomic components (on each node):
>   Each autonomic function needs to register with a "conflict resolution
function"
>   which parameters it modifies; in case of conflict the conflict
resolution function
>   takes a decision and feeds that back to the autonomic functions. This
may modify
>   the target configlet.

I admire the effort you're putting into this to avoid building a
centralized "God-Box". My problem is not with this step, but with
how we got here. Let's table this.


...

10. Feedback loops to NOC: The NOC needs to know about certain conditions:
 ...
Agreed! We have a draft explaining control loops, but we need to develop
the reference architecture and "day in the life" further to gain better
insight
into how this is done.

regards,
John

On Wed, Apr 20, 2016 at 5:49 AM, Michael Behringer (mbehring) <
mbehring@cisco.com> wrote:

> After the IETF discussions it is clear that we still don't have the same
> model in our head when we're discussing how Intent is handled. Let's see
> whether we can get some naming agreement.
>
> draft-du-anima-an-intent describes some of the content below (e.g.,
> distribution, interpretation), but there is no "beginning to end" flow on
> how Intent "flows" through the network. It would help the discussion I
> think if we formalised the entire flow. For example, in the below flow it
> is clear that parameters you exchange as a result of interpreting Intent
> are not called Intent. (I think this was one point we don't have agreement
> on).
>
> Let me try to write down this "flow", as I see it, as a starting point for
> discussion.
>
> 1. Business goals: The network owner wants the network to follow some
> business goals.
>    (These goals are initially not formalised, in a computer science sense.
> )
>    - these goals are formalised in a language -->
> 2. Intent: is the formalisation of business goals so that computer can
> deal with them.
>    (encoded as a file; or several files)
>    - this file must be "given to the network" -->
> 3. Ingestion: The Intent file(s) get instantiated on an autonomic node
>    On a particular node, an intent file is "ingested".
>    - Now it needs to be distributed -->
> 4. Intent Distribution: Intent is flooded to all nodes in a network;
>    Every node has a copy of the original "Intent" file(s), without
> modification.
>    Each node re-distributes the original Intent files, without
> modification.
>    Therefore, Intent is optional and transitive in nature.
>    - the Intent files must now be interpreted by each node -->
> 5. Intent splitting (on each node):
>    Intent is split into sections, one for the ANI itself, others for
> specific Autonomic Functions
>    ASAs are notified if there is new Intent for them.
>    Some intent sections may not apply to a particular  node
>    Now each component of a node (ANI, all ASAs) know their respective
> Intent.
> 6. Intent Interpretation (on each node, by each function):
>    The ANI as well as all ASAs on a node interpret their respective Intent.
>    It gets translated into a "target configuration", taking into account
> local state.
>    For this translation, it may be necessary for ASAs to communicate with
> ASAs on other nodes,
>    to pass on resources (IP addresses), to negotiate, etc.
>    All such communications may be triggered by Intent, but the
> communications themselves
>    are NOT Intent.
>    (NB: This interpretation could also be done centrally, and the
> resulting configs distributed;
>     This is of course an option, but for that we don't need ANIMA.
> Therefore I suggest for the
>     ANIMA work to focus on interpreting Intent locally on each node)
>    Result: target configlet (not applied yet!!).
> 7. Conflict Resolution with non-autonomic management (on each node):
>    The target configlet resulting from Intent has the lowest prio; any
> other management
>    method (CLI, NETCONF, etc) overrides Intent.
> 8. Conflict Resolution between autonomic components (on each node):
>    Each autonomic function needs to register with a "conflict resolution
> function"
>    which parameters it modifies; in case of conflict the conflict
> resolution function
>    takes a decision and feeds that back to the autonomic functions. This
> may modify
>    the target configlet.
> 9. Applying the target configlet
>    A type of "commit" of the configlet.
> 10. Feedback loops to NOC: The NOC needs to know about certain conditions:
>    Conflicts with non-autonomic management (FYI)
>    Not all conflicts can be resolved automatically. (may require NOC
> actions)
>    Undesirable states (deviations from expected default behaviour) may
> have to be communicated;
>    To some extent, Intent itself can specify which conditions should
> trigger feedback
>    loops to the NOC.
>    Feedback loops may happen at other phases as well (ex: 8)
>
> I'm conscious that there are different views in the team; like I believe
> in point 6 we're not yet aligned. Please take this list just as a basis for
> discussion, nothing more.
>
> When we have consensus, I believe such a flow should be documented in
> draft-du-anima-an-intent in its entirety, to give a full picture.
>
> Feedback?
> Michael
>
> _______________________________________________
> Anima mailing list
> Anima@ietf.org
> https://www.ietf.org/mailman/listinfo/anima
>



-- 
regards,
John