blob: f69afa292903cafa074bc14cbff5df89fe014cda [file] [log] [blame]
module yrt-ietf-otn-tunnel {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:yrt-ietf-otn-tunnel";
prefix "otn-tunnel";
import actn-ietf-te { prefix "te"; }
import yrt-ietf-transport-types { prefix "tran-types"; }
//import yang-ext { prefix ext; revision-date 2013-07-09; }
import actn-ietf-te-types {
prefix te-types;
}
import yrt-ietf-inet-types {
prefix inet;
}
organization
"IETF CCAMP Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/ccamp/>
WG List: <mailto:ccamp@ietf.org>
Editor: Anurag Sharma
<mailto:AnSharma@infinera.com>
Editor: Rajan Rao
<mailto:rrao@infinera.com>
Editor: Xian Zhang
<mailto:zhang.xian@huawei.com>
Editor: Kun Xiang
<mailto:xiangkun@huawei.com>";
description
"This module defines a model for OTN Tunnel Services.";
revision "2017-03-11" {
description
"Revision 0.3";
reference "TBD";
}
grouping otn-tunnel-endpoint {
description "Parameters for OTN tunnel.";
leaf payload-treatment {
type enumeration {
enum switching;
enum transport;
}
default switching;
description
"Treatment of the incoming payload. Payload can
either be switched, or transported as is.";
}
leaf src-client-signal {
type identityref {
base tran-types:client-signal;
}
description
"Client signal at the source endpoint of
the tunnel.";
}
leaf src-tpn {
type uint16 {
range "0..4095";
}
description
"Tributary Port Number. Applicable in case of mux
services.";
reference
"RFC7139: GMPLS Signaling Extensions for Control of
Evolving G.709 Optical Transport Networks.";
}
leaf src-tsg {
type identityref {
base tran-types:tributary-slot-granularity;
}
description
"Tributary slot granularity. Applicable in case of mux
services.";
reference
"G.709/Y.1331, February 2016: Interfaces for the
Optical Transport Network (OTN)";
}
leaf src-tributary-slot-count {
type uint16;
description
"Number of tributary slots used at the source.";
}
container src-tributary-slots {
description
"A list of tributary slots used by the client
service. Applicable in case of mux services.";
leaf-list values {
type uint8;
description
"Tributary tributary slot value.";
reference
"G.709/Y.1331, February 2016: Interfaces for the
Optical Transport Network (OTN)";
}
}
leaf dst-client-signal {
type identityref {
base tran-types:client-signal;
}
description
"Client signal at the destination endpoint of
the tunnel.";
}
leaf dst-tpn {
type uint16 {
range "0..4095";
}
description
"Tributary Port Number. Applicable in case of mux
services.";
reference
"RFC7139: GMPLS Signaling Extensions for Control of
Evolving G.709 Optical Transport Networks.";
}
leaf dst-tsg {
type identityref {
base tran-types:tributary-slot-granularity;
}
description
"Tributary slot granularity. Applicable in case of mux
services.";
reference
"G.709/Y.1331, February 2016: Interfaces for the
Optical Transport Network (OTN)";
}
leaf dst-tributary-slot-count {
type uint16;
description
"Number of tributary slots used at the destination.";
}
container dst-tributary-slots {
description
"A list of tributary slots used by the client
service. Applicable in case of mux services.";
leaf-list values {
type uint8;
description
"Tributary slot value.";
reference
"G.709/Y.1331, February 2016: Interfaces for the
Optical Transport Network (OTN)";
}
}
}
/*
Note: Comment has been given to authors of TE Tunnel model to add
tunnel-types to the model in order to identify the technology
type of the service.
grouping otn-service-type {
description
"Identifies the OTN Service type.";
container otn-service {
presence "Indicates OTN Service.";
description
"Its presence identifies the OTN Service type.";
}
} // otn-service-type
augment "/te:te/te:tunnels/te:tunnel/te:tunnel-types" {
description
"Introduce OTN service type for tunnel.";
ext:augment-identifier otn-service-type-augment;
uses otn-service-type;
}
*/
/*
Note: Comment has been given to authors of TE Tunnel model to add
list of endpoints under config to support P2MP tunnel.
*/
augment "/te:te/te:tunnels/te:tunnel/te:config" {
description
"Augment with additional parameters required for OTN
service.";
//ext:augment-identifier otn-tunnel-endpoint-config-augment;
uses otn-tunnel-endpoint;
}
augment "/te:te/te:tunnels/te:tunnel/te:state" {
description
"Augment with additional parameters required for OTN
service.";
//ext:augment-identifier otn-tunnel-endpoint-state-augment;
uses otn-tunnel-endpoint;
}
/*
Note: Comment has been given to authors of TE Tunnel model to add
tunnel-lifecycle-event to the model. This notification is reported
for all lifecycle changes (create, delete, and update) to the
tunnel or lsp.
augment "/te:tunnel-lifecycle-event" {
description
"OTN service event";
uses otn-service-type;
uses otn-tunnel-params;
list endpoint {
key
"endpoint-address tp-id";
description
"List of Tunnel Endpoints.";
uses te:tunnel-endpoint;
uses otn-tunnel-params;
}
}
*/
grouping p2p-path-ero {
description
"TE tunnel ERO configuration grouping";
leaf te-default-metric {
type uint32;
description
"Traffic engineering metric.";
}
leaf te-delay-metric {
type uint32;
description
"Traffic engineering delay metric.";
}
leaf te-hop-metric {
type uint32;
description
"Traffic engineering hop metric.";
}
container explicit-route-objects {
description "Explicit route objects container";
leaf explicit-route-usage {
type identityref {
base te-types:route-usage-type;
}
description "An explicit-route hop action.";
}
list explicit-route-object {
key "index";
description
"List of explicit route objects";
leaf index {
type uint32;
description "Index of this explicit route object";
}
uses te-types:explicit-route-hop;
}
}
}
rpc otn-te-tunnel-path-compute {
description "OTN TE tunnel path computation";
input {
list request {
key "id";
description "A list of path computation requests.";
leaf id {
type uint8;
description
"Request ID.";
}
leaf type {
type identityref {
base te-types:tunnel-type;
}
description "TE tunnel type.";
}
leaf source {
type inet:ip-address;
description
"TE tunnel source address.";
}
leaf destination {
/* Add when check */
type inet:ip-address;
description
"TE tunnel destination address";
}
leaf src-tp-id {
type binary;
description
"TE tunnel source termination point identifier.";
}
leaf dst-tp-id {
type binary;
description
"TE tunnel destination termination point identifier.";
}
leaf switching-layer {
type identityref {
base te-types:switching-capabilities;
}
description
"Switching layer where the requests are computed.";
}
leaf encoding {
type identityref {
base te-types:lsp-encoding-types;
}
description "LSP encoding type";
}
leaf protection-type {
type identityref {
base te-types:lsp-prot-type;
}
description "LSP protection type.";
}
leaf provider-id {
type te-types:te-global-id;
description
"An identifier to uniquely identify a provider.";
}
leaf client-id {
type te-types:te-global-id;
description
"An identifier to uniquely identify a client.";
}
leaf te-topology-id {
type te-types:te-topology-id;
description
"It is presumed that a datastore will contain many
topologies. To distinguish between topologies it is
vital to have UNIQUE topology identifiers.";
}
leaf setup-priority {
type uint8 {
range "0..7";
}
description
"TE LSP setup priority";
}
leaf hold-priority {
type uint8 {
range "0..7";
}
description
"TE LSP hold priority";
}
leaf te-path-metric-type {
type identityref {
base te-types:path-metric-type;
}
default te-types:path-metric-te;
description
"The tunnel path metric type.";
}
leaf odu-type {
type identityref{
base tran-types:tributary-protocol-type;
}
description "Type of ODU";
}
container p2p-primary-paths {
description "Set of P2P primary paths container";
list p2p-primary-path {
key "name";
description
"List of primary paths for this tunnel.";
leaf name {
type string;
description "TE path name";
}
uses p2p-path-ero;
}
}
container p2p-secondary-paths {
description "Set of P2P secondary paths container";
list p2p-secondary-path {
key "name";
description
"List of secondary paths for this tunnel.";
leaf name {
type string;
description "TE path name";
}
uses p2p-path-ero;
}
}
uses otn-tunnel-endpoint;
}
}
output {
leaf return-code {
type enumeration {
enum success {
description "success";
}
enum aborted {
description "";
}
enum destination-not-found {
description "";
}
enum invalid-argument {
description "";
}
enum no-memory {
description "";
}
enum no-path-found{
description "";
}
enum other-error {
description "";
}
enum some-path-not-found{
description "";
}
enum source-not-found {
description "";
}
enum topology-error {
description "";
}
}
description
"Return code.";
}
list result {
key "id";
description
"A list of results for all requests.";
leaf id {
type uint8;
description
"Request ID.";
}
container p2p-primary-paths {
description "Set of P2P primary paths container";
list p2p-primary-path {
key "name";
description
"List of resultant primary paths for this tunnel.";
leaf name {
type string;
description "TE path name";
}
uses p2p-path-ero;
}
}
container p2p-secondary-paths {
description "Set of P2P secondary paths container";
list p2p-secondary-path {
key "name";
description
"List of resultant secondary paths for this tunnel.";
leaf name {
type string;
description "TE path name";
}
uses p2p-path-ero;
}
}
}
}
}
}