contact
" Editor: Don Fedyk dfedyk@labn.net ";
description
"This YANG module describes the parameters needed
for DetNet flow configuration and flow status reporting";
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 ipsec-spi {
type uint32 {
range "1..max";
}
description
"SPI";
}
typedef application-ref {
type leafref {
path "/ietf-detnet:applications/ietf-detnet:app-list"
"/ietf-detnet:name";
}
description
"This type is used by applications ingress and egress to refernce application.";
}
typedef application-ingress-ref {
type leafref {
path "/ietf-detnet:app-ingress"
"/ietf-detnet:name";
}
description
"This type is used by applications to refrence ingress interfaces.";
}
typedef application-egress-ref {
type leafref {
path "/ietf-detnet:app-egress"
"/ietf-detnet:name";
}
description
"This type is used by applications to refrence egress interfaces.";
}
typedef service-ref {
type leafref {
path "/ietf-detnet:services/ietf-detnet:service-list"
"/ietf-detnet:name";
}
description
"This type is used by applications and forwarding sublayers data
models that need to reference a configured service-sub-layer.";
}
typedef fwd-sub-layer-input-ref {
type leafref {
path "/ietf-detnet:fwd-sub-layer-input"
"/ietf-detnet:name";
}
description
"This type is used by applications to reference input interfaces.";
}
typedef fwd-sub-layer-output-ref {
type leafref {
path "/ietf-detnet:fwd-sub-layer-output"
"/ietf-detnet:name";
}
description
"This type is used by applications to reference output interfaces.";
}
// Service protection
identity service-protection-type {
description
"Base identity from which specific
interface types are derived.";
}
leaf service-protection-type {
type identityref {
base service-protection-type;
}
mandatory true;
description
"The type of protection ";
reference
" ";
}
identity no-protection {
base "service-protection-type";
description
"no service protection provided";
}
identity replication {
base "service-protection-type";
description
"A Packet Replication Function (PRF) replicates
DetNet flow packets and forwards them to one or
more next hops in the DetNet domain. The number
of packet copies sent to each next hop is a
DetNet flow specific parameter at the node doing
the replication. PRF can be implemented by an
edge node, a relay node, or an end system";
}
identity elimination {
base "service-protection-type";
description
"A Packet Elimination Function (PEF) eliminates
duplicate copies of packets to prevent excess
packets flooding the network or duplicate
packets being sent out of the DetNet domain.
PEF can be implemented by an edge node, a relay
node, or an end system.";
}
identity ordering {
base "service-protection-type";
description
"A Packet Ordering Function (POF) re-orders
packets within a DetNet flow that are received
out of order. This function can be implemented
by an edge node, a relay node, or an end system.";
}
identity elimination-ordering {
base "service-protection-type";
description
"A combination of PEF and POF that can be
implemented by an edge node, a relay node, or
an end system.";
}
identity elimination-replication {
base "service-protection-type";
description
"A combination of PEF and PRF that can be
implemented by an edge node, a relay node, or
an end system";
}
identity elimination-ordering-replication {
base "service-protection-type";
description
"A combination of PEF, POF and PRF that can be
implemented by an edge node, a relay node, or
an end system";
}
typedef percent {
type uint8 {
range "0 .. 100";
}
description "Percentage";
}
grouping ip-ports {
container source-port {
choice source-port {
container range-or-operator {
uses packet-fields:port-range-or-operator;
description
"Source port definition from range or operator.";
}
description
"Choice of source port definition using range/operator or a
choice to support future 'case' statements, such as one enabling
a group of source ports to be referenced.";
}
description
"Source port definition.";
}
container destination-port {
choice destination-port {
container range-or-operator {
uses packet-fields:port-range-or-operator;
description
"Destination port definition from range or operator.";
}
description
"Choice of destination port definition using range/operator or a
choice to support future 'case' statements, such as one enabling
a group of source ports to be referenced.";
}
description
"Destination port definition.";
}
}
grouping ip-incoming {
description
"The IPv4 packet header identification information";
leaf source {
type inet:ip-prefix;
mandatory true;
description "IP source address prefix";
}
leaf destination {
type inet:ip-prefix;
description "IP destination address prefix";
mandatory true;
}
leaf protocol-next {
type uint8;
mandatory true;
description
"Internet Protocol number. Refers to the protocol of the
payload. In IPv6, this field is known as 'next-header',
and if extension headers are present, the protocol is
present in the 'upper-layer' header.";
reference
"RFC 791: Internet Protocol
RFC 8200: Internet Protocol, Version 6 (IPv6) Specification.";
}
leaf-list dscp {
type uint8 {
range "0 .. 64";
}
description
"The DSCP field of the header";
}
leaf ipv6-flow-label {
type inet:ipv6-flow-label;
description
"The DSCP field of the header";
}
choice l4 {
container tcp {
uses ip-ports;
}
container udp {
uses ip-ports;
}
container ipsec {
leaf ipsec-spi {
type ipsec-spi;
description
"Security parameter index of SA entry.";
}
}
}
} // End of ip-incoming
grouping traffic-specification {
container traffic-specification {
description
"Traffic-specification specifies how the Source
transmits packets for the flow. This is the
promise/request of the Source to the network.
The network uses this traffic specification
to allocate resources and adjust queue
parameters in network nodes.";
reference "draft-ietf-detnet-flow-information-model-06 Section 5.5";
leaf interval {
type uint32;
description
"The period of time in which the traffic
specification cannot be exceeded";
}
leaf max-packets-per-interval{
type uint64;
units "bits";
description
"The maximum number of packets that the
source will transmit in one Interval.";
}
leaf max-payload-size{
type uint32;
description
"The maximum payload size in bytes that the source
will transmit.";
}
/ leaf average-packets-per-interval {
type uint64;
description
"The average number of packets that the
source will transmit in one Interval";
}
leaf average-payload-size {
type uint32;
description
"The average payload size in bytes that the
source will transmit.";
}/
}
}
grouping traffic-requirements {
container traffic-requirements {
description
"FlowRequirements: defines the attributes of the App-flow
regarding bandwidth, latency, latency variation, loss, and
misordering tolerance.";
reference "draft-ietf-detnet-flow-information-model-06 Section 5.9";
leaf min-bandwidth {
type uint64;
description
"MinBandwidth is the minimum bandwidth that has to be
guaranteed for the DetNet service. MinBandwidth is
specified in octets per second.";
}
leaf max-latency {
type uint32;
description
"MaxLatency is the maximum latency from Ingress to Egress(es)
for a single packet of the DetNet flow. MaxLatency is
specified as an integer number of nanoseconds";
}
leaf max-latency-variation {
type uint32;
description
"MaxLatencyVariation is the difference between the minimum and
the maximum end-to-end one-way latency. MaxLatencyVariation
is specified as an integer number of nanoseconds.";
}
leaf max-loss {
type percent;
description
"MaxLoss defines the maximum Packet Loss Ratio (PLR) parameter
for the DetNet service between the Ingress and Egress(es) of
the DetNet domain.";
}
leaf max-consecutive-loss-tolerance {
type uint32;
description
"Some applications have special loss requirement, such as
MaxConsecutiveLossTolerance. The maximum consecutive loss
tolerance parameter describes the maximum number of
consecutive packets whose loss can be tolerated. The maximum
consecutive loss tolerance can be measured for example based
on sequence number";
}
leaf max-misordering {
type uint32;
description
"MaxMisordering describes the tolerable maximum number of
packets that can be received out of order. The maximum
allowed misordering can be measured for example based on
sequence number. The value zero for the maximum allowed
misordering indicates that in order delivery is required,
misordering cannot be tolerated.";
}
}
}
// Copied from ietf-routing
grouping next-hop-state-content {
description
"Generic state parameters of next hops.";
choice next-hop-options {
mandatory true;
description
"Options for next hops.
It is expected that further cases will be added through
augments from other modules, e.g., for recursive
next hops.";
container simple-next-hop {
description
"This case represents a simple next hop consisting of the
next-hop address and/or outgoing interface.
Modules for address families MUST augment this case with a
leaf containing a next-hop address of that address
family.";
leaf outgoing-interface {
type if:interface-ref;
description
"Name of the outgoing interface.";
}
uses rt-types:mpls-label-stack;
}
container special-next-hop {
uses rt:special-next-hop;
}
container next-hop-list {
container next-hop-list {
description
"Container for multiple next hops.";
list next-hop {
key hop-index;
description
"An entry in a next-hop list.
Modules for address families MUST augment this list
with a leaf containing a next-hop address of that
address family.";
leaf hop-index {
type uint8;
description "";
}
leaf outgoing-interface {
type if:interface-ref;
description
"Name of the outgoing interface.";
}
uses mpls:nhlfe-multiple-contents;
}
}
}
}
}
grouping mpls-incoming {
description "";
choice label-space {
description "";
container interface{
description
"MPLS label is associated with non-platform label space,
all of the F-labels and incoming interface information was
used for identification";
uses rt-types:mpls-label-stack;
} //End of non-platform-label-space
container platform {
description
"MPLS label is associated with platform label space, only
the F-label is used for identification";
uses rt-types:mpls-label-stack;
}
}
}
container applications {
description
"DetNet applications";
list app-list {
key "name";
description
"list of the DetNet configurations";
leaf name {
type string;
description
"The name to identify the DetNet configuration";
}
leaf app-id {
type uint16;
config false;
description
"The DetNet service ID";
reference "draft-ietf-detnet-flow-information-model-06 Section 6.1";
}
leaf source-endpoint {
type inet:ip-address;
description
"The DetNet application endpoint source address";
}
leaf-list destination-endpoints {
type inet:ip-address;
description
"The DetNet application endpoint destination address list";
}
leaf app-flow-bidir-congruent {
type boolean;
description
"Defines the data path requirement of the App-flow whether
it must share the same data path and physical path for both
directions through the network, e.g., to provide congruent
paths in the two directions.";
}
leaf service {
type service-ref;
description "Binding to this applications service";
}
leaf-list app-if-ingress {
type application-ingress-ref;
config false;
}
leaf-list app-if-egress {
type application-ingress-ref;
config false;
}
uses traffic-requirements;
uses traffic-specification;
}
} // End of applications
list app-ingress {
key "name";
description
"Ingress DetNet application flows or a compound flow";
leaf name {
type uint8;
description
"Ingress DetNet application";
}
leaf app-flow-status {
type identityref {
base status;
}
config false;
description "Status of ingress application flow";
}
leaf application {
type application-ref;
description "Binding to this application";
}
choice app-traffic-type {
description "Formats supported by applications";
container ip {
description "IP encapsulation information";
list incoming-interface {
key "name";
description
"List of the application interface";
leaf name {
type if:interface-ref;
description
"The name of the interface";
}
uses ip-incoming;
}
}
container mpls {
uses mpls-incoming;
} //End of mpls
} //End of
} //End of app-ingress
list app-egress {
key "name";
description
"Ingress DetNet application flows or a compound flow";
leaf name {
type uint8;
description
"Ingress DetNet application";
}
leaf app-flow-status {
type identityref {
base status;
}
config false;
description "Status of egress application flows";
}
leaf application {
type application-ref;
description "Binding to this application";
}
container next-hop {
description
"Route's next-hop attribute.";
uses next-hop-state-content;
}
} // End of app-egress
container services {
description
"DetNet services";
list service-list {
key "name";
description
"list of the DetNet configurations";
leaf name {
type string;
description
"The name to identify the DetNet configuration";
}
leaf service-id {
type uint16;
config false;
description
"The DetNet service ID";
}
leaf service-rank {
type uint8;
description
"The DetNet rank for this service";
}
leaf-list forward-sublayer-input {
type fwd-sub-layer-input-ref;
config false;
}
leaf-list forward-sublayer-output {
type fwd-sub-layer-output-ref;
config false;
}
leaf service-protection-type {
type identityref {
base service-protection-type;
}
description
"The DetNet service protection type such as PRF, PEF, PEOF,
PERF, and PEORF";
}
leaf sequence_number_length {
type uint8 {
range "0 | 16 | 28";
}
default 0;
description
"When the sequence number field length is 16 or 28 bits for a
flow, the sequence number MUST be incremented by one for each
new app-flow packet sent. When the field length is 16 bits,
d-CW bits 4 to 15 MUST be set to zero (0).";
}
uses traffic-requirements;
uses traffic-specification;
} // End of service-list
} // End of services
list fwd-sub-layer-input {
key "name";
description
"Incoming DetNet member flows or a compound flow
for receiving a packet from a port";
leaf name {
type uint8;
description
"Incoming DetNet sub-layer name";
}
leaf service {
type service-ref;
description "Binding to this sublayer service";
}
choice detnet-forwarding-type {
description "Traffic type";
container ip {
description "IP encapsulation information";
list incoming-interface {
key "name";
description
"List of the forwarding sublayer interface";
leaf name {
type if:interface-ref;
description
"The name of the interface";
}
uses ip-incoming;
}
}
container mpls {
uses mpls-incoming;
} //End of mpls
} //End of detnet-forwarding-type */
} //End of sub-layer
list fwd-sub-layer-output {
key "name";
description
"Incoming DetNet member flows or a compound flow
for receiving a packet from a port";
leaf name {
type uint8;
description
"Outgoing DetNet sub-layer index";
}
leaf service {
type service-ref;
description "Binding to this sublayer service";
}
container next-hop {
description
"IPv4 packet header encapsulation information";
uses next-hop-state-content;
}
} // End of out-segments
} // End of ietf-detnet-flow
module ietf-detnet-flow { namespace "urn:ietf:params:xml:ns:yang:ietf-detnet-flow"; prefix "ietf-detnet";
import ietf-inet-types{ prefix "inet"; }
import ietf-routing-types { prefix "rt-types"; }
import ietf-interfaces { prefix "if"; }
import ietf-routing { prefix "rt"; }
import ietf-mpls { prefix "mpls"; }
import ietf-packet-fields { prefix "packet-fields"; }
organization "IETF DetNet Working Group";
contact " Editor: Don Fedyk dfedyk@labn.net ";
description "This YANG module describes the parameters needed for DetNet flow configuration and flow status reporting";
revision 2020-02-07 { description "initial revision"; reference "RFC XXXX: draft-ietf-detnet-flow-information-model-06"; }
identity status { description "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 ipsec-spi { type uint32 { range "1..max"; } description "SPI"; }
typedef application-ref { type leafref { path "/ietf-detnet:applications/ietf-detnet:app-list"
"/ietf-detnet:name"; } description "This type is used by applications to refrence ingress interfaces."; }
typedef application-egress-ref { type leafref { path "/ietf-detnet:app-egress"
"/ietf-detnet:name"; } description "This type is used by applications to refrence egress interfaces."; }
typedef service-ref { type leafref { path "/ietf-detnet:services/ietf-detnet:service-list"
"/ietf-detnet:name"; } description "This type is used by applications and forwarding sublayers data models that need to reference a configured service-sub-layer."; }
typedef fwd-sub-layer-input-ref { type leafref { path "/ietf-detnet:fwd-sub-layer-input"
"/ietf-detnet:name"; } description "This type is used by applications to reference input interfaces."; }
typedef fwd-sub-layer-output-ref { type leafref { path "/ietf-detnet:fwd-sub-layer-output"
// Service protection identity service-protection-type { description "Base identity from which specific interface types are derived."; } leaf service-protection-type { type identityref { base service-protection-type; } mandatory true; description "The type of protection "; reference " "; }
identity no-protection { base "service-protection-type"; description "no service protection provided"; }
identity replication { base "service-protection-type"; description "A Packet Replication Function (PRF) replicates DetNet flow packets and forwards them to one or more next hops in the DetNet domain. The number of packet copies sent to each next hop is a DetNet flow specific parameter at the node doing the replication. PRF can be implemented by an edge node, a relay node, or an end system"; }
identity elimination { base "service-protection-type"; description "A Packet Elimination Function (PEF) eliminates duplicate copies of packets to prevent excess packets flooding the network or duplicate packets being sent out of the DetNet domain. PEF can be implemented by an edge node, a relay node, or an end system."; }
identity ordering { base "service-protection-type"; description "A Packet Ordering Function (POF) re-orders packets within a DetNet flow that are received out of order. This function can be implemented by an edge node, a relay node, or an end system."; }
identity elimination-ordering { base "service-protection-type"; description "A combination of PEF and POF that can be implemented by an edge node, a relay node, or an end system."; }
identity elimination-replication { base "service-protection-type"; description "A combination of PEF and PRF that can be implemented by an edge node, a relay node, or an end system";
}
identity elimination-ordering-replication { base "service-protection-type"; description "A combination of PEF, POF and PRF that can be implemented by an edge node, a relay node, or an end system"; } typedef percent { type uint8 { range "0 .. 100"; } description "Percentage"; }
grouping ip-ports { container source-port { choice source-port { container range-or-operator { uses packet-fields:port-range-or-operator; description "Source port definition from range or operator."; } description "Choice of source port definition using range/operator or a choice to support future 'case' statements, such as one enabling a group of source ports to be referenced."; } description "Source port definition."; } container destination-port { choice destination-port { container range-or-operator { uses packet-fields:port-range-or-operator; description "Destination port definition from range or operator."; } description "Choice of destination port definition using range/operator or a choice to support future 'case' statements, such as one enabling a group of source ports to be referenced."; } description "Destination port definition."; } }
grouping ip-incoming { description "The IPv4 packet header identification information"; leaf source { type inet:ip-prefix; mandatory true; description "IP source address prefix"; } leaf destination { type inet:ip-prefix; description "IP destination address prefix"; mandatory true; } leaf protocol-next { type uint8; mandatory true; description "Internet Protocol number. Refers to the protocol of the payload. In IPv6, this field is known as 'next-header', and if extension headers are present, the protocol is present in the 'upper-layer' header."; reference "RFC 791: Internet Protocol RFC 8200: Internet Protocol, Version 6 (IPv6) Specification."; } leaf-list dscp { type uint8 { range "0 .. 64"; } description "The DSCP field of the header"; } leaf ipv6-flow-label { type inet:ipv6-flow-label; description "The DSCP field of the header"; } choice l4 { container tcp { uses ip-ports; } container udp { uses ip-ports; } container ipsec { leaf ipsec-spi { type ipsec-spi; description "Security parameter index of SA entry."; } } } } // End of ip-incoming
grouping traffic-specification { container traffic-specification { description "Traffic-specification specifies how the Source transmits packets for the flow. This is the promise/request of the Source to the network. The network uses this traffic specification to allocate resources and adjust queue parameters in network nodes."; reference "draft-ietf-detnet-flow-information-model-06 Section 5.5"; leaf interval { type uint32; description "The period of time in which the traffic specification cannot be exceeded"; } leaf max-packets-per-interval{ type uint64; units "bits"; description "The maximum number of packets that the source will transmit in one Interval."; } leaf max-payload-size{ type uint32; description "The maximum payload size in bytes that the source will transmit."; } / leaf average-packets-per-interval { type uint64; description "The average number of packets that the source will transmit in one Interval"; } leaf average-payload-size { type uint32; description "The average payload size in bytes that the source will transmit."; }/ } } grouping traffic-requirements { container traffic-requirements { description "FlowRequirements: defines the attributes of the App-flow regarding bandwidth, latency, latency variation, loss, and misordering tolerance."; reference "draft-ietf-detnet-flow-information-model-06 Section 5.9"; leaf min-bandwidth { type uint64; description "MinBandwidth is the minimum bandwidth that has to be guaranteed for the DetNet service. MinBandwidth is specified in octets per second."; } leaf max-latency { type uint32; description "MaxLatency is the maximum latency from Ingress to Egress(es) for a single packet of the DetNet flow. MaxLatency is specified as an integer number of nanoseconds"; } leaf max-latency-variation { type uint32; description "MaxLatencyVariation is the difference between the minimum and the maximum end-to-end one-way latency. MaxLatencyVariation is specified as an integer number of nanoseconds."; } leaf max-loss { type percent; description "MaxLoss defines the maximum Packet Loss Ratio (PLR) parameter for the DetNet service between the Ingress and Egress(es) of the DetNet domain."; } leaf max-consecutive-loss-tolerance { type uint32; description "Some applications have special loss requirement, such as MaxConsecutiveLossTolerance. The maximum consecutive loss tolerance parameter describes the maximum number of consecutive packets whose loss can be tolerated. The maximum consecutive loss tolerance can be measured for example based on sequence number"; } leaf max-misordering { type uint32; description "MaxMisordering describes the tolerable maximum number of packets that can be received out of order. The maximum allowed misordering can be measured for example based on sequence number. The value zero for the maximum allowed misordering indicates that in order delivery is required, misordering cannot be tolerated."; } } }
// Copied from ietf-routing grouping next-hop-state-content { description "Generic state parameters of next hops."; choice next-hop-options { mandatory true; description "Options for next hops.
}
grouping mpls-incoming { description ""; choice label-space { description ""; container interface{ description "MPLS label is associated with non-platform label space, all of the F-labels and incoming interface information was used for identification"; uses rt-types:mpls-label-stack; } //End of non-platform-label-space container platform { description "MPLS label is associated with platform label space, only the F-label is used for identification"; uses rt-types:mpls-label-stack; } } }
container applications { description "DetNet applications"; list app-list { key "name"; description "list of the DetNet configurations"; leaf name { type string; description "The name to identify the DetNet configuration"; } leaf app-id { type uint16; config false; description "The DetNet service ID"; reference "draft-ietf-detnet-flow-information-model-06 Section 6.1"; } leaf source-endpoint { type inet:ip-address; description "The DetNet application endpoint source address"; } leaf-list destination-endpoints { type inet:ip-address; description "The DetNet application endpoint destination address list"; } leaf app-flow-bidir-congruent { type boolean; description "Defines the data path requirement of the App-flow whether it must share the same data path and physical path for both directions through the network, e.g., to provide congruent paths in the two directions."; } leaf service { type service-ref; description "Binding to this applications service"; } leaf-list app-if-ingress { type application-ingress-ref; config false; } leaf-list app-if-egress { type application-ingress-ref; config false; } uses traffic-requirements; uses traffic-specification; } } // End of applications list app-ingress { key "name"; description "Ingress DetNet application flows or a compound flow"; leaf name { type uint8; description "Ingress DetNet application"; } leaf app-flow-status { type identityref { base status; } config false; description "Status of ingress application flow"; } leaf application { type application-ref; description "Binding to this application"; } choice app-traffic-type { description "Formats supported by applications"; container ip { description "IP encapsulation information"; list incoming-interface { key "name"; description "List of the application interface"; leaf name { type if:interface-ref; description "The name of the interface"; } uses ip-incoming; } } container mpls { uses mpls-incoming; } //End of mpls } //End of } //End of app-ingress list app-egress { key "name"; description "Ingress DetNet application flows or a compound flow"; leaf name { type uint8; description "Ingress DetNet application"; } leaf app-flow-status { type identityref { base status; } config false; description "Status of egress application flows"; } leaf application { type application-ref; description "Binding to this application"; } container next-hop { description "Route's next-hop attribute."; uses next-hop-state-content; } } // End of app-egress container services { description "DetNet services"; list service-list { key "name"; description "list of the DetNet configurations"; leaf name { type string; description "The name to identify the DetNet configuration"; } leaf service-id { type uint16; config false; description "The DetNet service ID"; } leaf service-rank { type uint8; description "The DetNet rank for this service"; } leaf-list forward-sublayer-input { type fwd-sub-layer-input-ref; config false; } leaf-list forward-sublayer-output { type fwd-sub-layer-output-ref; config false; } leaf service-protection-type { type identityref { base service-protection-type; } description "The DetNet service protection type such as PRF, PEF, PEOF, PERF, and PEORF"; } leaf sequence_number_length { type uint8 { range "0 | 16 | 28"; } default 0; description "When the sequence number field length is 16 or 28 bits for a flow, the sequence number MUST be incremented by one for each new app-flow packet sent. When the field length is 16 bits, d-CW bits 4 to 15 MUST be set to zero (0)."; } uses traffic-requirements; uses traffic-specification; } // End of service-list
} // End of services
list fwd-sub-layer-input { key "name"; description "Incoming DetNet member flows or a compound flow for receiving a packet from a port"; leaf name { type uint8; description "Incoming DetNet sub-layer name"; } leaf service { type service-ref; description "Binding to this sublayer service"; } choice detnet-forwarding-type { description "Traffic type"; container ip { description "IP encapsulation information"; list incoming-interface { key "name"; description "List of the forwarding sublayer interface"; leaf name { type if:interface-ref; description "The name of the interface"; } uses ip-incoming; } } container mpls { uses mpls-incoming;
} //End of sub-layer
list fwd-sub-layer-output { key "name"; description "Incoming DetNet member flows or a compound flow for receiving a packet from a port"; leaf name { type uint8; description "Outgoing DetNet sub-layer index"; } leaf service { type service-ref; description "Binding to this sublayer service"; } container next-hop { description "IPv4 packet header encapsulation information"; uses next-hop-state-content; } } // End of out-segments } // End of ietf-detnet-flow