module ietf-te-topology-sf {
yang-version 1;
namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology-sf";
prefix "tet-sf";
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:
WG List:
Editors: Igor Bryskin
Xufeng Liu
";
description
"Network service and function aware aware TE topology model.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to
the license terms contained in, the Simplified BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).";
revision 2018-02-27 {
description "Initial revision";
reference "TBD";
}
/*
* Typedefs
*/
typedef connectivity-direction {
type enumeration {
enum "to" {
description
"The direction is uni-directional, towards the 'to'
entity direction.";
}
enum "from" {
description
"The direction is uni-directional, from the 'to'
entity direction.";
}
enum "bidir" {
description
"The direction is bi-directional.";
}
}
description
"A type used to indicates whether a connectivity is
uni-directional, or bi-directional. If the relation is
uni-directional, the value of this type indicates the
direction.";
} // connectivity-direction
/*
* Groupings
*/
grouping service-function-node-augmentation {
description
"Augmenting a TE node to be network service and function
aware.";
container service-function {
description
"Containing attributes related to network services and
network functions";
container connectivity-matrices {
description
"Connectivity relations between network services/functions
on a TE node, which can be either abstract or physical.";
reference
"ETSI GS NFV-MAN 01: Network Functions Virtualisation
(NFV); Management and Orchestration.
RFC7665: Service Function Chaining (SFC) Architecture.";
list connectivity-matrix {
key "id";
description
"Represents the connectivity relations between network
services/functions on a TE node.";
leaf id {
type uint32;
description "Identifies the connectivity-matrix entry.";
}
container from {
description
"Reference to the source network service or
network function.";
leaf service-function-id {
type string;
description
"Reference to a network service or a network
function.";
}
leaf sf-connection-point-id {
type string;
description
"Reference to a connection point on a network
service or a network function.";
}
} // from
container to {
description
"Reference to the destination network service or
network function.";
leaf service-function-id {
type string;
description
"Reference to a network service or a network
function.";
}
leaf sf-connection-point-id {
type string;
description
"Reference to a connection point on a network
service or a network function.";
}
} // to
leaf enabled {
type boolean;
description
"'true' if this connectivity entry is enabled.";
}
leaf direction {
type connectivity-direction;
description
"Indicates whether this connectivity is
uni-directional, or bi-directional. If the
relation is uni-directional, the value of
this leaf indicates the direction.";
}
leaf virtual-link-id {
type string;
description
"Reference to a virtual link that models this
conectivity relation in the network function
model.";
}
} // connectivity-matrix
} // connectivity-matrices
container link-terminations {
description
"Connectivity relations between network services/functions
and link termination points on a TE node, which can be
either abstract or physical.";
reference
"ETSI GS NFV-MAN 01: Network Functions Virtualisation
(NFV); Management and Orchestration.
RFC7665: Service Function Chaining (SFC) Architecture.";
list link-termination {
key "id";
description
"Each entry of the list represents the connectivity
relation between a network service/function and
a link termination point on a TE node.";
leaf id {
type uint32;
description "Identifies the termination entry.";
}
container from {
description
"Reference to the link termination point.";
} // from
container to {
description
"Reference to the network service or network
function.";
leaf service-function-id {
type string;
description
"Reference to a network service or a network
function.";
}
leaf sf-connection-point-id {
type string;
description
"Reference to a connection point on a network
service or a network function.";
}
} // to
leaf enabled {
type boolean;
description
"'true' if this connectivity entry is enabled.";
}
leaf direction {
type connectivity-direction;
description
"Indicates whether this connectivity is
uni-directional, or bi-directional. If the
relation is uni-directional, the value of
this leaf indicates the direction.";
}
} // link-termination
}
}
} // service-function-node-augmentation
grouping service-function-ttp-augmentation {
description
"Augmenting a tunnel termination point to be network service
aware.";
container service-function {
description
"Containing attributes related to network services and
network functions";
container tunnel-terminations {
description
"Connectivity relations between network services/functions
and tunnel termination points on a TE node, which can be
either abstract or physical.";
reference
"ETSI GS NFV-MAN 01: Network Functions Virtualisation
(NFV); Management and Orchestration.
RFC7665: Service Function Chaining (SFC) Architecture.";
list tunnel-termination {
key "id";
description
"Each entry of the list represents the connectivity
relation between a network service/function and
a tunnel termination point on a TE node.";
leaf id {
type uint32;
description "Identifies the termination entry.";
}
leaf service-function-id {
type string;
description
"Reference to a network service or a network
function.";
}
leaf sf-connection-point-id {
type string;
description
"Reference to a connection point on a network
service or a network function.";
}
leaf enabled {
type boolean;
description
"'true' if this connectivity entry is enabled.";
}
leaf direction {
type connectivity-direction;
description
"Indicates whether this connectivity is
uni-directional, or bi-directional. If the
relation is uni-directional, the value of
this leaf indicates the direction.";
}
} // link-termination
}
}
} // service-function-ttp-augmentation
grouping sf-topology-type {
description
"Identifies the SF aware TE topology type.";
container sf {
presence "Indidates that the TE topology is SF aware.";
description
"Its presence identifies that the TE topology is SF aware.";
}
} // sf-topology-type
/*
* Augmentations
*/
/* Augmentations to network-types/te-topology */
augment "/nw:networks/nw:network/nw:network-types/"
+ "tet:te-topology" {
description
"Defines the SF aware TE topology type.";
uses sf-topology-type;
}
/* Augmentations to te-node-attributes */
augment "/nw:networks/nw:network/nw:node/tet:te/"
+ "tet:te-node-attributes" {
description
"Parameters for SF aware TE topology.";
uses service-function-node-augmentation;
}
augment "/nw:networks/nw:network/nw:node/tet:te/"
+ "tet:information-source-entry" {
description
"Parameters for SF aware TE topology.";
uses service-function-node-augmentation;
}
/* Augmentations to tunnel-termination-point */
augment "/nw:networks/nw:network/nw:node/tet:te/"
+ "tet:tunnel-termination-point" {
description
"Parameters for SF aware TE topology.";
uses service-function-ttp-augmentation;
}
/* Augmentations to connectivity-matrix */
augment "/nw:networks/nw:network/nw:node/tet:te/"
+ "tet:te-node-attributes/tet-sf:service-function/"
+ "tet-sf:link-terminations/tet-sf:link-termination/"
+ "tet-sf:from" {
description
"Add reference to the link termination point.
This portion cannot be shared with the state module.";
leaf tp-ref {
type leafref {
path "../../../../../../../nt:termination-point/"
+ "nt:tp-id";
}
description
"Reference to the link termination point.";
}
}
}