| module openconfig-mpls-types { |
| |
| yang-version "1"; |
| |
| // namespace |
| namespace "http://openconfig.net/yang/mpls-types"; |
| |
| prefix "oc-mpls-types"; |
| |
| import openconfig-extensions { prefix oc-ext; } |
| |
| // meta |
| organization "OpenConfig working group"; |
| |
| contact |
| "OpenConfig working group |
| netopenconfig@googlegroups.com"; |
| |
| description |
| "General types for MPLS / TE data model"; |
| |
| oc-ext:openconfig-version "2.4.0"; |
| |
| revision "2017-06-21" { |
| description |
| "Add TC bits typedef."; |
| reference "2.4.0"; |
| } |
| |
| revision "2017-03-22" { |
| description |
| "Add RSVP calculated-absolute-subscription-bw"; |
| reference "2.3.0"; |
| } |
| |
| revision "2017-01-26" { |
| description |
| "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; |
| reference "2.2.0"; |
| } |
| |
| revision "2016-12-15" { |
| description |
| "Add additional MPLS parameters"; |
| reference "2.1.0"; |
| } |
| |
| revision "2016-09-01" { |
| description |
| "Revisions based on implementation feedback"; |
| reference "2.0.0"; |
| } |
| |
| revision "2016-08-08" { |
| description |
| "Public release of MPLS models"; |
| reference "1.0.1"; |
| } |
| |
| // identity statements |
| |
| identity PATH_COMPUTATION_METHOD { |
| description |
| "base identity for supported path computation |
| mechanisms"; |
| } |
| |
| identity LOCALLY_COMPUTED { |
| base PATH_COMPUTATION_METHOD; |
| description |
| "indicates a constrained-path LSP in which the |
| path is computed by the local LER"; |
| } |
| |
| identity EXTERNALLY_QUERIED { |
| base PATH_COMPUTATION_METHOD; |
| description |
| "Constrained-path LSP in which the path is |
| obtained by querying an external source, such as a PCE server. |
| In the case that an LSP is defined to be externally queried, it may |
| also have associated explicit definitions (which are provided to the |
| external source to aid computation); and the path that is returned by |
| the external source is not required to provide a wholly resolved |
| path back to the originating system - that is to say, some local |
| computation may also be required"; |
| } |
| |
| identity EXPLICITLY_DEFINED { |
| base PATH_COMPUTATION_METHOD; |
| description |
| "constrained-path LSP in which the path is |
| explicitly specified as a collection of strict or/and loose |
| hops"; |
| } |
| |
| |
| // using identities rather than enum types to simplify adding new |
| // signaling protocols as they are introduced and supported |
| identity PATH_SETUP_PROTOCOL { |
| description |
| "base identity for supported MPLS signaling |
| protocols"; |
| } |
| |
| identity PATH_SETUP_RSVP { |
| base PATH_SETUP_PROTOCOL; |
| description |
| "RSVP-TE signaling protocol"; |
| } |
| |
| identity PATH_SETUP_SR { |
| base PATH_SETUP_PROTOCOL; |
| description |
| "Segment routing"; |
| } |
| |
| identity PATH_SETUP_LDP { |
| base PATH_SETUP_PROTOCOL; |
| description |
| "LDP - RFC 5036"; |
| } |
| |
| |
| identity PROTECTION_TYPE { |
| description |
| "base identity for protection type"; |
| } |
| |
| identity UNPROTECTED { |
| base PROTECTION_TYPE; |
| description |
| "no protection is desired"; |
| } |
| |
| identity LINK_PROTECTION_REQUIRED { |
| base PROTECTION_TYPE; |
| description |
| "link protection is desired"; |
| } |
| |
| identity LINK_NODE_PROTECTION_REQUESTED { |
| base PROTECTION_TYPE; |
| description |
| "node and link protection are both desired"; |
| } |
| |
| identity LSP_ROLE { |
| description |
| "Base identity for describing the role of |
| label switched path at the current node"; |
| } |
| |
| identity INGRESS { |
| base LSP_ROLE; |
| description |
| "Label switched path is an ingress (headend) |
| LSP"; |
| } |
| |
| identity EGRESS { |
| base LSP_ROLE; |
| description |
| "Label switched path is an egress (tailend) |
| LSP"; |
| } |
| |
| identity TRANSIT { |
| base LSP_ROLE; |
| description |
| "Label switched path is a transit LSP"; |
| } |
| |
| |
| identity TUNNEL_TYPE { |
| description |
| "Base identity from which specific tunnel types are |
| derived."; |
| } |
| |
| identity P2P { |
| base TUNNEL_TYPE; |
| description |
| "TE point-to-point tunnel type."; |
| } |
| |
| identity P2MP { |
| base TUNNEL_TYPE; |
| description |
| "TE point-to-multipoint tunnel type."; |
| } |
| |
| |
| identity LSP_OPER_STATUS { |
| description |
| "Base identity for LSP operational status"; |
| } |
| |
| identity DOWN { |
| base LSP_OPER_STATUS; |
| description |
| "LSP is operationally down or out of service"; |
| } |
| |
| identity UP { |
| base LSP_OPER_STATUS; |
| description |
| "LSP is operationally active and available |
| for traffic."; |
| } |
| |
| identity TUNNEL_ADMIN_STATUS { |
| description |
| "Base identity for tunnel administrative status"; |
| } |
| |
| identity ADMIN_DOWN { |
| base TUNNEL_ADMIN_STATUS; |
| description |
| "LSP is administratively down"; |
| } |
| |
| identity ADMIN_UP { |
| base TUNNEL_ADMIN_STATUS; |
| description |
| "LSP is administratively up"; |
| } |
| |
| identity NULL_LABEL_TYPE { |
| description |
| "Base identity from which specific null-label types are |
| derived."; |
| } |
| |
| identity EXPLICIT { |
| base NULL_LABEL_TYPE; |
| description |
| "Explicit null label is used."; |
| } |
| |
| identity IMPLICIT { |
| base NULL_LABEL_TYPE; |
| description |
| "Implicit null label is used."; |
| } |
| |
| identity LSP_METRIC_TYPE { |
| description |
| "Base identity for types of LSP metric specification"; |
| } |
| |
| identity LSP_METRIC_RELATIVE { |
| base LSP_METRIC_TYPE; |
| description |
| "The metric specified for the LSPs to which this identity refers |
| is specified as a relative value to the IGP metric cost to the |
| LSP's tail-end."; |
| } |
| |
| identity LSP_METRIC_ABSOLUTE { |
| base LSP_METRIC_TYPE; |
| description |
| "The metric specified for the LSPs to which this identity refers |
| is specified as an absolute value"; |
| } |
| |
| identity LSP_METRIC_INHERITED { |
| base LSP_METRIC_TYPE; |
| description |
| "The metric for for the LSPs to which this identity refers is |
| not specified explicitly - but rather inherited from the IGP |
| cost directly"; |
| } |
| |
| // typedef statements |
| typedef mpls-label { |
| type union { |
| type uint32 { |
| range 16..1048575; |
| } |
| type enumeration { |
| enum IPV4_EXPLICIT_NULL { |
| value 0; |
| description |
| "valid at the bottom of the label stack, |
| indicates that stack must be popped and packet forwarded |
| based on IPv4 header"; |
| } |
| enum ROUTER_ALERT { |
| value 1; |
| description |
| "allowed anywhere in the label stack except |
| the bottom, local router delivers packet to the local CPU |
| when this label is at the top of the stack"; |
| } |
| enum IPV6_EXPLICIT_NULL { |
| value 2; |
| description |
| "valid at the bottom of the label stack, |
| indicates that stack must be popped and packet forwarded |
| based on IPv6 header"; |
| } |
| enum IMPLICIT_NULL { |
| value 3; |
| description |
| "assigned by local LSR but not carried in |
| packets"; |
| } |
| enum ENTROPY_LABEL_INDICATOR { |
| value 7; |
| description |
| "Entropy label indicator, to allow an LSR |
| to distinguish between entropy label and applicaiton |
| labels RFC 6790"; |
| } |
| enum NO_LABEL { |
| description |
| "This value is utilised to indicate that the packet that |
| is forwarded by the local system does not have an MPLS |
| header applied to it. Typically, this is used at the |
| egress of an LSP"; |
| } |
| } |
| } |
| description |
| "type for MPLS label value encoding"; |
| reference "RFC 3032 - MPLS Label Stack Encoding"; |
| } |
| |
| typedef tunnel-type { |
| type enumeration { |
| enum P2P { |
| description |
| "point-to-point label-switched-path"; |
| } |
| enum P2MP { |
| description |
| "point-to-multipoint label-switched-path"; |
| } |
| enum MP2MP { |
| description |
| "multipoint-to-multipoint label-switched-path"; |
| } |
| } |
| description |
| "defines the tunnel type for the LSP"; |
| reference |
| "RFC 6388 - Label Distribution Protocol Extensions for |
| Point-to-Multipoint and Multipoint-to-Multipoint Label Switched |
| Paths |
| RFC 4875 - Extensions to Resource Reservation Protocol |
| - Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE |
| Label Switched Paths (LSPs)"; |
| } |
| |
| typedef bandwidth-kbps { |
| type uint64; |
| units "Kbps"; |
| description |
| "Bandwidth values expressed in kilobits per second"; |
| } |
| |
| typedef bandwidth-mbps { |
| type uint64; |
| units "Mbps"; |
| description |
| "Bandwidth values expressed in megabits per second"; |
| } |
| |
| typedef bandwidth-gbps { |
| type uint64; |
| units "Gbps"; |
| description |
| "Bandwidth values expressed in gigabits per second"; |
| } |
| |
| typedef mpls-tc { |
| type uint8 { |
| range "0..7"; |
| } |
| description |
| "Values of the MPLS Traffic Class (formerly known as |
| Experimental, EXP) bits"; |
| } |
| |
| // grouping statements |
| |
| // data definition statements |
| |
| // augment statements |
| |
| // rpc statements |
| |
| // notification statements |
| |
| } |