< draft-vassilev-netmod-network-bridge-01.txt   draft-vassilev-netmod-network-bridge-02.txt >
Network Working Group V. Vassilev Network Working Group V. Vassilev
Internet-Draft Transpacket Internet-Draft Transpacket
Intended status: Standards Track January 7, 2019 Intended status: Standards Track July 5, 2019
Expires: July 11, 2019 Expires: January 6, 2020
A YANG Data Model for Network Bridge Management A YANG Data Model for Network Bridge Management
draft-vassilev-netmod-network-bridge-01 draft-vassilev-netmod-network-bridge-02
Abstract Abstract
This document introduces new YANG model of a network bridge. This document introduces new YANG model of a network bridge.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
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 July 11, 2019. This Internet-Draft will expire on January 6, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 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 20 skipping to change at page 2, line 20
1.1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . 3 1.1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . 3
1.2. Problem Statement . . . . . . . . . . . . . . . . . . . . 3 1.2. Problem Statement . . . . . . . . . . . . . . . . . . . . 3
1.3. Solution . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3. Solution . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.1. Forwarding . . . . . . . . . . . . . . . . . . . . . 4 1.3.1. Forwarding . . . . . . . . . . . . . . . . . . . . . 4
1.3.2. Scheduling . . . . . . . . . . . . . . . . . . . . . 4 1.3.2. Scheduling . . . . . . . . . . . . . . . . . . . . . 4
2. Network Bridge Module Tree Diagram . . . . . . . . . . . . . 7 2. Network Bridge Module Tree Diagram . . . . . . . . . . . . . 7
3. Network Bridge Flows Module Tree Diagram . . . . . . . . . . 7 3. Network Bridge Flows Module Tree Diagram . . . . . . . . . . 7
4. Network Bridge Scheduler Module Tree Diagram . . . . . . . . 10 4. Network Bridge Scheduler Module Tree Diagram . . . . . . . . 10
5. Network Bridge Module YANG . . . . . . . . . . . . . . . . . 12 5. Network Bridge Module YANG . . . . . . . . . . . . . . . . . 12
6. Network Bridge Flows Module YANG . . . . . . . . . . . . . . 13 6. Network Bridge Flows Module YANG . . . . . . . . . . . . . . 13
7. Network Bridge Scheduler Module YANG . . . . . . . . . . . . 20 7. Network Bridge Scheduler Module YANG . . . . . . . . . . . . 21
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29
8.1. NETWORK BRIDGE YANG Modules . . . . . . . . . . . . . . . 28 8.1. NETWORK BRIDGE YANG Modules . . . . . . . . . . . . . . . 29
9. Security Considerations . . . . . . . . . . . . . . . . . . . 29 9. Security Considerations . . . . . . . . . . . . . . . . . . . 30
10. Normative References . . . . . . . . . . . . . . . . . . . . 29 10. Normative References . . . . . . . . . . . . . . . . . . . . 30
Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 30 Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 31
A.1. Model . . . . . . . . . . . . . . . . . . . . . . . . . . 30 A.1. Model . . . . . . . . . . . . . . . . . . . . . . . . . . 31
A.2. Scheduler diagram . . . . . . . . . . . . . . . . . . . . 33 A.2. Scheduler diagram . . . . . . . . . . . . . . . . . . . . 33
A.3. Topology . . . . . . . . . . . . . . . . . . . . . . . . 33 A.3. Topology . . . . . . . . . . . . . . . . . . . . . . . . 34
A.4. CLI listing . . . . . . . . . . . . . . . . . . . . . . . 34 A.4. CLI listing . . . . . . . . . . . . . . . . . . . . . . . 34
A.5. Configuration Data Instance . . . . . . . . . . . . . . . 36 A.5. Configuration Data Instance . . . . . . . . . . . . . . . 36
A.6. Companion YANG Data Model for Implementations Not A.6. Companion YANG Data Model for Implementations Not
Compliant with NMDA . . . . . . . . . . . . . . . . . . . 46 Compliant with NMDA . . . . . . . . . . . . . . . . . . . 46
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 48 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 48
1. Introduction 1. Introduction
There is a need for a YANG model for management of network bridges. There is a need for a YANG model for management of network bridges.
The model should allow the variety of existing forwarding and The model should allow the variety of existing forwarding and
skipping to change at page 8, line 14 skipping to change at page 8, line 14
| | | +--rw mask? yang:mac-address | | | +--rw mask? yang:mac-address
| | +--rw ethernet-type! | | +--rw ethernet-type!
| | +--rw type ether-type | | +--rw type ether-type
| +--rw vlan-match | +--rw vlan-match
| +--rw vlan-id! | +--rw vlan-id!
| | +--rw vlan-id-present? boolean | | +--rw vlan-id-present? boolean
| | +--rw vlan-id? vlan-id | | +--rw vlan-id? vlan-id
| +--rw vlan-pcp? vlan-pcp | +--rw vlan-pcp? vlan-pcp
+--rw flows +--rw flows
+--rw flow* [id] +--rw flow* [id]
+--rw id flow-id +--rw id flow-id
+--rw match +--rw match
| +--rw in-port? netbr:port-ref | +--rw in-port? netbr:port-ref
| +--rw ethernet-match | +--rw ethernet-match
| | +--rw ethernet-source! | | +--rw ethernet-source!
| | | +--rw address yang:mac-address | | | +--rw address yang:mac-address
| | | +--rw mask? yang:mac-address | | | +--rw mask? yang:mac-address
| | +--rw ethernet-destination! | | +--rw ethernet-destination!
| | | +--rw address yang:mac-address | | | +--rw address yang:mac-address
| | | +--rw mask? yang:mac-address | | | +--rw mask? yang:mac-address
| | +--rw ethernet-type! | | +--rw ethernet-type!
| | +--rw type ether-type | | +--rw type ether-type
| +--rw vlan-match | +--rw vlan-match
| +--rw vlan-id! | +--rw vlan-id!
| | +--rw vlan-id-present? boolean | | +--rw vlan-id-present? boolean
| | +--rw vlan-id? vlan-id | | +--rw vlan-id? vlan-id
| +--rw vlan-pcp? vlan-pcp | +--rw vlan-pcp? vlan-pcp
+--rw actions +--rw actions
| +--rw action* [order] | +--rw action* [order]
| +--rw order int32 | +--rw order int32
| +--(action)? | +--rw (action)?
| +--:(output-action-case) | +--:(output-action-case)
| | +--rw output-action | | +--rw output-action
| | +--rw out-port? netbr:port-ref | | +--rw out-port? netbr:port-ref
| | +--rw max-length? uint16 | | +--rw max-length? uint16
| +--:(controller-action-case) | +--:(controller-action-case)
| | +--rw controller-action | | +--rw controller-action
| | +--rw max-length? uint16 | | +--rw max-length? uint16
| +--:(drop-action-case) | +--:(drop-action-case)
| | +--rw drop-action! | | +--rw drop-action!
| +--:(pop-vlan-action-case) | +--:(pop-vlan-action-case)
skipping to change at page 9, line 16 skipping to change at page 9, line 16
| | +--rw set-vlan-cfi-action | | +--rw set-vlan-cfi-action
| | +--rw vlan-cfi? vlan-cfi | | +--rw vlan-cfi? vlan-cfi
| +--:(set-vlan-id-action-case) | +--:(set-vlan-id-action-case)
| | +--rw set-vlan-id-action | | +--rw set-vlan-id-action
| | +--rw vlan-id? vlan-id | | +--rw vlan-id? vlan-id
| +--:(set-vlan-pcp-action-case) | +--:(set-vlan-pcp-action-case)
| | +--rw set-vlan-pcp-action | | +--rw set-vlan-pcp-action
| | +--rw vlan-pcp? vlan-pcp | | +--rw vlan-pcp? vlan-pcp
| +--:(strip-vlan-action-case) | +--:(strip-vlan-action-case)
| +--rw strip-vlan-action! | +--rw strip-vlan-action!
+--rw priority? uint16 +--rw priority? uint16
+--rw container-name? string +--rw container-name? string
+--rw flow-name? string +--rw flow-name? string
+--ro flow-statistics
+--ro packet-count? yang:counter64
+--ro byte-count? yang:counter64
rpcs: rpcs:
+---x transmit-packet +---x transmit-packet
+---w input +---w input
+---w egress? netbr:port-ref +---w egress? netbr:port-ref
+---w ingress? netbr:port-ref +---w ingress? netbr:port-ref
+---w payload? binary +---w payload? binary
+---w action* [order] +---w action* [order]
+---w order int32 +---w order int32
+--(action)? +---w (action)?
+--:(output-action-case) +--:(output-action-case)
| +---w output-action | +---w output-action
| +---w out-port? netbr:port-ref | +---w out-port? netbr:port-ref
| +---w max-length? uint16 | +---w max-length? uint16
+--:(controller-action-case) +--:(controller-action-case)
| +---w controller-action | +---w controller-action
| +---w max-length? uint16 | +---w max-length? uint16
+--:(drop-action-case) +--:(drop-action-case)
| +---w drop-action! | +---w drop-action!
+--:(pop-vlan-action-case) +--:(pop-vlan-action-case)
skipping to change at page 10, line 49 skipping to change at page 11, line 4
augment /netbr:bridge/netbr:ports/netbr:port: augment /netbr:bridge/netbr:ports/netbr:port:
+--rw class? port-class-ref +--rw class? port-class-ref
+--rw class-instance-index? uint32 +--rw class-instance-index? uint32
augment /netbr:bridge: augment /netbr:bridge:
+--rw default-traffic-class? traffic-class-ref +--rw default-traffic-class? traffic-class-ref
+--rw default-port-class? traffic-class-ref +--rw default-port-class? traffic-class-ref
+--rw traffic-classes +--rw traffic-classes
| +--rw traffic-class* identityref | +--rw traffic-class* identityref
+--rw port-classes +--rw port-classes
+--rw port-class* identityref +--rw port-class* identityref
augment /if:interfaces/if:interface: augment /if:interfaces/if:interface:
+--rw scheduler +--rw scheduler
+--rw gate-controllers +--rw gate-controllers
+--rw gate-controller* [id type] +--rw gate-controller* [id]
+--rw id string +--rw id string
+--rw type identityref +--rw type identityref
+--rw inputs +--rw inputs
| +--rw input* [class index] | +--rw input* [class index]
| +--rw class identityref | +--rw class identityref
| +--rw index uint32 | +--rw index uint32
| +--ro queued-pkts? uint64 | +--ro queued-pkts? uint64
| +--ro queued-bytes? uint64 | +--ro queued-bytes? uint64
| +--ro discards? uint64 | +--ro discards? uint64
| +--ro overflow-discards? uint64 | +--ro overflow-discards? uint64
skipping to change at page 12, line 7 skipping to change at page 12, line 9
| +--rw configurable-delay-line? uint64 | +--rw configurable-delay-line? uint64
| +--rw queue-len? uint32 | +--rw queue-len? uint32
+--rw output +--rw output
+--rw gate-controller? +--rw gate-controller?
| -> ../../../gate-controller/id | -> ../../../gate-controller/id
+--rw input-class? leafref +--rw input-class? leafref
+--rw index? uint32 +--rw index? uint32
5. Network Bridge Module YANG 5. Network Bridge Module YANG
<CODE BEGINS> file "ietf-network-bridge@2018-07-15.yang" <CODE BEGINS> file "ietf-network-bridge@2019-07-05.yang"
module ietf-network-bridge { module ietf-network-bridge {
namespace "urn:ietf:params:xml:ns:yang:ietf-network-bridge"; namespace "urn:ietf:params:xml:ns:yang:ietf-network-bridge";
prefix netbr; prefix netbr;
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
} }
organization organization
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/netmod/> "WG Web: <http://tools.ietf.org/wg/netmod/>
WG List: <mailto:netmod@ietf.org> WG List: <mailto:netmod@ietf.org>
Editor: Vladimir Vassilev Editor: Vladimir Vassilev
<mailto:vladimir@transpacket.com>"; <mailto:vladimir@transpacket.com>";
description description
"This module contains a collection of YANG definitions for "This module contains a collection of YANG definitions for
description and management of network bridges. description and management of network bridges.
Copyright (c) 2015 IETF Trust and the persons identified as Copyright (c) 2019 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD
set forth in Section 4.c of the IETF Trust's Legal Provisions License set forth in Section 4.c of the IETF Trust's
Relating to IETF Documents Legal Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2018-07-15 { revision 2019-07-05 {
description description
"Initial revision."; "Initial revision.";
reference "RFC XXXX: Network Bridge"; reference "RFC XXXX: Network Bridge";
} }
container bridge { container bridge {
description "Bridge parameters.";
container ports { container ports {
description "Member ports.";
list port { list port {
key "name"; key "name";
description
"The list of bridge ports on the device.";
unique "index"; unique "index";
leaf name { leaf name {
type string; type string;
} }
leaf index { leaf index {
type uint64; type uint64;
} }
} }
} }
} }
skipping to change at page 13, line 35 skipping to change at page 13, line 42
description description
"This type is used by data models that need to reference "This type is used by data models that need to reference
configured bridge ports."; configured bridge ports.";
} }
} }
<CODE ENDS> <CODE ENDS>
6. Network Bridge Flows Module YANG 6. Network Bridge Flows Module YANG
<CODE BEGINS> file "ietf-network-bridge-flows@2018-07-15.yang" <CODE BEGINS> file "ietf-network-bridge-flows@2019-07-05.yang"
module ietf-network-bridge-flows { module ietf-network-bridge-flows {
namespace "urn:ietf:params:xml:ns:yang:ietf-network-bridge-flows"; namespace "urn:ietf:params:xml:ns:yang:ietf-network-bridge-flows";
prefix flow; prefix flow;
import ietf-network-bridge { import ietf-network-bridge {
prefix netbr; prefix netbr;
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
skipping to change at page 14, line 4 skipping to change at page 14, line 11
prefix netbr; prefix netbr;
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
revision-date 2013-07-15; revision-date 2013-07-15;
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
revision-date 2013-07-15; revision-date 2013-07-15;
} }
organization organization
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/netmod/> "WG Web: <http://tools.ietf.org/wg/netmod/>
WG List: <mailto:netmod@ietf.org> WG List: <mailto:netmod@ietf.org>
Editor: Vladimir Vassilev Editor: Vladimir Vassilev
<mailto:vladimir@transpacket.com>"; <mailto:vladimir@transpacket.com>";
description description
"This module contains a collection of YANG definitions for "This module contains a collection of YANG definitions for
description and management of network bridge based on description and management of network bridge based on
flows."; flows.
revision 2018-07-15 { Copyright (c) 2019 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
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.";
revision 2019-07-05 {
description description
"Unreleased revision."; "Unreleased revision.";
reference "RFC XXXX: Network Bridge"; reference
"RFC XXXX: Network Bridge";
}
typedef vlan-pcp {
type uint8 {
range "0..7";
}
description
"IEEE 802.1p priority. It indicates the frame priority level.
Values are from 0 (best effort) to 7 (highest);
1 represents the lowest priority.";
}
typedef vlan-id {
type uint16 {
range "0..4095";
}
}
typedef ether-type {
type uint32;
} }
typedef vlan-cfi { typedef vlan-cfi {
type int32; type int32;
} }
grouping address { grouping address {
choice address { choice address {
case ipv4 { case ipv4 {
leaf ipv4-address { leaf ipv4-address {
skipping to change at page 16, line 38 skipping to change at page 17, line 31
} }
} }
case strip-vlan-action-case { case strip-vlan-action-case {
container strip-vlan-action { container strip-vlan-action {
presence "no content action"; presence "no content action";
} }
} }
} }
} }
typedef vlan-pcp {
description
"IEEE 802.1p priority. It indicates the frame priority level.
Values are from 0 (best effort) to 7 (highest);
1 represents the lowest priority.";
type uint8 {
range "0..7";
}
}
typedef vlan-id {
type uint16 {
range "0..4095";
}
}
typedef ether-type {
type uint32;
}
grouping mac-address-filter { grouping mac-address-filter {
leaf address { leaf address {
mandatory true;
type yang:mac-address; type yang:mac-address;
mandatory true;
} }
leaf mask { leaf mask {
type yang:mac-address; type yang:mac-address;
} }
} }
grouping ethernet-match-fields { grouping ethernet-match-fields {
container ethernet-source { container ethernet-source {
presence "Match field is active and set";
description description
"Ethernet source address."; "Ethernet source address.";
presence "Match field is active and set";
uses mac-address-filter; uses mac-address-filter;
} }
container ethernet-destination { container ethernet-destination {
presence "Match field is active and set";
description description
"Ethernet destination address."; "Ethernet destination address.";
presence "Match field is active and set";
uses mac-address-filter; uses mac-address-filter;
} }
container ethernet-type { container ethernet-type {
presence "Match field is active and set";
description description
"Ethernet frame type."; "Ethernet frame type.";
presence "Match field is active and set";
leaf type { leaf type {
mandatory true;
type ether-type; type ether-type;
mandatory true;
} }
} }
} }
grouping vlan-match-fields { grouping vlan-match-fields {
container vlan-id { container vlan-id {
presence "Match field is active and set";
description description
"VLAN id."; "VLAN id.";
presence "Match field is active and set";
leaf vlan-id-present { leaf vlan-id-present {
type boolean; type boolean;
} }
leaf vlan-id { leaf vlan-id {
type vlan-id; type vlan-id;
} }
} }
leaf vlan-pcp { leaf vlan-pcp {
type vlan-pcp;
description description
"VLAN priority."; "VLAN priority.";
type vlan-pcp;
} }
} }
grouping match { grouping match {
leaf in-port { leaf in-port {
type netbr:port-ref; type netbr:port-ref;
} }
container ethernet-match { container ethernet-match {
uses ethernet-match-fields; uses ethernet-match-fields;
} }
skipping to change at page 20, line 40 skipping to change at page 21, line 15
type inet:uri; type inet:uri;
} }
container flows { container flows {
list flow { list flow {
key "id"; key "id";
leaf id { leaf id {
type flow-id; type flow-id;
} }
uses flow; uses flow;
container flow-statistics {
config false;
leaf packet-count {
type yang:counter64;
}
leaf byte-count {
type yang:counter64;
}
}
} }
} }
} }
<CODE ENDS> <CODE ENDS>
7. Network Bridge Scheduler Module YANG 7. Network Bridge Scheduler Module YANG
<CODE BEGINS> file "ietf-network-bridge-scheduler@2019-01-07.yang" <CODE BEGINS> file "ietf-network-bridge-scheduler@2019-07-05.yang"
module ietf-network-bridge-scheduler { module ietf-network-bridge-scheduler {
namespace "urn:ietf:params:xml:ns:yang:ietf-network-bridge-scheduler"; namespace "urn:ietf:params:xml:ns:yang:ietf-network-bridge-scheduler";
prefix sched; prefix sched;
import ietf-network-bridge { import ietf-network-bridge {
prefix netbr; prefix netbr;
} }
import ietf-network-bridge-flows { import ietf-network-bridge-flows {
prefix flow; prefix flow;
skipping to change at page 21, line 29 skipping to change at page 22, line 13
"WG Web: <http://tools.ietf.org/wg/netmod/> "WG Web: <http://tools.ietf.org/wg/netmod/>
WG List: <mailto:netmod@ietf.org> WG List: <mailto:netmod@ietf.org>
Editor: Vladimir Vassilev Editor: Vladimir Vassilev
<mailto:vladimir@transpacket.com>"; <mailto:vladimir@transpacket.com>";
description description
"This module contains a collection of YANG definitions for "This module contains a collection of YANG definitions for
description and management of network bridge schedulers. description and management of network bridge schedulers.
Copyright (c) 2019 IETF Trust and the persons identified as Copyright (c) 2019 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD
set forth in Section 4.c of the IETF Trust's Legal Provisions License set forth in Section 4.c of the IETF Trust's
Relating to IETF Documents Legal Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2019-01-07 { revision 2019-07-05 {
description description
"Initial revision."; "Initial revision.";
reference "RFC XXXX: Network Bridge"; reference
"RFC XXXX: Network Bridge";
} }
identity gate-controller { identity gate-controller {
description description
"Represents the gate control block type e.g. round-robin, "Represents the gate control block type e.g. round-robin,
priority-based, time-aware-802dot1qbv etc."; priority-based, time-aware-802dot1qbv etc.";
} }
identity aggregator { identity aggregator {
base gate-controller; base gate-controller;
description description
"Abstract identity that all gate control blocks with multiple "Abstract identity that all gate control blocks with multiple
inputs and single output use as basetype e.g. round-robin, inputs and single output use as basetype e.g. round-robin,
priority-based, time-aware-802dot1qbv etc."; priority-based, time-aware-802dot1qbv etc.";
} }
identity filter { identity filter {
base gate-controller; base gate-controller;
skipping to change at page 24, line 35 skipping to change at page 25, line 23
type identityref { type identityref {
base port-class; base port-class;
} }
} }
} }
} }
grouping gate-controller-input-config { grouping gate-controller-input-config {
leaf constant-propagation-delay { leaf constant-propagation-delay {
type uint64; type uint64;
units "picoseconds";
description description
"Constant delay attributed to delays in the gate-controller."; "Constant delay attributed to delays in the gate-controller.";
units "picoseconds";
} }
leaf configurable-delay-line { leaf configurable-delay-line {
type uint64; type uint64;
units "picoseconds";
description description
"Some gate controllers can delay the flow of packets with "Some gate controllers can delay the flow of packets with
configurable delay which is added to the constant configurable delay which is added to the constant
propagation-delay. Only inputs with zero queue lengths propagation-delay. Only inputs with zero queue lengths
have deterministic delays equal to the sum of the have deterministic delays equal to the sum of the
constant-propagation-delay and the configurable-delay-line constant-propagation-delay and the configurable-delay-line
leafs. Inputs with queues have variable higher delay with leafs. Inputs with queues have variable higher delay with
dynamic component based on the controllers logic."; dynamic component based on the controllers logic.";
units "picoseconds";
} }
leaf queue-len { leaf queue-len {
type uint32; type uint32;
units "bytes"; units "bytes";
} }
} }
grouping gate-controller-queue-state { grouping gate-controller-queue-state {
leaf queued-pkts { leaf queued-pkts {
config false;
type uint64; type uint64;
config false;
} }
leaf queued-bytes { leaf queued-bytes {
config false;
type uint64; type uint64;
config false;
} }
leaf discards { leaf discards {
config false;
type uint64; type uint64;
config false;
description description
"The total number of discarded packets that were "The total number of discarded packets that were
received on this input. This includes but is not received on this input. This includes but is not
limited to the overflow-discards. For example limited to the overflow-discards. For example
gate-controllers can start discarding certain gate-controllers can start discarding certain
packets before the input queue is filled. These packets before the input queue is filled. These
discards are not registered as overflow-discards. discards are not registered as overflow-discards.
The lower 32 bits of the sum of all discards The lower 32 bits of the sum of all discards
counters part of a scheduler are equal to the counters part of a scheduler are equal to the
/if:interfaces/if:interface/if:statistics/if:out-discards /if:interfaces/if:interface/if:statistics/if:out-discards
counter for the corresponding interface."; counter for the corresponding interface.";
} }
leaf overflow-discards { leaf overflow-discards {
config false;
type uint64; type uint64;
config false;
description description
"Unintended discard caused by overflow of "Unintended discard caused by overflow of
the input queue of the gate controller."; the input queue of the gate controller.";
} }
leaf error-discards { leaf error-discards {
config false;
type uint64; type uint64;
config false;
} }
} }
augment "/if:interfaces/if:interface" { augment "/if:interfaces/if:interface" {
container scheduler { container scheduler {
container gate-controllers { container gate-controllers {
list gate-controller { list gate-controller {
key "id"; key "id";
leaf id { leaf id {
type string; type string;
skipping to change at page 27, line 18 skipping to change at page 28, line 7
type port-class-ref; type port-class-ref;
} }
leaf gate-controller { leaf gate-controller {
type leafref { type leafref {
path "../../../gate-controllers/gate-controller/id"; path "../../../gate-controllers/gate-controller/id";
} }
} }
leaf input-class { leaf input-class {
type leafref { type leafref {
path "../../../gate-controllers/gate-controller" path "../../../gate-controllers/gate-controller"
+ "[id=current()/../gate-controller]" + "[id=current()/../gate-controller]"
+ "/inputs/input/class"; + "/inputs/input/class";
} }
} }
leaf base-index { leaf base-index {
type uint32; type uint32;
default "0"; default "0";
} }
} }
} }
container gate-controllers { container gate-controllers {
list gate-controller { list gate-controller {
skipping to change at page 28, line 16 skipping to change at page 29, line 5
} }
container output { container output {
leaf gate-controller { leaf gate-controller {
type leafref { type leafref {
path "../../../gate-controller/id"; path "../../../gate-controller/id";
} }
} }
leaf input-class { leaf input-class {
type leafref { type leafref {
path "../../../gate-controller" path "../../../gate-controller"
+ "[id=current()/../gate-controller]/" + "[id=current()/../gate-controller]/"
+ "inputs/input/class"; + "inputs/input/class";
} }
} }
leaf index { leaf index {
type uint32; type uint32;
description description
"In case the gate-controller is aggregator this is the "In case the gate-controller is aggregator this is the
index of the only input it is connected to from the index of the only input it is connected to from the
specified class. specified class.
If the gate-controller is filter with more then one If the gate-controller is filter with more then one
input-output pairs this is the base index and the input-output pairs this is the base index and the
skipping to change at page 30, line 18 skipping to change at page 31, line 5
[RFC8340] Bjorklund, M., Ed. and L. Berger, Ed., "YANG Tree [RFC8340] Bjorklund, M., Ed. and L. Berger, Ed., "YANG Tree
Diagrams", RFC 8340, DOI 10.17487/RFC8340, March 2018, Diagrams", RFC 8340, DOI 10.17487/RFC8340, March 2018,
<http://www.rfc-editor.org/info/rfc8340>. <http://www.rfc-editor.org/info/rfc8340>.
[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
and R. Wilton, "Network Management Datastore Architecture and R. Wilton, "Network Management Datastore Architecture
(NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
<https://www.rfc-editor.org/info/rfc8342>. <https://www.rfc-editor.org/info/rfc8342>.
[XSD] Malhotra, A. and P. Biron, "XML Schema Part 2: Datatypes
Second Edition", World Wide Web Consortium Recommendation
REC-xmlschema-2-20041028, October 2004,
<http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.
Appendix A. Example Appendix A. Example
Example bridge with signaling, video0, video1 and best-effort traffic Example bridge with signaling, video0, video1 and best-effort traffic
classes. classes.
A.1. Model A.1. Model
<CODE BEGINS> file "example-bridge@2018-07-15.yang"
module example-bridge { module example-bridge {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/ns/example-bridge"; namespace "http://example.com/ns/example-bridge";
prefix example; prefix example;
import ietf-network-bridge { import ietf-network-bridge {
prefix netbr; prefix netbr;
} }
import ietf-network-bridge-scheduler { import ietf-network-bridge-scheduler {
prefix sched; prefix sched;
skipping to change at page 33, line 4 skipping to change at page 33, line 31
leaf interval { leaf interval {
type uint32; type uint32;
units "nanoseconds"; units "nanoseconds";
} }
leaf limit { leaf limit {
type uint32; type uint32;
units "octets"; units "octets";
} }
} }
} }
<CODE ENDS>
A.2. Scheduler diagram A.2. Scheduler diagram
The scheduler toplogy and the gate controller instances are specified The scheduler toplogy and the gate controller instances are specified
in the operational configuration data that can be modified or not in the operational configuration data that can be modified or not
depending on the underlying implementation. The single letter depending on the underlying implementation. The single letter
identifiers for the gate-controllers have the following identities: identifiers for the gate-controllers have the following identities:
o r1,r2 - rate-limiter instances o r1,r2 - rate-limiter instances
skipping to change at page 46, line 31 skipping to change at page 46, line 31
A.6. Companion YANG Data Model for Implementations Not Compliant with A.6. Companion YANG Data Model for Implementations Not Compliant with
NMDA NMDA
The YANG modules defined in this document are designed to be used in The YANG modules defined in this document are designed to be used in
conjunction with implementations that support the Network Management conjunction with implementations that support the Network Management
Datastore Architecture (NMDA) as defined in [RFC8342]. In order to Datastore Architecture (NMDA) as defined in [RFC8342]. In order to
allow implementations to use the data model even in cases when NMDA allow implementations to use the data model even in cases when NMDA
is not supported, the following companion module is defined. is not supported, the following companion module is defined.
<CODE BEGINS> file "ietf-network-bridge-scheduler- <CODE BEGINS> file "ietf-network-bridge-scheduler-
state@2019-01-07.yang" state@2019-07-05.yang"
module ietf-network-bridge-scheduler-state { module ietf-network-bridge-scheduler-state {
namespace namespace
"urn:ietf:params:xml:ns:yang:ietf-network-bridge-scheduler-state"; "urn:ietf:params:xml:ns:yang:ietf-network-bridge-scheduler-state";
prefix sched-state; prefix sched-state;
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
} }
import ietf-network-bridge-scheduler { import ietf-network-bridge-scheduler {
prefix sched; prefix sched;
} }
organization organization
skipping to change at page 47, line 15 skipping to change at page 47, line 14
<mailto:vladimir@transpacket.com>"; <mailto:vladimir@transpacket.com>";
description description
"This module contains /if:interfaces-state/if:interface "This module contains /if:interfaces-state/if:interface
augmentation which mirrors the 'scheduler' container augmentation which mirrors the 'scheduler' container
as the one part of the 'ietf-network-bridge-scheduler' as the one part of the 'ietf-network-bridge-scheduler'
but contains only read-only state data. The data model is but contains only read-only state data. The data model is
not needed when the underlying implementation infrastructure not needed when the underlying implementation infrastructure
supports the Network Management Datastore Architecture (NMDA). supports the Network Management Datastore Architecture (NMDA).
Copyright (c) 2019 IETF Trust and the persons identified as Copyright (c) 2019 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD
set forth in Section 4.c of the IETF Trust's Legal Provisions License set forth in Section 4.c of the IETF Trust's
Relating to IETF Documents Legal Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2019-01-07 { revision 2019-07-05 {
description description
"Initial revision."; "Initial revision.";
reference "RFC XXXX: Network Bridge"; reference
"RFC XXXX: Network Bridge";
} }
augment "/if:interfaces-state/if:interface" { augment "/if:interfaces-state/if:interface" {
container scheduler { container scheduler {
container gate-controllers { container gate-controllers {
list gate-controller { list gate-controller {
key "id type"; key "id type";
leaf id { leaf id {
type string; type string;
} }
 End of changes. 72 change blocks. 
94 lines changed or deleted 119 lines changed or added

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