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