< draft-sambo-netmod-yang-fsm-01.txt   draft-sambo-netmod-yang-fsm-02.txt >
NETMOD Working Group N. Sambo NETMOD Working Group N. Sambo
Internet-Draft P. Castoldi Internet-Draft P. Castoldi
Intended status: Standards Track Scuola Superiore Sant'Anna Intended status: Standards Track Scuola Superiore Sant'Anna
Expires: July 13, 2018 G. Fioccola Expires: September 3, 2018 G. Fioccola
Telecom Italia Telecom Italia
F. Cugini F. Cugini
CNIT CNIT
H. Song H. Song
T. Zhou T. Zhou
Huawei Huawei
January 9, 2018 March 2, 2018
YANG model for finite state machine YANG model for finite state machine
draft-sambo-netmod-yang-fsm-01 draft-sambo-netmod-yang-fsm-02
Abstract Abstract
Network operators and service providers are facing the challenge of Network operators and service providers are facing the challenge of
deploying systems from different vendors while looking for a trade- deploying systems from different vendors while looking for a trade-
off among transmission performance, network device reuse, and capital off among transmission performance, network device reuse, and capital
expenditure without the need of being tied to single vendor expenditure without the need of being tied to single vendor
equipment. The deployment and operation of more dynamic and equipment. The deployment and operation of more dynamic and
programmable network infrastructures can be driven by adopting model- programmable network infrastructures can be driven by adopting model-
driven and software-defined control and management paradigms. In driven and software-defined control and management paradigms. In
skipping to change at page 2, line 10 skipping to change at page 2, line 10
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on July 13, 2018. This Internet-Draft will expire on September 3, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 48 skipping to change at page 2, line 48
5. YANG for finite state machine (FSM) . . . . . . . . . . . . . 10 5. YANG for finite state machine (FSM) . . . . . . . . . . . . . 10
6. Implementation of the pre-programming resiliency schemes in 6. Implementation of the pre-programming resiliency schemes in
EONs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 EONs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
7. Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . 14 7. Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7.1. YANG model for FSM - Tree . . . . . . . . . . . . . . . . 14 7.1. YANG model for FSM - Tree . . . . . . . . . . . . . . . . 14
7.2. YANG model for FSM - Code . . . . . . . . . . . . . . . . 15 7.2. YANG model for FSM - Code . . . . . . . . . . . . . . . . 15
7.3. Example of values for the YANG model . . . . . . . . . . 27 7.3. Example of values for the YANG model . . . . . . . . . . 27
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28
9. Other Contributors . . . . . . . . . . . . . . . . . . . . . 28 9. Other Contributors . . . . . . . . . . . . . . . . . . . . . 28
10. Security Considerations . . . . . . . . . . . . . . . . . . . 29 10. Security Considerations . . . . . . . . . . . . . . . . . . . 29
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 29 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29
11.1. Normative References . . . . . . . . . . . . . . . . . . 29 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 29
11.2. Informative References . . . . . . . . . . . . . . . . . 29 12.1. Normative References . . . . . . . . . . . . . . . . . . 29
12.2. Informative References . . . . . . . . . . . . . . . . . 29
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30
1. Introduction 1. Introduction
Networks are evolving toward more programmability, flexibility, and Networks are evolving toward more programmability, flexibility, and
multi-vendor interoperability. Multi-vendor interoperability can be multi-vendor interoperability. Multi-vendor interoperability can be
applied in the context of nodes, i.e. a node composed of components applied in the context of nodes, i.e. a node composed of components
provided by different vendors (named fully disaggregated white box) provided by different vendors (named fully disaggregated white box)
is assembled under the same control system. This way, operators can is assembled under the same control system. This way, operators can
optimize costs and network performance without the need of being tied optimize costs and network performance without the need of being tied
skipping to change at page 14, line 16 skipping to change at page 14, line 16
of 20% (executed by the attribute <execute>) is performed. The of 20% (executed by the attribute <execute>) is performed. The
system can return to the "Steady" state if the pre-FEC BER goes below system can return to the "Steady" state if the pre-FEC BER goes below
another pre-defined threshold and the FEC is reconfigured to 7%. another pre-defined threshold and the FEC is reconfigured to 7%.
7. Appendix 7. Appendix
This appendix reports the YANG models code and the related tree. This appendix reports the YANG models code and the related tree.
7.1. YANG model for FSM - Tree 7.1. YANG model for FSM - Tree
module: finite-state-machine module: ietf-fsm
+--rw current-state? leafref +--rw current-state? leafref
+--rw states +--rw states
+--rw state [id] +--rw state [id]
+--rw id state-id-type +--rw id state-id-type
+--rw description? string +--rw description? string
+--rw transitions +--rw transitions
+--rw transition [name type] +--rw transition [name type]
+--rw name string +--rw name string
+--rw type transition-type +--rw type transition-type
+--rw description? string +--rw description? string
+--rw filters +--rw filters
| +--rw filter [filter-id] | +--rw filter [filter-id]
| +--rw filter-id yp:filter-id | +--rw filter-id uint32
+--rw actions +--rw actions
+--rw action [id] +--rw action [id]
+--rw id transition-id-type +--rw id transition-id-type
+--rw type enumeration +--rw type enumeration
+--rw conditional +--rw conditional
| +--rw statement string | +--rw statement string
| +--rw true | +--rw true
| | +--rw execute | | +--rw execute
| | +--rw next-action? transition-id-type | | +--rw next-action? transition-id-type
| | +--rw next-state? leafref | | +--rw next-state? leafref
skipping to change at page 15, line 7 skipping to change at page 15, line 7
| +--rw execute | +--rw execute
| +--rw next-action? transition-id-type | +--rw next-action? transition-id-type
| +--rw next-state? leafref | +--rw next-state? leafref
+--rw simple +--rw simple
+--rw execute +--rw execute
+--rw next-action? transition-id-type +--rw next-action? transition-id-type
+--rw next-state? leafref +--rw next-state? leafref
7.2. YANG model for FSM - Code 7.2. YANG model for FSM - Code
<CODE BEGINS> file "ietf-fsm@2016-03-15.yang" <CODE BEGINS> file "ietf-fsm@2016-03-15.yang"
module transitions {
namespace "http://sssup.it/transitions";
prefix ev;
import ietf-yang-push {
prefix yp;
}
organization
"Scuola Superiore Sant'Anna Network and Services Laboratory";
contact
" Editor: Matteo Dallaglio
<mailto:m.dallaglio@sssup.it>
";
description
"This module contains a YANG definitions of events and generic
reactions.";
revision 2016-03-15 {
description "Initial Revision.";
reference module ietf-fsm {
"RFC xxxx: A YANG data model for the description of events and
reactions";
} namespace "http://sssup.it/fsm";
// identity statements prefix fsm;
identity TRANSITION { identity TRANSITION {
description "Base for all types of event"; description "Base for all types of event";
} }
identity ON_CHANGE { identity ON_CHANGE {
base TRANSITION; base TRANSITION;
skipping to change at page 16, line 31 skipping to change at page 15, line 35
description description
"The event when the database changes."; "The event when the database changes.";
} }
// typedef statements // typedef statements
typedef transition-type { typedef transition-type {
description "it defines the type of transition (event)";
type identityref { type identityref {
base TRANSITION; base TRANSITION;
} }
} }
typedef transition-id-type { typedef transition-id-type {
description "it defines the id of the transition (event)";
type uint32; type uint32;
} }
// grouping statements // grouping statements
grouping action-block { grouping action-block {
description "it defines the action to perform when a transition occurs";
leaf id { leaf id {
description "it refers to the id of the transition";
type transition-id-type; type transition-id-type;
} }
leaf type { leaf type {
description "it defines if the action has to be simply executed or if a conditional statement has to be checked before execution";
type enumeration { type enumeration {
enum CONDITIONAL_OP; enum "CONDITIONAL_OP" {
description "it defines the type CONDITIONAL OPERATION to check a statement before execution";
}
enum SIMPLE_OP; enum "SIMPLE_OP" {
description "it defines the type SIMPLE OPERATION: i.e., an operation to be directly executed;
}
} }
mandatory true; mandatory true;
} }
grouping execution-top { grouping execution-top {
description "it defines the execution attribute";
anyxml execute { anyxml execute {
description "Represent the action to perform"; description "Represent the action to perform";
} }
leaf next-action { leaf next-action {
type transition-id-type; type transition-id-type;
description "the id of the next action to execute"; description "the id of the next action to execute";
} }
} }
container conditional { container conditional {
description "it defines the container CONDITIONAL";
when "../type = 'CONDITIONAL_OP'"; when "../type = 'CONDITIONAL_OP'";
leaf statement { leaf statement {
type string; type string;
mandatory true; mandatory true;
description description
"The statement to be evaluated before execution. "The statement to be evaluated before execution.
E.g. if a=b"; E.g. if a=b";
} }
container true { container true {
description "it is referred to the result TRUE of a conditional statement ";
uses execution-top; uses execution-top;
} }
container false { container false {
description "it is referred to the result FALSE of a conditional statement ";
uses execution-top; uses execution-top;
} }
} }
container simple { container simple {
description "Simple execution of an action without checking any condition";
when "../type = 'SIMPLE_OP'"; when "../type = 'SIMPLE_OP'";
description
"Simple execution of an action without checking any condition";
uses execution-top; uses execution-top;
} }
} }
grouping action-top { grouping action-top {
description "it defines the grouping of action";
list action { list action {
description "it defines the list of actions";
key "id"; key "id";
ordered-by user; ordered-by user;
uses action-block; uses action-block;
} }
} }
skipping to change at page 20, line 4 skipping to change at page 19, line 30
"This container contains a list of configurable filters "This container contains a list of configurable filters
that can be applied to subscriptions. This facilitates that can be applied to subscriptions. This facilitates
the reuse of complex filters once defined."; the reuse of complex filters once defined.";
list filter { list filter {
key "filter-id"; key "filter-id";
description description
"A list of configurable filters that can be applied to "A list of configurable filters that can be applied to
subscriptions."; subscriptions.";
leaf filter-id { leaf filter-id {
type yp:filter-id; type uint32;
description description
"An identifier to differentiate between filters."; "An identifier to differentiate between filters.";
} }
uses yp:datatree-filter;
} }
} }
} }
grouping transition-top { grouping transition-top {
description "it defines the grouping transition";
leaf name { leaf name {
description "it defines the transition name";
type string; type string;
mandatory true; mandatory true;
} }
leaf type { leaf type {
description "it defines the transition type";
type transition-type; type transition-type;
mandatory true; mandatory true;
} }
leaf description { leaf description {
description "it describes the transition ";
type string; type string;
} }
// list of all possible events // list of all possible events
uses on-change { uses on-change {
when "type = 'ON_CHANGE'"; when "type = 'ON_CHANGE'";
} }
container actions { container actions {
description "it defines the container action";
uses action-top; uses action-top;
} }
} }
grouping transitions-top { grouping transitions-top {
description "it defines the grouping transition";
container transitions { container transitions {
description "it defines the container transitions";
list transition { list transition {
description "it defines the list of transitions";
key "name type"; key "name type";
uses transition-top; uses transition-top;
} }
} }
} }
// data definition statements
// data definition statements
uses transitions-top; uses transitions-top;
// extension statements // extension statements
// feature statements // feature statements
// augment statements // augment statements
// rpc statements
// notification statements
}//module transitions
module finite-state-machine {
namespace "http://sssup.it/fsm";
prefix fsm;
import transitions {
prefix ev;
}
organization organization
"Scuola Superiore Sant'Anna Network and Services Laboratory"; "Scuola Superiore Sant'Anna Network and Services Laboratory";
contact contact
" Editor: Matteo Dallaglio " Editor: Matteo Dallaglio
<mailto:m.dallaglio@sssup.it> <mailto:m.dallaglio@sssup.it>
skipping to change at page 23, line 37 skipping to change at page 23, line 13
"RFC xxxx:"; "RFC xxxx:";
} }
// identity statements // identity statements
// typedef statements // typedef statements
typedef state-id-type { typedef state-id-type {
description "it defines the id type of the states";
type uint32; type uint32;
} }
// grouping statements // grouping statements
grouping state-top { grouping state-top {
description "it defines the grouping state";
leaf id { leaf id {
description "it defines the id of a transition";
type state-id-type; type state-id-type;
} }
leaf description { leaf description {
description "it describes a transition";
type string; type string;
} }
grouping next-state-top { grouping next-state-top {
description "it defines the grouping for the next state";
leaf next-state { leaf next-state {
description "it defines the next state";
type leafref { type leafref {
description "it refers to its id";
path "../../../../../../../../../states/state/id"; path "../../../../../../../../../states/state/id";
} }
description "Id of the next state"; description "Id of the next state";
} }
} }
uses ev:transitions-top { uses transitions-top {
augment "transitions/transition/actions/action/conditional/true" { augment "transitions/transition/actions/action/conditional/true" {
uses next-state-top; uses next-state-top;
} }
augment "transitions/transition/actions/action/conditional/false" { augment "transitions/transition/actions/action/conditional/false" {
uses next-state-top; uses next-state-top;
} }
augment "transitions/transition/actions/action/simple" { augment "transitions/transition/actions/action/simple" {
//uses next-state-top; //uses next-state-top;
leaf next-state { leaf next-state {
description "it defines the next state";
type leafref { type leafref {
description "it refers to its id";
path "../../../../../../../../states/state/id"; path "../../../../../../../../states/state/id";
} }
description "Id of the next state"; description "Id of the next state";
} }
} }
} }
} }
grouping states-top { grouping states-top {
description "it defines the grouping states";
leaf current-state { leaf current-state {
description "it defines the current state";
type leafref { type leafref {
description "it refers to its id";
path "../states/state/id"; path "../states/state/id";
} }
} }
container states { container states {
description "it defines the container states";
list state { list state {
description "it defines the list of states";
key "id"; key "id";
uses state-top; uses state-top;
} }
} }
} }
skipping to change at page 26, line 30 skipping to change at page 27, line 4
} }
// data definition statements // data definition statements
uses states-top; uses states-top;
// extension statements // extension statements
// feature statements // feature statements
// augment statements. // augment statements.
// rpc statements // rpc statements
// notification statements
}//module fsm }//module fsm
<CODE ENDS> <CODE ENDS>
7.3. Example of values for the YANG model 7.3. Example of values for the YANG model
FIELD NAME | YANG DATA TYPE | VALUE FIELD NAME | YANG DATA TYPE | VALUE
_________________|_____________________|________________________ _________________|_____________________|________________________
Current State | leafref | "an existing state id Current State | leafref | "an existing state id
| | in the FSM" | | in the FSM"
| | | |
State | | State | |
id | uint32 | 1 id | uint32 | 1
name | string | Steady name | string | Steady
skipping to change at page 29, line 9 skipping to change at page 29, line 9
9. Other Contributors 9. Other Contributors
Matteo Dallaglio (Scuola Superiore Sant'Anna), Andrea Di Giglio Matteo Dallaglio (Scuola Superiore Sant'Anna), Andrea Di Giglio
(Telecom Italia), Giacomo Bernini (Nextworks). (Telecom Italia), Giacomo Bernini (Nextworks).
10. Security Considerations 10. Security Considerations
TBD TBD
11. References 11. IANA Considerations
11.1. Normative References TBD
12. References
12.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<https://www.rfc-editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
skipping to change at page 29, line 33 skipping to change at page 29, line 37
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
[RFC7491] King, D. and A. Farrel, "A PCE-Based Architecture for [RFC7491] King, D. and A. Farrel, "A PCE-Based Architecture for
Application-Based Network Operations", RFC 7491, Application-Based Network Operations", RFC 7491,
DOI 10.17487/RFC7491, March 2015, DOI 10.17487/RFC7491, March 2015,
<https://www.rfc-editor.org/info/rfc7491>. <https://www.rfc-editor.org/info/rfc7491>.
11.2. Informative References 12.2. Informative References
[I-D.brockners-inband-oam-requirements] [I-D.brockners-inband-oam-requirements]
Brockners, F., Bhandari, S., Dara, S., Pignataro, C., Brockners, F., Bhandari, S., Dara, S., Pignataro, C.,
Gredler, H., Leddy, J., Youell, S., Mozes, D., Mizrahi, Gredler, H., Leddy, J., Youell, S., Mozes, D., Mizrahi,
T., <>, P., and r. remy@barefootnetworks.com, T., <>, P., and r. remy@barefootnetworks.com,
"Requirements for In-situ OAM", draft-brockners-inband- "Requirements for In-situ OAM", draft-brockners-inband-
oam-requirements-03 (work in progress), March 2017. oam-requirements-03 (work in progress), March 2017.
[I-D.fioccola-ippm-multipoint-alt-mark] [I-D.fioccola-ippm-multipoint-alt-mark]
Fioccola, G., Cociglio, M., Sapio, A., and R. Sisto, Fioccola, G., Cociglio, M., Sapio, A., and R. Sisto,
"Multipoint Alternate Marking method for passive and "Multipoint Alternate Marking method for passive and
hybrid performance monitoring", draft-fioccola-ippm- hybrid performance monitoring", draft-fioccola-ippm-
multipoint-alt-mark-01 (work in progress), October 2017. multipoint-alt-mark-02 (work in progress), March 2018.
[I-D.ietf-i2rs-yang-network-topo] [I-D.ietf-i2rs-yang-network-topo]
Clemm, A., Medved, J., Varga, R., Bahadur, N., Clemm, A., Medved, J., Varga, R., Bahadur, N.,
Ananthakrishnan, H., and X. Liu, "A Data Model for Network Ananthakrishnan, H., and X. Liu, "A Data Model for Network
Topologies", draft-ietf-i2rs-yang-network-topo-20 (work in Topologies", draft-ietf-i2rs-yang-network-topo-20 (work in
progress), December 2017. progress), December 2017.
[I-D.ietf-ippm-alt-mark] [I-D.ietf-ippm-alt-mark]
Fioccola, G., Capello, A., Cociglio, M., Castaldelli, L., Fioccola, G., Capello, A., Cociglio, M., Castaldelli, L.,
Chen, M., Zheng, L., Mirsky, G., and T. Mizrahi, Chen, M., Zheng, L., Mirsky, G., and T. Mizrahi,
 End of changes. 66 change blocks. 
86 lines changed or deleted 98 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/