Internet-Draft | DetNet Model | April 2023 |
Geng, et al. | Expires 9 October 2023 | [Page] |
This document defines a YANG data model for Deterministic Networking (DetNet) topology discovery and capability configuration.¶
The YANG module defined in this document conforms to the Network Management Datastore Architecture (NMDA).¶
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 October 2023.¶
Copyright (c) 2023 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.¶
Deterministic Networking (DetNet) [I-D.ietf-detnet-architecture] is defined to provide high-quality network service with extremely low packet loss rate, bounded low latency and jitter.¶
DetNet YANG [RFC7950] [RFC6991] models are used for DetNet service configuration, QoS configuration and topology discovery. DetNet service and QoS configuration models are defined in [I-D.ietf-detnet-yang]. This document defines DetNet topology model that can be used for DetNet topology/capability discovery and device configuration. DetNet topology model is an augmentation of the ietf-te-toplogy model [I-D.ietf-teas-yang-te-topo].¶
This document uses the terminologies defined in [I-D.ietf-detnet-architecture].¶
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.¶
A DetNet topology is composed of a set of DetNet nodes and DetNet links. DetNet nodes represent the network devices that can transport DetNet services, which are connected by DetNet links. A DetNet Link Terminate Point(LTP) is the connection point between a DetNet node and a DetNet link, which represents the port or interface of a DetNet node. The concept of DetNet node/link/LTP are similar as TE node/link/LTP which are defined in [I-D.ietf-teas-yang-te-topo].¶
Figure 1 shows a simple DetNet topology: A is a DetNet node, B is DetNet a LTP, and C is a DetNet link.¶
+---+ +---+ | A |o(B)--(C)--| | +---+ +---+ Figure 1. An example of DetNet Topology¶
DetNet topology model (ietf-detnet-topology) augments ietf-te-topology model [I-D.ietf-teas-yang-te-topo] to cover the following groups of attributes, which are necessary for supporting DetNet congestion protection and service protection:¶
The above attributes are categorized into three types: node attributes, link attributes and LTP attributes. The detailed descriptions and model definitions are specified in section 3.1, 3.2 and 3.3, respectively.¶
Section 4.3 of [I-D.finn-detnet-bounded-latency] gives a DetNet time model, which defines that the delay within a node includes five parts: processing delay, regulation delay, queuing delay, output delay and preemption delay. The processing delay, queuing delay and regulation delay are variable in general, but for DetNet, these delays should be bounded, which is the basic assumption of deterministic networking. These bounded delay parameters are necessary to perform DetNet path computation. Among this delay attributes, processing delay and regulation delay are node relevant, and the queuing delay is LTP relevant. In addition, in order to simplify the model and implementation, the processing delay and regulation delay are combined as processing delay, and the preemption delay is included in queuing delay. [Editor notes: more comments and inputs need here].¶
For the DetNet node attributes, the following variables are introduced:¶
The modeling structure is shown below:¶
augment /nw:networks/nw:network/nw:node/tet:te/tet:te-node-attributes: +--rw detnet-node-attributes +--rw minimum-packet-processing-delay? uint32 +--rw maximum-packet-processing-delay? uint32 +--rw maximum-packet-processing-delay-variation? uint32¶
DetNet link attributes include link delay and link bandwidth for DetNet. This document introduces the following link related attributes:¶
The DetNet link attributes are modeled within a link, and the YANG module structure is shown below:¶
augment /nw:networks/nw:network/nt:link/tet:te/tet:te-link-attributes: +--rw detnet-link-attributes +--rw maximum-reservable-bandwidth | +--rw te-bandwidth | +--rw (technology)? | +--:(generic) | +--rw generic? te-bandwidth +--rw reserved-detnet-bandwidth | +--rw te-bandwidth | +--rw (technology)? | +--:(generic) | +--rw generic? te-bandwidth +--rw available-detnet-bandwidth +--rw te-bandwidth +--rw (technology)? +--:(generic) +--rw generic? te-bandwidth¶
The concept of LTP is introduced in [I-D.ietf-teas-yang-te-topo], and this section introduces attributes for DetNet LTP.¶
PREOF (Packet Replication/Elimination/Ordering Function) is for DetNet service protection, which includes :¶
The above functions are modeled as a set of capabilities and relevant parameters, which are listed below:¶
In addition, DetNet LTP also includes queuing management algorithms and queuing delay attributes. In the context of DetNet, the delay of queuing is bounded, and the bound depends on what queuing management method is used and how many buffers are allocated. More information can be found in [I-D.finn-detnet-bounded-latency]. Queuing related attributes are listed below:¶
The DetNet LTP attributes are modeled within a LTP, the YANG module structure is shown below:¶
augment /nw:networks/nw:network/nw:node/nt:termination-point/tet:te: +--rw detnet-terminate-point-attributes +--rw elimination-capability? boolean +--rw replication-capability? boolean +--rw in-ordering-capability | +--rw in-ordering-capability? boolean | +--rw maximum-out-of-order-packets? uint32 +--rw queuing-algorithm-capabilities | +--rw credit-based-shaping? boolean | +--rw time-aware-shaping? boolean | +--rw cyclic-queuing-and-forwarding? boolean | +--rw asynchronous-traffic-shaping? boolean +--rw queues* [queue-identifier] +--rw queue-identifier uint32 +--rw queue-buffer-size? uint32 +--rw enabled-queuing-algorithm | +--rw credit-based-shaping? boolean | +--rw time-aware-shaping? boolean | +--rw cyclic-queuing-and-forwarding? boolean | +--rw asynchronous-traffic-shaping? boolean +--rw minimum-queuing-delay? uint32 +--rw maximum-queuing-delay? uint32 +--rw maximum-queuing-delay-variation? uint32¶
module: ietf-detnet-topology augment /nw:networks/nw:network/nw:network-types/tet:te-topology: +--rw detnet-topology! augment /nw:networks/nw:network/nw:node/tet:te/tet:te-node-attributes: +--rw detnet-node-attributes +--rw minimum-packet-processing-delay? uint32 +--rw maximum-packet-processing-delay? uint32 +--rw maximum-packet-processing-delay-variation? uint32 augment /nw:networks/nw:network/nt:link/tet:te/tet:te-link-attributes: +--rw detnet-link-attributes +--rw maximum-reservable-bandwidth | +--rw te-bandwidth | +--rw (technology)? | +--:(generic) | +--rw generic? te-bandwidth +--rw reserved-detnet-bandwidth | +--rw te-bandwidth | +--rw (technology)? | +--:(generic) | +--rw generic? te-bandwidth +--rw available-detnet-bandwidth +--rw te-bandwidth +--rw (technology)? +--:(generic) +--rw generic? te-bandwidth augment /nw:networks/nw:network/nw:node/nt:termination-point/tet:te: +--rw detnet-terminate-point-attributes +--rw elimination-capability? boolean +--rw replication-capability? boolean +--rw in-ordering-capability | +--rw in-ordering-capability? boolean | +--rw maximum-out-of-order-packets? uint32 +--rw queuing-algorithm-capabilities | +--rw credit-based-shaping? boolean | +--rw time-aware-shaping? boolean | +--rw cyclic-queuing-and-forwarding? boolean | +--rw asynchronous-traffic-shaping? boolean +--rw queues* [queue-identifier] +--rw queue-identifier uint32 +--rw queue-buffer-size? uint32 +--rw enabled-queuing-algorithm | +--rw credit-based-shaping? boolean | +--rw time-aware-shaping? boolean | +--rw cyclic-queuing-and-forwarding? boolean | +--rw asynchronous-traffic-shaping? boolean +--rw minimum-queuing-delay? uint32 +--rw maximum-queuing-delay? uint32 +--rw maximum-queuing-delay-variation? uint32¶
<CODE BEGINS> file "[email protected]" module ietf-detnet-topology { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-detnet-topology"; prefix "detnet-topology"; import ietf-te-types { prefix "te-types"; } import ietf-te-topology { prefix "tet"; } import ietf-network { prefix "nw"; } import ietf-network-topology { prefix "nt"; } organization "IETF Deterministic Networking(DetNet)Working Group"; contact "WG Web: <http://tools.ietf.org/wg/detnet/> WG List: <mailto:[email protected]> WG Chair: Lou Berger <mailto:[email protected]> Janos Farkas <[email protected]> Editor: Xuesong Geng <mailto:[email protected]> Editor: Mach Chen <mailto:[email protected]> Editor: Zhenqiang Li <[email protected]> Editor: Reshad Rahman <[email protected]>"; description "This YANG module augments the 'ietf-te-topology' module with DetNet related capabilities and parameters."; revision "2018-09-10" { description "Initial revision"; reference "RFC XXXX: draft-geng-detnet-config-yang-05"; } grouping detnet-queuing-algorithms { description "Relationship with IEEE 802.1 TSN YANG models is TBD."; } grouping detnet-node-attributes{ description "DetNet node related attributes."; leaf minimum-packet-processing-delay{ type uint32; description "Minimum packet processing delay in a node. The unit of the delay is microsecond(us)"; } leaf maximum-packet-processing-delay{ type uint32; description "Maximum packet processing delay in a node. The unit of the delay is microsecond(us)"; } leaf maximum-packet-processing-delay-variation{ type uint32; description "Maximum packet processing delay variation in a node. The unit of the delay variation is microsecond(us)"; } } grouping detnet-link-attributes{ description "DetNet link related attributes."; container maximum-reservable-bandwidth{ uses te-types:te-bandwidth; description "This container specifies the maximum bandwidth that is reserved for DetNet on this link."; } container reserved-detnet-bandwidth{ uses te-types:te-bandwidth; description "This container specifies the bandwidth that has been reserved for DetNet on this link."; } container available-detnet-bandwidth{ uses te-types:te-bandwidth; description "This container specifies the bandwidth that is available for new DetNet flows on this link."; } } grouping detnet-terminate-point-attributes{ description "DetNet terminate point related attributes."; leaf elimination-capability{ type boolean; description "Indicates whether a node is able to do packet elimination."; reference "Section 3.2.2.3 of draft-ietf-detnet-architecture"; } leaf replication-capability{ type boolean; description "Indicates whether a node is able to do packet replication."; reference "Section 3.2.2.2 of draft-ietf-detnet-architecture"; } container in-ordering-capability { description "Indicates the parameters needed for packet in-ordering."; reference "Section 3.2.2.1 of draft-ietf-detnet-architecture"; leaf in-ordering-capability { type boolean; description "Indicates whether a node is able to do packet in-ordering."; } leaf maximum-out-of-order-packets { type uint32; description "The maximum number of out-of-order packets."; } } container queuing-algorithm-capabilities { description "All queuing algorithms that a LTP supports."; uses detnet-queuing-algorithms; } list queues { key "queue-identifier"; description "A list of DetNet queues."; leaf queue-identifier { type uint32; description "The identifier of the queue."; } leaf queue-buffer-size { type uint32; description "The size of the queue with unit of bytes."; } container enabled-queuing-algorithm { description "The queuing algorithms that are enabled on the queue."; uses detnet-queuing-algorithms; } leaf minimum-queuing-delay{ type uint32; description "The minimum queuing delay of the queue. The unit of the delay is microsecond(us)"; } leaf maximum-queuing-delay{ type uint32; description "The maximum queuing delay of the queue. The unit of the delay is microsecond(us)"; } leaf maximum-queuing-delay-variation{ type uint32; description "The maximum queuing delay variation of the queue. The unit of the delay variation is microsecond(us)"; } } } augment "/nw:networks/nw:network/nw:network-types/tet:te-topology"{ description "Introduce new network type for TE topology."; container detnet-topology { presence "Indicates DetNet topology."; description "Its presence identifies the DetNet topology type"; } } augment "/nw:networks/nw:network/nw:node/tet:te/" + "tet:te-node-attributes" { when "../../../nw:network-types/tet:te-topology/" + "detnet-topology:detnet-topology" { description "Augmentation parameters apply only for networks with DetNet topology type."; } description "Augmentation parameters apply for DetNet node attributes."; container detnet-node-attributes { description "Attributes for DetNet node."; uses detnet-node-attributes; } } augment "/nw:networks/nw:network/nt:link/tet:te/" + "tet:te-link-attributes" { when "../../../nw:network-types/tet:te-topology/" + "detnet-topology:detnet-topology" { description "Augmentation parameters apply only for networks with DetNet topology type."; } description "Augmentation parameters apply for DetNet link attributes."; container detnet-link-attributes { description "Attributes for DetNet link."; uses detnet-link-attributes; } } augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + "tet:te" { when "../../../nw:network-types/tet:te-topology/" + "detnet-topology:detnet-topology" { description "Augmentation parameters apply only for networks with DetNet topology type."; } description "Augmentation parameters apply for DetNet link termination point."; container detnet-terminate-point-attributes { description "Attributes for DetNet link terminate point."; uses detnet-terminate-point-attributes; } } } //topology module <CODE ENDS>¶
There are some open issues that are still under discussion:¶
These issues will be resolved in the following versions of the draft.¶
This document makes no request of IANA.¶
Note to RFC Editor: this section may be removed on publication as an RFC.¶
<TBD>¶