draft-ietf-teas-yang-te-topo-02.txt   draft-ietf-teas-yang-te-topo-03.txt 
TEAS Working Group Xufeng Liu TEAS Working Group Xufeng Liu
Internet Draft Ericsson Internet Draft Ericsson
Intended status: Standards Track Igor Bryskin Intended status: Standards Track Igor Bryskin
ADVA Optical Networking Huawei Technologies
Vishnu Pavan Beeram Vishnu Pavan Beeram
Juniper Networks Juniper Networks
Tarek Saad Tarek Saad
Cisco Systems Inc Cisco Systems Inc
Himanshu Shah Himanshu Shah
Ciena Ciena
Oscar Gonzalez De Dios Oscar Gonzalez De Dios
Telefonica Telefonica
Expires: April 19, 2016 October 19, 2015 Expires: September 20, 2016 March 20, 2016
YANG Data Model for TE Topologies YANG Data Model for TE Topologies
draft-ietf-teas-yang-te-topo-02 draft-ietf-teas-yang-te-topo-03
Status of this Memo Status of this Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
Drafts. Drafts.
skipping to change at page 1, line 42 skipping to change at page 1, line 41
months and may be updated, replaced, or obsoleted by other documents months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as at any time. It is inappropriate to use Internet-Drafts as
reference material or to cite them other than as "work in progress." reference material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html http://www.ietf.org/shadow.html
This Internet-Draft will expire on April 19, 2016. This Internet-Draft will expire on September 20, 2016.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2016 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
(http://trustee.ietf.org/license-info) in effect on the date of (http://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
carefully, as they describe your rights and restrictions with carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this respect to this document. Code Components extracted from this
document must include Simplified BSD License text as described in document must include Simplified BSD License text as described in
Section 4.e of the Trust Legal Provisions and are provided without Section 4.e of the Trust Legal Provisions and are provided without
skipping to change at page 2, line 30 skipping to change at page 2, line 30
Conventions used in this document Conventions used in this document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC-2119 [RFC2119]. document are to be interpreted as described in RFC-2119 [RFC2119].
Table of Contents Table of Contents
1. Introduction...................................................3 1. Introduction...................................................3
1.1. Terminology...............................................3 1.1. Terminology...............................................4
1.2. Tree Structure - Legend...................................4 1.2. Tree Structure - Legend...................................4
1.3. Prefixes in Data Node Names...............................5 1.3. Prefixes in Data Node Names...............................5
2. Characterizing TE Topologies...................................5 2. Characterizing TE Topologies...................................5
3. Model Applicability............................................6 3. Modeling Abstractions and Transformations......................7
3.1. Native TE Topologies......................................6 3.1. TE Topology...............................................7
3.2. Customized TE Topologies..................................8 3.2. TE Node...................................................7
4. Modeling Considerations.......................................10 3.3. TE Link...................................................8
4.1. Generic network topology building blocks.................10 3.4. TE Link Termination Point (LTP)...........................8
4.2. Technology agnostic TE Topology model....................11 3.5. TE Tunnel Termination Point (TTP).........................8
4.3. Model Structure..........................................11 3.6. TE Node Connectivity Matrix...............................8
4.4. Topology Identifiers.....................................12 3.7. TTP Local Link Connectivity List (LLCL)...................9
4.5. Generic TE Link Attributes...............................13 3.8. TE Path...................................................9
4.6. Generic TE Node Attributes...............................13 3.9. Underlay TE topology......................................9
4.7. TED Information Sources..................................14 3.10. Overlay TE topology......................................9
4.8. Overlay/Underlay Relationship............................14 3.11. Abstract TE topology.....................................9
4.9. Scheduling Parameters....................................16 4. Model Applicability...........................................11
4.10. Templates...............................................16 4.1. Native TE Topologies.....................................11
4.11. Notifications...........................................17 4.2. Customized TE Topologies.................................13
4.12. Open Items..............................................18 5. Modeling Considerations.......................................15
5.1. Generic network topology building blocks.................15
5. Tree Structure................................................18 5.2. Technology agnostic TE Topology model....................16
6. TE Topology Yang Module.......................................43 5.3. Model Structure..........................................16
7. Security Considerations.......................................79 5.4. Topology Identifiers.....................................18
8. IANA Considerations...........................................79 5.5. Generic TE Link Attributes...............................18
9. References....................................................79 5.6. Generic TE Node Attributes...............................19
9.1. Normative References.....................................79 5.7. TED Information Sources..................................19
9.2. Informative References...................................80 5.8. Overlay/Underlay Relationship............................20
10. Acknowledgments..............................................80 5.9. Scheduling Parameters....................................22
Appendix A - Schedule Model......................................80 5.10. Templates...............................................22
A.1 Tree Structure............................................80 5.11. Notifications...........................................23
A.2 YANG Module...............................................81 5.12. Open Items..............................................23
Contributors.....................................................82 6. Tree Structure................................................23
Authors' Addresses...............................................82 6.1. Base TE Topology Module..................................23
6.2. Packet Switching TE Topology Module......................49
7. TE Topology Yang Modules......................................50
7.1. Base TE Topology Module..................................50
7.2. Packet Switching TE Topology Module......................95
8. Security Considerations.......................................99
9. IANA Considerations...........................................99
10. References...................................................99
10.1. Normative References....................................99
10.2. Informative References.................................100
11. Acknowledgments.............................................100
Contributors....................................................100
Authors' Addresses..............................................100
1. Introduction 1. Introduction
The Traffic Engineering Database (TED) is an essential component of The Traffic Engineering Database (TED) is an essential component of
Traffic Engineered (TE) systems that are based on MPLS-TE [RFC2702] Traffic Engineered (TE) systems that are based on MPLS-TE [RFC2702]
and GMPLS [RFC3945]. The TED is a collection of all TE information and GMPLS [RFC3945]. The TED is a collection of all TE information
about all TE nodes and TE links in the network. The TE Topology is a about all TE nodes and TE links in the network. The TE Topology is a
schematic arrangement of TE nodes and TE links present in a given schematic arrangement of TE nodes and TE links present in a given
TED. There could be one or more TE Topologies present in a given TED. There could be one or more TE Topologies present in a given
Traffic Engineered system. The TE Topology is the topology on which Traffic Engineered system. The TE Topology is the topology on which
skipping to change at page 3, line 46 skipping to change at page 4, line 15
1.1. Terminology 1.1. Terminology
TED: The Traffic Engineering Database is a collection of all TE TED: The Traffic Engineering Database is a collection of all TE
information about all TE nodes and TE links in a given network. information about all TE nodes and TE links in a given network.
TE-Topology: The TE Topology is a schematic arrangement of TE nodes TE-Topology: The TE Topology is a schematic arrangement of TE nodes
and TE links in a given TED. It forms the basis for a graph suitable and TE links in a given TED. It forms the basis for a graph suitable
for TE path computations. for TE path computations.
Native TE Topology: Native TE Topology is a topology that is native Native TE Topology: Native TE Topology is a topology that is native
to a given provider network. This is the topology on which path to a given provider network. Native TE topology could be discovered
computational algorithms are run to compute TE Paths. via various routing protocols and/or subscribe/publish techniques.
This is the topology on which path computational algorithms are run
to compute TE Paths.
Customized TE Topology: Customized TE Topology is a custom topology Customized TE Topology: Customized TE Topology is a custom topology
that is produced by a provider for a given Client. This topology that is produced by a provider for a given Client. This topology
typically augments the Client's Native TE Topology. Path typically augments the Client's Native TE Topology. Path
computational algorithms aren't typically run on the Customized TE computational algorithms aren't typically run on the Customized TE
Topology; they are run on the Client's augmented Native TE Topology. Topology; they are run on the Client's augmented Native TE Topology.
1.2. Tree Structure - Legend 1.2. Tree Structure - Legend
A simplified graphical representation of the data model is presented A simplified graphical representation of the data model is presented
in Section 5 of this document. The following notations are used for in Section 6. of this document. The following notations are used for
the YANG model data tree representation. the YANG model data tree representation.
<status> <flags> <name> <opts> <type> <status> <flags> <name> <opts> <type>
<status> is one of: <status> is one of:
+ for current + for current
x for deprecated x for deprecated
o for obsolete o for obsolete
<flags> is one of: <flags> is one of:
skipping to change at page 6, line 24 skipping to change at page 7, line 5
- TE Topologies can be customized. TE topologies of a given network - TE Topologies can be customized. TE topologies of a given network
presented by the network provider to its client could be presented by the network provider to its client could be
customized on per-client request basis. This customization could customized on per-client request basis. This customization could
be performed by provider, by client or by provider/client be performed by provider, by client or by provider/client
negotiation. The relationship between a customized topology (as negotiation. The relationship between a customized topology (as
presented to the client) and provider's native topology (as known presented to the client) and provider's native topology (as known
in its entirety to the provider itself) could be captured as in its entirety to the provider itself) could be captured as
hierarchical (overlay-underlay), but otherwise the two topologies hierarchical (overlay-underlay), but otherwise the two topologies
are decoupled from each other. are decoupled from each other.
3. Model Applicability 3. Modeling Abstractions and Transformations
3.1. Native TE Topologies Node-1 Node-3
+------------+ +------------+
| TTP-1 | | TTP-1 |
|LTP __ | TE-Tunel-1 | __ |
|-6 \/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\/ |
o * * oLTP-1 Node-2 LTP-6o * * o
| * * | +------------+ | * * |
| * TTP-2* | | | | * TTP-2* |
| * __ * |LTP-2 LTP-6| |LTP-1 LTP-5| * __ * |
o* \/ *o-----------o************o-----------o* \/ *o
|LTP * * | Link-12 | * | Link-23 | * * |
|-5 * * | LTP-5| * |LTP-2 | * * |
+--o------o--+ o************o +--o------o--+
LTP-4 LTP-3 | * * * | LTP-4 LTP-3
| ** * |
+--o------o--+
LTP-4 LTP-3
Figure 1: TE Topology Modeling Abstractions
3.1. TE Topology
TE topology is a traffic engineering representation of one or more
layers of network topologies. TE topology is comprised of TE nodes
(TE graph vertices) interconnected via TE links (TE graph edges). A
TE topology is mapped to a TE graph.
3.2. TE Node
TE node is an element of a TE topology (presented as a vertex on TE
graph). TE node represents one or several nodes (physical switches),
or a fraction of a node. TE node belongs to and is fully defined in
exactly one TE topology. TE node is assigned with the TE topology
scope unique ID. TE node attributes include information related to
the data plane aspects of the associated node(s) (e.g. connectivity
matrix), as well as configuration data (such as TE node name). A
given TE node can be reached on the TE graph over one of TE links
terminated by the TE node.
In Figure 1, Node-1, Node-2, and Node-3 are TE nodes.
3.3. TE Link
TE link is an element of a TE topology (presented as an edge on TE
graph, arrows indicate one or both directions of the TE link). TE
link represents one or several (physical) links or a fraction of a
link. TE link belongs to and is fully defined in exactly one TE
topology. TE link is assigned with the TE topology scope unique ID.
TE link attributes include parameters related to the data plane
aspects of the associated link(s) (e.g. unreserved bandwidth,
resource maps/pools, etc.), as well as the configuration data (such
as remote node/link IDs, SRLGs, administrative colors, etc.). TE
link is connected to TE node, terminating the TE link via exactly
one TE link termination point (LTP).
In Figure 1, Link-12 and Link-23 are TE links.
3.4. TE Link Termination Point (LTP)
TE link termination point (LTP) is a conceptual point of connection
of a TE node to one of the TE links, terminated by the TE node.
Cardinality between an LTP and the associated TE link is 1:0..1.
In Figure 1, Node-2 has six LTPs: LTP-1 to LTP-6.
3.5. TE Tunnel Termination Point (TTP)
TE tunnel termination point (TTP) is an element of TE topology
representing one or several of potential transport service
termination points (i.e. service client adaptation points such as
WDM/OCh transponder). TTP is associated with (hosted by) exactly one
TE node. TTP is assigned with the TE node scope unique ID. Depending
on the TE node's internal constraints, a given TTP hosted by the TE
node could be accessed via one, several or all TE links terminated
by the TE node.
In Figure 1, Node-1 has two TTPs: TTP-1 and TTP-2.
3.6. TE Node Connectivity Matrix
TE node connectivity matrix is a TE node's attribute describing the
TE node's switching limitations in a form of valid switching
combinations of the TE node's LTPs (see below). From the point of
view of a potential TE path arriving at the TE node at a given
inbound LTP, the node's connectivity matrix describes valid
(permissible) outbound LTPs for the TE path to leave the TE node
from.
In Figure 1, the connectivity matrix on Node-2 is:
{<LTP-6, LTP-1>, <LTP-5, LTP-2>, <LTP-5, LTP-4>, <LTP-4, LTP-1>,
<LTP-3, LTP-2>}
3.7. TTP Local Link Connectivity List (LLCL)
TTP Local Link Connectivity List (LLCL) is a List of TE links
terminated by the TTP hosting TE node (i.e. list of the TE link
LTPs), which the TTP could be connected to. From the point of view
of a potential TE path LLCL provides a list of valid TE links the TE
path needs to start/stop on for the connection, taking the TE path,
to be successfully terminated on the TTP in question.
In Figure 1, the LLCL on Node-1 is:
{<TTP-1, LTP-5>, <TTP-1, LTP-2>, <TTP-2, LTP-3>, <TTP-2, LTP4>}
3.8. TE Path
TE path is an ordered list of TE links and/or TE nodes on the TE
topology graph, inter-connecting a pair of TTPs to be taken by a
potential connection. TE paths, for example, could be a product of
successful path computation performed for a given transport service.
In Figure 1, the TE Path for TE-Tunnel-1 is:
{Node-1:TTP-1, Link-12, Node-2, Link-23, Node-3:TTP1}
3.9. Underlay TE topology
Underlay TE topology is a TE topology that serves as a base for
constructing of overlay TE topologies
3.10. Overlay TE topology
Overlay TE topology is a TE topology constructed based on one or
more underlay TE topologies. Each TE node of the overlay TE topology
represents an arbitrary segment of an underlay TE topology; each TE
link of the overlay TE topology represents an arbitrary TE path in
one of the underlay TE topologies. The overlay TE topology and the
supporting underlay TE topologies may represent distinct layer
networks (e.g. OTN/ODUk and WDM/OCh respectively) or the same layer
network.
3.11. Abstract TE topology
Abstract TE topology is an overlay TE topology created by a topology
provider and customized for a topology provider's client based on
one or more of the provider's native TE topologies (underlay TE
topologies), the provider's policies and the client's preferences.
For example, a first level topology provider (such as Domain
Controller) can create an abstract TE topology for its client (e.g.
Super Controller) based on the provider's one or more native TE
topologies, local policies/profiles and the client's TE topology
configuration requests
Figure 2 shows an example of abstract TE topology.
+---+ +---+
|s31|--------------|S5 |
+---+\ / +---+
\ /
\ /
\+---+/ +---+
/|AN1|\----------------|S8 |
/ +---+ \ +---+
+---+ / \ +---+
|S9 |-------------|S11|
+---+ +---+
Abstract TE Topology
+---+ +---+
|S1 |--------------------|S2 |
+---+ +---+
/ \
/ \
+---+ / +---+ \ +---+
|s3 |--------------------|S4 |---------|S5 |
+---+\ +---+ +---+
\ \ \
\ \ \
\+---+ +---+ +---+
/|S6 |\ |S7 |---------|S8 |
/ +---+ \ +---+\ /+---+
+---+ / \ +---+ +---+ /
|S9 |-------------|S10|--------------|S11|/
+---+ +---+ +---+
Native TE Topology
Figure 2: Abstract TE Topology
4. Model Applicability
4.1. Native TE Topologies
The model discussed in this draft can be used to represent and The model discussed in this draft can be used to represent and
retrieve native TE topologies on a given TE system. retrieve native TE topologies on a given TE system.
+---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+
| R1|-------| R2|--------| R3|---------| R4|---------| R5| | R1|-------| R2|--------| R3|---------| R4|---------| R5|
+---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+
| / \ / \ / | / \ / \ /
| / \ / \ / | / \ / \ /
| / \ / \ / | / \ / \ /
| / \ / \ / | / \ / \ /
| / \ / \ / | / \ / \ /
+---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+
| R6|-------------| R7| | R8|---------| R9| | R6|-------------| R7| | R8|---------| R9|
+---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+
Figure 1a: Example Network Topology Figure 3a: Example Network Topology
Consider the network topology depicted in Figure 1a (R1 .. R9 are Consider the network topology depicted in Figure 3a (R1 .. R9 are
nodes representing routers). An implementation MAY choose to nodes representing routers). An implementation MAY choose to
construct a native TE Topology using all nodes and links present in construct a native TE Topology using all nodes and links present in
the given TED as depicted in Figure 1b. The data model proposed in the given TED as depicted in Figure 3b. The data model proposed in
this document can be used to retrieve/represent this TE topology. this document can be used to retrieve/represent this TE topology.
--------------- ---------------
| Native | | [ ] TE Node | Native | | [ ] TE Node
| TE-Topology | | +++ TE Link | TE-Topology | | +++ TE Link
--------------- o-------------- --------------- o--------------
__________________
[R1] ++++ [R2] ++++ [R3] ++++ [R4] ++++ [R5]
+ + + + + +
+ + + + + +
+ + ++ ++
[R6] +++++++++ [R7] [R8] ++++ [R9]
Figure 1b: Native TE Topology as seen on Node R3 [R1] ++++ [R2] ++++ [R3] ++++ [R4] ++++ [R5]
+ + + + + +
+ + + + + +
+ + ++ ++
[R6] +++++++++ [R7] [R8] ++++ [R9]
Figure 3b: Native TE Topology as seen on Node R3
Consider the case of the topology being split in a way that some Consider the case of the topology being split in a way that some
nodes participate in OSPF-TE while others participate in ISIS-TE nodes participate in OSPF-TE while others participate in ISIS-TE
(Figure 2a). An implementation MAY choose to construct separate TE (Figure 4a). An implementation MAY choose to construct separate TE
Topologies based on the information source. The native TE Topologies Topologies based on the information source. The native TE Topologies
constructed using only nodes and links that were learnt via a constructed using only nodes and links that were learnt via a
specific information source are depicted in Figure 2b. The data specific information source are depicted in Figure 4b. The data
model proposed in this document can be used to retrieve/represent model proposed in this document can be used to retrieve/represent
these TE topologies. these TE topologies.
Similarly, the data model can be used to represent/retrieve a TE Similarly, the data model can be used to represent/retrieve a TE
Topology that is constructed using only nodes and links that belong Topology that is constructed using only nodes and links that belong
to a particular technology layer. The data model is flexible enough to a particular technology layer. The data model is flexible enough
to retrieve and represent many such native TE Topologies. to retrieve and represent many such native TE Topologies.
: :
TE info distributed via ISIS-TE : TE info distributed via OSPF-TE TE info distributed via ISIS-TE : TE info distributed via OSPF-TE
skipping to change at page 7, line 48 skipping to change at page 13, line 21
| / : \ / \ / | / : \ / \ /
| / : \ / \ / | / : \ / \ /
| / : \ / \ / | / : \ / \ /
| / : \ / \ / | / : \ / \ /
| / : \ / \ / | / : \ / \ /
+---+ +---+ : +---+ +---+ +---+ +---+ : +---+ +---+
| R6|-------------| R7| : | R8|---------| R9| | R6|-------------| R7| : | R8|---------| R9|
+---+ +---+ : +---+ +---+ +---+ +---+ : +---+ +---+
: :
Figure 2a: Example Network Topology Figure 4a: Example Network Topology
----------------------- : ----------------------- ----------------------- : -----------------------
|Native TE Topology | : |Native TE Topology | |Native TE Topology | : |Native TE Topology |
|Info-Source: ISIS-TE | : |Info-Source: OSPF-TE | |Info-Source: ISIS-TE | : |Info-Source: OSPF-TE |
----------------------- : ----------------------- ----------------------- : -----------------------
: :
[R1] ++++ [R2] ++++ [R3] : [R3'] ++++ [R4] ++++ [R5] [R1] ++++ [R2] ++++ [R3] : [R3'] ++++ [R4] ++++ [R5]
+ + : + + + + + + : + + + +
+ + : + + + + + + : + + + +
+ + : ++ ++ + + : ++ ++
[R6] +++++++++ [R7] : [R8] ++++ [R9] [R6] +++++++++ [R7] : [R8] ++++ [R9]
Figure 2b: Native TE Topologies as seen on Node R3 Figure 4b: Native TE Topologies as seen on Node R3
3.2. Customized TE Topologies 4.2. Customized TE Topologies
The model discussed in this draft can be used to represent, retrieve The model discussed in this draft can be used to represent, retrieve
and manipulate customized TE Topologies. The model allows the and manipulate customized TE Topologies. The model allows the
provider to present the network in abstract TE Terms on a per client provider to present the network in abstract TE Terms on a per client
basis. These customized topologies contain sufficient information basis. These customized topologies contain sufficient information
for the path computing client to select paths according to its for the path computing client to select paths according to its
policies. policies.
| +---+ /-\ | +---+ /-\
| | | Router ( ) WDM | | | Router ( ) WDM
| +---+ Node \-/ node | +---+ Node \-/ node
| |
o----------------------------_____ o----------------------------
__
+---+ /-\ /-\ /-\ +---+ +---+ /-\ /-\ /-\ +---+
| R1|-------( A )--------( C )---------( E )---------| R3| | R1|-------( A )--------( C )---------( E )---------| R3|
+---+ \-/ \-/ \-/ +---+ +---+ \-/ \-/ \-/ +---+
/ \ / \ / \ / \
/ \ / \ / \ / \
/ \ / \ / \ / \
/ \ / \ / \ / \
/ \ / \ / \ / \
+---+ /-\ /-\ /-\ +---+ +---+ /-\ /-\ /-\ +---+
| R2|---------( B )---------( D )---------( F )---------| R4| | R2|---------( B )---------( D )---------( F )---------| R4|
+---+ \-/ \-/ \-/ +---+ +---+ \-/ \-/ \-/ +---+
Figure 3: Example packet optical topology Figure 5: Example packet optical topology
Consider the network topology depicted in Figure 3. This is a Consider the network topology depicted in Figure 5. This is a
typical packet optical transport deployment scenario where the WDM typical packet optical transport deployment scenario where the WDM
layer network domain serves as a Server Network Domain providing layer network domain serves as a Server Network Domain providing
transport connectivity to the packet layer network Domain (Client transport connectivity to the packet layer network Domain (Client
Network Domain). Nodes R1, R2, R3 and R4 are IP routers that are Network Domain). Nodes R1, R2, R3 and R4 are IP routers that are
connected to an Optical WDM transport network. A, B, C, D, E and F connected to an Optical WDM transport network. A, B, C, D, E and F
are WDM nodes that constitute the Server Network Domain. are WDM nodes that constitute the Server Network Domain.
| ***** B-F WDM Path | ***** B-F WDM Path
| @@@@@ B-E WDM Path | @@@@@ B-E WDM Path
| $$$$$ A-E WDM Path | $$$$$ A-E WDM Path
o--------------------_ o--------------------
+---+ /-\ $$$$$$$$ /-\ $$$$$$$$$ /-\ +---+ +---+ /-\ $$$$$$$$ /-\ $$$$$$$$$ /-\ +---+
| R1|-------( A )--------( C )---------( E )---------| R3| | R1|-------( A )--------( C )---------( E )---------| R3|
+---+ \-/ @\-/ @@@@@@@@@ \-/ +---+ +---+ \-/ @\-/ @@@@@@@@@ \-/ +---+
@/ \ / \ @/ \ / \
@/ \ / \ @/ \ / \
@/ \ / \ @/ \ / \
@/ \ / \ @/ \ / \
@/ \ / \ @/ \ / \
+---+ /-\ ********* /-\ ********* /-\ +---+ +---+ /-\ ********* /-\ ********* /-\ +---+
| R2|---------( B )---------( D )---------( F )---------| R4| | R2|---------( B )---------( D )---------( F )---------| R4|
+---+ \-/ \-/ \-/ +---+ +---+ \-/ \-/ \-/ +---+
Figure 4a: Paths within the provider domain Figure 6a: Paths within the provider domain
++++++++ [A] ++++++++++++++++++++ [E] +++++++++ ++++++++ [A] ++++++++++++++++++++ [E] +++++++++
+++++ +++++
++++ ++++
++++ ++++
++++ ++++
++++ ++++
++++++++ [B] ++++++++++++++++++++ [F] +++++++++ ++++++++ [B] ++++++++++++++++++++ [F] +++++++++
Figure 4b: Customized TE Topology provided to the Client Figure 6b: Customized TE Topology provided to the Client
The goal here is to augment the Client TE Topology with a customized The goal here is to augment the Client TE Topology with a customized
TE Topology provided by the WDM network. Given the availability of TE Topology provided by the WDM network. Given the availability of
the paths A-E, B-F and B-E (Figure 4a), a customized TE Topology as the paths A-E, B-F and B-E (Figure 6a), a customized TE Topology as
depicted in Figure 4b is provided to the Client. This customized TE depicted in Figure 6b is provided to the Client. This customized TE
Topology is merged with the Client's Native TE Topology and the Topology is merged with the Client's Native TE Topology and the
resulting topology is depicted in Figure 4c. resulting topology is depicted in Figure 6c.
[R1] ++++++++ [A] ++++++++++++++++++++ [E] +++++++++ [R3] [R1] ++++++++ [A] ++++++++++++++++++++ [E] +++++++++ [R3]
+++++ +++++
++++ ++++
++++ ++++
++++ ++++
++++ ++++
[R2] ++++++++ [B] ++++++++++++++++++++ [F] +++++++++ [R4] [R2] ++++++++ [B] ++++++++++++++++++++ [F] +++++++++ [R4]
Figure 4c: Customized TE Topology merged with the Client's Native TE Figure 6c: Customized TE Topology merged with the Client's Native TE
Topology Topology
The data model proposed in this document can be used to The data model proposed in this document can be used to
retrieve/represent/manipulate the customized TE Topology depicted in retrieve/represent/manipulate the customized TE Topology depicted in
Figure 4b. Figure 6b.
4. Modeling Considerations 5. Modeling Considerations
4.1. Generic network topology building blocks 5.1. Generic network topology building blocks
The generic network topology building blocks are discussed in [YANG- The generic network topology building blocks are discussed in [YANG-
NET-TOPO]. The TE Topology model proposed in this document augments NET-TOPO]. The TE Topology model proposed in this document augments
and uses the ietf-network-topology module defined in [YANG-NET- and uses the ietf-network-topology module defined in [YANG-NET-
TOPO]. TOPO].
+------------------------+ +------------------------+
| Generic | | Generic |
| Network Topology Model | | Network Topology Model |
| (ietf-network-topology)| | (ietf-network-topology)|
skipping to change at page 10, line 44 skipping to change at page 16, line 20
| |
| |
| |
V V
+------------------------+ +------------------------+
| TE Topology | | TE Topology |
| Model | | Model |
| | | |
+------------------------+ +------------------------+
Figure 5: Augmenting the Generic Network Topology Model Figure 7: Augmenting the Generic Network Topology Model
4.2. Technology agnostic TE Topology model 5.2. Technology agnostic TE Topology model
The TE Topology model proposed in this document is meant to be The TE Topology model proposed in this document is meant to be
technology agnostic. Other technology specific TE Topology models technology agnostic. Other technology specific TE Topology models
can augment and use the building blocks provided by the proposed can augment and use the building blocks provided by the proposed
model. model.
+-------------------+ +-------------------+
| Generic | | Generic |
| TE Topology Model | | TE Topology Model |
+-------------------+ +-------------------+
skipping to change at page 11, line 27 skipping to change at page 16, line 44
+-------------+-------------+-------------+ +-------------+-------------+-------------+
| | | | | | | |
V V V V V V V V
+------------+ +------------+ +------------+ +------------+
| Technology | | Technology | | Technology | | Technology |
| Specific | ...................... | Specific | | Specific | ...................... | Specific |
| TE Topology| | TE Topology| | TE Topology| | TE Topology|
| Model 1 | | Model n | | Model 1 | | Model n |
+------------+ +------------+ +------------+ +------------+
Figure 6: Augmenting the Technology agnostic TE Topology model Figure 8: Augmenting the Technology agnostic TE Topology model
4.3. Model Structure 5.3. Model Structure
The high-level model structure proposed by this document is as shown The high-level model structure proposed by this document is as shown
below: below:
module: ietf-te-topology module: ietf-te-topology
augment /nw:network/nw:network-types: augment /nw:networks/nw:network/nw:network-types:
+--rw te-topology! +--rw te-topology!
augment /nw:network:
augment /nw:networks:
+--rw te!
+--rw templates
+--rw node-template* [name] {template}?
| ............
+--rw link-template* [name] {template}?
............
augment /nw:networks/nw:network:
+--rw te! +--rw te!
+--rw provider-id te-global-id +--rw provider-id te-global-id
+--rw client-id te-global-id +--rw client-id te-global-id
+--rw te-topology-id te-topology-id +--rw te-topology-id te-topology-id
+--rw config +--rw config
| ............ | ............
+--ro state +--ro state
| ............ ............
+--rw templates
+--rw node-template* [name] {template}?
| ............
+--rw link-template* [name] {template}?
............
augment /nw:network/nw:node: augment /nw:networks/nw:network/nw:node:
+--rw te! +--rw te!
+--rw te-node-id te-node-id +--rw te-node-id te-node-id
+--rw config +--rw config
| ............ | ............
+--ro state +--ro state
............ | ............
+--rw tunnel-termination-point* [tunnel-tp-id]
+--rw tunnel-tp-id binary
+--rw config
| ............
+--ro state
augment /nw:network/nt:link: augment /nw:networks/nw:network/nt:link:
+--rw te! +--rw te!
+--rw config +--rw config
| .......... | ..........
+--ro state +--ro state
.......... ..........
augment /nw:network/nw:node/nt:termination-point: augment /nw:networks/nw:network/nw:node/nt:termination-point:
+--rw te! +--rw te!
+--rw te-tp-id te-tp-id +--rw te-tp-id te-tp-id
+--rw config +--rw config
| ............ | ............
+--ro state +--ro state
............ ............
notifications: notifications:
+---n te-node-event +---n te-node-event
| ............ | ............
+---n te-link-event +---n te-link-event
............ ............
4.4. Topology Identifiers 5.4. Topology Identifiers
The TE-Topology is uniquely identified by a key that has 3 The TE-Topology is uniquely identified by a key that has 3
constituents - te-topology-id, provider-id and client-id. The constituents - te-topology-id, provider-id and client-id. The
combination of provider-id and te-topology-id uniquely identifies a combination of provider-id and te-topology-id uniquely identifies a
native TE Topology on a given provider. The client-id is used only native TE Topology on a given provider. The client-id is used only
when Customized TE Topologies come into play; a value of "0" is used when Customized TE Topologies come into play; a value of "0" is used
as the client-id for native TE Topologies. as the client-id for native TE Topologies.
augment /nw:network: augment /nw:networks/nw:network:
+--rw te! +--rw te!
+--rw provider-id te-global-id +--rw provider-id te-global-id
+--rw client-id te-global-id +--rw client-id te-global-id
+--rw te-topology-id te-topology-id +--rw te-topology-id te-topology-id
4.5. Generic TE Link Attributes 5.5. Generic TE Link Attributes
The model covers the definitions for generic TE Link attributes - The model covers the definitions for generic TE Link attributes -
bandwidth, admin groups, SRLGs, switching capabilities, TE metric bandwidth, admin groups, SRLGs, switching capabilities, TE metric
extensions etc. extensions etc.
+--rw te-link-attributes +--rw te-link-attributes
..................... .....................
+--rw admin-status? te-admin-status +--rw admin-status? te-admin-status
+--rw performance-metric-throttle {te-performance-metric}? +--rw performance-metric-throttle {te-performance-metric}?
| ..................... | .....................
skipping to change at page 13, line 31 skipping to change at page 19, line 9
| ..................... | .....................
+--rw te-default-metric? uint32 +--rw te-default-metric? uint32
+--rw performance-metric {te-performance-metric}? +--rw performance-metric {te-performance-metric}?
| ..................... | .....................
+--rw link-protection-type? enumeration +--rw link-protection-type? enumeration
+--rw interface-switching-capability* [switching-capability] +--rw interface-switching-capability* [switching-capability]
| ..................... | .....................
+--rw te-srlgs +--rw te-srlgs
..................... .....................
4.6. Generic TE Node Attributes 5.6. Generic TE Node Attributes
The model covers the definitions for generic TE Node attributes. The The model covers the definitions for generic TE Node attributes.
definition of a generic connectivity matrix is shown below:
The definition of a generic connectivity matrix is shown below:
+--rw te-node-attributes +--rw te-node-attributes
........... ...........
+--rw connectivity-matrix* [id] +--rw connectivity-matrix* [id]
| +--rw id uint32 | +--rw id uint32
| +--rw from | +--rw from
| | +--rw tp-ref? leafref | | +--rw tp-ref? leafref
| | +--rw node-ref? leafref
| | +--rw network-ref? leafref
| +--rw to | +--rw to
| | +--rw tp-ref? leafref | | +--rw tp-ref? leafref
| | +--rw node-ref? leafref
| | +--rw network-ref? leafref
| +--rw is-allowed? boolean | +--rw is-allowed? boolean
4.7. TED Information Sources The definition of a TTP Local Link Connectivity List is shown below:
+--rw tunnel-termination-point* [tunnel-tp-id]
+--rw tunnel-tp-id binary
+--rw config
| +--rw termination-capability* [link-tp]
| +--rw link-tp leafref
+--ro state
+--ro termination-capability* [link-tp]
| +--ro link-tp leafref
+--ro switching-capability identityref
+--ro encoding identityref
5.7. TED Information Sources
The model allows each TE topological element to have multiple TE The model allows each TE topological element to have multiple TE
information sources (OSPF-TE, ISIS-TE, BGP-LS, User-Configured, information sources (OSPF-TE, ISIS-TE, BGP-LS, User-Configured,
System-Processed, Other). Each information source is associated with System-Processed, Other). Each information source is associated with
a credibility preference to indicate precedence. In scenarios where a credibility preference to indicate precedence. In scenarios where
a customized TE Topology is merged into a Client's native TE a customized TE Topology is merged into a Client's native TE
Topology, the merged topological elements would point to the Topology, the merged topological elements would point to the
corresponding customized TE Topology as its information source. corresponding customized TE Topology as its information source.
augment /nw:network/nw:node: augment /nw:networks/nw:network/nw:node:
+--rw te! +--rw te!
........... ...........
+--ro state +--ro state
........ ........
+--ro information-source? enumeration
+--ro information-source-state +--ro information-source-state
+--ro credibility-preference? uint16 +--ro credibility-preference? uint16
+--ro topology +--ro topology
| +--ro provider-id-ref? leafref | +--ro provider-id-ref? leafref
| +--ro client-id-ref? leafref | +--ro client-id-ref? leafref
| +--ro te-topology-id-ref? leafref | +--ro te-topology-id-ref? leafref
| +--ro network-id-ref? leafref | +--ro network-id-ref? leafref
+--ro routing-instance? string +--ro routing-instance? string
augment /nw:network/nt:link: augment /nw:networks/nw:network/nt:link:
+--rw te! +--rw te!
........... ...........
+--ro state +--ro state
......... .........
+--ro information-source? enumeration +--ro information-source? enumeration
+--ro information-source-state +--ro information-source-state
| +--ro credibility-preference? uint16 | +--ro credibility-preference? uint16
| +--ro topology | +--ro topology
| | +--ro provider-id-ref? leafref | | +--ro provider-id-ref? leafref
| | +--ro client-id-ref? leafref | | +--ro client-id-ref? leafref
| | +--ro te-topology-id-ref? leafref | | +--ro te-topology-id-ref? leafref
| | +--ro network-id-ref? leafref | | +--ro network-id-ref? leafref
| +--ro routing-instance? string | +--ro routing-instance? string
+--ro alt-information-sources* [information-source] +--ro alt-information-sources* [information-source]
| ............ | ............
4.8. Overlay/Underlay Relationship 5.8. Overlay/Underlay Relationship
The model captures overlay and underlay relationship for TE The model captures overlay and underlay relationship for TE
nodes/links. For example - in networks where multiple TE Topologies nodes/links. For example - in networks where multiple TE Topologies
are built hierarchically, this model allows the user to start from a are built hierarchically, this model allows the user to start from a
specific topological element in the top most topology and traverse specific topological element in the top most topology and traverse
all the way down to the supporting topological elements in the all the way down to the supporting topological elements in the
bottom most topology. bottom most topology.
This relationship is captured via the "underlay-topology" field for This relationship is captured via the "underlay-topology" field for
the node and via the "underlay" field for the link. The use of these the node and via the "underlay" field for the link. The use of these
fields is optional and this functionality is tagged as a "feature" fields is optional and this functionality is tagged as a "feature"
("te-topology-hierarchy"). ("te-topology-hierarchy").
augment /nw:network/nw:node: augment /nw:networks/nw:network/nw:node:
+--rw te! +--rw te!
+--rw te-node-id te-node-id +--rw te-node-id te-node-id
+--rw config +--rw config
| +--rw te-node-template* leafref {template}? | +--rw te-node-template* leafref {template}?
| +--rw te-node-attributes | +--rw te-node-attributes
| .................... | ....................
| +--rw underlay-topology {te-topology-hierarchy}? | +--rw underlay-topology {te-topology-hierarchy}?
| +--rw provider-id-ref? leafref | +--rw provider-id-ref? leafref
| +--rw client-id-ref? leafref | +--rw client-id-ref? leafref
| +--rw te-topology-id-ref? leafref | +--rw te-topology-id-ref? leafref
| +--rw network-id-ref? leafref | +--rw network-id-ref? leafref
augment /nw:network/nt:link: augment /nw:networks/nw:network/nt:link:
+--rw te! +--rw te!
+--rw config +--rw config
| ......... | .........
| +--rw te-link-attributes | +--rw te-link-attributes
| .................... | ....................
| +--rw underlay! {te-topology-hierarchy}? | +--rw underlay! {te-topology-hierarchy}?
| | +--rw underlay-primary-path | | +--rw underlay-primary-path
| | | +--rw provider-id-ref? leafref | | | +--rw provider-id-ref? leafref
| | | +--rw client-id-ref? leafref | | | +--rw client-id-ref? leafref
| | | +--rw te-topology-id-ref? leafref | | | +--rw te-topology-id-ref? leafref
skipping to change at page 16, line 10 skipping to change at page 22, line 5
| | | +--rw network-id-ref? leafref | | | +--rw network-id-ref? leafref
| | | +--rw path-element* [path-element-id] | | | +--rw path-element* [path-element-id]
| | | ............... | | | ...............
| | +--rw underlay-protection-type? uint16 | | +--rw underlay-protection-type? uint16
| | +--rw underlay-trail-src | | +--rw underlay-trail-src
| | | ........... | | | ...........
| | | +--rw network-ref? leafref | | | +--rw network-ref? leafref
| | +--rw underlay-trail-des | | +--rw underlay-trail-des
| | ........... | | ...........
4.9. Scheduling Parameters 5.9. Scheduling Parameters
The model allows time scheduling parameters to be specified for each The model allows time scheduling parameters to be specified for each
topological element or for the topology as a whole. These parameters topological element or for the topology as a whole. These parameters
allow the provider to present different topological views to the allow the provider to present different topological views to the
client at different time slots. The use of "scheduling parameters" client at different time slots. The use of "scheduling parameters"
is optional and this functionality is tagged as a "feature" is optional and this functionality is tagged as a "feature"
("configuration-schedule"). [Editor's Note: The notion of ("configuration-schedule"). The YANG data model for configuration
"scheduling parameters" has wider applicability. The "schedules" scheduling is defined in [YANG-SCHEDULE] and imported by the TE
module (which is imported by the TE Topology module) is discussed Topology module.
separately in Appendix A. The expectation is that this will
eventually be discussed in a separate document.]
4.10. Templates 5.10. Templates
The data model provides the users with the ability to define The data model provides the users with the ability to define
templates and apply them to link and node configurations. The use of templates and apply them to link and node configurations. The use of
"template" configuration is optional and this functionality is "template" configuration is optional and this functionality is
tagged as a "feature" ("template"). tagged as a "feature" ("template").
+--rw topology* [provider-id client-id te-topology-id] +--rw topology* [provider-id client-id te-topology-id]
| ........... | ...........
| +--rw node* [te-node-id] | +--rw node* [te-node-id]
| | +--rw te-node-template? leafref {template}? | | +--rw te-node-template? leafref {template}?
| | .......... | | ..........
| +--rw link* [source-te-node-id source-te-link-id dest-te-node- | +--rw link* [source-te-node-id source-te-link-id dest-te-node-
id dest-te-link-id] id dest-te-link-id]
| +--rw te-link-template? leafref {template}? | +--rw te-link-template? leafref {template}?
| .......... | ..........
|
+--rw node-template* [name] {template}? +--rw node-template* [name] {template}?
| +--rw name te-template-name | +--rw name te-template-name
| +--rw priority? uint16 | +--rw priority? uint16
| +--rw reference-change-policy? enumeration | +--rw reference-change-policy? enumeration
| +--rw te-node-template* leafref
| +--rw te-node-attributes | +--rw te-node-attributes
| .......... | ..........
+--rw link-template* [name] {template}? +--rw link-template* [name] {template}?
+--rw name te-template-name +--rw name te-template-name
+--rw priority? uint16 +--rw priority? uint16
+--rw reference-change-policy? enumeration +--rw reference-change-policy? enumeration
+--rw te-link-template* leafref
+--rw te-link-attributes +--rw te-link-attributes
.......... ..........
A template can be constructed using multiple other templates. When Multiple templates can be specified to a configuration element. When
two or more templates specify values for the same configuration two or more templates specify values for the same configuration
field, the value from the template with the highest priority is field, the value from the template with the highest priority is
used. The reference-change-policy specifies the action that needs to used. The reference-change-policy specifies the action that needs to
be taken when the template changes on a configuration node that has be taken when the template changes on a configuration element that
a reference to this template. The choices of action include taking has a reference to this template. The choices of action include
no action, rejecting the change to the template and applying the taking no action, rejecting the change to the template and applying
change to the corresponding configuration. [Editor's Note: The the change to the corresponding configuration. [Editor's Note: The
notion of "templates" has wider applicability. It is possible for notion of "templates" has wider applicability. It is possible for
this to be discussed in a separate document.] this to be discussed in a separate document.]
4.11. Notifications 5.11. Notifications
Notifications are a key component of any topology data model. Notifications are a key component of any topology data model.
[YANG-PUSH] defines a subscription and push mechanism for YANG [YANG-PUSH] defines a subscription and push mechanism for YANG
datastores. This mechanism currently allows the user to: datastores. This mechanism currently allows the user to:
- Subscribe notifications on a per client basis - Subscribe notifications on a per client basis
- Specify subtree filters or xpath filters so that only interested - Specify subtree filters or xpath filters so that only interested
contents will be sent. contents will be sent.
- Specify either periodic or on-demand notifications. - Specify either periodic or on-demand notifications.
skipping to change at page 18, line 5 skipping to change at page 23, line 38
way a filter is specified. way a filter is specified.
- Specify or limit the triggering event type, e.g. "add", "delete", - Specify or limit the triggering event type, e.g. "add", "delete",
"modify", or "all". The system sends the push notifications only "modify", or "all". The system sends the push notifications only
when such events happen on the triggering entities. when such events happen on the triggering entities.
- Have an option to request either "incremental" or "full" - Have an option to request either "incremental" or "full"
notifications for an entity. For "incremental", the notification notifications for an entity. For "incremental", the notification
will contain only the changed attributes. will contain only the changed attributes.
4.12. Open Items 5.12. Open Items
- Coordinating changes to [YANG-PUSH]: The changes to [YANG-PUSH] - Coordinating changes to [YANG-PUSH]: The changes to [YANG-PUSH]
discussed in Section 4.10 will need to be coordinated with the discussed in Section 4.10 will need to be coordinated with the
authors of that draft. authors of that draft.
5. Tree Structure 6. Tree Structure
6.1. Base TE Topology Module
module: ietf-te-topology module: ietf-te-topology
augment /nw:network/nw:network-types: augment /nw:networks/nw:network/nw:network-types:
+--rw te-topology! +--rw te-topology!
augment /nw:network: augment /nw:networks:
+--rw te! +--rw te!
+--rw provider-id te-global-id
+--rw client-id te-global-id
+--rw te-topology-id te-topology-id
+--rw config
| +--rw schedules
| +--rw schedule* [schedule-id]
| +--rw schedule-id uint32
| +--rw start? yang:date-and-time
| +--rw schedule-duration? string
| +--rw repeat-interval? string
+--ro state
| +--ro schedules
| +--ro schedule* [schedule-id]
| +--ro schedule-id uint32
| +--ro start? yang:date-and-time
| +--ro schedule-duration? string
| +--ro repeat-interval? string
+--rw templates +--rw templates
+--rw node-template* [name] {template}? +--rw node-template* [name] {template}?
| +--rw name te-template-name | +--rw name te-template-name
| +--rw priority? uint16 | +--rw priority? uint16
| +--rw reference-change-policy? enumeration | +--rw reference-change-policy? enumeration
| +--rw te-node-attributes | +--rw te-node-attributes
| +--rw schedules | +--rw schedules
| | +--rw schedule* [schedule-id] | | +--rw schedule* [schedule-id]
| | +--rw schedule-id uint32 | | +--rw schedule-id uint32
| | +--rw start? yang:date-and-time | | +--rw start? yang:date-and-time
| | +--rw schedule-duration? string | | +--rw schedule-duration? string
| | +--rw repeat-interval? string | | +--rw repeat-interval? string
| +--rw admin-status? te-admin-status | +--rw admin-status? te-admin-status
| +--rw connectivity-matrix* [id] | +--rw domain-id? uint32
| | +--rw id uint32 | +--rw is-abstract? empty
| | +--rw from | +--rw name? inet:domain-name
| | | +--rw tp-ref? leafref | +--rw signaling-address* inet:ip-address
| | | +--rw node-ref? leafref
| | | +--rw network-ref? leafref
| | +--rw to
| | | +--rw tp-ref? leafref
| | | +--rw node-ref? leafref
| | | +--rw network-ref? leafref
| | +--rw is-allowed? boolean
| +--rw domain-id? uint32
| +--rw flag* te-node-flag
| +--rw is-abstract? empty
| +--rw name? inet:domain-name
| +--rw signaling-address* inet:ip-address
| +--rw underlay-topology {te-topology-hierarchy}? | +--rw underlay-topology {te-topology-hierarchy}?
| +--rw provider-id-ref? leafref | +--rw provider-id-ref? leafref
| +--rw client-id-ref? leafref | +--rw client-id-ref? leafref
| +--rw te-topology-id-ref? leafref | +--rw te-topology-id-ref? leafref
| +--rw network-id-ref? leafref | +--rw network-id-ref? leafref
+--rw link-template* [name] {template}? +--rw link-template* [name] {template}?
+--rw name te-template-name +--rw name te-template-name
+--rw priority? uint16 +--rw priority? uint16
+--rw reference-change-policy? enumeration +--rw reference-change-policy? enumeration
+--rw te-link-attributes +--rw te-link-attributes
+--rw schedules +--rw schedules
| +--rw schedule* [schedule-id] | +--rw schedule* [schedule-id]
| +--rw schedule-id uint32 | +--rw schedule-id uint32
| +--rw start? yang:date-and-time | +--rw start? yang:date-and-time
| +--rw schedule-duration? string | +--rw schedule-duration? string
| +--rw repeat-interval? string | +--rw repeat-interval? string
+--rw access-type? te-link- +--rw access-type? te-link-
access-type access-type
+--rw flag* te-link-flag
+--rw is-abstract? empty +--rw is-abstract? empty
+--rw name? string +--rw name? string
+--rw underlay! {te-topology-hierarchy}? +--rw underlay! {te-topology-hierarchy}?
| +--rw underlay-primary-path | +--rw underlay-primary-path
| | +--rw provider-id-ref? leafref | | +--rw provider-id-ref? leafref
| | +--rw client-id-ref? leafref | | +--rw client-id-ref? leafref
| | +--rw te-topology-id-ref? leafref | | +--rw te-topology-id-ref? leafref
| | +--rw network-id-ref? leafref | | +--rw network-id-ref? leafref
| | +--rw path-element* [path-element-id] | | +--rw path-element* [path-element-id]
| | +--rw path-element-id uint32 | | +--rw path-element-id uint32
skipping to change at page 23, line 35 skipping to change at page 28, line 41
+--rw link-protection-type? enumeration +--rw link-protection-type? enumeration
+--rw interface-switching-capability* [switching- +--rw interface-switching-capability* [switching-
capability] capability]
| +--rw switching-capability | +--rw switching-capability
identityref identityref
| +--rw encoding? | +--rw encoding?
identityref identityref
| +--rw max-lsp-bandwidth* [priority] | +--rw max-lsp-bandwidth* [priority]
| | +--rw priority uint8 | | +--rw priority uint8
| | +--rw bandwidth? decimal64 | | +--rw bandwidth? decimal64
| +--rw packet-switch-capable
| | +--rw minimum-lsp-bandwidth? decimal64
| | +--rw interface-mtu? uint16
| +--rw time-division-multiplex-capable | +--rw time-division-multiplex-capable
| | +--rw minimum-lsp-bandwidth? decimal64 | | +--rw minimum-lsp-bandwidth? decimal64
| | +--rw indication? enumeration | | +--rw indication? enumeration
| +--rw interface-adjustment-capability* [upper-sc] | +--rw interface-adjustment-capability* [upper-sc]
| +--rw upper-sc identityref | +--rw upper-sc identityref
| +--rw upper-encoding? identityref | +--rw upper-encoding? identityref
| +--rw max-lsp-bandwidth* [priority] | +--rw max-lsp-bandwidth* [priority]
| +--rw priority uint8 | +--rw priority uint8
| +--rw bandwidth? decimal64 | +--rw bandwidth? decimal64
+--rw te-srlgs +--rw te-srlgs
+--rw values* te-types:srlg +--rw values* te-types:srlg
augment /nw:network/nw:node: augment /nw:networks/nw:network:
+--rw te! +--rw te!
+--rw te-node-id te-node-id +--rw provider-id te-global-id
+--rw client-id te-global-id
+--rw te-topology-id te-topology-id
+--rw config
| +--rw schedules
| | +--rw schedule* [schedule-id]
| | +--rw schedule-id uint32
| | +--rw start? yang:date-and-time
| | +--rw schedule-duration? string
| | +--rw repeat-interval? string
| +--rw preference? uint8
+--ro state
+--ro schedules
| +--ro schedule* [schedule-id]
| +--ro schedule-id uint32
| +--ro start? yang:date-and-time
| +--ro schedule-duration? string
| +--ro repeat-interval? string
+--ro preference? uint8
augment /nw:networks/nw:network/nw:node:
+--rw te!
+--rw te-node-id te-node-id
+--rw config +--rw config
| +--rw te-node-template* leafref {template}? | +--rw te-node-template* leafref {template}?
| +--rw te-node-attributes | +--rw te-node-attributes
| +--rw schedules | +--rw schedules
| | +--rw schedule* [schedule-id] | | +--rw schedule* [schedule-id]
| | +--rw schedule-id uint32 | | +--rw schedule-id uint32
| | +--rw start? yang:date-and-time | | +--rw start? yang:date-and-time
| | +--rw schedule-duration? string | | +--rw schedule-duration? string
| | +--rw repeat-interval? string | | +--rw repeat-interval? string
| +--rw admin-status? te-admin-status | +--rw admin-status? te-admin-status
| +--rw connectivity-matrix* [id] | +--rw connectivity-matrix* [id]
| | +--rw id uint32 | | +--rw id uint32
| | +--rw from | | +--rw from
| | | +--rw tp-ref? leafref | | | +--rw tp-ref? leafref
| | | +--rw node-ref? leafref
| | | +--rw network-ref? leafref
| | +--rw to | | +--rw to
| | | +--rw tp-ref? leafref | | | +--rw tp-ref? leafref
| | | +--rw node-ref? leafref
| | | +--rw network-ref? leafref
| | +--rw is-allowed? boolean | | +--rw is-allowed? boolean
| +--rw domain-id? uint32 | +--rw domain-id? uint32
| +--rw flag* te-node-flag
| +--rw is-abstract? empty | +--rw is-abstract? empty
| +--rw name? inet:domain-name | +--rw name? inet:domain-name
| +--rw signaling-address* inet:ip-address | +--rw signaling-address* inet:ip-address
| +--rw underlay-topology {te-topology-hierarchy}? | +--rw underlay-topology {te-topology-hierarchy}?
| +--rw provider-id-ref? leafref | +--rw provider-id-ref? leafref
| +--rw client-id-ref? leafref | +--rw client-id-ref? leafref
| +--rw te-topology-id-ref? leafref | +--rw te-topology-id-ref? leafref
| +--rw network-id-ref? leafref | +--rw network-id-ref? leafref
+--ro state +--ro state
+--ro te-node-template* leafref {template}? | +--ro te-node-template* leafref {template}?
+--ro te-node-attributes | +--ro te-node-attributes
| +--ro schedules | | +--ro schedules
| | +--ro schedule* [schedule-id] | | | +--ro schedule* [schedule-id]
| | +--ro schedule-id uint32 | | | +--ro schedule-id uint32
| | +--ro start? yang:date-and-time | | | +--ro start? yang:date-and-time
| | +--ro schedule-duration? string | | | +--ro schedule-duration? string
| | +--ro repeat-interval? string | | | +--ro repeat-interval? string
| +--ro admin-status? te-admin-status | | +--ro admin-status? te-admin-status
| +--ro connectivity-matrix* [id] | | +--ro connectivity-matrix* [id]
| | +--ro id uint32 | | | +--ro id uint32
| | +--ro from | | | +--ro from
| | | +--ro tp-ref? leafref | | | | +--ro tp-ref? leafref
| | | +--ro node-ref? leafref | | | +--ro to
| | | +--ro network-ref? leafref | | | | +--ro tp-ref? leafref
| | +--ro to | | | +--ro is-allowed? boolean
| | | +--ro tp-ref? leafref | | +--ro domain-id? uint32
| | | +--ro node-ref? leafref | | +--ro is-abstract? empty
| | | +--ro network-ref? leafref | | +--ro name? inet:domain-name
| | +--ro is-allowed? boolean | | +--ro signaling-address* inet:ip-address
| +--ro domain-id? uint32 | | +--ro underlay-topology {te-topology-hierarchy}?
| +--ro flag* te-node-flag | | +--ro provider-id-ref? leafref
| +--ro is-abstract? empty | | +--ro client-id-ref? leafref
| +--ro name? inet:domain-name | | +--ro te-topology-id-ref? leafref
| +--ro signaling-address* inet:ip-address | | +--ro network-id-ref? leafref
| +--ro underlay-topology {te-topology-hierarchy}? | +--ro oper-status? te-oper-status
| +--ro provider-id-ref? leafref | +--ro is-multi-access-dr? empty
| +--ro client-id-ref? leafref | +--ro information-source? enumeration
| +--ro te-topology-id-ref? leafref | +--ro information-source-state
| +--ro network-id-ref? leafref | | +--ro credibility-preference? uint16
+--ro oper-status? te-oper-status | | +--ro topology
+--ro is-multi-access-dr? empty | | | +--ro provider-id-ref? leafref
+--ro information-source? enumeration | | | +--ro client-id-ref? leafref
+--ro information-source-state | | | +--ro te-topology-id-ref? leafref
+--ro credibility-preference? uint16 | | | +--ro network-id-ref? leafref
+--ro topology | | +--ro routing-instance? string
| +--ro provider-id-ref? leafref | +--ro alt-information-sources* [information-source]
| +--ro client-id-ref? leafref | +--ro information-source enumeration
| +--ro te-topology-id-ref? leafref | +--ro information-source-state
| +--ro network-id-ref? leafref | | +--ro credibility-preference? uint16
+--ro routing-instance? string | | +--ro topology
augment /nw:network/nt:link: | | | +--ro provider-id-ref? leafref
| | | +--ro client-id-ref? leafref
| | | +--ro te-topology-id-ref? leafref
| | | +--ro network-id-ref? leafref
| | +--ro routing-instance? string
| +--ro connectivity-matrix* [id]
| | +--ro id uint32
| | +--ro from
| | | +--ro tp-ref? leafref
| | +--ro to
| | | +--ro tp-ref? leafref
| | +--ro is-allowed? boolean
| +--ro domain-id? uint32
| +--ro is-abstract? empty
| +--ro name? inet:domain-name
| +--ro signaling-address* inet:ip-address
| +--ro underlay-topology {te-topology-hierarchy}?
| +--ro provider-id-ref? leafref
| +--ro client-id-ref? leafref
| +--ro te-topology-id-ref? leafref
| +--ro network-id-ref? leafref
+--rw tunnel-termination-point* [tunnel-tp-id]
+--rw tunnel-tp-id binary
+--rw config
| +--rw termination-capability* [link-tp]
| +--rw link-tp leafref
+--ro state
+--ro termination-capability* [link-tp]
| +--ro link-tp leafref
+--ro switching-capability identityref
+--ro encoding identityref
augment /nw:networks/nw:network/nt:link:
+--rw te! +--rw te!
+--rw config +--rw config
| +--rw (bundle-stack-level)? | +--rw (bundle-stack-level)?
| | +--:(bundle) | | +--:(bundle)
| | | +--rw bundled-links | | | +--rw bundled-links
| | | +--rw bundled-link* [sequence] | | | +--rw bundled-link* [sequence]
| | | +--rw sequence uint32 | | | +--rw sequence uint32
| | | +--rw src-tp-ref? leafref | | | +--rw src-tp-ref? leafref
| | | +--rw des-tp-ref? leafref | | | +--rw des-tp-ref? leafref
| | +--:(component) | | +--:(component)
skipping to change at page 26, line 13 skipping to change at page 32, line 17
| +--rw te-link-template* leafref {template}? | +--rw te-link-template* leafref {template}?
| +--rw te-link-attributes | +--rw te-link-attributes
| +--rw schedules | +--rw schedules
| | +--rw schedule* [schedule-id] | | +--rw schedule* [schedule-id]
| | +--rw schedule-id uint32 | | +--rw schedule-id uint32
| | +--rw start? yang:date-and-time | | +--rw start? yang:date-and-time
| | +--rw schedule-duration? string | | +--rw schedule-duration? string
| | +--rw repeat-interval? string | | +--rw repeat-interval? string
| +--rw access-type? te-link-access- | +--rw access-type? te-link-access-
type type
| +--rw flag* te-link-flag
| +--rw is-abstract? empty | +--rw is-abstract? empty
| +--rw name? string | +--rw name? string
| +--rw underlay! {te-topology-hierarchy}? | +--rw underlay! {te-topology-hierarchy}?
| | +--rw underlay-primary-path | | +--rw underlay-primary-path
| | | +--rw provider-id-ref? leafref | | | +--rw provider-id-ref? leafref
| | | +--rw client-id-ref? leafref | | | +--rw client-id-ref? leafref
| | | +--rw te-topology-id-ref? leafref | | | +--rw te-topology-id-ref? leafref
| | | +--rw network-id-ref? leafref | | | +--rw network-id-ref? leafref
| | | +--rw path-element* [path-element-id] | | | +--rw path-element* [path-element-id]
| | | +--rw path-element-id uint32 | | | +--rw path-element-id uint32
skipping to change at page 29, line 35 skipping to change at page 35, line 37
| | +--rw unidirectional-utilized-bandwidth? | | +--rw unidirectional-utilized-bandwidth?
performance-metric-normality performance-metric-normality
| +--rw link-protection-type? enumeration | +--rw link-protection-type? enumeration
| +--rw interface-switching-capability* [switching- | +--rw interface-switching-capability* [switching-
capability] capability]
| | +--rw switching-capability identityref | | +--rw switching-capability identityref
| | +--rw encoding? identityref | | +--rw encoding? identityref
| | +--rw max-lsp-bandwidth* [priority] | | +--rw max-lsp-bandwidth* [priority]
| | | +--rw priority uint8 | | | +--rw priority uint8
| | | +--rw bandwidth? decimal64 | | | +--rw bandwidth? decimal64
| | +--rw packet-switch-capable
| | | +--rw minimum-lsp-bandwidth? decimal64
| | | +--rw interface-mtu? uint16
| | +--rw time-division-multiplex-capable | | +--rw time-division-multiplex-capable
| | | +--rw minimum-lsp-bandwidth? decimal64 | | | +--rw minimum-lsp-bandwidth? decimal64
| | | +--rw indication? enumeration | | | +--rw indication? enumeration
| | +--rw interface-adjustment-capability* [upper-sc] | | +--rw interface-adjustment-capability* [upper-sc]
| | +--rw upper-sc identityref | | +--rw upper-sc identityref
| | +--rw upper-encoding? identityref | | +--rw upper-encoding? identityref
| | +--rw max-lsp-bandwidth* [priority] | | +--rw max-lsp-bandwidth* [priority]
| | +--rw priority uint8 | | +--rw priority uint8
| | +--rw bandwidth? decimal64 | | +--rw bandwidth? decimal64
| +--rw te-srlgs | +--rw te-srlgs
skipping to change at page 30, line 27 skipping to change at page 36, line 26
+--ro te-link-template* leafref {template}? +--ro te-link-template* leafref {template}?
+--ro te-link-attributes +--ro te-link-attributes
| +--ro schedules | +--ro schedules
| | +--ro schedule* [schedule-id] | | +--ro schedule* [schedule-id]
| | +--ro schedule-id uint32 | | +--ro schedule-id uint32
| | +--ro start? yang:date-and-time | | +--ro start? yang:date-and-time
| | +--ro schedule-duration? string | | +--ro schedule-duration? string
| | +--ro repeat-interval? string | | +--ro repeat-interval? string
| +--ro access-type? te-link-access- | +--ro access-type? te-link-access-
type type
| +--ro flag* te-link-flag
| +--ro is-abstract? empty | +--ro is-abstract? empty
| +--ro name? string | +--ro name? string
| +--ro underlay! {te-topology-hierarchy}? | +--ro underlay! {te-topology-hierarchy}?
| | +--ro underlay-primary-path | | +--ro underlay-primary-path
| | | +--ro provider-id-ref? leafref | | | +--ro provider-id-ref? leafref
| | | +--ro client-id-ref? leafref | | | +--ro client-id-ref? leafref
| | | +--ro te-topology-id-ref? leafref | | | +--ro te-topology-id-ref? leafref
| | | +--ro network-id-ref? leafref | | | +--ro network-id-ref? leafref
| | | +--ro path-element* [path-element-id] | | | +--ro path-element* [path-element-id]
| | | +--ro path-element-id uint32 | | | +--ro path-element-id uint32
skipping to change at page 33, line 47 skipping to change at page 39, line 45
| | +--ro unidirectional-utilized-bandwidth? | | +--ro unidirectional-utilized-bandwidth?
performance-metric-normality performance-metric-normality
| +--ro link-protection-type? enumeration | +--ro link-protection-type? enumeration
| +--ro interface-switching-capability* [switching- | +--ro interface-switching-capability* [switching-
capability] capability]
| | +--ro switching-capability identityref | | +--ro switching-capability identityref
| | +--ro encoding? identityref | | +--ro encoding? identityref
| | +--ro max-lsp-bandwidth* [priority] | | +--ro max-lsp-bandwidth* [priority]
| | | +--ro priority uint8 | | | +--ro priority uint8
| | | +--ro bandwidth? decimal64 | | | +--ro bandwidth? decimal64
| | +--ro packet-switch-capable
| | | +--ro minimum-lsp-bandwidth? decimal64
| | | +--ro interface-mtu? uint16
| | +--ro time-division-multiplex-capable | | +--ro time-division-multiplex-capable
| | | +--ro minimum-lsp-bandwidth? decimal64 | | | +--ro minimum-lsp-bandwidth? decimal64
| | | +--ro indication? enumeration | | | +--ro indication? enumeration
| | +--ro interface-adjustment-capability* [upper-sc] | | +--ro interface-adjustment-capability* [upper-sc]
| | +--ro upper-sc identityref | | +--ro upper-sc identityref
| | +--ro upper-encoding? identityref | | +--ro upper-encoding? identityref
| | +--ro max-lsp-bandwidth* [priority] | | +--ro max-lsp-bandwidth* [priority]
| | +--ro priority uint8 | | +--ro priority uint8
| | +--ro bandwidth? decimal64 | | +--ro bandwidth? decimal64
| +--ro te-srlgs | +--ro te-srlgs
skipping to change at page 35, line 37 skipping to change at page 41, line 33
| | +--ro unidirectional-utilized-bandwidth? | | +--ro unidirectional-utilized-bandwidth?
performance-metric-normality performance-metric-normality
| +--ro link-protection-type? enumeration | +--ro link-protection-type? enumeration
| +--ro interface-switching-capability* [switching- | +--ro interface-switching-capability* [switching-
capability] capability]
| | +--ro switching-capability identityref | | +--ro switching-capability identityref
| | +--ro encoding? identityref | | +--ro encoding? identityref
| | +--ro max-lsp-bandwidth* [priority] | | +--ro max-lsp-bandwidth* [priority]
| | | +--ro priority uint8 | | | +--ro priority uint8
| | | +--ro bandwidth? decimal64 | | | +--ro bandwidth? decimal64
| | +--ro packet-switch-capable
| | | +--ro minimum-lsp-bandwidth? decimal64
| | | +--ro interface-mtu? uint16
| | +--ro time-division-multiplex-capable | | +--ro time-division-multiplex-capable
| | | +--ro minimum-lsp-bandwidth? decimal64 | | | +--ro minimum-lsp-bandwidth? decimal64
| | | +--ro indication? enumeration | | | +--ro indication? enumeration
| | +--ro interface-adjustment-capability* [upper-sc] | | +--ro interface-adjustment-capability* [upper-sc]
| | +--ro upper-sc identityref | | +--ro upper-sc identityref
| | +--ro upper-encoding? identityref | | +--ro upper-encoding? identityref
| | +--ro max-lsp-bandwidth* [priority] | | +--ro max-lsp-bandwidth* [priority]
| | +--ro priority uint8 | | +--ro priority uint8
| | +--ro bandwidth? decimal64 | | +--ro bandwidth? decimal64
| +--ro te-srlgs | +--ro te-srlgs
| +--ro values* te-types:srlg | +--ro values* te-types:srlg
+--ro recovery +--ro recovery
| +--ro restoration-status? te-recovery-status | +--ro restoration-status? te-recovery-status
| +--ro protection-status? te-recovery-status | +--ro protection-status? te-recovery-status
+--ro underlay {te-topology-hierarchy}? +--ro underlay {te-topology-hierarchy}?
+--ro dynamic? boolean +--ro dynamic? boolean
+--ro committed? boolean +--ro committed? boolean
augment /nw:network/nw:node/nt:termination-point:
augment /nw:networks/nw:network/nw:node/nt:termination-point:
+--rw te! +--rw te!
+--rw te-tp-id te-tp-id +--rw te-tp-id te-tp-id
+--rw config +--rw config
| +--rw schedules | +--rw schedules
| +--rw schedule* [schedule-id] | +--rw schedule* [schedule-id]
| +--rw schedule-id uint32 | +--rw schedule-id uint32
| +--rw start? yang:date-and-time | +--rw start? yang:date-and-time
| +--rw schedule-duration? string | +--rw schedule-duration? string
| +--rw repeat-interval? string | +--rw repeat-interval? string
+--ro state +--ro state
skipping to change at page 37, line 8 skipping to change at page 42, line 48
| | | +--ro from | | | +--ro from
| | | | +--ro tp-ref? leafref | | | | +--ro tp-ref? leafref
| | | | +--ro node-ref? leafref | | | | +--ro node-ref? leafref
| | | | +--ro network-ref? leafref | | | | +--ro network-ref? leafref
| | | +--ro to | | | +--ro to
| | | | +--ro tp-ref? leafref | | | | +--ro tp-ref? leafref
| | | | +--ro node-ref? leafref | | | | +--ro node-ref? leafref
| | | | +--ro network-ref? leafref | | | | +--ro network-ref? leafref
| | | +--ro is-allowed? boolean | | | +--ro is-allowed? boolean
| | +--ro domain-id? uint32 | | +--ro domain-id? uint32
| | +--ro flag* te-node-flag
| | +--ro is-abstract? empty | | +--ro is-abstract? empty
| | +--ro name? inet:domain-name | | +--ro name? inet:domain-name
| | +--ro signaling-address* inet:ip-address | | +--ro signaling-address* inet:ip-address
| | +--ro underlay-topology {te-topology-hierarchy}? | | +--ro underlay-topology {te-topology-hierarchy}?
| | +--ro provider-id-ref? leafref | | +--ro provider-id-ref? leafref
| | +--ro client-id-ref? leafref | | +--ro client-id-ref? leafref
| | +--ro te-topology-id-ref? leafref | | +--ro te-topology-id-ref? leafref
| | +--ro network-id-ref? leafref | | +--ro network-id-ref? leafref
| +--ro oper-status? te-oper-status | +--ro oper-status? te-oper-status
| +--ro is-multi-access-dr? empty | +--ro is-multi-access-dr? empty
| +--ro information-source? enumeration | +--ro information-source? enumeration
| +--ro information-source-state | +--ro information-source-state
| +--ro credibility-preference? uint16 | | +--ro credibility-preference? uint16
| +--ro topology | | +--ro topology
| | +--ro provider-id-ref? leafref | | | +--ro provider-id-ref? leafref
| | +--ro client-id-ref? leafref | | | +--ro client-id-ref? leafref
| | +--ro te-topology-id-ref? leafref | | | +--ro te-topology-id-ref? leafref
| | +--ro network-id-ref? leafref | | | +--ro network-id-ref? leafref
| +--ro routing-instance? string | | +--ro routing-instance? string
| +--ro alt-information-sources* [information-source]
| +--ro information-source enumeration
| +--ro information-source-state
| | +--ro credibility-preference? uint16
| | +--ro topology
| | | +--ro provider-id-ref? leafref
| | | +--ro client-id-ref? leafref
| | | +--ro te-topology-id-ref? leafref
| | | +--ro network-id-ref? leafref
| | +--ro routing-instance? string
| +--ro connectivity-matrix* [id]
| | +--ro id uint32
| | +--ro from
| | | +--ro tp-ref? leafref
| | | +--ro node-ref? leafref
| | | +--ro network-ref? leafref
| | +--ro to
| | | +--ro tp-ref? leafref
| | | +--ro node-ref? leafref
| | | +--ro network-ref? leafref
| | +--ro is-allowed? boolean
| +--ro domain-id? uint32
| +--ro is-abstract? empty
| +--ro name? inet:domain-name
| +--ro signaling-address* inet:ip-address
| +--ro underlay-topology {te-topology-hierarchy}?
| +--ro provider-id-ref? leafref
| +--ro client-id-ref? leafref
| +--ro te-topology-id-ref? leafref
| +--ro network-id-ref? leafref
+---n te-link-event +---n te-link-event
+--ro event-type? te-topology-event-type +--ro event-type? te-topology-event-type
+--ro link-ref? leafref +--ro link-ref? leafref
+--ro network-ref? leafref +--ro network-ref? leafref
+--ro te-topology! +--ro te-topology!
+--ro te-link-attributes +--ro te-link-attributes
| +--ro schedules | +--ro schedules
| | +--ro schedule* [schedule-id] | | +--ro schedule* [schedule-id]
| | +--ro schedule-id uint32 | | +--ro schedule-id uint32
| | +--ro start? yang:date-and-time | | +--ro start? yang:date-and-time
| | +--ro schedule-duration? string | | +--ro schedule-duration? string
| | +--ro repeat-interval? string | | +--ro repeat-interval? string
| +--ro access-type? te-link-access-type | +--ro access-type? te-link-access-type
| +--ro flag* te-link-flag
| +--ro is-abstract? empty | +--ro is-abstract? empty
| +--ro name? string | +--ro name? string
| +--ro underlay! {te-topology-hierarchy}? | +--ro underlay! {te-topology-hierarchy}?
| | +--ro underlay-primary-path | | +--ro underlay-primary-path
| | | +--ro provider-id-ref? leafref | | | +--ro provider-id-ref? leafref
| | | +--ro client-id-ref? leafref | | | +--ro client-id-ref? leafref
| | | +--ro te-topology-id-ref? leafref | | | +--ro te-topology-id-ref? leafref
| | | +--ro network-id-ref? leafref | | | +--ro network-id-ref? leafref
| | | +--ro path-element* [path-element-id] | | | +--ro path-element* [path-element-id]
| | | +--ro path-element-id uint32 | | | +--ro path-element-id uint32
skipping to change at page 40, line 42 skipping to change at page 47, line 18
| | +--ro unidirectional-utilized-bandwidth? | | +--ro unidirectional-utilized-bandwidth?
performance-metric-normality performance-metric-normality
| +--ro link-protection-type? enumeration | +--ro link-protection-type? enumeration
| +--ro interface-switching-capability* [switching- | +--ro interface-switching-capability* [switching-
capability] capability]
| | +--ro switching-capability identityref | | +--ro switching-capability identityref
| | +--ro encoding? identityref | | +--ro encoding? identityref
| | +--ro max-lsp-bandwidth* [priority] | | +--ro max-lsp-bandwidth* [priority]
| | | +--ro priority uint8 | | | +--ro priority uint8
| | | +--ro bandwidth? decimal64 | | | +--ro bandwidth? decimal64
| | +--ro packet-switch-capable
| | | +--ro minimum-lsp-bandwidth? decimal64
| | | +--ro interface-mtu? uint16
| | +--ro time-division-multiplex-capable | | +--ro time-division-multiplex-capable
| | | +--ro minimum-lsp-bandwidth? decimal64 | | | +--ro minimum-lsp-bandwidth? decimal64
| | | +--ro indication? enumeration | | | +--ro indication? enumeration
| | +--ro interface-adjustment-capability* [upper-sc] | | +--ro interface-adjustment-capability* [upper-sc]
| | +--ro upper-sc identityref | | +--ro upper-sc identityref
| | +--ro upper-encoding? identityref | | +--ro upper-encoding? identityref
| | +--ro max-lsp-bandwidth* [priority] | | +--ro max-lsp-bandwidth* [priority]
| | +--ro priority uint8 | | +--ro priority uint8
| | +--ro bandwidth? decimal64 | | +--ro bandwidth? decimal64
| +--ro te-srlgs | +--ro te-srlgs
skipping to change at page 42, line 28 skipping to change at page 48, line 47
| | +--ro unidirectional-utilized-bandwidth? | | +--ro unidirectional-utilized-bandwidth?
performance-metric-normality performance-metric-normality
| +--ro link-protection-type? enumeration | +--ro link-protection-type? enumeration
| +--ro interface-switching-capability* [switching- | +--ro interface-switching-capability* [switching-
capability] capability]
| | +--ro switching-capability identityref | | +--ro switching-capability identityref
| | +--ro encoding? identityref | | +--ro encoding? identityref
| | +--ro max-lsp-bandwidth* [priority] | | +--ro max-lsp-bandwidth* [priority]
| | | +--ro priority uint8 | | | +--ro priority uint8
| | | +--ro bandwidth? decimal64 | | | +--ro bandwidth? decimal64
| | +--ro packet-switch-capable
| | | +--ro minimum-lsp-bandwidth? decimal64
| | | +--ro interface-mtu? uint16
| | +--ro time-division-multiplex-capable | | +--ro time-division-multiplex-capable
| | | +--ro minimum-lsp-bandwidth? decimal64 | | | +--ro minimum-lsp-bandwidth? decimal64
| | | +--ro indication? enumeration | | | +--ro indication? enumeration
| | +--ro interface-adjustment-capability* [upper-sc] | | +--ro interface-adjustment-capability* [upper-sc]
| | +--ro upper-sc identityref | | +--ro upper-sc identityref
| | +--ro upper-encoding? identityref | | +--ro upper-encoding? identityref
| | +--ro max-lsp-bandwidth* [priority] | | +--ro max-lsp-bandwidth* [priority]
| | +--ro priority uint8 | | +--ro priority uint8
| | +--ro bandwidth? decimal64 | | +--ro bandwidth? decimal64
| +--ro te-srlgs | +--ro te-srlgs
| +--ro values* te-types:srlg | +--ro values* te-types:srlg
+--ro recovery +--ro recovery
| +--ro restoration-status? te-recovery-status | +--ro restoration-status? te-recovery-status
| +--ro protection-status? te-recovery-status | +--ro protection-status? te-recovery-status
+--ro underlay {te-topology-hierarchy}? +--ro underlay {te-topology-hierarchy}?
+--ro dynamic? boolean +--ro dynamic? boolean
+--ro committed? boolean +--ro committed? Boolean
6. TE Topology Yang Module 6.2. Packet Switching TE Topology Module
<CODE BEGINS> module: ietf-te-topology-psc
augment /nw:networks/tet:te/tet:templates/tet:link-template/tet:te-
link-attributes/tet:interface-switching-capability:
+--rw packet-switch-capable
+--rw minimum-lsp-bandwidth? decimal64
+--rw interface-mtu? uint16
augment /nw:networks/nw:network/nt:link/tet:te/tet:config/tet:te-
link-attributes/tet:interface-switching-capability:
+--rw packet-switch-capable
+--rw minimum-lsp-bandwidth? decimal64
+--rw interface-mtu? uint16
augment /nw:networks/nw:network/nt:link/tet:te/tet:state/tet:te-
link-attributes/tet:interface-switching-capability:
+--ro packet-switch-capable
+--ro minimum-lsp-bandwidth? decimal64
+--ro interface-mtu? uint16
augment /nw:networks/nw:network/nt:link/tet:te/tet:state/tet:alt-
information-sources/tet:interface-switching-capability:
+--ro packet-switch-capable
+--ro minimum-lsp-bandwidth? decimal64
+--ro interface-mtu? uint16
augment /tet:te-link-event/tet:te-link-attributes/tet:interface-
switching-capability:
+---- packet-switch-capable
+---- minimum-lsp-bandwidth? decimal64
+---- interface-mtu? uint16
augment /tet:te-link-event/tet:alt-information-
sources/tet:interface-switching-capability:
+---- packet-switch-capable
+---- minimum-lsp-bandwidth? decimal64
+---- interface-mtu? uint16
7. TE Topology Yang Modules
7.1. Base TE Topology Module
<CODE BEGINS> file "ietf-te-topology@2016-03-17.yang"
module ietf-te-topology { module ietf-te-topology {
yang-version 1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology"; namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology";
// replace with IANA namespace when assigned // replace with IANA namespace when assigned
prefix "tet"; prefix "tet";
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
} }
import ietf-schedule { import ietf-schedule {
skipping to change at page 43, line 36 skipping to change at page 50, line 39
} }
import ietf-network { import ietf-network {
prefix "nw"; prefix "nw";
} }
import ietf-network-topology { import ietf-network-topology {
prefix "nt"; prefix "nt";
} }
organization "TBD"; organization
contact "TBD"; "Traffic Engineering Architecture and Signaling (TEAS)
Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/teas/>
WG List: <mailto:teas@ietf.org>
WG Chair: Lou Berger
<mailto:lberger@labn.net>
WG Chair: Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net>
Editor: Xufeng Liu
<mailto:xliu@kuatrotech.com>
Editor: Igor Bryskin
<mailto:Igor.Bryskin@huawei.com>
Editor: Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net>
Editor: Tarek Saad
<mailto:tsaad@cisco.com>
Editor: Himanshu Shah
<mailto:hshah@ciena.com>
Editor: Oscar Gonzalez De Dios
<mailto:oscar.gonzalezdedios@telefonica.com>";
description "TE topology model"; description "TE topology model";
revision "2015-10-16" { revision "2016-03-17" {
description "Initial revision"; description "Initial revision";
reference "TBD"; reference "TBD";
} }
/* /*
* Features * Features
*/ */
feature configuration-schedule { feature configuration-schedule {
description description
skipping to change at page 45, line 4 skipping to change at page 53, line 9
"Normal."; "Normal.";
} }
enum "abnormal" { enum "abnormal" {
value 2; value 2;
description description
"Abnormal. The anomalous bit is set."; "Abnormal. The anomalous bit is set.";
} }
} }
description description
"Indicates whether a performance metric is normal, abnormal, "Indicates whether a performance metric is normal, abnormal,
or unknown."; or
unknown.";
reference reference
"RFC7471: OSPF Traffic Engineering (TE) Metric Extensions."; "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.";
} }
typedef te-admin-status { typedef te-admin-status {
type enumeration { type enumeration {
enum up { enum up {
description description
"Enabled."; "Enabled.";
} }
skipping to change at page 45, line 48 skipping to change at page 54, line 14
"Defines a type representing the administrative status of "Defines a type representing the administrative status of
a TE resource."; a TE resource.";
} }
typedef te-global-id { typedef te-global-id {
type uint32; type uint32;
description description
"An identifier to uniquely identify an operator, which can be "An identifier to uniquely identify an operator, which can be
either a provider or a client. either a provider or a client.
The definition of this type is taken from RFC6370 and The definition of this type is taken from RFC6370 and
RFC5003. This attribute type is used solely to provide a RFC5003.
globally unique context for TE topologies."; This attribute type is used solely to provide a globally
unique context for TE topologies.";
} }
typedef te-link-access-type { typedef te-link-access-type {
type enumeration { type enumeration {
enum point-to-point { enum point-to-point {
description description
"The link is point-to-point."; "The link is point-to-point.";
} }
enum multi-access { enum multi-access {
description description
skipping to change at page 47, line 37 skipping to change at page 56, line 15
enum normal { enum normal {
description description
"Both the recovery and working spans are fully "Both the recovery and working spans are fully
allocated and active, data traffic is being allocated and active, data traffic is being
transported over (or selected from) the working transported over (or selected from) the working
span, and no trigger events are reported."; span, and no trigger events are reported.";
} }
enum recovery-started { enum recovery-started {
description description
"The recovery action has been started, but not "The recovery action has been started, but not
completed."; completed.";
} }
enum recovery-succeeded { enum recovery-succeeded {
description description
"The recovery action has succeeded. The working span has "The recovery action has succeeded. The working span has
reported a failure/degrade condition and the user traffic reported a failure/degrade condition and the user traffic
is being transported (or selected) on the recovery is being transported (or selected) on the recovery
span."; span.";
} }
enum recovery-failed { enum recovery-failed {
description description
"The recovery action has failed."; "The recovery action has failed.";
} }
enum reversion-started { enum reversion-started {
description description
"The reversion has started."; "The reversion has started.";
} }
enum reversion-failed { enum reversion-failed {
skipping to change at page 49, line 37 skipping to change at page 58, line 28
} }
typedef te-tp-id { typedef te-tp-id {
type union { type union {
type uint32; // Unnumbered type uint32; // Unnumbered
type inet:ip-address; // IPv4 or IPv6 address type inet:ip-address; // IPv4 or IPv6 address
} }
description description
"An identifier for a TE link endpoint on a node. "An identifier for a TE link endpoint on a node.
This attribute is mapped to local or remote link identifier This attribute is mapped to local or remote link identifier
in RFC3630 and RFC5305."; in
RFC3630 and RFC5305.";
} }
/* /*
* Identities * Identities
*/ */
identity te-flag-base {
description "Base type for flags.";
}
identity te-link-flag {
base "te-flag-base";
description "TE link flag.";
}
identity te-node-flag {
base "te-flag-base";
description "TE node flag.";
}
identity te-undefined-flag {
base "te-flag-base";
description "Undefined flag.";
}
typedef te-node-flag {
type identityref {
base "te-node-flag";
}
description "Type for TE node flags.";
}
typedef te-link-flag {
type identityref {
base "te-link-flag";
}
description "Type for TE link flags.";
}
/* /*
* Groupings * Groupings
*/ */
grouping network-ref {
description
"Contains the information necessary to reference a network,
for example an underlay network.";
leaf network-ref {
type leafref {
path "/nw:network/nw:network-id";
}
description
"Used to reference a network, for example an underlay
network.";
}
}
grouping node-ref {
description
"Contains the information necessary to reference a node.";
leaf node-ref {
type leafref {
path "/nw:network[nw:network-id=current()/../network-ref]"+
"/nw:node/nw:node-id";
}
description
"Used to reference a node.
Nodes are identified relative to the network they are
contained in.";
}
uses network-ref;
}
grouping link-ref {
description
"References a link in a specific network.";
leaf link-ref {
type leafref {
path "/nw:network[nw:network-id=current()/../"+
"network-ref]/nt:link/nt:link-id";
}
description
"A type for an absolute reference a link instance.
(This type should not be used for relative references.
In such a case, a relative path should be used instead.)";
}
uses network-ref;
}
grouping tp-ref {
description
"References a termination point in a specific node.";
leaf tp-ref {
type leafref {
path "/nw:network[nw:network-id=current()/../"+
"network-ref]/nw:node[nw:node-id=current()/../"+
"node-ref]/nt:termination-point/nt:tp-id";
}
description
"A type for an absolute reference to a termination point.
(This type should not be used for relative references.
In such a case, a relative path should be used instead.)";
}
uses node-ref;
}
grouping information-source-attributes { grouping information-source-attributes {
description description
"The attributes identifying source that has provided the "The attributes identifying source that has provided the
related information, and the source credibility."; related information, and the source credibility.";
leaf information-source { leaf information-source {
type enumeration { type enumeration {
enum "unknown" { enum "unknown" {
description "The source is unknown."; description "The source is unknown.";
} }
enum "locally-configured" { enum "locally-configured" {
skipping to change at page 56, line 46 skipping to change at page 64, line 24
"Interval in seconds to suppress advertising the extended "Interval in seconds to suppress advertising the extended
metric values."; metric values.";
} }
container threshold-out { container threshold-out {
uses performance-metric-attributes; uses performance-metric-attributes;
description description
"If the measured parameter falls outside an upper bound "If the measured parameter falls outside an upper bound
for all but the min delay metric (or lower bound for for all but the min delay metric (or lower bound for
min-delay metric only) and the advertised value is not min-delay metric only) and the advertised value is not
already outside that bound, anomalous announcement will already outside that bound, anomalous announcement will
be triggered."; be
triggered.";
} }
container threshold-in { container threshold-in {
uses performance-metric-attributes; uses performance-metric-attributes;
description description
"If the measured parameter falls inside an upper bound "If the measured parameter falls inside an upper bound
for all but the min delay metric (or lower bound for for all but the min delay metric (or lower bound for
min-delay metric only) and the advertised value is not min-delay metric only) and the advertised value is not
already inside that bound, normal (anomalous-flag already inside that bound, normal (anomalous-flag
cleared) announcement will be triggered."; cleared)
announcement will be triggered.";
} }
container threshold-accelerated-advertisement { container threshold-accelerated-advertisement {
description description
"When the difference between the last advertised value and "When the difference between the last advertised value and
current measured value exceed this threshold, anomalous current measured value exceed this threshold, anomalous
announcement will be triggered."; announcement will be triggered.";
uses performance-metric-attributes; uses performance-metric-attributes;
} }
} }
} // performance-metric-throttle-container } // performance-metric-throttle-container
grouping te-link-augment { grouping te-link-augment {
description description
"Augmentatin for TE link."; "Augmentation for TE link.";
container te { container te {
presence "TE support."; presence "TE support.";
description description
"Indicates TE support."; "Indicates TE support.";
container config { container config {
description description
"Configuration data."; "Configuration data.";
uses te-link-config; uses te-link-config;
skipping to change at page 59, line 40 skipping to change at page 67, line 38
destinatioin node."; destinatioin node.";
} }
} }
} }
} }
} // bundle-stack-level } // bundle-stack-level
leaf-list te-link-template { leaf-list te-link-template {
if-feature template; if-feature template;
type leafref { type leafref {
path "../../../../te/templates/link-template/name"; path "../../../../../te/templates/link-template/name";
} }
description description
"The reference to a TE link template."; "The reference to a TE link template.";
} }
uses te-link-config-attributes; uses te-link-config-attributes;
} // te-link-config } // te-link-config
grouping te-link-config-attributes { grouping te-link-config-attributes {
description description
"Link configuration attributes in a TE topology."; "Link configuration attributes in a TE topology.";
container te-link-attributes { container te-link-attributes {
description "Link attributes in a TE topology."; description "Link attributes in a TE topology.";
uses sch:schedules; uses sch:schedules;
leaf access-type { leaf access-type {
type te-link-access-type; type te-link-access-type;
skipping to change at page 60, line 14 skipping to change at page 68, line 19
"Link configuration attributes in a TE topology."; "Link configuration attributes in a TE topology.";
container te-link-attributes { container te-link-attributes {
description "Link attributes in a TE topology."; description "Link attributes in a TE topology.";
uses sch:schedules; uses sch:schedules;
leaf access-type { leaf access-type {
type te-link-access-type; type te-link-access-type;
description description
"Link access type, which can be point-to-point or "Link access type, which can be point-to-point or
multi-access."; multi-access.";
} }
leaf-list flag {
type te-link-flag;
description "Link flags.";
}
leaf is-abstract { leaf is-abstract {
type empty; type empty;
description "Present if the link is abstract."; description "Present if the link is abstract.";
} }
leaf name { leaf name {
type string; type string;
description "Link Name."; description "Link Name.";
} }
container underlay { container underlay {
if-feature te-topology-hierarchy; if-feature te-topology-hierarchy;
skipping to change at page 60, line 43 skipping to change at page 69, line 4
Generalized Multi-Protocol Label Switching (GMPLS) Generalized Multi-Protocol Label Switching (GMPLS)
Traffic Engineering (TE)"; Traffic Engineering (TE)";
uses te-link-underlay-attributes; uses te-link-underlay-attributes;
} // underlay } // underlay
leaf admin-status { leaf admin-status {
type te-admin-status; type te-admin-status;
description description
"The administrative state of the link."; "The administrative state of the link.";
} }
uses performance-metric-throttle-container; uses performance-metric-throttle-container;
uses te-link-info-attributes; uses te-link-info-attributes;
} } // te-link-attributes
} // te-link-config-attributes } // te-link-config-attributes
grouping te-link-info-attributes { grouping te-link-info-attributes {
description description
"Advertised TE information attributes."; "Advertised TE information attributes.";
leaf link-index { leaf link-index {
type uint64; type uint64;
description description
"The link identifier. If OSPF is used, this represents an "The link identifier. If OSPF is used, this represents an
ospfLsdbID. If IS-IS is used, this represents an ospfLsdbID. If IS-IS is used, this represents an
isisLSPID. If a locally configured link is used, this isisLSPID.
object represents a unique value, which is locally defined If a locally configured link is used, this object
in a router."; represents
a unique value, which is locally defined in a router.";
} }
leaf administrative-group { leaf administrative-group {
type te-types:admin-groups; type te-types:admin-groups;
description description
"Administrative group or color of the link. "Administrative group or color of the link.
This attribute covers both administrative group (defined in This attribute covers both administrative group (defined in
RFC3630, RFC5329, and RFC5305), and extended administrative RFC3630, RFC5329, and RFC5305), and extended administrative
group (defined in RFC7308)."; group (defined in RFC7308).";
} }
leaf max-link-bandwidth { leaf max-link-bandwidth {
skipping to change at page 64, line 19 skipping to change at page 73, line 4
list max-lsp-bandwidth { list max-lsp-bandwidth {
key "priority"; key "priority";
max-elements "8"; max-elements "8";
description description
"Maximum LSP Bandwidth at priorities 0-7."; "Maximum LSP Bandwidth at priorities 0-7.";
leaf priority { leaf priority {
type uint8 { type uint8 {
range "0..7"; range "0..7";
} }
description "Priority."; description "Priority.";
} }
leaf bandwidth { leaf bandwidth {
type decimal64 { type decimal64 {
fraction-digits 2; fraction-digits 2;
} }
description description
"Max LSP Bandwidth for this level"; "Max LSP Bandwidth for this level";
} }
} }
container packet-switch-capable {
when "../switching-capability = 'PSC-1' or "
+"../switching-capability = 'PSC-2' or "
+"../switching-capability = 'PSC-3' or "
+"../switching-capability = 'PSC-4'" {
description "Valid only for PSC";
}
description
"Interface has packet-switching capabilities.";
leaf minimum-lsp-bandwidth {
type decimal64 {
fraction-digits 2;
}
description
"Minimum LSP Bandwidth. Units in bytes per second";
}
leaf interface-mtu {
type uint16;
description
"Interface MTU.";
}
}
container time-division-multiplex-capable { container time-division-multiplex-capable {
when "../switching-capability = 'TDM'" { when "../switching-capability = 'TDM'" {
description "Valid only for TDM"; description "Valid only for TDM";
} }
description description
"Interface has time-division multiplex capabilities."; "Interface has time-division multiplex capabilities.";
leaf minimum-lsp-bandwidth { leaf minimum-lsp-bandwidth {
type decimal64 { type decimal64 {
fraction-digits 2; fraction-digits 2;
skipping to change at page 65, line 38 skipping to change at page 74, line 7
} }
description description
"Indication whether the interface supports Standard or "Indication whether the interface supports Standard or
Arbitrary SONET/SDH"; Arbitrary SONET/SDH";
} }
} }
list interface-adjustment-capability { list interface-adjustment-capability {
key "upper-sc"; key "upper-sc";
description description
"List of Interface Adjustment Capability Descriptors "List of Interface Adjustment Capability Descriptors
(IACD)for this link."; (IACD)
for this link.";
reference reference
"RFC6001: Generalized MPLS (GMPLS) Protocol Extensions "RFC6001: Generalized MPLS (GMPLS) Protocol Extensions
for Multi-Layer and Multi-Region Networks (MLN/MRN)."; for Multi-Layer and Multi-Region Networks (MLN/MRN).";
leaf upper-sc { leaf upper-sc {
type identityref { type identityref {
base te-types:switching-capabilities; base te-types:switching-capabilities;
} }
description description
"Switching Capability for this interface."; "Switching Capability for this interface.";
} }
skipping to change at page 68, line 29 skipping to change at page 77, line 17
type uint32; type uint32;
description "To identify the element in a path."; description "To identify the element in a path.";
} }
uses te-path-element; uses te-path-element;
} }
} // underlay-primary-path } // underlay-primary-path
list underlay-backup-path { list underlay-backup-path {
key "index"; key "index";
description description
"A list of backup service paths on the underlay topology "A list of backup service paths on the underlay topology
that protect the underlay primary path. If the primary path that
is not protected, the list contains zero elements. If the protect the underlay primary path. If the primary path is
not protected, the list contains zero elements. If the
primary path is protected, the list contains one or more primary path is protected, the list contains one or more
elements."; elements.";
leaf index { leaf index {
type uint32; type uint32;
description description
"A sequence number to identify a backup path."; "A sequence number to identify a backup path.";
} }
uses te-topology-ref; uses te-topology-ref;
list path-element { list path-element {
key "path-element-id"; key "path-element-id";
skipping to change at page 69, line 4 skipping to change at page 77, line 39
key "path-element-id"; key "path-element-id";
description description
"A list of path elements describing the backup service "A list of path elements describing the backup service
path"; path";
leaf path-element-id { leaf path-element-id {
type uint32; type uint32;
description "To identify the element in a path."; description "To identify the element in a path.";
} }
uses te-path-element; uses te-path-element;
} }
} // underlay-backup-path } // underlay-backup-path
leaf underlay-protection-type { leaf underlay-protection-type {
type uint16; type uint16;
description description
"Underlay protection type desired for this link"; "Underlay protection type desired for this link";
} }
container underlay-trail-src { container underlay-trail-src {
uses tet:tp-ref; uses nt:tp-ref;
description description
"Source TE link of the underlay trail."; "Source TE link of the underlay trail.";
} }
container underlay-trail-des { container underlay-trail-des {
uses tet:tp-ref; uses nt:tp-ref;
description description
"Destination TE link of the underlay trail."; "Destination TE link of the underlay trail.";
} }
} // te-link-underlay-attributes } // te-link-underlay-attributes
grouping te-node-augment { grouping te-node-augment {
description description
"Augmentatin for TE node."; "Augmentation for TE node.";
container te { container te {
presence "TE support."; presence "TE support.";
description description
"Indicates TE support."; "Indicates TE support.";
leaf te-node-id { leaf te-node-id {
type te-node-id; type te-node-id;
mandatory true; mandatory true;
description description
skipping to change at page 70, line 6 skipping to change at page 79, line 8
uses te-node-config; uses te-node-config;
} // config } // config
container state { container state {
config false; config false;
description description
"Operational state data."; "Operational state data.";
uses te-node-config; uses te-node-config;
uses te-node-state-derived; uses te-node-state-derived;
} // state } // state
list tunnel-termination-point {
key "tunnel-tp-id";
description
"A termination point can terminate a tunnel.";
leaf tunnel-tp-id {
type binary;
description
"Tunnel termination point identifier.";
}
container config {
description
"Configuration data.";
uses te-node-tunnel-termination-capability;
}
container state {
config false;
description
"Operational state data.";
uses te-node-tunnel-termination-capability;
leaf switching-capability {
type identityref {
base te-types:switching-capabilities;
}
mandatory true;
description
"Switching Capability.";
}
leaf encoding {
type identityref {
base te-types:lsp-encoding-types;
}
mandatory true;
description
"Encoding type.";
}
} // state
} // tunnel-termination-point
} // te } // te
} // te-node-augment } // te-node-augment
grouping te-node-config { grouping te-node-config {
description "TE node configuration grouping."; description "TE node configuration grouping.";
leaf-list te-node-template { leaf-list te-node-template {
if-feature template; if-feature template;
type leafref { type leafref {
path "../../../../te/templates/node-template/name"; path "../../../../../te/templates/node-template/name";
} }
description description
"The reference to a TE node template."; "The reference to a TE node template.";
} }
uses te-node-config-attributes; uses te-node-config-attributes;
} // te-node-config } // te-node-config
grouping te-node-config-attributes { grouping te-node-config-attributes {
description "Configuration node attributes in a TE topology."; description "Configuration node attributes in a TE topology.";
container te-node-attributes { container te-node-attributes {
description "Containing node attributes in a TE topology."; description "Containing node attributes in a TE topology.";
uses sch:schedules; uses sch:schedules;
leaf admin-status { leaf admin-status {
type te-admin-status; type te-admin-status;
description description
"The administrative state of the link."; "The administrative state of the link.";
} }
list connectivity-matrix { uses te-node-connectivity-matrix;
key "id"; uses te-node-info-attributes;
} // te-node-attributes
} // te-node-config-attributes
grouping te-node-config-attributes-notification {
description
"Configuration node attributes for template in a TE
topology.";
container te-node-attributes {
description "Containing node attributes in a TE topology.";
uses sch:schedules;
leaf admin-status {
type te-admin-status;
description description
"Represents node's switching limitations, i.e. limitations "The administrative state of the link.";
in interconnecting network TE links across the node."; }
leaf id { uses te-node-connectivity-matrix-abs;
type uint32; uses te-node-info-attributes;
description "Identifies the connectivity-matrix entry."; } // te-node-attributes
} } // te-node-config-attributes-notification
container from {
uses tet:tp-ref; grouping te-node-config-attributes-template {
description description
"Reference to source NTP."; "Configuration node attributes for template in a TE
} topology.";
container to { container te-node-attributes {
uses tet:tp-ref; description "Containing node attributes in a TE topology.";
uses sch:schedules;
leaf admin-status {
type te-admin-status;
description
"The administrative state of the link.";
}
uses te-node-info-attributes;
} // te-node-attributes
} // te-node-config-attributes-template
grouping te-node-connectivity-matrix {
description "Connectivity matrix on a TE node.";
list connectivity-matrix {
key "id";
description
"Represents node's switching limitations, i.e. limitations
in interconnecting network TE links across the node.";
reference
"RFC7579: General Network Element Constraint Encoding
for GMPLS-Controlled Networks.";
leaf id {
type uint32;
description "Identifies the connectivity-matrix entry.";
}
container from {
leaf tp-ref {
type leafref {
path "../../../../../../nt:termination-point/nt:tp-id";
}
description description
"Reference to destination NTP."; "Relative reference to source termination point.";
} }
leaf is-allowed { description
type boolean; "Reference to source NTP.";
}
container to {
leaf tp-ref {
type leafref {
path "../../../../../../nt:termination-point/nt:tp-id";
}
description description
"true - switching is allowed, "Relative reference to destination termination point.";
false - switching is disallowed.";
} }
description
"Reference to destination NTP.";
} }
leaf domain-id { leaf is-allowed {
type uint32; type boolean;
description description
"Identifies the domain that this node belongs. "true - switching is allowed,
This attribute is used to support inter-domain links."; false - switching is disallowed.";
reference
"RFC5152: A Per-Domain Path Computation Method for
Establishing Inter-Domain Traffic Engineering (TE)
Label Switched Paths (LSPs).
RFC5392: OSPF Extensions in Support of Inter-Autonomous
System (AS) MPLS and GMPLS Traffic Engineering.
RFC5316: ISIS Extensions in Support of Inter-Autonomous
System (AS) MPLS and GMPLS Traffic Engineering.";
} }
leaf-list flag { }
type te-node-flag; } // te-node-connectivity-matrix
description "Node operational flags.";
grouping te-node-connectivity-matrix-abs {
description
"Connectivity matrix on a TE node, using absolute
paths to reference termination points.";
list connectivity-matrix {
key "id";
description
"Represents node's switching limitations, i.e. limitations
in interconnecting network TE links across the node.";
reference
"RFC7579: General Network Element Constraint Encoding
for GMPLS-Controlled Networks.";
leaf id {
type uint32;
description "Identifies the connectivity-matrix entry.";
} }
leaf is-abstract { container from {
type empty; uses nt:tp-ref;
description description
"Present if the node is abstract, not present if the node "Reference to source NTP.";
is actual.";
}
leaf name {
type inet:domain-name;
description "Node name.";
} }
leaf-list signaling-address { container to {
type inet:ip-address; uses nt:tp-ref;
description "Node signaling address."; description
"Reference to destination NTP.";
} }
container underlay-topology { leaf is-allowed {
if-feature te-topology-hierarchy; type boolean;
description description
"When an abstract node encapsulates a topology, "true - switching is allowed,
the attributes in this container point to said false - switching is disallowed.";
topology.";
uses te-topology-ref;
} }
} }
} // te-node-config-attributes } // te-node-connectivity-matrix-abs
grouping te-node-info-attributes {
description
"Advertised TE information attributes.";
leaf domain-id {
type uint32;
description
"Identifies the domain that this node belongs.
This attribute is used to support inter-domain links.";
reference
"RFC5152: A Per-Domain Path Computation Method for
Establishing Inter-Domain Traffic Engineering (TE)
Label Switched Paths (LSPs).
RFC5392: OSPF Extensions in Support of Inter-Autonomous
System (AS) MPLS and GMPLS Traffic Engineering.
RFC5316: ISIS Extensions in Support of Inter-Autonomous
System (AS) MPLS and GMPLS Traffic Engineering.";
}
leaf is-abstract {
type empty;
description
"Present if the node is abstract, not present if the node
is actual.";
}
leaf name {
type inet:domain-name;
description "Node name.";
}
leaf-list signaling-address {
type inet:ip-address;
description "Node signaling address.";
}
container underlay-topology {
if-feature te-topology-hierarchy;
description
"When an abstract node encapsulates a topology,
the attributes in this container point to said topology.";
uses te-topology-ref;
}
} // te-node-info-attributes
grouping te-node-state-derived { grouping te-node-state-derived {
description "Node state attributes in a TE topology."; description "Node state attributes in a TE topology.";
leaf oper-status { leaf oper-status {
type te-oper-status; type te-oper-status;
description description
"The current operational state of the node."; "The current operational state of the node.";
} }
leaf is-multi-access-dr { leaf is-multi-access-dr {
type empty; type empty;
description description
"The presence of this attribute indicates that this TE node "The presence of this attribute indicates that this TE node
is a pseudonode elected as a designated router."; is a pseudonode elected as a designated router.";
reference reference
"RFC3630: Traffic Engineering (TE) Extensions to OSPF "RFC3630: Traffic Engineering (TE) Extensions to OSPF
Version 2. Version 2.
RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
Environments."; Environments.";
} }
uses information-source-attributes; uses information-source-attributes;
list alt-information-sources {
key "information-source";
description
"A list of information sources learned but not used.";
uses information-source-attributes;
uses te-node-connectivity-matrix;
uses te-node-info-attributes;
}
} // te-node-state-derived } // te-node-state-derived
grouping te-node-state-derived-notification {
description "Node state attributes in a TE topology.";
leaf oper-status {
type te-oper-status;
description
"The current operational state of the node.";
}
leaf is-multi-access-dr {
type empty;
description
"The presence of this attribute indicates that this TE node
is a pseudonode elected as a designated router.";
reference
"RFC3630: Traffic Engineering (TE) Extensions to OSPF
Version 2.
RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
Environments.";
}
uses information-source-attributes;
list alt-information-sources {
key "information-source";
description
"A list of information sources learned but not used.";
uses information-source-attributes;
uses te-node-connectivity-matrix-abs;
uses te-node-info-attributes;
}
} // te-node-state-derived-notification
grouping te-node-tunnel-termination-capability {
description
"Termination capability of a tunnel termination point on a
TE node.";
list termination-capability {
key "link-tp";
description
"The termination capabilities between
tunnel-termination-point and link termination-point.
The capability information can be used to compute
the tunnel path.";
leaf link-tp {
type leafref {
path "../../../../../nt:termination-point/nt:tp-id";
}
description
"Link termination point.";
}
} // termination-capability
} // te-node-tunnel-termination-capability
grouping te-path-element { grouping te-path-element {
description description
"A group of attributes defining an element in a TE path "A group of attributes defining an element in a TE path
such as TE node, TE link, TE atomic resource or label."; such as TE node, TE link, TE atomic resource or label.";
uses te-types:explicit-route-subobject; uses te-types:explicit-route-subobject;
} // te-path-element } // te-path-element
grouping te-termination-point-augment { grouping te-termination-point-augment {
description description
"Augmentatin for TE termination point."; "Augmentation for TE termination point.";
container te { container te {
presence "TE support."; presence "TE support.";
description description
"Indicates TE support."; "Indicates TE support.";
leaf te-tp-id { leaf te-tp-id {
type te-tp-id; type te-tp-id;
mandatory true; mandatory true;
description description
skipping to change at page 73, line 30 skipping to change at page 87, line 39
} // state } // state
} // te } // te
} // te-termination-point-augment } // te-termination-point-augment
grouping te-termination-point-config { grouping te-termination-point-config {
description description
"TE termination point configuration grouping."; "TE termination point configuration grouping.";
uses sch:schedules; uses sch:schedules;
} // te-termination-point-config } // te-termination-point-config
grouping te-topology-augment { grouping te-topologies-augment {
description description
"Augmentatin for TE topology."; "Augmentation for TE topologies.";
container te { container te {
presence "TE support."; presence "TE support.";
description description
"Indicates TE support."; "Indicates TE support.";
leaf provider-id {
type te-global-id;
mandatory true;
description
"An identifier to uniquely identify a provider.";
}
leaf client-id {
type te-global-id;
mandatory true;
description
"An identifier to uniquely identify a client.";
}
leaf te-topology-id {
type te-topology-id;
mandatory true;
description
"It is presumed that a datastore will contain many
topologies. To distinguish between topologies it is
vital to have UNIQUE topology identifiers.";
}
container config {
description
"Configuration data.";
uses te-topology-config;
} // config
container state {
config false;
description
"Operational state data.";
uses te-topology-config;
} // state
container templates { container templates {
description description
"Configuration parameters for templates used for TE "Configuration parameters for templates used for TE
topology."; topology.";
list node-template { list node-template {
if-feature template; if-feature template;
key "name"; key "name";
leaf name { leaf name {
type te-template-name; type te-template-name;
description description
"The name to identify a TE node template."; "The name to identify a TE node template.";
} }
description description
"The list of TE node templates used to define sharable "The list of TE node templates used to define sharable
and reusable TE node attributes."; and reusable TE node attributes.";
uses template-attributes; uses template-attributes;
uses te-node-config-attributes; uses te-node-config-attributes-template;
} // node-template } // node-template
list link-template { list link-template {
if-feature template; if-feature template;
key "name"; key "name";
leaf name { leaf name {
type te-template-name; type te-template-name;
description description
"The name to identify a TE link template."; "The name to identify a TE link template.";
} }
description description
"The list of TE link templates used to define sharable "The list of TE link templates used to define sharable
and reusable TE link attributes."; and reusable TE link attributes.";
uses template-attributes; uses template-attributes;
uses te-link-config-attributes; uses te-link-config-attributes;
} // link-template } // link-template
} // templates } // templates
} // te } // te
} // te-topologies-augment
grouping te-topology-augment {
description
"Augmentation for TE topology.";
container te {
presence "TE support.";
description
"Indicates TE support.";
leaf provider-id {
type te-global-id;
mandatory true;
description
"An identifier to uniquely identify a provider.";
}
leaf client-id {
type te-global-id;
mandatory true;
description
"An identifier to uniquely identify a client.";
}
leaf te-topology-id {
type te-topology-id;
mandatory true;
description
"It is presumed that a datastore will contain many
topologies. To distinguish between topologies it is
vital to have UNIQUE topology identifiers.";
}
container config {
description
"Configuration data.";
uses te-topology-config;
} // config
container state {
config false;
description
"Operational state data.";
uses te-topology-config;
} // state
} // te
} // te-topology-augment } // te-topology-augment
grouping te-topology-config { grouping te-topology-config {
description description
"TE topology configuration grouping."; "TE topology configuration grouping.";
uses sch:schedules; uses sch:schedules;
leaf preference {
type uint8 {
range "1..255";
}
description
"Specifies a preference for this topology. A lower number
indicates a higher preference.";
}
} // te-topology-config } // te-topology-config
grouping te-topology-ref { grouping te-topology-ref {
description description
"References a TE topology."; "References a TE topology.";
leaf provider-id-ref { leaf provider-id-ref {
type leafref { type leafref {
path "/nw:network/tet:te/tet:provider-id"; path "/nw:networks/nw:network[nw:network-id = "
+ "current()/../network-id-ref]/tet:te/tet:provider-id";
require-instance false; require-instance false;
} }
description description
"A reference to a provider-id."; "A reference to a provider-id.";
} }
leaf client-id-ref { leaf client-id-ref {
type leafref { type leafref {
path "/nw:network/tet:te/tet:client-id"; path "/nw:networks/nw:network[nw:network-id = "
+ "current()/../network-id-ref]/tet:te/tet:client-id";
require-instance false; require-instance false;
} }
description description
"A reference to a client-id."; "A reference to a client-id.";
} }
leaf te-topology-id-ref { leaf te-topology-id-ref {
type leafref { type leafref {
path "/nw:network/tet:te/tet:te-topology-id"; path "/nw:networks/nw:network[nw:network-id = "
+ "current()/../network-id-ref]/tet:te/tet:te-topology-
id";
require-instance false; require-instance false;
} }
description description
"A reference to a te-topology-id."; "A reference to a te-topology-id.";
} }
leaf network-id-ref { leaf network-id-ref {
type leafref { type leafref {
path "/nw:network/nw:network-id"; path "/nw:networks/nw:network/nw:network-id";
require-instance false; require-instance false;
} }
description description
"A reference to a network-id in base ietf-network module."; "A reference to a network-id in base ietf-network module.";
} }
} // te-topology-ref } // te-topology-ref
grouping te-topology-type { grouping te-topology-type {
description description
"Identifies the TE topology type."; "Identifies the TE topology type.";
skipping to change at page 77, line 14 skipping to change at page 92, line 30
enum cascade { enum cascade {
description description
"When an attribute changes in this template, the "When an attribute changes in this template, the
configuration object referring to this template applies configuration object referring to this template applies
the new attribute value to the corresponding the new attribute value to the corresponding
configuration."; configuration.";
} }
} }
description description
"This attribute specifies the action taken to a "This attribute specifies the action taken to a
configuration node that has a reference to this template."; configuration
node that has a reference to this template.";
} }
} // template-attributes } // template-attributes
/* /*
* Configuration data nodes * Configuration data nodes
*/ */
augment "/nw:network/nw:network-types" { augment "/nw:networks/nw:network/nw:network-types" {
description description
"Introduce new network type for TE topology."; "Introduce new network type for TE topology.";
uses te-topology-type; uses te-topology-type;
} }
augment "/nw:networks" {
description
"Augmentation parameters for TE topologies.";
uses te-topologies-augment;
}
augment "/nw:network" { augment "/nw:networks/nw:network" {
when "nw:network-types/te-topology" { when "nw:network-types/te-topology" {
description description
"Augmentation parameters apply only for networks with "Augmentation parameters apply only for networks with
TE topology type."; TE topology type.";
} }
description description
"Configuration parameters for TE topology."; "Configuration parameters for TE topology.";
uses te-topology-augment; uses te-topology-augment;
} }
augment "/nw:network/nw:node" { augment "/nw:networks/nw:network/nw:node" {
when "../nw:network-types/te-topology" { when "../nw:network-types/te-topology" {
description description
"Augmentation parameters apply only for networks with "Augmentation parameters apply only for networks with
TE topology type."; TE topology type.";
} }
description description
"Configuration parameters for TE at node level."; "Configuration parameters for TE at node level.";
uses te-node-augment; uses te-node-augment;
} }
augment "/nw:network/nt:link" { augment "/nw:networks/nw:network/nt:link" {
when "../nw:network-types/te-topology" { when "../nw:network-types/te-topology" {
description description
"Augmentation parameters apply only for networks with "Augmentation parameters apply only for networks with
TE topology type."; TE topology type.";
} }
description description
"Configuration parameters for TE at link level"; "Configuration parameters for TE at link level";
uses te-link-augment; uses te-link-augment;
} }
augment "/nw:network/nw:node/" augment "/nw:networks/nw:network/nw:node/"
+"nt:termination-point" { + "nt:termination-point" {
when "../../nw:network-types/te-topology" { when "../../nw:network-types/te-topology" {
description description
"Augmentation parameters apply only for networks with "Augmentation parameters apply only for networks with
TE topology type."; TE topology type.";
} }
description description
"Configuration parameters for TE at termination point level"; "Configuration parameters for TE at termination point level";
uses te-termination-point-augment; uses te-termination-point-augment;
} }
skipping to change at page 78, line 40 skipping to change at page 94, line 29
/* /*
* Notifications * Notifications
*/ */
notification te-node-event { notification te-node-event {
description "Notification event for TE node."; description "Notification event for TE node.";
leaf event-type { leaf event-type {
type te-topology-event-type; type te-topology-event-type;
description "Event type."; description "Event type.";
} }
uses tet:node-ref; uses nw:node-ref;
uses te-topology-type; uses te-topology-type;
uses tet:te-node-config-attributes; uses tet:te-node-config-attributes-notification;
uses tet:te-node-state-derived; uses tet:te-node-state-derived-notification;
} }
notification te-link-event { notification te-link-event {
description "Notification event for TE link."; description "Notification event for TE link.";
leaf event-type { leaf event-type {
type te-topology-event-type; type te-topology-event-type;
description "Event type"; description "Event type";
} }
uses tet:link-ref; uses nt:link-ref;
uses te-topology-type; uses te-topology-type;
uses tet:te-link-config-attributes; uses tet:te-link-config-attributes;
uses tet:te-link-state-derived; uses tet:te-link-state-derived;
} }
augment "/te-link-event/te-link-attributes/underlay" { augment "/te-link-event/te-link-attributes/underlay" {
description "Add state attributes to te-link underlay."; description "Add state attributes to te-link underlay.";
uses te-link-state-underlay-attributes; uses te-link-state-underlay-attributes;
} }
} }
<CODE ENDS>
7.2. Packet Switching TE Topology Module
<CODE BEGINS> file "ietf-te-topology-psc@2016-03-17.yang"
module ietf-te-topology-psc {
yang-version 1;
namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology-psc";
// replace with IANA namespace when assigned
prefix "tet-psc";
import ietf-network {
prefix "nw";
}
import ietf-network-topology {
prefix "nt";
}
import ietf-te-topology {
prefix "tet";
}
organization
"Traffic Engineering Architecture and Signaling (TEAS)
Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/teas/>
WG List: <mailto:teas@ietf.org>
WG Chair: Lou Berger
<mailto:lberger@labn.net>
WG Chair: Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net>
Editors: Xufeng Liu
<mailto:xliu@kuatrotech.com>
Igor Bryskin
<mailto:Igor.Bryskin@huawei.com>
Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net>
Tarek Saad
<mailto:tsaad@cisco.com>
Himanshu Shah
<mailto:hshah@ciena.com>
Oscar Gonzalez De Dios
<mailto:oscar.gonzalezdedios@telefonica.com>";
description "TE topology model";
revision "2016-03-17" {
description "Initial revision";
reference "TBD";
}
/*
* Groupings
*/
grouping packet-switch-capable-container {
description
"The container of packet switch capable attributes.";
container packet-switch-capable {
description
"Interface has packet-switching capabilities.";
leaf minimum-lsp-bandwidth {
type decimal64 {
fraction-digits 2;
}
description
"Minimum LSP Bandwidth. Units in bytes per second";
}
leaf interface-mtu {
type uint16;
description
"Interface MTU.";
}
}
}
/*
* Configuration data nodes
*/
augment "/nw:networks/tet:te/tet:templates/"
+ "tet:link-template/tet:te-link-attributes/"
+ "tet:interface-switching-capability" {
when "switching-capability = 'switching-psc1' " {
description "Valid only for PSC";
}
description
"Parameters for PSC TE topology.";
uses packet-switch-capable-container;
}
augment "/nw:networks/nw:network/nt:link/tet:te/tet:config/"
+ "tet:te-link-attributes/"
+ "tet:interface-switching-capability" {
when "switching-capability = 'switching-psc1' " {
description "Valid only for PSC";
}
description
"Parameters for PSC TE topology.";
uses packet-switch-capable-container;
}
/*
* Operational state data nodes
*/
augment "/nw:networks/nw:network/nt:link/tet:te/tet:state/"
+ "tet:te-link-attributes/"
+ "tet:interface-switching-capability" {
when "switching-capability = 'switching-psc1' " {
description "Valid only for PSC";
}
description
"Parameters for PSC TE topology.";
uses packet-switch-capable-container;
}
augment "/nw:networks/nw:network/nt:link/tet:te/tet:state/"
+ "tet:alt-information-sources/"
+ "tet:interface-switching-capability" {
when "switching-capability = 'switching-psc1' " {
description "Valid only for PSC";
}
description
"Parameters for PSC TE topology.";
uses packet-switch-capable-container;
}
/*
* Notifications
*/
augment "/tet:te-link-event/tet:te-link-attributes/"
+ "tet:interface-switching-capability" {
when "switching-capability = 'switching-psc1' " {
description "Valid only for PSC";
}
description
"Parameters for PSC TE topology.";
uses packet-switch-capable-container;
}
augment "/tet:te-link-event/tet:alt-information-sources/"
+ "tet:interface-switching-capability" {
when "switching-capability = 'switching-psc1' " {
description "Valid only for PSC";
}
description
"Parameters for PSC TE topology.";
uses packet-switch-capable-container;
}
}
<CODE ENDS> <CODE ENDS>
7. Security Considerations 8. Security Considerations
The transport protocol used for retrieving/manipulating the TE The transport protocol used for retrieving/manipulating the TE
topology data MUST support authentication and SHOULD support topology data MUST support authentication and SHOULD support
encryption. The data-model by itself does not create any security encryption. The data-model by itself does not create any security
implications. implications.
8. IANA Considerations 9. IANA Considerations
This document registers the following URIs in the IETF XML registry This document registers the following URIs in the IETF XML registry
[RFC3688]. Following the format in [RFC3688], the following [RFC3688]. Following the format in [RFC3688], the following
registration is requested to be made. registration is requested to be made.
URI: urn:ietf:params:xml:ns:yang:ietf-te-topology URI: urn:ietf:params:xml:ns:yang:ietf-te-topology
XML: N/A, the requested URI is an XML namespace. XML: N/A, the requested URI is an XML namespace.
This document registers a YANG module in the YANG Module Names This document registers a YANG module in the YANG Module Names
registry [RFC6020]. registry [RFC6020].
name: ietf-te-topology name: ietf-te-topology
namespace: urn:ietf:params:xml:ns:yang:ietf-te-topology namespace: urn:ietf:params:xml:ns:yang:ietf-te-topology
prefix: tet prefix: tet
9. References 10. References
9.1. Normative References 10.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, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
January 2004. January 2004.
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the
Network Configuration Protocol (NETCONF)", RFC 6020, Network Configuration Protocol (NETCONF)", RFC 6020,
October 2010. October 2010.
skipping to change at page 80, line 24 skipping to change at page 100, line 18
[RFC3945] Mannie, E., "Generalized Multi-Protocol Label Switching [RFC3945] Mannie, E., "Generalized Multi-Protocol Label Switching
(GMPLS) Architecture", October 2004. (GMPLS) Architecture", October 2004.
[YANG-NET-TOPO] Clemm, A., "A Data Model for Network Topologies", [YANG-NET-TOPO] Clemm, A., "A Data Model for Network Topologies",
draft-ietf-i2rs-yang-network-topo (Work in Progress). draft-ietf-i2rs-yang-network-topo (Work in Progress).
[YANG-PUSH] Clemm, A., "Subscribing to YANG datastore push updates", [YANG-PUSH] Clemm, A., "Subscribing to YANG datastore push updates",
draft-clemm-netconf-yang-push (Work in Progress). draft-clemm-netconf-yang-push (Work in Progress).
9.2. Informative References [YANG-SCHEDULE] Liu, X., " A YANG Data Model for Configuration
Scheduling", draft-liu-netmod-yang-schedule-00 (Work in
Progress).
10.2. Informative References
[RFC2702] Awduche, D., "Requirements for Traffic Engineering Over [RFC2702] Awduche, D., "Requirements for Traffic Engineering Over
MPLS", RFC 2702, September 1999. MPLS", RFC 2702, September 1999.
10. Acknowledgments 11. Acknowledgments
The authors would like to thank Lou Berger, Sue Hares, Mazen The authors would like to thank Lou Berger, Sue Hares, Mazen
Khaddam, Cyril Margaria and Zafar Ali for participating in design Khaddam, Cyril Margaria and Zafar Ali for participating in design
discussions and providing valuable insights. discussions and providing valuable insights.
Appendix A - Schedule Model
A.1 Tree Structure
module: ietf-schedule
grouping schedules:
+--rw schedules
+--rw schedule* [schedule-id]
+--rw schedule-id uint32
+--rw start? yang:date-and-time
+--rw schedule-duration? string
+--rw repeat-interval? string
A.2 YANG Module
<CODE BEGINS>
module ietf-schedule {
yang-version 1;
namespace "urn:ietf:params:xml:ns:yang:ietf-schedule";
// replace with IANA namespace when assigned
prefix "sch";
import ietf-yang-types {
prefix "yang";
}
organization "TBD";
contact "TBD";
description
"The model allows time scheduling parameters to be specified.";
revision "2015-10-09" {
description "Initial revision";
reference "TBD";
}
/*
* Groupings
*/
grouping schedules {
description
"A list of schedules defining when a particular
configuration takes effect.";
container schedules {
description
"Container of a schedule list defining when a particular
configuration takes effect.";
list schedule {
key "schedule-id";
description "A list of schedule elements.";
leaf schedule-id {
type uint32;
description "Identifies the schedule element.";
}
leaf start {
type yang:date-and-time;
description "Start time.";
}
leaf schedule-duration {
type string {
pattern
'P(\d+Y)?(\d+M)?(\d+W)?(\d+D)?T(\d+H)?(\d+M)?(\d+S)?';
}
description "Schedule duration in ISO 8601 format.";
}
leaf repeat-interval {
type string {
pattern
'R\d*/P(\d+Y)?(\d+M)?(\d+W)?(\d+D)?T(\d+H)?(\d+M)?'
+ '(\d+S)?';
}
description "Repeat interval in ISO 8601 format.";
}
}
}
} // schedules
}
<CODE ENDS>
Contributors Contributors
Sergio Belotti Sergio Belotti
Alcatel Lucent Alcatel Lucent
Email: sergio.belotti@alcatel-lucent.com Email: sergio.belotti@alcatel-lucent.com
Dieter Beller Dieter Beller
Alcatel Lucent Alcatel Lucent
Email: dieter.beller@alcatel-lucent.com Email: dieter.beller@alcatel-lucent.com
Authors' Addresses Authors' Addresses
Xufeng Liu Xufeng Liu
Ericsson Ericsson
Email: xufeng.liu@ericsson.com Email: xliu@kuatrotech.com
Igor Bryskin Igor Bryskin
ADVA Optical Networking Huawei Technologies
Email: ibryskin@advaoptical.com Email: Igor.Bryskin@huawei.com
Vishnu Pavan Beeram Vishnu Pavan Beeram
Juniper Networks Juniper Networks
Email: vbeeram@juniper.net Email: vbeeram@juniper.net
Tarek Saad Tarek Saad
Cisco Systems Inc Cisco Systems Inc
Email: tsaad@cisco.com Email: tsaad@cisco.com
Himanshu Shah Himanshu Shah
 End of changes. 180 change blocks. 
595 lines changed or deleted 1080 lines changed or added

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