draft-ietf-i2rs-yang-dc-fabric-network-topology-01.txt | draft-ietf-i2rs-yang-dc-fabric-network-topology-02.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: May 26, 2018 R. Gu | Expires: June 2, 2018 R. Gu | |||
China Mobile | China Mobile | |||
H. Ananthakrishnan | H. Ananthakrishnan | |||
Packet Design | Packet Design | |||
November 22, 2017 | November 29, 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-01 | draft-ietf-i2rs-yang-dc-fabric-network-topology-02 | |||
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 May 26, 2018. | This Internet-Draft will expire on June 2, 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 . . . . . . . . . . . . . . . . . . . 21 | 5. Security Consideration . . . . . . . . . . . . . . . . . . . 22 | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 22 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 22 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 22 | 7.2. Informative References . . . . . . . . . . . . . . . . . 23 | |||
Appendix A. Non NMDA -state modules . . . . . . . . . . . . . . 22 | Appendix A. Non NMDA -state modules . . . . . . . . . . . . . . 23 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
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 | |||
skipping to change at page 6, line 9 ¶ | skipping to change at page 6, line 9 ¶ | |||
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 snatch of the definition to show the main structure | |||
of the model: | of 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-attribute | +--rw fabric-attributes | |||
+--rw fabric-id? fabric-id | ||||
+--rw name? string | +--rw name? string | |||
+--rw type? fabrictype:underlayer-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-attribute | +--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-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-attribute" is defined to carry attributes | new container of "fabric-attributes" is defined to carry | |||
for a fabric network such as gateway mode, fabric types, involved | attributes for a fabric network such as gateway mode, fabric | |||
device nodes and links etc al. | types, involved device nodes and links etc al. | |||
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. | |||
3.2.2. Fabric node extension | 3.2.2. Fabric node extension | |||
As a network, a fabric itself is composed of set of network elements | As a network, a fabric itself is composed of set of network elements | |||
i.e. devices, and related links. As stated previously, the | i.e. devices, and related links. As stated previously, the | |||
configuration of a fabric is contained under the "fabric-attribute" | configuration of a fabric is contained under the "fabric-attributes" | |||
container depicted as follows: | container depicted as follows: | |||
+--rw fabric-attribute | +--rw fabric-attributes | |||
+--rw fabric-id? fabric-id | +--rw fabric-id? fabric-id | |||
+--rw name? string | +--rw name? string | |||
+--rw type? fabrictype:underlayer-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? enumeration | +--rw port-type? identityref | |||
+--rw bandwith? Enumeration | +--rw bandwidth? identityref | |||
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 | |||
supporting-nodes to form a fabric network. These device nodes and | supporting-nodes to form a fabric network. These device nodes and | |||
links are leaf-ref of existing nodes and links in the physical | links are leaf-ref of existing nodes and links in the underlay | |||
topology. For the device-node, the "role" object is defined to | topology. For the device-node, the "role" object is defined to | |||
represents the role of the device within the fabric, such as "SPINE" | represents the role of the device within the fabric, such as "SPINE" | |||
or "LEAF", which should work together with gateway-mode. | or "LEAF", which should work together with gateway-mode. | |||
3.2.3. Fabric termination-point extension | 3.2.3. Fabric termination-point extension | |||
Since the fabric is considered as a node, in this concept, | Since the fabric can be considered as a node, in this concept, | |||
"termination-points" can represent "ports" of a fabric that connects | "termination-points" can represent "ports" of a fabric that connects | |||
to other fabrics or end hosts, besides representing ports that | to other fabrics or end hosts, besides representing ports that | |||
connect devices inside the fabric itself. | connect devices inside the fabric itself. | |||
As such, the "termination-point" in the fabric topology has three | As such, the "termination-point" in the fabric topology has three | |||
roles, including internal TP that connects to devices within a | roles, that are internal TP that connects to devices within a fabric, | |||
fabric, external TP that connects to outside network, as well as | external TP that connects to outside network, and access TP to end | |||
access TP to end hosts. | hosts. | |||
A set of "termination-point" indicates all connections of a fabric | The set of "termination-point" of a fabric indicates all connections | |||
including its internal connections, interconnections with other | of the fabric, including its internal connections, interconnections | |||
fabrics and also connections to end hosts for a DC network. | with other fabrics and also connections to end hosts for a DC | |||
network. | ||||
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-attribute | +--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) | +--:(gre) | |||
+--ro src-ip? inet:ip-prefix | +--ro src-ip? inet:ip-prefix | |||
+--ro dest-ip? inet:ip-address | +--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 using the device-port defined as a tp-ref, | interface etc al). By defining the device-port as a tp-ref, a fabric | |||
this fabric port can be mapped to a device node in the underlay | port can be mapped to a device node in the underlay network. | |||
network. | ||||
Also, a new container for tunnel-options is introduced as well to | Also, a new container for tunnel-options is introduced to present the | |||
present the tunnel configuration on the port. | tunnel configuration on the port. | |||
The terminiation points information are all learnt from the underlay | The terminiation 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@2016-09-29.yang" | <CODE BEGINS> file "ietf-fabric-types@2017-11-29.yang" | |||
module ietf-fabric-types { | module ietf-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-fabric-types"; | |||
prefix fabrictypes; | prefix fabrictypes; | |||
import ietf-inet-types { prefix "inet"; revision-date "2013-07-15"; } | import ietf-inet-types { prefix "inet"; revision-date "2013-07-15"; } | |||
import ietf-network-topology { prefix nt; } | import ietf-network-topology { prefix nt;} | |||
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 | WG Chair: Susan Hares | |||
<mailto:shares@ndzh.com> | <mailto:shares@ndzh.com> | |||
WG Chair: Russ White | WG Chair: Russ White | |||
<mailto:russ@riw.us> | <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 | ||||
authors of the code. All rights reserved. | ||||
Redistribution and use in source and binary forms, with or | ||||
without modification, is permitted pursuant to, and subject | ||||
to the license terms contained in, the Simplified BSD License | ||||
set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of | ||||
draft-zhuang-i2rs-yang-dc-fabric-network-topology; | ||||
see the RFC itself for full legal notices."; | ||||
revision "2017-11-29"{ | ||||
description | ||||
"add identities for bandwidth and port-type"; | ||||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-02"; | ||||
} | ||||
revision "2016-09-29" { | revision "2016-09-29" { | |||
description | description | |||
"Initial revision of faas."; | "Initial revision of faas."; | |||
reference | reference | |||
"draft-zhuang-i2rs-yang-dc-fabric-network-topology-02"; | "draft-zhuang-i2rs-yang-dc-fabric-network-topology-02"; | |||
} | } | |||
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 { | ||||
description | ||||
"base type for fabric port"; | ||||
} | ||||
identity eth { | ||||
base port-type; | ||||
description "ETH"; | ||||
} | ||||
identity serial { | ||||
base port-type; | ||||
description "Serial"; | ||||
} | ||||
identity bandwidth { | ||||
description "base for bandwidth"; | ||||
} | ||||
identity bw-1M { | ||||
base bandwidth; | ||||
description "1M"; | ||||
} | ||||
identity bw-10M { | ||||
base bandwidth; | ||||
description "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"; | ||||
} | ||||
typedef service-capabilities { | typedef service-capabilities { | |||
type enumeration { | type enumeration { | |||
enum ip-mapping { | enum ip-mapping { | |||
description "NAT"; | description "NAT"; | |||
} | ||||
enum acl-redirect{ | ||||
description "acl redirect, which can provide SFC function"; | ||||
} | ||||
enum dynamic-route-exchange{ | ||||
description "dynamic route exchange"; | ||||
} | ||||
} | } | |||
description | enum acl-redirect{ | |||
"capability of the device"; | description "acl redirect, which can provide SFC function"; | |||
} | ||||
enum dynamic-route-exchange{ | ||||
description "dynamic route exchange"; | ||||
} | ||||
} | ||||
description | ||||
"capability of the device"; | ||||
} | } | |||
/* | /* | |||
* Typedefs | * Typedefs | |||
*/ | */ | |||
typedef node-ref { | typedef node-ref { | |||
type instance-identifier; | type instance-identifier; | |||
description "A reference to a node in topology"; | 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 device-role { | |||
type enumeration { | type enumeration { | |||
enum SPINE { | enum SPINE { | |||
description "a spine node"; | description "a spine node"; | |||
} | ||||
enum LEAF { | ||||
description "a leaf node"; | ||||
} | ||||
enum BORDER { | ||||
description "a border node"; | ||||
} | ||||
} | } | |||
default "LEAF"; | enum LEAF { | |||
description "device role type"; | description "a leaf node"; | |||
} | ||||
enum BORDER { | ||||
description "a border node"; | ||||
} | ||||
} | ||||
default "LEAF"; | ||||
description "device role type"; | ||||
} | } | |||
typedef fabric-port-role { | typedef fabric-port-role { | |||
type enumeration { | type enumeration { | |||
enum internal { | enum internal { | |||
description "the port used for devices to access each other."; | 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 "the role of the physical port "; | 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 "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 if"; | |||
} | ||||
enum layer3interface { | ||||
description "l3 if"; | ||||
} | ||||
enum layer2Tunnel { | ||||
description "l2 tunnel"; | ||||
} | ||||
enum layer3Tunnel { | ||||
description "l3 tunnel"; | ||||
} | ||||
} | } | |||
description | enum layer3interface { | |||
"fabric port type"; | description "l3 if"; | |||
} | ||||
typedef underlayer-network-type { | ||||
type enumeration { | ||||
enum VXLAN { | ||||
description "vxlan"; | ||||
} | ||||
enum TRILL { | ||||
description "trill"; | ||||
} | ||||
enum VLAN { | ||||
description "vlan"; | ||||
} | ||||
} | } | |||
description ""; | enum layer2Tunnel { | |||
} | description "l2 tunnel"; | |||
typedef layer2-protocol-type-enum { | ||||
type enumeration { | ||||
enum VLAN{ | ||||
description "vlan"; | ||||
} | ||||
enum VXLAN{ | ||||
description "vxlan"; | ||||
} | ||||
enum TRILL{ | ||||
description "trill"; | ||||
} | ||||
enum NvGRE{ | ||||
description "nvgre"; | ||||
} | ||||
} | } | |||
description ""; | enum layer3Tunnel { | |||
} | description "l3 tunnel"; | |||
typedef access-type { | ||||
type enumeration { | ||||
enum exclusive{ | ||||
description "exclusive"; | ||||
} | ||||
enum vlan{ | ||||
description "vlan"; | ||||
} | ||||
} | } | |||
description ""; | } | |||
description | ||||
"fabric port type"; | ||||
} | } | |||
grouping fabric-port { | typedef underlay-network-type { | |||
description | type enumeration { | |||
"attributes of a fabric port"; | enum VXLAN { | |||
leaf name { | description "vxlan"; | |||
type string; | ||||
description "name of the port"; | ||||
} | ||||
leaf role { | ||||
type fabric-port-role; | ||||
description "role of the port in a fabric"; | ||||
} | } | |||
leaf type { | enum TRILL { | |||
type fabric-port-type; | description "trill"; | |||
description "type of the port"; | ||||
} | } | |||
leaf device-port { | enum VLAN { | |||
type tp-ref; | description "vlan"; | |||
description "the device port it mapped to"; | ||||
} | } | |||
choice tunnel-option { | } | |||
description "tunnel options"; | description "underlay network type"; | |||
} | ||||
case gre { | grouping fabric-port { | |||
leaf src-ip { | description | |||
type inet:ip-prefix; | "attributes of a fabric port"; | |||
description "source address"; | leaf name { | |||
} | type string; | |||
leaf dest-ip { | description "name of the port"; | |||
type inet:ip-address; | } | |||
description "destination address"; | 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 { | grouping route-group { | |||
description | description | |||
"route attributes"; | "route attributes"; | |||
list route { | list route { | |||
key "destination-prefix"; | key "destination-prefix"; | |||
description "route list"; | description "route list"; | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
description "Textual description of the route."; | description "Textual description of the route."; | |||
} | } | |||
leaf destination-prefix { | leaf destination-prefix { | |||
type inet:ipv4-prefix; | type inet:ipv4-prefix; | |||
mandatory true; | mandatory true; | |||
description "IPv4 destination prefix."; | description "IPv4 destination prefix."; | |||
} | ||||
choice next-hop-options { | ||||
description "choice of next hop options"; | ||||
case simple-next-hop { | ||||
leaf next-hop { | ||||
type inet:ipv4-address; | ||||
description "IPv4 address of the next hop."; | ||||
} | } | |||
choice next-hop-options { | leaf outgoing-interface { | |||
description "choice of next hop options"; | type nt:tp-id; | |||
case simple-next-hop { | description "Name of the outgoing interface."; | |||
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."; | ||||
} | ||||
} | ||||
} | } | |||
} | ||||
} | } | |||
} | ||||
} | } | |||
grouping port-functions { | grouping port-functions { | |||
description | description | |||
"port functions"; | "port functions"; | |||
container port-function { | container port-function { | |||
description "port functions"; | description "port functions"; | |||
choice function-type { | choice function-type { | |||
description "type of functions"; | description "type of functions"; | |||
case ip-mapping { | case ip-mapping { | |||
list ip-mapping-entry { | list ip-mapping-entry { | |||
key "external-ip"; | key "external-ip"; | |||
description "list of NAT entry"; | description "list of NAT entry"; | |||
leaf external-ip { | leaf external-ip { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description "external address"; | description "external address"; | |||
} | } | |||
leaf internal-ip { | leaf internal-ip { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description "internal address"; | description "internal address"; | |||
} | } | |||
} | ||||
} | ||||
} | } | |||
} | ||||
} | } | |||
} | ||||
} | } | |||
grouping acl-list { | grouping acl-list { | |||
description "acl list"; | description "acl list"; | |||
list fabric-acl { | list fabric-acl { | |||
key fabric-acl-name; | key fabric-acl-name; | |||
description "fabric acl list"; | description "fabric acl list"; | |||
leaf fabric-acl-name { | leaf fabric-acl-name { | |||
type string; | type string; | |||
description "acl name"; | description "acl name"; | |||
} | ||||
} | } | |||
} | ||||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
<CODE BEGINS> file "ietf-fabric-topology@2017-11-21.yang" | <CODE BEGINS> file "ietf-fabric-topology@2017-11-29.yang" | |||
module ietf-fabric-topology { | module ietf-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-fabric-topology"; | |||
prefix fabric; | prefix fabric; | |||
import ietf-network { prefix nw; } | import ietf-network { prefix nw; } | |||
import ietf-network-topology { prefix nt; } | import ietf-network-topology { prefix nt; } | |||
import ietf-fabric-types { prefix fabrictype; revision-date "2016-09-29"; } | import ietf-fabric-types { prefix fabrictype;} | |||
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 | WG Chair: Susan Hares | |||
<mailto:shares@ndzh.com> | <mailto:shares@ndzh.com> | |||
WG Chair: Russ White | WG Chair: Russ White | |||
<mailto:russ@riw.us> | <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 | ||||
without modification, is permitted pursuant to, and subject | ||||
to the license terms contained in, the Simplified BSD License | ||||
set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of | Redistribution and use in source and binary forms, with or | |||
draft-zhuang-i2rs-yang-dc-fabric-network-topology; | without modification, is permitted pursuant to, and subject | |||
see the RFC itself for full legal notices."; | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents(http://trustee.ietf.org/license-info). | ||||
revision "2017-11-21"{ | This version of this YANG module is part of | |||
description | draft-zhuang-i2rs-yang-dc-fabric-network-topology; | |||
"fix warnings."; | see the RFC itself for full legal notices."; | |||
reference | revision "2017-11-29"{ | |||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-01"; | 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"{ | revision "2017-06-29"{ | |||
description | description | |||
"update to NMDA compliant format"; | "update to NMDA compliant format"; | |||
reference | reference | |||
"draft-zhuang-i2rs-yang-dc-fabric-network-topology-04"; | "draft-zhuang-i2rs-yang-dc-fabric-network-topology-04"; | |||
} | } | |||
revision "2017-03-10" { | revision "2017-03-10" { | |||
description | description | |||
"remove the rpcs and add extra attributes"; | "remove the rpcs and add extra attributes"; | |||
reference | reference | |||
"draft-zhuang-i2rs-yang-dc-fabric-network-topology-03"; | "draft-zhuang-i2rs-yang-dc-fabric-network-topology-03"; | |||
} | } | |||
revision "2016-09-29" { | ||||
description | revision "2016-09-29" { | |||
description | ||||
"Initial revision of fabric topology."; | "Initial revision of fabric topology."; | |||
reference | reference | |||
"draft-zhuang-i2rs-yang-dc-fabric-network-topology-02"; | "draft-zhuang-i2rs-yang-dc-fabric-network-topology-02"; | |||
} | } | |||
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 { | } | |||
description "options for a fabric"; | ||||
leaf gateway-mode { | grouping fabric-options { | |||
description "options for a fabric"; | ||||
leaf gateway-mode { | ||||
type enumeration { | type enumeration { | |||
enum centralized { | enum centralized { | |||
description "centerilized gateway"; | description "centerilized gateway"; | |||
} | } | |||
enum distributed { | enum distributed { | |||
description "distributed gateway"; | description "distributed gateway"; | |||
} | } | |||
} | } | |||
default "distributed"; | default "distributed"; | |||
description "gateway mode"; | description "gateway mode"; | |||
} | } | |||
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 fabrictype: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 fabrictype:node-ref; | |||
description | description | |||
"the device it includes to"; | "the device it includes to"; | |||
} | } | |||
leaf role { | leaf role { | |||
type fabrictype:device-role; | type fabrictype:device-role; | |||
default "LEAF"; | default "LEAF"; | |||
description | description | |||
"role of the node"; | "role of the node"; | |||
} | ||||
} | } | |||
} | grouping link-attributes { | |||
description "link attributes"; | ||||
grouping link-attributes { | leaf link-ref { | |||
description "link attributes"; | ||||
leaf link-ref { | ||||
type fabrictype:link-ref; | type fabrictype: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 fabrictype:tp-ref; | |||
description | description | |||
"port reference"; | "port reference"; | |||
} | } | |||
leaf port-type { | leaf port-type { | |||
type enumeration { | type identityref { | |||
enum ETH { | base fabrictype:port-type; | |||
description "ETH"; | ||||
} | ||||
enum SERIAL { | ||||
description "Serial"; | ||||
} | ||||
} | } | |||
description | description | |||
"port type: ethernet or serial"; | "port type: ethernet or serial or others"; | |||
} | } | |||
leaf bandwith { | leaf bandwidth { | |||
type enumeration { | type identityref { | |||
enum 1G { | base fabrictype:bandwidth; | |||
description "1G"; | ||||
} | ||||
enum 10G { | ||||
description "10G"; | ||||
} | ||||
enum 40G { | ||||
description "40G"; | ||||
} | ||||
enum 100G { | ||||
description "100G"; | ||||
} | ||||
enum 10M { | ||||
description "10M"; | ||||
} | ||||
enum 100M { | ||||
description "100M"; | ||||
} | ||||
enum 1M { | ||||
description "1M"; | ||||
} | ||||
} | } | |||
description | description | |||
"bandwidth on the port"; | "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-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:underlayer-network-type; | type fabrictype:underlay-network-type; | |||
description | description | |||
"The type of physical network that implements this fabric.Examples are vlan, and trill."; | "The type of physical network that implements | |||
} | this 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 | 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 "include device nodes in the 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 "include device links within the 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 "include device ports within 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-attribute { | 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-attribute { | container fport-attributes { | |||
config false; | config false; | |||
description | description | |||
"attributes for fabric ports"; | "attributes for fabric ports"; | |||
uses fabrictype:fabric-port; | uses fabrictype:fabric-port; | |||
} | ||||
} | } | |||
} | ||||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
5. Security Consideration | 5. Security Consideration | |||
The underlay topology is learnt from the physical network, while the | The underlay topology is learnt from the physical network, while the | |||
fabric topology is composed of a collection of the underlay | fabric topology is composed of a collection of the underlay nodes. | |||
nodes. The fabric model doesn't change the connections of underlay | The fabric model doesn't change the connections of underlay networks. | |||
networks. While there are data nodes for fabric configuration, these | While there are data nodes for fabric configuration, these data nodes | |||
data nodes may be considered sensitive or vulnerable in some network | may be considered sensitive or vulnerable in some network | |||
enviroments. Write operations (e.g., edit-config) to these data | enviroments. Write operations (e.g., edit-config) to these data | |||
nodes without proper protection can have a negative effect on network | nodes without proper protection can have a negative effect on network | |||
operations. For example, misconfiguration of underlay nodes to a | operations. For example, misconfiguration of underlay nodes to a | |||
fabric node may lead to inproper activities when management are | fabric node may lead to inproper activities when management are | |||
implemented at fabric layer by customers. | implemented at fabric layer by customers. | |||
6. Acknowledgements | 6. 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, | |||
skipping to change at page 22, line 50 ¶ | skipping to change at page 23, line 24 ¶ | |||
7.2. Informative References | 7.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-21.yang" | <CODE BEGINS> file "ietf-fabric-topology-state@2017-11-29.yang" | |||
module ietf-fabric-topology-state { | module ietf-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-fabric-topology-state"; | |||
prefix sfabric; | prefix sfabric; | |||
import ietf-network-state { prefix nws; } | import ietf-network-state { prefix nws; } | |||
import ietf-fabric-types { prefix fabrictype; revision-date "2016-09-29"; } | import ietf-fabric-types { prefix fabrictype;} | |||
import ietf-fabric-topology {prefix fabric;} | import ietf-fabric-topology {prefix fabric;} | |||
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 | WG Chair: Susan Hares | |||
<mailto:shares@ndzh.com> | <mailto:shares@ndzh.com> | |||
WG Chair: Russ White | WG Chair: Russ White | |||
<mailto:russ@riw.us> | <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 topology state for non NMDA. | "This module contains a collection of YANG definitions for | |||
Fabric topology state for non NMDA. | ||||
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 | Relating to IETF Documents(http://trustee.ietf.org/license-info). | |||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of | This version of this YANG module is part of | |||
draft-zhuang-i2rs-yang-dc-fabric-network-topology; | draft-zhuang-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-21"{ | revision "2017-11-29" { | |||
description | description "fix comments"; | |||
"fix warnings."; | reference | |||
reference | "draft-ietf-i2rs-yang-dc-fabric-network-topology-02"; | |||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-01"; | } | |||
} | ||||
revision "2017-11-21"{ | ||||
description "fix warnings."; | ||||
reference | ||||
"draft-ietf-i2rs-yang-dc-fabric-network-topology-01"; | ||||
} | ||||
revision "2017-06-29"{ | revision "2017-06-29"{ | |||
description | description "update to NMDA compliant format"; | |||
"update to NMDA compliant format"; | reference | |||
reference | "draft-zhuang-i2rs-yang-dc-fabric-network-topology-04"; | |||
"draft-zhuang-i2rs-yang-dc-fabric-network-topology-04"; | } | |||
} | ||||
//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 "centerilized gateway"; | } | |||
} | enum distributed { | |||
enum distributed { | description "distributed gateway"; | |||
description "distributed gateway"; | } | |||
} | ||||
} | ||||
default "distributed"; | ||||
description "gateway mode"; | ||||
} | } | |||
default "distributed"; | ||||
description "gateway mode"; | ||||
} | ||||
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"; | ||||
description "traffic behavior of the fabric"; | ||||
} | } | |||
default "normal"; | ||||
description "traffic behavior of the fabric"; | ||||
} | ||||
leaf-list capability-supported { | leaf-list capability-supported { | |||
type fabrictype:service-capabilities; | type fabrictype: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 fabrictype:node-ref; | |||
description | description "the device it includes"; | |||
"the device it includes to"; | } | |||
} | leaf role { | |||
leaf role { | type fabrictype:device-role; | |||
type fabrictype:device-role; | default "LEAF"; | |||
default "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 fabrictype: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 fabrictype:tp-ref; | |||
description | description "port reference"; | |||
"port reference"; | } | |||
leaf port-type { | ||||
type identityref { | ||||
base fabrictype:port-type; | ||||
} | } | |||
leaf port-type { | description | |||
type enumeration { | "port type: ethernet or serial or others"; | |||
enum ETH { | ||||
description "ETH"; | ||||
} | ||||
enum SERIAL { | ||||
description "Serial"; | ||||
} | ||||
} | ||||
description | ||||
"port type: ethernet or serial"; | ||||
} | } | |||
leaf bandwith { | leaf bandwidth { | |||
type enumeration { | type identityref { | |||
enum 1G { | base fabrictype:bandwidth; | |||
description "1G"; | ||||
} | ||||
enum 10G { | ||||
description "10G"; | ||||
} | ||||
enum 40G { | ||||
description "40G"; | ||||
} | ||||
enum 100G { | ||||
description "100G"; | ||||
} | ||||
enum 10M { | ||||
description "10M"; | ||||
} | ||||
enum 100M { | ||||
description "100M"; | ||||
} | ||||
enum 1M { | ||||
description "1M"; | ||||
} | ||||
} | ||||
description | ||||
"bandwidth on 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 { | |||
} | type string; | |||
description "name of the fabric"; | ||||
leaf name { | } | |||
type string; | leaf type { | |||
description | type fabrictype:underlay-network-type; | |||
"name of the fabric"; | description | |||
} | "The type of physical network that implements this | |||
leaf type { | fabric.Examples are vlan, and trill."; | |||
type fabrictype:underlayer-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 "include device nodes in the fabric"; | ||||
uses device-attributes; | ||||
} | ||||
list device-links { | ||||
key link-ref; | ||||
description "include device links within the fabric"; | ||||
uses link-attributes; | ||||
} | ||||
list device-ports { | ||||
key port-ref; | ||||
description "include device ports within the fabric"; | ||||
uses port-attributes; | ||||
} | } | |||
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 "include device nodes in the fabric"; | ||||
uses device-attributes; | ||||
} | ||||
list device-links { | ||||
key link-ref; | ||||
description "include device links within the fabric"; | ||||
uses link-attributes; | ||||
} | ||||
list device-ports { | ||||
key port-ref; | ||||
description "include device ports within the fabric"; | ||||
uses port-attributes; | ||||
} | ||||
} | } | |||
// augment statements | // 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:network-types" { | |||
} | description | |||
"Introduce new network type for Fabric-based logical topology"; | ||||
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 for fabric nodes."; | ||||
container fabric-attributes-state { | ||||
description | description | |||
"Augmentation parameters apply only for networks | "attributes for a fabric network"; | |||
with fabric topology."; | uses fabric-attributes; | |||
} | } | |||
description "Augmentation for fabric nodes."; | ||||
container fabric-attribute-state { | ||||
config false; | ||||
description | ||||
"attributes for a fabric network"; | ||||
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 | |||
China | China | |||
Email: zhuangyan.zhuang@huawei.com | Email: zhuangyan.zhuang@huawei.com | |||
End of changes. 162 change blocks. | ||||
682 lines changed or deleted | 658 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/ |