summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8993.txt
blob: 8a36453232067e73dee8617945cc53bc3d0bb968 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
Internet Engineering Task Force (IETF)                 M. Behringer, Ed.
Request for Comments: 8993                                              
Category: Informational                                     B. Carpenter
ISSN: 2070-1721                                        Univ. of Auckland
                                                               T. Eckert
                                                           Futurewei USA
                                                            L. Ciavaglia
                                                                   Nokia
                                                                J. Nobre
                                                                   UFRGS
                                                                May 2021


               A Reference Model for Autonomic Networking

Abstract

   This document describes a reference model for Autonomic Networking
   for managed networks.  It defines the behavior of an autonomic node,
   how the various elements in an autonomic context work together, and
   how autonomic services can use the infrastructure.

Status of This Memo

   This document is not an Internet Standards Track specification; it is
   published for informational purposes.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Not all documents
   approved by the IESG are candidates for any level of Internet
   Standard; see Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   https://www.rfc-editor.org/info/rfc8993.

Copyright Notice

   Copyright (c) 2021 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction
   2.  Network View
   3.  Autonomic Network Element
     3.1.  Architecture
     3.2.  Adjacency Table
     3.3.  State Machine
       3.3.1.  State 1: Factory Default
       3.3.2.  State 2: Enrolled
       3.3.3.  State 3: In ACP
   4.  Autonomic Networking Infrastructure
     4.1.  Naming
     4.2.  Addressing
     4.3.  Discovery
     4.4.  Signaling between Autonomic Nodes
     4.5.  Routing
     4.6.  Autonomic Control Plane
     4.7.  Information Distribution (*)
   5.  Security and Trust Infrastructure
     5.1.  Public Key Infrastructure
     5.2.  Domain Certificate
     5.3.  MASA
     5.4.  Subdomains (*)
     5.5.  Cross-Domain Functionality (*)
   6.  Autonomic Service Agents (ASAs)
     6.1.  General Description of an ASA
     6.2.  ASA Life-Cycle Management
     6.3.  Specific ASAs for the Autonomic Networking Infrastructure
       6.3.1.  Enrollment ASAs
       6.3.2.  ACP ASA
       6.3.3.  Information Distribution ASA (*)
   7.  Management and Programmability
     7.1.  Managing a (Partially) Autonomic Network
     7.2.  Intent (*)
     7.3.  Aggregated Reporting (*)
     7.4.  Feedback Loops to NOC (*)
     7.5.  Control Loops (*)
     7.6.  APIs (*)
     7.7.  Data Model (*)
   8.  Coordination between Autonomic Functions (*)
     8.1.  Coordination Problem (*)
     8.2.  Coordination Functional Block (*)
   9.  Security Considerations
     9.1.  Protection against Outsider Attacks
     9.2.  Risk of Insider Attacks
   10. IANA Considerations
   11. References
     11.1.  Normative References
     11.2.  Informative References
   Acknowledgements
   Contributors
   Authors' Addresses

1.  Introduction

   The document "Autonomic Networking: Definitions and Design Goals"
   [RFC7575] explains the fundamental concepts behind Autonomic
   Networking and defines the relevant terms in this space and a high-
   level reference model.  [RFC7576] provides a gap analysis between
   traditional and autonomic approaches.

   This document defines this reference model with more detail to allow
   for functional and protocol specifications to be developed in an
   architecturally consistent, non-overlapping manner.

   As discussed in [RFC7575], the goal of this work is not to focus
   exclusively on fully autonomic nodes or networks.  In reality, most
   networks will run with some autonomic functions, while the rest of
   the network is traditionally managed.  This reference model allows
   for this hybrid approach.

   For example, it is possible in an existing, non-autonomic network to
   enroll devices in a traditional way to bring up a trust
   infrastructure with certificates.  This trust infrastructure could
   then be used to automatically bring up an Autonomic Control Plane
   (ACP) and run traditional network operations over the secure and
   self-healing ACP.  See [RFC8368] for a description of this use case.

   The scope of this model is therefore limited to networks that are to
   some extent managed by skilled human operators, loosely referred to
   as "professionally managed" networks.  Unmanaged networks raise
   additional security and trust issues that this model does not cover.

   This document describes the first phase of an Autonomic Networking
   solution that is both simple and implementable.  It is expected that
   the experience from this phase will be used in defining updated and
   extended specifications over time.  Some topics are considered
   architecturally in this document but are not yet reflected in the
   implementation specifications.  They are marked with an (*).

2.  Network View

   This section describes the various elements in a network with
   autonomic functions and explains how these entities work together on
   a high level.  Subsequent sections explain the detailed inside view
   for each of the Autonomic Network elements, as well as the network
   functions (or interfaces) between those elements.

   Figure 1 shows the high-level view of an Autonomic Network.  It
   consists of a number of autonomic nodes, which interact directly with
   each other.  Those autonomic nodes provide a common set of
   capabilities across the network, called the "Autonomic Networking
   Infrastructure (ANI)".  The ANI provides functions like naming,
   addressing, negotiation, synchronization, discovery, and messaging.

   Autonomic functions typically span several, possibly all, nodes in
   the network.  The atomic entities of an autonomic function are called
   the "Autonomic Service Agents (ASAs)", which are instantiated on
   nodes.

   +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
   :            :       Autonomic Function 1        :                 :
   : ASA 1      :      ASA 1      :      ASA 1      :          ASA 1  :
   +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
                :                 :                 :
                :   +- - - - - - - - - - - - - - +  :
                :   :   Autonomic Function 2     :  :
                :   :  ASA 2      :      ASA 2   :  :
                :   +- - - - - - - - - - - - - - +  :
                :                 :                 :
   +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
   :                Autonomic Networking Infrastructure               :
   +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
   +--------+   :    +--------+   :    +--------+   :        +--------+
   | Node 1 |--------| Node 2 |--------| Node 3 |----...-----| Node n |
   +--------+   :    +--------+   :    +--------+   :        +--------+

             Figure 1: High-Level View of an Autonomic Network

   In a horizontal view, autonomic functions span across the network, as
   well as the ANI.  In a vertical view, a node always implements the
   ANI, plus it may have one or several ASAs.  ASAs may be standalone or
   use other ASAs in a hierarchical way.

   Therefore, the ANI is the foundation for autonomic functions.

3.  Autonomic Network Element

   This section explains the general architecture of an Autonomic
   Network element (Section 3.1), how it tracks its surrounding
   environment in an adjacency table (Section 3.2), and the state
   machine that defines the behavior of the network element
   (Section 3.3), based on that adjacency table.

3.1.  Architecture

   This section describes an Autonomic Network element and its internal
   architecture.  The reference model explained in the document
   "Autonomic Networking: Definitions and Design Goals" [RFC7575] shows
   the sources of information that an ASA can leverage: self-knowledge,
   network knowledge (through discovery), Intent (see Section 7.2), and
   feedback loops.  There are two levels inside an autonomic node: the
   level of ASAs and the level of the ANI, with the former using the
   services of the latter.  Figure 2 illustrates this concept.

   +------------------------------------------------------------+
   |                                                            |
   | +-----------+        +------------+        +------------+  |
   | | Autonomic |        | Autonomic  |        | Autonomic  |  |
   | | Service   |        | Service    |        | Service    |  |
   | | Agent 1   |        | Agent 2    |        | Agent 3    |  |
   | +-----------+        +------------+        +------------+  |
   |       ^                    ^                     ^         |
   | -  -  | -  - API level -  -| -  -  -  -  -  -  - |-  -  -  |
   |       V                    V                     V         |
   |------------------------------------------------------------|
   | Autonomic Networking Infrastructure                        |
   |    - Data structures (ex: certificates, peer information)  |
   |    - Generalized Autonomic Control Plane (GACP)            |
   |    - Autonomic node addressing and naming                  |
   |    - Discovery, negotiation and synchronization functions  |
   |    - Distribution of Intent and other information          |
   |    - Aggregated reporting and feedback loops               |
   |    - Routing                                               |
   |------------------------------------------------------------|
   |             Basic Operating System Functions               |
   +------------------------------------------------------------+

                    Figure 2: Model of an Autonomic Node

   The ANI (lower part of Figure 2) contains node-specific data
   structures (for example, trust information about itself and its
   peers) as well as a generic set of functions, independent of a
   particular usage.  This infrastructure should be generic and support
   a variety of ASAs (upper part of Figure 2).  It contains addressing
   and naming of autonomic nodes, discovery, negotiation and
   synchronization functions, distribution of information, reporting,
   feedback loops, and routing inside the ACP.

   The Generalized ACP (GACP) is the summary of all interactions of the
   ANI with other nodes and services.  A specific implementation of the
   GACP is referred to here as the ACP and described in [RFC8994].

   The use cases of "Autonomics" (such as self-management, self-
   optimization, etc.) are implemented as ASAs.  They use the services
   and data structures of the underlying ANI, which should be self-
   managing.

   The Basic Operating System Functions (lower part of Figure 2) include
   the normal OS (e.g., the network stack and security functions).

   Full Autonomic Network (AN) nodes have the full ANI, with the full
   functionality described in this document.  At a later stage, the
   ANIMA Working Group may define a scope for constrained nodes with a
   reduced ANI and well-defined minimal functionality.  These are
   currently out of scope.

3.2.  Adjacency Table

   Autonomic Networking is based on direct interactions between devices
   of a domain.  The ACP is normally constructed on a hop-by-hop basis.
   Therefore, many interactions in the ANI are based on the ANI
   adjacency table.  There are interactions that provide input into the
   adjacency table and other interactions that leverage the information
   contained in it.

   The ANI adjacency table contains, at a minimum, information about
   adjacent autonomic nodes: Node-ID, IP address in data plane, IP
   address in ACP, domain, and certificate.  An autonomic node maintains
   this adjacency table up to date.  The adjacency table only contains
   information about other nodes that are capable of Autonomic
   Networking; non-autonomic nodes are normally not tracked here.
   However, the information is tracked independently of the status of
   the peer nodes; specifically, the adjacency table contains
   information about non-enrolled nodes of the same and other domains.
   The adjacency table may contain information about the validity and
   trust level of the adjacent autonomic nodes.

   The adjacency table is fed by the following inputs:

   *  Link-local discovery: This interaction happens in the data plane,
      using IPv6 link-local addressing only, because this addressing
      type is itself autonomic.  This way the node learns about all
      autonomic nodes around itself.  The related Standards Track
      documents ([RFC8990], [RFC8995], and [RFC8994]) describe in detail
      how link-local discovery is used.

   *  Vendor redirect: A new device may receive information on where its
      home network is through a vendor-based Manufacturer Authorized
      Signing Authority (MASA) (see Section 5.3) redirect; this is
      typically a routable address.

   *  Non-autonomic input: A node may be configured manually with an
      autonomic peer; it could learn about autonomic nodes through DHCP
      options, DNS, and other non-autonomic mechanisms.  Generally, such
      non-autonomic mechanisms require some administrator intervention.
      The key purpose is to bypass a non-autonomic device or network.
      As this pertains to new devices, it is covered in Appendices A and
      B of [RFC8995].

   The adjacency table defines the behavior of an autonomic node:

   *  If the node has not bootstrapped into a domain (i.e., doesn't have
      a domain certificate), it rotates through all nodes in the
      adjacency table that claim to have a domain and will attempt
      bootstrapping through them, one by one.  One possible response is
      a redirect via a vendor MASA, which will be entered into the
      adjacency table (see second bullet above).  See [RFC8995] for
      details.

   *  If the adjacent node has the same domain, it will authenticate
      that adjacent node and, if successful, establish the ACP.  See
      [RFC8994].

   *  Once the node is part of the ACP of a domain, it will use GRASP
      [RFC8990] to find the registrar(s) of its domain and potentially
      other services.

   *  If the node is part of an ACP and has discovered at least one
      registrar in its domain via GRASP, it will start the join proxy
      ASA and act as a join proxy for neighboring nodes that need to be
      bootstrapped.  See Section 6.3.1.2 for details.

   *  Other behaviors are possible, for example, establishing the ACP
      with devices of a subdomain or other domains.  These will likely
      be controlled by Intent and are outside the scope of this
      document.  Note that Intent is distributed through the ACP;
      therefore, a node can only adapt Intent-driven behavior once it
      has joined the ACP.  At the moment, the ANIMA Working Group does
      not consider providing Intent outside the ACP; this can be
      considered later.

   Once a node has joined the ACP, it will also learn the ACP addresses
   of its adjacent nodes and add them to the adjacency table to allow
   for communication inside the ACP.  Further autonomic domain
   interactions will now happen inside the ACP.  At this moment, only
   negotiation and synchronization via GRASP [RFC8990] are defined.
   (Note that GRASP runs in the data plane, as an input in building the
   adjacency table, as well as inside the ACP.)

   Autonomic functions consist of ASAs.  They run logically above the
   ANI and may use the adjacency table, the ACP, negotiation and
   synchronization through GRASP in the ACP, Intent, and other functions
   of the ANI.  Since the ANI only provides autonomic interactions
   within a domain, autonomic functions can also use any other context
   on a node, specifically the global data plane.

3.3.  State Machine

   Autonomic Networking applies during the full life cycle of a node.
   This section describes a state machine of an autonomic node
   throughout its life.

   A device is normally expected to store its domain-specific identity,
   the Local Device Identifier (LDevID) (see Section 5.2), in persistent
   storage to be available after a power-cycle event.  For device types
   that cannot store the LDevID in persistent storage, a power-cycle
   event is effectively equivalent to a factory reset.

3.3.1.  State 1: Factory Default

   An autonomic node leaves the factory in this state.  In this state,
   the node has no domain-specific configuration, specifically no
   LDevID, and could be used in any particular target network.  It does,
   however, have a vendor/manufacturer-specific ID, the Initial Device
   Identifier (IDevID) [IDevID].  Nodes without IDevID cannot be
   autonomically and securely enrolled into a domain; they require
   manual pre-staging, in which case the pre-staging takes them directly
   to state 2.

   Transitions:

   *  Bootstrap event: The device enrolls into a domain; as part of this
      process it receives a domain identity (LDevID).  If enrollment is
      successful, the next state is state 2.  See [RFC8995] for details
      on enrollment.

   *  Power-cycle event: The device loses all state tables.  It remains
      in state 1.

3.3.2.  State 2: Enrolled

   An autonomic node is in the "enrolled" state if it has a domain
   identity (LDevID) and has currently no ACP channel up.  It may have
   further configuration or state, for example, if it had been in state
   3 before but lost all its ACP channels.  The LDevID can only be
   removed from a device through a factory reset, which also removes all
   other state from the device.  This ensures that a device has no stale
   domain-specific state when entering the "enrolled" state from state
   1.

   Transitions:

   *  Joining ACP: The device establishes an ACP channel to an adjacent
      device.  See [RFC8994] for details.  Next state: 3.

   *  Factory reset: A factory reset removes all configuration and the
      domain identity (LDevID) from the device.  Next state: 1.

   *  Power-cycle event: The device loses all state tables, but not its
      domain identity (LDevID).  It remains in state 2.

3.3.3.  State 3: In ACP

   In this state, the autonomic node has at least one ACP channel to
   another device.  The node can now participate in further autonomic
   transactions, such as starting ASAs (e.g., it must now enable the
   join proxy ASA, to help other devices to join the domain).  Other
   conditions may apply to such interactions, for example, to serve as a
   join proxy, the device must first discover a bootstrap registrar.

   Transitions:

   *  Leaving ACP: The device drops the last (or only) ACP channel to an
      adjacent device.  Next state: 2.

   *  Factory reset: A factory reset removes all configuration and the
      domain identity (LDevID) from the device.  Next state: 1.

   *  Power-cycle event: The device loses all state tables but not its
      domain identity (LDevID).  Next state: 2.

4.  Autonomic Networking Infrastructure

   The ANI provides a layer of common functionality across an Autonomic
   Network.  It provides the elementary functions and services, as well
   as extensions.  An autonomic function, comprising of ASAs on nodes,
   uses the functions described in this section.

4.1.  Naming

   Inside a domain, each autonomic device should be assigned a unique
   name.  The naming scheme should be consistent within a domain.  Names
   are typically assigned by a registrar at bootstrap time and are
   persistent over the lifetime of the device.  All registrars in a
   domain must follow the same naming scheme.

   In the absence of a domain-specific naming scheme, a default naming
   scheme should use the same logic as the addressing scheme discussed
   in [RFC8994].  The device name is then composed of a Registrar-ID
   (for example, taking a Media Access Control (MAC) address of the
   registrar) and a device number.  An example name would then look like
   this:

   0123-4567-89ab-0001

   The first three fields are the MAC address, and the fourth field is
   the sequential number for the device.

4.2.  Addressing

   ASAs need to communicate with each other, using the autonomic
   addressing of the ANI of the node they reside on.  This section
   describes the addressing approach of the ANI used by ASAs.

   Addressing approaches for the data plane of the network are outside
   the scope of this document.  These addressing approaches may be
   configured and managed in the traditional way or negotiated as a
   service of an ASA.  One use case for such an autonomic function is
   described in [RFC8992].

   Autonomic addressing is a function of the ANI (lower part of
   Figure 2), specifically the ACP.  ASAs do not have their own
   addresses.  They may use either API calls or the autonomic addressing
   scheme of the ANI.

   An autonomic addressing scheme has the following requirements:

   *  Zero-touch for simple networks: Simple networks should have
      complete self-management of addressing and not require any central
      address management, tools, or address planning.

   *  Low-touch for complex networks: If complex networks require
      operator input for autonomic address management, it should be
      limited to high-level guidance only, expressed in Intent.

   *  Flexibility: The addressing scheme must be flexible enough for
      nodes to be able to move around and for the network to grow,
      split, and merge.

   *  Robustness: It should be as hard as possible for an administrator
      to negatively affect addressing (and thus connectivity) in the
      autonomic context.

   *  Stability: The addressing scheme should be as stable as possible.
      However, implementations need to be able to recover from
      unexpected address changes.

   *  Support for virtualization: Autonomic functions can exist either
      at the level of the physical network and physical devices or at
      the level of virtual machines, containers, and networks.  In
      particular, autonomic nodes may support ASAs in virtual entities.
      The infrastructure, including the addressing scheme, should be
      able to support this architecture.

   *  Simplicity: The addressing scheme should be simple to make
      engineering easier and to give the human administrator an easy way
      to troubleshoot autonomic functions.

   *  Scale: The proposed scheme should work in any network of any size.

   *  Upgradability: The scheme must be able to support different
      addressing concepts in the future.

   The proposed addressing scheme is described in the document "An
   Autonomic Control Plane (ACP)" [RFC8994].

4.3.  Discovery

   Traditionally, most of the information a node requires is provided
   through configuration or northbound interfaces.  An autonomic
   function should rely on such northbound interfaces minimally or not
   at all; therefore, it needs to discover peers and other resources in
   the network.  This section describes various discovery functions in
   an Autonomic Network.

   First, discovering nodes and their properties and capabilities is a
   core function to establish an autonomic domain is the mutual
   discovery of autonomic nodes, primarily adjacent nodes and
   secondarily off-link peers.  This may, in principle, either leverage
   existing discovery mechanisms or use new mechanisms tailored to the
   autonomic context.  An important point is that discovery must work in
   a network with no predefined topology, ideally no manual
   configuration of any kind, and with nodes starting up from factory
   condition or after any form of failure or sudden topology change.

   Second, network services such as Authentication, Authorization, and
   Accounting (AAA) should also be discovered and not configured.
   Service discovery is required for such tasks.  An Autonomic Network
   can leverage existing service discovery functions, use a new
   approach, or use a mixture.

   Thus, the discovery mechanism could either be fully integrated with
   autonomic signaling (next section) or use an independent discovery
   mechanism such as DNS-based Service Discovery or the Service Location
   Protocol.  This choice could be made independently for each ASA,
   although the infrastructure might require some minimal lowest common
   denominator (e.g., for discovering the security bootstrap mechanism
   or the source of information distribution (Section 4.7)).

   Phase 1 of Autonomic Networking uses GRASP [RFC8990] for discovery.

4.4.  Signaling between Autonomic Nodes

   Autonomic nodes must communicate with each other, for example, to
   negotiate and/or synchronize technical objectives (i.e., network
   parameters) of any kind and complexity.  This requires some form of
   signaling between autonomic nodes.  Autonomic nodes implementing a
   specific use case might choose their own signaling protocol, as long
   as it fits the overall security model.  However, in the general case,
   any pair of autonomic nodes might need to communicate, so there needs
   to be a generic protocol for this.  A prerequisite for this is that
   autonomic nodes can discover each other without any preconfiguration,
   as mentioned above.  To be generic, discovery and signaling must be
   able to handle any sort of technical objective, including ones that
   require complex data structures.  The document "GeneRic Autonomic
   Signaling Protocol (GRASP)" [RFC8990] describes more detailed
   requirements for discovery, negotiation, and synchronization in an
   Autonomic Network.  It also defines a protocol, called GRASP, for
   this purpose; GRASP includes an integrated but optional discovery
   process.

   GRASP is normally expected to run inside the ACP (see Section 4.6)
   and to depend on the ACP for security.  It may run insecurely for a
   short time during bootstrapping.

   An autonomic node will normally run a single instance of GRASP, used
   by multiple ASAs.  However, scenarios where multiple instances of
   GRASP run in a single node, perhaps with different security
   properties, are not excluded.

4.5.  Routing

   All autonomic nodes in a domain must be able to communicate with each
   other, and in later phases, they must also be able to communicate
   with autonomic nodes outside their own domain.  Therefore, an ACP
   relies on a routing function.  For Autonomic Networks to be
   interoperable, they must all support one common routing protocol.

   The routing protocol is defined in the ACP document [RFC8994].

4.6.  Autonomic Control Plane

   The ACP carries the control protocols in an Autonomic Network.  In
   the architecture described in this document, it is implemented as an
   overlay network.  The document "An Autonomic Control Plane (ACP)"
   [RFC8994] describes the implementation details suggested in this
   document.  This document uses the term "overlay" to mean a set of
   point-to-point adjacencies congruent with the underlying
   interconnection topology.  The terminology may not be aligned with a
   common usage of the term "overlay" in the routing context.  See
   [RFC8368] for uses cases for the ACP.

4.7.  Information Distribution (*)

   Certain forms of information require distribution across an autonomic
   domain.  The distribution of information runs inside the ACP.  For
   example, Intent is distributed across an autonomic domain, as
   explained in [RFC7575].

   Intent is the policy language of an Autonomic Network (see also
   Section 7.2).  It is a high-level policy and should change only
   infrequently (order of days).  Therefore, information such as Intent
   should be simply flooded to all nodes in an autonomic domain, and
   there is currently no perceived need to have more targeted
   distribution methods.  Intent is also expected to be monolithic and
   flooded as a whole.  One possible method for distributing Intent, as
   well as other forms of data, is discussed in [GRASP-DISTRIB].  Intent
   and information distribution are not part of the ANIMA Working Group
   charter.

5.  Security and Trust Infrastructure

   An Autonomic Network is self-protecting.  All protocols are secure by
   default, without the requirement for the administrator to explicitly
   configure security, with the exception of setting up a PKI
   infrastructure.

   Autonomic nodes have direct interactions between themselves, which
   must be secured.  Since an Autonomic Network does not rely on
   configuration, it is not an option to configure, for example, pre-
   shared keys.  A trust infrastructure such as a PKI infrastructure
   must be in place.  This section describes the principles of this
   trust infrastructure.  In this first phase of Autonomic Networking, a
   device is either 1) within the trust domain and fully trusted or 2)
   outside the trust domain and fully untrusted.

   The default method to automatically bring up a trust infrastructure
   is defined in the document "Bootstrapping Remote Secure Key
   Infrastructure (BRSKI)" [RFC8995].  The ASAs required for this
   enrollment process are described in Section 6.3.  An autonomic node
   must implement the enrollment and join proxy ASAs.  The registrar ASA
   may be implemented only on a subset of nodes.

5.1.  Public Key Infrastructure

   An autonomic domain uses a PKI model.  The root of trust is a
   Certification Authority (CA).  A registrar acts as a Registration
   Authority (RA).

   A minimum implementation of an autonomic domain contains one CA, one
   registrar, and network elements.

5.2.  Domain Certificate

   Each device in an autonomic domain uses a domain certificate (LDevID)
   to prove its identity.  A new device uses its manufacturer-provided
   certificate (IDevID) during bootstrap to obtain a domain certificate.
   [RFC8995] describes how a new device receives a domain certificate
   and defines the certificate format.

5.3.  MASA

   The Manufacturer Authorized Signing Authority (MASA) is a trusted
   service for bootstrapping devices.  The purpose of the MASA is to
   provide ownership tracking of devices in a domain.  The MASA provides
   audit, authorization, and ownership tokens to the registrar during
   the bootstrap process to assist in the authentication of devices
   attempting to join an autonomic domain and to allow a joining device
   to validate whether it is joining the correct domain.  The details
   for MASA service, security, and usage are defined in [RFC8995].

5.4.  Subdomains (*)

   By default, subdomains are treated as different domains.  This
   implies no trust between a domain and its subdomains and no trust
   between subdomains of the same domain.  Specifically, no ACP is
   built, and Intent is valid only for the domain it is defined for
   explicitly.

   In the ANIMA Working Group charter, alternative trust models should
   be defined, for example, to allow full or limited trust between
   domain and subdomain.

5.5.  Cross-Domain Functionality (*)

   By default, different domains do not interoperate, no ACP is built,
   and no trust is implied between them.

   In the future, models can be established where other domains can be
   trusted in full or for limited operations between the domains.

6.  Autonomic Service Agents (ASAs)

   This section describes how autonomic services run on top of the ANI.

6.1.  General Description of an ASA

   An ASA is defined in [RFC7575] as "An agent implemented on an
   autonomic node that implements an autonomic function, either in part
   (in the case of a distributed function) or whole".  Thus, it is a
   process that makes use of the features provided by the ANI to achieve
   its own goals, usually including interaction with other ASAs via
   GRASP [RFC8990] or otherwise.  Of course, it also interacts with the
   specific targets of its function, using any suitable mechanism.
   Unless its function is very simple, the ASA will need to handle
   overlapping asynchronous operations.  It may therefore be a quite
   complex piece of software in its own right, forming part of the
   application layer above the ANI.  ASA design guidelines are available
   in [ASA-GUIDELINES].

   Thus, we can distinguish at least three classes of ASAs:

   *  Simple ASAs with a small footprint that could run anywhere.

   *  Complex, possibly multi-threaded ASAs that have a significant
      resource requirement and will only run on selected nodes.

   *  A few 'infrastructure ASAs' that use basic ANI features in support
      of the ANI itself, which must run in all autonomic nodes.  These
      are outlined in the following sections.

   Autonomic nodes, and therefore their ASAs, know their own
   capabilities and restrictions, derived from hardware, firmware, or
   pre-installed software; they are "self-aware".

   The role of an autonomic node depends on Intent and on the
   surrounding network behaviors, which may include forwarding
   behaviors, aggregation properties, topology location, bandwidth,
   tunnel or translation properties, etc.  For example, a node may
   decide to act as a backup node for a neighbor, if its capabilities
   allow it to do so.

   Following an initial discovery phase, the node's properties and those
   of its neighbors are the foundation of the behavior of a specific
   node.  A node and its ASAs have no pre-configuration for the
   particular network in which they are installed.

   Since all ASAs will interact with the ANI, they will depend on
   appropriate application programming interfaces (APIs).  It is
   desirable that ASAs are portable between operating systems, so these
   APIs need to be universal.  An API for GRASP is described in
   [RFC8991].

   ASAs will, in general, be designed and coded by experts in a
   particular technology and use case, not by experts in the ANI and its
   components.  Also, they may be coded in a variety of programming
   languages, in particular, languages that support object constructs as
   well as traditional variables and structures.  The APIs should be
   designed with these factors in mind.

   It must be possible to run ASAs as non-privileged (user space)
   processes except for those (such as the infrastructure ASAs) that
   necessarily require kernel privilege.  Also, it is highly desirable
   that ASAs can be dynamically loaded on a running node.

   Since autonomic systems must be self-repairing, it is of great
   importance that ASAs are coded using robust programming techniques.
   All runtime error conditions must be caught, leading to suitable
   minimally disruptive recovery actions, but a complete restart of the
   ASA must also be considered.  Conditions such as discovery failures
   or negotiation failures must be treated as routine, with the ASA
   retrying the failed operation, preferably with an exponential back-
   off in the case of persistent errors.  When multiple threads are
   started within an ASA, these threads must be monitored for failures
   and hangups, and appropriate action taken.  Attention must be given
   to garbage collection, so that ASAs never run out of resources.
   There is assumed to be no human operator; again, in the worst case,
   every ASA must be capable of restarting itself.

   ASAs will automatically benefit from the security provided by the
   ANI, specifically by the ACP and by GRASP.  However, beyond that,
   they are responsible for their own security, especially when
   communicating with the specific targets of their function.
   Therefore, the design of an ASA must include a security analysis
   beyond 'use ANI security'.

6.2.  ASA Life-Cycle Management

   ASAs operating on a given ANI may come from different providers and
   pursue different objectives.  Management of ASAs and their
   interactions with the ANI should follow the same operating principles
   and thus comply to a generic life-cycle management model.

   The ASA life cycle provides standard processes to:

   *  install ASA: copy the ASA code onto the node and start it.

   *  deploy ASA: associate the ASA instance with a (some) managed
      network device(s) (or network function).

   *  control ASA execution: when and how an ASA executes its control
      loop.

   This life cycle will also define which interactions ASAs have with
   the ANI in between the different states.  The noticeable interactions
   are:

   *  Self-description of ASA instances at the end of deployment: Its
      format needs to define the information required for the management
      of ASAs by ANI entities.

   *  Control of the ASA control loop during the operation: Signaling
      has to carry formatted messages to control ASA execution (at least
      starting and stopping the control loop).

6.3.  Specific ASAs for the Autonomic Networking Infrastructure

   The following functions provide essential, required functionality in
   an Autonomic Network and are therefore mandatory to implement on
   unconstrained autonomic nodes.  They are described here as ASAs that
   include the underlying infrastructure components, but implementation
   details might vary.

   The first three (pledge, join proxy, join registrar) support together
   the trust enrollment process described in Section 5.  For details see
   [RFC8995].

6.3.1.  Enrollment ASAs

6.3.1.1.  The Pledge ASA

   This ASA includes the function of an autonomic node that bootstraps
   into the domain with the help of a join proxy ASA (see below).  Such
   a node is known as a pledge during the enrollment process.  This ASA
   must be installed by default on all nodes that require an autonomic
   zero-touch bootstrap.

6.3.1.2.  The Join Proxy ASA

   This ASA includes the function of an autonomic node that helps non-
   enrolled, adjacent devices to enroll into the domain.  This ASA must
   be installed on all nodes, although only one join proxy needs to be
   active on a given LAN.  See also [RFC8995].

6.3.1.3.  The Join Registrar ASA

   This ASA includes the Join Registrar function in an Autonomic
   Network.  This ASA does not need to be installed on all nodes, but
   only on nodes that implement the Join Registrar function.

6.3.2.  ACP ASA

   This ASA includes the ACP function in an Autonomic Network.  In
   particular, it acts to discover other potential ACP nodes and to
   support the establishment and teardown of ACP channels.  This ASA
   must be installed on all nodes.  For details, see Section 4.6 and
   [RFC8994].

6.3.3.  Information Distribution ASA (*)

   This ASA is currently out of scope in the ANIMA Working Group charter
   and is provided here only as background information.

   This ASA includes the information distribution function in an
   Autonomic Network.  In particular, it acts to announce the
   availability of Intent and other information to all other autonomic
   nodes.  This ASA does not need to be installed on all nodes, but only
   on nodes that implement the information distribution function.  For
   details, see Section 4.7.

   Note that information distribution can be implemented as a function
   in any ASA.  See [GRASP-DISTRIB] for more details on how information
   is suggested to be distributed.

7.  Management and Programmability

   This section describes how an Autonomic Network is managed and
   programmed.

7.1.  Managing a (Partially) Autonomic Network

   Autonomic management usually coexists with traditional management
   methods in most networks.  Thus, autonomic behavior will be defined
   for individual functions in most environments.  Examples of overlap
   are:

   *  Autonomic functions can use traditional methods and protocols
      (e.g., SNMP and the Network Configuration Protocol (NETCONF)) to
      perform management tasks, inside and outside the ACP.

   *  Autonomic functions can conflict with behavior enforced by the
      same traditional methods and protocols.

   *  Traditional functions can use the ACP, for example, if
      reachability on the data plane is not (yet) established.

   The autonomic Intent is defined at a high level of abstraction.
   However, since it is necessary to address individual managed
   elements, autonomic management needs to communicate in lower-level
   interactions (e.g., commands and requests).  For example, it is
   expected that the configuration of such elements be performed using
   NETCONF and YANG modules as well as the monitoring be executed
   through SNMP and MIBs.

   Conflict can occur between autonomic default behavior, autonomic
   Intent, and traditional management methods.  Conflict resolution is
   achieved in autonomic management through prioritization [RFC7575].
   The rationale is that manual and node-based management have a higher
   priority than autonomic management.  Thus, the autonomic default
   behavior has the lowest priority, then comes the autonomic Intent
   (medium priority), and, finally, the highest priority is taken by
   node-specific network management methods, such as the use of command-
   line interfaces.

7.2.  Intent (*)

   Intent is not covered in the current implementation specifications.
   This section discusses a topic for further research.

   This section gives an overview of Intent and how it is managed.
   Intent and Policy-Based Network Management (PBNM) is already
   described inside the IETF (e.g., Policy Core Information Model
   (PCIM)) and in other Standards Development Organizations (SDOs)
   (e.g., the Distributed Management Task Force (DMTF)).

   Intent can be described as an abstract, declarative, high-level
   policy used to operate an autonomic domain, such as an enterprise
   network [RFC7575].  Intent should be limited to high-level guidance
   only; thus, it does not directly define a policy for every network
   element separately.

   Intent can be refined to lower-level policies using different
   approaches.  This is expected in order to adapt the Intent to the
   capabilities of managed devices.  Intent may contain role or function
   information, which can be translated to specific nodes [RFC7575].
   One of the possible refinements of the Intent is using Event-
   Condition-Action (ECA) rules.

   Different parameters may be configured for Intent.  These parameters
   are usually provided by the human operator.  Some of these parameters
   can influence the behavior of specific autonomic functions as well as
   the way the Intent is used to manage the autonomic domain.

   Intent is discussed in more detail in [ANIMA-INTENT].  Intent as well
   as other types of information are distributed via GRASP; see
   [GRASP-DISTRIB].

7.3.  Aggregated Reporting (*)

   Aggregated reporting is not covered in the current implementation
   specifications.  This section discusses a topic for further research.

   An Autonomic Network should minimize the need for human intervention.
   In terms of how the network should behave, this is done through an
   autonomic Intent provided by the human administrator.  In an
   analogous manner, the reports that describe the operational status of
   the network should aggregate the information produced in different
   network elements in order to present the effectiveness of autonomic
   Intent enforcement.  Therefore, reporting in an Autonomic Network
   should happen on a network-wide basis [RFC7575].

   Multiple simultaneous events can occur in an Autonomic Network in the
   same way they can happen in a traditional network.  However, when
   reporting to a human administrator, such events should be aggregated
   to avoid notifications about individual managed elements.  In this
   context, algorithms may be used to determine what should be reported
   (e.g., filtering), how it should be reported, and how different
   events are related to each other.  Besides that, an event in an
   individual element can be compensated by changes in other elements to
   maintain a network-wide target that is described in the autonomic
   Intent.

   Reporting in an Autonomic Network may be at the same abstraction
   level as Intent.  In this context, the aggregated view of the current
   operational status of an Autonomic Network can be used to switch to
   different management modes.  Despite the fact that autonomic
   management should minimize the need for user intervention, some
   events may need to be addressed by the actions of a human
   administrator.

7.4.  Feedback Loops to NOC (*)

   Feedback loops are required in an Autonomic Network to allow the
   intervention of a human administrator or central control systems
   while maintaining a default behavior.  Through a feedback loop, an
   administrator must be prompted with a default action and has the
   possibility to acknowledge or override the proposed default action.

   Unidirectional notifications to the Network Operations Center (NOC)
   that do not propose any default action and do not allow an override
   as part of the transaction are considered like traditional
   notification services, such as syslog.  They are expected to coexist
   with autonomic methods but are not covered in this document.

7.5.  Control Loops (*)

   Control loops are not covered in the current implementation
   specifications.  This section discusses a topic for further research.

   Control loops are used in Autonomic Networking to provide a generic
   mechanism to enable the autonomic system to adapt (on its own) to
   various factors that can change the goals that the Autonomic Network
   is trying to achieve or how those goals are achieved.  For example,
   as user needs, business goals, and the ANI itself changes, self-
   adaptation enables the ANI to change the services and resources it
   makes available to adapt to these changes.

   Control loops operate to continuously observe and collect data that
   enables the autonomic management system to understand changes to the
   behavior of the system being managed and then provide actions to move
   the state of the system being managed toward a common goal.  Self-
   adaptive systems move decision making from static, pre-defined
   commands to dynamic processes computed at runtime.

   Most autonomic systems use a closed control loop with feedback.  Such
   control loops should be able to be dynamically changed at runtime to
   adapt to changing user needs, business goals, and changes in the ANI.

7.6.  APIs (*)

   [RFC8991] defines a conceptual outline for an API for the GeneRic
   Autonomic Signaling Protocol (GRASP).  This conceptual API is
   designed for ASAs to communicate with other ASAs through GRASP.  Full
   Standards Track API specifications are not covered in the current
   implementation specifications.

   Most APIs are static, meaning that they are pre-defined and represent
   an invariant mechanism for operating with data.  An Autonomic Network
   should be able to use dynamic APIs in addition to static APIs.

   A dynamic API retrieves data using a generic mechanism and then
   enables the client to navigate the retrieved data and operate on it.
   Such APIs typically use introspection and/or reflection.
   Introspection enables software to examine the type and properties of
   an object at runtime, while reflection enables a program to
   manipulate the attributes, methods, and/or metadata of an object.

   APIs must be able to express and preserve the semantics of data
   models.  For example, software contracts [Meyer97] are based on the
   principle that a software-intensive system, such as an Autonomic
   Network, is a set of communicating components whose interaction is
   based on precisely defined specifications of the mutual obligations
   that interacting components must respect.  This typically includes
   specifying:

   *  pre-conditions that must be satisfied before the method can start
      execution

   *  post-conditions that must be satisfied when the method has
      finished execution

   *  invariant attributes that must not change during the execution of
      the method

7.7.  Data Model (*)

   Data models are not covered in the current implementation
   specifications.  This section discusses a topic for further research.

   The following definitions of "data model" and "information model" are
   adapted from [SUPA-DATA].

   An information model is a representation of concepts of interest to
   an environment in a form that is independent of data repository, data
   definition language, query language, implementation language, and
   protocol.  In contrast, a data model is a representation of concepts
   of interest to an environment in a form that is dependent on data
   repository, data definition language, query language, implementation
   language, and protocol.

   The utility of an information model is to define objects and their
   relationships in a technology-neutral manner.  This forms a
   consensual vocabulary that the ANI and ASAs can use.  A data model is
   then a technology-specific mapping of all or part of the information
   model to be used by all or part of the system.

   A system may have multiple data models.  Operational Support Systems,
   for example, typically have multiple types of repositories, such as
   SQL and NoSQL, to take advantage of the different properties of each.
   If multiple data models are required by an autonomic system, then an
   information model should be used to ensure that the concepts of each
   data model can be related to each other without technological bias.

   A data model is essential for certain types of functions, such as a
   Model-Reference Adaptive Control Loop (MRACL).  More generally, a
   data model can be used to define the objects, attributes, methods,
   and relationships of a software system (e.g., the ANI, an autonomic
   node, or an ASA).  A data model can be used to help design an API, as
   well as any language used to interface to the Autonomic Network.

8.  Coordination between Autonomic Functions (*)

   Coordination between autonomic functions is not covered in the
   current implementation specifications.  This section discusses a
   topic for further research.

8.1.  Coordination Problem (*)

   Different autonomic functions may conflict in setting certain
   parameters.  For example, an energy efficiency function may want to
   shut down a redundant link, while a load-balancing function would not
   want that to happen.  The administrator must be able to understand
   and resolve such interactions to steer Autonomic Network performance
   to a given (intended) operational point.

   Several interaction types may exist among autonomic functions, for
   example:

   *  Cooperation: An autonomic function can improve the behavior or
      performance of another autonomic function, such as a traffic
      forecasting function used by a traffic allocation function.

   *  Dependency: An autonomic function cannot work without another one
      being present or accessible in the Autonomic Network.

   *  Conflict: A metric value conflict is a conflict where one metric
      is influenced by parameters of different autonomic functions.  A
      parameter value conflict is a conflict where one parameter is
      modified by different autonomic functions.

   Solving the coordination problem beyond one-by-one cases can rapidly
   become intractable for large networks.  Specifying a common
   functional block on coordination is a first step to address the
   problem in a systemic way.  The coordination life cycle consists of
   three states:

   *  At build-time, a "static interaction map" can be constructed on
      the relationship of functions and attributes.  This map can be
      used to (pre-)define policies and priorities for identified
      conflicts.

   *  At deploy-time, autonomic functions are not yet active/acting on
      the network.  A "dynamic interaction map" is created for each
      instance of each autonomic function on a per-resource basis,
      including the actions performed and their relationships.  This map
      provides the basis to identify conflicts that will happen at
      runtime, categorize them, and plan for the appropriate
      coordination strategies and mechanisms.

   *  At runtime, when conflicts happen, arbitration is driven by the
      coordination strategies.  Also, new dependencies can be observed
      and inferred, resulting in an update of the dynamic interaction
      map and adaptation of the coordination strategies and mechanisms.

   Multiple coordination strategies and mechanisms exist and can be
   devised.  The set ranges from basic approaches (such as random
   process or token-based process), to approaches based on time
   separation and hierarchical optimization, to more complex approaches
   (such as multi-objective optimization and other control theory
   approaches and algorithm families).

8.2.  Coordination Functional Block (*)

   A common coordination functional block is a desirable component of
   the ANIMA reference model.  It provides a means to ensure network
   properties and predictable performance or behavior, such as stability
   and convergence, in the presence of several interacting autonomic
   functions.

   A common coordination function requires:

   *  A common description of autonomic functions, their attributes, and
      life cycle.

   *  A common representation of information and knowledge (e.g.,
      interaction maps).

   *  A common "control/command" interface between the coordination
      "agent" and the autonomic functions.

   Guidelines, recommendations, or BCPs can also be provided for aspects
   pertaining to the coordination strategies and mechanisms.

9.  Security Considerations

   In this section, we distinguish outsider and insider attacks.  In an
   outsider attack, all network elements and protocols are securely
   managed and operating, and an outside attacker can sniff packets in
   transit, inject, and replay packets.  In an insider attack, the
   attacker has access to an autonomic node or other means (e.g., remote
   code execution in the node by exploiting ACP-independent
   vulnerabilities in the node platform) to produce arbitrary payloads
   on the protected ACP channels.

   If a system has vulnerabilities in the implementation or operation
   (configuration), an outside attacker can exploit such vulnerabilities
   to become an insider attacker.

9.1.  Protection against Outsider Attacks

   Here, we assume that all systems involved in an Autonomic Network are
   secured and operated according to best current practices.  These
   protection methods comprise traditional security implementation and
   operation methods (such as code security, strong randomization
   algorithms, strong passwords, etc.) as well as mechanisms specific to
   an Autonomic Network (such as a secured MASA service).

   Traditional security methods for both implementation and operation
   are outside the scope of this document.

   AN-specific protocols and methods must also follow traditional
   security methods, in that all packets that can be sniffed or injected
   by an outside attacker are:

   *  protected against modification

   *  authenticated

   *  protected against replay attacks

   *  confidentiality protected (encrypted)

   In addition, the AN protocols should be robust against packet drops
   and man-in-the-middle attacks.

   How these requirements are met is covered in the AN Standards Track
   documents that define the methods used, specifically [RFC8990],
   [RFC8994], and [RFC8995].

   Most AN messages run inside the cryptographically protected ACP.  The
   unprotected AN messages outside the ACP are limited to a simple
   discovery method, defined in Section 2.5.2 of [RFC8990]: the
   Discovery Unsolicited Link-Local (DULL) message, with detailed rules
   on its usage.

   If AN messages can be observed by a third party, they might reveal
   valuable information about network configuration, security
   precautions in use, individual users, and their traffic patterns.  If
   encrypted, AN messages might still reveal some information via
   traffic analysis.

9.2.  Risk of Insider Attacks

   An Autonomic Network consists of autonomic devices that form a
   distributed self-managing system.  Devices within a domain have
   credentials issued from a common trust anchor and can use them to
   create mutual trust.  This means that any device inside a trust
   domain can by default use all distributed functions in the entire
   autonomic domain in a malicious way.

   An inside attacker, or an outsider in the presence of protocol
   vulnerabilities or insecure operation, has the following generic ways
   to take control of an Autonomic Network:

   *  Introducing a fake device into the trust domain by subverting the
      authentication methods.  This depends on the correct
      specification, implementation, and operation of the AN protocols.

   *  Subverting a device that is already part of a trust domain and
      modifying its behavior.  This threat is not specific to the
      solution discussed in this document and applies to all network
      solutions.

   *  Exploiting potentially yet unknown protocol vulnerabilities in the
      AN or other protocols.  This is also a generic threat that applies
      to all network solutions.

   The above threats are, in principle, comparable to other solutions:
   in the presence of design, implementation, or operational errors,
   security is no longer guaranteed.  However, the distributed nature of
   AN, specifically the ACP, increases the threat surface significantly.
   For example, a compromised device may have full IP reachability to
   all other devices inside the ACP and can use all AN methods and
   protocols.

   For the next phase of the ANIMA Working Group, it is therefore
   recommended to introduce a subdomain security model to reduce the
   attack surface and not expose a full domain to a potential intruder.
   Furthermore, additional security mechanisms on the ASA level should
   be considered for high-risk autonomic functions.

10.  IANA Considerations

   This document has no IANA actions.

11.  References

11.1.  Normative References

   [IDevID]   IEEE, "IEEE Standard for Local and metropolitan area
              networks - Secure Device Identity", IEEE 802.1AR,
              <https://1.ieee802.org/security/802-1ar>.

   [RFC8990]  Bormann, C., Carpenter, B., Ed., and B. Liu, Ed., "GeneRic
              Autonomic Signaling Protocol (GRASP)", RFC 8990,
              DOI 10.17487/RFC8990, May 2021,
              <https://www.rfc-editor.org/info/rfc8990>.

   [RFC8994]  Eckert, T., Ed., Behringer, M., Ed., and S. Bjarnason, "An
              Autonomic Control Plane (ACP)", RFC 8994,
              DOI 10.17487/RFC8994, May 2021,
              <https://www.rfc-editor.org/info/rfc8994>.

   [RFC8995]  Pritikin, M., Richardson, M., Eckert, T., Behringer, M.,
              and K. Watsen, "Bootstrapping Remote Secure Key
              Infrastructure (BRSKI)", RFC 8995, DOI 10.17487/RFC8995,
              May 2021, <https://www.rfc-editor.org/info/rfc8995>.

11.2.  Informative References

   [ANIMA-INTENT]
              Du, Z., Jiang, S., Nobre, J. C., Ciavaglia, L., and M.
              Behringer, "ANIMA Intent Policy and Format", Work in
              Progress, Internet-Draft, draft-du-anima-an-intent-05, 14
              February 2017,
              <https://tools.ietf.org/html/draft-du-anima-an-intent-05>.

   [ASA-GUIDELINES]
              Carpenter, B., Ciavaglia, L., Jiang, S., and P. Peloso,
              "Guidelines for Autonomic Service Agents", Work in
              Progress, Internet-Draft, draft-ietf-anima-asa-guidelines-
              00, 14 November 2020, <https://tools.ietf.org/html/draft-
              ietf-anima-asa-guidelines-00>.

   [GRASP-DISTRIB]
              Liu, B., Ed., Xiao, X., Ed., Hecker, A., Jiang, S.,
              Despotovic, Z., and B. Carpenter, "Information
              Distribution over GRASP", Work in Progress, Internet-
              Draft, draft-ietf-anima-grasp-distribution-02, 8 March
              2021, <https://tools.ietf.org/html/draft-ietf-anima-grasp-
              distribution-02>.

   [Meyer97]  Meyer, B., "Object-Oriented Software Construction (2nd
              edition)", Prentice Hall, ISBN 978-0136291558, 1997.

   [RFC7575]  Behringer, M., Pritikin, M., Bjarnason, S., Clemm, A.,
              Carpenter, B., Jiang, S., and L. Ciavaglia, "Autonomic
              Networking: Definitions and Design Goals", RFC 7575,
              DOI 10.17487/RFC7575, June 2015,
              <https://www.rfc-editor.org/info/rfc7575>.

   [RFC7576]  Jiang, S., Carpenter, B., and M. Behringer, "General Gap
              Analysis for Autonomic Networking", RFC 7576,
              DOI 10.17487/RFC7576, June 2015,
              <https://www.rfc-editor.org/info/rfc7576>.

   [RFC8368]  Eckert, T., Ed. and M. Behringer, "Using an Autonomic
              Control Plane for Stable Connectivity of Network
              Operations, Administration, and Maintenance (OAM)",
              RFC 8368, DOI 10.17487/RFC8368, May 2018,
              <https://www.rfc-editor.org/info/rfc8368>.

   [RFC8991]  Carpenter, B., Liu, B., Ed., Wang, W., and X. Gong,
              "GeneRic Autonomic Signaling Protocol Application Program
              Interface (GRASP API)", RFC 8991, DOI 10.17487/RFC8991,
              May 2021, <https://www.rfc-editor.org/info/rfc8991>.

   [RFC8992]  Jiang, S., Ed., Du, Z., Carpenter, B., and Q. Sun,
              "Autonomic IPv6 Edge Prefix Management in Large-Scale
              Networks", RFC 8992, DOI 10.17487/RFC8992, May 2021,
              <https://www.rfc-editor.org/info/rfc8992>.

   [SUPA-DATA]
              Halpern, J. and J. Strassner, "Generic Policy Data Model
              for Simplified Use of Policy Abstractions (SUPA)", Work in
              Progress, Internet-Draft, draft-ietf-supa-generic-policy-
              data-model-04, 18 June 2017, <https://tools.ietf.org/html/
              draft-ietf-supa-generic-policy-data-model-04>.

Acknowledgements

   The following people provided feedback and input to this document:
   Sheng Jiang, Roberta Maglione, Jonathan Hansford, Jason Coleman, and
   Artur Hecker.  Useful reviews were made by Joel Halpern, Radia
   Perlman, Tianran Zhou, and Christian Hopps.

Contributors

   Significant contributions to this document were made by John
   Strassner (Huawei), Bing Liu (Huawei), and Pierre Peloso (Nokia).

Authors' Addresses

   Michael H. Behringer (editor)

   Email: Michael.H.Behringer@gmail.com


   Brian Carpenter
   School of Computer Science
   University of Auckland
   PB 92019
   Auckland 1142
   New Zealand

   Email: brian.e.carpenter@gmail.com


   Toerless Eckert
   Futurewei USA
   2330 Central Expy
   Santa Clara, CA 95050
   United States of America

   Email: tte+ietf@cs.fau.de


   Laurent Ciavaglia
   Nokia
   Villarceaux
   91460 Nozay
   France

   Email: laurent.ciavaglia@nokia.com


   Jéferson Campos Nobre
   Federal University of Rio Grande do Sul (UFRGS)
   Av. Bento Gonçalves, 9500
   Porto Alegre-RS
   91501-970
   Brazil

   Email: jcnobre@inf.ufrgs.br