draft-ietf-i2rs-yang-dc-fabric-network-topology-08.txt   draft-ietf-i2rs-yang-dc-fabric-network-topology-09.txt 
I2RS Working Group Y. Zhuang I2RS Working Group Y. Zhuang
Internet-Draft D. Shi Internet-Draft D. Shi
Intended status: Standards Track Huawei Intended status: Standards Track Huawei
Expires: September 28, 2018 R. Gu Expires: October 20, 2018 R. Gu
China Mobile China Mobile
H. Ananthakrishnan H. Ananthakrishnan
Packet Design Packet Design
March 27, 2018 April 18, 2018
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-08 draft-ietf-i2rs-yang-dc-fabric-network-topology-09
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 Network. Center Networks.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 28, 2018. This Internet-Draft will expire on October 20, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 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 an Acronyms . . . . . . . . . . . . . . . . . . . 3 2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3
2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 2.1. 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 . . . . . . . . . . . . . . . . . . . 5 3.2.1. Fabric Topology . . . . . . . . . . . . . . . . . . . 4
3.2.2. Fabric node extension . . . . . . . . . . . . . . . . 6 3.2.2. Fabric node extension . . . . . . . . . . . . . . . . 5
3.2.3. Fabric termination-point extension . . . . . . . . . 7 3.2.3. Fabric termination-point extension . . . . . . . . . 6
4. Fabric YANG Module . . . . . . . . . . . . . . . . . . . . . 7 4. Fabric YANG Module . . . . . . . . . . . . . . . . . . . . . 7
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20
6. Security Considerations . . . . . . . . . . . . . . . . . . . 20 6. Security Considerations . . . . . . . . . . . . . . . . . . . 21
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 22
8.1. Normative References . . . . . . . . . . . . . . . . . . 21 8.1. Normative References . . . . . . . . . . . . . . . . . . 22
8.2. Informative References . . . . . . . . . . . . . . . . . 22 8.2. Informative References . . . . . . . . . . . . . . . . . 23
Appendix A. Non NMDA -state modules . . . . . . . . . . . . . . 22 Appendix A. Non NMDA -state modules . . . . . . . . . . . . . . 24
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30
1. Introduction 1. Introduction
Normally, a data center (DC) network is composed of single or Normally, a data center (DC) network is composed of single or
multiple fabrics which are also known as PODs (Points Of Delivery). multiple fabrics which are also known as PODs (Points Of Delivery).
These fabrics may be heterogeneous due to implementation of different These 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 enrolled. For example, Fabric A may use VXLAN while features are rolled out. For example, Fabric A may use VXLAN while
Fabric B may use VLAN within a DC network. Likewise, an existing Fabric B may use VLAN within a DC network. Likewise, an existing
fabric may use VXLAN while a new fabric, for example a fabric fabric may use VXLAN while a new fabric, for example a fabric
introduced for DC upgrade and expansion, may implement a technique introduced for DC upgrade and expansion, may implement a technique
discussed in NVO3 WG, such as Geneve [I-D. draft-ietf-nvo3-geneve]. discussed in NVO3 WG, such as Geneve [I-D. draft-ietf-nvo3-geneve].
The configuration and management of such DC networks with The configuration and management of such DC networks with
heterogeneous fabrics will result in considerable complexity, heterogeneous fabrics will result in considerable complexity,
requiring a fair amount of sophistication. requiring a fair amount of sophistication.
Luckily, for a DC network, a fabric can be considered as an atomic Luckily, for a DC network, a fabric can be considered as an atomic
structure for management purposes. From this point of view, the structure for management purposes. From this point of view, the
skipping to change at page 3, line 18 skipping to change at page 3, line 18
models defined in [RFC8345] with information that is specific to Data models defined in [RFC8345] with information that is specific to Data
Center fabric networks. 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] and Within the context of topology architecture defined in [RFC8345],
[I.D. draft-ietf-i2rs-usecase-reqs-summary], this model can also be this model can also be treated as an application of the I2RS network
treated as an application of the I2RS network topology model topology model [RFC8345] in the scenario of Data center network
[RFC8345] in the scenario of Data center network management. It can management. It can also act as a service topology when mapping
also act as a service topology when mapping network elements at the network elements at the fabric layer to elements of other topologies,
fabric layer to elements of other topologies, such as L3 topologies such as L3 topologies as defined in [RFC8346].
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 characteristics
of a fabric (such as encapsulation type, gateway type, etc.) as well of a fabric (such as encapsulation type, gateway type, etc.) as well
as its connections to other fabrics while putting the underlay as its connections to other fabrics while putting the underlay
topology aside. As such, clients can consume the topology topology aside. As such, clients can consume the topology
information at the fabric level with no need to be aware of the information at the fabric level with no need to be aware of the
entire set of links and nodes in the corresponding underlay networks. entire set of links and nodes in the corresponding underlay networks.
A fabric topology can be configured by a network administrator using A fabric topology can be configured by a network administrator using
the controller by adding physical devices and links into a fabric. the controller by adding physical devices and links into a fabric.
Alternatively, fabric topology can be learned from the underlay Alternatively, fabric topology can be learned from the underlay
network infrastructure. network infrastructure.
2. Definitions an Acronyms 2. Definitions and Acronyms
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
document are to be interpreted as described in [RFC2119]. In this "OPTIONAL" in this document are to be interpreted as described in BCP
document, these words will appear with that interpretation only when 14 [RFC2119] [RFC8174] when, and only when, they appear in all
in ALL CAPS. Lower case uses of these words are not to be capitals, as shown here.
interpreted as carrying RFC-2119 significance.
2.1. Terminology 2.1. Terminology
Fabric: also known as a POD, is a module of network, compute, POD: a module of network, compute, storage, and application
storage, and application components that work together to deliver components that work together to deliver networking services. It
networking services. It represents a repeatable design pattern. Its represents a repeatable design pattern. Its components maximize the
components maximize the modularity, scalability, and manageability of modularity, scalability, and manageability of data centers.
data centers.
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 data center fabric topology
model and its relationship with other topology models. model and 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 the following figure.
skipping to change at page 5, line 13 skipping to change at page 5, line 7
fabric-based 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-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
+--rw name? string +--rw name? string
+--rw type? fabrictype:underlay-network-type +--rw type? fabrictype:underlay-network-type
+--rw description? string +--rw description? string
+--rw options +--rw options
+--... +--...
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-fabric-topology" is introduced and added o A new topology type "ietf-dc-fabric-topology" is introduced 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 network topology module) are augmented with
fabric port attributes defined in a container. The "termination- fabric port attributes defined in a container. The "termination-
point" here is used to represent a fabric "port" that provides point" here is used to represent a fabric "port" that provides
connections to other nodes, such as an internal device, another connections to other nodes, such as an internal device, another
skipping to change at page 6, line 12 skipping to change at page 6, line 5
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, a fabric itself is composed of a set of network As an atomic network, a fabric itself is composed of a set of network
elements i.e. devices, and related links. The configuration of a elements i.e. devices, and related links. The configuration of a
fabric is contained under the "fabric-attributes" container depicted fabric is contained under the "fabric-attributes" container depicted
as follows. The notation syntax follows [RFC8340]. as follows. The notation syntax follows [RFC8340].
+--rw fabric-attributes +--rw fabric-attributes
+--rw fabric-id? 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
| +--rw max? int32 | +--rw max? int32
+--rw description? string +--rw description? string
+--rw options +--rw options
| +--rw gateway-mode? enumeration | +--rw gateway-mode? enumeration
| +--rw traffic-behavior? enumeration | +--rw traffic-behavior? enumeration
| +--rw capability-supported* fabrictype:service-capabilities | +--rw capability-supported* fabrictype:service-capabilities
+--rw device-nodes* [device-ref] +--rw device-nodes* [device-ref]
| +--rw device-ref fabrictype:node-ref | +--rw device-ref fabrictype:node-ref
| +--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, descriptions of the
fabric as well as a set of options defined in an "options" container. fabric as well as a set of options defined in an "options" container.
The "options" container includes the gateway-mode type (centralized The "options" container includes the gateway-mode type (centralized
or distributed) and traffic-behavior (whether an Access Control Lists or distributed) and traffic-behavior (whether an Access Control Lists
(ACLs) is needed for the traffic). Also, it includes a list of (ACLs) is needed for the traffic). Also, it includes a list of
device-nodes and related links as supporting-nodes to form a fabric device-nodes and related links as supporting-nodes to form a fabric
network. These device nodes and links are represented as leaf-refs network. These device nodes and links are represented as leaf-refs
skipping to change at page 7, line 20 skipping to change at page 7, line 10
As such, the set of "termination-points" of a fabric indicate all As such, the set of "termination-points" of a fabric indicate all
connections of the fabric, including its internal connections, connections of the fabric, including its internal connections,
interconnections with other fabrics, and connections to end hosts. interconnections 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: 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 It augments the termination points (in network topology module) with
fabric port attributes defined in a container. 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 of
the port within the fabric (internal port, external port to outside the port within the fabric (internal port, external port to outside
network, access port to end hosts), port type (l2 interface, l3 network, access port to end hosts), port type (l2 interface, l3
interface, etc). By defining the device-port as a tp-ref, a fabric interface, etc). By defining the device-port as a tp-ref, a fabric
port can be mapped to a device node in the underlay network. port can be mapped to a device node in the underlay network.
skipping to change at page 7, line 48 skipping to change at page 7, line 38
tunnel configuration on a port. 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 Module
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@2017-12-21.yang" <CODE BEGINS> file "ietf-dc-fabric-types@2018-04-16.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;
organization yang-version 1.1;
"IETF I2RS (Interface to the Routing System) Working Group"; namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types";
prefix fabrictypes;
contact import ietf-network {
"WG Web: <http://tools.ietf.org/wg/i2rs/ > prefix nw;
WG List: <mailto:i2rs@ietf.org>
Editor: Yan Zhuang reference
<mailto:zhuangyan.zhuang@huawei.com> "RFC 8345:A Data Model for Network Topologies";
}
organization
"IETF I2RS (Interface to the Routing System) Working Group";
Editor: Danian Shi contact
<mailto:shidanian@huawei.com>"; "WG Web: <http://tools.ietf.org/wg/i2rs/ >
WG List: <mailto:i2rs@ietf.org>
description Editor: Yan Zhuang
"This module contains a collection of YANG definitions for Fabric. <mailto:zhuangyan.zhuang@huawei.com>
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 Editor: Danian Shi
without modification, is permitted pursuant to, and subject <mailto:shidanian@huawei.com>";
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 description
draft-ietf-i2rs-yang-dc-fabric-network-topology; "This module contains a collection of YANG definitions for
see the RFC itself for full legal notices. Fabric.
NOTE TO RFC EDITOR: Please replace above reference to Copyright (c) 2018 IETF Trust and the persons identified as
draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC authors of the code. All rights reserved.
number when published (i.e. RFC xxxx).";
revision "2017-12-21"{ Redistribution and use in source and binary forms, with or
description without modification, is permitted pursuant to, and subject
"Initial revision. to the license terms contained in, the Simplified BSD License
NOTE TO RFC EDITOR: Please replace the following reference to set forth in Section 4.c of the IETF Trust's Legal Provisions
draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC Relating to IETF Documents
number when published (i.e. RFC xxxx)."; (https://trustee.ietf.org/license-info).
reference
"draft-ietf-i2rs-yang-dc-fabric-network-topology-03";
}
identity fabric-type { This version of this YANG module is part of
description draft-ietf-i2rs-yang-dc-fabric-network-topology;
"Base type for fabric networks"; see the RFC itself for full legal notices.
}
identity vxlan-fabric { NOTE TO RFC EDITOR: Please replace above reference to
base fabric-type; draft-ietf-i2rs-yang-dc-fabric-network-topology-09 with RFC
description "Vxlan fabric"; number when published (i.e. RFC xxxx).";
}
identity vlan-fabric { revision "2018-04-16"{
base fabric-type; description
description "Initial revision.
"Vlan fabric"; NOTE TO RFC EDITOR:
} Please replace the following reference to
draft-ietf-i2rs-yang-dc-fabric-network-topology-09
with RFC number when published (i.e. RFC xxxx).";
reference
"draft-ietf-i2rs-yang-dc-fabric-network-topology-09";
}
identity trill-fabric { identity fabric-type {
base fabric-type; description
description "Trill fabric"; "Base type for fabric networks";
} }
identity port-type {
description
"Base type for fabric port";
}
identity eth {
base port-type;
description "ETH";
}
identity serial {
base port-type;
description "Serial";
}
identity bandwidth { identity vxlan-fabric {
description "Base for bandwidth"; base fabric-type;
} description
identity bw-1M { "Vxlan fabric";
base bandwidth; }
description "1M";
}
identity bw-10M {
base bandwidth;
description "10M";
}
identity bw-100M {
base bandwidth;
description "100M";
}
identity bw-1G {
base bandwidth;
description "1G";
}
identity bw-10G {
base bandwidth;
description "10G";
}
identity bw-40G {
base bandwidth;
description "40G";
}
identity bw-100G{
base bandwidth;
description "100G";
}
identity device-role { identity vlan-fabric {
description "Base for the device role in a fabric."; base fabric-type;
} description
identity spine { "Vlan fabric";
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 trill-fabric {
* Typedefs base fabric-type;
*/ description "Trill fabric";
typedef service-capabilities { }
type enumeration { identity port-type {
enum ip-mapping { description
description "NAT"; "Base type for fabric port";
} }
enum acl-redirect{ identity eth {
description "Acl redirect, which can provide base port-type;
SFC function"; description "ETH";
} }
enum dynamic-route-exchange{ identity serial {
description "Dynamic route exchange"; base port-type;
} description "Serial";
} }
description
"Capability of the device";
}
typedef port-type { identity bandwidth {
type identityref { description "Base for bandwidth";
base port-type; }
} identity bw-1M {
description "Port type: ethernet or serial or others."; base bandwidth;
} description "1M";
typedef bandwidth { }
type identityref { identity bw-10M {
base bandwidth; base bandwidth;
} description "10M";
description "Bandwidth of the port."; }
} identity bw-100M {
typedef node-ref { base bandwidth;
type instance-identifier; description "100M";
description "A reference to a node in topology"; }
} identity bw-1G {
base bandwidth;
description "1G";
}
identity bw-10G {
base bandwidth;
description "10G";
}
identity bw-40G {
base bandwidth;
description "40G";
}
identity bw-100G{
base bandwidth;
description "100G";
}
typedef tp-ref { identity device-role {
type instance-identifier; description "Base for the device role in a fabric.";
description "A reference to a termination point in topology"; }
} 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.";
}
typedef link-ref { identity service-capability {
type instance-identifier; description "Base for the service of the fabric ";
description "A reference to a link in topology"; }
identity ip-mapping {
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.";
}
} /*
* 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 achived by defining a
RPC, which is left for vendor specific implementation
and not provided in this model.";
}
typedef underlay-network-type { typedef service-capabilities {
type identityref { type identityref {
base fabric-type; base service-capability;
} }
description "The type of physical network that implements this description
fabric.Examples are vlan, and trill."; "Service capability of the fabric";
} }
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 { typedef port-type {
type enumeration { type identityref {
enum layer2interface { base port-type;
description "L2 interface"; }
} description "Port type: ethernet or serial or others.";
enum layer3interface { }
description "L3 interface"; typedef bandwidth {
} type identityref {
enum layer2Tunnel { base bandwidth;
description "L2 tunnel"; }
} description "Bandwidth of the port.";
enum layer3Tunnel { }
description "L3 tunnel"; typedef node-ref {
} type instance-identifier;
} description "A reference to a node in topology";
description }
"Fabric port type";
}
grouping fabric-port { typedef tp-ref {
description type instance-identifier;
"Attributes of a fabric port."; description "A reference to a termination point in topology";
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-02-11.yang" typedef link-ref {
module ietf-dc-fabric-topology { type instance-identifier;
description "A reference to a link in topology";
}
yang-version 1.1; typedef underlay-network-type {
namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology"; type identityref {
prefix fabric; 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.";
}
import ietf-network { typedef fabric-port-type {
prefix nw; 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";
}
reference grouping fabric-port {
"RFC 8345:A Data Model for Network Topologies"; 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>
import ietf-network-topology { <CODE BEGINS> file "ietf-dc-fabric-topology@2018-04-16.yang"
prefix nt; module ietf-dc-fabric-topology {
reference yang-version 1.1;
"RFC 8345:A Data Model for Network Topologies"; namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology";
} prefix fabric;
import ietf-dc-fabric-types { import ietf-network {
prefix fabrictypes; prefix nw;
reference
"RFC 8345:A Data Model for Network Topologies";
}
reference import ietf-network-topology {
"draft-ietf-i2rs-yang-dc-fabric-network-topology-03 prefix nt;
NOTE TO RFC EDITOR:
(1) Please replace above reference to draft-ietf-i2rs-yang-dc
-fabric-network-topology-03 with RFC number when publised
(i.e. RFC xxxx).
(2) Please replace the date in the revision statement with the
data of publication when published.";
}
organization reference
"IETF I2RS (Interface to the Routing System) Working Group"; "RFC 8345:A Data Model for Network Topologies";
}
contact import ietf-dc-fabric-types {
"WG Web: <http://tools.ietf.org/wg/i2rs/ > prefix fabrictypes;
WG List: <mailto:i2rs@ietf.org>
Editor: Yan Zhuang reference
<mailto:zhuangyan.zhuang@huawei.com> "draft-ietf-i2rs-yang-dc-fabric-network-topology-09
NOTE TO RFC EDITOR:
(1) Please replace above reference to
draft-ietf-i2rs-yang-dc-fabric-network-topology-09
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.";
}
Editor: Danian Shi organization
<mailto:shidanian@huawei.com>"; "IETF I2RS (Interface to the Routing System) Working Group";
description contact
"This module contains a collection of YANG definitions for Fabric. "WG Web: <http://tools.ietf.org/wg/i2rs/ >
WG List: <mailto:i2rs@ietf.org>
Copyright (c) 2018 IETF Trust and the persons identified as Editor: Yan Zhuang
authors of the code. All rights reserved. <mailto:zhuangyan.zhuang@huawei.com>
Redistribution and use in source and binary forms, with or Editor: Danian Shi
without modification, is permitted pursuant to, and subject <mailto:shidanian@huawei.com>";
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 description
draft-ietf-i2rs-yang-dc-fabric-network-topology;see the RFC "This module contains a collection of YANG definitions for
itself for full legal notices. Fabric.
NOTE TO RFC EDITOR: Please replace above reference to Copyright (c) 2018 IETF Trust and the persons identified as
draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC authors of the code. All rights reserved.
number when published (i.e. RFC xxxx).";
revision "2018-02-11"{ Redistribution and use in source and binary forms, with or
description without modification, is permitted pursuant to, and subject
"Initial revision. to the license terms contained in, the Simplified BSD License
NOTE TO RFC EDITOR: Please replace the following reference set forth in Section 4.c of the IETF Trust's Legal Provisions
to draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with Relating to IETF Documents
RFC number when published (i.e. RFC xxxx)."; (https://trustee.ietf.org/license-info).
reference
"draft-ietf-i2rs-yang-dc-fabric-network-topology-05";
}
identity fabric-context { This version of this YANG module is part of
description draft-ietf-i2rs-yang-dc-fabric-network-topology;
"Identity of fabric context"; see the RFC itself for full legal notices.
}
typedef fabric-id { NOTE TO RFC EDITOR: Please replace above reference to
type nw:node-id; draft-ietf-i2rs-yang-dc-fabric-network-topology-09 with RFC
description number when published (i.e. RFC xxxx).";
"An identifier for a fabric in a topology.
The identifier is generated by compose-fabric RPC.";
}
//grouping statements revision "2018-04-16"{
grouping fabric-network-type { description
description "Identify the topology type to be fabric."; "Initial revision.
container fabric-network { NOTE TO RFC EDITOR: Please replace the following
presence "indicates fabric Network"; reference to draft-ietf-i2rs-yang-dc-fabric-network
description -topology-09 with RFC number when published
"The presence of the container node indicates fabric topology"; (i.e. RFC xxxx).";
} reference
} "draft-ietf-i2rs-yang-dc-fabric-network-topology-09";
}
grouping fabric-options { /*identity fabric-context {
description "Options for a fabric"; description
"Identity of fabric context";
}*/
leaf gateway-mode { //grouping statements
type enumeration { grouping fabric-network-type {
enum centralized { description "Identify the topology type to be fabric.";
description "The Fabric uses centerilized gateway, in container fabric-network {
which gateway is deployed on SPINE node."; presence "indicates fabric Network";
} description
enum distributed { "The presence of the container node indicates
description "The Fabric uses distributed gateway, in fabric Topology";
which gateway is deployed on LEAF node."; }
} }
}
default "distributed";
description "Gateway mode of the fabric";
}
leaf traffic-behavior { grouping fabric-options {
type enumeration { description "Options for a fabric";
enum normal {
description "Normal, no policy is enforced.";
}
enum policy-driven {
description "Policy driven";
}
}
default "normal";
description "Traffic behavior of the fabric";
}
leaf-list capability-supported { leaf gateway-mode {
type fabrictypes:service-capabilities; type enumeration {
description enum centralized {
"Supported services of the fabric"; description "The Fabric uses centerilized
} gateway,in which gateway is deployed on SPINE
} node.";
grouping device-attributes { }
description "device attributes"; enum distributed {
leaf device-ref { description "The Fabric uses distributed
type fabrictypes:node-ref; gateway, in which gateway is deployed on LEAF
description node.";
"The device the fabric includes."; }
} }
leaf-list role { default "distributed";
type fabrictypes:device-role; description "Gateway mode of the fabric";
default fabrictypes:leaf; }
description
"Role of the device node";
}
}
grouping link-attributes { leaf traffic-behavior {
description "Link attributes"; type enumeration {
leaf link-ref { enum normal {
type fabrictypes:link-ref; description "Normal means no policy is needed
description for all traffic";
"The link it includes"; }
} 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";
}
grouping port-attributes { leaf-list capability-supported {
description "Port attributes"; type fabrictypes:service-capabilities;
leaf port-ref { description
type fabrictypes:tp-ref; "It provides a list of supported services of the
description fabric. The service-capabilities is defined as
"The port it refers to."; identity-ref. Developers can define more services
} by defining new identies.";
leaf port-type { }
type fabrictypes:port-type; }
description
"Port type: ethernet or serial or others.";
}
leaf bandwidth {
type fabrictypes:bandwidth;
description
"Bandwidth of the port.";
}
}
grouping fabric-attributes { grouping device-attributes {
description "Attributes of a fabric"; description "device attributes";
leaf device-ref {
type fabrictypes:node-ref;
description
"The device that the fabric includes which refers
to a node in another topolopogy.";
}
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, developers can
define new identities for the device-role.";
}
}
leaf fabric-id { grouping link-attributes {
type fabric-id; description "Link attributes";
description leaf link-ref {
"Fabric id"; type fabrictypes:link-ref;
} description
"The link that the fabric includes which refers to
a link in another topology.";
}
}
leaf name { grouping port-attributes {
type string; description "Port attributes";
description leaf port-ref {
"Name of the fabric"; 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 identiy-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 identies for them. Current speeds include 1M, 10M,
100M, 1G, 10G, 40G and 100G.";
}
}
leaf type { grouping fabric-attributes {
type fabrictypes:underlay-network-type; description "Attributes of a fabric";
description leaf fabric-id {
"The type of physical network that implements this type fabrictypes:fabric-id;
fabric.Examples are vlan, and trill."; 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 achived by defining a
RPC, which is left for vendor specific implementation and
not provided in this model.";
}
container vni-capacity { leaf name {
description "Number of vni(VXLAN Network Identifier type string;
defined in RFC 7348)s that the fabric has."; description
leaf min { "Name of the fabric";
type int32; }
description
"Vni min capacity";
}
leaf max { leaf type {
type int32; type fabrictypes:underlay-network-type;
description description
"Vni max capacity"; "The type of physical network that implements this
} fabric.Examples are vlan, and trill.";
} }
leaf description {
type string;
description
"Description of the fabric";
}
container options { container vni-capacity {
description "Options of the fabric"; description "The range of the VNI(VXLAN Network Identifier
uses fabric-options; defined in RFC 7348)s that the PoD uses.";
}
list device-nodes { leaf min {
key device-ref; type int32;
description "Device nodes that include in a fabric."; description
uses device-attributes; "The lower limit Vni.";
} }
list device-links { leaf max {
key link-ref; type int32;
description "Links that include within a fabric."; description
uses link-attributes; "The upper limite Vni.";
} }
}
list device-ports { leaf description {
key port-ref; type string;
description "Ports that include in the fabric."; description
uses port-attributes; "Description of the fabric";
} }
} container options {
description "Options of the fabric";
uses fabric-options;
}
// augment statements list device-nodes {
key device-ref;
description "Device nodes that include in a fabric.";
uses device-attributes;
}
augment "/nw:networks/nw:network/nw:network-types" { list device-links {
description key link-ref;
"Introduce new network type for Fabric-based logical topology"; description "Links that include within a fabric.";
uses link-attributes;
}
uses fabric-network-type; list device-ports {
} key port-ref;
description "Ports that include in the fabric.";
uses port-attributes;
}
augment "/nw:networks/nw:network/nw:node" { }
when "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" {
description
"Augmentation parameters apply only for networks
with fabric topology";
}
description "Augmentation for fabric nodes created by fabric topology.";
container fabric-attributes {
description
"Attributes for a fabric network";
uses fabric-attributes; // augment statements
}
}
augment "/nw:networks/nw:network/nw:node/nt:termination-point" { augment "/nw:networks/nw:network/nw:network-types" {
when "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" { description
description "Introduce new network type for Fabric-based topology";
"Augmentation parameters apply only for networks
with fabric topology";
}
description "Augmentation for port on fabric.";
container fport-attributes { uses fabric-network-type;
config false; }
description
augment "/nw:networks/nw:network/nw:node" {
when "/nw:networks/nw:network/nw:network-types/"
+"fabric:fabric-network"{
description
"Augmentation parameters apply only for networks
with fabric topology";
}
description "Augmentation for fabric nodes created by
fabric topology.";
container fabric-attributes {
description
"Attributes for a fabric network";
uses fabric-attributes;
}
}
augment "/nw:networks/nw:network/nw:node/nt:termination-point" {
when "/nw:networks/nw:network/nw:network-types/"
+"fabric:fabric-network" {
description
"Augmentation parameters apply only for networks
with fabric topology";
}
description "Augmentation for port on fabric.";
container fport-attributes {
config false;
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 Registrant URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types
Contact: The IESG. XML: N/A; the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology Registrant Registrant Contact: The IESG.
Contact: The IESG. XML: N/A; the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state XML: N/A; the requested URI is an XML namespace.
Registrant Contact: The IESG. XML: N/A; the requested URI is an XML
namespace. URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology
Registrant Contact: The IESG.
XML: N/A; the requested URI is an XML namespace.
URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state
Registrant Contact: The IESG.
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 NOTE TO THE RFC EDITOR: In the list below, please replace references
to "draft-ietf-i2rs-yang-dc-fabric-network-topology-03 (RFC form)" to "draft-ietf-i2rs-yang-dc-fabric-network-topology-09 (RFC form)"
with RFC number when published (i.e. RFC xxxx). with RFC number when published (i.e. RFC xxxx).
Name: ietf-dc-fabric-types Namespace: Name: ietf-dc-fabric-types
urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types Prefix: fabrictypes
Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-03.txt Namespace: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types
Prefix: fabrictypes
Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-09.txt
(RFC form) (RFC form)
Name: ietf-dc-fabric-topology Namespace: Name: ietf-dc-fabric-topology
urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology Prefix: fabric
Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-03.txt Namespace: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology
Prefix: fabric
Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-09.txt
(RFC form) (RFC form)
Name: ietf-dc-fabric-topology-state Namespace: Name: ietf-dc-fabric-topology-state
urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state Prefix:
sfabric Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology- Namespace: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state
03.txt (RFC form)
Prefix: sfabric
Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-09.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 [RFC5246].
The NETCONF access control model [RFC6536] provides the means to The NETCONF access control model [RFC8341] provides the means to
restrict access for particular NETCONF or RESTCONF users to a restrict access for particular NETCONF or RESTCONF users to a
preconfigured subset of all available NETCONF or RESTCONF protocol preconfigured subset of all available NETCONF or RESTCONF protocol
operations and content. The subtrees and data nodes and their operations and content. 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.
skipping to change at page 21, line 21 skipping to change at page 22, line 35
8. References 8. References
8.1. Normative References 8.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>. <http://www.rfc-editor.org/info/rfc2119>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004,
<http://www.rfc-editor.org/info/rfc3688>.
[RFC5246] Dierks, T. and E. Rescorla, "Transport Layer Security [RFC5246] Dierks, T. and E. Rescorla, "Transport Layer Security
(TLS) Protocol Version 1.2", August 2008, (TLS) Protocol Version 1.2", August 2008,
<http://www.rfc-editor.org/info/rfc5246>. <http://www.rfc-editor.org/info/rfc5246>.
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the
Network Configuration Protocol (NETCONF)", RFC 6020, Network Configuration Protocol (NETCONF)", RFC 6020,
October 2010. October 2010.
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A.
Bierman, "Network Configuration Protocol (NETCONF)", June Bierman, "Network Configuration Protocol (NETCONF)", June
2011, <http://www.rfc-editor.org/info/rfc6241>. 2011, <http://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)", June 2011,
<http://www.rfc-editor.org/info/rfc6242>. <http://www.rfc-editor.org/info/rfc6242>.
[RFC6536] Bierman, A. and B. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", March 2012,
<http://www.rfc-editor.org/info/rfc6536>.
[RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991,
July 2013.
[RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger,
L., Sridhar, T., Bursell, M., and C. Wright, "Virtual
eXtensible Local Area Network (VXLAN): A Framework for
Overlaying Virtualized Layer 2 Networks over Layer 3
Networks", August 2014,
<http://www.rfc-editor.org/info/rfc7348>.
[RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, Auguest 2016. RFC 7950, DOI 10.17487/RFC7950, Auguest 2016.
[RFC8040] Bierman, A., Bjorklund, B., and K. Watsen, "RESTCONF [RFC8040] Bierman, A., Bjorklund, B., and K. Watsen, "RESTCONF
Protocol", Jan 2017, Protocol", Jan 2017,
<http://www.rfc-editor.org/info/rfc8040>. <http://www.rfc-editor.org/info/rfc8040>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <http://www.rfc-editor.org/info/rfc8174>.
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol Access Control Model", March 2018,
<http://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", RFC 8342, March 2018. Architecture", RFC 8342, March 2018.
[RFC8344] Bjorklund, M., "A YANG Data Model for IP Management",
RFC 8344, March 2018,
<http://www.rfc-editor.org/info/rfc8344>.
[RFC8345] Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., [RFC8345] Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N.,
and H. Ananthakrishnan, "A YANG Data Model for Network and H. Ananthakrishnan, "A YANG Data Model for Network
Topologies", RFC 8345, March 2018, Topologies", RFC 8345, March 2018,
<http://www.rfc-editor.org/info/rfc8345>. <http://www.rfc-editor.org/info/rfc8345>.
[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>.
8.2. Informative References 8.2. Informative References
[I-D.draft-ietf-i2rs-usecase-reqs-summary]
Hares, S. and M. Chen, "Summary of I2RS Use Case
Requirements", I-D draft-ietf-i2rs-usecase-reqs-summary,
May 2015.
[I-D.draft-ietf-nvo3-geneve] [I-D.draft-ietf-nvo3-geneve]
Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic
Network Virtualization Encapsulation", I-D draft-ietf- Network Virtualization Encapsulation", I-D draft-ietf-
nvo3-geneve-06, March 2018. nvo3-geneve-06, March 2018.
[RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger,
L., Sridhar, T., Bursell, M., and C. Wright, "Virtual
eXtensible Local Area Network (VXLAN): A Framework for
Overlaying Virtualized Layer 2 Networks over Layer 3
Networks", August 2014,
<http://www.rfc-editor.org/info/rfc7348>.
[RFC8340] Bjorklund, M. and L. Berger, "YANG Tree Diagrams", [RFC8340] Bjorklund, M. and L. Berger, "YANG Tree Diagrams",
RFC 8340, March 2018, RFC 8340, March 2018,
<http://www.rfc-editor.org/info/rfc8340>. <http://www.rfc-editor.org/info/rfc8340>.
[RFC8344] Bjorklund, M., "A YANG Data Model for IP Management",
RFC 8344, March 2018,
<http://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-fabric-toplogy defined in this document augments The YANG module ietf-dc-fabric-toplogy defined in this document
two modules, ietf-network and ietf-network-topology, that are augments two modules, ietf-network and ietf-network-topology, that
designed to be used in conjunction with implementations that support are designed to be used in conjunction with implementations that
the Network Management Datastore Architecture (NMDA) defined in support the Network Management Datastore Architecture (NMDA) defined
[RFC8342]. In order to allow implementations to use the model even in [RFC8342]. In order to allow implementations to use the model
in case when NMDA is not supported, a set of companion modules have even in case when NMDA is not supported, a set of companion modules
been defined that represent a state model of networks and network have been defined that represent a state model of networks and
topologies, ietf-network-state and ietf-network-topology-state, network topologies, ietf-network-state and ietf-network-topology-
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 in this document in conjunction with non-NMDA compliant
implementations, a corresponding companion module needs to be implementations, a corresponding companion module needs to be
introduced as well. This companion module, ietf-fabric-topology- introduced as well. This companion module, ietf-dc-fabric-topology-
state, mirrors ietf-fabric-topology. However, the module augments state, mirrors ietf-dc-fabric-topology. However, the module augments
ietf-network-state (instead of ietf-network and ietf-network- ietf-network-state (instead of ietf-network and ietf-network-
topology) and all of its data nodes are non-configurable. topology) and all of its data nodes are non-configurable.
Like ietf-network-state and ietf-network-topology-state, ietf-fabric- Like ietf-network-state and ietf-network-topology-state, ietf-dc-
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 below. As the structure of the
module mirrors that of its underlying module, the YANG tree is not module mirrors that of its underlying module, the YANG tree is not
depicted separately. depicted separately.
<CODE BEGINS> file "ietf-dc-fabric-topology-state@2018-02-11.yang" <CODE BEGINS>
module ietf-dc-fabric-topology-state { file "ietf-dc-fabric-topology-state@2018-04-16.yang"
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
prefix sfabric; "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state";
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
"draft-ietf-i2rs-yang-dc-fabric-network-topology-03 "draft-ietf-i2rs-yang-dc-fabric-network-topology-09
NOTE TO RFC EDITOR: NOTE TO RFC EDITOR:
(1) Please replace above reference to draft-ietf-i2rs-yang-dc (1) Please replace above reference to draft-ietf-i2rs-yang
-fabric-network-topology-03 with RFC number when published -dc-fabric-network-topology-09 with RFC number when
(i.e. RFC xxxx). published (i.e. RFC xxxx).
(2) Please replace the date in the revision statement with the (2) Please replace the data in the revision statement
data of publication when published."; with the data of publication when published.";
} }
import ietf-dc-fabric-topology {
prefix fabric;
reference organization
"draft-ietf-i2rs-yang-dc-fabric-network-topology-03 "IETF I2RS (Interface to the Routing System) Working Group";
NOTE TO RFC EDITOR:
(1) Please replace above reference to draft-ietf-i2rs-yang-dc
-fabric-network-topology-03 with RFC number when published
(i.e. RFC xxxx).
(2) Please replace the date in the revision statement with the
data of publication when published.";
}
organization contact
"IETF I2RS (Interface to the Routing System) Working Group"; "WG Web: <http://tools.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>";
Editor: Danian Shi description
<mailto:shidanian@huawei.com>"; "This module contains a collection of YANG definitions for
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.
description This model mirrors the configuration tree of ietf-dc-fabric
"This module contains a collection of YANG definitions -topology, but contains only read-only state data. The model
for Fabric state, representing topology that is either is not needed when the implemtation infrastructure supports
learned, or topology that results from applying toplogy the Network Management Datastore Architecture(NMDA).
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 Copyright (c) 2018 IETF Trust and the persons identified as
ietf-dc-fabric-topology, but contains only read-only state authors of the code. All rights reserved.
data. The model is not needed when the implemtation
infrastructure supports the Network Management Datastore
Architecture(NMDA).
Copyright (c) 2018 IETF Trust and the persons identified Redistribution and use in source and binary forms, with or
as authors of the code. All rights reserved. without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD
License set forth in Section 4.c of the IETF Trust's Legal
Provisions Relating to IETF Documents
(http:s//trustee.ietf.org/license-info).
Redistribution and use in source and binary forms, with or This version of this YANG module is part of
without modification, is permitted pursuant to, and subject draft-ietf-i2rs-yang-dc-fabric-network-topology;
to the license terms contained in, the Simplified BSD License see the RFC itself for full legal notices.
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 NOTE TO RFC EDITOR: Please replace above reference to
draft-ietf-i2rs-yang-dc-fabric-network-topology;see the RFC draft-ietf-i2rs-yang-dc-fabric-network-topology-09 with RFC
itself for full legal notices. number when published (i.e. RFC xxxx).";
NOTE TO RFC EDITOR: Please replace above reference to revision "2018-04-16"{
draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC number description
when published (i.e. RFC xxxx)."; "Initial revision.
NOTE TO RFC EDITOR:
Please replace the following reference to
draft-ietf-i2rs-yang-dc-fabric-network-topology-09
with RFC number when published (i.e. RFC xxxx).";
reference
"draft-ietf-i2rs-yang-dc-fabric-network-topology-09";
}
revision "2018-02-11" { //grouping statements
description grouping fabric-network-type {
"Initial revision. description "Identify the topology type to be fabric.";
NOTE TO RFC EDITOR: Please replace the following reference to container fabric-network {
draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC presence "indicates fabric Network";
number when published (i.e. RFC xxxx)."; description
reference "The presence of the container node indicates
"draft-ietf-i2rs-yang-dc-fabric-network-topology-05"; fabric Topology";
} }
}
//grouping statements grouping fabric-options {
grouping fabric-network-type { description "Options for a fabric";
description "Identify the topology type to be fabric.";
container fabric-network {
presence "indicates fabric Network";
description
"The presence of the container node indicates fabric Topology";
}
}
grouping fabric-options { leaf gateway-mode {
description "Options for a fabric"; type enumeration {
leaf gateway-mode { enum centralized {
type enumeration { description "The Fabric uses centerilized
enum centralized { gateway, in which gateway is deployed on SPINE
description "The Fabric uses centerilized gateway, in which node.";
gateway is deployed on SPINE node."; }
} enum distributed {
enum distributed { description "The Fabric uses distributed
description "The Fabric uses distributed gateway, in which gateway, in which gateway is deployed on LEAF
gateway is deployed on LEAF node."; node.";
} }
} }
default "distributed"; default "distributed";
description "Gateway mode of the fabric"; description "Gateway mode of the fabric";
} }
leaf traffic-behavior { leaf traffic-behavior {
type enumeration { type enumeration {
enum normal { enum normal {
description "Normal"; description "Normal means no policy is needed
} for all traffic";
enum policy-driven { }
description "Policy driven"; 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";
}
} leaf-list capability-supported {
} type fabrictypes:service-capabilities;
default "normal"; description
description "Traffic behavior of the fabric"; "It provides a list of supported services of the
} fabric. The service-capabilities is defined as
identity-ref. Developers can define more services
by defining new identies.";
}
}
leaf-list capability-supported { grouping device-attributes {
type fabrictypes:service-capabilities; description "device attributes";
description leaf device-ref {
"Supported services of the fabric"; type fabrictypes:node-ref;
} description
} "The device that the fabric includes which refers
to a node in another topolopogy.";
}
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, developers can
define new identities for the device-role.";
}
}
grouping device-attributes { grouping link-attributes {
description "device attributes"; description "Link attributes";
leaf device-ref { leaf link-ref {
type fabrictypes:node-ref; type fabrictypes:link-ref;
description "The device the fabric includes."; description
} "The link that the fabric includes which refers to
leaf-list role { a link in another topology.";
type fabrictypes:device-role; }
default fabrictypes:leaf; }
description "Role of the node";
}
}
grouping link-attributes { grouping port-attributes {
description "Link attributes"; description "Port attributes";
leaf link-ref { leaf port-ref {
type fabrictypes:link-ref; type fabrictypes:tp-ref;
description "The link it includes"; 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 identiy-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 identies for them.
Current speeds include 1M, 10M, 100M, 1G, 10G,
40G and 100G.";
}
}
grouping port-attributes { grouping fabric-attributes {
description "Port attributes"; description "Attributes of a fabric";
leaf port-ref {
type fabrictypes:tp-ref;
description "The port it refers to.";
}
leaf port-type {
type fabrictypes:port-type;
description
"Port type: ethernet or serial or others";
}
leaf bandwidth {
type fabrictypes:bandwidth;
description "Bandwidth of the port";
} leaf fabric-id {
} type fabrictypes:fabric-id;
description
"Fabric id";
}
grouping fabric-attributes { leaf name {
description "Attributes of a fabric"; type string;
leaf fabric-id { description
type fabric:fabric-id; "Name of the fabric";
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 "Number of vnis the fabric has";
leaf min {
type int32;
description "Vni min capacity";
}
leaf max {
type int32;
description "Vni max capacity";
}
}
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 include in a fabric.";
uses device-attributes;
}
list device-links {
key link-ref;
description "Links that are included within the fabric.";
uses link-attributes;
}
list device-ports {
key port-ref;
description "Ports that are included within the fabric.";
uses port-attributes;
}
}
// augment statements leaf type {
type fabrictypes:underlay-network-type;
description
"The type of physical network that implements this
fabric.Examples are vlan, and trill.";
}
augment "/nws:networks/nws:network/nws:network-types" { container vni-capacity {
description description "The range of the VNI(VXLAN Network
"Introduce new network type for Fabric-based logical topology"; Identifier defined in RFC 7348)s that the PoD uses.";
uses fabric-network-type;
}
augment "/nws:networks/nws:network/nws:node" { leaf min {
when "/nws:networks/nws:network/nws:network-types/sfabric:fabric-network" { type int32;
description "Augmentation parameters apply only for networks with description
fabric topology."; "The lower limit Vni.";
} }
description "Augmentation for fabric nodes.";
container fabric-attributes-state {
description
"Attributes for a fabric network";
uses fabric-attributes;
}
}
}
<CODE ENDS>
Authors' Addresses leaf max {
type int32;
description
"The upper limite 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 include in a fabric.";
uses device-attributes;
}
list device-links {
key link-ref;
description "Links that include within a fabric.";
uses link-attributes;
}
list device-ports {
key port-ref;
description "Ports that include in the fabric.";
uses port-attributes;
}
}
// augment statements
augment "/nws:networks/nws:network/nws:network-types" {
description
"Introduce 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>
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
Danian Shi Danian Shi
Huawei Huawei
 End of changes. 138 change blocks. 
849 lines changed or deleted 959 lines changed or added

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