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 YANG module is part of RFC 8542; | import ietf-network { | |||
see the RFC itself for full legal notices."; | prefix nw; | |||
reference | ||||
"RFC 8345: A YANG Data Model for Network 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 for fabric 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 for fabric port"; | "Initial revision."; | |||
} | reference | |||
"RFC 8542: A YANG Data Model for Fabric Topology | ||||
in Data-Center Networks"; | ||||
} | ||||
identity eth { | identity fabric-type { | |||
base port-type; | description | |||
description | "Base type for fabric networks"; | |||
"Ethernet"; | } | |||
} | ||||
identity serial { | identity vxlan-fabric { | |||
base port-type; | base fabric-type; | |||
description | description | |||
"Serial"; | "VXLAN fabric"; | |||
} | } | |||
identity bandwidth { | identity vlan-fabric { | |||
description | base fabric-type; | |||
"Base for bandwidth"; | description | |||
"VLAN fabric"; | ||||
} | ||||
} | identity trill-fabric { | |||
base fabric-type; | ||||
description | ||||
"TRILL fabric"; | ||||
} | ||||
identity bw-1M { | identity port-type { | |||
base bandwidth; | description | |||
description | "Base type for fabric port"; | |||
"1M"; | } | |||
} | ||||
identity bw-10M { | identity eth { | |||
base bandwidth; | base port-type; | |||
description | description | |||
"10Mbps"; | "Ethernet"; | |||
} | } | |||
identity bw-100M { | identity serial { | |||
base bandwidth; | base port-type; | |||
description | description | |||
"100Mbps"; | "Serial"; | |||
} | } | |||
identity bw-1G { | identity bandwidth { | |||
base bandwidth; | description | |||
description | "Base for bandwidth"; | |||
"1Gbps"; | } | |||
} | ||||
identity bw-10G { | identity bw-1M { | |||
base bandwidth; | base bandwidth; | |||
description | description | |||
"10Gbps"; | "1M"; | |||
} | } | |||
identity bw-25G { | identity bw-10M { | |||
base bandwidth; | base bandwidth; | |||
description | description | |||
"25Gbps"; | "10Mbps"; | |||
} | } | |||
identity bw-40G { | identity bw-100M { | |||
base bandwidth; | base bandwidth; | |||
description | description | |||
"40Gbps"; | "100Mbps"; | |||
} | } | |||
identity bw-100G { | identity bw-1G { | |||
base bandwidth; | base bandwidth; | |||
description | description | |||
"100Gbps"; | "1Gbps"; | |||
} | ||||
} | identity bw-10G { | |||
base bandwidth; | ||||
description | ||||
"10Gbps"; | ||||
} | ||||
identity bw-400G { | identity bw-25G { | |||
base bandwidth; | base bandwidth; | |||
description | description | |||
"400Gbps"; | "25Gbps"; | |||
} | } | |||
identity device-role { | identity bw-40G { | |||
description | base bandwidth; | |||
"Base for the device role in a fabric."; | description | |||
} | "40Gbps"; | |||
} | ||||
identity spine { | identity bw-100G { | |||
base device-role; | base bandwidth; | |||
description | description | |||
"This is a spine node in a fabric."; | "100Gbps"; | |||
} | } | |||
identity leaf { | identity bw-400G { | |||
base device-role; | base bandwidth; | |||
description | description | |||
"This is a leaf node in a fabric."; | "400Gbps"; | |||
} | } | |||
identity border { | identity device-role { | |||
base device-role; | description | |||
description | "Base for the device role in a fabric."; | |||
"This is a border node to connect to other | } | |||
fabric/network."; | ||||
} | ||||
identity fabric-port-role { | identity spine { | |||
description | base device-role; | |||
"Base for the port's role in a fabric."; | description | |||
} | "This is a spine node in a fabric."; | |||
} | ||||
identity internal { | identity leaf { | |||
base fabric-port-role; | base device-role; | |||
description | description | |||
"The port is used for devices to access each | "This is a leaf node in a fabric."; | |||
other within a fabric."; | } | |||
} | ||||
identity external { | identity border { | |||
base fabric-port-role; | base device-role; | |||
description | description | |||
"The port is used for a fabric to connect to | "This is a border node to connect to other | |||
outside network."; | fabric/network."; | |||
} | } | |||
identity access { | identity fabric-port-role { | |||
base fabric-port-role; | description | |||
description | "Base for the port's role in a fabric."; | |||
"The port is used for an endpoint to connect | } | |||
to a fabric."; | ||||
} | ||||
identity service-capability { | identity internal { | |||
description | base fabric-port-role; | |||
"Base for the service of the fabric "; | description | |||
} | "The port is used for devices to access each | |||
other within a fabric."; | ||||
} | ||||
identity ip-mapping { | identity external { | |||
base service-capability; | base fabric-port-role; | |||
description | description | |||
"NAT."; | "The port is used for a fabric to connect to | |||
} | outside network."; | |||
} | ||||
identity acl-redirect { | identity access { | |||
base service-capability; | base fabric-port-role; | |||
description | description | |||
"ACL redirect, which can provide a Service Function Chain (SFC)."; | "The port is used for an endpoint to connect | |||
} | to a fabric."; | |||
} | ||||
identity dynamic-route-exchange { | identity service-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 can provide a Service Function Chain (SFC)."; | |||
This identifier can be generated when composing a fabric. | } | |||
The composition of a fabric can be achieved by defining an | ||||
RPC, which is left for vendor specific implementation | ||||
and not provided in this model."; | ||||
} | ||||
typedef service-capabilities { | 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."; | ||||
} | ||||
typedef bandwidth { | typedef fabric-id { | |||
type identityref { | type nw:node-id; | |||
base bandwidth; | description | |||
} | "An identifier for a fabric in a topology. | |||
description | This identifier can be generated when composing a fabric. | |||
"Bandwidth of the port."; | 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 node-ref { | typedef service-capabilities { | |||
type instance-identifier; | type identityref { | |||
description | base service-capability; | |||
"A reference to a node in topology"; | } | |||
} | description | |||
"Service capability of the fabric"; | ||||
} | ||||
typedef tp-ref { | typedef port-type { | |||
type instance-identifier; | type identityref { | |||
description | base port-type; | |||
"A reference to a termination point in topology"; | } | |||
} | description | |||
"Port type: ethernet or serial or others."; | ||||
} | ||||
typedef link-ref { | typedef bandwidth { | |||
type instance-identifier; | type identityref { | |||
description | base bandwidth; | |||
"A reference to a link in topology"; | } | |||
} | description | |||
"Bandwidth of the port."; | ||||
} | ||||
typedef underlay-network-type { | typedef node-ref { | |||
type identityref { | type instance-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"; | ||||
} | ||||
typedef device-role { | typedef link-ref { | |||
type identityref { | type instance-identifier; | |||
base device-role; | description | |||
} | "A reference to a link in topology"; | |||
description | } | |||
"Role of the device node."; | ||||
} | ||||
typedef fabric-port-role { | typedef underlay-network-type { | |||
type identityref { | type identityref { | |||
base fabric-port-role; | base fabric-type; | |||
} | } | |||
description | description | |||
"Role of the port in a fabric."; | "The type of physical network that implements | |||
} | this fabric. Examples are VLAN and TRILL."; | |||
} | ||||
typedef fabric-port-type { | typedef device-role { | |||
type enumeration { | type identityref { | |||
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 | type identityref { | |||
"Attributes of a fabric port."; | base fabric-port-role; | |||
leaf name { | } | |||
type string; | description | |||
description | "Role of the port in a fabric."; | |||
"Name of the port."; | } | |||
} | typedef fabric-port-type { | |||
leaf role { | type enumeration { | |||
type fabric-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, 11 March 2019. | |||
[RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, | [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, | |||
L., Sridhar, T., Bursell, M., and C. Wright, "Virtual | L., Sridhar, T., Bursell, M., and C. Wright, "Virtual | |||
eXtensible Local Area Network (VXLAN): A Framework for | eXtensible Local Area Network (VXLAN): A Framework for | |||
Overlaying Virtualized Layer 2 Networks over Layer 3 | Overlaying Virtualized Layer 2 Networks over Layer 3 | |||
Networks", 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 fabric Network"; | description | |||
description | "Options for a fabric"; | |||
"The presence of the container node indicates | leaf gateway-mode { | |||
fabric topology"; | type enumeration { | |||
} | enum centralized { | |||
} | description | |||
"The fabric uses centralized | ||||
gateway, in which gateway is deployed on SPINE | ||||
node."; | ||||
} | ||||
enum distributed { | ||||
description | ||||
"The fabric uses distributed | ||||
gateway, in which gateway is deployed on LEAF | ||||
node."; | ||||
} | ||||
} | ||||
default "distributed"; | ||||
description | ||||
"Gateway mode of the fabric"; | ||||
} | ||||
leaf traffic-behavior { | ||||
type enumeration { | ||||
enum normal { | ||||
description | ||||
"Normal means no policy is needed | ||||
for all traffic"; | ||||
} | ||||
enum policy-driven { | ||||
description | ||||
"Policy driven means policy is | ||||
needed for the traffic; otherwise, the traffic | ||||
will be discarded."; | ||||
} | ||||
} | ||||
default "normal"; | ||||
description | ||||
"Traffic behavior of the fabric"; | ||||
} | ||||
leaf-list capability-supported { | ||||
type fabrictypes:service-capabilities; | ||||
description | ||||
"It provides a list of supported services of the | ||||
fabric. The service-capabilities is defined as | ||||
identity-ref. Users can define more services | ||||
by defining new identities."; | ||||
} | ||||
} | ||||
grouping fabric-options { | grouping device-attributes { | |||
description | description | |||
"Options for a fabric"; | "device attributes"; | |||
leaf gateway-mode { | leaf device-ref { | |||
type enumeration { | type fabrictypes:node-ref; | |||
enum centralized { | description | |||
description | "The device that the fabric includes that refers | |||
"The fabric uses centralized | to a node in another topology."; | |||
gateway, in which gateway is deployed on SPINE | } | |||
node."; | leaf-list role { | |||
} | type fabrictypes:device-role; | |||
enum distributed { | default "fabrictypes:leaf"; | |||
description | description | |||
"The fabric uses distributed | "It is a list of device roles to represent the roles | |||
gateway, in which gateway is deployed on LEAF | that a device plays within a POD, such as SPINE, | |||
node."; | 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 | |||
default "distributed"; | define new identities 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-list capability-supported { | ||||
type fabrictypes:service-capabilities; | ||||
description | ||||
"It provides a list of supported services of the | ||||
fabric. The service-capabilities is defined as | ||||
identity-ref. Users can define more services | ||||
by defining new identities."; | ||||
} | ||||
} | ||||
grouping device-attributes { | grouping link-attributes { | |||
description | description | |||
"device attributes"; | "Link attributes"; | |||
leaf device-ref { | leaf link-ref { | |||
type fabrictypes:node-ref; | type fabrictypes:link-ref; | |||
description | description | |||
"The device that the fabric includes that refers | "The link that the fabric includes that refers to | |||
to a node in another topology."; | a link 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."; | ||||
} | ||||
} | ||||
grouping link-attributes { | grouping port-attributes { | |||
description | description | |||
"Link attributes"; | "Port attributes"; | |||
leaf link-ref { | leaf port-ref { | |||
type fabrictypes:link-ref; | type fabrictypes:tp-ref; | |||
description | description | |||
"The link that the fabric includes that refers to | "The port that the fabric includes that refers to | |||
a link in another topology."; | a termination-point in another topology."; | |||
} | } | |||
} | leaf port-type { | |||
type fabrictypes:port-type; | ||||
description | ||||
"Port type is defined as identity-ref. The current | ||||
types include ethernet or serial. If more types | ||||
are needed, developers can define new identities."; | ||||
} | ||||
leaf bandwidth { | ||||
type fabrictypes:bandwidth; | ||||
description | ||||
"Bandwidth of the port. It is defined as | ||||
identity-ref. If more speeds are introduced, | ||||
developers can define new identities for them. Current | ||||
speeds include 1M, 10M, 100M, 1G, 10G, | ||||
25G, 40G, 100G, and 400G."; | ||||
} | ||||
} | ||||
grouping port-attributes { | grouping fabric-attributes { | |||
description | description | |||
"Port attributes"; | "Attributes of a fabric"; | |||
leaf port-ref { | leaf fabric-id { | |||
type fabrictypes:tp-ref; | type fabrictypes:fabric-id; | |||
description | description | |||
"The port that the fabric includes that refers to | "Fabric ID"; | |||
a termination-point in another topology."; | } | |||
} | leaf name { | |||
leaf port-type { | type string; | |||
type fabrictypes:port-type; | description | |||
description | "Name of the fabric"; | |||
"Port type is 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 | |||
leaf bandwidth { | "The type of physical network that implements this | |||
type fabrictypes:bandwidth; | fabric. Examples are VLAN and TRILL."; | |||
description | } | |||
"Bandwidth of the port. It is defined as | container vni-capacity { | |||
identity-ref. If more speeds are introduced, | description | |||
developers can define new identities for them. Current | "The range of the VXLAN Network | |||
speeds include 1M, 10M, 100M, 1G, 10G, | Identifier (VNI) defined in RFC 7348 that the POD uses."; | |||
25G, 40G, 100G, and 400G."; | leaf min { | |||
} | type int32; | |||
} | description | |||
"The lower-limit VNI."; | ||||
} | ||||
leaf max { | ||||
type int32; | ||||
description | ||||
"The upper-limit VNI."; | ||||
} | ||||
} | ||||
leaf description { | ||||
type string; | ||||
description | ||||
"Description of the fabric"; | ||||
} | ||||
container options { | ||||
description | ||||
"Options of the fabric"; | ||||
uses fabric-options; | ||||
} | ||||
list device-nodes { | ||||
key "device-ref"; | ||||
description | ||||
"Device nodes that are included in a fabric."; | ||||
uses device-attributes; | ||||
} | ||||
list device-links { | ||||
key "link-ref"; | ||||
description | ||||
"Links that are included within a fabric."; | ||||
uses link-attributes; | ||||
} | ||||
list device-ports { | ||||
key "port-ref"; | ||||
description | ||||
"Ports that are included in the fabric."; | ||||
uses port-attributes; | ||||
} | ||||
} | ||||
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 a new network type for fabric-based logical | |||
"Description of the fabric"; | topology"; | |||
} | uses fabric-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 a fabric."; | ||||
uses device-attributes; | ||||
} | ||||
list device-links { | ||||
key "link-ref"; | ||||
description | ||||
"Links that are included within a fabric."; | ||||
uses link-attributes; | ||||
} | ||||
list device-ports { | ||||
key "port-ref"; | ||||
description | ||||
"Ports that are included in the fabric."; | ||||
uses port-attributes; | ||||
} | ||||
} | ||||
// augment statements | augment "/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 from http://tools.ietf.org/tools/rfcdiff/ |