draft-ietf-i2rs-yang-dc-fabric-network-topology-12.txt | rfc8542.txt | |||
---|---|---|---|---|
I2RS Working Group Y. Zhuang | Internet Engineering Task Force (IETF) Y. Zhuang | |||
Internet-Draft D. Shi | Request for Comments: 8542 D. Shi | |||
Intended status: Standards Track Huawei | Category: Standards Track Huawei | |||
Expires: May 25, 2019 R. Gu | ISSN: 2070-1721 R. Gu | |||
China Mobile | China Mobile | |||
H. Ananthakrishnan | H. Ananthakrishnan | |||
Netflix | Netflix | |||
November 21, 2018 | March 2019 | |||
A YANG Data Model for Fabric Topology in Data Center Networks | A YANG Data Model for Fabric Topology in Data-Center Networks | |||
draft-ietf-i2rs-yang-dc-fabric-network-topology-12 | ||||
Abstract | Abstract | |||
This document defines a YANG data model for fabric topology in Data | This document defines a YANG data model for fabric topology in data- | |||
Center Networks and it represents one possible view of the data | center networks and represents one possible view of the data-center | |||
center fabric. This document focuses on the data model only and does | fabric. This document focuses on the data model only and does not | |||
not endorse any kind of network design that could be based on the | endorse any kind of network design that could be based on the | |||
abovementioned model. | abovementioned model. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on May 25, 2019. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc8542. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 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 | |||
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 | |||
2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3 | 2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3 | |||
2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. Key Words . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | ||||
3. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Topology Model structure . . . . . . . . . . . . . . . . 4 | 3.1. Topology Model Structure . . . . . . . . . . . . . . . . 4 | |||
3.2. Fabric Topology Model . . . . . . . . . . . . . . . . . . 4 | 3.2. Fabric Topology Model . . . . . . . . . . . . . . . . . . 4 | |||
3.2.1. Fabric Topology . . . . . . . . . . . . . . . . . . . 4 | 3.2.1. Fabric Topology . . . . . . . . . . . . . . . . . . . 5 | |||
3.2.2. Fabric node extension . . . . . . . . . . . . . . . . 5 | 3.2.2. Fabric Node Extension . . . . . . . . . . . . . . . . 6 | |||
3.2.3. Fabric termination-point extension . . . . . . . . . 6 | 3.2.3. Fabric Termination-Point Extension . . . . . . . . . 7 | |||
4. Fabric YANG Module . . . . . . . . . . . . . . . . . . . . . 7 | 4. Fabric YANG Modules . . . . . . . . . . . . . . . . . . . . . 8 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 22 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 23 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 22 | 7.2. Informative References . . . . . . . . . . . . . . . . . 24 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 23 | Appendix A. Non-NMDA-State Modules . . . . . . . . . . . . . . . 25 | |||
Appendix A. Non NMDA -state modules . . . . . . . . . . . . . . 24 | Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
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 PODs (Points Of Delivery). 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, Fabric A may use VXLAN while | features are rolled out. For example, within a DC network, Fabric A | |||
Fabric B may use VLAN within a DC network. Likewise, an existing | may use Virtual eXtensible Local Area Network (VXLAN) while Fabric B | |||
fabric may use VXLAN while a new fabric, for example a fabric | may use VLAN. Likewise, an existing fabric may use VXLAN while a new | |||
introduced for DC upgrade and expansion, may implement a technique | fabric (for example, a fabric introduced for DC upgrade and | |||
discussed in NVO3 WG, such as Geneve [I-D. draft-ietf-nvo3-geneve]. | expansion) may implement a technique discussed in the NVO3 Working | |||
The configuration and management of such DC networks with | Group, such as Geneve [GENEVE]. The configuration and management of | |||
heterogeneous fabrics could result in considerable complexity. | such DC networks with heterogeneous fabrics could result in | |||
considerable complexity. | ||||
For a DC network, a fabric can be considered as an atomic structure | For a DC network, a fabric can be considered as an atomic structure | |||
for management purposes. From this point of view, the management of | for management purposes. From this point of view, the management of | |||
the DC network can be decomposed into a set of tasks to manage each | the DC network can be decomposed into a set of tasks to manage each | |||
fabric separately, as well as the fabric interconnections. The | fabric separately, as well as the fabric interconnections. The | |||
advantage of this method is to make the overall management tasks | advantage of this method is to make the overall management tasks | |||
flexible and easy to extend in the future. | flexible and easy to extend in the future. | |||
As a basis for DC fabric management, this document defines a YANG | As a basis for DC fabric management, this document defines a YANG | |||
data model [RFC6020][RFC7950] for a possible view of the fabric-based | data model [RFC6020] [RFC7950] for a possible view of the fabric- | |||
data center topology. To do so, it augments the generic network and | based data-center topology. To do so, it augments the generic | |||
network topology data models defined in [RFC8345] with information | network and network topology data models defined in [RFC8345] with | |||
that is specific to data center fabric networks. | information that is specific to data-center fabric networks. | |||
The model defines the generic configuration and operational state for | The model defines the generic configuration and operational state for | |||
a fabric-based network topology, which can subsequently be extended | a fabric-based network topology, which can subsequently be extended | |||
by vendors with vendor-specific information as needed. The model can | by vendors with vendor-specific information as needed. The model can | |||
be used by a network controller to represent its view of the fabric | be used by a network controller to represent its view of the fabric | |||
topology that it controls and expose this view to network | topology that it controls and expose this view to network | |||
administrators or applications for DC network management. | administrators or applications for DC network management. | |||
Within the context of topology architecture defined in [RFC8345], | Within the context of topology architecture defined in [RFC8345], | |||
this model can also be treated as an application of the I2RS network | this model can also be treated as an application of the Interface to | |||
topology model [RFC8345] in the scenario of data center network | the Routing System (I2RS) network topology model [RFC8345] in the | |||
management. It can also act as a service topology when mapping | scenario of data-center network management. It can also act as a | |||
network elements at the fabric layer to elements of other topologies, | service topology when mapping network elements at the fabric layer to | |||
such as L3 topologies as defined in [RFC8346]. | elements of other topologies, such as L3 topologies as defined in | |||
[RFC8346]. | ||||
By using the fabric topology model defined in this document, people | By using the fabric topology model defined in this document, people | |||
can treat a fabric as a holistic entity and focus on characteristics | can treat a fabric as a holistic entity and focus on its | |||
of a fabric (such as encapsulation type, gateway type.) as well as | characteristics (such as encapsulation type and gateway type) as well | |||
its connections to other fabrics while putting the underlay topology | as its connections to other fabrics, while putting the underlay | |||
aside. As such, clients can consume the topology information at the | topology aside. As such, clients can consume the topology | |||
fabric level with no need to be aware of the entire set of links and | information at the fabric level with no need to be aware of the | |||
nodes in the corresponding underlay networks. A fabric topology can | entire set of links and nodes in the corresponding underlay networks. | |||
be configured by a network administrator using the controller by | A fabric topology can be configured by a network administrator using | |||
adding physical devices and links into a fabric. Alternatively, | the controller by adding physical devices and links into a fabric. | |||
fabric topology can be learned from the underlay network | Alternatively, fabric topology can be learned from the underlay | |||
infrastructure. | network infrastructure. | |||
2. Definitions and Acronyms | 2. Definitions and Acronyms | |||
2.1. Key Words | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
2.1. Terminology | 2.2. Terminology | |||
POD: a module of network, compute, storage, and application | POD: a module of network, compute, storage, and application | |||
components that work together to deliver networking services. It | components that work together to deliver networking services. It | |||
represents a repeatable design pattern. Its components maximize the | represents a repeatable design pattern. Its components maximize the | |||
modularity, scalability, and manageability of data centers. | modularity, scalability, and manageability of data centers. | |||
Fabric: composed of several PODs to form a data center network. | Fabric: composed of several PODs to form a data-center network. | |||
3. Model Overview | 3. Model Overview | |||
This section provides an overview of the data center fabric topology | This section provides an overview of the DC fabric topology model and | |||
model and its relationship with other topology models. | its relationship with other topology models. | |||
3.1. Topology Model structure | 3.1. Topology Model Structure | |||
The relationship of the DC fabric topology model and other topology | The relationship of the DC fabric topology model and other topology | |||
models is shown in the following figure. | models is shown in Figure 1. | |||
+------------------------+ | +------------------------+ | |||
| network model | | | network model | | |||
+------------------------+ | +------------------------+ | |||
| | | | |||
| | | | |||
+------------V-----------+ | +------------V-----------+ | |||
| network topology model | | | network topology model | | |||
+------------------------+ | +------------------------+ | |||
| | | | |||
+-----------+-----+------+-------------+ | +-----------+-----+------+-------------+ | |||
| | | | | | | | | | |||
+---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 | |||
applied to data center fabrics built with different technologies, | applied to data-center fabrics built with different technologies, | |||
such as VLAN, VXLAN. The main purpose of this module is to configure | such as VLAN and VXLAN. The main purpose of this module is to | |||
and manage fabrics and their connections. It provides a fabric-based | configure and manage fabrics and their connections. It provides a | |||
topology view for data center applications. | fabric-based topology view for data-center applications. | |||
3.2.1. Fabric Topology | 3.2.1. Fabric Topology | |||
In the fabric topology module, a fabric is modeled as a node of a | In the fabric topology module, a fabric is modeled as a node of a | |||
network, as such the fabric-based data center network consists of a | network; as such, the fabric-based data-center network consists of a | |||
set of fabric nodes and their connections. The following depicts a | set of fabric nodes and their connections. The following depicts a | |||
snippet of the definitions to show the main structure of the model. | snippet of the definitions to show the main structure of the model. | |||
The notation syntax follows [RFC8340]. | The notation syntax follows [RFC8340]. | |||
module: ietf-dc-fabric-topology | module: ietf-dc-fabric-topology | |||
augment /nw:networks/nw:network/nw:network-types: | augment /nw:networks/nw:network/nw:network-types: | |||
+--rw fabric-network! | +--rw fabric-network! | |||
augment /nw:networks/nw:network/nw:node: | augment /nw:networks/nw:network/nw:node: | |||
+--rw fabric-attributes | +--rw fabric-attributes | |||
+--rw fabric-id? fabric-id | +--rw fabric-id? fabric-id | |||
skipping to change at page 5, line 27 ¶ | skipping to change at page 5, line 33 ¶ | |||
+--... | +--... | |||
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 added | o A new topology type, "ietf-dc-fabric-topology", is defined and | |||
under the "network-types" container of the ietf-network module. | added under the "network-types" container of the ietf-network | |||
module. | ||||
o Fabric is defined as a node under the network/node container. A | o 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 network topology module) are augmented with | o Termination points (in the network topology module) are augmented | |||
fabric port attributes defined in a container. The "termination- | with fabric port attributes defined in a container. The | |||
point" here is used to represent a fabric "port" that provides | "termination-point" here is used to represent a fabric "port" that | |||
connections to other nodes, such as an internal device, another | provides connections to other nodes, such as an internal device, | |||
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 | |||
As an atomic network (that is a set of nodes and links which composes | As an atomic network (that is, a set of nodes and links that composes | |||
a POD and also supports a single overlay/underlay instance), a fabric | a POD and also supports a single overlay/underlay instance), a fabric | |||
itself is composed of a set of network elements i.e. devices, and | itself is composed of a set of network elements, i.e., devices and | |||
related links. The configuration of a fabric is contained under the | related links. The configuration of a fabric is contained under the | |||
"fabric-attributes" container depicted as follows. The notation | "fabric-attributes" container depicted as follows. The notation | |||
syntax follows [RFC8340]. | syntax follows [RFC8340]. | |||
+--rw fabric-attributes | +--rw fabric-attributes | |||
+--rw fabric-id? fabrictypes:fabric-id | +--rw fabric-id? fabrictypes:fabric-id | |||
+--rw name? string | +--rw name? string | |||
+--rw type? fabrictype:underlay-network-type | +--rw type? fabrictype:underlay-network-type | |||
+--rw vni-capacity | +--rw vni-capacity | |||
| +--rw min? int32 | | +--rw min? int32 | |||
skipping to change at page 6, line 31 ¶ | skipping to change at page 6, line 38 ¶ | |||
| +--rw role*? fabrictype:device-role | | +--rw role*? fabrictype:device-role | |||
+--rw device-links* [link-ref] | +--rw device-links* [link-ref] | |||
| +--rw link-ref fabrictype:link-ref | | +--rw link-ref fabrictype:link-ref | |||
+--rw device-ports* [port-ref] | +--rw device-ports* [port-ref] | |||
+--rw port-ref fabrictype:tp-ref | +--rw port-ref fabrictype:tp-ref | |||
+--rw port-type? fabrictypes:port-type | +--rw port-type? fabrictypes:port-type | |||
+--rw bandwidth? fabrictypes:bandwidth | +--rw bandwidth? fabrictypes:bandwidth | |||
In the module, additional data objects for fabric nodes are | In the module, additional data objects for fabric nodes are | |||
introduced by augmenting the "node" list of the network module. New | introduced by augmenting the "node" list of the network module. New | |||
objects include fabric name, type of the fabric, descriptions of the | objects include fabric name, type of the fabric, and descriptions of | |||
fabric as well as a set of options defined in an "options" container. | the fabric, as well as a set of options defined in an "options" | |||
The "options" container includes the gateway-mode type (centralized | container. The "options" container includes the gateway-mode type | |||
or distributed) and traffic-behavior (whether an Access Control Lists | (centralized or distributed) and traffic behavior (whether an Access | |||
(ACLs) is needed for the traffic). Also, it includes a list of | Control List (ACL) is needed for the traffic). Also, it includes a | |||
device-nodes and related links as supporting-nodes to form a fabric | list of device nodes and related links as "supporting-node" to form a | |||
network. These device nodes and links are represented as leaf-refs | fabric network. These device nodes and links are represented as | |||
of existing nodes and links in the underlay topology. For the | leaf-refs of existing nodes and links in the underlay topology. For | |||
device-node, the "role" object is defined to represent the role of a | the device node, the "role" object is defined to represent the role | |||
device within the fabric, such as "SPINE" or "LEAF", which should | of a device within the fabric, such as "SPINE" or "LEAF", which | |||
work together with the gateway-mode. | should work together with the gateway-mode. | |||
3.2.3. Fabric termination-point extension | 3.2.3. Fabric Termination-Point Extension | |||
Since a fabric can be considered as a node, "termination-points" can | Since a fabric can be considered as a node, "termination-points" can | |||
represent fabric "ports" that connect to other fabrics, end hosts, as | represent fabric "ports" that connect to other fabrics and end hosts, | |||
well as devices inside the fabric. | as well as devices inside the fabric. | |||
As such, the set of "termination-points" of a fabric indicate all | As such, the set of "termination-points" of a fabric indicate all of | |||
connections of the fabric, including its internal connections, | its connections, including its internal connections, interconnections | |||
interconnections with other fabrics, and connections to end hosts. | with other fabrics, and connections to end hosts. | |||
The structure of fabric ports is as follows. The notation syntax | The structure of fabric ports is as follows. The notation syntax | |||
follows [RFC8340]. | follows [RFC8340]. | |||
The structure of fabric ports is as follows: | ||||
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 | |||
+--ro device-port? tp-ref | +--ro device-port? tp-ref | |||
+--ro (tunnel-option)? | +--ro (tunnel-option)? | |||
It augments the termination points (in network topology module) with | This structure augments the termination points (in the network | |||
fabric port attributes defined in a container. | topology module) with fabric port attributes defined in a container. | |||
New nodes are defined for fabric ports including fabric name, role of | New nodes are defined for fabric ports, including fabric name, role | |||
the port within the fabric (internal port, external port to outside | of the port within the fabric (internal port, external port to | |||
network, access port to end hosts), port type (L2 interface, L3 | outside network, access port to end hosts), and port type (L2 | |||
interface). By defining the device-port as a tp-ref, a fabric port | interface, L3 interface). By defining the device port as a tp-ref, a | |||
can be mapped to a device node in the underlay network. | fabric port can be mapped to a device node in the underlay network. | |||
Also, a new container for tunnel-options is introduced to present the | Additionally, a new container for tunnel-options is introduced to | |||
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 Module | 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@2018-11-08.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; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types"; | ||||
prefix fabrictypes; | ||||
yang-version 1.1; | import ietf-network { | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types"; | prefix nw; | |||
prefix fabrictypes; | reference | |||
"RFC 8345: A YANG Data Model for Network Topologies"; | ||||
} | ||||
import ietf-network { | organization | |||
prefix nw; | "IETF I2RS (Interface to the Routing System) Working Group"; | |||
reference | contact | |||
"RFC 8345:A Data Model for Network Topologies"; | "WG Web: <https://datatracker.ietf.org/wg/i2rs/> | |||
} | WG List: <mailto:i2rs@ietf.org> | |||
organization | Editor: Yan Zhuang | |||
"IETF I2RS (Interface to the Routing System) Working Group"; | <mailto:zhuangyan.zhuang@huawei.com> | |||
contact | Editor: Danian Shi | |||
"WG Web: <http://tools.ietf.org/wg/i2rs/ > | <mailto:shidanian@huawei.com>"; | |||
WG List: <mailto:i2rs@ietf.org> | description | |||
"This module contains a collection of YANG definitions for | ||||
fabric. | ||||
Editor: Yan Zhuang | Copyright (c) 2019 IETF Trust and the persons identified | |||
<mailto:zhuangyan.zhuang@huawei.com> | as authors of the code. All rights reserved. | |||
Editor: Danian Shi | Redistribution and use in source and binary forms, with | |||
<mailto:shidanian@huawei.com>"; | 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). | ||||
description | This version of this YANG module is part of RFC 8542; | |||
"This module contains a collection of YANG definitions for | see the RFC itself for full legal notices."; | |||
Fabric. | ||||
Copyright (c) 2018 IETF Trust and the persons identified as | revision 2019-02-25 { | |||
authors of the code. All rights reserved. | description | |||
"Initial revision."; | ||||
Redistribution and use in source and binary forms, with or | reference | |||
without modification, is permitted pursuant to, and subject | "RFC 8542: A YANG Data Model for Fabric Topology | |||
to the license terms contained in, the Simplified BSD License | in Data-Center Networks"; | |||
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 | identity fabric-type { | |||
draft-ietf-i2rs-yang-dc-fabric-network-topology; | description | |||
see the RFC itself for full legal notices. | "Base type for fabric networks"; | |||
} | ||||
NOTE TO RFC EDITOR: Please replace above reference to | identity vxlan-fabric { | |||
draft-ietf-i2rs-yang-dc-fabric-network-topology-12 with RFC | base fabric-type; | |||
number when published (i.e. RFC xxxx)."; | description | |||
"VXLAN fabric"; | ||||
} | ||||
revision "2018-11-08"{ | identity vlan-fabric { | |||
description | base fabric-type; | |||
"Initial revision. | description | |||
NOTE TO RFC EDITOR: | "VLAN fabric"; | |||
Please replace the following reference to | } | |||
draft-ietf-i2rs-yang-dc-fabric-network-topology-12 | ||||
with RFC number when published (i.e. RFC xxxx)."; | ||||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-12"; | ||||
} | identity trill-fabric { | |||
base fabric-type; | ||||
description | ||||
"TRILL fabric"; | ||||
} | ||||
identity fabric-type { | identity port-type { | |||
description | description | |||
"Base type for fabric networks"; | "Base type for fabric port"; | |||
} | } | |||
identity vxlan-fabric { | identity eth { | |||
base fabric-type; | base port-type; | |||
description | description | |||
"VXLAN fabric"; | "Ethernet"; | |||
} | } | |||
identity vlan-fabric { | identity serial { | |||
base fabric-type; | base port-type; | |||
description | description | |||
"VLAN fabric"; | "Serial"; | |||
} | } | |||
identity trill-fabric { | identity bandwidth { | |||
base fabric-type; | description | |||
description "TRILL fabric"; | "Base for bandwidth"; | |||
} | ||||
identity port-type { | ||||
description | ||||
"Base type for fabric port"; | ||||
} | ||||
identity eth { | ||||
base port-type; | ||||
description "Ethernet"; | ||||
} | ||||
identity serial { | ||||
base port-type; | ||||
description "Serial"; | ||||
} | ||||
identity bandwidth { | } | |||
description "Base for bandwidth"; | ||||
} | ||||
identity bw-1M { | ||||
base bandwidth; | ||||
description "1M"; | ||||
} | ||||
identity bw-10M { | ||||
base bandwidth; | ||||
description "10Mbps"; | ||||
} | ||||
identity bw-100M { | ||||
base bandwidth; | ||||
description "100Mbps"; | ||||
} | ||||
identity bw-1G { | ||||
base bandwidth; | ||||
description "1Gbps"; | ||||
} | ||||
identity bw-10G { | ||||
base bandwidth; | ||||
description "10Gbps"; | ||||
} | ||||
identity bw-25G { | ||||
base bandwidth; | ||||
description "25Gbps"; | ||||
} | ||||
identity bw-40G { | ||||
base bandwidth; | ||||
description "40Gbps"; | ||||
} | ||||
identity bw-100G{ | ||||
base bandwidth; | ||||
description "100Gbps"; | ||||
} | ||||
identity bw-400G { | ||||
base bandwidth; | ||||
description "400Gbps"; | ||||
} | ||||
identity device-role { | ||||
description "Base for the device role in a fabric."; | ||||
} | ||||
identity spine { | ||||
base device-role; | ||||
description "This is a spine node in a fabric."; | ||||
} | ||||
identity leaf { | ||||
base device-role; | ||||
description "This is a leaf node in a fabric. "; | ||||
} | ||||
identity border { | ||||
base device-role; | ||||
description "This is a border node to connect to other | ||||
fabric/network."; | ||||
} | ||||
identity fabric-port-role { | ||||
description "Base for the port's role in a fabric."; | ||||
} | ||||
identity internal { | ||||
base fabric-port-role; | ||||
description "The port is used for devices to access each | ||||
other within a fabric."; | ||||
} | ||||
identity external { | ||||
base fabric-port-role; | ||||
description "The port is used for a fabric to connect to | ||||
outside network."; | ||||
} | ||||
identity access { | ||||
base fabric-port-role; | ||||
description "The port is used for an endpoint to connect | ||||
to a fabric."; | ||||
} | ||||
identity service-capability { | identity bw-1M { | |||
description "Base for the service of the fabric "; | base bandwidth; | |||
} | description | |||
identity ip-mapping { | "1M"; | |||
base service-capability; | } | |||
description "NAT."; | ||||
} | ||||
identity acl-redirect { | ||||
base service-capability; | ||||
description "ACL redirect, which can provide SFC function."; | ||||
} | ||||
identity dynamic-route-exchange { | ||||
base service-capability; | ||||
description "Dynamic route exchange."; | ||||
} | ||||
/* | identity bw-10M { | |||
* Typedefs | base bandwidth; | |||
*/ | description | |||
typedef fabric-id { | "10Mbps"; | |||
type nw:node-id; | } | |||
description | ||||
"An identifier for a fabric in a topology. | ||||
This identifier can be generated when composing a fabric. | ||||
The composition of a fabric can be achieved by defining a | ||||
RPC, which is left for vendor specific implementation | ||||
and not provided in this model."; | ||||
} | ||||
typedef service-capabilities { | identity bw-100M { | |||
type identityref { | base bandwidth; | |||
base service-capability; | description | |||
} | "100Mbps"; | |||
description | } | |||
"Service capability of the fabric"; | ||||
} | ||||
typedef port-type { | identity bw-1G { | |||
type identityref { | base bandwidth; | |||
base port-type; | description | |||
} | "1Gbps"; | |||
description "Port type: ethernet or serial or others."; | } | |||
} | ||||
typedef bandwidth { | ||||
type identityref { | ||||
base bandwidth; | ||||
} | ||||
description "Bandwidth of the port."; | ||||
} | ||||
typedef node-ref { | ||||
type instance-identifier; | ||||
description "A reference to a node in topology"; | ||||
} | ||||
typedef tp-ref { | identity bw-10G { | |||
type instance-identifier; | base bandwidth; | |||
description "A reference to a termination point in topology"; | description | |||
} | "10Gbps"; | |||
} | ||||
typedef link-ref { | identity bw-25G { | |||
type instance-identifier; | base bandwidth; | |||
description "A reference to a link in topology"; | description | |||
} | "25Gbps"; | |||
} | ||||
typedef underlay-network-type { | identity bw-40G { | |||
type identityref { | base bandwidth; | |||
base fabric-type; | description | |||
} | "40Gbps"; | |||
description "The type of physical network that implements | } | |||
this fabric.Examples are VLAN, and TRILL."; | ||||
} | ||||
typedef device-role { | ||||
type identityref { | ||||
base device-role; | ||||
} | ||||
description "Role of the device node."; | ||||
} | ||||
typedef fabric-port-role { | ||||
type identityref { | ||||
base fabric-port-role; | ||||
} | ||||
description "Role of the port in a fabric."; | ||||
} | ||||
typedef fabric-port-type { | identity bw-100G { | |||
type enumeration { | base bandwidth; | |||
enum layer2interface { | description | |||
description "L2 interface"; | "100Gbps"; | |||
} | ||||
enum layer3interface { | ||||
description "L3 interface"; | ||||
} | ||||
enum layer2Tunnel { | ||||
description "L2 tunnel"; | ||||
} | ||||
enum layer3Tunnel { | ||||
description "L3 tunnel"; | ||||
} | ||||
} | ||||
description | ||||
"Fabric port type"; | ||||
} | ||||
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@2018-11-08.yang" | identity bw-400G { | |||
module ietf-dc-fabric-topology { | base bandwidth; | |||
description | ||||
"400Gbps"; | ||||
} | ||||
identity device-role { | ||||
description | ||||
"Base for the device role in a fabric."; | ||||
} | ||||
identity spine { | ||||
base device-role; | ||||
description | ||||
"This is a spine node in a fabric."; | ||||
} | ||||
identity leaf { | ||||
base device-role; | ||||
description | ||||
"This is a leaf node in a fabric."; | ||||
} | ||||
identity border { | ||||
base device-role; | ||||
description | ||||
"This is a border node to connect to other | ||||
fabric/network."; | ||||
} | ||||
identity fabric-port-role { | ||||
description | ||||
"Base for the port's role in a fabric."; | ||||
} | ||||
identity internal { | ||||
base fabric-port-role; | ||||
description | ||||
"The port is used for devices to access each | ||||
other within a fabric."; | ||||
} | ||||
identity external { | ||||
base fabric-port-role; | ||||
description | ||||
"The port is used for a fabric to connect to | ||||
outside network."; | ||||
} | ||||
identity access { | ||||
base fabric-port-role; | ||||
description | ||||
"The port is used for an endpoint to connect | ||||
to a fabric."; | ||||
} | ||||
identity service-capability { | ||||
description | ||||
"Base for the service of the fabric "; | ||||
} | ||||
identity ip-mapping { | ||||
base service-capability; | ||||
description | ||||
"NAT."; | ||||
} | ||||
identity acl-redirect { | ||||
base service-capability; | ||||
description | ||||
"ACL redirect, which can provide a Service Function Chain (SFC)."; | ||||
} | ||||
identity dynamic-route-exchange { | ||||
base service-capability; | ||||
description | ||||
"Dynamic route exchange."; | ||||
} | ||||
/* | ||||
* Typedefs | ||||
*/ | ||||
typedef fabric-id { | ||||
type nw:node-id; | ||||
description | ||||
"An identifier for a fabric in a topology. | ||||
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 { | ||||
type identityref { | ||||
base service-capability; | ||||
} | ||||
description | ||||
"Service capability of the fabric"; | ||||
} | ||||
typedef port-type { | ||||
type identityref { | ||||
base port-type; | ||||
} | ||||
description | ||||
"Port type: ethernet or serial or others."; | ||||
} | ||||
typedef bandwidth { | ||||
type identityref { | ||||
base bandwidth; | ||||
} | ||||
description | ||||
"Bandwidth of the port."; | ||||
} | ||||
typedef node-ref { | ||||
type instance-identifier; | ||||
description | ||||
"A reference to a node in topology"; | ||||
} | ||||
typedef tp-ref { | ||||
type instance-identifier; | ||||
description | ||||
"A reference to a termination point in topology"; | ||||
} | ||||
typedef link-ref { | ||||
type instance-identifier; | ||||
description | ||||
"A reference to a link in topology"; | ||||
} | ||||
typedef underlay-network-type { | ||||
type identityref { | ||||
base fabric-type; | ||||
} | ||||
description | ||||
"The type of physical network that implements | ||||
this fabric. Examples are VLAN and TRILL."; | ||||
} | ||||
typedef device-role { | ||||
type identityref { | ||||
base device-role; | ||||
} | ||||
description | ||||
"Role of the device node."; | ||||
} | ||||
typedef fabric-port-role { | ||||
type identityref { | ||||
base fabric-port-role; | ||||
} | ||||
description | ||||
"Role of the port in a fabric."; | ||||
} | ||||
typedef fabric-port-type { | ||||
type enumeration { | ||||
enum layer2interface { | ||||
description | ||||
"L2 interface"; | ||||
} | ||||
enum layer3interface { | ||||
description | ||||
"L3 interface"; | ||||
} | ||||
enum layer2Tunnel { | ||||
description | ||||
"L2 tunnel"; | ||||
} | ||||
enum layer3Tunnel { | ||||
description | ||||
"L3 tunnel"; | ||||
} | ||||
} | ||||
description | ||||
"Fabric port type"; | ||||
} | ||||
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" | ||||
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 | "RFC 8345: A YANG Data Model for Network Topologies"; | |||
"RFC 8345:A Data Model for Network Topologies"; | ||||
} | } | |||
import ietf-network-topology { | import ietf-network-topology { | |||
prefix nt; | prefix nt; | |||
reference | ||||
reference | "RFC 8345: A YANG 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 | |||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-12 | Data-Center Networks"; | |||
NOTE TO RFC EDITOR: | ||||
(1) Please replace above reference to | ||||
draft-ietf-i2rs-yang-dc-fabric-network-topology-12 | ||||
with RFC number when publised (i.e. RFC xxxx). | ||||
(2) Please replace the data in the revision statement | ||||
with the data of publication when published."; | ||||
} | } | |||
organization | organization | |||
"IETF I2RS (Interface to the Routing System) Working Group"; | "IETF I2RS (Interface to the Routing System) Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.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 | ||||
<mailto:zhuangyan.zhuang@huawei.com> | ||||
Editor: Danian Shi | Editor: Yan Zhuang | |||
<mailto:shidanian@huawei.com>"; | <mailto:zhuangyan.zhuang@huawei.com> | |||
Editor: Danian Shi | ||||
<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. | fabric. | |||
Copyright (c) 2018 IETF Trust and the persons identified as | ||||
authors of the code. All rights reserved. | ||||
Redistribution and use in source and binary forms, with or | Copyright (c) 2019 IETF Trust and the persons identified | |||
without modification, is permitted pursuant to, and subject | as authors of the code. All rights reserved. | |||
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 | Redistribution and use in source and binary forms, with | |||
draft-ietf-i2rs-yang-dc-fabric-network-topology; | or without modification, is permitted pursuant to, and | |||
see the RFC itself for full legal notices. | 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). | ||||
NOTE TO RFC EDITOR: Please replace above reference to | This version of this YANG module is part of RFC 8542; | |||
draft-ietf-i2rs-yang-dc-fabric-network-topology-12 with RFC | see the RFC itself for full legal notices."; | |||
number when published (i.e. RFC xxxx)."; | ||||
revision "2018-11-08"{ | revision 2019-02-25 { | |||
description | description | |||
"Initial revision. | "Initial revision."; | |||
NOTE TO RFC EDITOR: Please replace the following | reference | |||
reference to draft-ietf-i2rs-yang-dc-fabric-network | "RFC 8542: A YANG Data Model for Fabric Topology | |||
-topology-12 with RFC number when published | in Data-Center Networks"; | |||
(i.e. RFC xxxx)."; | ||||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-12"; | ||||
} | } | |||
//grouping statements | //grouping statements | |||
grouping fabric-network-type { | grouping fabric-network-type { | |||
description "Identify the topology type to be fabric."; | description | |||
"Identify the topology type to be fabric."; | ||||
container fabric-network { | container fabric-network { | |||
presence "indicates fabric Network"; | presence "indicates fabric Network"; | |||
description | description | |||
"The presence of the container node indicates | "The presence of the container node indicates | |||
fabric Topology"; | fabric topology"; | |||
} | } | |||
} | } | |||
grouping fabric-options { | grouping fabric-options { | |||
description "Options for a fabric"; | description | |||
leaf gateway-mode { | "Options for a fabric"; | |||
type enumeration { | leaf gateway-mode { | |||
enum centralized { | type enumeration { | |||
description "The Fabric uses centralized | enum centralized { | |||
gateway, in which gateway is deployed on SPINE | description | |||
node."; | "The Fabric uses centralized | |||
} | gateway, in which gateway is deployed on SPINE | |||
enum distributed { | node."; | |||
description "The Fabric uses distributed | } | |||
gateway, in which gateway is deployed on LEAF | enum distributed { | |||
node."; | description | |||
} | "The Fabric uses distributed | |||
} | gateway, in which gateway is deployed on LEAF | |||
default "distributed"; | node."; | |||
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 discard."; | ||||
} | ||||
} | ||||
default "normal"; | ||||
description "Traffic behavior of the fabric"; | ||||
} | } | |||
default "distributed"; | ||||
leaf-list capability-supported { | description | |||
type fabrictypes:service-capabilities; | "Gateway mode of the fabric"; | |||
} | ||||
leaf traffic-behavior { | ||||
type enumeration { | ||||
enum normal { | ||||
description | description | |||
"It provides a list of supported services of the | "Normal means no policy is needed | |||
fabric. The service-capabilities is defined as | for all traffic"; | |||
identity-ref. Users can define more services | } | |||
by defining new identities."; | 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 device-attributes { | |||
description "device attributes"; | description | |||
leaf device-ref { | "device attributes"; | |||
type fabrictypes:node-ref; | leaf device-ref { | |||
description | type fabrictypes:node-ref; | |||
"The device that the fabric includes which refers | description | |||
to a node in another topology."; | "The device that the fabric includes that refers | |||
} | to a node in another topology."; | |||
leaf-list role { | } | |||
type fabrictypes:device-role; | leaf-list role { | |||
default fabrictypes:leaf; | type fabrictypes:device-role; | |||
description | default "fabrictypes:leaf"; | |||
"It is a list of device-role to represent the roles | description | |||
that a device plays within a POD, such as SPINE, | "It is a list of device roles to represent the roles | |||
LEAF, Border, or Border-Leaf. | that a device plays within a POD, such as SPINE, | |||
The device-role is defined as identity-ref. If more | LEAF, Border, or Border-Leaf. | |||
than 2 stage is used for a POD, users can | The device role is defined as identity-ref. If more | |||
define new identities for the device-role."; | than 2 stages are used for a POD, users can | |||
} | define new identities for the device role."; | |||
} | ||||
} | } | |||
grouping link-attributes { | grouping link-attributes { | |||
description "Link attributes"; | description | |||
leaf link-ref { | "Link attributes"; | |||
type fabrictypes:link-ref; | leaf link-ref { | |||
description | type fabrictypes:link-ref; | |||
"The link that the fabric includes which refers to | description | |||
a link in another topology."; | "The link that the fabric includes that refers to | |||
} | a link in another topology."; | |||
} | ||||
} | } | |||
grouping port-attributes { | grouping port-attributes { | |||
description "Port attributes"; | description | |||
leaf port-ref { | "Port attributes"; | |||
type fabrictypes:tp-ref; | leaf port-ref { | |||
description | type fabrictypes:tp-ref; | |||
"The port that the fabric includes which refers to | description | |||
a termination-point in another topology."; | "The port that the fabric includes that refers to | |||
} | a termination-point in another topology."; | |||
leaf port-type { | } | |||
type fabrictypes:port-type; | leaf port-type { | |||
description | type fabrictypes:port-type; | |||
"Port type is defined as identity-ref. If current | description | |||
types includes ethernet or serial. If more types | "Port type is defined as identity-ref. The current | |||
are needed, developers can define new identities."; | types include ethernet or serial. If more types | |||
} | are needed, developers can define new identities."; | |||
leaf bandwidth { | } | |||
type fabrictypes:bandwidth; | leaf bandwidth { | |||
description | type fabrictypes:bandwidth; | |||
"Bandwidth of the port. It is defined as identity-ref. | description | |||
If more speeds are introduced, developers can define | "Bandwidth of the port. It is defined as identity-ref. | |||
new identities for them. Current speeds include 1M, 10M, | If more speeds are introduced, developers can define | |||
100M, 1G, 10G, 25G, 40G, 100G and 400G."; | new identities for them. Current speeds include 1M, 10M, | |||
100M, 1G, 10G, 25G, 40G, 100G, and 400G."; | ||||
} | } | |||
} | } | |||
grouping fabric-attributes { | grouping fabric-attributes { | |||
description "Attributes of a fabric"; | description | |||
"Attributes of a fabric"; | ||||
leaf fabric-id { | leaf fabric-id { | |||
type fabrictypes:fabric-id; | type fabrictypes:fabric-id; | |||
description | description | |||
"An identifier for a fabric in a topology. | "An identifier for a fabric in a topology. | |||
This identifier can be generated when composing a fabric. | This identifier can be generated when composing a fabric. | |||
The composition of a fabric can be achieved by defining a | The composition of a fabric can be achieved by defining an | |||
RPC, which is left for vendor specific implementation and | RPC, which is left for vendor-specific implementation and | |||
not provided in this model."; | not provided in this model."; | |||
} | ||||
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 { | ||||
leaf name { | type int32; | |||
type string; | description | |||
description | "The upper-limit VNI."; | |||
"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 VNI(VXLAN Network Identifier | ||||
defined in RFC 7348)s that the POD uses."; | ||||
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; | ||||
} | } | |||
} | ||||
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; | ||||
} | ||||
} | } | |||
// augment statements | // augment statements | |||
augment "/nw:networks/nw:network/nw:network-types" { | augment "/nw:networks/nw:network/nw:network-types" { | |||
description | description | |||
"Introduce a new network type for Fabric-based topology"; | "Introduce a new network type for fabric-based topology"; | |||
uses fabric-network-type; | ||||
uses fabric-network-type; | ||||
} | } | |||
augment "/nw:networks/nw:network/nw:node" { | augment "/nw:networks/nw:network/nw:node" { | |||
when "/nw:networks/nw:network/nw:network-types/" | when '/nw:networks/nw:network/nw:network-types/' | |||
+"fabric:fabric-network"{ | + 'fabric:fabric-network' { | |||
description | description | |||
"Augmentation parameters apply only for networks | "Augmentation parameters apply only for networks | |||
with fabric topology"; | with fabric topology"; | |||
} | } | |||
description "Augmentation for fabric nodes created by | description | |||
fabric topology."; | "Augmentation for fabric nodes created by | |||
container fabric-attributes { | fabric topology."; | |||
description | container fabric-attributes { | |||
"Attributes for a fabric network"; | description | |||
"Attributes for a fabric network"; | ||||
uses fabric-attributes; | uses fabric-attributes; | |||
} | } | |||
} | } | |||
augment "/nw:networks/nw:network/nw:node/nt:termination-point" { | augment "/nw:networks/nw:network/nw:node/nt:termination-point" { | |||
when "/nw:networks/nw:network/nw:network-types/" | when '/nw:networks/nw:network/nw:network-types/' | |||
+"fabric:fabric-network" { | + 'fabric:fabric-network' { | |||
description | description | |||
"Augmentation parameters apply only for networks | "Augmentation parameters apply only for networks | |||
with fabric topology"; | with fabric topology"; | |||
} | } | |||
description "Augmentation for port on fabric."; | description | |||
"Augmentation for port on fabric."; | ||||
container fport-attributes { | container fport-attributes { | |||
config false; | config false; | |||
description | description | |||
"Attributes for fabric ports"; | "Attributes for fabric ports"; | |||
uses fabrictypes:fabric-port; | uses fabrictypes:fabric-port; | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
5. IANA Considerations | 5. IANA Considerations | |||
This document registers the following namespace URIs in the "IETF XML | This document registers the following namespace URIs in the "IETF XML | |||
Registry" [RFC3688]: | Registry" [RFC3688]: | |||
URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types | URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A; the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology | URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A; the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state | URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A; the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
This document registers the following YANG modules in the "YANG | This document registers the following YANG modules in the "YANG | |||
Module Names" registry [RFC6020]: | Module Names" registry [RFC6020]: | |||
NOTE TO THE RFC EDITOR: In the list below, please replace references | ||||
to "draft-ietf-i2rs-yang-dc-fabric-network-topology-12 (RFC form)" | ||||
with RFC number when published (i.e. RFC xxxx). | ||||
Name: ietf-dc-fabric-types | Name: ietf-dc-fabric-types | |||
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 | |||
Reference: RFC 8542 | ||||
Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-12.txt | ||||
(RFC form) | ||||
Name: ietf-dc-fabric-topology | Name: ietf-dc-fabric-topology | |||
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 | |||
Reference: RFC 8542 | ||||
Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-12.txt | ||||
(RFC form) | ||||
Name: ietf-dc-fabric-topology-state | Name: ietf-dc-fabric-topology-state | |||
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 | |||
Reference: RFC 8542 | ||||
Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-12.txt | ||||
(RFC form) | ||||
6. Security Considerations | 6. Security Considerations | |||
The YANG module defined in this document is designed to be accessed | The YANG module defined in this document is designed to be accessed | |||
via network management protocols such as NETCONF [RFC6241] or | via network management protocols such as NETCONF [RFC6241] or | |||
RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport | RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport | |||
layer, and the mandatory-to-implement secure transport is Secure | layer, and the mandatory-to-implement secure transport is Secure | |||
Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the | Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the | |||
mandatory-to-implement secure transport is TLS [RFC5246]. | mandatory-to-implement secure transport is TLS [RFC8446]. | |||
The NETCONF access control model [RFC8341] provides the means to | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
restrict access for particular NETCONF or RESTCONF users to a | provides the means to restrict access for particular NETCONF or | |||
preconfigured subset of all available NETCONF or RESTCONF protocol | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
operations and content. The subtrees and data nodes and their | RESTCONF protocol operations and content. | |||
There are a number of data nodes defined in this YANG module that are | ||||
writable/creatable/deletable (i.e., config true, which is the | ||||
default). These data nodes may be considered sensitive or vulnerable | ||||
in some network environments. Write operations (e.g., edit-config) | ||||
to these data nodes without proper protection can have a negative | ||||
effect on network operations. The subtrees and data nodes and their | ||||
sensitivity/vulnerability in the ietf-dc-fabric-topology module are | sensitivity/vulnerability in the ietf-dc-fabric-topology module are | |||
as follows: | as follows: | |||
fabric-attributes: A malicious client could attempt to sabotage the | fabric-attributes: A malicious client could attempt to sabotage the | |||
configuration of important fabric attributes, such as device-nodes or | configuration of important fabric attributes, such as device nodes or | |||
type. | type. | |||
Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
notification) to these data nodes. The subtrees and data nodes and | notification) to these data nodes. The subtrees and data nodes and | |||
their sensitivity/vulnerability in the ietf-dc-fabric-topology module | their sensitivity/vulnerability in the ietf-dc-fabric-topology module | |||
are as follows: | are as follows: | |||
fport-attributes: A malicious client could attempt to read the | fport-attributes: A malicious client could attempt to read the | |||
connections of fabrics without permission, such as device-port, name. | connections of fabrics without permission, such as device-port and | |||
name. | ||||
7. Acknowledgements | ||||
We wish to acknowledge the helpful contributions, comments, and | ||||
suggestions that were received from Alexander Clemm, Donald E. | ||||
Eastlake, Xufeng Liu, Susan Hares, Wei Song, Luis M. Contreras and | ||||
Benoit Claise. | ||||
8. References | 7. References | |||
8.1. Normative References | 7.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
<http://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
[RFC5246] Dierks, T. and E. Rescorla, "Transport Layer Security | ||||
(TLS) Protocol Version 1.2", August 2008, | ||||
<http://www.rfc-editor.org/info/rfc5246>. | ||||
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
October 2010. | DOI 10.17487/RFC6020, October 2010, | |||
<https://www.rfc-editor.org/info/rfc6020>. | ||||
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
Bierman, "Network Configuration Protocol (NETCONF)", June | and A. Bierman, Ed., "Network Configuration Protocol | |||
2011, <http://www.rfc-editor.org/info/rfc6241>. | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6241>. | ||||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
<http://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
[RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
RFC 7950, DOI 10.17487/RFC7950, Auguest 2016. | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7950>. | ||||
[RFC8040] Bierman, A., Bjorklund, B., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
Protocol", Jan 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
<http://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <http://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | |||
Protocol Access Control Model", March 2018, | Access Control Model", STD 91, RFC 8341, | |||
<http://www.rfc-editor.org/info/rfc8341>. | DOI 10.17487/RFC8341, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8341>. | ||||
[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
and R. Wilton, "Network Management Datastore | and R. Wilton, "Network Management Datastore Architecture | |||
Architecture", RFC 8342, March 2018. | (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8342>. | ||||
[RFC8345] Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., | [RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., | |||
and H. Ananthakrishnan, "A YANG Data Model for Network | Ananthakrishnan, H., and X. Liu, "A YANG Data Model for | |||
Topologies", RFC 8345, March 2018, | Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March | |||
<http://www.rfc-editor.org/info/rfc8345>. | 2018, <https://www.rfc-editor.org/info/rfc8345>. | |||
8.2. Informative References | [RFC8346] Clemm, A., Medved, J., Varga, R., Liu, X., | |||
Ananthakrishnan, H., and N. Bahadur, "A YANG Data Model | ||||
for Layer 3 Topologies", RFC 8346, DOI 10.17487/RFC8346, | ||||
March 2018, <https://www.rfc-editor.org/info/rfc8346>. | ||||
[I-D.draft-ietf-nvo3-geneve] | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
Network Virtualization Encapsulation", I-D draft-ietf- | <https://www.rfc-editor.org/info/rfc8446>. | |||
nvo3-geneve-06, March 2018. | ||||
7.2. Informative References | ||||
[GENEVE] Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic | ||||
Network Virtualization Encapsulation", Work in Progress, | ||||
draft-ietf-nvo3-geneve-12, 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", August 2014, | Networks", RFC 7348, DOI 10.17487/RFC7348, August 2014, | |||
<http://www.rfc-editor.org/info/rfc7348>. | <https://www.rfc-editor.org/info/rfc7348>. | |||
[RFC8340] Bjorklund, M. and L. Berger, "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
RFC 8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
<http://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
[RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", | [RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", | |||
RFC 8344, March 2018, | RFC 8344, DOI 10.17487/RFC8344, March 2018, | |||
<http://www.rfc-editor.org/info/rfc8344>. | <https://www.rfc-editor.org/info/rfc8344>. | |||
[RFC8346] Clemm, A., Medved, J., Tkacik, T., Liu, X., Bryskin, I., | ||||
Guo, A., Ananthakrishnan, H., Bahadur, N., and V. Beeram, | ||||
"A YANG Data Model for Layer 3 Topologies", RFC 8346, | ||||
March 2018, <http://www.rfc-editor.org/info/rfc8346>. | ||||
Appendix A. Non NMDA -state modules | Appendix A. Non-NMDA-State Modules | |||
The YANG module ietf-dc-fabric-topology defined in this document | The YANG module, ietf-dc-fabric-topology, defined in this document | |||
augments two modules, ietf-network and ietf-network-topology, that | augments two modules, ietf-network and ietf-network-topology, that | |||
are designed to be used in conjunction with implementations that | are designed to be used in conjunction with implementations that | |||
support the Network Management Datastore Architecture (NMDA) defined | support the Network Management Datastore Architecture (NMDA) defined | |||
in [RFC8342]. In order to allow implementations to use the model | in [RFC8342]. In order to allow implementations to use the model | |||
even in case when NMDA is not supported, a set of companion modules | even in cases when NMDA is not supported, a set of companion modules | |||
have been defined that represent a state model of networks and | have been defined that represent a state model of networks and | |||
network topologies, ietf-network-state and ietf-network-topology- | network topologies: ietf-network-state and ietf-network-topology- | |||
state, respectively. | state, respectively. | |||
In order to be able to use the model for fabric topologies defined in | In order to be able to use the model for fabric topologies defined in | |||
this in this document in conjunction with non-NMDA compliant | this document in conjunction with non-NMDA-compliant implementations, | |||
implementations, a corresponding companion module needs to be | a corresponding companion module needs to be introduced as well. | |||
introduced as well. This companion module, ietf-dc-fabric-topology- | This companion module, ietf-dc-fabric-topology-state, mirrors ietf- | |||
state, mirrors ietf-dc-fabric-topology. However, the module augments | dc-fabric-topology. However, the ietf-dc-fabric-topology-state | |||
ietf-network-state (instead of ietf-network and ietf-network- | module augments ietf-network-state (instead of ietf-network and ietf- | |||
topology) and all of its data nodes are non-configurable. | network-topology), and all of its data nodes are non-configurable. | |||
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 below. As the structure of the | The definition of the module follows. As the structure of the module | |||
module mirrors that of its underlying module, the YANG tree is not | mirrors that of its underlying module, the YANG tree is not depicted | |||
depicted separately. | separately. | |||
<CODE BEGINS> | ||||
file "ietf-dc-fabric-topology-state@2018-11-08.yang" | ||||
module ietf-dc-fabric-topology-state { | ||||
yang-version 1.1; | ||||
namespace | ||||
"urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state"; | ||||
prefix sfabric; | ||||
import ietf-network-state { | <CODE BEGINS> file "ietf-dc-fabric-topology-state@2019-02-25.yang" | |||
prefix nws; | module ietf-dc-fabric-topology-state { | |||
reference | yang-version 1.1; | |||
"RFC 8345:A Data Model for Network Topologies"; | namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state"; | |||
} | prefix sfabric; | |||
import ietf-dc-fabric-types { | ||||
prefix fabrictypes; | ||||
reference | import ietf-network-state { | |||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-12 | prefix nws; | |||
NOTE TO RFC EDITOR: | reference | |||
(1) Please replace above reference to draft-ietf-i2rs-yang | "RFC 8345: A Data Model for Network Topologies"; | |||
-dc-fabric-network-topology-09 with RFC number when | } | |||
published (i.e. RFC xxxx). | import ietf-dc-fabric-types { | |||
(2) Please replace the data in the revision statement | prefix fabrictypes; | |||
with the data of publication when published."; | reference | |||
} | "RFC 8542: A YANG Data Model for Fabric Topology in | |||
Data-Center Networks"; | ||||
} | ||||
organization | organization | |||
"IETF I2RS (Interface to the Routing System) Working Group"; | "IETF I2RS (Interface to the Routing System) Working Group"; | |||
contact | ||||
"WG Web: <https://datatracker.ietf.org/wg/i2rs/> | ||||
WG List: <mailto:i2rs@ietf.org> | ||||
contact | Editor: Yan Zhuang | |||
"WG Web: <http://tools.ietf.org/wg/i2rs/ > | <mailto:zhuangyan.zhuang@huawei.com> | |||
WG List: <mailto:i2rs@ietf.org> | ||||
Editor: Yan Zhuang | Editor: Danian Shi | |||
<mailto:zhuangyan.zhuang@huawei.com> | <mailto:shidanian@huawei.com>"; | |||
description | ||||
"This module contains a collection of YANG definitions for | ||||
fabric state, representing topology that either is learned | ||||
or results from applying topology that has been | ||||
configured per the ietf-dc-fabric-topology model, mirroring | ||||
the corresponding data nodes in this model. | ||||
Editor: Danian Shi | This model mirrors the configuration tree of ietf-dc-fabric | |||
<mailto:shidanian@huawei.com>"; | -topology but contains only read-only state data. The model | |||
is not needed when the implementation infrastructure supports | ||||
the Network Management Datastore Architecture (NMDA). | ||||
description | Copyright (c) 2019 IETF Trust and the persons identified as | |||
"This module contains a collection of YANG definitions for | authors of the code. All rights reserved. | |||
Fabric state, representing topology that is either learned, | ||||
or topology that results from applying toplogy that has been | ||||
configured per the ietf-dc-fabric-topology model, mirroring | ||||
the corresponding data nodes in this model. | ||||
This model mirrors the configuration tree of ietf-dc-fabric | Redistribution and use in source and binary forms, with or | |||
-topology, but contains only read-only state data. The model | without modification, is permitted pursuant to, and subject | |||
is not needed when the implementation infrastructure supports | to the license terms contained in, the Simplified BSD | |||
the Network Management Datastore Architecture(NMDA). | License set forth in Section 4.c of the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | ||||
(https://trustee.ietf.org/license-info). | ||||
Copyright (c) 2018 IETF Trust and the persons identified as | This version of this YANG module is part of RFC 8542; | |||
authors of the code. All rights reserved. | see the RFC itself for full legal notices."; | |||
Redistribution and use in source and binary forms, with or | revision 2019-02-25 { | |||
without modification, is permitted pursuant to, and subject | description | |||
to the license terms contained in, the Simplified BSD | "Initial revision."; | |||
License set forth in Section 4.c of the IETF Trust's Legal | reference | |||
Provisions Relating to IETF Documents | "RFC 8542: A YANG Data Model for Fabric Topology in | |||
(http:s//trustee.ietf.org/license-info). | Data-Center Networks"; | |||
} | ||||
This version of this YANG module is part of | //grouping statements | |||
draft-ietf-i2rs-yang-dc-fabric-network-topology; | ||||
see the RFC itself for full legal notices. | ||||
NOTE TO RFC EDITOR: Please replace above reference to | grouping fabric-network-type { | |||
draft-ietf-i2rs-yang-dc-fabric-network-topology-12 with RFC | description | |||
number when published (i.e. RFC xxxx)."; | "Identify the topology type to be fabric."; | |||
revision "2018-11-08"{ | container fabric-network { | |||
description | presence "indicates fabric Network"; | |||
"Initial revision. | description | |||
NOTE TO RFC EDITOR: | "The presence of the container node indicates | |||
Please replace the following reference to | fabric topology"; | |||
draft-ietf-i2rs-yang-dc-fabric-network-topology-12 | } | |||
with RFC number when published (i.e. RFC xxxx)."; | } | |||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-12"; | ||||
} | ||||
//grouping statements | grouping fabric-options { | |||
grouping fabric-network-type { | description | |||
description "Identify the topology type to be fabric."; | "Options for a fabric"; | |||
container fabric-network { | leaf gateway-mode { | |||
presence "indicates fabric Network"; | type enumeration { | |||
enum centralized { | ||||
description | description | |||
"The presence of the container node indicates | "The fabric uses centralized | |||
fabric topology"; | 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"; | ||||
grouping fabric-options { | description | |||
description "Options for a fabric"; | "Gateway mode of the fabric"; | |||
} | ||||
leaf gateway-mode { | leaf traffic-behavior { | |||
type enumeration { | type enumeration { | |||
enum centralized { | enum normal { | |||
description "The Fabric uses centralized | description | |||
gateway, in which gateway is deployed on SPINE | "Normal means no policy is needed | |||
node."; | for all traffic"; | |||
} | } | |||
enum distributed { | enum policy-driven { | |||
description "The Fabric uses distributed | description | |||
gateway, in which gateway is deployed on LEAF | "Policy driven means policy is | |||
node."; | needed for the traffic; otherwise, the traffic | |||
} | will be discarded."; | |||
} | } | |||
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 device-attributes { | ||||
description "device attributes"; | ||||
leaf device-ref { | ||||
type fabrictypes:node-ref; | ||||
description | ||||
"The device that the fabric includes which refers | ||||
to a node in another topology."; | ||||
} | ||||
leaf-list role { | ||||
type fabrictypes:device-role; | ||||
default fabrictypes:leaf; | ||||
description | ||||
"It is a list of devce-role 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 stage is used for a POD, users can | ||||
define new identities for the device-role."; | ||||
} | ||||
} | ||||
grouping link-attributes { | ||||
description "Link attributes"; | ||||
leaf link-ref { | ||||
type fabrictypes:link-ref; | ||||
description | ||||
"The link that the fabric includes which refers to | ||||
a link in another topology."; | ||||
} | ||||
} | ||||
grouping port-attributes { | ||||
description "Port attributes"; | ||||
leaf port-ref { | ||||
type fabrictypes:tp-ref; | ||||
description | ||||
"The port that the fabric includes which refers to | ||||
a termination-point in another topology."; | ||||
} | ||||
leaf port-type { | ||||
type fabrictypes:port-type; | ||||
description | ||||
"Port type is defined as identity-ref. If current | ||||
types includes 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."; | ||||
} | ||||
} | } | |||
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-attributes { | grouping device-attributes { | |||
description "Attributes of a fabric"; | description | |||
"device attributes"; | ||||
leaf fabric-id { | leaf device-ref { | |||
type fabrictypes:fabric-id; | type fabrictypes:node-ref; | |||
description | description | |||
"Fabric id"; | "The device that the fabric includes that refers | |||
} | to a node in another topology."; | |||
} | ||||
leaf name { | leaf-list role { | |||
type string; | type fabrictypes:device-role; | |||
description | default "fabrictypes:leaf"; | |||
"Name of the fabric"; | description | |||
} | "It is a list of device roles to represent the roles | |||
that a device plays within a POD, such as SPINE, | ||||
leaf type { | LEAF, Border, or Border-Leaf. | |||
type fabrictypes:underlay-network-type; | The device role is defined as identity-ref. If more | |||
description | than 2 stages are used for a POD, users can | |||
"The type of physical network that implements this | define new identities for the device role."; | |||
fabric. Examples are VLAN, and TRILL."; | } | |||
} | } | |||
container vni-capacity { | ||||
description "The range of the VNI(VXLAN Network | ||||
Identifier defined in RFC 7348)s that the POD uses."; | ||||
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 { | grouping link-attributes { | |||
description "Options of the fabric"; | description | |||
uses fabric-options; | "Link attributes"; | |||
} | leaf link-ref { | |||
list device-nodes { | type fabrictypes:link-ref; | |||
key device-ref; | description | |||
description "Device nodes that are included in a fabric."; | "The link that the fabric includes that refers to | |||
uses device-attributes; | a link in another topology."; | |||
} | } | |||
} | ||||
list device-links { | grouping port-attributes { | |||
key link-ref; | description | |||
description "Links that are included within a fabric."; | "Port attributes"; | |||
uses link-attributes; | leaf port-ref { | |||
} | type fabrictypes:tp-ref; | |||
description | ||||
"The port that the fabric includes that refers to | ||||
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."; | ||||
} | ||||
} | ||||
list device-ports { | grouping fabric-attributes { | |||
key port-ref; | description | |||
description "Ports that are included in the fabric."; | "Attributes of a fabric"; | |||
uses port-attributes; | 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 { | ||||
// augment statements | type int32; | |||
augment "/nws:networks/nws:network/nws:network-types" { | ||||
description | description | |||
"Introduce a new network type for Fabric-based logical | "The upper-limit VNI."; | |||
topology"; | ||||
uses fabric-network-type; | ||||
} | } | |||
} | ||||
augment "/nws:networks/nws:network/nws:node" { | leaf description { | |||
when "/nws:networks/nws:network/nws:network-types" | type string; | |||
+"/sfabric:fabric-network"{ | description | |||
description "Augmentation parameters apply only for | "Description of the fabric"; | |||
networks with fabric topology."; | } | |||
} | container options { | |||
description "Augmentation for fabric nodes."; | description | |||
container fabric-attributes-state { | "Options of the fabric"; | |||
description | uses fabric-options; | |||
"Attributes for a fabric network"; | } | |||
uses fabric-attributes; | 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; | ||||
} | ||||
} | } | |||
<CODE ENDS> | ||||
// augment statements | ||||
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 | ||||
We wish to acknowledge the helpful contributions, comments, and | ||||
suggestions that were received from Alexander Clemm, Donald E. | ||||
Eastlake 3rd, Xufeng Liu, Susan Hares, Wei Song, Luis M. Contreras, | ||||
and Benoit Claise. | ||||
Authors' Addresses | Authors' Addresses | |||
Yan Zhuang | Yan Zhuang | |||
Huawei | Huawei | |||
101 Software Avenue, Yuhua District | 101 Software Avenue, Yuhua District | |||
Nanjing, Jiangsu 210012 | Nanjing, Jiangsu 210012 | |||
China | China | |||
Email: zhuangyan.zhuang@huawei.com | Email: zhuangyan.zhuang@huawei.com | |||
End of changes. 180 change blocks. | ||||
994 lines changed or deleted | 1017 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/ |