| module ietf-te { |
| |
| namespace "urn:ietf:params:xml:ns:yang:ietf-te"; |
| |
| /* Replace with IANA when assigned */ |
| prefix "te"; |
| |
| /* Import TE generic types */ |
| import ietf-te-types { |
| prefix te-types; |
| } |
| |
| import ietf-inet-types { |
| prefix inet; |
| } |
| |
| organization |
| "IETF 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: Tarek Saad |
| <mailto:tsaad@cisco.com> |
| |
| Editor: Rakesh Gandhi |
| <mailto:rgandhi@cisco.com> |
| |
| Editor: Vishnu Pavan Beeram |
| <mailto:vbeeram@juniper.net> |
| |
| Editor: Himanshu Shah |
| <mailto:hshah@ciena.com> |
| |
| Editor: Xufeng Liu |
| <mailto:xufeng.liu@ericsson.com> |
| |
| Editor: Xia Chen |
| <mailto:jescia.chenxia@huawei.com> |
| |
| Editor: Raqib Jones |
| <mailto:raqib@Brocade.com> |
| |
| Editor: Bin Wen |
| <mailto:Bin_Wen@cable.comcast.com>"; |
| |
| description |
| "YANG data module for TE configuration, |
| state, RPC and notifications."; |
| |
| revision "2016-07-05" { |
| description "Latest update to TE generic YANG module."; |
| reference "TBD"; |
| } |
| |
| typedef tunnel-ref { |
| type leafref { |
| path "/te:te/te:tunnels/te:tunnel/te:name"; |
| } |
| description |
| "This type is used by data models that need to reference |
| configured TE tunnel."; |
| } |
| |
| /** |
| * TE tunnel generic groupings |
| */ |
| |
| grouping p2p-secondary-path-params { |
| description |
| "tunnel path properties."; |
| container config { |
| description |
| "Configuration parameters relating to |
| tunnel properties"; |
| uses path-properties_config; |
| uses path-params_config; |
| } |
| container state { |
| config false; |
| description |
| "State information associated with tunnel |
| properties"; |
| uses path-properties_config; |
| uses path-params_config; |
| uses p2p-secondary-path-params_state; |
| } |
| } |
| |
| grouping p2p-primary-path-params { |
| description |
| "TE tunnel primary path properties grouping"; |
| container config { |
| description |
| "Configuration parameters relating to |
| tunnel properties"; |
| uses path-properties_config; |
| uses path-params_config; |
| } |
| container state { |
| config false; |
| description |
| "State information associated with tunnel |
| properties"; |
| uses path-params_config; |
| uses p2p-primary-path-params_state; |
| } |
| } |
| |
| grouping p2p-primary-path-params_state { |
| description "TE primary path state parameters"; |
| list lsp { |
| key |
| "source destination tunnel-id lsp-id "+ |
| "extended-tunnel-id type"; |
| description "List of LSPs associated with the tunnel."; |
| |
| leaf source { |
| type leafref { |
| path "../../../../../../lsps-state/lsp/source"; |
| } |
| description |
| "Tunnel sender address extracted from |
| SENDER_TEMPLATE object"; |
| reference "RFC3209"; |
| } |
| leaf destination { |
| type leafref { |
| path "../../../../../../lsps-state/lsp/destination"; |
| } |
| description |
| "Tunnel endpoint address extracted from |
| SESSION object"; |
| reference "RFC3209"; |
| } |
| leaf tunnel-id { |
| type leafref { |
| path "../../../../../../lsps-state/lsp/tunnel-id"; |
| } |
| description |
| "Tunnel identifier used in the SESSION |
| that remains constant over the life |
| of the tunnel."; |
| reference "RFC3209"; |
| } |
| leaf lsp-id { |
| type leafref { |
| path "../../../../../../lsps-state/lsp/lsp-id"; |
| } |
| description |
| "Identifier used in the SENDER_TEMPLATE |
| and the FILTER_SPEC that can be changed |
| to allow a sender to share resources with |
| itself."; |
| reference "RFC3209"; |
| } |
| leaf extended-tunnel-id { |
| type leafref { |
| path "../../../../../../lsps-state/lsp/extended-tunnel-id"; |
| } |
| description |
| "Extended Tunnel ID of the LSP."; |
| reference "RFC3209"; |
| } |
| leaf type { |
| type leafref { |
| path "../../../../../../lsps-state/lsp/type"; |
| } |
| description "LSP type P2P or P2MP"; |
| } |
| } |
| } |
| |
| grouping p2p-secondary-path-params_state { |
| description "TE secondary path state parameters"; |
| list lsp { |
| key "source"; |
| description "List of LSPs associated with the tunnel."; |
| |
| leaf source { |
| type leafref { |
| path "../../../../../../../lsps-state/lsp/source"; |
| } |
| description |
| "Tunnel sender address extracted from |
| SENDER_TEMPLATE object"; |
| reference "RFC3209"; |
| } |
| leaf destination { |
| type leafref { |
| path "../../../../../../../lsps-state/lsp/destination"; |
| } |
| description |
| "Tunnel endpoint address extracted from |
| SESSION object"; |
| reference "RFC3209"; |
| } |
| leaf tunnel-id { |
| type leafref { |
| path "../../../../../../../lsps-state/lsp/tunnel-id"; |
| } |
| description |
| "Tunnel identifier used in the SESSION |
| that remains constant over the life |
| of the tunnel."; |
| reference "RFC3209"; |
| } |
| leaf lsp-id { |
| type leafref { |
| path "../../../../../../../lsps-state/lsp/lsp-id"; |
| } |
| description |
| "Identifier used in the SENDER_TEMPLATE |
| and the FILTER_SPEC that can be changed |
| to allow a sender to share resources with |
| itself."; |
| reference "RFC3209"; |
| } |
| leaf extended-tunnel-id { |
| type leafref { |
| path "../../../../../../../lsps-state/lsp/extended-tunnel-id"; |
| } |
| description |
| "Extended Tunnel ID of the LSP."; |
| reference "RFC3209"; |
| } |
| leaf type { |
| type leafref { |
| path "../../../../../../../lsps-state/lsp/type"; |
| } |
| description "LSP type P2P or P2MP"; |
| } |
| } |
| } |
| |
| grouping path-params_config { |
| description |
| "TE tunnel path parameters configuration grouping"; |
| leaf path-named-constraint { |
| if-feature te-types:named-path-constraints; |
| type string; |
| description |
| "Reference to a globally defined named path |
| constraint set"; |
| } |
| uses te-types:tunnel-path-selection; |
| choice type { |
| description |
| "Describes the path type"; |
| case dynamic { |
| leaf dynamic { |
| type empty; |
| description |
| "A CSPF dynamically computed path"; |
| } |
| } |
| case explicit { |
| leaf explicit-path-name { |
| type string; |
| description |
| "The explicit-path name"; |
| } |
| |
| list explicit-route-objects { |
| key "index"; |
| description |
| "List of explicit route objects"; |
| leaf index { |
| type uint8 { |
| range "0..255"; |
| } |
| description |
| "Index of this explicit route object"; |
| } |
| leaf explicit-route-usage { |
| type identityref { |
| base te-types:route-usage-type; |
| } |
| description "An explicit-route hop action."; |
| } |
| uses te-types:explicit-route-subobject; |
| } |
| } |
| } |
| leaf no-cspf { |
| type empty; |
| description |
| "Indicates no CSPF is to be attempted on this |
| path."; |
| } |
| leaf lockdown { |
| type empty; |
| description |
| "Indicates no reoptimization to be attempted for |
| this path."; |
| } |
| } |
| |
| /* TE tunnel configuration data */ |
| grouping tunnel-params_config { |
| description |
| "Configuration parameters relating to TE tunnel"; |
| leaf name { |
| type string; |
| description "TE tunnel name."; |
| } |
| leaf type { |
| type identityref { |
| base te-types:tunnel-type; |
| } |
| description "TE tunnel type."; |
| } |
| leaf identifier { |
| type uint16; |
| description |
| "TE tunnel Identifier."; |
| } |
| leaf description { |
| type string; |
| description |
| "Textual description for this TE tunnel"; |
| } |
| leaf lsp-priority-setup { |
| type uint8 { |
| range "0..7"; |
| } |
| description |
| "TE LSP setup priority"; |
| } |
| leaf lsp-priority-hold { |
| type uint8 { |
| range "0..7"; |
| } |
| description |
| "TE LSP hold priority"; |
| } |
| leaf lsp-protection-type { |
| type identityref { |
| base te-types:lsp-prot-type; |
| } |
| description "LSP protection type."; |
| } |
| leaf admin-status { |
| type identityref { |
| base te-types:state-type; |
| } |
| default te-types:state-up; |
| description "TE tunnel administrative state."; |
| } |
| leaf source { |
| type inet:ip-address; |
| description |
| "TE tunnel source address."; |
| } |
| leaf destination { |
| /* Add when check */ |
| type inet:ip-address; |
| description |
| "P2P tunnel destination address"; |
| } |
| leaf src-tp-id { |
| type binary; |
| description |
| "TE tunnel source termination point identifier."; |
| } |
| leaf dst-tp-id { |
| /* Add when check */ |
| type binary; |
| description |
| "TE tunnel destination termination point identifier."; |
| } |
| container hierarchical-link-id { |
| description |
| "Identifies a hierarchical link (in server layer) |
| that this tunnel is associated with."; |
| leaf local-te-node-id { |
| type te-types:te-node-id; |
| description |
| "Local TE node identifier"; |
| } |
| leaf local-te-link-tp-id { |
| type te-types:te-tp-id; |
| description |
| "Local TE link termination point identifier"; |
| } |
| leaf remote-te-node-id { |
| type te-types:te-node-id; |
| description |
| "Remote TE node identifier"; |
| } |
| 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."; |
| } |
| } |
| uses te-types:tunnel-bidir-assoc-properties; |
| } |
| |
| grouping tunnel-params_state { |
| description |
| "State parameters relating to TE tunnel"; |
| leaf oper-status { |
| type identityref { |
| base te-types:state-type; |
| } |
| description "TE tunnel operational state."; |
| } |
| } |
| |
| grouping path-properties_config { |
| description "TE path properties grouping"; |
| leaf name { |
| type string; |
| description "TE path name"; |
| } |
| leaf preference { |
| type uint8 { |
| range "1..255"; |
| } |
| description |
| "Specifies a preference for this path. The lower the |
| number higher the preference"; |
| } |
| } |
| |
| /* TE tunnel configuration/state grouping */ |
| grouping tunnel-properties { |
| description |
| "Top level grouping for tunnel properties."; |
| container config { |
| description |
| "Configuration parameters relating to |
| tunnel properties"; |
| uses tunnel-params_config; |
| } |
| container state { |
| config false; |
| description |
| "State information associated with tunnel |
| properties"; |
| uses tunnel-params_config; |
| uses tunnel-params_state; |
| } |
| list primary-paths { |
| key "name"; |
| description |
| "List of primary paths for this tunnel."; |
| leaf name { |
| type leafref { |
| path "../config/name"; |
| } |
| description "TE path name"; |
| } |
| leaf preference { |
| type leafref { |
| path "../config/preference"; |
| } |
| description |
| "Specifies a preference for this path. The lower the |
| number higher the preference"; |
| } |
| uses p2p-primary-path-params; |
| list secondary-paths { |
| key "name"; |
| description |
| "List of secondary paths for this tunnel."; |
| leaf name { |
| type leafref { |
| path "../config/name"; |
| } |
| description "TE path name"; |
| } |
| leaf preference { |
| type leafref { |
| path "../config/preference"; |
| } |
| description |
| "Specifies a preference for this path. The lower the |
| number higher the preference"; |
| } |
| uses p2p-secondary-path-params; |
| } |
| } |
| } |
| /*** End of TE tunnel groupings ***/ |
| |
| /** |
| * LSP related generic groupings |
| */ |
| grouping lsp-record-route-information_state { |
| description "recorded route information grouping"; |
| container lsp-record-route { |
| description "RSVP recorded route object information"; |
| list record-route-subobjects { |
| when "../origin-type != 'ingress'" { |
| description "Applicable on non-ingress LSPs only"; |
| } |
| key "subobject-index"; |
| description ""; |
| leaf subobject-index { |
| type uint32; |
| description "RRO subobject index"; |
| } |
| uses te-types:record-route-subobject; |
| } |
| } |
| } |
| |
| grouping lsp-properties_state { |
| description |
| "State parameters relating to LSP"; |
| leaf oper-status { |
| type identityref { |
| base te-types:state-type; |
| } |
| description "LSP operational state."; |
| } |
| |
| leaf origin-type { |
| type enumeration { |
| enum ingress { |
| description |
| "Origin ingress"; |
| } |
| enum egress { |
| description |
| "Origin egress"; |
| } |
| enum transit { |
| description |
| "transit"; |
| } |
| } |
| description |
| "Origin type of LSP relative to the location |
| of the local switch in the path."; |
| } |
| |
| leaf lsp-resource-status { |
| type enumeration { |
| enum primary { |
| description |
| "A primary LSP is a fully established LSP for |
| which the resource allocation has been committed |
| at the data plane"; |
| } |
| enum secondary { |
| description |
| "A secondary LSP is an LSP that has been provisioned |
| in the control plane only; e.g. resource allocation |
| has not been committed at the data plane"; |
| } |
| } |
| description "LSP resource allocation type"; |
| reference "rfc4872, section 4.2.1"; |
| } |
| |
| leaf lsp-protection-role { |
| type enumeration { |
| enum working { |
| description |
| "A working LSP must be a primary LSP whilst a protecting |
| LSP can be either a primary or a secondary LSP. Also, |
| known as protected LSPs when working LSPs are associated |
| with protecting LSPs."; |
| } |
| enum protecting { |
| description |
| "A secondary LSP is an LSP that has been provisioned |
| in the control plane only; e.g. resource allocation |
| has not been committed at the data plane"; |
| } |
| } |
| description "LSP role type"; |
| reference "rfc4872, section 4.2.1"; |
| } |
| |
| leaf lsp-operational-status { |
| type empty; |
| description |
| "This bit is set when a protecting LSP is carrying the normal |
| traffic after protection switching"; |
| } |
| } |
| /*** End of TE LSP groupings ***/ |
| |
| /** |
| * TE global generic groupings |
| */ |
| |
| /* Global named admin-groups configuration data */ |
| grouping named-admin-groups_config { |
| description |
| "Global named administrative groups configuration |
| grouping"; |
| list named-admin-groups { |
| if-feature te-types:extended-admin-groups; |
| if-feature te-types:named-extended-admin-groups; |
| key "name"; |
| description |
| "List of named TE admin-groups"; |
| leaf name { |
| type string; |
| description |
| "A string name that uniquely identifies a TE |
| interface named admin-group"; |
| } |
| leaf bit-position { |
| type uint32; |
| description |
| "Bit position representing the administrative group"; |
| } |
| } |
| } |
| |
| /* Global named admin-srlgs configuration data */ |
| grouping named-srlgs_config { |
| description |
| "Global named SRLGs configuration |
| grouping"; |
| list named-srlgs { |
| if-feature te-types:named-srlg-groups; |
| key "name"; |
| description |
| "A list of named SRLG groups"; |
| leaf name { |
| type string; |
| description |
| "A string name that uniquely identifies a TE |
| interface named srlg"; |
| } |
| leaf group { |
| type te-types:srlg; |
| description "An SRLG value"; |
| } |
| } |
| } |
| |
| /* Global named explicit-paths configuration data */ |
| grouping named-explicit-paths_config { |
| description |
| "Global explicit path configuration |
| grouping"; |
| list named-explicit-paths { |
| key "name"; |
| description |
| "A list of explicit paths"; |
| leaf name { |
| type string; |
| description |
| "A string name that uniquely identifies an |
| explicit path"; |
| } |
| list explicit-route-objects { |
| key "index"; |
| description |
| "List of explicit route objects"; |
| leaf index { |
| type uint8 { |
| range "0..255"; |
| } |
| description |
| "Index of this explicit route object"; |
| } |
| leaf explicit-route-usage { |
| type identityref { |
| base te-types:route-usage-type; |
| } |
| description "An explicit-route hop action."; |
| } |
| uses te-types:explicit-route-subobject; |
| } |
| } |
| } |
| |
| /* Global named paths constraints configuration data */ |
| grouping named-path-constraints_config { |
| description |
| "Global named path constraints configuration |
| grouping"; |
| list named-constraints { |
| if-feature te-types:named-path-constraints; |
| key "name"; |
| description |
| "A list of named path constraints"; |
| leaf name { |
| type string; |
| description |
| "A string name that uniquely identifies a |
| path constraint set"; |
| } |
| uses te-types:tunnel-path-selection; |
| } |
| } |
| |
| /* TE globals container data */ |
| grouping globals-grouping { |
| description |
| "Globals TE system-wide configuration data grouping"; |
| container globals { |
| description |
| "Globals TE system-wide configuration data container"; |
| container config { |
| description |
| "Configuration parameters for system-wide |
| parameters"; |
| uses named-admin-groups_config; |
| uses named-srlgs_config; |
| uses named-explicit-paths_config; |
| uses named-path-constraints_config; |
| } |
| container state { |
| config false; |
| description |
| "State for system-wide parameters"; |
| uses named-admin-groups_config; |
| uses named-srlgs_config; |
| uses named-explicit-paths_config; |
| uses named-path-constraints_config; |
| } |
| } |
| } |
| |
| /* TE tunnels container data */ |
| grouping tunnels-grouping { |
| description |
| "Tunnels TE configuration data grouping"; |
| container tunnels { |
| description |
| "Tunnels TE configuration data container"; |
| |
| list tunnel { |
| key "name type"; |
| unique "identifier"; |
| description "TE tunnel."; |
| leaf name { |
| type leafref { |
| path "../config/name"; |
| } |
| description "TE tunnel name."; |
| } |
| leaf type { |
| type leafref { |
| path "../config/type"; |
| } |
| description "TE tunnel type."; |
| } |
| leaf identifier { |
| type leafref { |
| path "../config/identifier"; |
| } |
| description |
| "TE tunnel Identifier."; |
| } |
| uses tunnel-properties; |
| } |
| } |
| } |
| |
| /* TE LSPs ephemeral state container data */ |
| grouping lsps-state-grouping { |
| description |
| "LSPs state operational data grouping"; |
| container lsps-state { |
| config "false"; |
| description "LSPs operational state data."; |
| |
| list lsp { |
| key |
| "source destination tunnel-id lsp-id "+ |
| "extended-tunnel-id type"; |
| description |
| "List of LSPs associated with the tunnel."; |
| leaf source { |
| type inet:ip-address; |
| description |
| "Tunnel sender address extracted from |
| SENDER_TEMPLATE object"; |
| reference "RFC3209"; |
| } |
| leaf destination { |
| type inet:ip-address; |
| description |
| "Tunnel endpoint address extracted from |
| SESSION object"; |
| reference "RFC3209"; |
| } |
| leaf tunnel-id { |
| type uint16; |
| description |
| "Tunnel identifier used in the SESSION |
| that remains constant over the life |
| of the tunnel."; |
| reference "RFC3209"; |
| } |
| leaf lsp-id { |
| type uint16; |
| description |
| "Identifier used in the SENDER_TEMPLATE |
| and the FILTER_SPEC that can be changed |
| to allow a sender to share resources with |
| itself."; |
| reference "RFC3209"; |
| } |
| leaf extended-tunnel-id { |
| type inet:ip-address; |
| description |
| "Extended Tunnel ID of the LSP."; |
| reference "RFC3209"; |
| } |
| leaf type { |
| type identityref { |
| base te-types:tunnel-type; |
| } |
| description "The LSP type P2P or P2MP"; |
| } |
| uses lsp-properties_state; |
| uses lsp-record-route-information_state; |
| } |
| } |
| } |
| /*** End of TE global groupings ***/ |
| |
| /** |
| * TE configurations container |
| */ |
| container te { |
| presence "Enable TE feature."; |
| description |
| "TE global container."; |
| |
| /* TE Global Configuration Data */ |
| uses globals-grouping; |
| |
| /* TE Tunnel Configuration Data */ |
| uses tunnels-grouping; |
| |
| /* TE LSPs State Data */ |
| uses lsps-state-grouping; |
| } |
| |
| /* TE Global RPCs/execution Data */ |
| rpc globals-rpc { |
| description |
| "Execution data for TE global."; |
| } |
| |
| /* TE interfaces RPCs/execution Data */ |
| rpc interfaces-rpc { |
| description |
| "Execution data for TE interfaces."; |
| } |
| |
| /* TE Tunnel RPCs/execution Data */ |
| rpc tunnels-rpc { |
| description |
| "TE tunnels RPC nodes"; |
| } |
| |
| /* TE Global Notification Data */ |
| notification globals-notif { |
| description |
| "Notification messages for Global TE."; |
| } |
| |
| /* TE Tunnel Notification Data */ |
| notification tunnels-notif { |
| description |
| "Notification messages for TE tunnels."; |
| } |
| } |