draft-ietf-i2rs-yang-dc-fabric-network-topology-02.txt | draft-ietf-i2rs-yang-dc-fabric-network-topology-03.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: June 2, 2018 R. Gu | Expires: June 25, 2018 R. Gu | |||
China Mobile | China Mobile | |||
H. Ananthakrishnan | H. Ananthakrishnan | |||
Packet Design | Packet Design | |||
November 29, 2017 | December 22, 2017 | |||
A YANG Data Model for Fabric Topology in Data Center Network | A YANG Data Model for Fabric Topology in Data Center Network | |||
draft-ietf-i2rs-yang-dc-fabric-network-topology-02 | draft-ietf-i2rs-yang-dc-fabric-network-topology-03 | |||
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 Network. | |||
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. | |||
skipping to change at page 1, line 35 ¶ | skipping to change at page 1, line 35 ¶ | |||
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 June 2, 2018. | This Internet-Draft will expire on June 25, 2018. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 20 ¶ | skipping to change at page 2, line 20 ¶ | |||
2. Definitions an Acronyms . . . . . . . . . . . . . . . . . . . 3 | 2. Definitions an Acronyms . . . . . . . . . . . . . . . . . . . 3 | |||
2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2.2. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 4 | |||
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 . . . . . . . . . . . . . . . . . . 5 | 3.2. Fabric Topology Model . . . . . . . . . . . . . . . . . . 5 | |||
3.2.1. Fabric Topology . . . . . . . . . . . . . . . . . . . 5 | 3.2.1. Fabric Topology . . . . . . . . . . . . . . . . . . . 5 | |||
3.2.2. Fabric node extension . . . . . . . . . . . . . . . . 6 | 3.2.2. Fabric node extension . . . . . . . . . . . . . . . . 6 | |||
3.2.3. Fabric termination-point extension . . . . . . . . . 7 | 3.2.3. Fabric termination-point extension . . . . . . . . . 7 | |||
4. Fabric YANG Module . . . . . . . . . . . . . . . . . . . . . 8 | 4. Fabric YANG Module . . . . . . . . . . . . . . . . . . . . . 8 | |||
5. Security Consideration . . . . . . . . . . . . . . . . . . . 22 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 22 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 23 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 22 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 23 | ||||
Appendix A. Non NMDA -state modules . . . . . . . . . . . . . . 23 | Appendix A. Non NMDA -state modules . . . . . . . . . . . . . . 23 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
1. Introduction | 1. Introduction | |||
Normally, a data center network is composed of single or multiple | Normally, a data center network is composed of single or multiple | |||
fabrics which are also known as PODs (a Point Of Delivery). These | fabrics which are also known as PODs (a Point Of Delivery). These | |||
fabrics may be heterogeneous due to implementation of different | fabrics may be heterogeneous due to implementation of different | |||
technologies while DC network upgrading or enrolling new techniques | technologies while DC network upgrading or enrolling new techniques | |||
and features. For example, Fabric A may use VXLAN while Fabric B may | and features. For example, Fabric A may use VXLAN while Fabric B may | |||
use VLAN within a DC network. Likewise, a legacy Fabric may use | use VLAN within a DC network. Likewise, a legacy Fabric may use | |||
VXLAN while a new Fabric B implemented technique discussed in NVO3 WG | VXLAN while a new Fabric B implemented technique discussed in NVO3 WG | |||
skipping to change at page 5, line 32 ¶ | skipping to change at page 5, line 32 ¶ | |||
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 etc al. The main purpose of this module is to | such as VLAN, VXLAN etc. The main purpose of this module is to | |||
configure and manage fabrics and their connections. provide a fabric- | configure and manage fabrics and their connections. provide a fabric- | |||
based topology view for data center network applications. | based topology view for data center network applications. | |||
3.2.1. Fabric Topology | 3.2.1. Fabric Topology | |||
In the fabric topology module, a fabric is modeled as a node in the | In the fabric topology module, a fabric is modeled as a node in the | |||
network, while the fabric-based Data center network consists of a set | network, while the fabric-based Data center network consists of a set | |||
of fabric nodes and their connections known as "fabric port". The | of fabric nodes and their connections known as "fabric port". The | |||
following is the snatch of the definition to show the main structure | following is the snip of the definition to show the main structure of | |||
of the model: | the model: | |||
module: ietf-fabric-topology | module: ietf-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 | |||
skipping to change at page 6, line 31 ¶ | skipping to change at page 6, line 31 ¶ | |||
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-fabric-topology" is introduced and added | |||
under the "network-types" container of the ietf-network module. | 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 of "fabric-attributes" is defined to carry | new container of "fabric-attributes" is defined to carry | |||
attributes for a fabric network such as gateway mode, fabric | attributes for a fabric network such as gateway mode, fabric | |||
types, involved device nodes and links etc al. | types, involved device nodes and links etc. | |||
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 can represent the "port" of a fabric that provides | point" here can represent the "port" of a fabric that provides | |||
connections to other nodes, such as device internally, another | connections to other nodes, such as device internally, another | |||
fabric externally and also end hosts. | fabric externally and also end hosts. | |||
Details of fabric node and fabric termination point extension will be | Details of fabric node and fabric termination point extension will be | |||
explained in the following sections. | explained in the following sections. | |||
skipping to change at page 7, line 24 ¶ | skipping to change at page 7, line 24 ¶ | |||
| +--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? identityref | +--rw port-type? fabrictypes:port-type | |||
+--rw bandwidth? identityref | +--rw bandwidth? fabrictypes:bandwidth | |||
As in the module, additional data objects for nodes are introduced by | As in the module, additional data objects for nodes are introduced by | |||
augmenting the "node" list of the network module. New objects | augmenting the "node" list of the network module. New objects | |||
include fabric name, type of the fabric, descriptions of the fabric | include fabric name, type of the fabric, descriptions of the fabric | |||
as well as a set of options defined in an "options" container. The | as well as a set of options defined in an "options" container. The | |||
options container includes type of the gateway-mode (centralized or | options container includes type of the gateway-mode (centralized or | |||
distributed) and traffic-behavior (whether acl needed for the | distributed) and traffic-behavior (whether acl needed for the | |||
traffic). | traffic). | |||
Also, it defines a list of device-nodes and related links as | Also, it defines a list of device-nodes and related links as | |||
skipping to change at page 8, line 21 ¶ | skipping to change at page 8, line 21 ¶ | |||
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)? | |||
+--:(gre) | ||||
+--ro src-ip? inet:ip-prefix | ||||
+--ro dest-ip? inet:ip-address | ||||
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 which include name, role of | New nodes are defined for fabric ports which include 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 al). 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. | |||
Also, a new container for tunnel-options is introduced to present the | Also, a new container for tunnel-options is introduced to present the | |||
tunnel configuration on the port. | tunnel configuration on the port. | |||
The terminiation points information are all learnt from the underlay | The termination points information are all learnt from the underlay | |||
networks but not configured by the fabric topology layer. | networks but not configured by the fabric topology layer. | |||
4. Fabric YANG Module | 4. Fabric YANG Module | |||
<CODE BEGINS> file "ietf-fabric-types@2017-11-29.yang" | <CODE BEGINS> file "ietf-dc-fabric-types@2017-12-21.yang" | |||
module ietf-fabric-types { | module ietf-dc-fabric-types { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-fabric-types"; | namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types"; | |||
prefix fabrictypes; | prefix fabrictypes; | |||
import ietf-inet-types { prefix "inet"; revision-date "2013-07-15"; } | organization | |||
import ietf-network-topology { prefix nt;} | ||||
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: <http://tools.ietf.org/wg/i2rs/ > | |||
WG List: <mailto:i2rs@ietf.org> | WG List: <mailto:i2rs@ietf.org> | |||
WG Chair: Susan Hares | ||||
<mailto:shares@ndzh.com> | ||||
WG Chair: Russ White | ||||
<mailto:russ@riw.us> | ||||
Editor: Yan Zhuang | Editor: Yan Zhuang | |||
<mailto:zhuangyan.zhuang@huawei.com> | <mailto:zhuangyan.zhuang@huawei.com> | |||
Editor: Danian Shi | Editor: Danian Shi | |||
<mailto:shidanian@huawei.com>"; | <mailto:shidanian@huawei.com>"; | |||
description | description | |||
"This module contains a collection of YANG definitions for Fabric. | "This module contains a collection of YANG definitions for Fabric. | |||
Copyright (c) 2016 IETF Trust and the persons identified as | Copyright (c) 2016 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents(http://trustee.ietf.org/license-info). | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of | This version of this YANG module is part of | |||
draft-zhuang-i2rs-yang-dc-fabric-network-topology; | draft-ietf-i2rs-yang-dc-fabric-network-topology; | |||
see the RFC itself for full legal notices."; | see the RFC itself for full legal notices. | |||
revision "2017-11-29"{ | NOTE TO RFC EDITOR: Please replace above reference to | |||
description | draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC | |||
"add identities for bandwidth and port-type"; | number when published (i.e. RFC xxxx)."; | |||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-02"; | ||||
} | ||||
revision "2016-09-29" { | revision "2017-12-21"{ | |||
description | description | |||
"Initial revision of faas."; | "Initial revision. | |||
reference | NOTE TO RFC EDITOR: Please replace the following reference to | |||
"draft-zhuang-i2rs-yang-dc-fabric-network-topology-02"; | draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC | |||
} | number when published (i.e. RFC xxxx)."; | |||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-03"; | ||||
} | ||||
identity fabric-type { | identity fabric-type { | |||
description | description | |||
"base type for fabric networks"; | "Base type for fabric networks"; | |||
} | } | |||
identity vxlan-fabric { | identity vxlan-fabric { | |||
base fabric-type; | base fabric-type; | |||
description | description "Vxlan fabric"; | |||
"vxlan fabric"; | ||||
} | } | |||
identity vlan-fabric { | identity vlan-fabric { | |||
base fabric-type; | base fabric-type; | |||
description | description | |||
"vlan fabric"; | "Vlan fabric"; | |||
} | } | |||
identity port-type { | identity trill-fabric { | |||
description | base fabric-type; | |||
"base type for fabric port"; | description "Trill fabric"; | |||
} | } | |||
identity port-type { | ||||
description | ||||
"Base type for fabric port"; | ||||
} | ||||
identity eth { | identity eth { | |||
base port-type; | base port-type; | |||
description "ETH"; | description "ETH"; | |||
} | } | |||
identity serial { | identity serial { | |||
base port-type; | base port-type; | |||
description "Serial"; | description "Serial"; | |||
} | } | |||
identity bandwidth { | identity bandwidth { | |||
description "base for bandwidth"; | description "Base for bandwidth"; | |||
} | } | |||
identity bw-1M { | identity bw-1M { | |||
base bandwidth; | base bandwidth; | |||
description "1M"; | description "1M"; | |||
} | } | |||
identity bw-10M { | identity bw-10M { | |||
base bandwidth; | base bandwidth; | |||
description "10M"; | description "10M"; | |||
} | } | |||
identity bw-100M { | identity bw-100M { | |||
base bandwidth; | base bandwidth; | |||
description "100M"; | description "100M"; | |||
} | } | |||
identity bw-1G { | identity bw-1G { | |||
base bandwidth; | base bandwidth; | |||
description "1G"; | description "1G"; | |||
} | } | |||
identity bw-10G { | identity bw-10G { | |||
base bandwidth; | base bandwidth; | |||
description "10G"; | description "10G"; | |||
} | } | |||
identity bw-40G { | identity bw-40G { | |||
base bandwidth; | base bandwidth; | |||
description "40G"; | description "40G"; | |||
} | } | |||
identity bw-100G{ | identity bw-100G{ | |||
base bandwidth; | base bandwidth; | |||
description "100G"; | description "100G"; | |||
} | } | |||
typedef service-capabilities { | identity device-role { | |||
type enumeration { | description "Base for the device role in a fabric."; | |||
enum ip-mapping { | } | |||
description "NAT"; | identity spine { | |||
} | base device-role; | |||
enum acl-redirect{ | description "This is a spine node in a fabric."; | |||
description "acl redirect, which can provide SFC function"; | } | |||
} | identity leaf { | |||
enum dynamic-route-exchange{ | base device-role; | |||
description "dynamic route exchange"; | description "This is a leaf node in a fabric. "; | |||
} | } | |||
} | identity border { | |||
description | base device-role; | |||
"capability of the device"; | 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."; | ||||
} | } | |||
/* | /* | |||
* Typedefs | * Typedefs | |||
*/ | */ | |||
typedef node-ref { | typedef service-capabilities { | |||
type instance-identifier; | type enumeration { | |||
description "A reference to a node in topology"; | enum ip-mapping { | |||
description "NAT"; | ||||
} | ||||
enum acl-redirect{ | ||||
description "Acl redirect, which can provide | ||||
SFC function"; | ||||
} | ||||
enum dynamic-route-exchange{ | ||||
description "Dynamic route exchange"; | ||||
} | ||||
} | ||||
description | ||||
"Capability of the device"; | ||||
} | ||||
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 { | typedef tp-ref { | |||
type instance-identifier; | type instance-identifier; | |||
description "A reference to a termination point in topology"; | description "A reference to a termination point in topology"; | |||
} | } | |||
typedef link-ref { | typedef link-ref { | |||
type instance-identifier; | type instance-identifier; | |||
description "A reference to a link in topology"; | description "A reference to a link in topology"; | |||
} | } | |||
typedef device-role { | typedef underlay-network-type { | |||
type enumeration { | type identityref { | |||
enum SPINE { | base fabric-type; | |||
description "a spine node"; | ||||
} | ||||
enum LEAF { | ||||
description "a leaf node"; | ||||
} | } | |||
enum BORDER { | description "The type of physical network that implements this | |||
description "a border node"; | fabric.Examples are vlan, and trill."; | |||
} | ||||
typedef device-role { | ||||
type identityref { | ||||
base device-role; | ||||
} | } | |||
} | description "Role of the device node."; | |||
default "LEAF"; | ||||
description "device role type"; | ||||
} | } | |||
typedef fabric-port-role { | typedef fabric-port-role { | |||
type enumeration { | type identityref { | |||
enum internal { | base fabric-port-role; | |||
description "the port used for devices to access each other."; | ||||
} | ||||
enum external { | ||||
description "the port used for fabric to access outside network."; | ||||
} | ||||
enum access { | ||||
description "the port used for Endpoint to access fabric."; | ||||
} | ||||
enum reserved { | ||||
description " not decided yet. "; | ||||
} | } | |||
} | description "Role of the port in a fabric."; | |||
description "the role of the physical port "; | ||||
} | } | |||
typedef fabric-port-type { | typedef fabric-port-type { | |||
type enumeration { | type enumeration { | |||
enum layer2interface { | enum layer2interface { | |||
description "l2 if"; | description "L2 interface"; | |||
} | } | |||
enum layer3interface { | enum layer3interface { | |||
description "l3 if"; | description "L3 interface"; | |||
} | } | |||
enum layer2Tunnel { | enum layer2Tunnel { | |||
description "l2 tunnel"; | description "L2 tunnel"; | |||
} | } | |||
enum layer3Tunnel { | enum layer3Tunnel { | |||
description "l3 tunnel"; | description "L3 tunnel"; | |||
} | } | |||
} | ||||
description | ||||
"fabric port type"; | ||||
} | ||||
typedef underlay-network-type { | ||||
type enumeration { | ||||
enum VXLAN { | ||||
description "vxlan"; | ||||
} | ||||
enum TRILL { | ||||
description "trill"; | ||||
} | ||||
enum VLAN { | ||||
description "vlan"; | ||||
} | } | |||
} | description | |||
description "underlay network type"; | "Fabric port type"; | |||
} | } | |||
grouping fabric-port { | grouping fabric-port { | |||
description | description | |||
"attributes of a fabric port"; | "Attributes of a fabric port."; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description "name of the port"; | 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"; | ||||
case gre { | ||||
leaf src-ip { | ||||
type inet:ip-prefix; | ||||
description "source address"; | ||||
} | ||||
leaf dest-ip { | ||||
type inet:ip-address; | ||||
description "destination address"; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
grouping route-group { | ||||
description | ||||
"route attributes"; | ||||
list route { | ||||
key "destination-prefix"; | ||||
description "route list"; | ||||
leaf description { | ||||
type string; | ||||
description "Textual description of the route."; | ||||
} | } | |||
leaf destination-prefix { | leaf role { | |||
type inet:ipv4-prefix; | type fabric-port-role; | |||
mandatory true; | description "Role of the port in a fabric."; | |||
description "IPv4 destination prefix."; | ||||
} | } | |||
choice next-hop-options { | leaf type { | |||
description "choice of next hop options"; | type fabric-port-type; | |||
case simple-next-hop { | description "Type of the port"; | |||
leaf next-hop { | ||||
type inet:ipv4-address; | ||||
description "IPv4 address of the next hop."; | ||||
} | ||||
leaf outgoing-interface { | ||||
type nt:tp-id; | ||||
description "Name of the outgoing interface."; | ||||
} | ||||
} | ||||
} | } | |||
leaf device-port { | ||||
} | type tp-ref; | |||
} | description "The device port it mapped to."; | |||
grouping port-functions { | ||||
description | ||||
"port functions"; | ||||
container port-function { | ||||
description "port functions"; | ||||
choice function-type { | ||||
description "type of functions"; | ||||
case ip-mapping { | ||||
list ip-mapping-entry { | ||||
key "external-ip"; | ||||
description "list of NAT entry"; | ||||
leaf external-ip { | ||||
type inet:ipv4-address; | ||||
description "external address"; | ||||
} | ||||
leaf internal-ip { | ||||
type inet:ipv4-address; | ||||
description "internal address"; | ||||
} | ||||
} | ||||
} | ||||
} | } | |||
} | choice tunnel-option { | |||
} | description "Tunnel options to connect two fabrics. | |||
It could be L2 Tunnel or L3 Tunnel."; | ||||
grouping acl-list { | ||||
description "acl list"; | ||||
list fabric-acl { | ||||
key fabric-acl-name; | ||||
description "fabric acl list"; | ||||
leaf fabric-acl-name { | ||||
type string; | ||||
description "acl name"; | ||||
} | } | |||
} | ||||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
<CODE BEGINS> file "ietf-fabric-topology@2017-11-29.yang" | <CODE BEGINS> file "ietf-dc-fabric-topology@2017-12-21.yang" | |||
module ietf-fabric-topology { | module ietf-dc-fabric-topology { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-fabric-topology"; | namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology"; | |||
prefix fabric; | prefix fabric; | |||
import ietf-network { prefix nw; } | import ietf-network { | |||
import ietf-network-topology { prefix nt; } | prefix nw; | |||
import ietf-fabric-types { prefix fabrictype;} | ||||
reference | ||||
"draft-ietf-i2rs-yang-network-topo-20 | ||||
NOTE TO RFC EDITOR: | ||||
(1) Please replace above reference to | ||||
draft-ietf-i2rs-yang-network-topo-20 with RFC | ||||
number when published (i.e. RFC xxxx). | ||||
(2) Please replace the date in the revision statement with the | ||||
date of publication when published."; | ||||
} | ||||
import ietf-network-topology { | ||||
prefix nt; | ||||
reference | ||||
"draft-ietf-i2rs-yang-network-topo-20 | ||||
NOTE TO RFC EDITOR: | ||||
(1) Please replace above reference to | ||||
draft-ietf-i2rs-yang-network-topo-20 with RFC | ||||
number when published (i.e. RFC xxxx). | ||||
(2) Please replace the date in the revision statement with the | ||||
date of publication when published."; | ||||
} | ||||
import ietf-dc-fabric-types { | ||||
prefix fabrictypes; | ||||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-03 | ||||
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 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: <http://tools.ietf.org/wg/i2rs/ > | |||
WG List: <mailto:i2rs@ietf.org> | WG List: <mailto:i2rs@ietf.org> | |||
WG Chair: Susan Hares | ||||
<mailto:shares@ndzh.com> | ||||
WG Chair: Russ White | ||||
<mailto:russ@riw.us> | ||||
Editor: Yan Zhuang | Editor: Yan Zhuang | |||
<mailto:zhuangyan.zhuang@huawei.com> | <mailto:zhuangyan.zhuang@huawei.com> | |||
Editor: Danian Shi | Editor: Danian Shi | |||
<mailto:shidanian@huawei.com>"; | <mailto:shidanian@huawei.com>"; | |||
description | description | |||
"This module contains a collection of YANG definitions for Fabric. | "This module contains a collection of YANG definitions for Fabric. | |||
Copyright (c) 2016 IETF Trust and the persons identified as | Copyright (c) 2016 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents(http://trustee.ietf.org/license-info). | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of | This version of this YANG module is part of | |||
draft-zhuang-i2rs-yang-dc-fabric-network-topology; | draft-ietf-i2rs-yang-dc-fabric-network-topology;see the RFC | |||
see the RFC itself for full legal notices."; | itself for full legal notices. | |||
revision "2017-11-29"{ | ||||
description "fix comments"; | ||||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-02"; | ||||
} | ||||
revision "2017-11-21"{ | ||||
description "fix warnings."; | ||||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-01"; | ||||
} | ||||
revision "2017-06-29"{ | ||||
description | ||||
"update to NMDA compliant format"; | ||||
reference | ||||
"draft-zhuang-i2rs-yang-dc-fabric-network-topology-04"; | ||||
} | ||||
revision "2017-03-10" { | NOTE TO RFC EDITOR: Please replace above reference to | |||
description | draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC | |||
"remove the rpcs and add extra attributes"; | number when published (i.e. RFC xxxx)."; | |||
reference | ||||
"draft-zhuang-i2rs-yang-dc-fabric-network-topology-03"; | ||||
} | ||||
revision "2016-09-29" { | revision "2017-12-21"{ | |||
description | description | |||
"Initial revision of fabric topology."; | "Initial revision. | |||
reference | NOTE TO RFC EDITOR: Please replace the following reference | |||
"draft-zhuang-i2rs-yang-dc-fabric-network-topology-02"; | to draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with | |||
} | RFC number when published (i.e. RFC xxxx)."; | |||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-03"; | ||||
} | ||||
identity fabric-context { | identity fabric-context { | |||
description | description | |||
"identity of fabric context"; | "Identity of fabric context"; | |||
} | } | |||
typedef fabric-id { | typedef fabric-id { | |||
type nw:node-id; | type nw:node-id; | |||
description | description | |||
"An identifier for a fabric in a topology. | "An identifier for a fabric in a topology. | |||
The identifier is generated by compose-fabric RPC."; | The identifier is generated by compose-fabric RPC."; | |||
} | } | |||
//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 "Options for a fabric"; | |||
leaf gateway-mode { | leaf gateway-mode { | |||
type enumeration { | type enumeration { | |||
enum centralized { | enum centralized { | |||
description "centerilized gateway"; | description "The Fabric uses centerilized gateway, in | |||
} | which gateway is deployed on SPINE node."; | |||
enum distributed { | } | |||
description "distributed gateway"; | enum distributed { | |||
} | description "The Fabric uses distributed gateway, in | |||
which gateway is deployed on LEAF node."; | ||||
} | ||||
} | } | |||
default "distributed"; | default "distributed"; | |||
description "gateway mode"; | description "Gateway mode of the fabric"; | |||
} | } | |||
leaf traffic-behavior { | leaf traffic-behavior { | |||
type enumeration { | type enumeration { | |||
enum normal { | enum normal { | |||
description "normal"; | description "Normal"; | |||
} | } | |||
enum policy-driven { | enum policy-driven { | |||
description "policy driven"; | description "Policy driven"; | |||
} | } | |||
} | } | |||
default "normal"; | default "normal"; | |||
description "traffic behavior of the fabric"; | description "Traffic behavior of the fabric"; | |||
} | } | |||
leaf-list capability-supported { | leaf-list capability-supported { | |||
type fabrictype:service-capabilities; | type fabrictypes:service-capabilities; | |||
description | description | |||
"supported services of the fabric"; | "Supported services of the fabric"; | |||
} | ||||
} | } | |||
} | ||||
grouping device-attributes { | grouping device-attributes { | |||
description "device attributes"; | description "device attributes"; | |||
leaf device-ref { | leaf device-ref { | |||
type fabrictype:node-ref; | type fabrictypes:node-ref; | |||
description | description | |||
"the device it includes to"; | "The device the fabric includes."; | |||
} | } | |||
leaf role { | leaf role { | |||
type fabrictype:device-role; | type fabrictypes:device-role; | |||
default "LEAF"; | default fabrictypes:leaf; | |||
description | description | |||
"role of the node"; | "Role of the device node"; | |||
} | ||||
} | } | |||
} | ||||
grouping link-attributes { | grouping link-attributes { | |||
description "link attributes"; | description "Link attributes"; | |||
leaf link-ref { | leaf link-ref { | |||
type fabrictype:link-ref; | type fabrictypes:link-ref; | |||
description | description | |||
"the link it includes"; | "The link it includes"; | |||
} | ||||
} | } | |||
} | ||||
grouping port-attributes { | grouping port-attributes { | |||
description "port attributes"; | description "Port attributes"; | |||
leaf port-ref { | leaf port-ref { | |||
type fabrictype:tp-ref; | type fabrictypes:tp-ref; | |||
description | description | |||
"port reference"; | "The port it refers to."; | |||
} | ||||
leaf port-type { | } | |||
type identityref { | leaf port-type { | |||
base fabrictype:port-type; | type fabrictypes:port-type; | |||
} | ||||
description | description | |||
"port type: ethernet or serial or others"; | "Port type: ethernet or serial or others."; | |||
} | } | |||
leaf bandwidth { | leaf bandwidth { | |||
type identityref { | type fabrictypes:bandwidth; | |||
base fabrictype:bandwidth; | ||||
} | ||||
description | description | |||
"bandwidth on the port"; | "Bandwidth of the port."; | |||
} | ||||
} | } | |||
} | ||||
grouping fabric-attributes { | grouping fabric-attributes { | |||
description "attributes of a fabric"; | description "Attributes of a fabric"; | |||
leaf fabric-id { | leaf fabric-id { | |||
type fabric-id; | type fabric-id; | |||
description | description | |||
"fabric id"; | "Fabric id"; | |||
} | } | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"name of the fabric"; | "Name of the fabric"; | |||
} | } | |||
leaf type { | leaf type { | |||
type fabrictype:underlay-network-type; | type fabrictypes:underlay-network-type; | |||
description | description | |||
"The type of physical network that implements | "The type of physical network that implements this | |||
this fabric.Examples are vlan, and trill."; | fabric.Examples are vlan, and trill."; | |||
} | } | |||
container vni-capacity { | container vni-capacity { | |||
description "number of vnis the fabric has"; | description "Number of vnis that the fabric has"; | |||
leaf min { | leaf min { | |||
type int32; | type int32; | |||
description | description | |||
"vni min capacity"; | "Vni min capacity"; | |||
} | } | |||
leaf max { | leaf max { | |||
type int32; | type int32; | |||
description | description | |||
"vni max capacity"; | "Vni max capacity"; | |||
} | } | |||
} | ||||
leaf description { | } | |||
leaf description { | ||||
type string; | type string; | |||
description | description | |||
"description of the fabric"; | "Description of the fabric"; | |||
} | } | |||
container options { | container options { | |||
description "options of the fabric"; | description "Options of the fabric"; | |||
uses fabric-options; | uses fabric-options; | |||
} | } | |||
list device-nodes { | list device-nodes { | |||
key device-ref; | key device-ref; | |||
description "include device nodes in the fabric"; | description "Device nodes that include in a fabric."; | |||
uses device-attributes; | uses device-attributes; | |||
} | } | |||
list device-links { | list device-links { | |||
key link-ref; | key link-ref; | |||
description "include device links within the fabric"; | description "Links that include within a fabric."; | |||
uses link-attributes; | uses link-attributes; | |||
} | } | |||
list device-ports { | ||||
list device-ports { | ||||
key port-ref; | key port-ref; | |||
description "include device ports within the fabric"; | description "Ports that include in the fabric."; | |||
uses port-attributes; | 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 new network type for Fabric-based logical topology"; | "Introduce new network type for Fabric-based logical 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/fabric:fabric-network" { | when "/nw:networks/nw:network/nw:network-types/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 faas."; | description "Augmentation for fabric nodes created by faas."; | |||
container fabric-attributes { | container fabric-attributes { | |||
description | description | |||
"attributes for a fabric network"; | "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/fabric:fabric-network" { | when "/nw:networks/nw:network/nw:network-types/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 fabrictype:fabric-port; | uses fabrictypes:fabric-port; | |||
} | ||||
} | } | |||
} | ||||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
5. Security Consideration | 5. IANA Considerations | |||
The underlay topology is learnt from the physical network, while the | This document registers the following namespace URIs in the "IETF XML | |||
fabric topology is composed of a collection of the underlay nodes. | Registry" [RFC3688]: | |||
The fabric model doesn't change the connections of underlay networks. | ||||
While there are data nodes for fabric configuration, these data nodes | ||||
may be considered sensitive or vulnerable in some network | ||||
enviroments. Write operations (e.g., edit-config) to these data | ||||
nodes without proper protection can have a negative effect on network | ||||
operations. For example, misconfiguration of underlay nodes to a | ||||
fabric node may lead to inproper activities when management are | ||||
implemented at fabric layer by customers. | ||||
6. Acknowledgements | URI: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types 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 | ||||
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-03 (RFC form)" | ||||
with RFC number when published (i.e. RFC xxxx). | ||||
Name: ietf-dc-fabric-types Namespace: | ||||
urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types Prefix: fabrictypes | ||||
Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-03.txt | ||||
(RFC form) | ||||
Name: ietf-dc-fabric-topology Namespace: | ||||
urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology Prefix: fabric | ||||
Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-03.txt | ||||
(RFC form) | ||||
Name: ietf-dc-fabric-topology-state Namespace: | ||||
urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state Prefix: | ||||
sfabric Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology- | ||||
03.txt (RFC form) | ||||
6. Security Considerations | ||||
The YANG module defined in this document is designed to be accessed | ||||
via network management protocols such as NETCONF [RFC6241] or | ||||
RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport | ||||
layer, and the mandatory-to-implement secure transport is Secure | ||||
Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the | ||||
mandatory-to-implement secure transport is TLS [RFC5246]. | ||||
The NETCONF access control model [RFC6536] provides the means to | ||||
restrict access for particular NETCONF or RESTCONF users to a | ||||
preconfigured subset of all available NETCONF or RESTCONF protocol | ||||
operations and content.These are the subtrees and data nodes and | ||||
their sensitivity/vulnerability in the ietf-dc-fabric-topology | ||||
module: | ||||
fabric-attributes: A malicious client could attempt to sabotage the | ||||
configuration of important fabric attributes, such as device-nodes, | ||||
type. | ||||
Some of the readable data nodes in this YANG module may be considered | ||||
sensitive or vulnerable in some network environments. It is thus | ||||
important to control read access (e.g., via get, get-config, or | ||||
notification) to these data nodes. These are the subtrees and data | ||||
nodes and their sensitivity/vulnerability in the ietf-dc-fabric- | ||||
topology module: | ||||
fport-attributes: A malicious client could attempt to read the | ||||
connections of fabrics without permission, such as device-port, name. | ||||
7. Acknowledgements | ||||
We wish to acknowledge the helpful contributions, comments, and | We wish to acknowledge the helpful contributions, comments, and | |||
suggestions that were received from Alexander Clemm, Xufeng Liu, | suggestions that were received from Alexander Clemm, Xufeng Liu, | |||
Susan Hares, Wei Song, Luis M. Contreras and Benoit Claise. | Susan Hares, Wei Song, Luis M. Contreras and Benoit Claise. | |||
7. References | 8. References | |||
7.1. Normative References | 8.1. Normative References | |||
[I-D.draft-ietf-i2rs-yang-l3-topology] | [I-D.draft-ietf-i2rs-yang-l3-topology] | |||
Clemm, A., Medved, J., Tkacik, T., Liu, X., Bryskin, I., | Clemm, A., Medved, J., Tkacik, T., Liu, X., Bryskin, I., | |||
Guo, A., Ananthakrishnan, H., Bahadur, N., and V. Beeram, | Guo, A., Ananthakrishnan, H., Bahadur, N., and V. Beeram, | |||
"A YANG Data Model for Layer 3 Topologies", I-D draft- | "A YANG Data Model for Layer 3 Topologies", I-D draft- | |||
ietf-i2rs-yang-l3-topology-04, September 2016. | ietf-i2rs-yang-l3-topology-04, September 2016. | |||
[I-D.draft-ietf-i2rs-yang-network-topo] | [I-D.draft-ietf-i2rs-yang-network-topo] | |||
Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., | 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", I-D draft-ietf-i2rs-yang-network-topo-06, | Topologies", I-D draft-ietf-i2rs-yang-network-topo-06, | |||
September 2016. | September 2016. | |||
[I-D.draft-ietf-netmod-revised-datastores-06] | ||||
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | ||||
and R. Wilton, "A Revised Conceptual Model for YANG | ||||
Datastores", I-D draft-ietf-netmod-revised-datastores-06, | ||||
October 2017. | ||||
[I-D.draft-ietf-nvo3-vxlan-gpe] | [I-D.draft-ietf-nvo3-vxlan-gpe] | |||
Maino, F., Kreeger, L., and U. Elzur, "Generic Protocol | Maino, F., Kreeger, L., and U. Elzur, "Generic Protocol | |||
Extension for VXLAN", I-D draft-ietf-i2rs-yang-network- | Extension for VXLAN", I-D draft-ietf-i2rs-yang-network- | |||
topo-02, October 2016. | topo-02, October 2016. | |||
[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>. | |||
[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., "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. | ||||
Bierman, "Network Configuration Protocol (NETCONF)", June | ||||
2011, <http://www.rfc-editor.org/info/rfc6241>. | ||||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
Shell (SSH)", June 2011, | ||||
<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, | [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, | |||
July 2013. | July 2013. | |||
[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. | |||
7.2. Informative References | [RFC8040] Bierman, A., Bjorklund, B., and K. Watsen, "RESTCONF | |||
Protocol", Jan 2017, | ||||
<http://www.rfc-editor.org/info/rfc8040>. | ||||
8.2. Informative References | ||||
[I-D.draft-ietf-i2rs-usecase-reqs-summary] | [I-D.draft-ietf-i2rs-usecase-reqs-summary] | |||
Hares, S. and M. Chen, "Summary of I2RS Use Case | Hares, S. and M. Chen, "Summary of I2RS Use Case | |||
Requirements", I-D draft-ietf-i2rs-usecase-reqs-summary- | Requirements", I-D draft-ietf-i2rs-usecase-reqs-summary- | |||
01, May 2015. | 01, May 2015. | |||
Appendix A. Non NMDA -state modules | Appendix A. Non NMDA -state modules | |||
<CODE BEGINS> file "ietf-fabric-topology-state@2017-11-29.yang" | The YANG module ietf-fabric-toplogy defined in this document augments | |||
module ietf-fabric-topology-state { | two modules, ietf-network and ietf-network-topology, that are | |||
designed to be used in conjunction with implementations that support | ||||
the Network Management Datastore Architecture (NMDA) defined in [I- | ||||
D.draft-ietf-netmod-revised-datastores]. In order to allow | ||||
implementations to use the model even in case when NMDA is not | ||||
supported, a set of companion modules have been defined that | ||||
represent a state model of networks and network topologies, ietf- | ||||
network-state and ietf-network-topology-state, respectively. | ||||
In order to be able to use the model for fabric topologies defined in | ||||
this in this document in conjunction with non-NMDA compliant | ||||
implementations, a corresponding companion module needs to be | ||||
introduced as well. This companion module, ietf-fabric-topology- | ||||
state, mirrors ietf-fabric-topology. However, the module augments | ||||
ietf-network-state (instead of ietf-network and ietf-network- | ||||
topology) and all of its data nodes are non-configurable. | ||||
Like ietf-network-state and ietf-network-topology-state, ietf-fabric- | ||||
topology-state SHOULD NOT be supported by implementations that | ||||
support NMDA. It is for this reason that the module is defined in | ||||
the Appendix. | ||||
The definition of the module follows below. As the structure of the | ||||
module mirrors that of its underlying module, the YANG tree is not | ||||
depicted separately. | ||||
<CODE BEGINS> file "ietf-dc-fabric-topology-state@2017-12-21.yang" | ||||
module ietf-dc-fabric-topology-state { | ||||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-fabric-topology-state"; | namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state"; | |||
prefix sfabric; | prefix sfabric; | |||
import ietf-network-state { prefix nws; } | import ietf-network-state { | |||
import ietf-fabric-types { prefix fabrictype;} | prefix nws; | |||
import ietf-fabric-topology {prefix fabric;} | reference | |||
"draft-ietf-i2rs-yang-network-topo-20 | ||||
NOTE TO RFC EDITOR: | ||||
(1) Please replace above reference to | ||||
draft-ietf-i2rs-yang-network-topo-20 with RFC | ||||
number when published (i.e. RFC xxxx). | ||||
(2) Please replace the date in the revision statement with the | ||||
date of publication when published."; | ||||
} | ||||
import ietf-dc-fabric-types { | ||||
prefix fabrictypes; | ||||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-03 | ||||
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 data in the revision statement with the | ||||
data of publication when published."; | ||||
} | ||||
import ietf-dc-fabric-topology { | ||||
prefix fabric; | ||||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-03 | ||||
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 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: <http://tools.ietf.org/wg/i2rs/ > | |||
WG List: <mailto:i2rs@ietf.org> | WG List: <mailto:i2rs@ietf.org> | |||
WG Chair: Susan Hares | ||||
<mailto:shares@ndzh.com> | ||||
WG Chair: Russ White | ||||
<mailto:russ@riw.us> | ||||
Editor: Yan Zhuang | Editor: Yan Zhuang | |||
<mailto:zhuangyan.zhuang@huawei.com> | <mailto:zhuangyan.zhuang@huawei.com> | |||
Editor: Danian Shi | Editor: Danian Shi | |||
<mailto:shidanian@huawei.com>"; | <mailto:shidanian@huawei.com>"; | |||
description | description | |||
"This module contains a collection of YANG definitions for | "This module contains a collection of YANG definitions | |||
Fabric topology state for non NMDA. | 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. | ||||
Copyright (c) 2016 IETF Trust and the persons identified as | This model mirrors the configuration tree of | |||
authors of the code. All rights reserved. | ietf-dc-fabric-topology, but contains only read-only state | |||
data. The model is not needed when the implemtation | ||||
infrastructure supports the Network Management Datastore | ||||
Architecture(NMDA). | ||||
Copyright (c) 2016 IETF Trust and the persons identified | ||||
as authors of the code. All rights reserved. | ||||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents(http://trustee.ietf.org/license-info). | Relating to IETF Documents(http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of | This version of this YANG module is part of | |||
draft-zhuang-i2rs-yang-dc-fabric-network-topology; | draft-ietf-i2rs-yang-dc-fabric-network-topology;see the RFC | |||
see the RFC itself for full legal notices."; | itself for full legal notices. | |||
revision "2017-11-29" { | ||||
description "fix comments"; | ||||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-02"; | ||||
} | ||||
revision "2017-11-21"{ | NOTE TO RFC EDITOR: Please replace above reference to | |||
description "fix warnings."; | draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC number | |||
reference | when published (i.e. RFC xxxx)."; | |||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-01"; | ||||
} | ||||
revision "2017-06-29"{ | revision "2017-12-21" { | |||
description "update to NMDA compliant format"; | description | |||
reference | "Initial revision. | |||
"draft-zhuang-i2rs-yang-dc-fabric-network-topology-04"; | NOTE TO RFC EDITOR: Please replace the following reference to | |||
draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC | ||||
number when published (i.e. RFC xxxx)."; | ||||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-03"; | ||||
} | } | |||
//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 fabric Topology"; | "The presence of the container node indicates fabric Topology"; | |||
} | } | |||
} | } | |||
grouping fabric-options { | grouping fabric-options { | |||
description "options for a fabric"; | description "Options for a fabric"; | |||
leaf gateway-mode { | leaf gateway-mode { | |||
type enumeration { | type enumeration { | |||
enum centralized { | enum centralized { | |||
description "centerilized gateway"; | description "The Fabric uses centerilized gateway, in which | |||
gateway is deployed on SPINE node."; | ||||
} | } | |||
enum distributed { | enum distributed { | |||
description "distributed gateway"; | description "The Fabric uses distributed gateway, in which | |||
gateway is deployed on LEAF node."; | ||||
} | } | |||
} | } | |||
default "distributed"; | default "distributed"; | |||
description "gateway mode"; | description "Gateway mode of the fabric"; | |||
} | } | |||
leaf traffic-behavior { | leaf traffic-behavior { | |||
type enumeration { | type enumeration { | |||
enum normal { | enum normal { | |||
description "normal"; | description "Normal"; | |||
} | } | |||
enum policy-driven { | enum policy-driven { | |||
description "policy driven"; | description "Policy driven"; | |||
} | } | |||
} | } | |||
default "normal"; | default "normal"; | |||
description "traffic behavior of the fabric"; | description "Traffic behavior of the fabric"; | |||
} | } | |||
leaf-list capability-supported { | leaf-list capability-supported { | |||
type fabrictype:service-capabilities; | type fabrictypes:service-capabilities; | |||
description | description | |||
"supported services of the fabric"; | "Supported services of the fabric"; | |||
} | } | |||
} | } | |||
grouping device-attributes { | grouping device-attributes { | |||
description "device attributes"; | description "device attributes"; | |||
leaf device-ref { | leaf device-ref { | |||
type fabrictype:node-ref; | type fabrictypes:node-ref; | |||
description "the device it includes"; | description "The device the fabric includes."; | |||
} | } | |||
leaf role { | leaf role { | |||
type fabrictype:device-role; | type fabrictypes:device-role; | |||
default "LEAF"; | default fabrictypes:leaf; | |||
description "role of the node"; | description "Role of the node"; | |||
} | } | |||
} | } | |||
grouping link-attributes { | grouping link-attributes { | |||
description "link attributes"; | description "Link attributes"; | |||
leaf link-ref { | leaf link-ref { | |||
type fabrictype:link-ref; | type fabrictypes:link-ref; | |||
description "the link it includes"; | description "The link it includes"; | |||
} | } | |||
} | } | |||
grouping port-attributes { | grouping port-attributes { | |||
description "port attributes"; | description "Port attributes"; | |||
leaf port-ref { | leaf port-ref { | |||
type fabrictype:tp-ref; | type fabrictypes:tp-ref; | |||
description "port reference"; | description "The port it refers to."; | |||
} | } | |||
leaf port-type { | leaf port-type { | |||
type identityref { | type fabrictypes:port-type; | |||
base fabrictype:port-type; | ||||
} | ||||
description | description | |||
"port type: ethernet or serial or others"; | "Port type: ethernet or serial or others"; | |||
} | } | |||
leaf bandwidth { | leaf bandwidth { | |||
type identityref { | type fabrictypes:bandwidth; | |||
base fabrictype:bandwidth; | description "Bandwidth of the port"; | |||
} | ||||
description "bandwidth on the port"; | ||||
} | } | |||
} | } | |||
grouping fabric-attributes { | grouping fabric-attributes { | |||
description "attributes of a fabric"; | description "Attributes of a fabric"; | |||
leaf fabric-id { | leaf fabric-id { | |||
type fabric:fabric-id; | type fabric:fabric-id; | |||
description "fabric id"; | description "Fabric id"; | |||
} | } | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description "name of the fabric"; | description "Name of the fabric"; | |||
} | } | |||
leaf type { | leaf type { | |||
type fabrictype:underlay-network-type; | type fabrictypes:underlay-network-type; | |||
description | description | |||
"The type of physical network that implements this | "The type of physical network that implements this | |||
fabric.Examples are vlan, and trill."; | fabric.Examples are vlan, and trill."; | |||
} | } | |||
container vni-capacity { | container vni-capacity { | |||
description "number of vnis the fabric has"; | description "Number of vnis the fabric has"; | |||
leaf min { | leaf min { | |||
type int32; | type int32; | |||
description "vni min capacity"; | description "Vni min capacity"; | |||
} | } | |||
leaf max { | leaf max { | |||
type int32; | type int32; | |||
description "vni max capacity"; | description "Vni max capacity"; | |||
} | } | |||
} | } | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
description "description of the fabric"; | description "Description of the fabric"; | |||
} | } | |||
container options { | container options { | |||
description "options of the fabric"; | description "Options of the fabric"; | |||
uses fabric-options; | uses fabric-options; | |||
} | } | |||
list device-nodes { | list device-nodes { | |||
key device-ref; | key device-ref; | |||
description "include device nodes in the fabric"; | description "Device nodes that include in a fabric."; | |||
uses device-attributes; | uses device-attributes; | |||
} | } | |||
list device-links { | list device-links { | |||
key link-ref; | key link-ref; | |||
description "include device links within the fabric"; | description "Links that include within a fabric."; | |||
uses link-attributes; | uses link-attributes; | |||
} | } | |||
list device-ports { | list device-ports { | |||
key port-ref; | key port-ref; | |||
description "include device ports within the fabric"; | description "Ports that include in the fabric."; | |||
uses port-attributes; | uses port-attributes; | |||
} | } | |||
} | } | |||
// augment statements | // augment statements | |||
augment "/nws:networks/nws:network/nws:network-types" { | augment "/nws:networks/nws:network/nws:network-types" { | |||
description | description | |||
"Introduce new network type for Fabric-based logical topology"; | "Introduce new network type for Fabric-based logical topology"; | |||
uses fabric-network-type; | uses fabric-network-type; | |||
} | } | |||
skipping to change at page 27, line 44 ¶ | skipping to change at page 29, line 18 ¶ | |||
// augment statements | // augment statements | |||
augment "/nws:networks/nws:network/nws:network-types" { | augment "/nws:networks/nws:network/nws:network-types" { | |||
description | description | |||
"Introduce new network type for Fabric-based logical topology"; | "Introduce new network type for Fabric-based logical topology"; | |||
uses fabric-network-type; | uses fabric-network-type; | |||
} | } | |||
augment "/nws:networks/nws:network/nws:node" { | augment "/nws:networks/nws:network/nws:node" { | |||
when "/nws:networks/nws:network/nws:network-types/sfabric:fabric-network" { | when "/nws:networks/nws:network/nws:network-types/sfabric:fabric-network" { | |||
description "Augmentation parameters apply only for networks with fabric topology."; | description "Augmentation parameters apply only for networks with | |||
fabric topology."; | ||||
} | } | |||
description "Augmentation for fabric nodes."; | description "Augmentation for fabric nodes."; | |||
container fabric-attributes-state { | container fabric-attributes-state { | |||
description | description | |||
"attributes for a fabric network"; | "Attributes for a fabric network"; | |||
uses fabric-attributes; | uses fabric-attributes; | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
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 | |||
End of changes. 188 change blocks. | ||||
550 lines changed or deleted | 621 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/ |