Internet-Draft | Service Path Computation | July 2024 |
Yu, et al. | Expires 9 January 2025 | [Page] |
This document defines a YANG data model for client signal service's path computation and path management.¶
This note is to be removed before publishing as an RFC.¶
The latest revision of this draft can be found at https://YuChaode.github.io/draft-ybb-ccamp-service-path-computation/draft-ybb-ccamp-service-path-computation.html. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-ybb-ccamp-service-path-computation/.¶
Discussion of this document takes place on the Common Control and Measurement Plane Working Group mailing list (mailto:[email protected]), which is archived at https://mailarchive.ietf.org/arch/browse/ccamp/. Subscribe at https://www.ietf.org/mailman/listinfo/ccamp/.¶
Source for this draft and an issue tracker can be found at https://github.com/YuChaode/draft-ybb-ccamp-service-path-computation.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 9 January 2025.¶
Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
For transport technology, the service's path is hierarchical, including OTN-layer trails and WDM-layer trails. According to the funcational structure defined by ITU-T, the OTN-layer trails include lower-order ODUk, high-order ODUk and OTUk trails. The WDM-lay trails include OTS, OMS and OCh trail. These trails and the configuration of client-side port configuration form an end-to-end client signal service.¶
Path computation is a common network management funcation. For traditional transport services, OTS and OMS trails are automatically generated once the fibers are connected and they don't require any path computation. The path computation is performed on the OCh layer trails and above. Traditionally, the path computation is performed from OCh to low-order ODUk trail layer by layer. This is called bottom-up approach.¶
One disavantage of bottom-up approach is that the client and server need to interact with each other multiple times. And sometimes, the client layer trail cannot be computed until the server layer trail is setup. This doea not comply with the intention of path computation which will not introduce actual configuration on the network.¶
In addition, the client prefers to transfer intent-based configuration instead of complex network configuration to achieve path computation and obtain all the layers' path computation result at one time. The server, usually it is played by the domain controller, can help to deal with the complex network configuration computation. This is called top-down approach.¶
This document focuses on the top-down path computation for transparent client signal service and non-transparent client signal service (Ethernet service).¶
We also focus on addressing some undiscussed requirements, such as how to ultize a generic structure to display path information for all the layers' path at once, and how to specify some parameters on the server layer's trail in the service path computation request, and how to support more complex path constraints, and how to manage the path computation results and how to reference them in service provisioning request.¶
The following terms are defined in [RFC7950] and are not redefined here:¶
The terminology for describing YANG data models is found in [RFC7950].¶
A simplified graphical representation of the data model is used in Section 4 of this document. The meaning of the symbols in this diagram is defined in [RFC8340].¶
In this document, names of data nodes and other data model objects are prefixed using the standard prefix associated with the corresponding YANG imported modules, as shown in the following table.¶
Prefix | Yang Module | Reference |
---|---|---|
clnt-svc | ietf-trans-client-service | [RFCYYYY] |
clnt-svc-pc | ietf-trans-client-path-computation | RFC XXXX |
RFC Editor Note: Please replace XXXX with the number assigned to the RFC once this draft becomes an RFC. Please replace YYYY with the RFC numbers assigned to [I-D.ietf-ccamp-client-signal-yang]. Please remove this note.¶
The hierarchical relationship of transport client signal service can reference to Figure 1: (Please note that, the OTN tunnels in this figure and subsequent figures include lower order OTN tunnels, higher order OTN tunnels, and OTU tunnels. The supporting relationship should comply with ITU-T G.XXXX definition. WDM tunnel also include the WDM, flexi-grid scenario and Media channel scenario. The hierarchical relationship should comply with ITU-T G.XXXX definition.)¶
For Ethernet client signal service, the client signal can be encapsulated into multiple approach. For example, it can be encapsulated into OTN tunnel directly, or it can be encapsulated into MPLS-TP/SDH tunnels and then into OTN tunnels. Note that the SDH tunnel is considered as an outdated technology and lacks standardization. Therefore, the scenario where Ethernet client signals are encapsulated into the SDH tunnel is not described in this document. The Figure 2 shows the hierarchical relationship of Ethernet service:¶
The reference method is defined in the [I-D.ietf-ccamp-client-signal-yang]. The supporting relationship between the tunnels can be also found by the dependency-tunnel structure define by the [I-D.ietf-teas-yang-te].¶
For the Top-down approach, the path computation request should be based on client signal service. It is needed to specify the source and destination access port of in the request. In addition, some common parameters, such as number of path to be calculated, protection and restoration capabities, path computation policy and path constraint (see Section 3.3).etc. And then the domain controller will trigger the computation on all the layers. The path computation result should contain all the layers' path information. For the OTN tunnel and WDM tunnel in the service path computation result, they can be non-existing before service path compuation and can be totally designed by the domain controller or control plane. The tunnels can also be existing before the service computation request. The domain controller can design to reuse some existing tunnels based on the consideration of maximum resource utilization. Similar to TE tunnel path computation, service path computation should not create any tunnels on the network during the whole computation process, and will not introduce any other changes on the network.¶
module: ietf-trans-client-service-path-computation rpcs: +---x client-service-precompute +--ro input | +--ro request* [request-id] | +--ro request-id string | +--ro path-count? uint8 | +--ro te-topology-identifier | +--ro src-access-ports | +--ro dst-access-ports | +--ro tunnel-policy | | +--ro protection | | +--ro restoration | | +--ro optimizations | +--ro explicit-route-exclude-objects | | +--ro route-object-exclude-object* [index] | +--ro explicit-route-include-objects | +--ro route-object-include-object* [index] +--ro output +--ro result* [request-id] +--ro request-id string +--ro result-code? enumeration +--ro (result-detail)? +--:(failure) | +--ro failure-reason? uint32 | +--ro error-message? string +--:(success) +--ro computed-paths* [path-id] | +--ro path-id yang:uuid | +--ro path-number? uint8 +--ro te-topology-identifier +--ro src-access-ports +--ro dst-access-ports +--ro underlay-tunnels +--ro underlay-tunnel* [index] +--ro index uint8 +--ro tunnel-name? leafref +--ro te-topology-identifier +--ro computed-lsp* [lsp-id] +--ro lsp-id uint8 +--ro lsp-type? enumeration +--ro lsp-metrics | +--ro lsp-metric* [metric-type] +--ro lsp-route-objects* [index]¶
For the MDSC, if it wants to show the whole information of computed path, the path computation result provided by the domain controller must contain tunnels at all the layers. The number of these tunnels is not fixed. For example, for OTN tunnel, the client signal can be encapsulated into a low order OTN tunnel at first, and then be multiplexed into a higher OTN tunnel. The client signal can be encapsulated into a high order OTN tunnel directly without the multiplexing scenario. There is another common scenario that an OTN tunnel is supported by multiple WDM tunnels. This document provides a generic structure in a list to present the actual path information regardless which layer it is. The tunnels will be ordered by index from 0 for the topmost tunnel. The correlation with server tunnel will be provided by the "server-tunnel" attribute in the LSP hop.¶
............................ +--ro underlay-tunnels +--ro underlay-tunnel* [index] +--ro index uint8 +--ro tunnel-name? leafref +--ro te-topology-identifier | +--ro provider-id? te-types:te-global-id | +--ro client-id? te-types:te-global-id | +--ro topology-id? te-types:te-topology-id +--ro computed-lsp* [lsp-id] +--ro lsp-id uint8 +--ro lsp-type? enumeration +--ro lsp-metrics | +--ro lsp-metric* [metric-type] | +--ro metric-type identityref | +--ro metric-value? uint32 | +--ro metric-unit? string +--ro lsp-route-objects* [index] +--ro index uint8 +--ro node-id? te-types:te-node-id +--ro node-uri-id? yang:uuid +--ro link-tp-id? te-types:te-tp-id +--ro ltp-uri-id? yang:uuid +--ro te-label | +--ro (technology)? | | +--:(wson) | | | +--ro (grid-type)? | | | +--:(dwdm) | | | | +--ro (single-or-super-channel)? | | | | +--:(single) | | | | | +--ro dwdm-n? l0-types:dwdm-n | | | | +--:(super) | | | | +--ro subcarrier-dwdm-n* l0-types:dwdm-n | | | +--:(cwdm) | | | +--ro cwdm-n? l0-types:cwdm-n | | +--:(otn) | | +--ro otn | | +--ro tpn? otn-tpn | | +--ro tsg? identityref | | +--ro ts-list? string | +--ro direction? te-types:te-label-direction +--ro server-tunnel? leafref¶
It is common for service path computation request to specify path constrain like node/link-tp inclusion/exclusion like TE tunnel path computation. And service path computation needs to support some more kind of path constraint, such as to specify service/tunnel/path included/excluded. There are also scenarios to specify path constrain across layers. For example, some people would like to specify a WDM node included/excluded or wavelength in the service path computation.¶
................................ +--ro route-object-include-object* [index] +--ro index uint8 +--ro node-id? te-types:te-node-id +--ro node-uri-id? yang:uuid +--ro link-tp-id? te-types:te-tp-id +--ro ltp-uri-id? yang:uuid +--ro te-label | +--ro (technology)? | | +--:(wson) | | | +--ro (grid-type)? | | | +--:(dwdm) | | | | +--ro (single-or-super-channel)? | | | | +--:(single) | | | | | +--ro dwdm-n? l0-types:dwdm-n | | | | +--:(super) | | | | +--ro subcarrier-dwdm-n* l0-types:dwdm-n | | | +--:(cwdm) | | | +--ro cwdm-n? l0-types:cwdm-n | | +--:(otn) | | +--ro otn | | +--ro tpn? otn-tpn | | +--ro tsg? identityref | | +--ro ts-list? string | +--ro direction? te-types:te-label-direction +--ro server-tunnel-name? leafref +--ro lsp-type? enumeration¶
### Storage of Path Computation Result It is useful to save the path computation results after they are return. Sometimes, people from operators will make the decision on the results in a short time. If the path is not saved in the domain controller, the MDSC needs to send the full path in the service creation request which is complex. So in this document, we recommend that the domain controller should be capable of saving path computation results to make it possible that the MDSC can reference the path computation result in service creation request. The path information in the path management structure should be same with the output of service path computation RPC. Once there is a RPC succeed in operating, the path management structure will add one more item. It is noted that the path computation result is not required to be saved forever in the domain controller. How long could it be saved is implementation-specific. But if the path has been adopted by a service creation request, including path inclusion/exclusion, the path can not be deleted from data store.¶
Note: the service path computation request is defined as an RPC, which is stateless. According to the requirement of RESTCONF, RPC should not generate any impact on the data model. So it is recommended to discuss with RESTCONF protocol expert to find a workaround solution.¶
module: ietf-trans-client-service-path-computation +--rw path-management +--rw path* [path-id] +--rw path-id yang:uuid +--rw creation-time? yang:date-and-time +--rw validity-period? uint8 +--rw underlay-tunnels +--rw underlay-tunnel* [index] +--rw index uint8 +--rw tunnel-name? leafref +--rw te-topology-identifier | +--rw provider-id? te-types:te-global-id | +--rw client-id? te-types:te-global-id | +--rw topology-id? te-types:te-topology-id +--rw computed-lsp* [lsp-id] +--rw lsp-id uint8 +--rw lsp-type? enumeration +--rw lsp-metrics | +--rw lsp-metric* [metric-type] | +--rw metric-type identityref | +--rw metric-value? uint32 | +--rw metric-unit? string +--rw lsp-route-objects* [index] +--rw index uint8 +--rw node-id? te-types:te-node-id +--rw node-uri-id? yang:uuid +--rw link-tp-id? te-types:te-tp-id +--rw ltp-uri-id? yang:uuid +--rw te-label | +--rw (technology)? | | +--:(wson) | | | +--rw (grid-type)? | | | +--:(dwdm) | | | | +--rw (single-or-super-channel)? | | | | +--:(single) | | | | | +--rw dwdm-n? l0-types:dwdm-n | | | | +--:(super) | | | | +--rw subcarrier-dwdm-n* l0-types:dwdm-n | | | +--:(cwdm) | | | +--rw cwdm-n? l0-types:cwdm-n | | +--:(otn) | | +--rw otn | | +--rw tpn? otn-tpn | | +--rw tsg? identityref | | +--rw ts-list? string | +--rw direction? te-types:te-label-direction +--rw server-tunnel? leafref¶
In the current service provisioning approach, the MDSC needs to specify the correlation of tunnel underlay. If the path computation result is saved in the domain controller. It is much easier to reference the path computation result instead of specifying tunnel underlay to do the provisioning.¶
To be added¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
TODO Security¶
This document has no IANA actions.¶
This document was prepared using kramdown.¶