idnits 2.17.1
draft-ietf-detnet-yang-05.txt:
Checking boilerplate required by RFC 5378 and the IETF Trust (see
https://trustee.ietf.org/license-info):
----------------------------------------------------------------------------
No issues found here.
Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt:
----------------------------------------------------------------------------
No issues found here.
Checking nits according to https://www.ietf.org/id-info/checklist :
----------------------------------------------------------------------------
** There are 34 instances of too long lines in the document, the longest
one being 144 characters in excess of 72.
Miscellaneous warnings:
----------------------------------------------------------------------------
== The copyright year in the IETF Trust and authors Copyright Line does not
match the current year
== Line 243 has weird spacing: '...er-port inet:...'
== Line 244 has weird spacing: '...er-port inet:...'
== Line 251 has weird spacing: '...er-port inet:...'
== Line 252 has weird spacing: '...er-port inet:...'
== Line 350 has weird spacing: '...g-index uin...'
== (30 more instances...)
-- The document date (March 09, 2020) is 1480 days in the past. Is this
intentional?
Checking references for intended status: Proposed Standard
----------------------------------------------------------------------------
(See RFCs 3967 and 4897 for information about using normative references
to lower-maturity documents in RFCs)
== Unused Reference: 'I-D.finn-detnet-bounded-latency' is defined on line
1662, but no explicit reference was found in the text
== Unused Reference: 'I-D.ietf-detnet-ip' is defined on line 1672, but no
explicit reference was found in the text
== Unused Reference: 'I-D.ietf-detnet-mpls' is defined on line 1677, but no
explicit reference was found in the text
== Unused Reference: 'I-D.ietf-detnet-topology-yang' is defined on line
1683, but no explicit reference was found in the text
== Unused Reference: 'I-D.geng-detnet-info-distribution' is defined on line
1708, but no explicit reference was found in the text
== Unused Reference: 'I-D.ietf-detnet-use-cases' is defined on line 1714,
but no explicit reference was found in the text
== Unused Reference: 'I-D.ietf-teas-yang-te' is defined on line 1719, but
no explicit reference was found in the text
== Unused Reference: 'I-D.ietf-teas-yang-te-topo' is defined on line 1725,
but no explicit reference was found in the text
== Unused Reference: 'I-D.thubert-tsvwg-detnet-transport' is defined on
line 1731, but no explicit reference was found in the text
== Unused Reference: 'I-D.varga-detnet-service-model' is defined on line
1736, but no explicit reference was found in the text
== Unused Reference: 'IEEE802.1CB' is defined on line 1741, but no explicit
reference was found in the text
== Unused Reference: 'IEEE802.1Q-2014' is defined on line 1747, but no
explicit reference was found in the text
== Unused Reference: 'IEEE802.1Qbu' is defined on line 1752, but no
explicit reference was found in the text
== Unused Reference: 'IEEE802.1Qbv' is defined on line 1757, but no
explicit reference was found in the text
== Unused Reference: 'IEEE802.1Qcc' is defined on line 1762, but no
explicit reference was found in the text
== Unused Reference: 'IEEE802.1Qch' is defined on line 1768, but no
explicit reference was found in the text
== Unused Reference: 'IEEE802.1Qci' is defined on line 1774, but no
explicit reference was found in the text
== Unused Reference: 'RFC3209' is defined on line 1780, but no explicit
reference was found in the text
== Unused Reference: 'RFC4875' is defined on line 1785, but no explicit
reference was found in the text
== Unused Reference: 'RFC8342' is defined on line 1792, but no explicit
reference was found in the text
** Downref: Normative reference to an Informational draft:
draft-finn-detnet-bounded-latency (ref. 'I-D.finn-detnet-bounded-latency')
== Outdated reference: A later version (-14) exists of
draft-ietf-detnet-flow-information-model-07
** Downref: Normative reference to an Informational draft:
draft-ietf-detnet-flow-information-model (ref.
'I-D.ietf-detnet-flow-information-model')
== Outdated reference: A later version (-07) exists of
draft-ietf-detnet-ip-05
== Outdated reference: A later version (-13) exists of
draft-ietf-detnet-mpls-05
== Outdated reference: A later version (-01) exists of
draft-ietf-detnet-topology-yang-00
== Outdated reference: A later version (-36) exists of
draft-ietf-teas-yang-te-22
Summary: 3 errors (**), 0 flaws (~~), 32 warnings (==), 1 comment (--).
Run idnits with the --verbose option for more detailed information about
the items above.
--------------------------------------------------------------------------------
2 Network Working Group X. Geng
3 Internet-Draft M. Chen
4 Intended status: Standards Track Huawei Technologies
5 Expires: September 10, 2020 Y. Ryoo
6 ETRI
7 Z. Li
8 China Mobile
9 R. Rahman
10 Cisco Systems
11 D. Fedyk
12 LabN Consulting, L.L.C.
13 March 09, 2020
15 Deterministic Networking (DetNet) Configuration YANG Model
16 draft-ietf-detnet-yang-05
18 Abstract
20 This document contains the specification for Deterministic Networking
21 flow configuration YANG Model. The model allows for provisioning of
22 end-to-end DetNet service along the path without dependency on any
23 signaling protocol.
25 The YANG module defined in this document conforms to the Network
26 Management Datastore Architecture (NMDA).
28 Requirements Language
30 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
31 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
32 document are to be interpreted as described in RFC 2119 [RFC2119].
34 Status of This Memo
36 This Internet-Draft is submitted in full conformance with the
37 provisions of BCP 78 and BCP 79.
39 Internet-Drafts are working documents of the Internet Engineering
40 Task Force (IETF). Note that other groups may also distribute
41 working documents as Internet-Drafts. The list of current Internet-
42 Drafts is at https://datatracker.ietf.org/drafts/current/.
44 Internet-Drafts are draft documents valid for a maximum of six months
45 and may be updated, replaced, or obsoleted by other documents at any
46 time. It is inappropriate to use Internet-Drafts as reference
47 material or to cite them other than as "work in progress."
48 This Internet-Draft will expire on September 10, 2020.
50 Copyright Notice
52 Copyright (c) 2020 IETF Trust and the persons identified as the
53 document authors. All rights reserved.
55 This document is subject to BCP 78 and the IETF Trust's Legal
56 Provisions Relating to IETF Documents
57 (https://trustee.ietf.org/license-info) in effect on the date of
58 publication of this document. Please review these documents
59 carefully, as they describe your rights and restrictions with respect
60 to this document. Code Components extracted from this document must
61 include Simplified BSD License text as described in Section 4.e of
62 the Trust Legal Provisions and are provided without warranty as
63 described in the Simplified BSD License.
65 Table of Contents
67 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
68 2. Terminologies . . . . . . . . . . . . . . . . . . . . . . . . 3
69 3. DetNet Configuration Module . . . . . . . . . . . . . . . . . 3
70 3.1. DetNet Appliction Flow Configuration Attributes . . . . . 3
71 3.2. DetNet Service Sub-layer Configuration Attributes . . . . 3
72 3.3. DetNet Forwarding Sub-layer Configuration Attributes . . 3
73 4. DetNet YANG Structure Considerations . . . . . . . . . . . . 4
74 5. DetNet Configuration YANG Structures . . . . . . . . . . . . 5
75 6. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 18
76 7. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 35
77 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35
78 9. Security Considerations . . . . . . . . . . . . . . . . . . . 35
79 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35
80 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 35
81 11.1. Normative References . . . . . . . . . . . . . . . . . . 35
82 11.2. Informative References . . . . . . . . . . . . . . . . . 36
83 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38
85 1. Introduction
87 DetNet (Deterministic Networking) provides a capability to carry
88 specified unicast or multicast data flows for real-time applications
89 with extremely low packet loss rates and assured maximum end-to-end
90 delivery latency. A description of the general background and
91 concepts of DetNet can be found in [RFC8655].
93 This document defines a YANG model for DetNet based on YANG data
94 types and modeling language defined in [RFC6991] and [RFC7950].
95 DetNet service, which is designed for describing the characteristics
96 of services being provided for application flows over a network, and
97 DetNet configuration, which is designed for DetNet flow path
98 establishment, flow status reporting, and DetNet functions
99 configuration in order to achieve end-to-end bounded latency and zero
100 congestion loss, are both included in this document.
102 2. Terminologies
104 This documents uses the terminologies defined in [RFC8655].
106 3. DetNet Configuration Module
108 DetNet configuration module includes DetNet App-flow configuration,
109 DetNet Service Sub-layer configuration, and DetNet Forwarding Sub-
110 layer configuration. The corresponding attributes used in different
111 sub-layers are defined in Section 3.1, 3.2, 3.3 respectively.
113 3.1. DetNet Appliction Flow Configuration Attributes
115 DetNet application flow is responsible for mapping between
116 application flows and DetNet flows at the edge node(egress/ingress
117 node). Where the application flows can be either layer 2 or layer 3
118 flows. To map a flow at the User Network Interface (UNI), the
119 corresponding attributes are defined in
120 [I-D.ietf-detnet-flow-information-model].
122 3.2. DetNet Service Sub-layer Configuration Attributes
124 DetNet service functions, e.g., DetNet tunnel initialization/
125 termination and service protection, are provided in DetNet service
126 sub-layer. To support these functions, the following service
127 attributes need to be configured:
129 o DetNet flow identification
131 o Service function indication, indicates which service function will
132 be invoked at a DetNet edge, relay node or end station. (DetNet
133 tunnel initialization or termination are default functions in
134 DetNet service layer, so there is no need for explicit
135 indication). The corresponding arguments for service functions
136 also needs to be defined.
138 3.3. DetNet Forwarding Sub-layer Configuration Attributes
140 As defined in [RFC8655], DetNet forwarding sub-layer optionally
141 provides congestion protection for DetNet flows over paths provided
142 by the underlying network. Explicit route is another mechanism that
143 is used by DetNet to avoid temporary interruptions caused by the
144 convergence of routing or bridging protocols, and it is also
145 implemented at the DetNet forwarding sub-layer.
147 To support congestion protection and explicit route, the following
148 transport layer related attributes are necessary:
150 o Traffic Specification, refers to Section 7.2 of
151 [I-D.ietf-detnet-flow-information-model]. It may used for
152 resource reservation, flow shaping, filtering and policing.
154 o Explicit path, existing explicit route mechanisms can be reused.
155 For example, if Segment Routing (SR) tunnel is used as the
156 transport tunnel, the configuration is mainly at the ingress node
157 of the transport layer; if the static MPLS tunnel is used as the
158 transport tunnel, the configurations need to be at every transit
159 node along the path; for pure IP based transport tunnel, it's
160 similar to the static MPLS case.
162 4. DetNet YANG Structure Considerations
164 The picture shows that the general structure of the DetNet YANG
165 Model:
167 +-----------+
168 |ietf-detnet|
169 +-----+-----+
170 |
171 +-------------+---------------+
172 | | |
173 +-----+-----+ +-----+-----+ +-------+------+
174 | App Flows | |service s-l| |forwarding s-l|
175 +-----------+ +-----------+ +--------------+
177 There are three instances in DetNet YANG Model: App-flow instance,
178 service sub-layer instance and forwarding sub-layer instance,
179 respectively corresponding to four parts of DetNet functions defined
180 in section 3. In each instance, there are four elements: name, in-
181 segments, out-segments and operations, which means:
183 o Name: indicates the key value of the instance identification.
185 o In-segments: indicates the key value of identification, e.g.,
186 Layer 2 App flow identification, Layer 3 App flow identification
187 and DetNet flow identification.
189 o Out-segments: indicates the information of DetNet processing(e.g.,
190 DetNet forwarding, DetNet header Encapsulation) and the mapping
191 relationship to the lower sub-layer/sub-network.
193 o Operations: indicates DetNet functions, e.g., DetNet forwarding
194 functions, DetNet Service functions, DetNet Resource Reservation.
196 These elements are different when the technologies used for the
197 specific instance is different. So this structure is abstract, which
198 allows for different technology specifics as defined in different
199 data plane drafts.
201 5. DetNet Configuration YANG Structures
203 module: ietf-detnet-config
204 +--rw app-flows
205 | +--rw app-flow* [name]
206 | +--rw name string
207 | +--rw end-points
208 | | +--rw source-endpoint? inet:ip-address
209 | | +--rw destination-endpoints* inet:ip-address
210 | +--rw app-flow-bidir-congruent? boolean
211 | +--rw traffic-requirements
212 | | +--rw min-bandwidth? uint64
213 | | +--rw max-latency? uint32
214 | | +--rw max-latency-variation? uint32
215 | | +--rw max-loss? uint8
216 | | +--rw max-consecutive-loss-tolerance? uint32
217 | | +--rw max-misordering? uint32
218 | +--rw traffic-specification
219 | | +--rw interval? uint32
220 | | +--rw max-packets-per-interval? uint32
221 | | +--rw max-payload-size? uint32
222 | | +--rw average-packets-per-interval? uint32
223 | | +--rw average-payload-size? uint32
224 | +--rw in-segment
225 | | +--rw app-traffic* [interface]
226 | | +--rw interface if:interface-ref
227 | | +--rw (data-flow-type)?
228 | | +--:(tsn-app-flow)
229 | | | +--rw source-mac-address? yang:mac-address
230 | | | +--rw destination-mac-address? yang:mac-address
231 | | | +--rw ethertype? eth:ethertype
232 | | | +--rw vlan-id? uint16
233 | | | +--rw pcp? uint8
234 | | +--:(ip-app-flow)
235 | | | +--rw src-ip-prefix? inet:ip-prefix
236 | | | +--rw dest-ip-prefix? inet:ip-prefix
237 | | | +--rw next-header? uint8
238 | | | +--rw traffic-class? uint8
239 | | | +--rw flow-label? inet:ipv6-flow-label
240 | | | +--rw source-port
241 | | | | +--rw (port-range-or-operator)?
242 | | | | +--:(range)
243 | | | | | +--rw lower-port inet:port-number
244 | | | | | +--rw upper-port inet:port-number
245 | | | | +--:(operator)
246 | | | | +--rw operator? operator
247 | | | | +--rw port inet:port-number
248 | | | +--rw destination-port
249 | | | | +--rw (port-range-or-operator)?
250 | | | | +--:(range)
251 | | | | | +--rw lower-port inet:port-number
252 | | | | | +--rw upper-port inet:port-number
253 | | | | +--:(operator)
254 | | | | +--rw operator? operator
255 | | | | +--rw port inet:port-number
256 | | | +--rw ipsec-spi? ipsec-spi
257 | | +--:(mpls-app-flow)
258 | | +--rw (label-space)?
259 | | +--:(non-platrom-label-space)
260 | | | +--rw mpls-label-stack
261 | | | +--rw entry* [id]
262 | | | +--rw id uint8
263 | | | +--rw label? rt-types:mpls-label
264 | | | +--rw ttl? uint8
265 | | | +--rw traffic-class? uint8
266 | | +--:(platform-label-space)
267 | | +--rw label? rt-types:mpls-label
268 | +--rw out-segment
269 | +--rw (next-hop-options)
270 | +--:(simple-next-hop)
271 | | +--rw (header-type)?
272 | | | +--:(detnet-mpls-header)
273 | | | | +--rw mpls-label-stack
274 | | | | +--rw entry* [id]
275 | | | | +--rw id uint8
276 | | | | +--rw label? rt-types:mpls-label
277 | | | | +--rw ttl? uint8
278 | | | | +--rw traffic-class? uint8
279 | | | +--:(detnet-ip-header)
280 | | | +--rw src-ip-address? inet:ip-address
281 | | | +--rw dest-ip-address? inet:ip-address
282 | | | +--rw next-header? uint8
283 | | | +--rw traffic-class? uint8
284 | | | +--rw flow-label? inet:ipv6-flow-label
285 | | | +--rw source-port? inet:port-number
286 | | | +--rw destination-port? inet:port-number
287 | | +--rw lower-layer* [index]
288 | | +--rw index uint8
289 | | +--rw (lower-layer-type)?
290 | | +--:(service-sub-layer)
291 | | | +--rw service-sub-layer? service-sub-layer-ref
292 | | +--:(forwarding-sub-layer)
293 | | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref
294 | | +--:(sub-network)
295 | | | +--rw sub-network? sub-network-ref
296 | | +--:(interface)
297 | | +--rw outgoing-interface? if:interface-ref
298 | +--:(next-hop-list)
299 | +--rw next-hop-list
300 | +--rw next-hop* [hop-index]
301 | +--rw hop-index uint8
302 | +--rw (header-type)?
303 | | +--:(detnet-mpls-header)
304 | | | +--rw mpls-label-stack
305 | | | +--rw entry* [id]
306 | | | +--rw id uint8
307 | | | +--rw label? rt-types:mpls-label
308 | | | +--rw ttl? uint8
309 | | | +--rw traffic-class? uint8
310 | | +--:(detnet-ip-header)
311 | | +--rw src-ip-address? inet:ip-address
312 | | +--rw dest-ip-address? inet:ip-address
313 | | +--rw next-header? uint8
314 | | +--rw traffic-class? uint8
315 | | +--rw flow-label? inet:ipv6-flow-label
316 | | +--rw source-port? inet:port-number
317 | | +--rw destination-port? inet:port-number
318 | +--rw lower-layer* [index]
319 | +--rw index uint8
320 | +--rw (lower-layer-type)?
321 | +--:(service-sub-layer)
322 | | +--rw service-sub-layer? service-sub-layer-ref
323 | +--:(forwarding-sub-layer)
324 | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref
325 | +--:(sub-network)
326 | | +--rw sub-network? sub-network-ref
327 | +--:(interface)
328 | +--rw outgoing-interface? if:interface-ref
329 +--rw service-sub-layer
330 | +--rw service-sub-layer-list* [name]
331 | +--rw name string
332 | +--ro service-id? uint16
333 | +--rw service-rank? uint8
334 | +--rw traffic-requirements
335 | | +--rw min-bandwidth? uint64
336 | | +--rw max-latency? uint32
337 | | +--rw max-latency-variation? uint32
338 | | +--rw max-loss? uint8
339 | | +--rw max-consecutive-loss-tolerance? uint32
340 | | +--rw max-misordering? uint32
341 | +--rw service-portection
342 | | +--rw service-protection-type? service-protection-type
343 | | +--rw sequence-number-length? sequence-number-field
344 | | +--rw sequence-number-window-size? uint32
345 | | +--rw sequence-number-generation? sequence-number-generation-type
346 | +--rw service-operation-type? service-operation-type
347 | +--rw in-segment
348 | | +--rw app-flow* app-flow-ref
349 | | +--rw incoming-detnet-flow* [incoming-index]
350 | | +--rw incoming-index uint8
351 | | +--rw (detnet-flow-type)?
352 | | +--:(ip-detnet-flow)
353 | | | +--rw src-ip-prefix? inet:ip-prefix
354 | | | +--rw dest-ip-prefix? inet:ip-prefix
355 | | | +--rw next-header? uint8
356 | | | +--rw traffic-class? uint8
357 | | | +--rw flow-label? inet:ipv6-flow-label
358 | | | +--rw source-port
359 | | | | +--rw (port-range-or-operator)?
360 | | | | +--:(range)
361 | | | | | +--rw lower-port inet:port-number
362 | | | | | +--rw upper-port inet:port-number
363 | | | | +--:(operator)
364 | | | | +--rw operator? operator
365 | | | | +--rw port inet:port-number
366 | | | +--rw destination-port
367 | | | | +--rw (port-range-or-operator)?
368 | | | | +--:(range)
369 | | | | | +--rw lower-port inet:port-number
370 | | | | | +--rw upper-port inet:port-number
371 | | | | +--:(operator)
372 | | | | +--rw operator? operator
373 | | | | +--rw port inet:port-number
374 | | | +--rw ipsec-spi? ipsec-spi
375 | | +--:(mpls-detnet-flow)
376 | | +--rw (label-space)?
377 | | +--:(non-platrom-label-space)
378 | | | +--rw mpls-label-stack
379 | | | +--rw entry* [id]
380 | | | +--rw id uint8
381 | | | +--rw label? rt-types:mpls-label
382 | | | +--rw ttl? uint8
383 | | | +--rw traffic-class? uint8
384 | | +--:(platform-label-space)
385 | | +--rw label? rt-types:mpls-label
386 | +--rw out-sergment
387 | +--rw (next-hop-options)
388 | | +--:(simple-next-hop)
389 | | | +--rw (header-type)?
390 | | | | +--:(detnet-mpls-header)
391 | | | | | +--rw mpls-label-stack
392 | | | | | +--rw entry* [id]
393 | | | | | +--rw id uint8
394 | | | | | +--rw label? rt-types:mpls-label
395 | | | | | +--rw ttl? uint8
396 | | | | | +--rw traffic-class? uint8
397 | | | | +--:(detnet-ip-header)
398 | | | | +--rw src-ip-address? inet:ip-address
399 | | | | +--rw dest-ip-address? inet:ip-address
400 | | | | +--rw next-header? uint8
401 | | | | +--rw traffic-class? uint8
402 | | | | +--rw flow-label? inet:ipv6-flow-label
403 | | | | +--rw source-port? inet:port-number
404 | | | | +--rw destination-port? inet:port-number
405 | | | +--rw lower-layer* [index]
406 | | | +--rw index uint8
407 | | | +--rw (lower-layer-type)?
408 | | | +--:(service-sub-layer)
409 | | | | +--rw service-sub-layer? service-sub-layer-ref
410 | | | +--:(forwarding-sub-layer)
411 | | | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref
412 | | | +--:(sub-network)
413 | | | | +--rw sub-network? sub-network-ref
414 | | | +--:(interface)
415 | | | +--rw outgoing-interface? if:interface-ref
416 | | +--:(next-hop-list)
417 | | +--rw next-hop-list
418 | | +--rw next-hop* [hop-index]
419 | | +--rw hop-index uint8
420 | | +--rw (header-type)?
421 | | | +--:(detnet-mpls-header)
422 | | | | +--rw mpls-label-stack
423 | | | | +--rw entry* [id]
424 | | | | +--rw id uint8
425 | | | | +--rw label? rt-types:mpls-label
426 | | | | +--rw ttl? uint8
427 | | | | +--rw traffic-class? uint8
428 | | | +--:(detnet-ip-header)
429 | | | +--rw src-ip-address? inet:ip-address
430 | | | +--rw dest-ip-address? inet:ip-address
431 | | | +--rw next-header? uint8
432 | | | +--rw traffic-class? uint8
433 | | | +--rw flow-label? inet:ipv6-flow-label
434 | | | +--rw source-port? inet:port-number
435 | | | +--rw destination-port? inet:port-number
436 | | +--rw lower-layer* [index]
437 | | +--rw index uint8
438 | | +--rw (lower-layer-type)?
439 | | +--:(service-sub-layer)
440 | | | +--rw service-sub-layer? service-sub-layer-ref
441 | | +--:(forwarding-sub-layer)
442 | | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref
443 | | +--:(sub-network)
444 | | | +--rw sub-network? sub-network-ref
445 | | +--:(interface)
446 | | +--rw outgoing-interface? if:interface-ref
447 | +--rw app-flow* app-flow-ref
448 +--rw forwarding-sub-layer
449 | +--rw forwarding-sub-layer-list* [name]
450 | +--rw name string
451 | +--rw resource-allocation
452 | | +--rw traffic-specification
453 | | +--rw interval? uint32
454 | | +--rw max-packets-per-interval? uint32
455 | | +--rw max-payload-size? uint32
456 | | +--rw average-packets-per-interval? uint32
457 | | +--rw average-payload-size? uint32
458 | +--rw forwarding-operation-type? mpls-operations-type
459 | +--rw in-segment
460 | | +--rw service-sub-layer? service-sub-layer-ref
461 | | +--rw forwarding-traffic* [interface]
462 | | +--rw interface if:interface-ref
463 | | +--rw (detnet-flow-type)?
464 | | +--:(ip-detnet-flow)
465 | | | +--rw src-ip-prefix? inet:ip-prefix
466 | | | +--rw dest-ip-prefix? inet:ip-prefix
467 | | | +--rw next-header? uint8
468 | | | +--rw traffic-class? uint8
469 | | | +--rw flow-label? inet:ipv6-flow-label
470 | | | +--rw source-port
471 | | | | +--rw (port-range-or-operator)?
472 | | | | +--:(range)
473 | | | | | +--rw lower-port inet:port-number
474 | | | | | +--rw upper-port inet:port-number
475 | | | | +--:(operator)
476 | | | | +--rw operator? operator
477 | | | | +--rw port inet:port-number
478 | | | +--rw destination-port
479 | | | | +--rw (port-range-or-operator)?
480 | | | | +--:(range)
481 | | | | | +--rw lower-port inet:port-number
482 | | | | | +--rw upper-port inet:port-number
483 | | | | +--:(operator)
484 | | | | +--rw operator? operator
485 | | | | +--rw port inet:port-number
486 | | | +--rw ipsec-spi? ipsec-spi
487 | | +--:(mpls-detnet-flow)
488 | | +--rw (label-space)?
489 | | +--:(non-platrom-label-space)
490 | | | +--rw mpls-label-stack
491 | | | +--rw entry* [id]
492 | | | +--rw id uint8
493 | | | +--rw label? rt-types:mpls-label
494 | | | +--rw ttl? uint8
495 | | | +--rw traffic-class? uint8
496 | | +--:(platform-label-space)
497 | | +--rw label? rt-types:mpls-label
498 | +--rw out-segment
499 | +--rw (next-hop-options)
500 | | +--:(simple-next-hop)
501 | | | +--rw (header-type)?
502 | | | | +--:(detnet-mpls-header)
503 | | | | | +--rw mpls-label-stack
504 | | | | | +--rw entry* [id]
505 | | | | | +--rw id uint8
506 | | | | | +--rw label? rt-types:mpls-label
507 | | | | | +--rw ttl? uint8
508 | | | | | +--rw traffic-class? uint8
509 | | | | +--:(detnet-ip-header)
510 | | | | +--rw src-ip-address? inet:ip-address
511 | | | | +--rw dest-ip-address? inet:ip-address
512 | | | | +--rw next-header? uint8
513 | | | | +--rw traffic-class? uint8
514 | | | | +--rw flow-label? inet:ipv6-flow-label
515 | | | | +--rw source-port? inet:port-number
516 | | | | +--rw destination-port? inet:port-number
517 | | | +--rw lower-layer* [index]
518 | | | +--rw index uint8
519 | | | +--rw (lower-layer-type)?
520 | | | +--:(service-sub-layer)
521 | | | | +--rw service-sub-layer? service-sub-layer-ref
522 | | | +--:(forwarding-sub-layer)
523 | | | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref
524 | | | +--:(sub-network)
525 | | | | +--rw sub-network? sub-network-ref
526 | | | +--:(interface)
527 | | | +--rw outgoing-interface? if:interface-ref
528 | | +--:(next-hop-list)
529 | | +--rw next-hop-list
530 | | +--rw next-hop* [hop-index]
531 | | +--rw hop-index uint8
532 | | +--rw (header-type)?
533 | | | +--:(detnet-mpls-header)
534 | | | | +--rw mpls-label-stack
535 | | | | +--rw entry* [id]
536 | | | | +--rw id uint8
537 | | | | +--rw label? rt-types:mpls-label
538 | | | | +--rw ttl? uint8
539 | | | | +--rw traffic-class? uint8
540 | | | +--:(detnet-ip-header)
541 | | | +--rw src-ip-address? inet:ip-address
542 | | | +--rw dest-ip-address? inet:ip-address
543 | | | +--rw next-header? uint8
544 | | | +--rw traffic-class? uint8
545 | | | +--rw flow-label? inet:ipv6-flow-label
546 | | | +--rw source-port? inet:port-number
547 | | | +--rw destination-port? inet:port-number
548 | | +--rw lower-layer* [index]
549 | | +--rw index uint8
550 | | +--rw (lower-layer-type)?
551 | | +--:(service-sub-layer)
552 | | | +--rw service-sub-layer? service-sub-layer-ref
553 | | +--:(forwarding-sub-layer)
554 | | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref
555 | | +--:(sub-network)
556 | | | +--rw sub-network? sub-network-ref
557 | | +--:(interface)
558 | | +--rw outgoing-interface? if:interface-ref
559 | +--rw service-sub-layer? service-sub-layer-ref
560 +--rw sub-network
561 +--rw sub-network-list* [name]
562 +--rw name string
564 grouping ip-header:
565 +--rw src-ip-address? inet:ip-address
566 +--rw dest-ip-address? inet:ip-address
567 +--rw next-header? uint8
568 +--rw traffic-class? uint8
569 +--rw flow-label? inet:ipv6-flow-label
570 +--rw source-port? inet:port-number
571 +--rw destination-port? inet:port-number
572 grouping l2-header:
573 +--rw source-mac-address? yang:mac-address
574 +--rw destination-mac-address? yang:mac-address
575 +--rw ethertype? eth:ethertype
576 +--rw vlan-id? uint16
577 +--rw pcp? uint8
578 grouping destination-ip-port-identification:
579 +--rw destination-port
580 +--rw (port-range-or-operator)?
581 +--:(range)
582 | +--rw lower-port inet:port-number
583 | +--rw upper-port inet:port-number
584 +--:(operator)
585 +--rw operator? operator
586 +--rw port inet:port-number
587 grouping source-ip-port-identification:
588 +--rw source-port
589 +--rw (port-range-or-operator)?
590 +--:(range)
591 | +--rw lower-port inet:port-number
592 | +--rw upper-port inet:port-number
593 +--:(operator)
594 +--rw operator? operator
595 +--rw port inet:port-number
596 grouping ip-flow-identification:
597 +--rw src-ip-prefix? inet:ip-prefix
598 +--rw dest-ip-prefix? inet:ip-prefix
599 +--rw next-header? uint8
600 +--rw traffic-class? uint8
601 +--rw flow-label? inet:ipv6-flow-label
602 +--rw source-port
603 | +--rw (port-range-or-operator)?
604 | +--:(range)
605 | | +--rw lower-port inet:port-number
606 | | +--rw upper-port inet:port-number
607 | +--:(operator)
608 | +--rw operator? operator
609 | +--rw port inet:port-number
610 +--rw destination-port
611 | +--rw (port-range-or-operator)?
612 | +--:(range)
613 | | +--rw lower-port inet:port-number
614 | | +--rw upper-port inet:port-number
615 | +--:(operator)
616 | +--rw operator? operator
617 | +--rw port inet:port-number
618 +--rw ipsec-spi? ipsec-spi
619 grouping mpls-flow-identification:
620 +--rw (label-space)?
621 +--:(non-platrom-label-space)
622 | +--rw mpls-label-stack
623 | +--rw entry* [id]
624 | +--rw id uint8
625 | +--rw label? rt-types:mpls-label
626 | +--rw ttl? uint8
627 | +--rw traffic-class? uint8
628 +--:(platform-label-space)
629 +--rw label? rt-types:mpls-label
630 grouping traffic-specification:
631 +--rw traffic-specification
632 +--rw interval? uint32
633 +--rw max-packets-per-interval? uint32
634 +--rw max-payload-size? uint32
635 +--rw average-packets-per-interval? uint32
636 +--rw average-payload-size? uint32
637 grouping traffic-requirements:
638 +--rw traffic-requirements
639 +--rw min-bandwidth? uint64
640 +--rw max-latency? uint32
641 +--rw max-latency-variation? uint32
642 +--rw max-loss? uint8
643 +--rw max-consecutive-loss-tolerance? uint32
644 +--rw max-misordering? uint32
645 grouping data-flow-spec:
646 +--rw (data-flow-type)?
647 +--:(tsn-app-flow)
648 | +--rw source-mac-address? yang:mac-address
649 | +--rw destination-mac-address? yang:mac-address
650 | +--rw ethertype? eth:ethertype
651 | +--rw vlan-id? uint16
652 | +--rw pcp? uint8
653 +--:(ip-app-flow)
654 | +--rw src-ip-prefix? inet:ip-prefix
655 | +--rw dest-ip-prefix? inet:ip-prefix
656 | +--rw next-header? uint8
657 | +--rw traffic-class? uint8
658 | +--rw flow-label? inet:ipv6-flow-label
659 | +--rw source-port
660 | | +--rw (port-range-or-operator)?
661 | | +--:(range)
662 | | | +--rw lower-port inet:port-number
663 | | | +--rw upper-port inet:port-number
664 | | +--:(operator)
665 | | +--rw operator? operator
666 | | +--rw port inet:port-number
667 | +--rw destination-port
668 | | +--rw (port-range-or-operator)?
669 | | +--:(range)
670 | | | +--rw lower-port inet:port-number
671 | | | +--rw upper-port inet:port-number
672 | | +--:(operator)
673 | | +--rw operator? operator
674 | | +--rw port inet:port-number
675 | +--rw ipsec-spi? ipsec-spi
676 +--:(mpls-app-flow)
677 +--rw (label-space)?
678 +--:(non-platrom-label-space)
679 | +--rw mpls-label-stack
680 | +--rw entry* [id]
681 | +--rw id uint8
682 | +--rw label? rt-types:mpls-label
683 | +--rw ttl? uint8
684 | +--rw traffic-class? uint8
685 +--:(platform-label-space)
686 +--rw label? rt-types:mpls-label
687 grouping detnet-flow-spec:
688 +--rw (detnet-flow-type)?
689 +--:(ip-detnet-flow)
690 | +--rw src-ip-prefix? inet:ip-prefix
691 | +--rw dest-ip-prefix? inet:ip-prefix
692 | +--rw next-header? uint8
693 | +--rw traffic-class? uint8
694 | +--rw flow-label? inet:ipv6-flow-label
695 | +--rw source-port
696 | | +--rw (port-range-or-operator)?
697 | | +--:(range)
698 | | | +--rw lower-port inet:port-number
699 | | | +--rw upper-port inet:port-number
700 | | +--:(operator)
701 | | +--rw operator? operator
702 | | +--rw port inet:port-number
703 | +--rw destination-port
704 | | +--rw (port-range-or-operator)?
705 | | +--:(range)
706 | | | +--rw lower-port inet:port-number
707 | | | +--rw upper-port inet:port-number
708 | | +--:(operator)
709 | | +--rw operator? operator
710 | | +--rw port inet:port-number
711 | +--rw ipsec-spi? ipsec-spi
712 +--:(mpls-detnet-flow)
713 +--rw (label-space)?
714 +--:(non-platrom-label-space)
715 | +--rw mpls-label-stack
716 | +--rw entry* [id]
717 | +--rw id uint8
718 | +--rw label? rt-types:mpls-label
719 | +--rw ttl? uint8
720 | +--rw traffic-class? uint8
721 +--:(platform-label-space)
722 +--rw label? rt-types:mpls-label
723 grouping app-flows-ref:
724 +--rw app-flow* app-flow-ref
725 grouping incoming-detnet-flows:
726 +--rw incoming-detnet-flow* [incoming-index]
727 +--rw incoming-index uint8
728 +--rw (detnet-flow-type)?
729 +--:(ip-detnet-flow)
730 | +--rw src-ip-prefix? inet:ip-prefix
731 | +--rw dest-ip-prefix? inet:ip-prefix
732 | +--rw next-header? uint8
733 | +--rw traffic-class? uint8
734 | +--rw flow-label? inet:ipv6-flow-label
735 | +--rw source-port
736 | | +--rw (port-range-or-operator)?
737 | | +--:(range)
738 | | | +--rw lower-port inet:port-number
739 | | | +--rw upper-port inet:port-number
740 | | +--:(operator)
741 | | +--rw operator? operator
742 | | +--rw port inet:port-number
743 | +--rw destination-port
744 | | +--rw (port-range-or-operator)?
745 | | +--:(range)
746 | | | +--rw lower-port inet:port-number
747 | | | +--rw upper-port inet:port-number
748 | | +--:(operator)
749 | | +--rw operator? operator
750 | | +--rw port inet:port-number
751 | +--rw ipsec-spi? ipsec-spi
752 +--:(mpls-detnet-flow)
753 +--rw (label-space)?
754 +--:(non-platrom-label-space)
755 | +--rw mpls-label-stack
756 | +--rw entry* [id]
757 | +--rw id uint8
758 | +--rw label? rt-types:mpls-label
759 | +--rw ttl? uint8
760 | +--rw traffic-class? uint8
761 +--:(platform-label-space)
762 +--rw label? rt-types:mpls-label
763 grouping detnet-header:
764 +--rw (header-type)?
765 +--:(detnet-mpls-header)
766 | +--rw mpls-label-stack
767 | +--rw entry* [id]
768 | +--rw id uint8
769 | +--rw label? rt-types:mpls-label
770 | +--rw ttl? uint8
771 | +--rw traffic-class? uint8
772 +--:(detnet-ip-header)
773 +--rw src-ip-address? inet:ip-address
774 +--rw dest-ip-address? inet:ip-address
775 +--rw next-header? uint8
776 +--rw traffic-class? uint8
777 +--rw flow-label? inet:ipv6-flow-label
778 +--rw source-port? inet:port-number
779 +--rw destination-port? inet:port-number
780 grouping lower-layer-ref:
781 +--rw (lower-layer-type)?
782 +--:(service-sub-layer)
783 | +--rw service-sub-layer? service-sub-layer-ref
784 +--:(forwarding-sub-layer)
785 | +--rw forwarding-sub-layer? forwarding-sub-layer-ref
786 +--:(sub-network)
787 | +--rw sub-network? sub-network-ref
788 +--:(interface)
789 +--rw outgoing-interface? if:interface-ref
790 grouping detnet-next-hop-content:
791 +--rw (next-hop-options)
792 +--:(simple-next-hop)
793 | +--rw (header-type)?
794 | | +--:(detnet-mpls-header)
795 | | | +--rw mpls-label-stack
796 | | | +--rw entry* [id]
797 | | | +--rw id uint8
798 | | | +--rw label? rt-types:mpls-label
799 | | | +--rw ttl? uint8
800 | | | +--rw traffic-class? uint8
801 | | +--:(detnet-ip-header)
802 | | +--rw src-ip-address? inet:ip-address
803 | | +--rw dest-ip-address? inet:ip-address
804 | | +--rw next-header? uint8
805 | | +--rw traffic-class? uint8
806 | | +--rw flow-label? inet:ipv6-flow-label
807 | | +--rw source-port? inet:port-number
808 | | +--rw destination-port? inet:port-number
809 | +--rw lower-layer* [index]
810 | +--rw index uint8
811 | +--rw (lower-layer-type)?
812 | +--:(service-sub-layer)
813 | | +--rw service-sub-layer? service-sub-layer-ref
814 | +--:(forwarding-sub-layer)
815 | | +--rw forwarding-sub-layer? forwarding-sub-layer-ref
816 | +--:(sub-network)
817 | | +--rw sub-network? sub-network-ref
818 | +--:(interface)
819 | +--rw outgoing-interface? if:interface-ref
820 +--:(next-hop-list)
821 +--rw next-hop-list
822 +--rw next-hop* [hop-index]
823 +--rw hop-index uint8
824 +--rw (header-type)?
825 | +--:(detnet-mpls-header)
826 | | +--rw mpls-label-stack
827 | | +--rw entry* [id]
828 | | +--rw id uint8
829 | | +--rw label? rt-types:mpls-label
830 | | +--rw ttl? uint8
831 | | +--rw traffic-class? uint8
832 | +--:(detnet-ip-header)
833 | +--rw src-ip-address? inet:ip-address
834 | +--rw dest-ip-address? inet:ip-address
835 | +--rw next-header? uint8
836 | +--rw traffic-class? uint8
837 | +--rw flow-label? inet:ipv6-flow-label
838 | +--rw source-port? inet:port-number
839 | +--rw destination-port? inet:port-number
840 +--rw lower-layer* [index]
841 +--rw index uint8
842 +--rw (lower-layer-type)?
843 +--:(service-sub-layer)
844 | +--rw service-sub-layer? service-sub-layer-ref
845 +--:(forwarding-sub-layer)
846 | +--rw forwarding-sub-layer? forwarding-sub-layer-ref
847 +--:(sub-network)
848 | +--rw sub-network? sub-network-ref
849 +--:(interface)
850 +--rw outgoing-interface? if:interface-ref
852 6. DetNet Configuration YANG Model
854 module ietf-detnet-config {
855 namespace "urn:ietf:params:xml:ns:yang:ietf-detnet-config";
856 prefix "ietf-detnet";
858 import ietf-yang-types {
859 prefix "yang";
860 }
862 import ietf-inet-types{
863 prefix "inet";
864 }
865 import ietf-ethertypes {
866 prefix "eth";
867 }
869 import ietf-routing-types {
870 prefix "rt-types";
871 }
873 import ietf-routing {
874 prefix "rt";
875 }
877 import ietf-packet-fields {
878 prefix "packet-fields";
879 }
880 import ietf-interfaces {
881 prefix "if";
882 }
884 organization "IETF DetNet Working Group";
886 contact
887 "WG Web:
888 WG List:
889 WG Chair: Lou Berger
890
892 Janos Farkas
893
895 Editor: Xuesong Geng
896
898 Editor: Mach Chen
899
901 Editor: Zhenqiang Li
902
904 Editor: Reshad Rahman
905
907 Editor: Yeoncheol Ryoo
908 ";
910 description
911 "This YANG module describes the parameters needed
912 for DetNet flow configuration and flow status
913 reporting";
915 revision 2020-03-04 {
916 description "initial revision";
917 reference "RFC XXXX: draft-ietf-detnet-yang-02";
918 }
920 typedef app-flow-ref {
921 type leafref {
922 path "/ietf-detnet:app-flows"
923 + "/ietf-detnet:app-flow"
924 + "/ietf-detnet:name";
925 }
926 }
927 typedef service-sub-layer-ref {
928 type leafref {
929 path "/ietf-detnet:service-sub-layer"
930 + "/ietf-detnet:service-sub-layer-list"
931 + "/ietf-detnet:name";
932 }
933 }
935 typedef forwarding-sub-layer-ref {
936 type leafref {
937 path "/ietf-detnet:forwarding-sub-layer"
938 + "/ietf-detnet:forwarding-sub-layer-list"
939 + "/ietf-detnet:name";
940 }
941 }
943 typedef sub-network-ref {
944 type leafref {
945 path "/ietf-detnet:sub-network"
946 + "/ietf-detnet:sub-network-list"
947 + "/ietf-detnet:name";
948 }
949 }
951 typedef ipsec-spi {
952 type uint32 {
953 range "1..max";
954 }
955 description
956 "SPI";
957 }
959 typedef service-operation-type {
960 type enumeration {
961 enum service-initiation {
962 description
963 "Operation for DetNet service sub-layer encapsulation";
964 }
965 enum service-termination {
966 description
967 "Operation for DetNet service sub-layer decapsulation";
968 }
969 enum service-relay {
970 description
971 "Operation for DetNet service sub-layer swap";
972 }
973 enum non-detnet {
974 description
975 "No operation for DetNet service sub-layer";
976 }
977 }
978 }
980 typedef mpls-operations-type {
981 type enumeration {
982 enum impose-and-forward {
983 description
984 "Operation impose outgoing label(s) and forward to
985 next-hop";
986 }
987 enum pop-and-forward {
988 description
989 "Operation pop incoming label and forward to next-hop";
990 }
991 enum pop-impose-and-forward {
992 description
993 "Operation pop incoming label, impose one or more
994 outgoing label(s) and forward to next-hop";
995 }
996 enum swap-and-forward {
997 description
998 "Operation swap incoming label, with outgoing label and
999 forward to next-hop";
1000 }
1001 enum pop-and-lookup {
1002 description
1003 "Operation pop incoming label and perform a lookup";
1004 }
1005 }
1006 description "MPLS operations types";
1007 }
1008 typedef service-protection-type {
1009 type enumeration {
1010 enum none {
1011 description
1012 "no service protection provide";
1013 }
1014 enum replication {
1015 description
1016 "A Packet Replication Function (PRF) replicates
1017 DetNet flow packets and forwards them to one or
1018 more next hops in the DetNet domain. The number
1019 of packet copies sent to each next hop is a
1020 DetNet flow specific parameter at the node doing
1021 the replication. PRF can be implemented by an
1022 edge node, a relay node, or an end system";
1023 }
1024 enum elimination {
1025 description
1026 "A Packet Elimination Function (PEF) eliminates
1027 duplicate copies of packets to prevent excess
1028 packets flooding the network or duplicate
1029 packets being sent out of the DetNet domain.
1030 PEF can be implemented by an edge node, a relay
1031 node, or an end system.";
1032 }
1033 enum ordering {
1034 description
1035 "A Packet Ordering Function (POF) re-orders
1036 packets within a DetNet flow that are received
1037 out of order. This function can be implemented
1038 by an edge node, a relay node, or an end system.";
1039 }
1040 enum elimination-ordering {
1041 description
1042 "A combination of PEF and POF that can be
1043 implemented by an edge node, a relay node, or
1044 an end system.";
1045 }
1046 enum elimination-replication {
1047 description
1048 "A combination of PEF and PRF that can be
1049 implemented by an edge node, a relay node, or
1050 an end system";
1051 }
1052 enum elimination-ordering-replicaiton {
1053 description
1054 "A combination of PEF, POF and PRF that can be
1055 implemented by an edge node, a relay node, or
1056 an end system";
1057 }
1058 }
1059 }
1061 typedef sequence-number-generation-type {
1062 type enumeration {
1063 enum copy-from-app-flow {
1064 description
1065 "Copy the app-flow sequence number to the DetNet-flow";
1066 }
1067 enum generate-by-detnet-flow {
1068 description
1069 "Generate the sequence number by DetNet flow";
1070 }
1071 }
1072 }
1074 typedef sequence-number-field {
1075 type enumeration {
1076 enum zero-sn {
1077 description "there is no DetNet sequence number field.";
1078 }
1079 enum short-sn {
1080 description "there is 16bit DetNet sequence number field";
1081 value 16;
1082 }
1083 enum long-sn {
1084 description "there is 28bit DetNet sequence number field";
1085 value 28;
1086 }
1087 }
1088 }
1090 grouping ip-header {
1091 description
1092 "The IPv4/IPv6 packet header information";
1093 leaf src-ip-address {
1094 type inet:ip-address;
1095 description
1096 "The source IP address of the header";
1097 }
1098 leaf dest-ip-address {
1099 type inet:ip-address;
1100 description
1101 "The destination IP address of the header";
1102 }
1103 leaf next-header {
1104 type uint8;
1105 description
1106 "The next header of the IPv6 header";
1107 }
1108 leaf traffic-class {
1109 type uint8;
1110 description
1111 "The traffic class value of the header";
1112 }
1113 leaf flow-label {
1114 type inet:ipv6-flow-label;
1115 description
1116 "The flow label value of the header";
1117 }
1118 leaf source-port {
1119 type inet:port-number;
1120 description
1121 "The source port number";
1122 }
1123 leaf destination-port {
1124 type inet:port-number;
1125 description
1126 "The destination port number";
1127 }
1128 }
1130 grouping l2-header {
1131 description
1132 "The Ethernet or TSN packet header information";
1133 leaf source-mac-address {
1134 type yang:mac-address;
1135 description
1136 "The source MAC address value of the ethernet header";
1137 }
1138 leaf destination-mac-address {
1139 type yang:mac-address;
1140 description
1141 "The destination MAC address value of the ethernet header";
1142 }
1143 leaf ethertype {
1144 type eth:ethertype;
1145 description
1146 "The ethernet packet type value of the ethernet header";
1147 }
1148 leaf vlan-id {
1149 type uint16;
1150 description
1151 "The Vlan value of the ethernet header";
1153 }
1154 leaf pcp {
1155 type uint8;
1156 description
1157 "The priority value of the ethernet header";
1158 }
1159 }
1160 grouping destination-ip-port-identification {
1161 description
1162 "The TCP/UDP port(source/destination) identification information";
1163 container destination-port {
1164 uses packet-fields:port-range-or-operator;
1165 }
1166 }
1168 grouping source-ip-port-identification {
1169 description
1170 "The TCP/UDP port(source/destination) identification information";
1171 container source-port {
1172 uses packet-fields:port-range-or-operator;
1173 }
1174 }
1176 grouping ip-flow-identification {
1177 description
1178 "The IPv4/IPv6 packet header identification information";
1179 leaf src-ip-prefix {
1180 type inet:ip-prefix;
1181 description
1182 "The source IP address of the header";
1183 }
1184 leaf dest-ip-prefix {
1185 type inet:ip-prefix;
1186 description
1187 "The destination IP address of the header";
1188 }
1189 leaf next-header {
1190 type uint8;
1191 description
1192 "The next header of the IPv6 header";
1193 }
1194 leaf traffic-class {
1195 type uint8;
1196 description
1197 "The traffic class value of the header";
1198 }
1199 leaf flow-label {
1200 type inet:ipv6-flow-label;
1201 description
1202 "The flow label value of the header";
1203 }
1204 uses source-ip-port-identification;
1205 uses destination-ip-port-identification;
1206 leaf ipsec-spi {
1207 type ipsec-spi;
1208 description "Security parameter index of SA entry";
1209 }
1210 }
1212 grouping mpls-flow-identification {
1213 description
1214 "The MPLS packet header identification information";
1215 choice label-space {
1216 description "";
1217 case non-platrom-label-space {
1218 uses rt-types:mpls-label-stack;
1219 }
1220 case platform-label-space {
1221 leaf label {
1222 type rt-types:mpls-label;
1223 }
1224 }
1225 }
1226 }
1228 grouping traffic-specification {
1229 container traffic-specification {
1230 description
1231 "traffic-specification specifies how the Source
1232 transmits packets for the flow. This is the
1233 promise/request of the Source to the network.
1234 The network uses this traffic specification
1235 to allocate resources and adjust queue
1236 parameters in network nodes.";
1237 reference
1238 "draft-ietf-detnet-flow-information-model";
1239 leaf interval {
1240 type uint32;
1241 description
1242 "The period of time in which the traffic
1243 specification cannot be exceeded";
1244 }
1245 leaf max-packets-per-interval{
1246 type uint32;
1247 description
1248 "The maximum number of packets that the
1249 source will transmit in one Interval.";
1250 }
1251 leaf max-payload-size{
1252 type uint32;
1253 description
1254 "The maximum payload size that the source
1255 will transmit.";
1256 }
1257 leaf average-packets-per-interval {
1258 type uint32;
1259 description
1260 "The average number of packets that the
1261 source will transmit in one Interval";
1262 }
1263 leaf average-payload-size {
1264 type uint32;
1265 description
1266 "The average payload size that the
1267 source will transmit.";
1268 }
1269 }
1270 }
1272 grouping traffic-requirements {
1273 container traffic-requirements {
1274 description
1275 "FlowRequirements: defines the attributes of the App-flow
1276 regarding bandwidth, latency, latency variation, loss, and
1277 misordering tolerance.";
1278 leaf min-bandwidth {
1279 type uint64;
1280 description
1281 "MinBandwidth is the minimum bandwidth that has to be
1282 guaranteed for the DetNet service. MinBandwidth is
1283 specified in octets per second.";
1284 }
1285 leaf max-latency {
1286 type uint32;
1287 description
1288 "MaxLatency is the maximum latency from Ingress to Egress(es)
1289 for a single packet of the DetNet flow. MaxLatency is
1290 specified as an integer number of nanoseconds";
1291 }
1292 leaf max-latency-variation {
1293 type uint32;
1294 description
1295 "MaxLatencyVariation is the difference between the minimum and
1296 the maximum end-to-end one-way latency. MaxLatencyVariation
1297 is specified as an integer number of nanoseconds.";
1298 }
1299 leaf max-loss {
1300 type uint8;
1301 description
1302 "MaxLoss defines the maximum Packet Loss Ratio (PLR) parameter
1303 for the DetNet service between the Ingress and Egress(es) of
1304 the DetNet domain.";
1305 }
1306 leaf max-consecutive-loss-tolerance {
1307 type uint32;
1308 description
1309 "Some applications have special loss requirement, such as
1310 MaxConsecutiveLossTolerance. The maximum consecutive loss
1311 tolerance parameter describes the maximum number of
1312 consecutive packets whose loss can be tolerated. The maximum
1313 consecutive loss tolerance can be measured for example based
1314 on sequence number";
1315 }
1316 leaf max-misordering {
1317 type uint32;
1318 description
1319 "MaxMisordering describes the tolerable maximum number of
1320 packets that can be received out of order. The maximum
1321 allowed misordering can be measured for example based on
1322 sequence number. The value zero for the maximum allowed
1323 misordering indicates that in order delivery is required,
1324 misordering cannot be tolerated.";
1325 }
1326 }
1327 }
1329 grouping data-flow-spec {
1330 description "app-flow identification";
1331 choice data-flow-type {
1332 case tsn-app-flow {
1333 uses l2-header;
1334 }
1335 case ip-app-flow {
1336 uses ip-flow-identification;
1337 }
1338 case mpls-app-flow {
1339 uses mpls-flow-identification;
1340 }
1341 }
1342 }
1343 grouping detnet-flow-spec {
1344 description "detnet-flow identificatioin";
1345 choice detnet-flow-type {
1346 case ip-detnet-flow {
1347 uses ip-flow-identification;
1348 }
1349 case mpls-detnet-flow {
1350 uses mpls-flow-identification;
1351 }
1352 }
1353 }
1355 grouping app-flows-ref {
1356 description "incoming or outgoing app-flow reference group";
1357 leaf-list app-flow {
1358 type app-flow-ref;
1359 description "List of ingress or egress app-flows";
1360 }
1361 }
1363 grouping incoming-detnet-flows {
1364 description "incoming detnet member flows identification";
1365 list incoming-detnet-flow {
1366 key "incoming-index";
1367 description "";
1368 leaf incoming-index {
1369 type uint8;
1370 description "";
1371 }
1372 uses detnet-flow-spec;
1373 }
1374 }
1376 grouping detnet-header {
1377 description "DetNet header info for DetNet encapsulation or forwarding";
1378 choice header-type {
1379 case detnet-mpls-header {
1380 description
1381 "MPLS label stack for DetNet MPLS encapsulation or forwarding";
1382 uses rt-types:mpls-label-stack;
1383 }
1384 case detnet-ip-header {
1385 description
1386 "IPv4/IPv6 packet header for DetNet IP encapsulation";
1387 uses ip-header;
1388 }
1389 }
1390 }
1392 grouping lower-layer-ref {
1393 choice lower-layer-type {
1394 case service-sub-layer {
1395 leaf service-sub-layer {
1396 type service-sub-layer-ref;
1397 }
1398 }
1399 case forwarding-sub-layer {
1400 leaf forwarding-sub-layer {
1401 type forwarding-sub-layer-ref;
1402 }
1403 }
1404 case sub-network {
1405 leaf sub-network {
1406 type sub-network-ref;
1407 }
1408 }
1409 case interface {
1410 leaf outgoing-interface {
1411 type if:interface-ref;
1412 }
1413 }
1414 }
1415 }
1416 grouping detnet-next-hop-content {
1417 description
1418 "Generic parameters of DetNet next hops.";
1419 choice next-hop-options {
1420 mandatory true;
1421 description
1422 "Options for next hops.
1423 It is expected that further cases will be added through
1424 augments from other modules, e.g., for recursive
1425 next hops.";
1426 case simple-next-hop {
1427 description
1428 "This case represents a simple next hop consisting of the
1429 next-hop address and/or outgoing interface.
1430 Modules for address families MUST augment this case with a
1431 leaf containing a next-hop address of that address
1432 family.";
1433 uses detnet-header;
1434 list lower-layer{
1435 key "index";
1436 description "lower-layer info";
1437 leaf index {
1438 type uint8;
1439 }
1440 uses lower-layer-ref;
1442 }
1443 }
1444 case next-hop-list {
1445 container next-hop-list {
1446 description
1447 "Container for multiple next hops.";
1448 list next-hop {
1449 key "hop-index";
1450 description
1451 "An entry in a next-hop list.
1453 Modules for address families MUST augment this list
1454 with a leaf containing a next-hop address of that
1455 address family.";
1456 leaf hop-index {
1457 type uint8;
1458 description "";
1459 }
1460 uses detnet-header;
1461 list lower-layer{
1462 key "index";
1463 description "lower-layer info";
1464 leaf index {
1465 type uint8;
1466 }
1467 uses lower-layer-ref;
1468 }
1469 }
1470 }
1471 }
1472 }
1473 }
1475 container app-flows {
1476 description
1477 "The DetNet app-flow configuration";
1478 list app-flow {
1479 key "name";
1480 description "";
1481 leaf name {
1482 type "string";
1483 description "The name to identify the DetNet app-flow";
1484 }
1485 container end-points {
1486 leaf source-endpoint {
1487 type inet:ip-address;
1488 description
1489 "The DetNet application endpoint source address";
1490 }
1491 leaf-list destination-endpoints {
1492 type inet:ip-address;
1493 description
1494 "The DetNet application endpoint destination address list";
1495 }
1496 }
1497 leaf app-flow-bidir-congruent {
1498 type boolean;
1499 description
1500 "Defines the data path requirement of the App-flow whether it must share the same data path and physical path for both directions through the network, e.g., to provide congruent paths in the two directions.";
1501 }
1502 uses traffic-requirements;
1503 uses traffic-specification;
1504 container in-segment {
1505 description "";
1506 list app-traffic {
1507 key "interface";
1508 description "";
1509 leaf interface {
1510 type if:interface-ref;
1511 description "";
1512 }
1513 uses data-flow-spec;
1514 }
1515 }
1516 container out-segment {
1517 description
1518 "detnet-flows that must be mapped to received app-flow or route for outgoing app-flow";
1519 uses detnet-next-hop-content;
1520 }
1521 }
1522 }
1523 container service-sub-layer {
1524 description "The DetNet service sub-layer configuration";
1525 list service-sub-layer-list {
1526 key "name";
1527 description "";
1528 leaf name {
1529 type string;
1530 description "The name of the DetNet service sub-layer";
1531 }
1532 leaf service-id {
1533 type uint16;
1534 config false;
1535 description
1536 "The DetNet service ID";
1538 }
1539 leaf service-rank {
1540 type uint8;
1541 description
1542 "The DetNet rank for this service";
1543 }
1544 uses traffic-requirements;
1545 container service-portection {
1546 leaf service-protection-type {
1547 type service-protection-type;
1548 description
1549 "The DetNet service protection type such as PRF, PEF, PEOF,PERF, and PEORF";
1550 }
1551 leaf sequence-number-length {
1552 type sequence-number-field;
1553 description "sequence number filed can choice 0 bit, 16bit, 28 bit filed";
1554 }
1555 leaf sequence-number-window-size {
1556 type uint32;
1557 description "sequence number window size";
1558 }
1559 leaf sequence-number-generation {
1560 type sequence-number-generation-type;
1561 description "config sequence number source";
1562 }
1563 }
1564 leaf service-operation-type {
1565 type service-operation-type;
1566 }
1567 container in-segment {
1568 uses app-flows-ref;
1569 uses incoming-detnet-flows;
1570 }
1571 container out-sergment {
1572 uses detnet-next-hop-content;
1573 uses app-flows-ref;
1574 }
1575 }
1576 }
1577 container forwarding-sub-layer {
1578 description "The DetNet forwarding sub-layer configuration";
1579 list forwarding-sub-layer-list {
1580 key "name";
1581 description "";
1582 leaf name {
1583 type string;
1584 description "The name of the DetNet forwarding sub-layer";
1585 }
1586 container resource-allocation {
1587 uses traffic-specification;
1588 }
1589 leaf forwarding-operation-type {
1590 type mpls-operations-type;
1591 }
1592 container in-segment {
1593 leaf service-sub-layer {
1594 type service-sub-layer-ref;
1595 description "";
1596 }
1597 list forwarding-traffic {
1598 key "interface";
1599 description "";
1600 leaf interface {
1601 type if:interface-ref;
1602 description "";
1603 }
1604 uses detnet-flow-spec;
1605 }
1606 }
1607 container out-segment {
1608 uses detnet-next-hop-content;
1609 leaf service-sub-layer {
1610 type service-sub-layer-ref;
1611 description "";
1612 }
1613 }
1614 }
1615 }
1616 container sub-network {
1617 description "";
1618 list sub-network-list {
1619 key "name";
1620 description "";
1621 leaf name {
1622 type string;
1623 description "";
1624 }
1625 }
1626 }
1627 }
1628 7. Open Issues
1630 There are some open issues that are still under discussion:
1632 o The name of 'in-segment' and 'out-segment' are still under
1633 discussion. These terms are used in YANG model for MPLS, but they
1634 may cause confusion in DetNet.
1636 o Whether application flow should be in service sub-layer is still
1637 under discussion.
1639 o Whether we are supposed to define a new YANG Model for DetNet as
1640 the current draft does, or we should augment the current YANG
1641 Model.
1643 These issues will be resolved in the following versions of the draft.
1645 8. IANA Considerations
1647 This document makes no request of IANA.
1649 Note to RFC Editor: this section may be removed on publication as an
1650 RFC.
1652 9. Security Considerations
1654
1656 10. Acknowledgements
1658 11. References
1660 11.1. Normative References
1662 [I-D.finn-detnet-bounded-latency]
1663 Finn, N., Boudec, J., Mohammadpour, E., Zhang, J., Varga,
1664 B., and J. Farkas, "DetNet Bounded Latency", draft-finn-
1665 detnet-bounded-latency-04 (work in progress), June 2019.
1667 [I-D.ietf-detnet-flow-information-model]
1668 Farkas, J., Varga, B., Cummings, R., Jiang, Y., and D.
1669 Fedyk, "DetNet Flow Information Model", draft-ietf-detnet-
1670 flow-information-model-07 (work in progress), March 2020.
1672 [I-D.ietf-detnet-ip]
1673 Varga, B., Farkas, J., Berger, L., Fedyk, D., Malis, A.,
1674 and S. Bryant, "DetNet Data Plane: IP", draft-ietf-detnet-
1675 ip-05 (work in progress), February 2020.
1677 [I-D.ietf-detnet-mpls]
1678 Varga, B., Farkas, J., Berger, L., Fedyk, D., Malis, A.,
1679 Bryant, S., and J. Korhonen, "DetNet Data Plane: MPLS",
1680 draft-ietf-detnet-mpls-05 (work in progress), February
1681 2020.
1683 [I-D.ietf-detnet-topology-yang]
1684 Geng, X., Chen, M., Li, Z., and R. Rahman, "Deterministic
1685 Networking (DetNet) Topology YANG Model", draft-ietf-
1686 detnet-topology-yang-00 (work in progress), January 2019.
1688 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
1689 Requirement Levels", BCP 14, RFC 2119,
1690 DOI 10.17487/RFC2119, March 1997,
1691 .
1693 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
1694 RFC 6991, DOI 10.17487/RFC6991, July 2013,
1695 .
1697 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
1698 RFC 7950, DOI 10.17487/RFC7950, August 2016,
1699 .
1701 [RFC8655] Finn, N., Thubert, P., Varga, B., and J. Farkas,
1702 "Deterministic Networking Architecture", RFC 8655,
1703 DOI 10.17487/RFC8655, October 2019,
1704 .
1706 11.2. Informative References
1708 [I-D.geng-detnet-info-distribution]
1709 Geng, X., Chen, M., Li, Z., Qin, F., and L. Qiang, "IGP-TE
1710 Extensions for DetNet Information Distribution", draft-
1711 geng-detnet-info-distribution-04 (work in progress), July
1712 2019.
1714 [I-D.ietf-detnet-use-cases]
1715 Grossman, E., "Deterministic Networking Use Cases", draft-
1716 ietf-detnet-use-cases-20 (work in progress), December
1717 2018.
1719 [I-D.ietf-teas-yang-te]
1720 Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin,
1721 "A YANG Data Model for Traffic Engineering Tunnels and
1722 Interfaces", draft-ietf-teas-yang-te-22 (work in
1723 progress), November 2019.
1725 [I-D.ietf-teas-yang-te-topo]
1726 Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and
1727 O. Dios, "YANG Data Model for Traffic Engineering (TE)
1728 Topologies", draft-ietf-teas-yang-te-topo-22 (work in
1729 progress), June 2019.
1731 [I-D.thubert-tsvwg-detnet-transport]
1732 Thubert, P., "A Transport Layer for Deterministic
1733 Networks", draft-thubert-tsvwg-detnet-transport-01 (work
1734 in progress), October 2017.
1736 [I-D.varga-detnet-service-model]
1737 Varga, B. and J. Farkas, "DetNet Service Model", draft-
1738 varga-detnet-service-model-02 (work in progress), May
1739 2017.
1741 [IEEE802.1CB]
1742 IEEE, "IEEE, "Frame Replication and Elimination for
1743 Reliability (IEEE Draft P802.1CB)", 2017,
1744 .",
1745 2016.
1747 [IEEE802.1Q-2014]
1748 "IEEE, "IEEE Std 802.1Q Bridges and Bridged Networks",
1749 2014, .",
1750 2014.
1752 [IEEE802.1Qbu]
1753 IEEE, "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged
1754 Networks - Amendment 26: Frame Preemption", 2016,
1755 .", 2016.
1757 [IEEE802.1Qbv]
1758 "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged Networks -
1759 Amendment 25: Enhancements for Scheduled Traffic", 2015,
1760 .", 2016.
1762 [IEEE802.1Qcc]
1763 IEEE, "IEEE, "Stream Reservation Protocol (SRP)
1764 Enhancements and Performance Improvements (IEEE Draft
1765 P802.1Qcc)", 2017,
1766 .".
1768 [IEEE802.1Qch]
1769 IEEE, "IEEE, "Cyclic Queuing and Forwarding (IEEE Draft
1770 P802.1Qch)", 2017,
1771 .",
1772 2016.
1774 [IEEE802.1Qci]
1775 IEEE, "IEEE, "Per-Stream Filtering and Policing (IEEE
1776 Draft P802.1Qci)", 2016,
1777 .",
1778 2016.
1780 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V.,
1781 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
1782 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001,
1783 .
1785 [RFC4875] Aggarwal, R., Ed., Papadimitriou, D., Ed., and S.
1786 Yasukawa, Ed., "Extensions to Resource Reservation
1787 Protocol - Traffic Engineering (RSVP-TE) for Point-to-
1788 Multipoint TE Label Switched Paths (LSPs)", RFC 4875,
1789 DOI 10.17487/RFC4875, May 2007,
1790 .
1792 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
1793 and R. Wilton, "Network Management Datastore Architecture
1794 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
1795 .
1797 Authors' Addresses
1799 Xuesong Geng
1800 Huawei Technologies
1802 Email: gengxuesong@huawei.com
1804 Mach(Guoyi) Chen
1805 Huawei Technologies
1807 Email: mach.chen@huawei.com
1809 Yeoncheol Ryoo
1810 ETRI
1812 Email: dbduscjf@etri.re.kr
1814 Zhenqiang Li
1815 China Mobile
1817 Email: lizhenqiang@chinamobile.com
1818 Reshad Rahman
1819 Cisco Systems
1821 Email: rrahman@cisco.com
1823 Don Fedyk
1824 LabN Consulting, L.L.C.
1826 Email: dfedyk@labn.net