draft-ietf-detnet-yang-07.txt   draft-ietf-detnet-yang-08.txt 
Network Working Group X. Geng Network Working Group X. Geng
Internet-Draft M. Chen Internet-Draft M. Chen
Intended status: Standards Track Huawei Technologies Intended status: Standards Track Huawei Technologies
Expires: January 14, 2021 Y. Ryoo Expires: April 15, 2021 Y. Ryoo
ETRI ETRI
D. Fedyk D. Fedyk
LabN Consulting, L.L.C. LabN Consulting, L.L.C.
Z. Li
China Mobile
R. Rahman R. Rahman
Cisco Systems Cisco Systems
July 13, 2020 Z. Li
China Mobile
October 12, 2020
Deterministic Networking (DetNet) Configuration YANG Model Deterministic Networking (DetNet) Configuration YANG Model
draft-ietf-detnet-yang-07 draft-ietf-detnet-yang-08
Abstract Abstract
This document contains the specification for Deterministic Networking This document contains the specification for Deterministic Networking
flow configuration YANG Model. The model allows for provisioning of flow configuration YANG Model. The model allows for provisioning of
end-to-end DetNet service along the path without dependency on any end-to-end DetNet service along the path without dependency on any
signaling protocol. signaling protocol.
The YANG module defined in this document conforms to the Network The YANG module defined in this document conforms to the Network
Management Datastore Architecture (NMDA). Management Datastore Architecture (NMDA).
skipping to change at page 2, line 4 skipping to change at page 2, line 4
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 14, 2021. This Internet-Draft will expire on April 15, 2021.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 29 skipping to change at page 2, line 29
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminologies . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminologies . . . . . . . . . . . . . . . . . . . . . . . . 3
3. DetNet Configuration Module . . . . . . . . . . . . . . . . . 3 3. DetNet Configuration Module . . . . . . . . . . . . . . . . . 3
3.1. DetNet Appliction Flow Configuration Attributes . . . . . 3 3.1. DetNet Appliction Flow Configuration Attributes . . . . . 3
3.2. DetNet Service Sub-layer Configuration Attributes . . . . 3 3.2. DetNet Service Sub-layer Configuration Attributes . . . . 3
3.3. DetNet Forwarding Sub-layer Configuration Attributes . . 3 3.3. DetNet Forwarding Sub-layer Configuration Attributes . . 3
4. DetNet YANG Structure Considerations . . . . . . . . . . . . 4 4. DetNet Flow Aggregation . . . . . . . . . . . . . . . . . . . 4
5. DetNet Configuration YANG Structures . . . . . . . . . . . . 4 5. DetNet YANG Structure Considerations . . . . . . . . . . . . 5
6. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 16 6. DetNet Configuration YANG Structures . . . . . . . . . . . . 5
7. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 37 7. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 14
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 37 8. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 41
9. Security Considerations . . . . . . . . . . . . . . . . . . . 37 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 37 10. Security Considerations . . . . . . . . . . . . . . . . . . . 41
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 37 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 41
11.1. Normative References . . . . . . . . . . . . . . . . . . 38 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 41
11.2. Informative References . . . . . . . . . . . . . . . . . 39 12.1. Normative References . . . . . . . . . . . . . . . . . . 41
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 41 12.2. Informative References . . . . . . . . . . . . . . . . . 42
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42
1. Introduction 1. Introduction
DetNet (Deterministic Networking) provides a capability to carry DetNet (Deterministic Networking) provides a capability to carry
specified unicast or multicast data flows for real-time applications specified unicast or multicast data flows for real-time applications
with extremely low packet loss rates and assured maximum end-to-end with extremely low packet loss rates and assured maximum end-to-end
delivery latency. A description of the general background and delivery latency. A description of the general background and
concepts of DetNet can be found in [RFC8655]. concepts of DetNet can be found in [RFC8655].
This document defines a YANG model for DetNet based on YANG data This document defines a YANG model for DetNet based on YANG data
skipping to change at page 4, line 22 skipping to change at page 4, line 23
resource reservation, flow shaping, filtering and policing. resource reservation, flow shaping, filtering and policing.
o Explicit path, existing explicit route mechanisms can be reused. o Explicit path, existing explicit route mechanisms can be reused.
For example, if Segment Routing (SR) tunnel is used as the For example, if Segment Routing (SR) tunnel is used as the
transport tunnel, the configuration is mainly at the ingress node transport tunnel, the configuration is mainly at the ingress node
of the transport layer; if the static MPLS tunnel is used as the of the transport layer; if the static MPLS tunnel is used as the
transport tunnel, the configurations need to be at every transit transport tunnel, the configurations need to be at every transit
node along the path; for pure IP based transport tunnel, it's node along the path; for pure IP based transport tunnel, it's
similar to the static MPLS case. similar to the static MPLS case.
4. DetNet YANG Structure Considerations 4. DetNet Flow Aggregation
DetNet provides the capability of flow aggregation to improve
scaleability of DetNet data, management and control planes.
Aggregated flows can be viewed by the some DetNet nodes as individual
DetNet flows. When aggregating DetNet flows, the flows should be
compatible: if bandwidth reservations are used, the reservation
should be a reasonable representation of the individual reservations;
if maximum delay bounds are used, the system should ensure that the
aggregate does not exceed the delay bounds of the individual flows.
The DetNet YANG model defined in this document supports DetNet flow
aggregation with the following functions:
o Aggregation flow encapsulation/decapsulation/identification
o Mapping individual DetNet flows to an aggregated flow
o Changing traffic specification parameters for aggregated flow
The following cases of DetNet aggregation are supported:
o aggregate data flows into an application which is then mapped to a
service sub-layer at the ingress node. Note the data flows may be
other DetNet flows.
o map each DetNet application to a single service sub-layer and
allowing the aggregation of multiple applications at the ingress
node, and vice versa for de-aggregation. A classifier may be
required to de-aggregate the respective applications.
o map each DetNet application uniquely to a single service sub-layer
where those sub-layers may be encapsulated as a single service
sub-layer and hence aggregating the applications at the ingress
node, and vice versa for de-aggregation. In this case, the
service sub-layer identifier may be sufficient to identify the
application. A classifier may be required to de-aggregate the
service sub-layers.
o aggregate DetNet service sub-layers into an aggregated flow by
using the same forwarding sub-layer at ingress node or relay node,
and vice versa for de-aggregation.
o aggregate DetNet flows with different forwarding sub-layer into an
aggregated flow by using the same forwarding sub-layer at transit
node, and vice versa for de-aggregation.
Traffic requirements and traffic specification may be tracked for
individual or aggregate flows but reserving resources and tracking
the services in the aggregated flow is out of scope.
5. DetNet YANG Structure Considerations
The picture shows that the general structure of the DetNet YANG The picture shows that the general structure of the DetNet YANG
Model: Model:
+-----------+ +-----------+
|ietf-detnet| |ietf-detnet|
+-----+-----+ +-----+-----+
| |
+-------------+---------------+ +-------------+---------------+
| | | | | |
+-----+-----+ +-----+-----+ +-------+------+ +-----+-----+ +-----+-----+ +-------+------+
| App Flows | |service s-l| |forwarding s-l| | App Flows | |service s-l| |forwarding s-l|
+-----------+ +-----------+ +--------------+ +-----------+ +-----------+ +--------------+
There are three instances in DetNet YANG Model: App-flow instance, There are three instances in DetNet YANG Model: App-flow instance,
service sub-layer instance and forwarding sub-layer instance, service sub-layer instance and forwarding sub-layer instance,
respectively corresponding to four parts of DetNet functions defined respectively corresponding to four parts of DetNet functions defined
in section 3. in section 3.
5. DetNet Configuration YANG Structures 6. DetNet Configuration YANG Structures
module: ietf-detnet-config module: ietf-detnet-config
module: ietf-detnet-config
+--rw detnet +--rw detnet
+--rw traffic-profile* [profile-number]
| +--rw profile-number uint16
| +--rw traffic-requirements
| | +--rw min-bandwidth? uint64
| | +--rw max-latency? uint32
| | +--rw max-latency-variation? uint32
| | +--rw max-loss? uint8
| | +--rw max-consecutive-loss-tolerance? uint32
| | +--rw max-misordering? uint32
| +--rw traffic-specification
| | +--rw interval? uint32
| | +--rw max-packets-per-interval? uint32
| | +--rw max-payload-size? uint32
| | +--rw average-packets-per-interval? uint32
| | +--rw average-payload-size? uint32
| +--ro member-applications* app-flow-ref
| +--ro member-services* service-sub-layer-ref
| +--ro member-groups* aggregation-grp-ref
| +--ro member-forwarding-sublayers* forwarding-sub-layer-ref
+--rw app-flows +--rw app-flows
| +--rw app-flow* [name] | +--rw app-flow* [name]
| +--rw name string | +--rw name string
| +--ro app-id? uint16 | +--rw app-flow-bidir-congruent? boolean
| +--rw app-flow-bidir-congruent? boolean | +--ro outgoing-service? service-sub-layer-ref
| +--rw outgoing-service? service-sub-layer-ref | +--ro incoming-service? service-sub-layer-ref
| +--rw incoming-service? service-sub-layer-ref | +--rw traffic-profile? traffic-profile-ref
| +--rw traffic-requirements
| | +--rw min-bandwidth? uint64
| | +--rw max-latency? uint32
| | +--rw max-latency-variation? uint32
| | +--rw max-loss? uint8
| | +--rw max-consecutive-loss-tolerance? uint32
| | +--rw max-misordering? uint32
| +--rw traffic-specification
| | +--rw interval? uint32
| | +--rw max-packets-per-interval? uint32
| | +--rw max-payload-size? uint32
| | +--rw average-packets-per-interval? uint32
| | +--rw average-payload-size? uint32
| +--rw ingress | +--rw ingress
| | +--rw name? string | | +--rw name? string
| | +--ro app-flow-status? identityref | | +--ro app-flow-status? identityref
| | +--rw interface? if:interface-ref | | +--rw interface? if:interface-ref
| | +--rw (data-flow-type)? | | +--rw (data-flow-type)?
| | +--:(tsn-app-flow) | | +--:(tsn-app-flow)
| | | +--rw source-mac-address? yang:mac-address | | | +--rw source-mac-address? yang:mac-address
| | | +--rw destination-mac-address? yang:mac-address | | | +--rw destination-mac-address? yang:mac-address
| | | +--rw ethertype? eth:ethertype | | | +--rw ethertype? eth:ethertype
| | | +--rw vlan-id? uint16 | | | +--rw vlan-id? uint16
| | | +--rw pcp? uint8 | | | +--rw pcp? uint8
| | +--:(ip-app-flow) | | +--:(ip-app-flow)
| | | +--rw src-ip-prefix? inet:ip-prefix | | | +--rw src-ip-prefix? inet:ip-prefix
| | | +--rw dest-ip-prefix? inet:ip-prefix | | | +--rw dest-ip-prefix? inet:ip-prefix
| | | +--rw next-header? uint8 | | | +--rw next-header? uint8
| | | +--rw traffic-class? uint8 | | | +--rw traffic-class? uint8
| | | +--rw flow-label? inet:ipv6-flow-label | | | +--rw flow-label? inet:ipv6-flow-label
| | | +--rw source-port | | | +--rw source-port
| | | | +--rw (port-range-or-operator)? | | | | +--rw (port-range-or-operator)?
| | | | +--:(range) | | | | +--:(range)
| | | | | +--rw lower-port inet:port-number | | | | | +--rw lower-port inet:port-number
| | | | | +--rw upper-port inet:port-number | | | | | +--rw upper-port inet:port-number
| | | | +--:(operator) | | | | +--:(operator)
| | | | +--rw operator? operator | | | | +--rw operator? packet-fields:operator
| | | | +--rw port inet:port-number | | | | +--rw port inet:port-number
| | | +--rw destination-port | | | +--rw destination-port
| | | | +--rw (port-range-or-operator)? | | | | +--rw (port-range-or-operator)?
| | | | +--:(range) | | | | +--:(range)
| | | | | +--rw lower-port inet:port-number | | | | | +--rw lower-port inet:port-number
| | | | | +--rw upper-port inet:port-number | | | | | +--rw upper-port inet:port-number
| | | | +--:(operator) | | | | +--:(operator)
| | | | +--rw operator? operator | | | | +--rw operator? packet-fields:operator
| | | | +--rw port inet:port-number | | | | +--rw port inet:port-number
| | | +--rw ipsec-spi? ipsec-spi | | | +--rw ipsec-spi? ipsec-spi
| | +--:(mpls-app-flow) | | +--:(mpls-app-flow)
| | +--rw (label-space)? | | +--rw (label-space)?
| | +--:(context-label-space) | | +--:(context-label-space)
| | | +--rw mpls-label-stack | | | +--rw mpls-label-stack
| | | +--rw entry* [id] | | | +--rw entry* [id]
| | | +--rw id uint8 | | | +--rw id uint8
| | | +--rw label? rt-types:mpls-label | | | +--rw label?
| | | +--rw ttl? uint8 | | | | rt-types:mpls-label
| | | +--rw traffic-class? uint8 | | | +--rw ttl? uint8
| | | +--rw traffic-class? uint8
| | +--:(platform-label-space) | | +--:(platform-label-space)
| | +--rw label? rt-types:mpls-label | | +--rw label? rt-types:mpls-label
| +--rw egress | +--rw egress
| +--rw name? string | +--rw name? string
| +--rw (application-type)? | +--rw (application-type)?
| +--:(ethernet) | +--:(ethernet)
| | +--rw ethernet | | +--rw ethernet
| | +--rw ethernet-place-holder? string | | +--rw ethernet-place-holder? string
| +--:(ip-mpls) | +--:(ip-mpls)
| +--rw ip-mpls | +--rw ip-mpls
| +--rw (next-hop-options) | +--rw (next-hop-options)
| +--:(simple-next-hop) | +--:(simple-next-hop)
| | +--rw outgoing-interface? if:interface-ref | | +--rw outgoing-interface?
| | | if:interface-ref
| | +--rw (flow-type)? | | +--rw (flow-type)?
| | +--:(ip) | | +--:(ip)
| | | +--rw next-hop-address? inet:ip-address | | | +--rw next-hop-address?
| | | inet:ip-address
| | +--:(mpls) | | +--:(mpls)
| | +--rw mpls-label-stack | | +--rw mpls-label-stack
| | +--rw entry* [id] | | +--rw entry* [id]
| | +--rw id uint8 | | +--rw id uint8
| | +--rw label? rt-types:mpls-label | | +--rw label?
| | +--rw ttl? uint8 | | | rt-types:mpls-label
| | +--rw traffic-class? uint8 | | +--rw ttl? uint8
| | +--rw traffic-class? uint8
| +--:(next-hop-list) | +--:(next-hop-list)
| +--rw next-hop-list | +--rw next-hop-list
| +--rw next-hop* [hop-index] | +--rw next-hop* [hop-index]
| +--rw hop-index uint8 | +--rw hop-index uint8
| +--rw outgoing-interface? if:interface-ref | +--rw outgoing-interface?
| | if:interface-ref
| +--rw (flow-type)? | +--rw (flow-type)?
| +--:(ip) | +--:(ip)
| | +--rw next-hop-address? inet:ip-address | | +--rw next-hop-address?
| | inet:ip-address
| +--:(mpls) | +--:(mpls)
| +--rw mpls-label-stack | +--rw mpls-label-stack
| +--rw entry* [id] | +--rw entry* [id]
| +--rw id uint8 | +--rw id
| +--rw label? rt-types:mpls-label | | uint8
| +--rw ttl? uint8 | +--rw label?
| +--rw traffic-class? uint8 | | rt-types:
| | mpls-label
| +--rw ttl?
| | uint8
| +--rw traffic-class?
| uint8
+--rw service-aggregation-group* [group-name]
| +--rw group-name aggregation-group
| +--rw outgoing
| | +--rw traffic-profile? traffic-profile-ref
| | +--rw service-protection
| | | +--rw service-protection-type? service-protection-type
| | | +--rw sequence-number-length? sequence-number-field
| | +--rw aggregation-header
| | | +--rw mpls-label-stack
| | | +--rw entry* [id]
| | | +--rw id uint8
| | | +--rw label? rt-types:mpls-label
| | | +--rw ttl? uint8
| | | +--rw traffic-class? uint8
| | +--ro services* service-sub-layer-ref
| +--rw incoming
| +--rw aggregation-header
| | +--rw mpls-label-stack
| | +--rw entry* [id]
| | +--rw id uint8
| | +--rw label? rt-types:mpls-label
| | +--rw ttl? uint8
| | +--rw traffic-class? uint8
| +--ro services* service-sub-layer-ref
+--rw service-sub-layer +--rw service-sub-layer
| +--rw service-sub-layer-list* [name] | +--rw service-sub-layer-list* [name]
| +--rw name string | +--rw name string
| +--ro service-id? uint16 | +--rw service-rank? uint8
| +--rw service-rank? uint8 | +--rw (service-type)
| +--rw traffic-requirements | | +--:(non-grouped)
| | +--rw min-bandwidth? uint64 | | | +--rw non-grouped
| | +--rw max-latency? uint32 | | | +--rw traffic-profile? traffic-profile-ref
| | +--rw max-latency-variation? uint32 | | | +--rw service-operation-type?
| | +--rw max-loss? uint8 | | | service-operation-type
| | +--rw max-consecutive-loss-tolerance? uint32 | | +--:(grouped)
| | +--rw max-misordering? uint32 | | +--rw grouped
| +--rw traffic-specification | | +--rw group-ref? aggregation-grp-ref
| | +--rw interval? uint32
| | +--rw max-packets-per-interval? uint32
| | +--rw max-payload-size? uint32
| | +--rw average-packets-per-interval? uint32
| | +--rw average-payload-size? uint32
| +--rw service-protection | +--rw service-protection
| | +--rw service-protection-type? service-protection-type | | +--rw service-protection-type? service-protection-type
| | +--rw sequence-number-length? sequence-number-field | | +--rw sequence-number-length? sequence-number-field
| +--rw service-operation-type? service-operation-type | +--rw service-operation-type? service-operation-type
| +--rw incoming | +--rw incoming
| | +--rw (incoming-options) | | +--rw (incoming-options)
| | +--:(ingress-proxy) | | +--:(ingress-application)
| | | +--rw app-flow* app-flow-ref | | | +--rw app-flow* app-flow-ref
| | +--:(detnet-service-identification) | | +--:(detnet-service-identification)
| | +--rw (detnet-flow-type)? | | | +--rw (detnet-flow-type)?
| | +--:(ip-detnet-flow) | | | +--:(ip-detnet-flow)
| | | +--rw src-ip-prefix? inet:ip-prefix | | | | +--rw src-ip-prefix? inet:ip-prefix
| | | +--rw dest-ip-prefix? inet:ip-prefix | | | | +--rw dest-ip-prefix? inet:ip-prefix
| | | +--rw next-header? uint8 | | | | +--rw next-header? uint8
| | | +--rw traffic-class? uint8 | | | | +--rw traffic-class? uint8
| | | +--rw flow-label? inet:ipv6-flow-label | | | | +--rw flow-label? inet:ipv6-flow-label
| | | +--rw source-port | | | | +--rw source-port
| | | | +--rw (port-range-or-operator)? | | | | | +--rw (port-range-or-operator)?
| | | | +--:(range) | | | | | +--:(range)
| | | | | +--rw lower-port inet:port-number | | | | | | +--rw lower-port inet:port-number
| | | | | +--rw upper-port inet:port-number | | | | | | +--rw upper-port inet:port-number
| | | | +--:(operator) | | | | | +--:(operator)
| | | | +--rw operator? operator | | | | | +--rw operator?
| | | | +--rw port inet:port-number | | | | | | packet-fields:operator
| | | +--rw destination-port | | | | | +--rw port inet:port-number
| | | | +--rw (port-range-or-operator)? | | | | +--rw destination-port
| | | | +--:(range) | | | | | +--rw (port-range-or-operator)?
| | | | | +--rw lower-port inet:port-number | | | | | +--:(range)
| | | | | +--rw upper-port inet:port-number | | | | | | +--rw lower-port inet:port-number
| | | | +--:(operator) | | | | | | +--rw upper-port inet:port-number
| | | | +--rw operator? operator | | | | | +--:(operator)
| | | | +--rw port inet:port-number | | | | | +--rw operator?
| | | +--rw ipsec-spi? ipsec-spi | | | | | | packet-fields:operator
| | +--:(mpls-detnet-flow) | | | | | +--rw port inet:port-number
| | +--rw (label-space)? | | | | +--rw ipsec-spi? ipsec-spi
| | +--:(context-label-space) | | | +--:(mpls-detnet-flow)
| | | +--rw mpls-label-stack | | | +--rw (label-space)?
| | | +--rw entry* [id] | | | +--:(context-label-space)
| | | +--rw id uint8 | | | | +--rw mpls-label-stack
| | | +--rw label? rt-types:mpls-label | | | | +--rw entry* [id]
| | | +--rw ttl? uint8 | | | | +--rw id uint8
| | | +--rw traffic-class? uint8 | | | | +--rw label?
| | +--:(platform-label-space) | | | | | rt-types:mpls-label
| | +--rw label? rt-types:mpls-label | | | | +--rw ttl? uint8
| | | | +--rw traffic-class? uint8
| | | +--:(platform-label-space)
| | | +--rw label? rt-types:mpls-label
| | +--:(aggregated-service)
| | | +--rw service-sub-layer* service-sub-layer-ref
| | +--:(aggregated-forwarding)
| | +--rw forwarding-sub-layer*
| | forwarding-sub-layer-ref
| +--rw outgoing | +--rw outgoing
| +--rw (outgoing-options) | +--rw (outgoing-options)
| +--:(egress-proxy)
| | +--rw app-flow* app-flow-ref
| +--:(detnet-service-outgoing) | +--:(detnet-service-outgoing)
| +--rw service-outgoing-list* [service-outgoing-index] | | +--rw service-outgoing-list*
| +--rw service-outgoing-index uint8 | | [service-outgoing-index]
| +--rw (header-type)? | | +--rw service-outgoing-index uint8
| | +--:(detnet-mpls-header) | | +--rw (header-type)?
| | | +--rw mpls-label-stack | | | +--:(detnet-mpls-header)
| | | +--rw entry* [id] | | | | +--rw mpls-label-stack
| | | +--rw id uint8 | | | | +--rw entry* [id]
| | | +--rw label? rt-types:mpls-label | | | | +--rw id uint8
| | | +--rw ttl? uint8 | | | | +--rw label?
| | | +--rw traffic-class? uint8 | | | | | rt-types:mpls-label
| | +--:(detnet-ip-header) | | | | +--rw ttl? uint8
| | +--rw src-ip-address? inet:ip-address | | | | +--rw traffic-class? uint8
| | +--rw dest-ip-address? inet:ip-address | | | +--:(detnet-ip-header)
| | +--rw next-header? uint8 | | | +--rw src-ip-address? inet:ip-address
| | +--rw traffic-class? uint8 | | | +--rw dest-ip-address? inet:ip-address
| | +--rw flow-label? inet:ipv6-flow-label | | | +--rw next-header? uint8
| | +--rw source-port? inet:port-number | | | +--rw traffic-class? uint8
| | +--rw destination-port? inet:port-number | | | +--rw flow-label?
| +--rw next-layer* [index] | | | | inet:ipv6-flow-label
| +--rw index uint8 | | | +--rw source-port? inet:port-number
| +--rw forwarding-sub-layer? forwarding-sub-layer-ref | | | +--rw destination-port? inet:port-number
+--rw forwarding-sub-layer | | +--rw next-layer* [index]
| +--rw forwarding-sub-layer-list* [name] | | +--rw index uint8
| +--rw name string | | +--rw forwarding-sub-layer?
| +--ro forwarding-id? uint16 | | forwarding-sub-layer-ref
| +--rw traffic-requirements | +--:(detnet-service-aggregation)
| | +--rw min-bandwidth? uint64 | | +--rw aggregation-service-sub-layer?
| | +--rw max-latency? uint32 | | | service-sub-layer-ref
| | +--rw max-latency-variation? uint32 | | +--rw service-label
| | +--rw max-loss? uint8 | | +--rw mpls-label-stack
| | +--rw max-consecutive-loss-tolerance? uint32 | | +--rw entry* [id]
| | +--rw max-misordering? uint32 | | +--rw id uint8
| +--rw traffic-specification | | +--rw label? rt-types:mpls-label
| | +--rw interval? uint32 | | +--rw ttl? uint8
| | +--rw max-packets-per-interval? uint32 | | +--rw traffic-class? uint8
| | +--rw max-payload-size? uint32 | +--:(egress-proxy)
| | +--rw average-packets-per-interval? uint32 | | +--rw app-flow* app-flow-ref
| | +--rw average-payload-size? uint32
| +--rw forwarding-operation-type? forwarding-operations-type
| +--rw incoming
| | +--rw (incoming-options)
| | +--:(detnet-service-forwarding)
| | | +--rw service-sub-layer* service-sub-layer-ref
| | +--:(detnet-forwarding-identification)
| | +--rw interface? if:interface-ref
| | +--rw (detnet-flow-type)?
| | +--:(ip-detnet-flow)
| | | +--rw src-ip-prefix? inet:ip-prefix
| | | +--rw dest-ip-prefix? inet:ip-prefix
| | | +--rw next-header? uint8
| | | +--rw traffic-class? uint8
| | | +--rw flow-label? inet:ipv6-flow-label
| | | +--rw source-port
| | | | +--rw (port-range-or-operator)?
| | | | +--:(range)
| | | | | +--rw lower-port inet:port-number
| | | | | +--rw upper-port inet:port-number
| | | | +--:(operator)
| | | | +--rw operator? operator
| | | | +--rw port inet:port-number
| | | +--rw destination-port
| | | | +--rw (port-range-or-operator)?
| | | | +--:(range)
| | | | | +--rw lower-port inet:port-number
| | | | | +--rw upper-port inet:port-number
| | | | +--:(operator)
| | | | +--rw operator? operator
| | | | +--rw port inet:port-number
| | | +--rw ipsec-spi? ipsec-spi
| | +--:(mpls-detnet-flow)
| | +--rw (label-space)?
| | +--:(context-label-space)
| | | +--rw mpls-label-stack
| | | +--rw entry* [id]
| | | +--rw id uint8
| | | +--rw label? rt-types:mpls-label
| | | +--rw ttl? uint8
| | | +--rw traffic-class? uint8
| | +--:(platform-label-space)
| | +--rw label? rt-types:mpls-label
| +--rw outgoing
| +--rw (outgoing-options)
| +--:(detnet-service-operation) | +--:(detnet-service-operation)
| | +--rw service-sub-layer* service-sub-layer-ref | | +--rw service-sub-layer* service-sub-layer-ref
| +--:(detnet-forwarding-outgoing) | +--:(detnet-forwarding-operation)
| +--rw (next-hop-options) | +--rw forwarding-sub-layer*
| +--:(simple-next-hop) | forwarding-sub-layer-ref
| | +--rw outgoing-interface? if:interface-ref +--rw forwarding-sub-layer
| | +--rw (flow-type)? +--rw forwarding-sub-layer-list* [name]
| | +--:(ip) +--rw name string
| | | +--rw (operation-type)? +--rw traffic-profile? traffic-profile-ref
| | | +--:(ip-forwarding) +--rw forwarding-operation-type? forwarding-operations-type
| | | | +--rw next-hop-address? inet:ip-address +--rw incoming
| | | +--:(mpls-over-ip-encapsulation) | +--rw (incoming-options)
| | | +--rw src-ip-address? inet:ip-address | +--:(detnet-service-forwarding)
| | | +--rw dest-ip-address? inet:ip-address | | +--ro service-sub-layer* service-sub-layer-ref
| | | +--rw next-header? uint8 | +--:(detnet-forwarding-identification)
| | | +--rw traffic-class? uint8 | | +--rw interface? if:interface-ref
| | | +--rw flow-label? inet:ipv6-flow-label | | +--rw (detnet-flow-type)?
| | | +--rw source-port? inet:port-number | | +--:(ip-detnet-flow)
| | | +--rw destination-port? inet:port-number | | | +--rw src-ip-prefix? inet:ip-prefix
| | +--:(mpls) | | | +--rw dest-ip-prefix? inet:ip-prefix
| | +--rw mpls-label-stack | | | +--rw next-header? uint8
| | +--rw entry* [id] | | | +--rw traffic-class? uint8
| | +--rw id uint8 | | | +--rw flow-label? inet:ipv6-flow-label
| | +--rw label? rt-types:mpls-label | | | +--rw source-port
| | +--rw ttl? uint8 | | | | +--rw (port-range-or-operator)?
| | +--rw traffic-class? uint8 | | | | +--:(range)
| +--:(next-hop-list) | | | | | +--rw lower-port inet:port-number
| +--rw next-hop-list | | | | | +--rw upper-port inet:port-number
| +--rw next-hop* [hop-index] | | | | +--:(operator)
| +--rw hop-index uint8 | | | | +--rw operator?
| +--rw outgoing-interface? if:interface-ref | | | | | packet-fields:operator
| +--rw (flow-type)? | | | | +--rw port inet:port-number
| +--:(ip) | | | +--rw destination-port
| | +--rw (operation-type)? | | | | +--rw (port-range-or-operator)?
| | +--:(ip-forwarding) | | | | +--:(range)
| | | +--rw next-hop-address? inet:ip-address | | | | | +--rw lower-port inet:port-number
| | +--:(mpls-over-ip-encapsulation) | | | | | +--rw upper-port inet:port-number
| | +--rw src-ip-address? inet:ip-address | | | | +--:(operator)
| | +--rw dest-ip-address? inet:ip-address | | | | +--rw operator?
| | +--rw next-header? uint8 | | | | | packet-fields:operator
| | +--rw traffic-class? uint8 | | | | +--rw port inet:port-number
| | +--rw flow-label? inet:ipv6-flow-label | | | +--rw ipsec-spi? ipsec-spi
| | +--rw source-port? inet:port-number | | +--:(mpls-detnet-flow)
| | +--rw destination-port? inet:port-number | | +--rw (label-space)?
| +--:(mpls) | | +--:(context-label-space)
| +--rw mpls-label-stack | | | +--rw mpls-label-stack
| +--rw entry* [id] | | | +--rw entry* [id]
| +--rw id uint8 | | | +--rw id uint8
| +--rw label? rt-types:mpls-label | | | +--rw label?
| +--rw ttl? uint8 | | | | rt-types:mpls-label
| +--rw traffic-class? uint8 | | | +--rw ttl? uint8
+--rw sub-network | | | +--rw traffic-class? uint8
+--rw sub-network-list* [name] | | +--:(platform-label-space)
+--rw name string | | +--rw label? rt-types:mpls-label
| +--:(aggregated-forwarding)
grouping ip-header: | +--rw forwarding-sub-layer*
+--rw src-ip-address? inet:ip-address | forwarding-sub-layer-ref
+--rw dest-ip-address? inet:ip-address +--rw outgoing
+--rw next-header? uint8 +--rw (outgoing-options)
+--rw traffic-class? uint8 +--:(detnet-forwarding-outgoing)
+--rw flow-label? inet:ipv6-flow-label | +--rw (next-hop-options)
+--rw source-port? inet:port-number | +--:(simple-next-hop)
+--rw destination-port? inet:port-number | | +--rw outgoing-interface? if:interface-ref
grouping l2-header: | | +--rw (flow-type)?
+--rw source-mac-address? yang:mac-address | | +--:(ip)
+--rw destination-mac-address? yang:mac-address | | | +--rw (operation-type)?
+--rw ethertype? eth:ethertype | | | +--:(ip-forwarding)
+--rw vlan-id? uint16 | | | | +--rw next-hop-address?
+--rw pcp? uint8 | | | | inet:ip-address
grouping destination-ip-port-identification: | | | +--:(mpls-over-ip-encapsulation)
+--rw destination-port | | | +--rw src-ip-address?
+--rw (port-range-or-operator)? | | | | inet:ip-address
+--:(range) | | | +--rw dest-ip-address?
| +--rw lower-port inet:port-number | | | | inet:ip-address
| +--rw upper-port inet:port-number | | | +--rw next-header? uint8
+--:(operator) | | | +--rw traffic-class? uint8
+--rw operator? operator | | | +--rw flow-label?
+--rw port inet:port-number | | | | inet:ipv6-flow-label
grouping source-ip-port-identification: | | | +--rw source-port?
+--rw source-port | | | | inet:port-number
+--rw (port-range-or-operator)? | | | +--rw destination-port?
+--:(range) | | | inet:port-number
| +--rw lower-port inet:port-number | | +--:(mpls)
| +--rw upper-port inet:port-number | | +--rw mpls-label-stack
+--:(operator) | | +--rw entry* [id]
+--rw operator? operator | | +--rw id uint8
+--rw port inet:port-number | | +--rw label?
grouping ip-flow-identification: | | | rt-types:mpls-label
+--rw src-ip-prefix? inet:ip-prefix | | +--rw ttl? uint8
+--rw dest-ip-prefix? inet:ip-prefix | | +--rw traffic-class? uint8
+--rw next-header? uint8 | +--:(next-hop-list)
+--rw traffic-class? uint8 | +--rw next-hop-list
+--rw flow-label? inet:ipv6-flow-label | +--rw next-hop* [hop-index]
+--rw source-port | +--rw hop-index uint8
| +--rw (port-range-or-operator)? | +--rw outgoing-interface?
| +--:(range) | | if:interface-ref
| | +--rw lower-port inet:port-number | +--rw (flow-type)?
| | +--rw upper-port inet:port-number | +--:(ip)
| +--:(operator) | | +--rw (operation-type)?
| +--rw operator? operator | | +--:(ip-forwarding)
| +--rw port inet:port-number | | | +--rw next-hop-address?
+--rw destination-port | | | inet:ip-address
| +--rw (port-range-or-operator)? | | +--:(mpls-over-ip-
| +--:(range) | | | encapsulation)
| | +--rw lower-port inet:port-number | | +--rw src-ip-address?
| | +--rw upper-port inet:port-number | | | inet:ip-address
| +--:(operator) | | +--rw dest-ip-address?
| +--rw operator? operator | | | inet:ip-address
| +--rw port inet:port-number | | +--rw next-header?
+--rw ipsec-spi? ipsec-spi | | | uint8
grouping mpls-flow-identification: | | +--rw traffic-class?
+--rw (label-space)? | | | uint8
+--:(context-label-space) | | +--rw flow-label?
| +--rw mpls-label-stack | | | inet:ipv6-flow-label
| +--rw entry* [id] | | +--rw source-port?
| +--rw id uint8 | | | inet:port-number
| +--rw label? rt-types:mpls-label | | +--rw destination-port?
| +--rw ttl? uint8 | | inet:port-number
| +--rw traffic-class? uint8 | +--:(mpls)
+--:(platform-label-space) | +--rw mpls-label-stack
+--rw label? rt-types:mpls-label | +--rw entry* [id]
grouping traffic-specification: | +--rw id uint8
+--rw traffic-specification | +--rw label?
+--rw interval? uint32 | | rt-types:mpls-label
+--rw max-packets-per-interval? uint32 | +--rw ttl? uint8
+--rw max-payload-size? uint32 | +--rw traffic-class? uint8
+--rw average-packets-per-interval? uint32 +--:(detnet-service-aggregation)
+--rw average-payload-size? uint32 | +--rw aggregation-service-sub-layer?
grouping traffic-requirements: | | service-sub-layer-ref
+--rw traffic-requirements | +--rw optional-forwarding-label
+--rw min-bandwidth? uint64 | +--rw mpls-label-stack
+--rw max-latency? uint32 | +--rw entry* [id]
+--rw max-latency-variation? uint32 | +--rw id uint8
+--rw max-loss? uint8 | +--rw label? rt-types:mpls-label
+--rw max-consecutive-loss-tolerance? uint32 | +--rw ttl? uint8
+--rw max-misordering? uint32 | +--rw traffic-class? uint8
grouping data-flow-spec: +--:(detnet-forwarding-aggregation)
+--rw (data-flow-type)? | +--rw aggregation-forwarding-sub-layer?
+--:(tsn-app-flow) | | forwarding-sub-layer-ref
| +--rw source-mac-address? yang:mac-address | +--rw forwarding-label
| +--rw destination-mac-address? yang:mac-address | +--rw mpls-label-stack
| +--rw ethertype? eth:ethertype | +--rw entry* [id]
| +--rw vlan-id? uint16 | +--rw id uint8
| +--rw pcp? uint8 | +--rw label? rt-types:mpls-label
+--:(ip-app-flow) | +--rw ttl? uint8
| +--rw src-ip-prefix? inet:ip-prefix | +--rw traffic-class? uint8
| +--rw dest-ip-prefix? inet:ip-prefix +--:(detnet-service-operation)
| +--rw next-header? uint8 | +--rw service-sub-layer* service-sub-layer-ref
| +--rw traffic-class? uint8 +--:(detnet-forwarding-operation)
| +--rw flow-label? inet:ipv6-flow-label +--rw forwarding-sub-layer*
| +--rw source-port forwarding-sub-layer-ref
| | +--rw (port-range-or-operator)?
| | +--:(range)
| | | +--rw lower-port inet:port-number
| | | +--rw upper-port inet:port-number
| | +--:(operator)
| | +--rw operator? operator
| | +--rw port inet:port-number
| +--rw destination-port
| | +--rw (port-range-or-operator)?
| | +--:(range)
| | | +--rw lower-port inet:port-number
| | | +--rw upper-port inet:port-number
| | +--:(operator)
| | +--rw operator? operator
| | +--rw port inet:port-number
| +--rw ipsec-spi? ipsec-spi
+--:(mpls-app-flow)
+--rw (label-space)?
+--:(context-label-space)
| +--rw mpls-label-stack
| +--rw entry* [id]
| +--rw id uint8
| +--rw label? rt-types:mpls-label
| +--rw ttl? uint8
| +--rw traffic-class? uint8
+--:(platform-label-space)
+--rw label? rt-types:mpls-label
grouping detnet-flow-spec:
+--rw (detnet-flow-type)?
+--:(ip-detnet-flow)
| +--rw src-ip-prefix? inet:ip-prefix
| +--rw dest-ip-prefix? inet:ip-prefix
| +--rw next-header? uint8
| +--rw traffic-class? uint8
| +--rw flow-label? inet:ipv6-flow-label
| +--rw source-port
| | +--rw (port-range-or-operator)?
| | +--:(range)
| | | +--rw lower-port inet:port-number
| | | +--rw upper-port inet:port-number
| | +--:(operator)
| | +--rw operator? operator
| | +--rw port inet:port-number
| +--rw destination-port
| | +--rw (port-range-or-operator)?
| | +--:(range)
| | | +--rw lower-port inet:port-number
| | | +--rw upper-port inet:port-number
| | +--:(operator)
| | +--rw operator? operator
| | +--rw port inet:port-number
| +--rw ipsec-spi? ipsec-spi
+--:(mpls-detnet-flow)
+--rw (label-space)?
+--:(context-label-space)
| +--rw mpls-label-stack
| +--rw entry* [id]
| +--rw id uint8
| +--rw label? rt-types:mpls-label
| +--rw ttl? uint8
| +--rw traffic-class? uint8
+--:(platform-label-space)
+--rw label? rt-types:mpls-label
grouping app-flows-ref:
+--rw app-flow* app-flow-ref
grouping service-sub-layer-ref:
+--rw service-sub-layer* service-sub-layer-ref
grouping forwarding-sub-layer-ref:
+--rw forwarding-sub-layer* forwarding-sub-layer-ref
grouping detnet-header:
+--rw (header-type)?
+--:(detnet-mpls-header)
| +--rw mpls-label-stack
| +--rw entry* [id]
| +--rw id uint8
| +--rw label? rt-types:mpls-label
| +--rw ttl? uint8
| +--rw traffic-class? uint8
+--:(detnet-ip-header)
+--rw src-ip-address? inet:ip-address
+--rw dest-ip-address? inet:ip-address
+--rw next-header? uint8
+--rw traffic-class? uint8
+--rw flow-label? inet:ipv6-flow-label
+--rw source-port? inet:port-number
+--rw destination-port? inet:port-number
grouping detnet-app-next-hop-content:
+--rw (next-hop-options)
+--:(simple-next-hop)
| +--rw outgoing-interface? if:interface-ref
| +--rw (flow-type)?
| +--:(ip)
| | +--rw next-hop-address? inet:ip-address
| +--:(mpls)
| +--rw mpls-label-stack
| +--rw entry* [id]
| +--rw id uint8
| +--rw label? rt-types:mpls-label
| +--rw ttl? uint8
| +--rw traffic-class? uint8
+--:(next-hop-list)
+--rw next-hop-list
+--rw next-hop* [hop-index]
+--rw hop-index uint8
+--rw outgoing-interface? if:interface-ref
+--rw (flow-type)?
+--:(ip)
| +--rw next-hop-address? inet:ip-address
+--:(mpls)
+--rw mpls-label-stack
+--rw entry* [id]
+--rw id uint8
+--rw label? rt-types:mpls-label
+--rw ttl? uint8
+--rw traffic-class? uint8
grouping detnet-forwarding-next-hop-content:
+--rw (next-hop-options)
+--:(simple-next-hop)
| +--rw outgoing-interface? if:interface-ref
| +--rw (flow-type)?
| +--:(ip)
| | +--rw (operation-type)?
| | +--:(ip-forwarding)
| | | +--rw next-hop-address? inet:ip-address
| | +--:(mpls-over-ip-encapsulation)
| | +--rw src-ip-address? inet:ip-address
| | +--rw dest-ip-address? inet:ip-address
| | +--rw next-header? uint8
| | +--rw traffic-class? uint8
| | +--rw flow-label? inet:ipv6-flow-label
| | +--rw source-port? inet:port-number
| | +--rw destination-port? inet:port-number
| +--:(mpls)
| +--rw mpls-label-stack
| +--rw entry* [id]
| +--rw id uint8
| +--rw label? rt-types:mpls-label
| +--rw ttl? uint8
| +--rw traffic-class? uint8
+--:(next-hop-list)
+--rw next-hop-list
+--rw next-hop* [hop-index]
+--rw hop-index uint8
+--rw outgoing-interface? if:interface-ref
+--rw (flow-type)?
+--:(ip)
| +--rw (operation-type)?
| +--:(ip-forwarding)
| | +--rw next-hop-address? inet:ip-address
| +--:(mpls-over-ip-encapsulation)
| +--rw src-ip-address? inet:ip-address
| +--rw dest-ip-address? inet:ip-address
| +--rw next-header? uint8
| +--rw traffic-class? uint8
| +--rw flow-label? inet:ipv6-flow-label
| +--rw source-port? inet:port-number
| +--rw destination-port? inet:port-number
+--:(mpls)
+--rw mpls-label-stack
+--rw entry* [id]
+--rw id uint8
+--rw label? rt-types:mpls-label
+--rw ttl? uint8
+--rw traffic-class? uint8
6. DetNet Configuration YANG Model 7. DetNet Configuration YANG Model
<CODE BEGINS> <CODE BEGINS>
module ietf-detnet-config { module ietf-detnet-config {
namespace "urn:ietf:params:xml:ns:yang:ietf-detnet-config"; namespace "urn:ietf:params:xml:ns:yang:ietf-detnet-config";
prefix "ietf-detnet"; prefix "ietf-detnet";
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix "yang";
} }
skipping to change at page 17, line 19 skipping to change at page 14, line 48
prefix "rt-types"; prefix "rt-types";
} }
import ietf-packet-fields { import ietf-packet-fields {
prefix "packet-fields"; prefix "packet-fields";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
} }
organization "IETF DetNet Working Group"; organization
"IETF DetNet Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/detnet/> "WG Web: <http://tools.ietf.org/wg/detnet/>
WG List: <mailto: detnet@ietf.org> WG List: <mailto: detnet@ietf.org>
WG Chair: Lou Berger WG Chair: Lou Berger
<mailto:lberger@labn.net> <mailto:lberger@labn.net>
Janos Farkas Janos Farkas
<mailto:janos.farkas@ericsson.com> <mailto:janos.farkas@ericsson.com>
Editor: Xuesong Geng Editor: Xuesong Geng
<mailto:gengxuesong@huawei.com> <mailto:gengxuesong@huawei.com>
Editor: Mach Chen Editor: Mach Chen
<mailto:mach.chen@huawei.com> <mailto:mach.chen@huawei.com>
Editor: Yeoncheol Ryoo Editor: Yeoncheol Ryoo
<mailto:dbduscjf@etri.re.kr>"; <mailto:dbduscjf@etri.re.kr>
Editor: Don Fedyk Editor: Don Fedyk
<mailto:dfedyk@labn.net>"; <mailto:dfedyk@labn.net>;
Editor: Zhenqiang Li
<mailto:lizhenqiang@chinamobile.com>
Editor: Reshad Rahman Editor: Reshad Rahman
<mailto:rrahman@cisco.com> <mailto:rrahman@cisco.com>
Editor: Zhenqiang Li
<mailto:lizhenqiang@chinamobile.com>";
description description
"This YANG module describes the parameters needed "This YANG module describes the parameters needed
for DetNet flow configuration and flow status for DetNet flow configuration and flow status
reporting";
reporting"; revision 2020-03-04 {
description
"initial revision";
reference
"RFC XXXX: draft-ietf-detnet-yang-02";
}
revision 2020-07-13 { identity status {
description "initial revision"; description
reference "RFC XXXX: draft-ietf-detnet-yang-02"; "Base identity from which all application-status
actions are derived";
}
identity none {
base status;
description
"Application no ingress/egress";
reference
"draft-ietf-detnet-flow-information-model-06 Section 5.8";
}
identity ready {
base status;
description
"Application ingress/egress ready";
reference
"draft-ietf-detnet-flow-information-model-06 Section 5.8";
}
identity failed {
base status;
description
"Application ingres/egresss failed";
reference
"draft-ietf-detnet-flow-information-model-06 Section 5.8";
}
identity out-of-service {
base status;
description
"Application Administratively blocked";
reference
"draft-ietf-detnet-flow-information-model-06 Section 5.8";
}
identity partial-failed {
base status;
description
"Application One or more Egress ready, and one or more Egress
failed. The DetNet flow can be used if the Ingress is
Ready.";
reference
"draft-ietf-detnet-flow-information-model-06 Section 5.8";
} }
typedef app-flow-ref { typedef app-flow-ref {
type leafref { type leafref {
path "/ietf-detnet:detnet" path "/ietf-detnet:detnet"
+ "/ietf-detnet:app-flows" + "/ietf-detnet:app-flows"
+ "/ietf-detnet:app-flow" + "/ietf-detnet:app-flow"
+ "/ietf-detnet:name"; + "/ietf-detnet:name";
} }
} }
skipping to change at page 18, line 39 skipping to change at page 17, line 21
typedef forwarding-sub-layer-ref { typedef forwarding-sub-layer-ref {
type leafref { type leafref {
path "/ietf-detnet:detnet" path "/ietf-detnet:detnet"
+ "/ietf-detnet:forwarding-sub-layer" + "/ietf-detnet:forwarding-sub-layer"
+ "/ietf-detnet:forwarding-sub-layer-list" + "/ietf-detnet:forwarding-sub-layer-list"
+ "/ietf-detnet:name"; + "/ietf-detnet:name";
} }
} }
typedef sub-network-ref { typedef aggregation-grp-ref {
type leafref { type leafref {
path "/ietf-detnet:detnet" path "/ietf-detnet:detnet"
+ "/ietf-detnet:sub-network" + "/ietf-detnet:service-aggregation-group"
+ "/ietf-detnet:sub-network-list" + "/ietf-detnet:group-name";
+ "/ietf-detnet:name"; }
}
typedef traffic-profile-ref {
type leafref {
path "/ietf-detnet:detnet"
+ "/ietf-detnet:traffic-profile"
+ "/ietf-detnet:profile-number";
} }
} }
typedef ipsec-spi { typedef ipsec-spi {
type uint32 { type uint32 {
range "1..max"; range "1..max";
} }
description description
"SPI"; "SPI";
} }
skipping to change at page 20, line 4 skipping to change at page 18, line 42
} }
enum pop-impose-and-forward { enum pop-impose-and-forward {
description description
"Operation pop incoming label, impose one or more "Operation pop incoming label, impose one or more
outgoing label(s) and forward to next-hop"; outgoing label(s) and forward to next-hop";
} }
enum swap-and-forward { enum swap-and-forward {
description description
"Operation swap incoming label, with outgoing label and "Operation swap incoming label, with outgoing label and
forward to next-hop"; forward to next-hop";
} }
enum pop-and-lookup { enum pop-and-lookup {
description description
"Operation pop incoming label and perform a lookup"; "Operation pop incoming label and perform a lookup";
} }
} }
description "MPLS operations types"; description
"MPLS operations types";
} }
typedef service-protection-type { typedef service-protection-type {
type enumeration { type enumeration {
enum none { enum none {
description description
"no service protection provide"; "no service protection provide";
} }
enum replication { enum replication {
description description
"A Packet Replication Function (PRF) replicates "A Packet Replication Function (PRF) replicates
skipping to change at page 21, line 33 skipping to change at page 20, line 25
enum generate-by-detnet-flow { enum generate-by-detnet-flow {
description description
"Generate the sequence number by DetNet flow"; "Generate the sequence number by DetNet flow";
} }
} }
} }
typedef sequence-number-field { typedef sequence-number-field {
type enumeration { type enumeration {
enum zero-sn { enum zero-sn {
description "there is no DetNet sequence number field."; description
"there is no DetNet sequence number field.";
} }
enum short-sn { enum short-sn {
description "there is 16bit DetNet sequence number field";
value 16; value 16;
description
"there is 16bit DetNet sequence number field";
} }
enum long-sn { enum long-sn {
description "there is 28bit DetNet sequence number field";
value 28; value 28;
description
"there is 28bit DetNet sequence number field";
} }
} }
} }
identity status { typedef aggregation-group {
description type string;
"Base identity from which all application-status
actions are derived";
}
identity none {
base "status";
description
"Application no ingress/egress";
reference
"draft-ietf-detnet-flow-information-model-06 Section 5.8";
}
identity ready {
base "status";
description
"Application ingress/egress ready";
reference
"draft-ietf-detnet-flow-information-model-06 Section 5.8";
}
identity failed {
base "status";
description
"Application ingres/egresss failed";
reference
"draft-ietf-detnet-flow-information-model-06 Section 5.8";
}
identity out-of-service {
base "status";
description
"Application Administratively blocked";
reference
"draft-ietf-detnet-flow-information-model-06 Section 5.8";
}
identity partial-failed {
base "status";
description description
"Application One or more Egress ready, and one or more Egress "The name of the aggregation group";
failed. The DetNet flow can be used if the Ingress is
Ready.";
reference
"draft-ietf-detnet-flow-information-model-06 Section 5.8";
} }
grouping ip-header { grouping ip-header {
description description
"The IPv4/IPv6 packet header information"; "The IPv4/IPv6 packet header information";
leaf src-ip-address { leaf src-ip-address {
type inet:ip-address; type inet:ip-address;
description description
"The source IP address of the header"; "The source IP address of the header";
} }
skipping to change at page 23, line 6 skipping to change at page 21, line 7
} }
grouping ip-header { grouping ip-header {
description description
"The IPv4/IPv6 packet header information"; "The IPv4/IPv6 packet header information";
leaf src-ip-address { leaf src-ip-address {
type inet:ip-address; type inet:ip-address;
description description
"The source IP address of the header"; "The source IP address of the header";
} }
leaf dest-ip-address { leaf dest-ip-address {
type inet:ip-address; type inet:ip-address;
description description
"The destination IP address of the header"; "The destination IP address of the header";
} }
leaf next-header { leaf next-header {
type uint8; type uint8;
description description
"The next header of the IPv6 header"; "The next header of the IPv6 header";
} }
leaf traffic-class { leaf traffic-class {
type uint8; type uint8;
description description
"The traffic class value of the header"; "The traffic class value of the header";
} }
leaf flow-label { leaf flow-label {
type inet:ipv6-flow-label; type inet:ipv6-flow-label;
description description
"The flow label value of the header"; "The flow label value of the header";
} }
leaf source-port { leaf source-port {
type inet:port-number; type inet:port-number;
description description
"The source port number"; "The source port number";
} }
leaf destination-port { leaf destination-port {
type inet:port-number; type inet:port-number;
description description
"The destination port number"; "The destination port number";
} }
} }
grouping l2-header { grouping l2-header {
description description
"The Ethernet or TSN packet header information"; "The Ethernet or TSN packet header information";
leaf source-mac-address { leaf source-mac-address {
type yang:mac-address; type yang:mac-address;
description description
"The source MAC address value of the ethernet header"; "The source MAC address value of the ethernet header";
skipping to change at page 23, line 45 skipping to change at page 22, line 4
} }
} }
grouping l2-header { grouping l2-header {
description description
"The Ethernet or TSN packet header information"; "The Ethernet or TSN packet header information";
leaf source-mac-address { leaf source-mac-address {
type yang:mac-address; type yang:mac-address;
description description
"The source MAC address value of the ethernet header"; "The source MAC address value of the ethernet header";
} }
leaf destination-mac-address { leaf destination-mac-address {
type yang:mac-address; type yang:mac-address;
description description
"The destination MAC address value of the ethernet header"; "The destination MAC address value of the ethernet header";
} }
leaf ethertype { leaf ethertype {
type eth:ethertype; type eth:ethertype;
description description
"The ethernet packet type value of the ethernet header"; "The ethernet packet type value of the ethernet header";
} }
leaf vlan-id { leaf vlan-id {
type uint16; type uint16;
description description
"The Vlan value of the ethernet header"; "The Vlan value of the ethernet header";
} }
leaf pcp { leaf pcp {
type uint8; type uint8;
description description
"The priority value of the ethernet header"; "The priority value of the ethernet header";
} }
} }
grouping destination-ip-port-identification { grouping destination-ip-port-identification {
description description
"The TCP/UDP port(source/destination) identification information"; "The TCP/UDP port(source/destination) identification information";
container destination-port { container destination-port {
uses packet-fields:port-range-or-operator; uses packet-fields:port-range-or-operator;
} }
} }
grouping source-ip-port-identification { grouping source-ip-port-identification {
description description
"The TCP/UDP port(source/destination) identification information"; "The TCP/UDP port(source/destination) identification information";
container source-port { container source-port {
uses packet-fields:port-range-or-operator; uses packet-fields:port-range-or-operator;
} }
} }
grouping ip-flow-identification { grouping ip-flow-identification {
description description
"The IPv4/IPv6 packet header identification information"; "The IPv4/IPv6 packet header identification information";
leaf src-ip-prefix { leaf src-ip-prefix {
type inet:ip-prefix; type inet:ip-prefix;
description description
"The source IP address of the header"; "The source IP address of the header";
} }
leaf dest-ip-prefix { leaf dest-ip-prefix {
type inet:ip-prefix; type inet:ip-prefix;
description description
"The destination IP address of the header"; "The destination IP address of the header";
} }
leaf next-header { leaf next-header {
type uint8; type uint8;
description description
"The next header of the IPv6 header"; "The next header of the IPv6 header";
} }
leaf traffic-class { leaf traffic-class {
type uint8; type uint8;
description description
"The traffic class value of the header"; "The traffic class value of the header";
} }
leaf flow-label { leaf flow-label {
type inet:ipv6-flow-label; type inet:ipv6-flow-label;
description description
"The flow label value of the header"; "The flow label value of the header";
} }
uses source-ip-port-identification;
uses destination-ip-port-identification; uses source-ip-port-identification;
uses destination-ip-port-identification;
leaf ipsec-spi { leaf ipsec-spi {
type ipsec-spi; type ipsec-spi;
description "Security parameter index of SA entry"; description
"Security parameter index of SA entry";
} }
} }
grouping mpls-flow-identification { grouping mpls-flow-identification {
description description
"The MPLS packet header identification information"; "The MPLS packet header identification information";
choice label-space { choice label-space {
description ""; description
"";
case context-label-space { case context-label-space {
uses rt-types:mpls-label-stack; uses rt-types:mpls-label-stack;
} }
case platform-label-space { case platform-label-space {
leaf label { leaf label {
type rt-types:mpls-label; type rt-types:mpls-label;
} }
} }
} }
} }
grouping traffic-specification { grouping traffic-specification {
container traffic-specification { container traffic-specification {
description description
"traffic-specification specifies how the Source "traffic-specification specifies how the Source
transmits packets for the flow. This is the transmits packets for the flow. This is the
promise/request of the Source to the network. promise/request of the Source to the network.
The network uses this traffic specification The network uses this traffic specification
to allocate resources and adjust queue to allocate resources and adjust queue
parameters in network nodes."; parameters in network nodes.";
reference reference
"draft-ietf-detnet-flow-information-model"; "draft-ietf-detnet-flow-information-model";
leaf interval { leaf interval {
type uint32; type uint32;
description description
"The period of time in which the traffic "The period of time in which the traffic
specification cannot be exceeded"; specification cannot be exceeded";
} }
leaf max-packets-per-interval{
type uint32; leaf max-packets-per-interval {
description type uint32;
"The maximum number of packets that the description
source will transmit in one Interval."; "The maximum number of packets that the
} source will transmit in one Interval.";
leaf max-payload-size{ }
type uint32;
description leaf max-payload-size {
"The maximum payload size that the source type uint32;
will transmit."; description
} "The maximum payload size that the source
leaf average-packets-per-interval { will transmit.";
type uint32; }
description
"The average number of packets that the leaf average-packets-per-interval {
source will transmit in one Interval"; type uint32;
} description
leaf average-payload-size { "The average number of packets that the
type uint32; source will transmit in one Interval";
description }
"The average payload size that the
source will transmit."; leaf average-payload-size {
} type uint32;
description
"The average payload size that the
source will transmit.";
}
} }
} }
grouping traffic-requirements { grouping traffic-requirements {
container traffic-requirements { container traffic-requirements {
description description
"FlowRequirements: defines the attributes of the App-flow "FlowRequirements: defines the attributes of the App-flow
regarding bandwidth, latency, latency variation, loss, and regarding bandwidth, latency, latency variation, loss, and
misordering tolerance."; misordering tolerance.";
leaf min-bandwidth { leaf min-bandwidth {
type uint64; type uint64;
description description
"MinBandwidth is the minimum bandwidth that has to be "MinBandwidth is the minimum bandwidth that has to be
guaranteed for the DetNet service. MinBandwidth is guaranteed for the DetNet service. MinBandwidth is
specified in octets per second."; specified in octets per second.";
} }
leaf max-latency { leaf max-latency {
type uint32; type uint32;
description description
"MaxLatency is the maximum latency from Ingress to Egress(es) "MaxLatency is the maximum latency from Ingress to Egress(es)
for a single packet of the DetNet flow. MaxLatency is for a single packet of the DetNet flow. MaxLatency is
specified as an integer number of nanoseconds"; specified as an integer number of nanoseconds";
} }
leaf max-latency-variation { leaf max-latency-variation {
type uint32; type uint32;
description description
"MaxLatencyVariation is the difference between the minimum and "MaxLatencyVariation is the difference between the minimum and
the maximum end-to-end one-way latency. MaxLatencyVariation the maximum end-to-end one-way latency. MaxLatencyVariation
is specified as an integer number of nanoseconds."; is specified as an integer number of nanoseconds.";
} }
leaf max-loss { leaf max-loss {
type uint8; type uint8;
description description
"MaxLoss defines the maximum Packet Loss Ratio (PLR) parameter "MaxLoss defines the maximum Packet Loss Ratio (PLR) parameter
for the DetNet service between the Ingress and Egress(es) of for the DetNet service between the Ingress and Egress(es) of
the DetNet domain."; the DetNet domain.";
} }
leaf max-consecutive-loss-tolerance { leaf max-consecutive-loss-tolerance {
type uint32; type uint32;
description description
"Some applications have special loss requirement, such as "Some applications have special loss requirement, such as
MaxConsecutiveLossTolerance. The maximum consecutive loss MaxConsecutiveLossTolerance. The maximum consecutive loss
tolerance parameter describes the maximum number of tolerance parameter describes the maximum number of
consecutive packets whose loss can be tolerated. The maximum consecutive packets whose loss can be tolerated. The maximum
consecutive loss tolerance can be measured for example based consecutive loss tolerance can be measured for example based
on sequence number"; on sequence number";
} }
leaf max-misordering { leaf max-misordering {
type uint32; type uint32;
description description
"MaxMisordering describes the tolerable maximum number of "MaxMisordering describes the tolerable maximum number of
packets that can be received out of order. The maximum packets that can be received out of order. The maximum
allowed misordering can be measured for example based on allowed misordering can be measured for example based on
sequence number. The value zero for the maximum allowed sequence number. The value zero for the maximum allowed
misordering indicates that in order delivery is required, misordering indicates that in order delivery is required,
misordering cannot be tolerated."; misordering cannot be tolerated.";
}
} }
}
} }
grouping data-flow-spec { grouping data-flow-spec {
description "app-flow identification"; description
"app-flow identification";
choice data-flow-type { choice data-flow-type {
case tsn-app-flow { case tsn-app-flow {
uses l2-header; uses l2-header;
} }
case ip-app-flow { case ip-app-flow {
uses ip-flow-identification; uses ip-flow-identification;
} }
case mpls-app-flow { case mpls-app-flow {
uses mpls-flow-identification; uses mpls-flow-identification;
} }
} }
} }
grouping detnet-flow-spec { grouping detnet-flow-spec {
description "detnet-flow identificatioin"; description
"detnet-flow identification";
choice detnet-flow-type { choice detnet-flow-type {
case ip-detnet-flow { case ip-detnet-flow {
uses ip-flow-identification; uses ip-flow-identification;
} }
case mpls-detnet-flow { case mpls-detnet-flow {
uses mpls-flow-identification; uses mpls-flow-identification;
} }
} }
} }
grouping app-flows-ref { grouping app-flows-ref {
description "incoming or outgoing app-flow reference group"; description
"incoming or outgoing app-flow reference group";
leaf-list app-flow { leaf-list app-flow {
type app-flow-ref; type app-flow-ref;
description "List of ingress or egress app-flows"; description
"List of ingress or egress app-flows";
} }
} }
grouping service-sub-layer-ref { grouping service-sub-layer-ref {
description "incoming or outgoing service sub-layer reference group"; description
"incoming or outgoing service sub-layer reference group";
leaf-list service-sub-layer { leaf-list service-sub-layer {
type service-sub-layer-ref; type service-sub-layer-ref;
description description
"List of incoming or outgoing service sub-layer "List of incoming or outgoing service sub-layer
that has to aggregate or disaggregate"; that has to aggregate or disaggregate";
} }
} }
grouping forwarding-sub-layer-ref { grouping forwarding-sub-layer-ref {
description "incoming or outgoing forwarding sub-layer reference group"; description
"incoming or outgoing forwarding sub-layer reference group";
leaf-list forwarding-sub-layer { leaf-list forwarding-sub-layer {
type forwarding-sub-layer-ref; type forwarding-sub-layer-ref;
description description
"List of incoming or outgoing forwarding sub-layer "List of incoming or outgoing forwarding sub-layer
that has to aggregate or disaggregate"; that has to aggregate or disaggregate";
} }
} }
grouping detnet-header { grouping detnet-header {
description "DetNet header info for DetNet encapsulation or swap"; description
choice header-type { "DetNet header info for DetNet encapsulation or swap";
choice header-type {:
case detnet-mpls-header { case detnet-mpls-header {
description description
"MPLS label stack for DetNet MPLS encapsulation or forwarding"; "MPLS label stack for DetNet MPLS encapsulation
for forwarding";
uses rt-types:mpls-label-stack; uses rt-types:mpls-label-stack;
} }
case detnet-ip-header { case detnet-ip-header {
description description
"IPv4/IPv6 packet header for DetNet IP encapsulation"; "IPv4/IPv6 packet header for DetNet IP encapsulation";
uses ip-header; uses ip-header;
} }
} }
} }
grouping aggregation-header {
description
"DetNet aggregation header DetNet encapsulation";
container aggregation-header {
description
"MPLS label stack for DetNet MPLS encapsulation or
forwarding";
uses rt-types:mpls-label-stack;
}
}
grouping detnet-app-next-hop-content { grouping detnet-app-next-hop-content {
description description
"Generic parameters of DetNet next hops."; "Generic parameters of DetNet next hops.";
choice next-hop-options { choice next-hop-options {
mandatory true; mandatory true;
description description
"Options for next hops. "Options for next hops.
It is expected that further cases will be added through It is expected that further cases will be added through
augments from other modules, e.g., for recursive augments from other modules, e.g., for recursive
next hops."; next hops.";
skipping to change at page 29, line 39 skipping to change at page 28, line 43
case simple-next-hop { case simple-next-hop {
description description
"This case represents a simple next hop consisting of the "This case represents a simple next hop consisting of the
next-hop address and/or outgoing interface. next-hop address and/or outgoing interface.
Modules for address families MUST augment this case with a Modules for address families MUST augment this case with a
leaf containing a next-hop address of that address leaf containing a next-hop address of that address
family."; family.";
leaf outgoing-interface { leaf outgoing-interface {
type if:interface-ref; type if:interface-ref;
} }
choice flow-type { choice flow-type {
case ip { case ip {
leaf next-hop-address { leaf next-hop-address {
type inet:ip-address; type inet:ip-address;
} }
} }
case mpls { case mpls {
uses rt-types:mpls-label-stack; uses rt-types:mpls-label-stack;
} }
} }
} }
case next-hop-list { case next-hop-list {
container next-hop-list { container next-hop-list {
description description
"Container for multiple next hops."; "Container for multiple next hops.";
list next-hop { list next-hop {
key "hop-index"; key "hop-index";
description description
"An entry in a next-hop list. "An entry in a next-hop list.
Modules for address families MUST augment this list Modules for address families MUST augment this list
with a leaf containing a next-hop address of that with a leaf containing a next-hop address of that
address family."; address family.";
leaf hop-index { leaf hop-index {
type uint8; type uint8;
description ""; description
"";
} }
leaf outgoing-interface { leaf outgoing-interface {
type if:interface-ref; type if:interface-ref;
} }
choice flow-type { choice flow-type {
case ip { case ip {
leaf next-hop-address { leaf next-hop-address {
type inet:ip-address; type inet:ip-address;
} }
} }
case mpls { case mpls {
uses rt-types:mpls-label-stack; uses rt-types:mpls-label-stack;
} }
} }
} }
} }
} }
} }
} }
skipping to change at page 31, line 41 skipping to change at page 31, line 7
list next-hop { list next-hop {
key "hop-index"; key "hop-index";
description description
"An entry in a next-hop list. "An entry in a next-hop list.
Modules for address families MUST augment this list Modules for address families MUST augment this list
with a leaf containing a next-hop address of that with a leaf containing a next-hop address of that
address family."; address family.";
leaf hop-index { leaf hop-index {
type uint8; type uint8;
description ""; description
"";
} }
leaf outgoing-interface { leaf outgoing-interface {
type if:interface-ref; type if:interface-ref;
} }
choice flow-type { choice flow-type {
case ip { case ip {
choice operation-type { choice operation-type {
case ip-forwarding { case ip-forwarding {
leaf next-hop-address { leaf next-hop-address {
type inet:ip-address; type inet:ip-address;
} }
} }
case mpls-over-ip-encapsulation { case mpls-over-ip-encapsulation {
uses ip-header; uses ip-header;
} }
} }
} }
case mpls { case mpls {
uses rt-types:mpls-label-stack; uses rt-types:mpls-label-stack;
} }
} }
} }
} }
} }
} }
} }
container detnet { container detnet {
list traffic-profile {
key "profile-number";
description
"A traffic profile";
leaf profile-number {
type uint16;
description
"An Aggregation group ID. Zero means the service is not
part of a group";
}
uses traffic-requirements;
uses traffic-specification;
leaf-list member-applications {
type app-flow-ref;
config false;
description
"Applicaions attached to this profile";
}
leaf-list member-services {
type service-sub-layer-ref;
config false;
description
"Services attached to this profile";
}
leaf-list member-groups {
type aggregation-grp-ref;
config false;
description
"Groups attached to this profile";
}
leaf-list member-forwarding-sublayers {
type forwarding-sub-layer-ref;
config false;
description
"Forwarding sub-layer attached to this profile";
}
}
container app-flows { container app-flows {
description description
"The DetNet app-flow configuration"; "The DetNet app-flow configuration";
list app-flow { list app-flow {
key "name"; key "name";
description ""; description
"";
leaf name { leaf name {
type "string"; type "string";
description "The name to identify the DetNet app-flow";
}
leaf app-id {
type uint16;
config false;
description description
"The DetNet Application ID"; "The name to identify the DetNet app-flow";
} }
leaf app-flow-bidir-congruent { leaf app-flow-bidir-congruent {
type boolean; type boolean;
description description
"Defines the data path requirement of the App-flow whether "Defines the data path requirement of the App-flow whether
it must share the same data path and physical path it must share the same data path and physical path
for both directions through the network, for both directions through the network,
e.g., to provide congruent paths in the two directions."; e.g., to provide congruent paths in the two directions.";
} }
leaf outgoing-service { leaf outgoing-service {
type service-sub-layer-ref; type service-sub-layer-ref;
//config false; config false;
description "Binding to this applications outgoing description
service"; "Binding to this applications outgoing
service";
} }
leaf incoming-service { leaf incoming-service {
type service-sub-layer-ref; type service-sub-layer-ref;
//config false; config false;
description "Binding to this applications incoming description
service"; "Binding to this applications incoming
service";
} }
uses traffic-requirements;
uses traffic-specification; leaf traffic-profile {
type traffic-profile-ref;
description
"The Traffic Profile for this group";
}
container ingress { container ingress {
// key "name"; This should be a list for aggregation // key "name"; This should be a list for aggregation
description description
"Ingress DetNet application flows or a compound flow"; "Ingress DetNet application flows or a compound flow";
leaf name { leaf name {
type string; type string;
description description
"Ingress DetNet application"; "Ingress DetNet application";
} }
leaf app-flow-status { leaf app-flow-status {
type identityref { type identityref {
base status; base status;
} }
config false; config false;
description "Status of ingress application flow"; description
"Status of ingress application flow";
} }
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
} }
uses data-flow-spec; uses data-flow-spec;
} //End of app-ingress } //End of app-ingress
container egress { container egress {
description "Route's next-hop attribute."; description
"Route's next-hop attribute.";
// key "name"; This should be a list for aggregation // key "name"; This should be a list for aggregation
leaf name { leaf name {
type string; type string;
description description
"Egress DetNet application"; "Egress DetNet application";
} }
choice application-type { choice application-type {
container ethernet { container ethernet {
leaf ethernet-place-holder { leaf ethernet-place-holder {
type string; type string;
description "Place holder for matching ethernet"; description
"Place holder for matching ethernet";
} }
} }
container ip-mpls { container ip-mpls {
uses detnet-app-next-hop-content; uses detnet-app-next-hop-content;
} }
} }
} }
}
}
list service-aggregation-group {
key "group-name";
description
"A group of services";
leaf group-name {
type aggregation-group;
description
"An Aggregation group name. Empty means the service is not
part of a group";
}
container outgoing {
leaf traffic-profile {
type traffic-profile-ref;
description
"The Traffic Profile for this group";
}
container service-protection {
leaf service-protection-type {
type service-protection-type;
description
"The DetNet service protection type such as PRF, PEF,
PEOF,PERF, and PEORF";
}
leaf sequence-number-length {
type sequence-number-field;
description
"Sequence number filed can choice 0 bit, 16bit, 28 bit
filed";
}
}
uses aggregation-header;
leaf-list services {
type service-sub-layer-ref;
config false;
description
"List of registered services";
}
}
container incoming {
uses aggregation-header;
leaf-list services {
type service-sub-layer-ref;
config false;
description
"List of registered services";
}
} }
} }
container service-sub-layer { container service-sub-layer {
description "The DetNet service sub-layer configuration"; description
"The DetNet service sub-layer configuration";
list service-sub-layer-list { list service-sub-layer-list {
key "name"; key "name";
description ""; description
"";
leaf name { leaf name {
type string; type string;
description "The name of the DetNet service sub-layer";
}
leaf service-id {
type uint16;
config false;
description description
"The DetNet service ID"; "The name of the DetNet service sub-layer";
} }
leaf service-rank { leaf service-rank {
type uint8; type uint8;
description description
"The DetNet rank for this service"; "The DetNet rank for this service";
} }
uses traffic-requirements;
uses traffic-specification; choice service-type {
mandatory true;
container non-grouped {
leaf traffic-profile {
type traffic-profile-ref;
description
"The Traffic Profile for this service";
}
leaf service-operation-type {
type service-operation-type;
}
}
container grouped {
leaf group-ref {
type aggregation-grp-ref;
description
"The aggregation group this service belongs to";
}
}
}
container service-protection { container service-protection {
leaf service-protection-type { leaf service-protection-type {
type service-protection-type; type service-protection-type;
description description
"The DetNet service protection type "The DetNet service protection type such as PRF, PEF,
such as PRF, PEF, PEOF,PERF, and PEORF"; PEOF,PERF, and PEORF";
} }
leaf sequence-number-length { leaf sequence-number-length {
type sequence-number-field; type sequence-number-field;
description description
"sequence number filed can choice 0 bit, 16bit, 28 bit filed"; "Sequence number field can choice 0 bit, 16bit, 28 bit
filed";
} }
} }
leaf service-operation-type { leaf service-operation-type {
type service-operation-type; type service-operation-type;
} }
container incoming { container incoming {
description description
"The DetNet service sub-layer incoming configuration."; "The DetNet service sub-layer incoming configuration.";
choice incoming-options { choice incoming-options {
mandatory true; mandatory true;
description description
""; "";
case ingress-proxy { case ingress-application {
uses app-flows-ref; uses app-flows-ref;
} }
case detnet-service-identification { case detnet-service-identification {
uses detnet-flow-spec; uses detnet-flow-spec;
} }
case aggregated-service {
uses service-sub-layer-ref;
}
case aggregated-forwarding {
uses forwarding-sub-layer-ref;
}
} }
} }
container outgoing { container outgoing {
description description
"The DetNet service sub-layer outgoing configuration."; "The DetNet service sub-layer outgoing configuration.";
choice outgoing-options { choice outgoing-options {
mandatory true; mandatory true;
description description
""; "";
case egress-proxy {
uses app-flows-ref;
}
case detnet-service-outgoing { case detnet-service-outgoing {
//uses detnet-service-next-hop-content; //uses detnet-service-next-hop-content;
list service-outgoing-list { list service-outgoing-list {
key "service-outgoing-index"; key "service-outgoing-index";
leaf service-outgoing-index { leaf service-outgoing-index {
type uint8; type uint8;
} }
uses detnet-header; uses detnet-header;
list next-layer{
list next-layer {
key "index"; key "index";
description "lower-layer info"; description
"lower-layer info";
leaf index { leaf index {
type uint8; type uint8;
} }
leaf forwarding-sub-layer { leaf forwarding-sub-layer {
type forwarding-sub-layer-ref; type forwarding-sub-layer-ref;
} }
} }
} }
} }
case detnet-service-aggregation {
leaf aggregation-service-sub-layer {
type service-sub-layer-ref;
}
container service-label {
uses rt-types:mpls-label-stack;
}
}
case egress-proxy {
uses app-flows-ref;
}
case detnet-service-operation {
uses service-sub-layer-ref;
}
case detnet-forwarding-operation {
uses forwarding-sub-layer-ref;
}
} }
} }
} }
} }
container forwarding-sub-layer { container forwarding-sub-layer {
description "The DetNet forwarding sub-layer configuration"; description
"The DetNet forwarding sub-layer configuration";
list forwarding-sub-layer-list { list forwarding-sub-layer-list {
key "name"; key "name";
description ""; description
"";
leaf name { leaf name {
type string; type string;
description "The name of the DetNet forwarding sub-layer"; description
"The name of the DetNet forwarding sub-layer";
} }
leaf forwarding-id {
type uint16; leaf traffic-profile {
config false; type traffic-profile-ref;
description description
"The DetNet forwarding ID"; "The Traffic Profile for this group";
} }
uses traffic-requirements;
uses traffic-specification;
leaf forwarding-operation-type { leaf forwarding-operation-type {
type forwarding-operations-type; type forwarding-operations-type;
} }
container incoming { container incoming {
description description
"The DetNet forwarding sub-layer incoming configuration."; "The DetNet forwarding sub-layer incoming configuration.";
choice incoming-options { choice incoming-options {
mandatory true; mandatory true;
description description
""; "";
case detnet-service-forwarding { case detnet-service-forwarding {
uses service-sub-layer-ref; leaf-list service-sub-layer {
type service-sub-layer-ref;
config false;
description
"";
}
} }
case detnet-forwarding-identification { case detnet-forwarding-identification {
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
description ""; description
"";
} }
uses detnet-flow-spec; uses detnet-flow-spec;
} }
case aggregated-forwarding {
uses forwarding-sub-layer-ref;
}
} }
} }
container outgoing { container outgoing {
description description
"The DetNet forwarding sub-layer outbound configuration."; "The DetNet forwarding sub-layer outbound configuration.";
choice outgoing-options { choice outgoing-options {
mandatory true; mandatory true;
description description
""; "";
case detnet-forwarding-outgoing {
uses detnet-forwarding-next-hop-content;
}
case detnet-service-aggregation {
leaf aggregation-service-sub-layer {
type service-sub-layer-ref;
}
container optional-forwarding-label {
uses rt-types:mpls-label-stack;
}
}
case detnet-forwarding-aggregation {
leaf aggregation-forwarding-sub-layer {
type forwarding-sub-layer-ref;
}
container forwarding-label {
uses rt-types:mpls-label-stack;
}
}
case detnet-service-operation { case detnet-service-operation {
uses service-sub-layer-ref; uses service-sub-layer-ref;
} }
case detnet-forwarding-outgoing {
uses detnet-forwarding-next-hop-content; case detnet-forwarding-operation {
uses forwarding-sub-layer-ref;
} }
} }
} }
}
}
container sub-network {
description "";
list sub-network-list {
key "name";
description "";
leaf name {
type string;
description "";
}
} }
} }
} }
} }
<CODE ENDS> <CODE ENDS>
8. Open Issues
7. Open Issues
There are some open issues that are still under discussion: There are some open issues that are still under discussion:
o Aggregation. o Aggregation.
o Going along the the updated data plane model. o Going along the the updated data plane model.
o Terminologies. o Terminologies.
These issues will be resolved in the following versions of the draft. These issues will be resolved in the following versions of the draft.
8. IANA Considerations 9. IANA Considerations
This document makes no request of IANA. This document makes no request of IANA.
Note to RFC Editor: this section may be removed on publication as an Note to RFC Editor: this section may be removed on publication as an
RFC. RFC.
9. Security Considerations 10. Security Considerations
<TBD> <TBD>
10. Acknowledgements 11. Acknowledgements
11. References
11.1. Normative References
[I-D.finn-detnet-bounded-latency]
Finn, N., Boudec, J., Mohammadpour, E., Zhang, J., Varga,
B., and J. Farkas, "DetNet Bounded Latency", draft-finn-
detnet-bounded-latency-04 (work in progress), June 2019.
[I-D.ietf-detnet-flow-information-model]
Varga, B., Farkas, J., Cummings, R., Jiang, Y., and D.
Fedyk, "DetNet Flow Information Model", draft-ietf-detnet-
flow-information-model-10 (work in progress), May 2020.
[I-D.ietf-detnet-ip]
Varga, B., Farkas, J., Berger, L., Fedyk, D., and S.
Bryant, "DetNet Data Plane: IP", draft-ietf-detnet-ip-07
(work in progress), July 2020.
[I-D.ietf-detnet-mpls] 12. References
Varga, B., Farkas, J., Berger, L., Malis, A., Bryant, S.,
and J. Korhonen, "DetNet Data Plane: MPLS", draft-ietf-
detnet-mpls-07 (work in progress), June 2020.
[I-D.ietf-detnet-topology-yang] 12.1. Normative References
Geng, X., Chen, M., Li, Z., and R. Rahman, "Deterministic
Networking (DetNet) Topology YANG Model", draft-ietf-
detnet-topology-yang-00 (work in progress), January 2019.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
RFC 6991, DOI 10.17487/RFC6991, July 2013, RFC 6991, DOI 10.17487/RFC6991, July 2013,
<https://www.rfc-editor.org/info/rfc6991>. <https://www.rfc-editor.org/info/rfc6991>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016, RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/info/rfc7950>. <https://www.rfc-editor.org/info/rfc7950>.
[RFC8655] Finn, N., Thubert, P., Varga, B., and J. Farkas, [RFC8655] Finn, N., Thubert, P., Varga, B., and J. Farkas,
"Deterministic Networking Architecture", RFC 8655, "Deterministic Networking Architecture", RFC 8655,
DOI 10.17487/RFC8655, October 2019, DOI 10.17487/RFC8655, October 2019,
<https://www.rfc-editor.org/info/rfc8655>. <https://www.rfc-editor.org/info/rfc8655>.
11.2. Informative References 12.2. Informative References
[I-D.geng-detnet-info-distribution]
Geng, X., Chen, M., Li, Z., Qin, F., and L. Qiang, "IGP-TE
Extensions for DetNet Information Distribution", draft-
geng-detnet-info-distribution-04 (work in progress), July
2019.
[I-D.ietf-detnet-use-cases]
Grossman, E., "Deterministic Networking Use Cases", draft-
ietf-detnet-use-cases-20 (work in progress), December
2018.
[I-D.ietf-teas-yang-te]
Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin,
"A YANG Data Model for Traffic Engineering Tunnels and
Interfaces", draft-ietf-teas-yang-te-23 (work in
progress), March 2020.
[I-D.ietf-teas-yang-te-topo]
Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and
O. Dios, "YANG Data Model for Traffic Engineering (TE)
Topologies", draft-ietf-teas-yang-te-topo-22 (work in
progress), June 2019.
[I-D.thubert-tsvwg-detnet-transport]
Thubert, P., "A Transport Layer for Deterministic
Networks", draft-thubert-tsvwg-detnet-transport-01 (work
in progress), October 2017.
[I-D.varga-detnet-service-model]
Varga, B. and J. Farkas, "DetNet Service Model", draft-
varga-detnet-service-model-02 (work in progress), May
2017.
[IEEE802.1CB]
IEEE, "IEEE, "Frame Replication and Elimination for
Reliability (IEEE Draft P802.1CB)", 2017,
<http://www.ieee802.org/1/files/private/cb-drafts/>.",
2016.
[IEEE802.1Q-2014]
"IEEE, "IEEE Std 802.1Q Bridges and Bridged Networks",
2014, <http://ieeexplore.ieee.org/document/6991462/>.",
2014.
[IEEE802.1Qbu]
IEEE, "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged
Networks - Amendment 26: Frame Preemption", 2016,
<http://ieeexplore.ieee.org/document/7553415/>.", 2016.
[IEEE802.1Qbv]
"IEEE, "IEEE Std 802.1Qbu Bridges and Bridged Networks -
Amendment 25: Enhancements for Scheduled Traffic", 2015,
<http://ieeexplore.ieee.org/document/7572858/>.", 2016.
[IEEE802.1Qcc]
IEEE, "IEEE, "Stream Reservation Protocol (SRP)
Enhancements and Performance Improvements (IEEE Draft
P802.1Qcc)", 2017,
<http://www.ieee802.org/1/files/private/cc-drafts/>.".
[IEEE802.1Qch]
IEEE, "IEEE, "Cyclic Queuing and Forwarding (IEEE Draft
P802.1Qch)", 2017,
<http://www.ieee802.org/1/files/private/ch-drafts/>.",
2016.
[IEEE802.1Qci]
IEEE, "IEEE, "Per-Stream Filtering and Policing (IEEE
Draft P802.1Qci)", 2016,
<http://www.ieee802.org/1/files/private/ci-drafts/>.",
2016.
[RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V.,
and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001,
<https://www.rfc-editor.org/info/rfc3209>.
[RFC4875] Aggarwal, R., Ed., Papadimitriou, D., Ed., and S.
Yasukawa, Ed., "Extensions to Resource Reservation
Protocol - Traffic Engineering (RSVP-TE) for Point-to-
Multipoint TE Label Switched Paths (LSPs)", RFC 4875,
DOI 10.17487/RFC4875, May 2007,
<https://www.rfc-editor.org/info/rfc4875>.
[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., [I-D.ietf-detnet-flow-information-model]
and R. Wilton, "Network Management Datastore Architecture Varga, B., Farkas, J., Cummings, R., Jiang, Y., and D.
(NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, Fedyk, "DetNet Flow Information Model", draft-ietf-detnet-
<https://www.rfc-editor.org/info/rfc8342>. flow-information-model-10 (work in progress), May 2020.
Authors' Addresses Authors' Addresses
Xuesong Geng Xuesong Geng
Huawei Technologies Huawei Technologies
Email: gengxuesong@huawei.com Email: gengxuesong@huawei.com
Mach(Guoyi) Chen Mach(Guoyi) Chen
Huawei Technologies Huawei Technologies
skipping to change at page 41, line 27 skipping to change at page 42, line 34
Yeoncheol Ryoo Yeoncheol Ryoo
ETRI ETRI
Email: dbduscjf@etri.re.kr Email: dbduscjf@etri.re.kr
Don Fedyk Don Fedyk
LabN Consulting, L.L.C. LabN Consulting, L.L.C.
Email: dfedyk@labn.net Email: dfedyk@labn.net
Zhenqiang Li
China Mobile
Email: lizhenqiang@chinamobile.com
Reshad Rahman Reshad Rahman
Cisco Systems Cisco Systems
Email: rrahman@cisco.com Email: rrahman@cisco.com
Zhenqiang Li
China Mobile
Email: lizhenqiang@chinamobile.com
 End of changes. 210 change blocks. 
893 lines changed or deleted 945 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/