X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=model%2Fietf%2Frfc8542-ietf-dc-fabric-types%2Fsrc%2Fmain%2Fyang%2Fietf-dc-fabric-types%402019-02-25.yang;fp=model%2Fietf%2Frfc8542-ietf-dc-fabric-types%2Fsrc%2Fmain%2Fyang%2Fietf-dc-fabric-types%402019-02-25.yang;h=58b7122a8438bf04fca241b5a52eb56164bd544e;hb=eaed99811d6086cd2e3f5c0748997ea47651fa9d;hp=0000000000000000000000000000000000000000;hpb=febb3c1b9263788ee80a739c1392502a6e1d7340;p=mdsal.git
diff --git a/model/ietf/rfc8542-ietf-dc-fabric-types/src/main/yang/ietf-dc-fabric-types@2019-02-25.yang b/model/ietf/rfc8542-ietf-dc-fabric-types/src/main/yang/ietf-dc-fabric-types@2019-02-25.yang
new file mode 100644
index 0000000000..58b7122a84
--- /dev/null
+++ b/model/ietf/rfc8542-ietf-dc-fabric-types/src/main/yang/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.";
+ }
+ }
+}