rfc8542.txt   test8542.v2v3.txt 
skipping to change at page 2, line 7 skipping to change at line 52
(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
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction
2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3 2. Definitions and Acronyms
2.1. Key Words . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1. Key Words
2.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 2.2. Terminology
3. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 4 3. Model Overview
3.1. Topology Model Structure . . . . . . . . . . . . . . . . 4 3.1. Topology Model Structure
3.2. Fabric Topology Model . . . . . . . . . . . . . . . . . . 4 3.2. Fabric Topology Model
3.2.1. Fabric Topology . . . . . . . . . . . . . . . . . . . 5 3.2.1. Fabric Topology
3.2.2. Fabric Node Extension . . . . . . . . . . . . . . . . 6 3.2.2. Fabric Node Extension
3.2.3. Fabric Termination-Point Extension . . . . . . . . . 7 3.2.3. Fabric Termination-Point Extension
4. Fabric YANG Modules . . . . . . . . . . . . . . . . . . . . . 8 4. Fabric YANG Modules
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 5. IANA Considerations
6. Security Considerations . . . . . . . . . . . . . . . . . . . 22 6. Security Considerations
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 7. References
7.1. Normative References . . . . . . . . . . . . . . . . . . 23 7.1. Normative References
7.2. Informative References . . . . . . . . . . . . . . . . . 24 7.2. Informative References
Appendix A. Non-NMDA-State Modules . . . . . . . . . . . . . . . 25 Appendix A. Non-NMDA-State Modules
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 32 Acknowledgements
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 32 Authors' Addresses
1. Introduction 1. Introduction
A data-center (DC) network can be composed of single or multiple A data-center (DC) network can be composed of single or multiple
fabrics, which are also known as Points Of Delivery (PODs). These fabrics, which are also known as Points Of Delivery (PODs). These
fabrics may be heterogeneous due to implementation of different fabrics may be heterogeneous due to implementation of different
technologies when a DC network is upgraded or new techniques and technologies when a DC network is upgraded or new techniques and
features are rolled out. For example, within a DC network, Fabric A features are rolled out. For example, within a DC network, Fabric A
may use Virtual eXtensible Local Area Network (VXLAN) while Fabric B may use Virtual eXtensible Local Area Network (VXLAN) while Fabric B
may use VLAN. Likewise, an existing fabric may use VXLAN while a new may use VLAN. Likewise, an existing fabric may use VXLAN while a new
skipping to change at page 4, line 32 skipping to change at line 173
+------------------------+ +------------------------+
| |
+-----------+-----+------+-------------+ +-----------+-----+------+-------------+
| | | | | | | |
+---V----+ +---V----+ +---V----+ +----V---+ +---V----+ +---V----+ +---V----+ +----V---+
| L1 | | L2 | | L3 | | Fabric | | L1 | | L2 | | L3 | | Fabric |
|topology| |topology| |topology| |topology| |topology| |topology| |topology| |topology|
| model | | model | | model | | model | | model | | model | | model | | model |
+--------+ +--------+ +--------+ +--------+ +--------+ +--------+ +--------+ +--------+
Figure 1: The Network Data Model Structure Figure 1: The Network Data Model Structure
From the perspective of resource management and service provisioning From the perspective of resource management and service provisioning
for a data-center network, the fabric topology model augments the for a data-center network, the fabric topology model augments the
basic network topology model with definitions and features specific basic network topology model with definitions and features specific
to a DC fabric, to provide common configuration and operations for to a DC fabric, to provide common configuration and operations for
heterogeneous fabrics. heterogeneous fabrics.
3.2. Fabric Topology Model 3.2. Fabric Topology Model
The fabric topology model module is designed to be generic and can be The fabric topology model module is designed to be generic and can be
skipping to change at page 5, line 33 skipping to change at line 217
+--... +--...
augment /nw:networks/nw:network/nw:node/nt:termination-point: augment /nw:networks/nw:network/nw:node/nt:termination-point:
+--ro fport-attributes +--ro fport-attributes
+--ro name? string +--ro name? string
+--ro role? fabric-port-role +--ro role? fabric-port-role
+--ro type? fabric-port-type +--ro type? fabric-port-type
The fabric topology module augments the generic ietf-network and The fabric topology module augments the generic ietf-network and
ietf-network-topology modules as follows: ietf-network-topology modules as follows:
o A new topology type, "ietf-dc-fabric-topology", is defined and * A new topology type, "ietf-dc-fabric-topology", is defined and
added under the "network-types" container of the ietf-network added under the "network-types" container of the ietf-network
module. module.
o Fabric is defined as a node under the network/node container. A * Fabric is defined as a node under the network/node container. A
new container, "fabric-attributes", is defined to carry attributes new container, "fabric-attributes", is defined to carry attributes
for a fabric such as gateway mode, fabric types, involved device for a fabric such as gateway mode, fabric types, involved device
nodes, and links. nodes, and links.
o Termination points (in the network topology module) are augmented * Termination points (in the network topology module) are augmented
with fabric port attributes defined in a container. The with fabric port attributes defined in a container. The
"termination-point" here is used to represent a fabric "port" that "termination-point" here is used to represent a fabric "port" that
provides connections to other nodes, such as an internal device, provides connections to other nodes, such as an internal device,
another fabric externally, or end hosts. another fabric externally, or end hosts.
Details of the fabric node and the fabric termination point extension Details of the fabric node and the fabric termination point extension
will be explained in the following sections. will be explained in the following sections.
3.2.2. Fabric Node Extension 3.2.2. Fabric Node Extension
skipping to change at page 8, line 10 skipping to change at line 321
present the tunnel configuration on a port. present the tunnel configuration on a port.
The termination point information is learned from the underlay The termination point information is learned from the underlay
networks, not configured by the fabric topology layer. networks, not configured by the fabric topology layer.
4. Fabric YANG Modules 4. Fabric YANG Modules
This module imports typedefs from [RFC8345], and it references This module imports typedefs from [RFC8345], and it references
[RFC7348] and [RFC8344]. [RFC7348] and [RFC8344].
<CODE BEGINS> file "ietf-dc-fabric-types@2019-02-25.yang" <CODE BEGINS> file "ietf-dc-fabric-types@2019-02-25.yang"
module ietf-dc-fabric-types { module ietf-dc-fabric-types {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types"; namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types";
prefix fabrictypes; prefix fabrictypes;
import ietf-network {
prefix nw;
reference
"RFC 8345: A YANG Data Model for Network Topologies";
}
organization
"IETF I2RS (Interface to the Routing System) Working Group";
contact
"WG Web: <https://datatracker.ietf.org/wg/i2rs/>
WG List: <mailto:i2rs@ietf.org>
Editor: Yan Zhuang
<mailto:zhuangyan.zhuang@huawei.com>
Editor: Danian Shi
<mailto:shidanian@huawei.com>";
description
"This module contains a collection of YANG definitions for
fabric.
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
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8542; import ietf-network {
see the RFC itself for full legal notices."; prefix nw;
reference
"RFC 8345: A YANG Data Model for Network Topologies";
}
revision 2019-02-25 { organization
description "IETF I2RS (Interface to the Routing System) Working Group";
"Initial revision."; contact
"WG Web: <https://datatracker.ietf.org/wg/i2rs/>
WG List: <mailto:i2rs@ietf.org>
reference Editor: Yan Zhuang
"RFC 8542: A YANG Data Model for Fabric Topology <mailto:zhuangyan.zhuang@huawei.com>
in Data-Center Networks";
}
identity fabric-type { Editor: Danian Shi
description <mailto:shidanian@huawei.com>";
"Base type for fabric networks"; description
} "This module contains a collection of YANG definitions for
fabric.
identity vxlan-fabric { Copyright (c) 2019 IETF Trust and the persons identified
base fabric-type; as authors of the code. All rights reserved.
description
"VXLAN fabric";
}
identity vlan-fabric { Redistribution and use in source and binary forms, with
base fabric-type; or without modification, is permitted pursuant to, and
description subject to the license terms contained in, the Simplified
"VLAN fabric"; 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).
identity trill-fabric { This version of this YANG module is part of RFC 8542;
base fabric-type; see the RFC itself for full legal notices.";
description
"TRILL fabric";
}
identity port-type { revision 2019-02-25 {
description description
"Base type for fabric port"; "Initial revision.";
} reference
"RFC 8542: A YANG Data Model for Fabric Topology
in Data-Center Networks";
}
identity eth { identity fabric-type {
base port-type; description
description "Base type for fabric networks";
"Ethernet"; }
}
identity serial { identity vxlan-fabric {
base port-type; base fabric-type;
description description
"Serial"; "VXLAN fabric";
} }
identity bandwidth { identity vlan-fabric {
description base fabric-type;
"Base for bandwidth"; description
"VLAN fabric";
}
} identity trill-fabric {
base fabric-type;
description
"TRILL fabric";
}
identity bw-1M { identity port-type {
base bandwidth; description
description "Base type for fabric port";
"1M"; }
}
identity bw-10M { identity eth {
base bandwidth; base port-type;
description description
"10Mbps"; "Ethernet";
} }
identity bw-100M { identity serial {
base bandwidth; base port-type;
description description
"100Mbps"; "Serial";
} }
identity bw-1G { identity bandwidth {
base bandwidth; description
description "Base for bandwidth";
"1Gbps"; }
}
identity bw-10G { identity bw-1M {
base bandwidth; base bandwidth;
description description
"10Gbps"; "1M";
} }
identity bw-25G { identity bw-10M {
base bandwidth; base bandwidth;
description description
"25Gbps"; "10Mbps";
} }
identity bw-40G { identity bw-100M {
base bandwidth; base bandwidth;
description description
"40Gbps"; "100Mbps";
} }
identity bw-100G { identity bw-1G {
base bandwidth; base bandwidth;
description description
"100Gbps"; "1Gbps";
}
} identity bw-10G {
base bandwidth;
description
"10Gbps";
}
identity bw-400G { identity bw-25G {
base bandwidth; base bandwidth;
description description
"400Gbps"; "25Gbps";
} }
identity device-role { identity bw-40G {
description base bandwidth;
"Base for the device role in a fabric."; description
} "40Gbps";
}
identity spine { identity bw-100G {
base device-role; base bandwidth;
description description
"This is a spine node in a fabric."; "100Gbps";
} }
identity leaf { identity bw-400G {
base device-role; base bandwidth;
description description
"This is a leaf node in a fabric."; "400Gbps";
} }
identity border { identity device-role {
base device-role; description
description "Base for the device role in a fabric.";
"This is a border node to connect to other }
fabric/network.";
}
identity fabric-port-role { identity spine {
description base device-role;
"Base for the port's role in a fabric."; description
} "This is a spine node in a fabric.";
}
identity internal { identity leaf {
base fabric-port-role; base device-role;
description description
"The port is used for devices to access each "This is a leaf node in a fabric.";
other within a fabric."; }
}
identity external { identity border {
base fabric-port-role; base device-role;
description description
"The port is used for a fabric to connect to "This is a border node to connect to other
outside network."; fabric/network.";
} }
identity access { identity fabric-port-role {
base fabric-port-role; description
description "Base for the port's role in a fabric.";
"The port is used for an endpoint to connect }
to a fabric.";
}
identity service-capability { identity internal {
description base fabric-port-role;
"Base for the service of the fabric "; description
} "The port is used for devices to access each
other within a fabric.";
}
identity ip-mapping { identity external {
base service-capability; base fabric-port-role;
description description
"NAT."; "The port is used for a fabric to connect to
} outside network.";
}
identity acl-redirect { identity access {
base service-capability; base fabric-port-role;
description description
"ACL redirect, which can provide a Service Function Chain (SFC)."; "The port is used for an endpoint to connect
} to a fabric.";
}
identity dynamic-route-exchange { identity service-capability {
base service-capability; description
description "Base for the service of the fabric ";
"Dynamic route exchange."; }
}
/* identity ip-mapping {
* Typedefs base service-capability;
*/ description
"NAT.";
}
typedef fabric-id { identity acl-redirect {
type nw:node-id; base service-capability;
description description
"An identifier for a fabric in a topology. "ACL redirect, which can provide a Service Function Chain (SFC).";
This identifier can be generated when composing a fabric. }
The composition of a fabric can be achieved by defining an
RPC, which is left for vendor specific implementation
and not provided in this model.";
}
typedef service-capabilities { identity dynamic-route-exchange {
type identityref { base service-capability;
base service-capability; description
} "Dynamic route exchange.";
description }
"Service capability of the fabric";
}
typedef port-type { /*
type identityref { * Typedefs
base port-type; */
}
description
"Port type: ethernet or serial or others.";
}
typedef bandwidth { typedef fabric-id {
type identityref { type nw:node-id;
base bandwidth; description
} "An identifier for a fabric in a topology.
description This identifier can be generated when composing a fabric.
"Bandwidth of the port."; The composition of a fabric can be achieved by defining an
} RPC, which is left for vendor specific implementation
and not provided in this model.";
}
typedef node-ref { typedef service-capabilities {
type instance-identifier; type identityref {
description base service-capability;
"A reference to a node in topology"; }
} description
"Service capability of the fabric";
}
typedef tp-ref { typedef port-type {
type instance-identifier; type identityref {
description base port-type;
"A reference to a termination point in topology"; }
} description
"Port type: ethernet or serial or others.";
}
typedef link-ref { typedef bandwidth {
type instance-identifier; type identityref {
description base bandwidth;
"A reference to a link in topology"; }
} description
"Bandwidth of the port.";
}
typedef underlay-network-type { typedef node-ref {
type identityref { type instance-identifier;
base fabric-type; description
} "A reference to a node in topology";
description }
"The type of physical network that implements
this fabric. Examples are VLAN and TRILL.";
} typedef tp-ref {
type instance-identifier;
description
"A reference to a termination point in topology";
}
typedef device-role { typedef link-ref {
type identityref { type instance-identifier;
base device-role; description
} "A reference to a link in topology";
description }
"Role of the device node.";
}
typedef fabric-port-role { typedef underlay-network-type {
type identityref { type identityref {
base fabric-port-role; base fabric-type;
} }
description description
"Role of the port in a fabric."; "The type of physical network that implements
} this fabric. Examples are VLAN and TRILL.";
}
typedef fabric-port-type { typedef device-role {
type enumeration { type identityref {
enum layer2interface { base device-role;
description }
"L2 interface"; description
} "Role of the device node.";
enum layer3interface { }
description
"L3 interface";
}
enum layer2Tunnel {
description
"L2 tunnel";
}
enum layer3Tunnel {
description
"L3 tunnel";
}
}
description
"Fabric port type";
}
grouping fabric-port { typedef fabric-port-role {
description type identityref {
"Attributes of a fabric port."; base fabric-port-role;
leaf name { }
type string; description
description "Role of the port in a fabric.";
"Name of the port."; }
} typedef fabric-port-type {
leaf role { type enumeration {
type fabric-port-role; enum layer2interface {
description description
"Role of the port in a fabric."; "L2 interface";
} }
leaf type { enum layer3interface {
type fabric-port-type; description
description "L3 interface";
"Type of the port"; }
} enum layer2Tunnel {
leaf device-port { description
type tp-ref; "L2 tunnel";
description }
"The device port it mapped to."; enum layer3Tunnel {
} description
choice tunnel-option { "L3 tunnel";
description }
"Tunnel options to connect two fabrics. }
It could be L2 Tunnel or L3 Tunnel."; description
} "Fabric port type";
} }
}
<CODE ENDS> grouping fabric-port {
description
"Attributes of a fabric port.";
leaf name {
type string;
description
"Name of the port.";
}
leaf role {
type fabric-port-role;
description
"Role of the port in a fabric.";
}
leaf type {
type fabric-port-type;
description
"Type of the port";
}
leaf device-port {
type tp-ref;
description
"The device port it mapped to.";
}
choice tunnel-option {
description
"Tunnel options to connect two fabrics.
It could be L2 Tunnel or L3 Tunnel.";
}
}
}
<CODE ENDS>
<CODE BEGINS> file "ietf-dc-fabric-topology@2019-02-25.yang" <CODE BEGINS> file "ietf-dc-fabric-topology@2019-02-25.yang"
module ietf-dc-fabric-topology { module ietf-dc-fabric-topology {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology"; namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology";
prefix fabric; prefix fabric;
import ietf-network { import ietf-network {
prefix nw; prefix nw;
reference reference
skipping to change at page 24, line 33 skipping to change at line 1125
March 2018, <https://www.rfc-editor.org/info/rfc8346>. March 2018, <https://www.rfc-editor.org/info/rfc8346>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>. <https://www.rfc-editor.org/info/rfc8446>.
7.2. Informative References 7.2. Informative References
[GENEVE] Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic [GENEVE] Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic
Network Virtualization Encapsulation", Work in Progress, Network Virtualization Encapsulation", Work in Progress,
draft-ietf-nvo3-geneve-12, March 2019. draft-ietf-nvo3-geneve-12, 11 March 2019.
[RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger,
L., Sridhar, T., Bursell, M., and C. Wright, "Virtual L., Sridhar, T., Bursell, M., and C. Wright, "Virtual
eXtensible Local Area Network (VXLAN): A Framework for eXtensible Local Area Network (VXLAN): A Framework for
Overlaying Virtualized Layer 2 Networks over Layer 3 Overlaying Virtualized Layer 2 Networks over Layer 3
Networks", RFC 7348, DOI 10.17487/RFC7348, August 2014, Networks", RFC 7348, DOI 10.17487/RFC7348, August 2014,
<https://www.rfc-editor.org/info/rfc7348>. <https://www.rfc-editor.org/info/rfc7348>.
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
skipping to change at page 25, line 34 skipping to change at line 1171
Like ietf-network-state and ietf-network-topology-state, ietf-dc- Like ietf-network-state and ietf-network-topology-state, ietf-dc-
fabric-topology-state SHOULD NOT be supported by implementations that fabric-topology-state SHOULD NOT be supported by implementations that
support NMDA. It is for this reason that the module is defined in support NMDA. It is for this reason that the module is defined in
the Appendix. the Appendix.
The definition of the module follows. As the structure of the module The definition of the module follows. As the structure of the module
mirrors that of its underlying module, the YANG tree is not depicted mirrors that of its underlying module, the YANG tree is not depicted
separately. separately.
<CODE BEGINS> file "ietf-dc-fabric-topology-state@2019-02-25.yang" <CODE BEGINS> file "ietf-dc-fabric-topology-state@2019-02-25.yang"
module ietf-dc-fabric-topology-state { module ietf-dc-fabric-topology-state {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state"; namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state";
prefix sfabric; prefix sfabric;
import ietf-network-state { import ietf-network-state {
prefix nws; prefix nws;
reference reference
"RFC 8345: A Data Model for Network Topologies"; "RFC 8345: A Data Model for Network Topologies";
} }
import ietf-dc-fabric-types { import ietf-dc-fabric-types {
prefix fabrictypes; prefix fabrictypes;
reference reference
"RFC 8542: A YANG Data Model for Fabric Topology in "RFC 8542: A YANG Data Model for Fabric Topology in
Data-Center Networks"; Data-Center Networks";
} }
organization organization
"IETF I2RS (Interface to the Routing System) Working Group"; "IETF I2RS (Interface to the Routing System) Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/i2rs/> "WG Web: <https://datatracker.ietf.org/wg/i2rs/>
WG List: <mailto:i2rs@ietf.org> WG List: <mailto:i2rs@ietf.org>
Editor: Yan Zhuang Editor: Yan Zhuang
<mailto:zhuangyan.zhuang@huawei.com> <mailto:zhuangyan.zhuang@huawei.com>
Editor: Danian Shi Editor: Danian Shi
<mailto:shidanian@huawei.com>"; <mailto:shidanian@huawei.com>";
description description
"This module contains a collection of YANG definitions for "This module contains a collection of YANG definitions for
fabric state, representing topology that either is learned fabric state, representing topology that either is learned
or results from applying topology that has been or results from applying topology that has been
configured per the ietf-dc-fabric-topology model, mirroring configured per the ietf-dc-fabric-topology model, mirroring
the corresponding data nodes in this model. the corresponding data nodes in this model.
This model mirrors the configuration tree of ietf-dc-fabric This model mirrors the configuration tree of ietf-dc-fabric
-topology but contains only read-only state data. The model -topology but contains only read-only state data. The model
is not needed when the implementation infrastructure supports is not needed when the implementation infrastructure supports
the Network Management Datastore Architecture (NMDA). 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 to the license terms contained in, the Simplified BSD
License set forth in Section 4.c of the IETF Trust's Legal License set forth in Section 4.c of the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8542; This version of this YANG module is part of RFC 8542;
see the RFC itself for full legal notices."; see the RFC itself for full legal notices.";
revision 2019-02-25 { revision 2019-02-25 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC 8542: A YANG Data Model for Fabric Topology in "RFC 8542: A YANG Data Model for Fabric Topology in
Data-Center Networks"; Data-Center Networks";
} }
//grouping statements //grouping statements
grouping fabric-network-type { grouping fabric-network-type {
description description
"Identify the topology type to be fabric."; "Identify the topology type to be fabric.";
container fabric-network {
presence "indicates fabric Network";
description
"The presence of the container node indicates
fabric topology";
}
}
container fabric-network { grouping fabric-options {
presence "indicates fabric Network"; description
description "Options for a fabric";
"The presence of the container node indicates leaf gateway-mode {
fabric topology"; type enumeration {
} enum centralized {
} description
"The fabric uses centralized
gateway, in which gateway is deployed on SPINE
node.";
}
enum distributed {
description
"The fabric uses distributed
gateway, in which gateway is deployed on LEAF
node.";
}
}
default "distributed";
description
"Gateway mode of the fabric";
}
leaf traffic-behavior {
type enumeration {
enum normal {
description
"Normal means no policy is needed
for all traffic";
}
enum policy-driven {
description
"Policy driven means policy is
needed for the traffic; otherwise, the traffic
will be discarded.";
}
}
default "normal";
description
"Traffic behavior of the fabric";
}
leaf-list capability-supported {
type fabrictypes:service-capabilities;
description
"It provides a list of supported services of the
fabric. The service-capabilities is defined as
identity-ref. Users can define more services
by defining new identities.";
}
}
grouping fabric-options { grouping device-attributes {
description description
"Options for a fabric"; "device attributes";
leaf gateway-mode { leaf device-ref {
type enumeration { type fabrictypes:node-ref;
enum centralized { description
description "The device that the fabric includes that refers
"The fabric uses centralized to a node in another topology.";
gateway, in which gateway is deployed on SPINE }
node."; leaf-list role {
} type fabrictypes:device-role;
enum distributed { default "fabrictypes:leaf";
description description
"The fabric uses distributed "It is a list of device roles to represent the roles
gateway, in which gateway is deployed on LEAF that a device plays within a POD, such as SPINE,
node."; LEAF, Border, or Border-Leaf.
} The device role is defined as identity-ref. If more
} than 2 stages are used for a POD, users can
default "distributed"; define new identities for the device role.";
description }
"Gateway mode of the fabric"; }
}
leaf traffic-behavior {
type enumeration {
enum normal {
description
"Normal means no policy is needed
for all traffic";
}
enum policy-driven {
description
"Policy driven means policy is
needed for the traffic; otherwise, the traffic
will be discarded.";
}
}
default "normal";
description
"Traffic behavior of the fabric";
}
leaf-list capability-supported {
type fabrictypes:service-capabilities;
description
"It provides a list of supported services of the
fabric. The service-capabilities is defined as
identity-ref. Users can define more services
by defining new identities.";
}
}
grouping device-attributes { grouping link-attributes {
description description
"device attributes"; "Link attributes";
leaf device-ref { leaf link-ref {
type fabrictypes:node-ref; type fabrictypes:link-ref;
description description
"The device that the fabric includes that refers "The link that the fabric includes that refers to
to a node in another topology."; a link in another topology.";
} }
leaf-list role { }
type fabrictypes:device-role;
default "fabrictypes:leaf";
description
"It is a list of device roles to represent the roles
that a device plays within a POD, such as SPINE,
LEAF, Border, or Border-Leaf.
The device role is defined as identity-ref. If more
than 2 stages are used for a POD, users can
define new identities for the device role.";
}
}
grouping link-attributes { grouping port-attributes {
description description
"Link attributes"; "Port attributes";
leaf link-ref { leaf port-ref {
type fabrictypes:link-ref; type fabrictypes:tp-ref;
description description
"The link that the fabric includes that refers to "The port that the fabric includes that refers to
a link in another topology."; a termination-point in another topology.";
} }
} leaf port-type {
type fabrictypes:port-type;
description
"Port type is defined as identity-ref. The current
types include ethernet or serial. If more types
are needed, developers can define new identities.";
}
leaf bandwidth {
type fabrictypes:bandwidth;
description
"Bandwidth of the port. It is defined as
identity-ref. If more speeds are introduced,
developers can define new identities for them. Current
speeds include 1M, 10M, 100M, 1G, 10G,
25G, 40G, 100G, and 400G.";
}
}
grouping port-attributes { grouping fabric-attributes {
description description
"Port attributes"; "Attributes of a fabric";
leaf port-ref { leaf fabric-id {
type fabrictypes:tp-ref; type fabrictypes:fabric-id;
description description
"The port that the fabric includes that refers to "Fabric ID";
a termination-point in another topology."; }
} leaf name {
leaf port-type { type string;
type fabrictypes:port-type; description
description "Name of the fabric";
"Port type is defined as identity-ref. The current }
types include ethernet or serial. If more types leaf type {
are needed, developers can define new identities."; type fabrictypes:underlay-network-type;
} description
leaf bandwidth { "The type of physical network that implements this
type fabrictypes:bandwidth; fabric. Examples are VLAN and TRILL.";
description }
"Bandwidth of the port. It is defined as container vni-capacity {
identity-ref. If more speeds are introduced, description
developers can define new identities for them. Current "The range of the VXLAN Network
speeds include 1M, 10M, 100M, 1G, 10G, Identifier (VNI) defined in RFC 7348 that the POD uses.";
25G, 40G, 100G, and 400G."; leaf min {
} type int32;
} description
"The lower-limit VNI.";
}
leaf max {
type int32;
description
"The upper-limit VNI.";
}
}
leaf description {
type string;
description
"Description of the fabric";
}
container options {
description
"Options of the fabric";
uses fabric-options;
}
list device-nodes {
key "device-ref";
description
"Device nodes that are included in a fabric.";
uses device-attributes;
}
list device-links {
key "link-ref";
description
"Links that are included within a fabric.";
uses link-attributes;
}
list device-ports {
key "port-ref";
description
"Ports that are included in the fabric.";
uses port-attributes;
}
}
grouping fabric-attributes { // augment statements
description
"Attributes of a fabric";
leaf fabric-id {
type fabrictypes:fabric-id;
description
"Fabric ID";
}
leaf name {
type string;
description
"Name of the fabric";
}
leaf type {
type fabrictypes:underlay-network-type;
description
"The type of physical network that implements this
fabric. Examples are VLAN and TRILL.";
}
container vni-capacity {
description
"The range of the VXLAN Network
Identifier (VNI) defined in RFC 7348 that the POD uses.";
leaf min {
type int32;
description
"The lower-limit VNI.";
}
leaf max {
type int32;
description
"The upper-limit VNI.";
}
}
leaf description { augment "/nws:networks/nws:network/nws:network-types" {
type string; description
description "Introduce a new network type for fabric-based logical
"Description of the fabric"; topology";
} uses fabric-network-type;
container options { }
description
"Options of the fabric";
uses fabric-options;
}
list device-nodes {
key "device-ref";
description
"Device nodes that are included in a fabric.";
uses device-attributes;
}
list device-links {
key "link-ref";
description
"Links that are included within a fabric.";
uses link-attributes;
}
list device-ports {
key "port-ref";
description
"Ports that are included in the fabric.";
uses port-attributes;
}
}
// augment statements augment "/nws:networks/nws:network/nws:node" {
when '/nws:networks/nws:network/nws:network-types'
+ '/sfabric:fabric-network' {
description
"Augmentation parameters apply only for
networks with fabric topology.";
}
description
"Augmentation for fabric nodes.";
container fabric-attributes-state {
description
"Attributes for a fabric network";
uses fabric-attributes;
}
}
}
<CODE ENDS>
augment "/nws:networks/nws:network/nws:network-types" {
description
"Introduce a new network type for fabric-based logical
topology";
uses fabric-network-type;
}
augment "/nws:networks/nws:network/nws:node" {
when '/nws:networks/nws:network/nws:network-types'
+ '/sfabric:fabric-network' {
description
"Augmentation parameters apply only for
networks with fabric topology.";
}
description
"Augmentation for fabric nodes.";
container fabric-attributes-state {
description
"Attributes for a fabric network";
uses fabric-attributes;
}
}
}
<CODE ENDS>
Acknowledgements Acknowledgements
We wish to acknowledge the helpful contributions, comments, and We wish to acknowledge the helpful contributions, comments, and
suggestions that were received from Alexander Clemm, Donald E. suggestions that were received from Alexander Clemm, Donald
Eastlake 3rd, Xufeng Liu, Susan Hares, Wei Song, Luis M. Contreras, E. Eastlake 3rd, Xufeng Liu, Susan Hares, Wei Song, Luis
and Benoit Claise. M. Contreras, and Benoit Claise.
Authors' Addresses Authors' Addresses
Yan Zhuang
Huawei
101 Software Avenue, Yuhua District
Nanjing, Jiangsu 210012
China China
210012
JiangsuNanjing
101 Software Avenue, Yuhua District
Huawei
Yan Zhuang
Email: zhuangyan.zhuang@huawei.com Email: zhuangyan.zhuang@huawei.com
Danian Shi
Huawei
101 Software Avenue, Yuhua District
Nanjing, Jiangsu 210012
China China
210012
JiangsuNanjing
101 Software Avenue, Yuhua District
Huawei
Danian Shi
Email: shidanian@huawei.com Email: shidanian@huawei.com
Rong Gu
China Mobile
32 Xuanwumen West Ave, Xicheng District
Beijing, Beijing 100053
China China
100053
BeijingBeijing
32 Xuanwumen West Ave, Xicheng District
China Mobile
Rong Gu
Email: gurong_cmcc@outlook.com Email: gurong_cmcc@outlook.com
Hariharan Ananthakrishnan Hariharan Ananthakrishnan
Netflix Netflix
Email: hari@netflix.com Email: hari@netflix.com
 End of changes. 85 change blocks. 
606 lines changed or deleted 603 lines changed or added

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