[Anima] Intent "beginning to end"

"Michael Behringer (mbehring)" <mbehring@cisco.com> Wed, 20 April 2016 12:49 UTC

Return-Path: <mbehring@cisco.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 971C912D0D8 for <anima@ietfa.amsl.com>; Wed, 20 Apr 2016 05:49:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -15.517
X-Spam-Level:
X-Spam-Status: No, score=-15.517 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.996, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.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 lpPMKicV2Tgv for <anima@ietfa.amsl.com>; Wed, 20 Apr 2016 05:49:30 -0700 (PDT)
Received: from alln-iport-8.cisco.com (alln-iport-8.cisco.com [173.37.142.95]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 45AF212DCE5 for <anima@ietf.org>; Wed, 20 Apr 2016 05:49:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=4414; q=dns/txt; s=iport; t=1461156563; x=1462366163; h=from:to:subject:date:message-id: content-transfer-encoding:mime-version; bh=BKR0FJEbwN2JKEdwmH8esyC5f+zNOQSP9Di9gWUTcgQ=; b=aAUXGNVDwL6PEfxWvtpR17qEV7vuIR0ksnFJzL98WRRKuHCJkI41P81q PtNFlmxfPeoMrCVxUISjNd4vwW1H4Afgw/PrVJUeUo1lisTvfwD9b8foj MIPbHgTwTIhUHClRaOJo2tOyqArDYOslbZrO2xbu3j2NJMov9j1Limz2L E=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0BGAgDeeRdX/4UNJK1egziBVrllAQ2BcYdPOBQBAQEBAQEBZSeESCcTUQE1CUImAQQbiCGdD6EbAQEIAgEdhiGJSYUXBZgPAY4MgW2ETYhdjywBHgEBQoNoiDV+AQEB
X-IronPort-AV: E=Sophos;i="5.24,509,1454976000"; d="scan'208";a="263656770"
Received: from alln-core-11.cisco.com ([173.36.13.133]) by alln-iport-8.cisco.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 20 Apr 2016 12:49:22 +0000
Received: from XCH-ALN-008.cisco.com (xch-aln-008.cisco.com [173.36.7.18]) by alln-core-11.cisco.com (8.14.5/8.14.5) with ESMTP id u3KCnMw3019042 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL) for <anima@ietf.org>; Wed, 20 Apr 2016 12:49:22 GMT
Received: from xch-rcd-006.cisco.com (173.37.102.16) by XCH-ALN-008.cisco.com (173.36.7.18) with Microsoft SMTP Server (TLS) id 15.0.1104.5; Wed, 20 Apr 2016 07:49:20 -0500
Received: from xch-rcd-006.cisco.com ([173.37.102.16]) by XCH-RCD-006.cisco.com ([173.37.102.16]) with mapi id 15.00.1104.009; Wed, 20 Apr 2016 07:49:20 -0500
From: "Michael Behringer (mbehring)" <mbehring@cisco.com>
To: Anima WG <anima@ietf.org>
Thread-Topic: Intent "beginning to end"
Thread-Index: AdGbAEYKborLOcNBR7qt3zbaOPev0g==
Date: Wed, 20 Apr 2016 12:49:20 +0000
Message-ID: <74b2701c9b10416cbd2c8043e33596f1@XCH-RCD-006.cisco.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [10.55.238.131]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/anima/rk2CgO62nmXFuKOBX-Gtb5v0p5E>
Subject: [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: Wed, 20 Apr 2016 12:49:31 -0000

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