| ietf-dc-fabric-topology@2019-02-25.yang | ietf-dc-fabric-topology@2019-02-25.yang-formatted | |||
|---|---|---|---|---|
| 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 { | ||||
| prefix nw; | ||||
| reference | ||||
| "RFC 8345: A YANG Data Model for Network Topologies"; | ||||
| } | ||||
| import ietf-network-topology { | ||||
| prefix nt; | ||||
| reference | ||||
| "RFC 8345: A YANG Data Model for Network Topologies"; | ||||
| } | ||||
| import ietf-dc-fabric-types { | ||||
| prefix fabrictypes; | ||||
| reference | import ietf-network { | |||
| "RFC 8542: A YANG Data Model for Fabric Topology in | prefix nw; | |||
| Data Center Networks"; | reference | |||
| } | "RFC 8345: A YANG Data Model for Network Topologies"; | |||
| } | ||||
| import ietf-network-topology { | ||||
| prefix nt; | ||||
| reference | ||||
| "RFC 8345: A YANG Data Model for Network Topologies"; | ||||
| } | ||||
| import ietf-dc-fabric-types { | ||||
| prefix fabrictypes; | ||||
| reference | ||||
| "RFC 8542: A YANG Data Model for Fabric Topology in | ||||
| 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. | 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 | Copyright (c) 2019 IETF Trust and the persons identified | |||
| or without modification, is permitted pursuant to, and | as authors of the code. All rights reserved. | |||
| 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; | Redistribution and use in source and binary forms, with | |||
| see the RFC itself for full legal notices."; | 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). | ||||
| revision "2019-02-25"{ | This version of this YANG module is part of RFC 8542; | |||
| description | see the RFC itself for full legal notices."; | |||
| "Initial revision."; | ||||
| reference | ||||
| "RFC 8542: A YANG Data Model for Fabric Topology | ||||
| in Data Center Networks"; | ||||
| } | ||||
| //grouping statements | revision 2019-02-25 { | |||
| grouping fabric-network-type { | description | |||
| description "Identify the topology type to be fabric."; | "Initial revision."; | |||
| container fabric-network { | reference | |||
| presence "indicates fabric Network"; | "RFC 8542: A YANG Data Model for Fabric Topology | |||
| description | in Data Center Networks"; | |||
| "The presence of the container node indicates | } | |||
| fabric topology"; | ||||
| } | ||||
| } | ||||
| grouping fabric-options { | //grouping statements | |||
| description "Options for a fabric"; | ||||
| leaf gateway-mode { | grouping fabric-network-type { | |||
| type enumeration { | description | |||
| enum centralized { | "Identify the topology type to be fabric."; | |||
| description "The Fabric uses centralized | container fabric-network { | |||
| gateway, in which gateway is deployed on SPINE | presence "indicates fabric Network"; | |||
| node."; | description | |||
| } | "The presence of the container node indicates | |||
| enum distributed { | fabric topology"; | |||
| 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 { | grouping fabric-options { | |||
| type enumeration { | description | |||
| enum normal { | "Options for a fabric"; | |||
| description "Normal means no policy is needed | leaf gateway-mode { | |||
| for all traffic"; | type enumeration { | |||
| } | enum centralized { | |||
| enum policy-driven { | description | |||
| description "Policy driven means policy is | "The Fabric uses centralized | |||
| needed for the traffic; otherwise, the traffic | gateway, in which gateway is deployed on SPINE | |||
| will be discarded."; | node."; | |||
| } | ||||
| } | ||||
| default "normal"; | ||||
| description "Traffic behavior of the fabric"; | ||||
| } | } | |||
| enum distributed { | ||||
| leaf-list capability-supported { | description | |||
| type fabrictypes:service-capabilities; | "The Fabric uses distributed | |||
| description | gateway, in which gateway is deployed on LEAF | |||
| "It provides a list of supported services of the | node."; | |||
| fabric. The service-capabilities is defined as | ||||
| identity-ref. Users can define more services | ||||
| by defining new identities."; | ||||
| } | } | |||
| } | ||||
| default "distributed"; | ||||
| description | ||||
| "Gateway mode of the fabric"; | ||||
| } | } | |||
| leaf traffic-behavior { | ||||
| grouping device-attributes { | type enumeration { | |||
| description "device attributes"; | enum normal { | |||
| leaf device-ref { | description | |||
| type fabrictypes:node-ref; | "Normal means no policy is needed | |||
| description | for all traffic"; | |||
| "The device that the fabric includes that refers | ||||
| to a node in another topology."; | ||||
| } | } | |||
| leaf-list role { | enum policy-driven { | |||
| type fabrictypes:device-role; | description | |||
| default fabrictypes:leaf; | "Policy driven means policy is | |||
| description | needed for the traffic; otherwise, the traffic | |||
| "It is a list of device-roles to represent the roles | will be discarded."; | |||
| 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."; | ||||
| } | } | |||
| } | ||||
| default "normal"; | ||||
| description | ||||
| "Traffic behavior of the fabric"; | ||||
| } | } | |||
| leaf-list capability-supported { | ||||
| grouping link-attributes { | type fabrictypes:service-capabilities; | |||
| description "Link attributes"; | description | |||
| leaf link-ref { | "It provides a list of supported services of the | |||
| type fabrictypes:link-ref; | fabric. The service-capabilities is defined as | |||
| description | identity-ref. Users can define more services | |||
| "The link that the fabric includes that refers to | by defining new identities."; | |||
| a link in another topology."; | ||||
| } | ||||
| } | } | |||
| } | ||||
| grouping port-attributes { | grouping device-attributes { | |||
| description "Port attributes"; | description | |||
| leaf port-ref { | "device attributes"; | |||
| type fabrictypes:tp-ref; | leaf device-ref { | |||
| description | type fabrictypes:node-ref; | |||
| "The port that the fabric includes that refers to | description | |||
| a termination-point in another topology."; | "The device that the fabric includes that refers | |||
| } | to a node in another topology."; | |||
| leaf port-type { | ||||
| type fabrictypes:port-type; | ||||
| description | ||||
| "Port type is defined as identity-ref. If 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."; | ||||
| } | ||||
| } | } | |||
| leaf-list role { | ||||
| grouping fabric-attributes { | type fabrictypes:device-role; | |||
| description "Attributes of a fabric"; | default "fabrictypes:leaf"; | |||
| description | ||||
| leaf fabric-id { | "It is a list of device-roles to represent the roles | |||
| type fabrictypes:fabric-id; | that a device plays within a POD, such as SPINE, | |||
| description | LEAF, Border, or Border-Leaf. | |||
| "An identifier for a fabric in a topology. | The device-role is defined as identity-ref. If more | |||
| This identifier can be generated when composing a fabric. | than 2 stages are used for a POD, users can | |||
| The composition of a fabric can be achieved by defining an | define new identities for the device-role."; | |||
| RPC, which is left for vendor-specific implementation and | ||||
| not provided in this model."; | ||||
| } | ||||
| 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 { | ||||
| 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; | ||||
| } | ||||
| } | } | |||
| } | ||||
| // augment statements | grouping link-attributes { | |||
| augment "/nw:networks/nw:network/nw:network-types" { | ||||
| description | description | |||
| "Introduce a new network type for fabric-based topology"; | "Link attributes"; | |||
| leaf link-ref { | ||||
| type fabrictypes:link-ref; | ||||
| description | ||||
| "The link that the fabric includes that refers to | ||||
| a link in another topology."; | ||||
| } | ||||
| } | ||||
| uses fabric-network-type; | grouping port-attributes { | |||
| description | ||||
| "Port attributes"; | ||||
| leaf port-ref { | ||||
| type fabrictypes:tp-ref; | ||||
| description | ||||
| "The port that the fabric includes that refers to | ||||
| a termination-point in another topology."; | ||||
| } | } | |||
| leaf port-type { | ||||
| type fabrictypes:port-type; | ||||
| description | ||||
| "Port type is defined as identity-ref. If 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."; | ||||
| } | ||||
| } | ||||
| augment "/nw:networks/nw:network/nw:node" { | grouping fabric-attributes { | |||
| when "/nw:networks/nw:network/nw:network-types/" | description | |||
| +"fabric:fabric-network"{ | "Attributes of a fabric"; | |||
| leaf fabric-id { | ||||
| type fabrictypes:fabric-id; | ||||
| description | ||||
| "An identifier for a fabric in a topology. | ||||
| This identifier can be generated when composing a fabric. | ||||
| The composition of a fabric can be achieved by defining an | ||||
| RPC, which is left for vendor-specific implementation and | ||||
| not provided in this model."; | ||||
| } | ||||
| 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 | description | |||
| "Augmentation parameters apply only for networks | "The lower-limit VNI."; | |||
| with fabric topology"; | ||||
| } | } | |||
| description "Augmentation for fabric nodes created by | leaf max { | |||
| fabric topology."; | 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; | ||||
| } | ||||
| } | ||||
| container fabric-attributes { | // augment statements | |||
| description | ||||
| "Attributes for a fabric network"; | ||||
| uses fabric-attributes; | augment "/nw:networks/nw:network/nw:network-types" { | |||
| } | description | |||
| "Introduce a new network type for fabric-based topology"; | ||||
| uses fabric-network-type; | ||||
| } | ||||
| augment "/nw:networks/nw:network/nw:node" { | ||||
| when '/nw:networks/nw:network/nw:network-types/' | ||||
| + 'fabric:fabric-network' { | ||||
| description | ||||
| "Augmentation parameters apply only for networks | ||||
| with fabric topology"; | ||||
| } | ||||
| description | ||||
| "Augmentation for fabric nodes created by | ||||
| fabric topology."; | ||||
| container fabric-attributes { | ||||
| description | ||||
| "Attributes for a fabric network"; | ||||
| uses fabric-attributes; | ||||
| } | } | |||
| } | ||||
| augment "/nw:networks/nw:network/nw:node/nt:termination-point" { | augment "/nw:networks/nw:network/nw:node/nt:termination-point" { | |||
| when "/nw:networks/nw:network/nw:network-types/" | when '/nw:networks/nw:network/nw:network-types/' | |||
| +"fabric:fabric-network" { | + '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."; | ||||
| container fport-attributes { | ||||
| config false; | ||||
| description | ||||
| "Attributes for fabric ports"; | ||||
| uses fabrictypes:fabric-port; | ||||
| } | ||||
| } | } | |||
| description | ||||
| "Augmentation for port on fabric."; | ||||
| container fport-attributes { | ||||
| config false; | ||||
| description | ||||
| "Attributes for fabric ports"; | ||||
| uses fabrictypes:fabric-port; | ||||
| } | ||||
| } | ||||
| } | } | |||
| End of changes. 35 change blocks. | ||||
| 254 lines changed or deleted | 247 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/ | ||||