From 681290f26477f05e547d56d037a6f2d302d766c0 Mon Sep 17 00:00:00 2001 From: "miroslav.kovac" Date: Tue, 26 Mar 2019 10:54:17 +0100 Subject: [PATCH] Add RFC 8542 yang files. Signed-off-by: miroslav.kovac --- .../RFC/ietf-dc-fabric-topology-state.yang | 1 + ...f-dc-fabric-topology-state@2019-02-25.yang | 274 ++++++++++++++ .../ietf/RFC/ietf-dc-fabric-topology.yang | 1 + .../ietf-dc-fabric-topology@2019-02-25.yang | 288 ++++++++++++++ standard/ietf/RFC/ietf-dc-fabric-types.yang | 1 + .../RFC/ietf-dc-fabric-types@2019-02-25.yang | 353 ++++++++++++++++++ 6 files changed, 918 insertions(+) create mode 120000 standard/ietf/RFC/ietf-dc-fabric-topology-state.yang create mode 100644 standard/ietf/RFC/ietf-dc-fabric-topology-state@2019-02-25.yang create mode 120000 standard/ietf/RFC/ietf-dc-fabric-topology.yang create mode 100644 standard/ietf/RFC/ietf-dc-fabric-topology@2019-02-25.yang create mode 120000 standard/ietf/RFC/ietf-dc-fabric-types.yang create mode 100644 standard/ietf/RFC/ietf-dc-fabric-types@2019-02-25.yang diff --git a/standard/ietf/RFC/ietf-dc-fabric-topology-state.yang b/standard/ietf/RFC/ietf-dc-fabric-topology-state.yang new file mode 120000 index 000000000..85e8a5bca --- /dev/null +++ b/standard/ietf/RFC/ietf-dc-fabric-topology-state.yang @@ -0,0 +1 @@ +ietf-dc-fabric-topology-state@2019-02-25.yang \ No newline at end of file diff --git a/standard/ietf/RFC/ietf-dc-fabric-topology-state@2019-02-25.yang b/standard/ietf/RFC/ietf-dc-fabric-topology-state@2019-02-25.yang new file mode 100644 index 000000000..e16f99a38 --- /dev/null +++ b/standard/ietf/RFC/ietf-dc-fabric-topology-state@2019-02-25.yang @@ -0,0 +1,274 @@ +module ietf-dc-fabric-topology-state { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state"; + prefix sfabric; + + import ietf-network-state { + prefix nws; + reference + "RFC 8345: A 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 + "IETF I2RS (Interface to the Routing System) Working Group"; + contact + "WG Web: + WG List: + + Editor: Yan Zhuang + + + Editor: Danian Shi + "; + description + "This module contains a collection of YANG definitions for + fabric state, representing topology that either is learned + or results from applying topology that has been + configured per the ietf-dc-fabric-topology model, mirroring + the corresponding data nodes in this model. + + This model mirrors the configuration tree of ietf-dc-fabric + -topology but contains only read-only state data. The model + is not needed when the implementation infrastructure supports + the Network Management Datastore Architecture (NMDA). + + 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; + see the RFC itself for full legal notices."; + + revision 2019-02-25 { + description + "Initial revision."; + reference + "RFC 8542: A YANG Data Model for Fabric Topology in + Data-Center Networks"; + } + + //grouping statements + + grouping fabric-network-type { + description + "Identify the topology type to be fabric."; + container fabric-network { + presence "indicates fabric Network"; + description + "The presence of the container node indicates + fabric topology"; + } + } + + grouping fabric-options { + description + "Options for a fabric"; + leaf gateway-mode { + 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 device-attributes { + description + "device attributes"; + leaf device-ref { + type fabrictypes:node-ref; + description + "The device that the fabric includes that refers + to a node 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 { + description + "Link attributes"; + leaf link-ref { + type fabrictypes:link-ref; + description + "The link that the fabric includes that refers to + a link in another topology."; + } + } + + 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. 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 fabric-attributes { + 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 { + 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 + + 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; + } + } +} diff --git a/standard/ietf/RFC/ietf-dc-fabric-topology.yang b/standard/ietf/RFC/ietf-dc-fabric-topology.yang new file mode 120000 index 000000000..633466d9b --- /dev/null +++ b/standard/ietf/RFC/ietf-dc-fabric-topology.yang @@ -0,0 +1 @@ +ietf-dc-fabric-topology@2019-02-25.yang \ No newline at end of file diff --git a/standard/ietf/RFC/ietf-dc-fabric-topology@2019-02-25.yang b/standard/ietf/RFC/ietf-dc-fabric-topology@2019-02-25.yang new file mode 100644 index 000000000..29741ca1b --- /dev/null +++ b/standard/ietf/RFC/ietf-dc-fabric-topology@2019-02-25.yang @@ -0,0 +1,288 @@ +module ietf-dc-fabric-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology"; + 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 + "RFC 8542: A YANG Data Model for Fabric Topology in + Data-Center Networks"; + } + organization + "IETF I2RS (Interface to the Routing System) Working Group"; + contact + "WG Web: + WG List: + + Editor: Yan Zhuang + + + Editor: Danian Shi + "; + 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; + see the RFC itself for full legal notices."; + + revision 2019-02-25 { + description + "Initial revision."; + reference + "RFC 8542: A YANG Data Model for Fabric Topology + in Data-Center Networks"; + } + + //grouping statements + + grouping fabric-network-type { + description + "Identify the topology type to be fabric."; + container fabric-network { + presence "indicates fabric Network"; + description + "The presence of the container node indicates + fabric topology"; + } + } + grouping fabric-options { + description + "Options for a fabric"; + leaf gateway-mode { + 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 device-attributes { + description + "device attributes"; + leaf device-ref { + type fabrictypes:node-ref; + description + "The device that the fabric includes that refers + to a node 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 { + description + "Link attributes"; + leaf link-ref { + type fabrictypes:link-ref; + description + "The link that the fabric includes that refers to + a link in another topology."; + } + } + + 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. 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 fabric-attributes { + description + "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 + "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 + + 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" { + when '/nw:networks/nw:network/nw:network-types/' + + 'fabric:fabric-network' { + description + "Augmentation parameters apply only for networks + with fabric topology"; + } + description + "Augmentation for port on fabric."; + container fport-attributes { + config false; + description + "Attributes for fabric ports"; + uses fabrictypes:fabric-port; + } + } +} diff --git a/standard/ietf/RFC/ietf-dc-fabric-types.yang b/standard/ietf/RFC/ietf-dc-fabric-types.yang new file mode 120000 index 000000000..3831a9f08 --- /dev/null +++ b/standard/ietf/RFC/ietf-dc-fabric-types.yang @@ -0,0 +1 @@ +ietf-dc-fabric-types@2019-02-25.yang \ No newline at end of file diff --git a/standard/ietf/RFC/ietf-dc-fabric-types@2019-02-25.yang b/standard/ietf/RFC/ietf-dc-fabric-types@2019-02-25.yang new file mode 100644 index 000000000..58b7122a8 --- /dev/null +++ b/standard/ietf/RFC/ietf-dc-fabric-types@2019-02-25.yang @@ -0,0 +1,353 @@ +module ietf-dc-fabric-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types"; + 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: + WG List: + + Editor: Yan Zhuang + + + Editor: Danian Shi + "; + 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; + see the RFC itself for full legal notices."; + + revision 2019-02-25 { + description + "Initial revision."; + reference + "RFC 8542: A YANG Data Model for Fabric Topology + in Data-Center Networks"; + } + + identity fabric-type { + description + "Base type for fabric networks"; + } + + identity vxlan-fabric { + base fabric-type; + description + "VXLAN fabric"; + } + + identity vlan-fabric { + base fabric-type; + description + "VLAN fabric"; + } + + identity trill-fabric { + base fabric-type; + description + "TRILL fabric"; + } + + identity port-type { + description + "Base type for fabric port"; + } + + identity eth { + base port-type; + description + "Ethernet"; + } + + identity serial { + base port-type; + description + "Serial"; + } + + identity bandwidth { + description + "Base for bandwidth"; + } + + identity bw-1M { + base bandwidth; + description + "1M"; + } + + identity bw-10M { + base bandwidth; + description + "10Mbps"; + } + + identity bw-100M { + base bandwidth; + description + "100Mbps"; + } + + identity bw-1G { + base bandwidth; + description + "1Gbps"; + } + + identity bw-10G { + base bandwidth; + description + "10Gbps"; + } + + identity bw-25G { + base bandwidth; + description + "25Gbps"; + } + + identity bw-40G { + base bandwidth; + description + "40Gbps"; + } + + identity bw-100G { + base bandwidth; + description + "100Gbps"; + } + + identity bw-400G { + base bandwidth; + description + "400Gbps"; + } + + identity device-role { + description + "Base for the device role in a fabric."; + } + + identity spine { + base device-role; + description + "This is a spine node in a fabric."; + } + + identity leaf { + base device-role; + description + "This is a leaf node in a fabric."; + } + + identity border { + base device-role; + description + "This is a border node to connect to other + fabric/network."; + } + + identity fabric-port-role { + description + "Base for the port's role in a fabric."; + } + + identity internal { + base fabric-port-role; + description + "The port is used for devices to access each + other within a fabric."; + } + + identity external { + base fabric-port-role; + description + "The port is used for a fabric to connect to + outside network."; + } + + identity access { + base fabric-port-role; + description + "The port is used for an endpoint to connect + to a fabric."; + } + + identity service-capability { + description + "Base for the service of the fabric "; + } + + identity ip-mapping { + base service-capability; + description + "NAT."; + } + + identity acl-redirect { + base service-capability; + description + "ACL redirect, which can provide a Service Function Chain (SFC)."; + } + + identity dynamic-route-exchange { + base service-capability; + description + "Dynamic route exchange."; + } + + /* + * Typedefs + */ + + typedef fabric-id { + type nw:node-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."; + } + + typedef service-capabilities { + type identityref { + base service-capability; + } + description + "Service capability of the fabric"; + } + + typedef port-type { + type identityref { + base port-type; + } + description + "Port type: ethernet or serial or others."; + } + + typedef bandwidth { + type identityref { + base bandwidth; + } + description + "Bandwidth of the port."; + } + + typedef node-ref { + type instance-identifier; + description + "A reference to a node in topology"; + } + + typedef tp-ref { + type instance-identifier; + description + "A reference to a termination point in topology"; + } + + typedef link-ref { + type instance-identifier; + description + "A reference to a link in topology"; + } + + typedef underlay-network-type { + type identityref { + base fabric-type; + } + description + "The type of physical network that implements + this fabric. Examples are VLAN and TRILL."; + } + + typedef device-role { + type identityref { + base device-role; + } + description + "Role of the device node."; + } + + typedef fabric-port-role { + type identityref { + base fabric-port-role; + } + description + "Role of the port in a fabric."; + } + + typedef fabric-port-type { + type enumeration { + enum layer2interface { + description + "L2 interface"; + } + enum layer3interface { + description + "L3 interface"; + } + enum layer2Tunnel { + description + "L2 tunnel"; + } + enum layer3Tunnel { + description + "L3 tunnel"; + } + } + description + "Fabric port type"; + } + + 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."; + } + } +}