draft-ietf-detnet-yang-10.txt   draft-ietf-detnet-yang-11.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: August 22, 2021 Y. Ryoo Expires: August 23, 2021 Y. Ryoo
ETRI ETRI
D. Fedyk D. Fedyk
LabN Consulting, L.L.C. LabN Consulting, L.L.C.
R. Rahman R. Rahman
Individual Individual
Z. Li Z. Li
China Mobile China Mobile
February 18, 2021 February 19, 2021
Deterministic Networking (DetNet) YANG Model Deterministic Networking (DetNet) YANG Model
draft-ietf-detnet-yang-10 draft-ietf-detnet-yang-11
Abstract Abstract
This document contains the specification for the Deterministic This document contains the specification for the Deterministic
Networking YANG Model for configuration and operational data for Networking YANG Model for configuration and operational data for
DetNet Flows. The model allows for provisioning of end-to-end DetNet DetNet Flows. The model allows for provisioning of end-to-end DetNet
service along the path without dependency on any signaling protocol. service along the path without dependency on any signaling protocol.
It also specifies operational status for flows. It also specifies operational status for flows.
The YANG module defined in this document conforms to the Network The YANG module defined in this document conforms to the Network
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 August 22, 2021. This Internet-Draft will expire on August 23, 2021.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 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 33 skipping to change at page 2, line 33
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. DetNet YANG Module . . . . . . . . . . . . . . . . . . . . . 3 3. DetNet YANG Module . . . . . . . . . . . . . . . . . . . . . 3
3.1. DetNet Application Flow YANG Attributes . . . . . . . . . 3 3.1. DetNet Application Flow YANG Attributes . . . . . . . . . 3
3.2. DetNet Service Sub-layer YANG Attributes . . . . . . . . 3 3.2. DetNet Service Sub-layer YANG Attributes . . . . . . . . 3
3.3. DetNet Forwarding Sub-layer YANG Attributes . . . . . . . 4 3.3. DetNet Forwarding Sub-layer YANG Attributes . . . . . . . 4
4. DetNet Flow Aggregation . . . . . . . . . . . . . . . . . . . 4 4. DetNet Flow Aggregation . . . . . . . . . . . . . . . . . . . 4
5. DetNet YANG Structure Considerations . . . . . . . . . . . . 5 5. DetNet YANG Structure Considerations . . . . . . . . . . . . 5
6. DetNet Configuration YANG Structures . . . . . . . . . . . . 6 6. DetNet Configuration YANG Structures . . . . . . . . . . . . 6
7. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 15 7. DetNet Configuration YANG Model . . . . . . . . . . . . . . . 15
8. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 41 8. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 44
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 44
10. Security Considerations . . . . . . . . . . . . . . . . . . . 42 10. Security Considerations . . . . . . . . . . . . . . . . . . . 44
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 42 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 44
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 42 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 44
12.1. Normative References . . . . . . . . . . . . . . . . . . 42 12.1. Normative References . . . . . . . . . . . . . . . . . . 44
12.2. Informative References . . . . . . . . . . . . . . . . . 42 12.2. Informative References . . . . . . . . . . . . . . . . . 45
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 42 Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 45
A.1. Example JSON Configuration/Operational . . . . . . . . . 43 A.1. Example JSON Configuration/Operational . . . . . . . . . 45
A.2. Example XML Config: Aggregation using a Forwarding A.2. Example XML Config: Aggregation using a Forwarding
Sublayer . . . . . . . . . . . . . . . . . . . . . . . . 47 Sublayer . . . . . . . . . . . . . . . . . . . . . . . . 50
A.3. Example JSON Service Aggregation Configuration . . . . . 51 A.3. Example JSON Service Aggregation Configuration . . . . . 54
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 59
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 16, line 33 skipping to change at page 16, line 33
<mailto:reshad@yahoo.com> <mailto:reshad@yahoo.com>
Editor: Mach Chen Editor: Mach Chen
<mailto:mach.chen@huawei.com> <mailto:mach.chen@huawei.com>
Editor: Zhenqiang Li Editor: Zhenqiang Li
<mailto:lizhenqiang@chinamobile.com>"; <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.
Copyright (c) 2021 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to
the license terms contained in, the Simplified BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
for full legal notices.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here. ";
revision 2021-02-17 { revision 2021-02-17 {
description description
"initial revision"; "initial revision";
reference reference
"RFC XXXX: draft-ietf-detnet-yang-10"; "RFC XXXX: draft-ietf-detnet-yang-10";
} }
identity app-status { identity app-status {
description description
skipping to change at page 17, line 51 skipping to change at page 18, line 24
"draft-ietf-detnet-flow-information-model Section 5.8"; "draft-ietf-detnet-flow-information-model 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";
} }
description
"This is an Application Reference.";
} }
typedef service-sub-layer-ref { typedef service-sub-layer-ref {
type leafref { type leafref {
path "/ietf-detnet:detnet" path "/ietf-detnet:detnet"
+ "/ietf-detnet:service-sub-layer" + "/ietf-detnet:service-sub-layer"
+ "/ietf-detnet:service-sub-layer-list" + "/ietf-detnet:service-sub-layer-list"
+ "/ietf-detnet:name"; + "/ietf-detnet:name";
} }
description
"This is a Service sub-layer Reference.";
} }
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";
} }
description
"This is a Forwarding sub-layer Reference.";
} }
typedef traffic-profile-ref { typedef traffic-profile-ref {
type leafref { type leafref {
path "/ietf-detnet:detnet" path "/ietf-detnet:detnet"
+ "/ietf-detnet:traffic-profile" + "/ietf-detnet:traffic-profile"
+ "/ietf-detnet:profile-name"; + "/ietf-detnet:profile-name";
} }
description
"This is a Traffic Profile Reference.";
} }
typedef ipsec-spi { typedef ipsec-spi {
type uint32 { type uint32 {
range "1..max"; range "1..max";
} }
description description
"IPsec Security Parameters Index."; "IPsec Security Parameters Index.";
reference reference
"IETF RFC 6071"; "IETF RFC 6071";
} }
typedef service-operation-type { typedef service-operation-type {
type enumeration { type enumeration {
enum service-initiation { enum service-initiation {
description description
"This is an initiating service sub-layer encapsulation. "; "This is an initiating service sub-layer encapsulation.";
} }
enum service-termination { enum service-termination {
description description
"Operation for DetNet service sub-layer decapsulation."; "Operation for DetNet service sub-layer decapsulation.";
} }
enum service-relay { enum service-relay {
description description
"Operation for DetNet service sub-layer swap."; "Operation for DetNet service sub-layer swap.";
} }
enum non-detnet { enum non-detnet {
skipping to change at page 19, line 33 skipping to change at page 20, line 15
reference reference
" A YANG Data Model for MPLS Base " A YANG Data Model for MPLS Base
draft-ietf-mpls-base-yang."; draft-ietf-mpls-base-yang.";
} }
enum pop-and-forward { enum pop-and-forward {
description description
"This operation pops the incoming label and forwards to "This operation pops the incoming label and forwards to
the next-hop."; the next-hop.";
reference reference
" A YANG Data Model for MPLS Base " A YANG Data Model for MPLS Base
draft-ietf-mpls-base-yang"; draft-ietf-mpls-base-yang.";
} }
enum pop-impose-and-forward { enum pop-impose-and-forward {
description description
"This operation pops the incoming label, imposes one or "This operation pops the incoming label, imposes one or
more outgoing label(s) and forwards to the next-hop."; more outgoing label(s) and forwards to the next-hop.";
reference reference
" A YANG Data Model for MPLS Base " A YANG Data Model for MPLS Base
draft-ietf-mpls-base-yang."; draft-ietf-mpls-base-yang.";
} }
enum swap-and-forward { enum swap-and-forward {
description description
"This operation swaps incoming label, with an outgoing "This operation swaps incoming label, with an outgoing
label and forwards to the next-hop."; label and forwards to the next-hop.";
reference reference
" A YANG Data Model for MPLS Base " A YANG Data Model for MPLS Base
draft-ietf-mpls-base-yang"; draft-ietf-mpls-base-yang.";
} }
enum forward { enum forward {
description description
"This operation forward to next-hop."; "This operation forward to next-hop.";
} }
enum pop-and-lookup { enum pop-and-lookup {
description description
"This operation pops incoming label and performs a "This operation pops incoming label and performs a
lookup."; lookup.";
} }
skipping to change at page 21, line 17 skipping to change at page 21, line 47
description description
"A combination of PEF and PRF that can be implemented by "A combination of PEF and PRF that can be implemented by
an edge node, a relay node, or an end system."; an edge node, a relay node, or an end system.";
} }
enum elimination-ordering-replicaiton { enum elimination-ordering-replicaiton {
description description
"A combination of PEF, POF and PRF that can be implemented "A combination of PEF, POF and PRF that can be implemented
by an edge node, a relay node, or an end system."; by an edge node, a relay node, or an end system.";
} }
} }
description
"This typedef describes the service protection types.";
} }
typedef sequence-number-generation-type { typedef sequence-number-generation-type {
type enumeration { type enumeration {
enum copy-from-app-flow { enum copy-from-app-flow {
description description
"This type means copy the app-flow sequence number to the "This type means copy the app-flow sequence number to the
DetNet-flow."; DetNet-flow.";
} }
enum generate-by-detnet-flow { enum generate-by-detnet-flow {
skipping to change at page 22, line 4 skipping to change at page 22, line 36
enum short-sn { enum short-sn {
value 16; value 16;
description description
"A 16-bit DetNet sequence number field is used."; "A 16-bit DetNet sequence number field is used.";
} }
enum long-sn { enum long-sn {
value 28; value 28;
description description
"A 28-bit DetNet sequence number field is used."; "A 28-bit DetNet sequence number field is used.";
} }
} }
description description
"This type captures the sequence number behavior."; "This type captures the sequence number behavior.";
} }
grouping ip-header { grouping ip-header {
description description
"This grouping captures the IPv4/IPv6 packet header "This grouping captures the IPv4/IPv6 packet header
information. it is modeled after existing fields"; information. it is modeled after existing fields.";
leaf src-ip-address { leaf src-ip-address {
type inet:ip-address; type inet:ip-address;
description description
"The source IP address in the header."; "The source IP address in the header.";
reference reference
"RFC 6021 Common YANG Data Types"; "RFC 6021 Common YANG Data Types";
} }
leaf dest-ip-address { leaf dest-ip-address {
type inet:ip-address; type inet:ip-address;
description description
skipping to change at page 23, line 7 skipping to change at page 23, line 39
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.IPV6 only."; "The flow label value of the header.IPV6 only.";
reference reference
"RFC 6021 Common YANG Data Types"; "RFC 6021 Common YANG Data Types";
} }
leaf source-port { leaf source-port {
type inet:port-number; type inet:port-number;
description description
"The source port number"; "The source port number.";
reference reference
"RFC 6021 Common YANG Data Types"; "RFC 6021 Common YANG Data Types";
} }
leaf destination-port { leaf destination-port {
type inet:port-number; type inet:port-number;
description description
"The destination port number."; "The destination port number.";
reference reference
"RFC 6021 Common YANG Data Types"; "RFC 6021 Common YANG Data Types";
} }
skipping to change at page 23, line 19 skipping to change at page 24, line 4
"RFC 6021 Common YANG Data Types"; "RFC 6021 Common YANG Data Types";
} }
leaf destination-port { leaf destination-port {
type inet:port-number; type inet:port-number;
description description
"The destination port number."; "The destination port number.";
reference reference
"RFC 6021 Common YANG Data Types"; "RFC 6021 Common YANG Data Types";
} }
} }
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.";
} }
skipping to change at page 24, line 4 skipping to change at page 24, line 36
reference reference
"IEEE 802.1Qcx-2020."; "IEEE 802.1Qcx-2020.";
} }
leaf pcp { leaf pcp {
type dot1q-types:priority-type; type dot1q-types:priority-type;
description description
"The priority value of the Ethernet header."; "The priority value of the Ethernet header.";
reference reference
"IEEE 802.1Qcx-2020."; "IEEE 802.1Qcx-2020.";
} }
} }
grouping destination-ip-port-id { grouping destination-ip-port-id {
description description
"The TCP/UDP port(source/destination) identification "The TCP/UDP port(source/destination) identification
information."; information.";
container destination-port { container destination-port {
uses packet-fields:port-range-or-operator; uses packet-fields:port-range-or-operator;
description
"This grouping captures the destination port fields.";
} }
} }
grouping source-ip-port-id { grouping source-ip-port-id {
description description
"The TCP/UDP port(source/destination) identification "The TCP/UDP port(source/destination) identification
information."; information.";
container source-port { container source-port {
uses packet-fields:port-range-or-operator; uses packet-fields:port-range-or-operator;
description
"This grouping captures the source port fields.";
} }
} }
grouping ip-flow-id { grouping ip-flow-id {
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 prefix"; "The source IP prefix.";
reference reference
"RFC 6021 Common YANG Data Types"; "RFC 6021 Common YANG Data Types";
} }
leaf dest-ip-prefix { leaf dest-ip-prefix {
type inet:ip-prefix; type inet:ip-prefix;
description description
"The destination IP prefix"; "The destination IP prefix.";
reference reference
"RFC 6021 Common YANG Data Types"; "RFC 6021 Common YANG Data Types";
} }
leaf protocol-next-header { leaf protocol-next-header {
type uint8; type uint8;
description description
"Internet Protocol number. Refers to the protocol of the "Internet Protocol number. Refers to the protocol of the
payload. In IPv6, this field is known as 'next-header', and payload. In IPv6, this field is known as 'next-header', and
if extension headers are present, the protocol is present in if extension headers are present, the protocol is present in
the 'upper-layer' header."; the 'upper-layer' header.";
skipping to change at page 25, line 42 skipping to change at page 26, line 30
"The MPLS packet header identification information."; "The MPLS packet header identification information.";
choice label-space { choice label-space {
description description
"Designates the label space being used."; "Designates the label space being used.";
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;
description
"This is the case for Platform label space.";
} }
} }
} }
} }
grouping data-flow-spec { grouping data-flow-spec {
description description
"app-flow identification"; "app-flow identification.";
choice data-flow-type { choice data-flow-type {
description
"The Application flow type choices.";
container tsn-app-flow { container tsn-app-flow {
uses l2-header; uses l2-header;
description
"The L2 header for application.";
} }
container ip-app-flow { container ip-app-flow {
uses ip-flow-id; uses ip-flow-id;
description
"The IP header for application.";
} }
container mpls-app-flow { container mpls-app-flow {
uses mpls-flow-id; uses mpls-flow-id;
description
"The MPLS header for application.";
} }
} }
} }
grouping detnet-flow-spec { grouping detnet-flow-spec {
description description
"detnet-flow identification."; "detnet-flow identification.";
choice detnet-flow-type { choice detnet-flow-type {
description
"The Detnet flow type choices.";
case ip-detnet-flow { case ip-detnet-flow {
uses ip-flow-id; uses ip-flow-id;
} }
case mpls-detnet-flow { case mpls-detnet-flow {
uses mpls-flow-id; uses mpls-flow-id;
} }
} }
} }
grouping app-flows-group { grouping app-flows-group {
skipping to change at page 27, line 17 skipping to change at page 28, line 17
description description
"List of incoming or outgoing forwarding sub-layers that "List of incoming or outgoing forwarding sub-layers that
have to aggregate or disaggregate."; have to aggregate or disaggregate.";
} }
} }
grouping detnet-header { grouping detnet-header {
description description
"DetNet header info for DetNet encapsulation or swap."; "DetNet header info for DetNet encapsulation or swap.";
choice header-type { choice header-type {
description
"The choice of DetNet header type.";
case detnet-mpls-header { case detnet-mpls-header {
description description
"MPLS label stack for DetNet MPLS encapsulation or "MPLS label stack for DetNet MPLS encapsulation or
forwarding."; 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;
skipping to change at page 27, line 50 skipping to change at page 28, line 52
next hops."; next hops.";
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;
description
"The outgoing interface, if this is a whole interface.";
} }
choice flow-type { choice flow-type {
description
"The flow type choices.";
case ip { case ip {
leaf next-hop-address { leaf next-hop-address {
type inet:ip-address; type inet:ip-address;
description
"The IP next hop case.";
} }
} }
case mpls { case mpls {
uses rt-types:mpls-label-stack; uses rt-types:mpls-label-stack;
description
"The MPLS Label stack next hop case.";
} }
} }
} }
case next-hop-list { case 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. Modules for address "An entry in a next-hop list. Modules for address
skipping to change at page 28, line 36 skipping to change at page 29, line 46
reference the next-hop entry in the next-hop list. reference the next-hop entry in the next-hop list.
The value of this index has no semantic meaning other The value of this index has no semantic meaning other
than for referencing the entry."; than for referencing the entry.";
} }
leaf outgoing-interface { leaf outgoing-interface {
type if:interface-ref; type if:interface-ref;
description description
"Name of the outgoing interface."; "Name of the outgoing interface.";
} }
choice flow-type { choice flow-type {
description
"The flow types supported.";
case ip { case ip {
leaf next-hop-address { leaf next-hop-address {
type inet:ip-address; type inet:ip-address;
description
"This is the IP flow type next hop.";
} }
} }
case mpls { case mpls {
uses rt-types:mpls-label-stack; uses rt-types:mpls-label-stack;
} }
} }
} }
} }
} }
} }
skipping to change at page 29, line 21 skipping to change at page 30, line 35
next hops."; next hops.";
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;
description
"This is the interface as an outgoing type.";
} }
choice flow-type { choice flow-type {
description
"These are the flow type next hop choices.";
case ip { case ip {
choice operation-type { choice operation-type {
description
"This is the IP forwarding operation choices.";
case ip-forwarding { case ip-forwarding {
leaf next-hop-address { leaf next-hop-address {
type inet:ip-address; type inet:ip-address;
description
"This is an IP address as a next hop.";
} }
} }
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;
} }
skipping to change at page 30, line 8 skipping to change at page 31, line 30
"An entry in a next-hop list. Modules for address "An entry in a next-hop list. Modules for address
families MUST augment this list with a leaf containing a families MUST augment this list with a leaf containing a
next-hop address of that address family."; next-hop address of that address family.";
leaf hop-index { leaf hop-index {
type uint8; type uint8;
description description
"The value of the index for a hop."; "The value of the index for a hop.";
} }
leaf outgoing-interface { leaf outgoing-interface {
type if:interface-ref; type if:interface-ref;
description
"This is a whole interface as the next hop.";
} }
choice flow-type { choice flow-type {
description
"These are the flow type next hop choices.";
case ip { case ip {
choice operation-type { choice operation-type {
description
"These are the next hop choices.";
case ip-forwarding { case ip-forwarding {
leaf next-hop-address { leaf next-hop-address {
type inet:ip-address; type inet:ip-address;
description
"This is an IP address as a next hop.";
} }
} }
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 {
description
"The top level DetNet container. This contains
applications, service sub-layers and forwarding sub-layers
as well as the traffic profiles.";
list traffic-profile { list traffic-profile {
key "profile-name"; key "profile-name";
description description
"A traffic profile."; "A traffic profile.";
leaf profile-name { leaf profile-name {
type string; type string;
description description
"An Aggregation group ID. Zero means the service is not "An Aggregation group ID. Zero means the service is not
part of a group."; part of a group.";
} }
skipping to change at page 34, line 43 skipping to change at page 36, line 30
"Status of ingress application flow."; "Status of ingress application flow.";
reference reference
"draft-ietf-detnet-flow-information-model Sections "draft-ietf-detnet-flow-information-model Sections
4.1, 5.8"; 4.1, 5.8";
} }
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
description description
"Interface is used for any service type where a whole "Interface is used for any service type where a whole
interface is mapped to the applications. It may be interface is mapped to the applications. It may be
further filtered by type"; further filtered by type.";
} }
uses data-flow-spec; uses data-flow-spec;
} //End of app-ingress } //End of app-ingress
container egress { container egress {
description description
"Route's next-hop attribute."; "Route's next-hop attribute.";
leaf name { leaf name {
type string; type string;
description description
"Egress DetNet application."; "Egress DetNet application.";
} }
choice application-type { choice application-type {
description
"This is the application type choices.";
container ethernet { container ethernet {
description
"This is TSN unaware traffic that maps to an
interface.";
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
description
"This is an Ethernet or TSN interfaces.";
} }
description
"TSN unaware maps to an interface.";
} }
container ip-mpls { container ip-mpls {
description
"This is IP or MPLS DetNet application types.";
uses detnet-app-next-hop-content; uses detnet-app-next-hop-content;
} }
} }
} }
} }
} }
container service-sub-layer { container service-sub-layer {
description description
"The DetNet service sub-layer configuration."; "The DetNet service sub-layer configuration.";
list service-sub-layer-list { list service-sub-layer-list {
skipping to change at page 35, line 47 skipping to change at page 37, line 41
"The DetNet rank for this service."; "The DetNet rank for this service.";
reference reference
"draft-ietf-detnet-flow-information-model Section 5.7."; "draft-ietf-detnet-flow-information-model Section 5.7.";
} }
leaf traffic-profile { leaf traffic-profile {
type traffic-profile-ref; type traffic-profile-ref;
description description
"The Traffic Profile for this service."; "The Traffic Profile for this service.";
} }
container service-protection { container service-protection {
description
"This is the service protection type an sequence number
options.";
leaf service-protection-type { leaf service-protection-type {
type service-protection-type; type service-protection-type;
description description
"The DetNet service protection type such as PRF, PEF, "The DetNet service protection type such as PRF, PEF,
PEOF,PERF, and PEORF."; PEOF,PERF, and PEORF.";
reference reference
"draft-ietf-detnet-data-plane-framework Section 4.3"; "draft-ietf-detnet-data-plane-framework Section 4.3";
} }
leaf sequence-number-length { leaf sequence-number-length {
type sequence-number-field; type sequence-number-field;
description description
"Sequence number field length can be one of 0 (none), "Sequence number field length can be one of 0 (none),
16-bits or 28-bits."; 16-bits or 28-bits.";
} }
} }
skipping to change at page 36, line 17 skipping to change at page 38, line 12
} }
leaf sequence-number-length { leaf sequence-number-length {
type sequence-number-field; type sequence-number-field;
description description
"Sequence number field length can be one of 0 (none), "Sequence number field length can be one of 0 (none),
16-bits or 28-bits."; 16-bits or 28-bits.";
} }
} }
leaf service-operation-type { leaf service-operation-type {
type service-operation-type; type service-operation-type;
description
"This is the service operation type for this service
sub-layer;";
} }
container incoming-type { container incoming-type {
description description
"The DetNet service sub-layer incoming configuration."; "The DetNet service sub-layer incoming configuration.";
choice incoming-type { choice incoming-type {
mandatory true; mandatory true;
description description
"A service sub-layer may have App flows or other "A service sub-layer may have App flows or other
service sub-layers."; service sub-layers.";
container app-flow { container app-flow {
skipping to change at page 37, line 39 skipping to change at page 39, line 38
forwarding. The service sub-layer swaps the service forwarding. The service sub-layer swaps the service
label when the operation type is service-relay."; label when the operation type is service-relay.";
list service-outgoing-list { list service-outgoing-list {
key "service-outgoing-index"; key "service-outgoing-index";
description description
"List of the outgoing service "List of the outgoing service
that separately for each node that separately for each node
where services will be eliminated."; where services will be eliminated.";
leaf service-outgoing-index { leaf service-outgoing-index {
type uint8; type uint8;
description
"This index allows a list of multiple outgoing
forwarding sub-layers";
} }
uses detnet-header; uses detnet-header;
uses forwarding-sub-layer-group; uses forwarding-sub-layer-group;
} }
} }
container service-sub-layer { container service-sub-layer {
description description
"This service sub-layer is sent to the service "This service sub-layer is sent to the service
sub-layers of the lower layer for service-to-service sub-layers of the lower layer for service-to-service
aggregation at the ingress node or relay node. The aggregation at the ingress node or relay node. The
skipping to change at page 38, line 12 skipping to change at page 40, line 14
Control-Word and S-label when the operation type is Control-Word and S-label when the operation type is
service-initiation, and swaps the S-label when the service-initiation, and swaps the S-label when the
operation type is service-relay."; operation type is service-relay.";
leaf aggregation-service-sub-layer { leaf aggregation-service-sub-layer {
type service-sub-layer-ref; type service-sub-layer-ref;
description description
"reference point of the service-sub-layer "reference point of the service-sub-layer
at which this service will be aggregated."; at which this service will be aggregated.";
} }
container service-label { container service-label {
description
"This is the MPLS service sub-layer label.";
uses rt-types:mpls-label-stack; uses rt-types:mpls-label-stack;
} }
} }
container app-flow { container app-flow {
description description
"This service sub-layer is sent to the app-flow of "This service sub-layer is sent to the app-flow of
the upper layer for egress proxy at the egress node, the upper layer for egress proxy at the egress node,
and decapsulates the DetNet Control-Word and S-label and decapsulates the DetNet Control-Word and S-label
for individual DetNet service. This outgoing type for individual DetNet service. This outgoing type
only can be chosen when the operation type is only can be chosen when the operation type is
skipping to change at page 39, line 22 skipping to change at page 41, line 27
description description
"The name of the DetNet forwarding sub-layer."; "The name of the DetNet forwarding sub-layer.";
} }
leaf traffic-profile { leaf traffic-profile {
type traffic-profile-ref; type traffic-profile-ref;
description description
"The Traffic Profile for this group."; "The Traffic Profile for this group.";
} }
leaf forwarding-operation-type { leaf forwarding-operation-type {
type forwarding-operations-type; type forwarding-operations-type;
description
"This is the forwarding operation types
impose-and-forward, pop-and-forward,
pop-impose-and-forward, forward, pop-and-lookup.";
} }
container incoming-type { container incoming-type {
description description
"The DetNet forwarding sub-layer incoming configuration."; "The DetNet forwarding sub-layer incoming configuration.";
choice incoming-type { choice incoming-type {
mandatory true; mandatory true;
description description
"Cases of incoming types."; "Cases of incoming types.";
container service-sub-layer { container service-sub-layer {
description description
skipping to change at page 40, line 40 skipping to change at page 42, line 48
uses detnet-forwarding-next-hop-content; uses detnet-forwarding-next-hop-content;
} }
container service-aggregation { container service-aggregation {
description description
"This forwarding sub-layer is sent to the service "This forwarding sub-layer is sent to the service
sub-layers of the lower layer for sub-layers of the lower layer for
forwarding-to-service aggregation at the ingress forwarding-to-service aggregation at the ingress
node or relay node."; node or relay node.";
leaf aggregation-service-sub-layer { leaf aggregation-service-sub-layer {
type service-sub-layer-ref; type service-sub-layer-ref;
description
"This is reference to the service sub-layer.";
} }
container optional-forwarding-label { container optional-forwarding-label {
description
"This is the optional forwarding label for service
aggregation.";
uses rt-types:mpls-label-stack; uses rt-types:mpls-label-stack;
} }
} }
container forwarding-sub-layer { container forwarding-sub-layer {
description description
"This forwarding sub-layer is sent to the forwarding "This forwarding sub-layer is sent to the forwarding
sub-layers of the lower layer for sub-layers of the lower layer for
forwarding-to-forwarding aggregation at the ingress forwarding-to-forwarding aggregation at the ingress
node or relay node or transit node."; node or relay node or transit node.";
leaf aggregation-forwarding-sub-layer { leaf aggregation-forwarding-sub-layer {
type forwarding-sub-layer-ref; type forwarding-sub-layer-ref;
description
"This is reference to the forwarding sub-layer.";
} }
container forwarding-label { container forwarding-label {
description
"This is the forwarding label for forwarding
sub-layer aggregation.";
uses rt-types:mpls-label-stack; uses rt-types:mpls-label-stack;
} }
} }
container service-sub-layer { container service-sub-layer {
description description
"This forwarding sub-layer is sent to the service "This forwarding sub-layer is sent to the service
sub-layer of the upper layer and decapsulate the sub-layer of the upper layer and decapsulate the
F-label for DetNet service or service-to-forwarding F-label for DetNet service or service-to-forwarding
disaggregation at the relay node or egress node. disaggregation at the relay node or egress node.
This outgoing type only can be chosen when the This outgoing type only can be chosen when the
 End of changes. 65 change blocks. 
34 lines changed or deleted 144 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/