diff options
Diffstat (limited to 'platform-logic/restconfapi-yang/src/main/yang/ietf-eth-tran-service@2018-03-01.yang')
-rw-r--r-- | platform-logic/restconfapi-yang/src/main/yang/ietf-eth-tran-service@2018-03-01.yang | 572 |
1 files changed, 572 insertions, 0 deletions
diff --git a/platform-logic/restconfapi-yang/src/main/yang/ietf-eth-tran-service@2018-03-01.yang b/platform-logic/restconfapi-yang/src/main/yang/ietf-eth-tran-service@2018-03-01.yang new file mode 100644 index 00000000..cb7c8f05 --- /dev/null +++ b/platform-logic/restconfapi-yang/src/main/yang/ietf-eth-tran-service@2018-03-01.yang @@ -0,0 +1,572 @@ +module ietf-eth-tran-service { + + namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-service"; + + prefix "ethtsvc"; + + import ietf-yang-types { + prefix "yang"; + } + + import ietf-te-types { + prefix "te-types"; + } + + import ietf-eth-tran-types { + prefix "etht-types"; + } + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + WG List: <mailto:ccamp@ietf.org> + ID-draft editor: + Haomian Zheng (zhenghaomian@huawei.com); + Italo Busi (italo.busi@huawei.com); + Aihua Guo (aihuaguo@huawei.com); + Yunbin Xu (xuyunbin@ritt.cn); + Yang Zhao (zhaoyangyjy@chinamobile.com); + Xufeng Liu (Xufeng_Liu@jabil.com); + Giuseppe Fioccola (giuseppe.fioccola@telecomitalia.it); + "; + + description + "This module defines a YANG data model for describing + the Ethernet transport services."; + + revision 2018-03-01 { + description + "Initial revision"; + reference + "draft-zheng-ccamp-client-signal-yang"; + } + + /* + Groupings + */ + + grouping vlan-classification { + description + "A grouping which represents classification on an 802.1Q VLAN tag."; + + leaf tag-type { + type etht-types:eth-tag-classify; + description + "The tag type used for VLAN classification."; + } + choice individual-bundling-vlan { + description + "VLAN based classification can be individual + or bundling."; + case individual-vlan { + leaf vlan-value { + type etht-types:vlanid; + description + "VLAN ID value."; + } + } + + case vlan-bundling { + leaf vlan-range { + type etht-types:vid-range-type; + description + "List of VLAN ID values."; + } + } + } + } + + grouping vlan-write { + description + "A grouping which represents push/pop operations + of an 802.1Q VLAN tag."; + + leaf tag-type { + type etht-types:eth-tag-type; + description + "The VLAN tag type to push/swap."; + } + leaf vlan-value { + type etht-types:vlanid; + description + "The VLAN ID value to push/swap."; + } + } + + grouping vlan-operations { + description + "A grouping which represents VLAN operations."; + + leaf pop-tags { + type uint8 { + range "1..2"; + } + description + "The number of VLAN tags to pop (or swap if used in + conjunction with push-tags)"; + } + container push-tags { + description + "The VLAN tags to push (or swap if used in + conjunction with pop-tags)"; + + container outer-tag { + presence + "Indicates existence of the outermost VLAN tag to + push/swap"; + + description + "The outermost VLAN tag to push/swap."; + + uses vlan-write; + } + container second-tag { + must + '../outer-tag/tag-type = "s-vlan-tag-type" and ' + + 'tag-type = "c-vlan-tag-type"' + { + + error-message + " + When pushing/swapping two tags, the outermost tag must + be specified and of S-VLAN type and the second + outermost tag must be of C-VLAN tag type. + "; + description + " + For IEEE 802.1Q interoperability, when pushing/swapping + two tags, it is required that the outermost tag exists + and is an S-VLAN, and the second outermost tag is a + C-VLAN. + "; + } + + presence + "Indicates existence of a second outermost VLAN tag to + push/swap"; + + description + "The second outermost VLAN tag to push/swap."; + + uses vlan-write; + } + } + } + + grouping bandwidth-profiles { + description + "A grouping which represent bandwidth profile configuration."; + + choice direction { + description + "Whether the bandwidth profiles are symmetrical or + asymmetrical"; + case symmetrical { + description + "The same bandwidth profile is used to describe the ingress + and the egress bandwidth profile."; + + leaf ingress-egress-bandwidth-profile-name { + type "string"; + description + "Name of the bandwidth profile."; + } + } + case asymmetrical { + description + "Ingress and egress bandwidth profiles can be specified."; + leaf ingress-bandwidth-profile-name { + type "string"; + description + "Name of the bandwidth profile used in + the ingress direction."; + } + leaf egress-bandwidth-profile-name { + type "string"; + description + "Name of the bandwidth profile used in + the egress direction."; + } + } + } + } + + grouping etht-svc-access-parameters { + description + "ETH transport services access parameters"; + + leaf access-node-id { + type te-types:te-node-id; + description + "The identifier of the access node in + the ETH transport topology."; + } + leaf access-ltp-id { + type te-types:te-tp-id; + description + "The TE link termination point identifier, used + together with access-node-id to identify the + access LTP."; + } + leaf service-classification-type { + type identityref { + base etht-types:service-classification-type; + } + description + "Service classification type."; + } + + choice service-classification { + description + "Access classification can be port-based or + VLAN based."; + + case port-classification { + /* no additional information */ + } + + case vlan-classification { + container outer-tag { + presence "The outermost VLAN tag exists"; + description + "Classifies traffic using the outermost VLAN tag."; + + uses vlan-classification; + } + container second-tag { + must + '../outer-tag/tag-type = "classify-s-vlan" and ' + + 'tag-type = "classify-c-vlan"' + { + + error-message + " + When matching two tags, the outermost tag must be + specified and of S-VLAN type and the second + outermost tag must be of C-VLAN tag type. + "; + description + " + For IEEE 802.1Q interoperability, when matching two + tags, it is required that the outermost tag exists + and is an S-VLAN, and the second outermost tag is a + C-VLAN. + "; + } + presence "The second outermost VLAN tag exists"; + + description + "Classifies traffic using the second outermost VLAN tag."; + + uses vlan-classification; + } + } + } + +/* + Open issue: can we constraints it to be used only with mp services? +*/ + leaf split-horizon-group { + type string; + description "Identify a split horizon group"; + } + + uses bandwidth-profiles; + + container vlan-operations { + description + "include parameters for vlan-operation"; + choice direction { + description + "Whether the VLAN operations are symmetrical or + asymmetrical"; + case symmetrical { + container symmetrical-operation { + uses vlan-operations; + description + "Symmetrical operations. + Expressed in the ingress direction, but + the reverse operation is applied to egress traffic"; + } + } + case asymmetrical { + container asymmetrical-operation { + description "Asymmetrical operations"; + container ingress { + uses vlan-operations; + description "Ingress operations"; + } + container egress { + uses vlan-operations; + description "Egress operations"; + } + } + } + } + } + } + + grouping etht-svc-tunnel-parameters { + description + "ETH transport services tunnel parameters"; + + leaf tunnel-name { + type string; + description + "TE service tunnel instance name."; + } + choice svc-multiplexing-tag { + description + "Service multiplexing is optional and flexible."; + + case other { + /* + placeholder to support proprietary multiplexing + (for further discussion) + */ + } + + case none { + /* no additional information is needed */ + } + + case vlan-tag { + /* + No additional information is needed + The C-Tag or S-Tag used for service mulitplexing is defined + by the VLAN classification and operations configured in the + etht-svc-access-parameters grouping + */ + } + + case pw { + /* to be completed (for further discussion) */ + } + } + +/* + Open issue: can we constraints it to be used only with mp services? +*/ + leaf src-split-horizon-group { + type string; + description "Identify a split horizon group at the Tunnel source TTP"; + } + leaf dst-split-horizon-group { + type string; + description "Identify a split horizon group at the Tunnel destination TTP"; + } + } + + grouping te-topology-identifier { + description + "An identifier to uniquely identify the TE topology."; + leaf access-provider-id { + type te-types:te-global-id; + description + "An identifier to uniquely identify a provider."; + } + leaf access-client-id { + type te-types:te-global-id; + description + "An identifier to uniquely identify a client."; + } + leaf access-topology-id { + type te-types:te-topology-id; + description + "Identifies the topology the + service access ports belong to."; + } + } + + grouping etht-svc-pm-threshold_config { + description + "Configuraiton parameters for Ethernet service PM thresholds."; + + leaf sending-rate-high { + type uint64; + description + "High threshold of packet sending rate in kbps."; + } + leaf sending-rate-low { + type uint64; + description + "Low threshold of packet sending rate in kbps."; + } + leaf receiving-rate-high { + type uint64; + description + "High threshold of packet receiving rate in kbps."; + } + leaf receiving-rate-low { + type uint64; + description + "Low threshold of packet receiving rate in kbps."; + } + } + + grouping etht-svc-pm-stats { + description + "Ethernet service PM statistics."; + + leaf sending-rate-too-high { + type uint32; + description + "Counter that indicates the number of times the sending rate is above the high threshold"; + } + leaf sending-rate-too-low { + type uint32; + description + "Counter that indicates the number of times the sending rate is below the low threshold"; + } + leaf receiving-rate-too-high { + type uint32; + description + "Counter that indicates the number of times the receiving rate is above the high threshold"; + } + leaf receiving-rate-too-low { + type uint32; + description + "Counter that indicates the number of times the receiving rate is below the low threshold"; + } + } + + grouping etht-svc-instance_config { + description + "Configuraiton parameters for Ethernet services."; + + leaf etht-svc-name { + type string; + description + "Name of the p2p ETH transport service."; + } + + leaf etht-svc-descr { + type string; + description + "Description of the ETH transport service."; + } + + leaf etht-svc-type { + type etht-types:service-type; + description + "Type of Ethernet service (p2p, mp2mp or rmp)."; + /* Add default as p2p */ + } + + uses te-topology-identifier; + + list etht-svc-access-ports { + key access-port-id; + min-elements "1"; +/* + Open Issue: + Is it possible to limit the max-elements only for p2p services? + max-elements "2"; +*/ + description + "List of the ETH trasport services access port instances."; + + leaf access-port-id { + type uint16; + description + "ID of the service access port instance"; + } + uses etht-svc-access-parameters; + } + list etht-svc-tunnels { + key tunnel-name; + description + "List of the TE Tunnels supporting the ETH + transport service."; + + uses etht-svc-tunnel-parameters; + } + container pm-config { + description + "ETH service performance monitoring"; + + leaf pm-enable { + type boolean; + description + "Boolean value indicating whether PM is enabled."; + } + uses etht-svc-pm-threshold_config; + } + leaf admin-status { + type identityref { + base te-types:tunnel-state-type; + } + default te-types:tunnel-state-up; + description "ETH service administrative state."; + } + } + + grouping etht-svc-instance_state { + description + "State parameters for Ethernet services."; + + leaf operational-state { + type identityref { + base te-types:tunnel-state-type; + } + default te-types:tunnel-state-up; + description "ETH service operational state."; + } + leaf provisioning-state { + type identityref { + base te-types:lsp-state-type; + } + description "ETH service provisioning state."; + } + leaf creation-time { + type yang:date-and-time; + description + "Time of ETH service creation."; + } + leaf last-updated-time { + type yang:date-and-time; + description + "Time of ETH service last update."; + } + uses etht-svc-pm-stats; + } + + /* + Data nodes + */ + + container etht-svc { + description + "ETH transport services."; + + container globals { + description + "ETH profile information."; + list etht-svc-bandwidth-profiles { + key bandwidth-profile-name; + description + "List of bandwidth profile templates used by + Ethernet services."; + + uses etht-types:etht-bandwidth-profiles; + } + } + + list etht-svc-instances { + key etht-svc-name; + description + "The list of p2p ETH transport service instances"; + + uses etht-svc-instance_config; + + container state { + config false; + description + "Ethernet Service states."; + + uses etht-svc-instance_state; + } + } + } +}
\ No newline at end of file |