Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
569 lines (525 sloc) 14.4 KB
module ietf-optical-impairment-topology {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-optical-impairment-topology";
prefix "optical-imp-topo";
import ietf-network {
prefix "nw";
}
import ietf-network-topology {
prefix "nt";
}
import ietf-te-topology {
prefix "tet";
}
organization
"IETF CCAMP Working Group";
contact
"Editor: Young Lee <leeyoung@huawei.com>
Editor: Haomian Zheng <zhenghaomian@huawei.com>
Editor: Nicola Sambo <nicosambo@gmail.com>
Editor: Victor Lopez <victor.lopezalvarez@telefonica.com>
Editor: Dieter Bella <dieter.beller@nokia.com>
Editor: Gabriele Galimberti <ggalimbe@cisco.com>";
description
"This module contains a collection of YANG definitions for
impairment-aware optical networks.
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-10-09 {
description
"version 0.";
reference
"RFC XXX: A Yang Data Model for Impairment-aware Optical Networks ";
}
identity modulation {
description "base identity for modulation type";
}
identity QPSK {
base modulation;
description
"QPSK (Quadrature Phase Shift Keying) modulation";
}
identity DP_QPSK {
base modulation;
description
"DP-QPSK (Dual Polarization Quadrature
Phase Shift Keying) modulation";
}
identity QAM8 {
base modulation;
description
"8QAM (8-State Quadrature Amplitude Modulation) modulation";
}
identity QAM16 {
base modulation;
description
"QAM16 (Quadrature Amplitude Modulation
- 4 bits per symbol) modulation";
}
identity DP_QAM16 {
base modulation;
description
"DP-QAM16 (Dual Polarization Quadrature Amplitude Modulation
- 4 bits per symbol) modulation";
}
identity DC_DP_QAM16 {
base modulation;
description
"DC DP-QAM16 (Dual Polarization Quadrature Amplitude Modulation
- 4 bits per symbol) modulation";
}
identity FEC {
description
"Enumeration that defines the type of
Forward Error Correction";
}
identity reed-solomon {
base FEC;
description
"Reed-Solomon error correction";
}
identity hamming-code {
base FEC;
description
"Hamming Code error correction";
}
identity golay {
base FEC;
description "Golay error correction";
}
typedef fiber-type {
type enumeration {
enum G.652 {
description "G.652 Standard Singlemode Fiber";
}
enum G.654 {
description "G.654 Cutoff Shifted Fiber";
}
enum G.653 {
description "G.653 Dispersion Shifted Fiber";
}
enum G.655 {
description "G.655 Non-Zero Dispersion Shifted Fiber";
}
enum G.656 {
description "G.656 Non-Zero Dispersion for Wideband
Optical Transport";
}
enum G.657 {
description "G.657 Bend-Insensitive Fiber";
}
}
description
"ITU-T based fiber-types";
}
grouping optical-label {
description
"Generic label for optical links and paths";
choice grid-type {
description
"Label for Flexigrid, DWDM or CWDM grid";
case flexi-grid {
leaf central-channel-freq {
type decimal64 {
fraction-digits 5;
}
units THz;
config false;
description
"The Flexi-grid central frequency in THz, e.g. 193.12500";
reference
"RFC7698";
}
leaf slot-width {
type decimal64 {
fraction-digits 5;
}
units GHz;
config false;
description
"The Flexi-grid slot width in GHz, e.g. 50, 100, 150.";
reference
"RFC7698";
}
}
case dwdm {
leaf channel-freq {
type decimal64 {
fraction-digits 5;
}
units THz;
config false;
description
"The DWDM frequency in THz, e.g. 193.12500";
reference
"RFC6205";
}
}
case cwdm {
leaf channel-wavelength {
type uint32;
units nm;
config false;
description
"The CWDM wavelength in nanometer, e.g. 1511";
reference
"RFC6205";
}
}
}
}
grouping transponder-attributes {
description "Configuration of an optical transponder";
leaf-list available-modulation {
type identityref {
base modulation;
}
config false;
description
"List determining all the available modulations";
}
leaf modulation-enabled {
type boolean;
description
"Determines whether the modulation is enabled or not";
}
leaf modulation-type {
type identityref {
base modulation;
}
description
"Modulation type of the transponder";
}
leaf-list available-FEC {
type identityref {
base FEC;
}
config false;
description "List determining all the available FEC";
}
leaf FEC-enabled {
type boolean;
description
"Determines whether the FEC is enabled or not";
}
leaf FEC-type {
type identityref {
base FEC;
}
description
"FEC type of the transponder";
}
leaf FEC-code-rate {
type decimal64 {
fraction-digits 8;
range "0..max";
}
config false;
description "FEC-code-rate";
}
leaf FEC-threshold {
type decimal64 {
fraction-digits 8;
range "0..max";
}
description "Threshold on the BER, for which FEC is able to correct errors";
}
leaf power {
type int32;
units "dBm";
config false;
description "per channel power";
}
leaf power-min {
type int32;
units "dBm";
config false;
description "minimum power of the transponder";
}
leaf power-max {
type int32;
units "dBm";
config false;
description "maximum power of the transponder";
}
}
grouping sliceable-transponder-attributes {
description
"Configuration of a sliceable transponder.";
list transponder-list {
key "carrier-id";
config false;
description "List of carriers";
leaf carrier-id {
type uint32;
config false;
description "Identifier of the carrier";
}
}
}
/* grouping wson-node-attributes {
description "WSON node attributes";
container wson-node {
description "WSON node attrtibutes.";
leaf node-type {
type identityref {
base te-wson-types:wson-node-type;
}
description "WSON node type.";
}
}
}
*/
grouping optical-fiber-data {
description "optical link (fiber) attributes with impairment data";
leaf fiber-type {
type fiber-type;
config false;
description "fiber-type";
}
leaf power {
type int32;
units "dBm";
config false;
description "Total Input Power Level at the line port of the link";
}
leaf pmd {
type decimal64 {
fraction-digits 8;
range "0..max";
}
units "ps/(km)^0.5";
config false;
description "Polarization Mode Dispersion";
}
leaf cd {
type decimal64 {
fraction-digits 5;
}
units "ps/nm/km";
config false;
description "Cromatic Dispersion";
}
leaf osnr {
type decimal64 {
fraction-digits 5;
}
units "dB";
config false;
description "osnr";
}
/* leaf sigma {
type decimal64 {
fraction-digits 5;
}
units "dB";
config false;
description "sigma in the Gausian Noise Model";
}
*/
}
grouping optical-impairment-data {
description "optical impairment data per channel/wavelength";
leaf bit-rate {
type decimal64 {
fraction-digits 8;
range "0..max";
}
units "Gbit/s";
config false;
description "Gross bit rate";
}
leaf BER {
type decimal64 {
fraction-digits 18;
range "0..max";
}
config false;
description "BER";
}
leaf pmd {
type decimal64 {
fraction-digits 8;
range "0..max";
}
units "ps/(km)^0.5";
config false;
description "Polarization Mode Dispersion";
}
leaf cd {
type decimal64 {
fraction-digits 5;
}
units "ps/nm/km";
config false;
description "Cromatic Dispersion";
}
leaf osnr {
type decimal64 {
fraction-digits 5;
}
units "dB";
config false;
description "osnr";
}
leaf q-factor {
type decimal64 {
fraction-digits 5;
}
units "dB";
config false;
description "q-factor";
}
}
/*
grouping wson-ttp-attributes {
description
"WSON tunnel termination point (e.g.tranponder) attributes";
leaf-list available-operational-mode {
type te-wson-types:operational-mode;
description "List of all vendor-specific supported
mode identifiers";
}
leaf operational-mode {
type te-wson-types:operational-mode;
description "Vendor-specific mode identifier";
}
}
*/
/* Data nodes */
augment "/nw:networks/nw:network/nw:network-types"
+ "/tet:te-topology" {
description "optical-impairment topology augmented";
container optical-impairment-topology {
presence "indicates an impairment-aware topology of optical networks";
description
"Container to identify impairment-aware topology type";
}
}
augment "/nw:networks/nw:network/nt:link/tet:te"
+ "/tet:te-link-attributes" {
when "/nw:networks/nw:network/nw:network-types"
+"/tet:te-topology/optical-imp-topo:optical-impairment-topology" {
description
"This augment is only valid for Optical Impairment.";
}
description "Optical Link augmentation for impairment data.";
uses optical-fiber-data;
}
/* Augment label hop of underlay primary path of TE link */
augment "/nw:networks/nw:network/nt:link/tet:te/"
+ "tet:te-link-attributes/"
+ "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ "tet:label/tet:label-hop/tet:te-label/tet:technology" {
when "../../../../../../../../"
+ "nw:network-types/tet:te-topology/"
+ "optical-imp-topo:optical-impairment-topology" {
description "Augment optical TE label";
}
description "optical label.";
case optical-imp-topo {
uses optical-label;
uses optical-impairment-data;
}
}
/* Augment label hop of underlay backup path of TE link */
augment "/nw:networks/nw:network/nt:link/tet:te/"
+ "tet:te-link-attributes/"
+ "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ "tet:label/tet:label-hop/tet:te-label/tet:technology" {
when "../../../../../../../../"
+ "nw:network-types/tet:te-topology/"
+ "optical-imp-topo:optical-impairment-topology" {
description "Augment optical TE label";
}
description "optical label.";
case optical-imp-topo {
uses optical-label;
uses optical-impairment-data;
}
}
/* Augment label hop of underlay primary path of TE link template */
augment "/nw:networks/tet:te/tet:templates/"
+ "tet:link-template/tet:te-link-attributes/"
+ "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ "tet:label/tet:label-hop/tet:te-label/tet:technology" {
/*
when "../../../../../../../../../"
+ "nw:network-types/tet:te-topology/"
+ "optical-imp-topo:optical-impairment-topology" {
description "Augment Optical TE label";
}
*/
description "optical label.";
case optical-imp-topo {
uses optical-label;
uses optical-impairment-data;
}
}
/* Augment label hop of underlay backup path of TE link template */
augment "/nw:networks/tet:te/tet:templates/"
+ "tet:link-template/tet:te-link-attributes/"
+ "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ "tet:label/tet:label-hop/tet:te-label/tet:technology" {
/*
when "../../../../../../../../../"
+ "nw:network-types/tet:te-topology/"
+ "optical-imp-topo:optical-impairment-topology" {
description "Augment Optical TE label";
}
*/
description "optical label.";
case optical-imp-topo {
uses optical-label;
uses optical-impairment-data;
}
}
/*
augment "/nw:networks/nw:network/nw:node/tet:te"
+ "/tet:te-node-attributes" {
when "/nw:networks/nw:network/nw:network-types"
+"/tet:te-topology/optical-imp-topo:optical-impairment-topology" {
description
"This augment is only valid for WSON.";
}
description "WSON Node augmentation.";
uses wson-node-attributes;
}
*/
augment "/nw:networks/nw:network/nw:node/tet:te"
+ "/tet:tunnel-termination-point" {
when "/nw:networks/nw:network/nw:network-types"
+"/tet:te-topology/optical-imp-topo:optical-impairment-topology" {
description
"This augment is only valid for Impairment with non-sliceable
transponder model";
}
description
"Tunnel termination point
augmentation for non-sliceable transponder model.";
/* uses wson-ttp-attributes; */
leaf transponder-id {
type uint32;
description "transponder identifier";
}
uses transponder-attributes;
}
augment "/nw:networks/nw:network/nw:node/tet:te"
+ "/tet:tunnel-termination-point" {
when "/nw:networks/nw:network/nw:network-types"
+"/tet:te-topology/optical-imp-topo:optical-impairment-topology" {
description
"This augment is only valid for optical impairment with sliceable
transponder model";
}
description
"Tunnel termination point augmentation for sliceable transponder model.";
uses sliceable-transponder-attributes;
}
}
You can’t perform that action at this time.