idnits 2.17.1 draft-ietf-i2rs-yang-dc-fabric-network-topology-12.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 254 has weird spacing: '...ice-ref fab...' == Line 257 has weird spacing: '...ink-ref fab...' -- The document date (November 21, 2018) is 1977 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'I-D.draft-ietf-nvo3-geneve' is defined on line 1079, but no explicit reference was found in the text ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) == Outdated reference: A later version (-16) exists of draft-ietf-nvo3-geneve-06 Summary: 1 error (**), 0 flaws (~~), 5 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 I2RS Working Group Y. Zhuang 3 Internet-Draft D. Shi 4 Intended status: Standards Track Huawei 5 Expires: May 25, 2019 R. Gu 6 China Mobile 7 H. Ananthakrishnan 8 Netflix 9 November 21, 2018 11 A YANG Data Model for Fabric Topology in Data Center Networks 12 draft-ietf-i2rs-yang-dc-fabric-network-topology-12 14 Abstract 16 This document defines a YANG data model for fabric topology in Data 17 Center Networks and it represents one possible view of the data 18 center fabric. This document focuses on the data model only and does 19 not endorse any kind of network design that could be based on the 20 abovementioned model. 22 Status of This Memo 24 This Internet-Draft is submitted in full conformance with the 25 provisions of BCP 78 and BCP 79. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at https://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on May 25, 2019. 39 Copyright Notice 41 Copyright (c) 2018 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents 46 (https://trustee.ietf.org/license-info) in effect on the date of 47 publication of this document. Please review these documents 48 carefully, as they describe your rights and restrictions with respect 49 to this document. Code Components extracted from this document must 50 include Simplified BSD License text as described in Section 4.e of 51 the Trust Legal Provisions and are provided without warranty as 52 described in the Simplified BSD License. 54 Table of Contents 56 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 57 2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3 58 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 59 3. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 4 60 3.1. Topology Model structure . . . . . . . . . . . . . . . . 4 61 3.2. Fabric Topology Model . . . . . . . . . . . . . . . . . . 4 62 3.2.1. Fabric Topology . . . . . . . . . . . . . . . . . . . 4 63 3.2.2. Fabric node extension . . . . . . . . . . . . . . . . 5 64 3.2.3. Fabric termination-point extension . . . . . . . . . 6 65 4. Fabric YANG Module . . . . . . . . . . . . . . . . . . . . . 7 66 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 67 6. Security Considerations . . . . . . . . . . . . . . . . . . . 21 68 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 69 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 70 8.1. Normative References . . . . . . . . . . . . . . . . . . 22 71 8.2. Informative References . . . . . . . . . . . . . . . . . 23 72 Appendix A. Non NMDA -state modules . . . . . . . . . . . . . . 24 73 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31 75 1. Introduction 77 A data center (DC) network can be composed of single or multiple 78 fabrics which are also known as PODs (Points Of Delivery). These 79 fabrics may be heterogeneous due to implementation of different 80 technologies when a DC network is upgraded or new techniques and 81 features are rolled out. For example, Fabric A may use VXLAN while 82 Fabric B may use VLAN within a DC network. Likewise, an existing 83 fabric may use VXLAN while a new fabric, for example a fabric 84 introduced for DC upgrade and expansion, may implement a technique 85 discussed in NVO3 WG, such as Geneve [I-D. draft-ietf-nvo3-geneve]. 86 The configuration and management of such DC networks with 87 heterogeneous fabrics could result in considerable complexity. 89 For a DC network, a fabric can be considered as an atomic structure 90 for management purposes. From this point of view, the management of 91 the DC network can be decomposed into a set of tasks to manage each 92 fabric separately, as well as the fabric interconnections. The 93 advantage of this method is to make the overall management tasks 94 flexible and easy to extend in the future. 96 As a basis for DC fabric management, this document defines a YANG 97 data model [RFC6020][RFC7950] for a possible view of the fabric-based 98 data center topology. To do so, it augments the generic network and 99 network topology data models defined in [RFC8345] with information 100 that is specific to data center fabric networks. 102 The model defines the generic configuration and operational state for 103 a fabric-based network topology, which can subsequently be extended 104 by vendors with vendor-specific information as needed. The model can 105 be used by a network controller to represent its view of the fabric 106 topology that it controls and expose this view to network 107 administrators or applications for DC network management. 109 Within the context of topology architecture defined in [RFC8345], 110 this model can also be treated as an application of the I2RS network 111 topology model [RFC8345] in the scenario of data center network 112 management. It can also act as a service topology when mapping 113 network elements at the fabric layer to elements of other topologies, 114 such as L3 topologies as defined in [RFC8346]. 116 By using the fabric topology model defined in this document, people 117 can treat a fabric as a holistic entity and focus on characteristics 118 of a fabric (such as encapsulation type, gateway type.) as well as 119 its connections to other fabrics while putting the underlay topology 120 aside. As such, clients can consume the topology information at the 121 fabric level with no need to be aware of the entire set of links and 122 nodes in the corresponding underlay networks. A fabric topology can 123 be configured by a network administrator using the controller by 124 adding physical devices and links into a fabric. Alternatively, 125 fabric topology can be learned from the underlay network 126 infrastructure. 128 2. Definitions and Acronyms 130 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 131 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 132 "OPTIONAL" in this document are to be interpreted as described in BCP 133 14 [RFC2119] [RFC8174] when, and only when, they appear in all 134 capitals, as shown here. 136 2.1. Terminology 138 POD: a module of network, compute, storage, and application 139 components that work together to deliver networking services. It 140 represents a repeatable design pattern. Its components maximize the 141 modularity, scalability, and manageability of data centers. 143 Fabric: composed of several PODs to form a data center network. 145 3. Model Overview 147 This section provides an overview of the data center fabric topology 148 model and its relationship with other topology models. 150 3.1. Topology Model structure 152 The relationship of the DC fabric topology model and other topology 153 models is shown in the following figure. 155 +------------------------+ 156 | network model | 157 +------------------------+ 158 | 159 | 160 +------------V-----------+ 161 | network topology model | 162 +------------------------+ 163 | 164 +-----------+-----+------+-------------+ 165 | | | | 166 +---V----+ +---V----+ +---V----+ +----V---+ 167 | L1 | | L2 | | L3 | | Fabric | 168 |topology| |topology| |topology| |topology| 169 | model | | model | | model | | model | 170 +--------+ +--------+ +--------+ +--------+ 171 Figure 1: The network data model structure 173 From the perspective of resource management and service provisioning 174 for a data center network, the fabric topology model augments the 175 basic network topology model with definitions and features specific 176 to a DC fabric, to provide common configuration and operations for 177 heterogeneous fabrics. 179 3.2. Fabric Topology Model 181 The fabric topology model module is designed to be generic and can be 182 applied to data center fabrics built with different technologies, 183 such as VLAN, VXLAN. The main purpose of this module is to configure 184 and manage fabrics and their connections. It provides a fabric-based 185 topology view for data center applications. 187 3.2.1. Fabric Topology 189 In the fabric topology module, a fabric is modeled as a node of a 190 network, as such the fabric-based data center network consists of a 191 set of fabric nodes and their connections. The following depicts a 192 snippet of the definitions to show the main structure of the model. 193 The notation syntax follows [RFC8340]. 195 module: ietf-dc-fabric-topology 196 augment /nw:networks/nw:network/nw:network-types: 197 +--rw fabric-network! 198 augment /nw:networks/nw:network/nw:node: 199 +--rw fabric-attributes 200 +--rw fabric-id? fabric-id 201 +--rw name? string 202 +--rw type? fabrictype:underlay-network-type 203 +--rw description? string 204 +--rw options 205 +--... 206 augment /nw:networks/nw:network/nw:node/nt:termination-point: 207 +--ro fport-attributes 208 +--ro name? string 209 +--ro role? fabric-port-role 210 +--ro type? fabric-port-type 212 The fabric topology module augments the generic ietf-network and 213 ietf-network-topology modules as follows: 215 o A new topology type "ietf-dc-fabric-topology" is defined and added 216 under the "network-types" container of the ietf-network module. 218 o Fabric is defined as a node under the network/node container. A 219 new container "fabric-attributes" is defined to carry attributes 220 for a fabric such as gateway mode, fabric types, involved device 221 nodes, and links. 223 o Termination points (in network topology module) are augmented with 224 fabric port attributes defined in a container. The "termination- 225 point" here is used to represent a fabric "port" that provides 226 connections to other nodes, such as an internal device, another 227 fabric externally, or end hosts. 229 Details of the fabric node and the fabric termination point extension 230 will be explained in the following sections. 232 3.2.2. Fabric node extension 234 As an atomic network (that is a set of nodes and links which composes 235 a POD and also supports a single overlay/underlay instance), a fabric 236 itself is composed of a set of network elements i.e. devices, and 237 related links. The configuration of a fabric is contained under the 238 "fabric-attributes" container depicted as follows. The notation 239 syntax follows [RFC8340]. 241 +--rw fabric-attributes 242 +--rw fabric-id? fabrictypes:fabric-id 243 +--rw name? string 244 +--rw type? fabrictype:underlay-network-type 245 +--rw vni-capacity 246 | +--rw min? int32 247 | +--rw max? int32 248 +--rw description? string 249 +--rw options 250 | +--rw gateway-mode? enumeration 251 | +--rw traffic-behavior? enumeration 252 | +--rw capability-supported* fabrictype:service-capabilities 253 +--rw device-nodes* [device-ref] 254 | +--rw device-ref fabrictype:node-ref 255 | +--rw role*? fabrictype:device-role 256 +--rw device-links* [link-ref] 257 | +--rw link-ref fabrictype:link-ref 258 +--rw device-ports* [port-ref] 259 +--rw port-ref fabrictype:tp-ref 260 +--rw port-type? fabrictypes:port-type 261 +--rw bandwidth? fabrictypes:bandwidth 263 In the module, additional data objects for fabric nodes are 264 introduced by augmenting the "node" list of the network module. New 265 objects include fabric name, type of the fabric, descriptions of the 266 fabric as well as a set of options defined in an "options" container. 267 The "options" container includes the gateway-mode type (centralized 268 or distributed) and traffic-behavior (whether an Access Control Lists 269 (ACLs) is needed for the traffic). Also, it includes a list of 270 device-nodes and related links as supporting-nodes to form a fabric 271 network. These device nodes and links are represented as leaf-refs 272 of existing nodes and links in the underlay topology. For the 273 device-node, the "role" object is defined to represent the role of a 274 device within the fabric, such as "SPINE" or "LEAF", which should 275 work together with the gateway-mode. 277 3.2.3. Fabric termination-point extension 279 Since a fabric can be considered as a node, "termination-points" can 280 represent fabric "ports" that connect to other fabrics, end hosts, as 281 well as devices inside the fabric. 283 As such, the set of "termination-points" of a fabric indicate all 284 connections of the fabric, including its internal connections, 285 interconnections with other fabrics, and connections to end hosts. 287 The structure of fabric ports is as follows. The notation syntax 288 follows [RFC8340]. 290 The structure of fabric ports is as follows: 292 augment /nw:networks/nw:network/nw:node/nt:termination-point: 293 +--ro fport-attributes 294 +--ro name? string 295 +--ro role? fabric-port-role 296 +--ro type? fabric-port-type 297 +--ro device-port? tp-ref 298 +--ro (tunnel-option)? 300 It augments the termination points (in network topology module) with 301 fabric port attributes defined in a container. 303 New nodes are defined for fabric ports including fabric name, role of 304 the port within the fabric (internal port, external port to outside 305 network, access port to end hosts), port type (L2 interface, L3 306 interface). By defining the device-port as a tp-ref, a fabric port 307 can be mapped to a device node in the underlay network. 309 Also, a new container for tunnel-options is introduced to present the 310 tunnel configuration on a port. 312 The termination point information is learned from the underlay 313 networks, not configured by the fabric topology layer. 315 4. Fabric YANG Module 317 This module imports typedefs from [RFC8345], and it references 318 [RFC7348] and [RFC8344]. 320 file "ietf-dc-fabric-types@2018-11-08.yang" 321 module ietf-dc-fabric-types { 323 yang-version 1.1; 324 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types"; 325 prefix fabrictypes; 327 import ietf-network { 328 prefix nw; 329 reference 330 "RFC 8345:A Data Model for Network Topologies"; 331 } 333 organization 334 "IETF I2RS (Interface to the Routing System) Working Group"; 336 contact 337 "WG Web: 338 WG List: 340 Editor: Yan Zhuang 341 343 Editor: Danian Shi 344 "; 346 description 347 "This module contains a collection of YANG definitions for 348 Fabric. 350 Copyright (c) 2018 IETF Trust and the persons identified as 351 authors of the code. All rights reserved. 353 Redistribution and use in source and binary forms, with or 354 without modification, is permitted pursuant to, and subject 355 to the license terms contained in, the Simplified BSD License 356 set forth in Section 4.c of the IETF Trust's Legal Provisions 357 Relating to IETF Documents 358 (https://trustee.ietf.org/license-info). 360 This version of this YANG module is part of 361 draft-ietf-i2rs-yang-dc-fabric-network-topology; 362 see the RFC itself for full legal notices. 364 NOTE TO RFC EDITOR: Please replace above reference to 365 draft-ietf-i2rs-yang-dc-fabric-network-topology-12 with RFC 366 number when published (i.e. RFC xxxx)."; 368 revision "2018-11-08"{ 369 description 370 "Initial revision. 371 NOTE TO RFC EDITOR: 372 Please replace the following reference to 373 draft-ietf-i2rs-yang-dc-fabric-network-topology-12 374 with RFC number when published (i.e. RFC xxxx)."; 375 reference 376 "draft-ietf-i2rs-yang-dc-fabric-network-topology-12"; 378 } 380 identity fabric-type { 381 description 382 "Base type for fabric networks"; 383 } 385 identity vxlan-fabric { 386 base fabric-type; 387 description 388 "VXLAN fabric"; 389 } 391 identity vlan-fabric { 392 base fabric-type; 393 description 394 "VLAN fabric"; 395 } 397 identity trill-fabric { 398 base fabric-type; 399 description "TRILL fabric"; 400 } 401 identity port-type { 402 description 403 "Base type for fabric port"; 404 } 405 identity eth { 406 base port-type; 407 description "Ethernet"; 408 } 409 identity serial { 410 base port-type; 411 description "Serial"; 412 } 414 identity bandwidth { 415 description "Base for bandwidth"; 416 } 417 identity bw-1M { 418 base bandwidth; 419 description "1M"; 420 } 421 identity bw-10M { 422 base bandwidth; 423 description "10Mbps"; 424 } 425 identity bw-100M { 426 base bandwidth; 427 description "100Mbps"; 428 } 429 identity bw-1G { 430 base bandwidth; 431 description "1Gbps"; 432 } 433 identity bw-10G { 434 base bandwidth; 435 description "10Gbps"; 436 } 437 identity bw-25G { 438 base bandwidth; 439 description "25Gbps"; 440 } 441 identity bw-40G { 442 base bandwidth; 443 description "40Gbps"; 444 } 445 identity bw-100G{ 446 base bandwidth; 447 description "100Gbps"; 448 } 449 identity bw-400G { 450 base bandwidth; 451 description "400Gbps"; 452 } 453 identity device-role { 454 description "Base for the device role in a fabric."; 455 } 456 identity spine { 457 base device-role; 458 description "This is a spine node in a fabric."; 459 } 460 identity leaf { 461 base device-role; 462 description "This is a leaf node in a fabric. "; 463 } 464 identity border { 465 base device-role; 466 description "This is a border node to connect to other 467 fabric/network."; 468 } 469 identity fabric-port-role { 470 description "Base for the port's role in a fabric."; 471 } 472 identity internal { 473 base fabric-port-role; 474 description "The port is used for devices to access each 475 other within a fabric."; 476 } 477 identity external { 478 base fabric-port-role; 479 description "The port is used for a fabric to connect to 480 outside network."; 481 } 482 identity access { 483 base fabric-port-role; 484 description "The port is used for an endpoint to connect 485 to a fabric."; 486 } 488 identity service-capability { 489 description "Base for the service of the fabric "; 490 } 491 identity ip-mapping { 492 base service-capability; 493 description "NAT."; 494 } 495 identity acl-redirect { 496 base service-capability; 497 description "ACL redirect, which can provide SFC function."; 498 } 499 identity dynamic-route-exchange { 500 base service-capability; 501 description "Dynamic route exchange."; 502 } 504 /* 505 * Typedefs 506 */ 507 typedef fabric-id { 508 type nw:node-id; 509 description 510 "An identifier for a fabric in a topology. 511 This identifier can be generated when composing a fabric. 512 The composition of a fabric can be achieved by defining a 513 RPC, which is left for vendor specific implementation 514 and not provided in this model."; 515 } 517 typedef service-capabilities { 518 type identityref { 519 base service-capability; 520 } 521 description 522 "Service capability of the fabric"; 523 } 525 typedef port-type { 526 type identityref { 527 base port-type; 528 } 529 description "Port type: ethernet or serial or others."; 530 } 531 typedef bandwidth { 532 type identityref { 533 base bandwidth; 534 } 535 description "Bandwidth of the port."; 536 } 537 typedef node-ref { 538 type instance-identifier; 539 description "A reference to a node in topology"; 540 } 542 typedef tp-ref { 543 type instance-identifier; 544 description "A reference to a termination point in topology"; 545 } 547 typedef link-ref { 548 type instance-identifier; 549 description "A reference to a link in topology"; 550 } 552 typedef underlay-network-type { 553 type identityref { 554 base fabric-type; 555 } 556 description "The type of physical network that implements 557 this fabric.Examples are VLAN, and TRILL."; 558 } 559 typedef device-role { 560 type identityref { 561 base device-role; 562 } 563 description "Role of the device node."; 564 } 565 typedef fabric-port-role { 566 type identityref { 567 base fabric-port-role; 568 } 569 description "Role of the port in a fabric."; 570 } 572 typedef fabric-port-type { 573 type enumeration { 574 enum layer2interface { 575 description "L2 interface"; 576 } 577 enum layer3interface { 578 description "L3 interface"; 579 } 580 enum layer2Tunnel { 581 description "L2 tunnel"; 582 } 583 enum layer3Tunnel { 584 description "L3 tunnel"; 585 } 586 } 587 description 588 "Fabric port type"; 589 } 591 grouping fabric-port { 592 description 593 "Attributes of a fabric port."; 594 leaf name { 595 type string; 596 description "Name of the port."; 597 } 598 leaf role { 599 type fabric-port-role; 600 description "Role of the port in a fabric."; 601 } 602 leaf type { 603 type fabric-port-type; 604 description "Type of the port"; 605 } 606 leaf device-port { 607 type tp-ref; 608 description "The device port it mapped to."; 609 } 610 choice tunnel-option { 611 description "Tunnel options to connect two fabrics. 612 It could be L2 Tunnel or L3 Tunnel."; 613 } 614 } 615 } 616 618 file "ietf-dc-fabric-topology@2018-11-08.yang" 619 module ietf-dc-fabric-topology { 621 yang-version 1.1; 622 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology"; 623 prefix fabric; 625 import ietf-network { 626 prefix nw; 628 reference 629 "RFC 8345:A Data Model for Network Topologies"; 630 } 632 import ietf-network-topology { 633 prefix nt; 635 reference 636 "RFC 8345:A Data Model for Network Topologies"; 637 } 639 import ietf-dc-fabric-types { 640 prefix fabrictypes; 642 reference 643 "draft-ietf-i2rs-yang-dc-fabric-network-topology-12 644 NOTE TO RFC EDITOR: 645 (1) Please replace above reference to 646 draft-ietf-i2rs-yang-dc-fabric-network-topology-12 647 with RFC number when publised (i.e. RFC xxxx). 648 (2) Please replace the data in the revision statement 649 with the data of publication when published."; 650 } 652 organization 653 "IETF I2RS (Interface to the Routing System) Working Group"; 655 contact 656 "WG Web: 657 WG List: 659 Editor: Yan Zhuang 660 662 Editor: Danian Shi 663 "; 665 description 666 "This module contains a collection of YANG definitions for 667 Fabric. 669 Copyright (c) 2018 IETF Trust and the persons identified as 670 authors of the code. All rights reserved. 672 Redistribution and use in source and binary forms, with or 673 without modification, is permitted pursuant to, and subject 674 to the license terms contained in, the Simplified BSD License 675 set forth in Section 4.c of the IETF Trust's Legal Provisions 676 Relating to IETF Documents 677 (https://trustee.ietf.org/license-info). 679 This version of this YANG module is part of 680 draft-ietf-i2rs-yang-dc-fabric-network-topology; 681 see the RFC itself for full legal notices. 683 NOTE TO RFC EDITOR: Please replace above reference to 684 draft-ietf-i2rs-yang-dc-fabric-network-topology-12 with RFC 685 number when published (i.e. RFC xxxx)."; 687 revision "2018-11-08"{ 688 description 689 "Initial revision. 690 NOTE TO RFC EDITOR: Please replace the following 691 reference to draft-ietf-i2rs-yang-dc-fabric-network 692 -topology-12 with RFC number when published 693 (i.e. RFC xxxx)."; 694 reference 695 "draft-ietf-i2rs-yang-dc-fabric-network-topology-12"; 696 } 698 //grouping statements 699 grouping fabric-network-type { 700 description "Identify the topology type to be fabric."; 701 container fabric-network { 702 presence "indicates fabric Network"; 703 description 704 "The presence of the container node indicates 705 fabric Topology"; 706 } 707 } 709 grouping fabric-options { 710 description "Options for a fabric"; 711 leaf gateway-mode { 712 type enumeration { 713 enum centralized { 714 description "The Fabric uses centralized 715 gateway, in which gateway is deployed on SPINE 716 node."; 717 } 718 enum distributed { 719 description "The Fabric uses distributed 720 gateway, in which gateway is deployed on LEAF 721 node."; 722 } 723 } 724 default "distributed"; 725 description "Gateway mode of the fabric"; 726 } 728 leaf traffic-behavior { 729 type enumeration { 730 enum normal { 731 description "Normal means no policy is needed 732 for all traffic"; 733 } 734 enum policy-driven { 735 description "Policy driven means policy is 736 needed for the traffic otherwise the traffic 737 will be discard."; 738 } 739 } 740 default "normal"; 741 description "Traffic behavior of the fabric"; 742 } 744 leaf-list capability-supported { 745 type fabrictypes:service-capabilities; 746 description 747 "It provides a list of supported services of the 748 fabric. The service-capabilities is defined as 749 identity-ref. Users can define more services 750 by defining new identities."; 751 } 752 } 754 grouping device-attributes { 755 description "device attributes"; 756 leaf device-ref { 757 type fabrictypes:node-ref; 758 description 759 "The device that the fabric includes which refers 760 to a node in another topology."; 761 } 762 leaf-list role { 763 type fabrictypes:device-role; 764 default fabrictypes:leaf; 765 description 766 "It is a list of device-role to represent the roles 767 that a device plays within a POD, such as SPINE, 768 LEAF, Border, or Border-Leaf. 769 The device-role is defined as identity-ref. If more 770 than 2 stage is used for a POD, users can 771 define new identities for the device-role."; 772 } 773 } 775 grouping link-attributes { 776 description "Link attributes"; 777 leaf link-ref { 778 type fabrictypes:link-ref; 779 description 780 "The link that the fabric includes which refers to 781 a link in another topology."; 782 } 783 } 785 grouping port-attributes { 786 description "Port attributes"; 787 leaf port-ref { 788 type fabrictypes:tp-ref; 789 description 790 "The port that the fabric includes which refers to 791 a termination-point in another topology."; 792 } 793 leaf port-type { 794 type fabrictypes:port-type; 795 description 796 "Port type is defined as identity-ref. If current 797 types includes ethernet or serial. If more types 798 are needed, developers can define new identities."; 799 } 800 leaf bandwidth { 801 type fabrictypes:bandwidth; 802 description 803 "Bandwidth of the port. It is defined as identity-ref. 804 If more speeds are introduced, developers can define 805 new identities for them. Current speeds include 1M, 10M, 806 100M, 1G, 10G, 25G, 40G, 100G and 400G."; 808 } 809 } 811 grouping fabric-attributes { 812 description "Attributes of a fabric"; 814 leaf fabric-id { 815 type fabrictypes:fabric-id; 816 description 817 "An identifier for a fabric in a topology. 818 This identifier can be generated when composing a fabric. 819 The composition of a fabric can be achieved by defining a 820 RPC, which is left for vendor specific implementation and 821 not provided in this model."; 822 } 824 leaf name { 825 type string; 826 description 827 "Name of the fabric"; 828 } 830 leaf type { 831 type fabrictypes:underlay-network-type; 832 description 833 "The type of physical network that implements this 834 fabric.Examples are VLAN, and TRILL."; 835 } 837 container vni-capacity { 838 description "The range of the VNI(VXLAN Network Identifier 839 defined in RFC 7348)s that the POD uses."; 841 leaf min { 842 type int32; 843 description 844 "The lower limit VNI."; 845 } 847 leaf max { 848 type int32; 849 description 850 "The upper limit VNI."; 851 } 852 } 854 leaf description { 855 type string; 856 description 857 "Description of the fabric"; 858 } 860 container options { 861 description "Options of the fabric"; 862 uses fabric-options; 863 } 865 list device-nodes { 866 key device-ref; 867 description "Device nodes that are included in a fabric."; 868 uses device-attributes; 869 } 871 list device-links { 872 key link-ref; 873 description "Links that are included within a fabric."; 874 uses link-attributes; 875 } 877 list device-ports { 878 key port-ref; 879 description "Ports that are included in the fabric."; 880 uses port-attributes; 881 } 883 } 885 // augment statements 887 augment "/nw:networks/nw:network/nw:network-types" { 888 description 889 "Introduce a new network type for Fabric-based topology"; 891 uses fabric-network-type; 892 } 894 augment "/nw:networks/nw:network/nw:node" { 895 when "/nw:networks/nw:network/nw:network-types/" 896 +"fabric:fabric-network"{ 897 description 898 "Augmentation parameters apply only for networks 899 with fabric topology"; 900 } 901 description "Augmentation for fabric nodes created by 902 fabric topology."; 903 container fabric-attributes { 904 description 905 "Attributes for a fabric network"; 907 uses fabric-attributes; 908 } 909 } 911 augment "/nw:networks/nw:network/nw:node/nt:termination-point" { 912 when "/nw:networks/nw:network/nw:network-types/" 913 +"fabric:fabric-network" { 914 description 915 "Augmentation parameters apply only for networks 916 with fabric topology"; 917 } 918 description "Augmentation for port on fabric."; 920 container fport-attributes { 921 config false; 922 description 923 "Attributes for fabric ports"; 924 uses fabrictypes:fabric-port; 925 } 926 } 927 } 928 930 5. IANA Considerations 932 This document registers the following namespace URIs in the "IETF XML 933 Registry" [RFC3688]: 935 URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types 937 Registrant Contact: The IESG. 939 XML: N/A; the requested URI is an XML namespace. 941 URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology 943 Registrant Contact: The IESG. 945 XML: N/A; the requested URI is an XML namespace. 947 URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state 949 Registrant Contact: The IESG. 951 XML: N/A; the requested URI is an XML namespace. 953 This document registers the following YANG modules in the "YANG 954 Module Names" registry [RFC6020]: 956 NOTE TO THE RFC EDITOR: In the list below, please replace references 957 to "draft-ietf-i2rs-yang-dc-fabric-network-topology-12 (RFC form)" 958 with RFC number when published (i.e. RFC xxxx). 960 Name: ietf-dc-fabric-types 962 Namespace: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types 964 Prefix: fabrictypes 966 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-12.txt 967 (RFC form) 969 Name: ietf-dc-fabric-topology 971 Namespace: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology 973 Prefix: fabric 975 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-12.txt 976 (RFC form) 978 Name: ietf-dc-fabric-topology-state 980 Namespace: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state 982 Prefix: sfabric 984 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-12.txt 985 (RFC form) 987 6. Security Considerations 989 The YANG module defined in this document is designed to be accessed 990 via network management protocols such as NETCONF [RFC6241] or 991 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 992 layer, and the mandatory-to-implement secure transport is Secure 993 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 994 mandatory-to-implement secure transport is TLS [RFC5246]. 996 The NETCONF access control model [RFC8341] provides the means to 997 restrict access for particular NETCONF or RESTCONF users to a 998 preconfigured subset of all available NETCONF or RESTCONF protocol 999 operations and content. The subtrees and data nodes and their 1000 sensitivity/vulnerability in the ietf-dc-fabric-topology module are 1001 as follows: 1003 fabric-attributes: A malicious client could attempt to sabotage the 1004 configuration of important fabric attributes, such as device-nodes or 1005 type. 1007 Some of the readable data nodes in this YANG module may be considered 1008 sensitive or vulnerable in some network environments. It is thus 1009 important to control read access (e.g., via get, get-config, or 1010 notification) to these data nodes. The subtrees and data nodes and 1011 their sensitivity/vulnerability in the ietf-dc-fabric-topology module 1012 are as follows: 1014 fport-attributes: A malicious client could attempt to read the 1015 connections of fabrics without permission, such as device-port, name. 1017 7. Acknowledgements 1019 We wish to acknowledge the helpful contributions, comments, and 1020 suggestions that were received from Alexander Clemm, Donald E. 1021 Eastlake, Xufeng Liu, Susan Hares, Wei Song, Luis M. Contreras and 1022 Benoit Claise. 1024 8. References 1026 8.1. Normative References 1028 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1029 Requirement Levels", BCP 14, RFC 2119, 1030 DOI 10.17487/RFC2119, March 1997, 1031 . 1033 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1034 DOI 10.17487/RFC3688, January 2004, 1035 . 1037 [RFC5246] Dierks, T. and E. Rescorla, "Transport Layer Security 1038 (TLS) Protocol Version 1.2", August 2008, 1039 . 1041 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1042 Network Configuration Protocol (NETCONF)", RFC 6020, 1043 October 2010. 1045 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 1046 Bierman, "Network Configuration Protocol (NETCONF)", June 1047 2011, . 1049 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1050 Shell (SSH)", June 2011, 1051 . 1053 [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", 1054 RFC 7950, DOI 10.17487/RFC7950, Auguest 2016. 1056 [RFC8040] Bierman, A., Bjorklund, B., and K. Watsen, "RESTCONF 1057 Protocol", Jan 2017, 1058 . 1060 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1061 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1062 May 2017, . 1064 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 1065 Protocol Access Control Model", March 2018, 1066 . 1068 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1069 and R. Wilton, "Network Management Datastore 1070 Architecture", RFC 8342, March 2018. 1072 [RFC8345] Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., 1073 and H. Ananthakrishnan, "A YANG Data Model for Network 1074 Topologies", RFC 8345, March 2018, 1075 . 1077 8.2. Informative References 1079 [I-D.draft-ietf-nvo3-geneve] 1080 Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic 1081 Network Virtualization Encapsulation", I-D draft-ietf- 1082 nvo3-geneve-06, March 2018. 1084 [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, 1085 L., Sridhar, T., Bursell, M., and C. Wright, "Virtual 1086 eXtensible Local Area Network (VXLAN): A Framework for 1087 Overlaying Virtualized Layer 2 Networks over Layer 3 1088 Networks", August 2014, 1089 . 1091 [RFC8340] Bjorklund, M. and L. Berger, "YANG Tree Diagrams", 1092 RFC 8340, March 2018, 1093 . 1095 [RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", 1096 RFC 8344, March 2018, 1097 . 1099 [RFC8346] Clemm, A., Medved, J., Tkacik, T., Liu, X., Bryskin, I., 1100 Guo, A., Ananthakrishnan, H., Bahadur, N., and V. Beeram, 1101 "A YANG Data Model for Layer 3 Topologies", RFC 8346, 1102 March 2018, . 1104 Appendix A. Non NMDA -state modules 1106 The YANG module ietf-dc-fabric-topology defined in this document 1107 augments two modules, ietf-network and ietf-network-topology, that 1108 are designed to be used in conjunction with implementations that 1109 support the Network Management Datastore Architecture (NMDA) defined 1110 in [RFC8342]. In order to allow implementations to use the model 1111 even in case when NMDA is not supported, a set of companion modules 1112 have been defined that represent a state model of networks and 1113 network topologies, ietf-network-state and ietf-network-topology- 1114 state, respectively. 1116 In order to be able to use the model for fabric topologies defined in 1117 this in this document in conjunction with non-NMDA compliant 1118 implementations, a corresponding companion module needs to be 1119 introduced as well. This companion module, ietf-dc-fabric-topology- 1120 state, mirrors ietf-dc-fabric-topology. However, the module augments 1121 ietf-network-state (instead of ietf-network and ietf-network- 1122 topology) and all of its data nodes are non-configurable. 1124 Like ietf-network-state and ietf-network-topology-state, ietf-dc- 1125 fabric-topology-state SHOULD NOT be supported by implementations that 1126 support NMDA. It is for this reason that the module is defined in 1127 the Appendix. 1129 The definition of the module follows below. As the structure of the 1130 module mirrors that of its underlying module, the YANG tree is not 1131 depicted separately. 1133 1134 file "ietf-dc-fabric-topology-state@2018-11-08.yang" 1135 module ietf-dc-fabric-topology-state { 1137 yang-version 1.1; 1138 namespace 1139 "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state"; 1140 prefix sfabric; 1142 import ietf-network-state { 1143 prefix nws; 1144 reference 1145 "RFC 8345:A Data Model for Network Topologies"; 1146 } 1147 import ietf-dc-fabric-types { 1148 prefix fabrictypes; 1150 reference 1151 "draft-ietf-i2rs-yang-dc-fabric-network-topology-12 1152 NOTE TO RFC EDITOR: 1153 (1) Please replace above reference to draft-ietf-i2rs-yang 1154 -dc-fabric-network-topology-09 with RFC number when 1155 published (i.e. RFC xxxx). 1156 (2) Please replace the data in the revision statement 1157 with the data of publication when published."; 1158 } 1160 organization 1161 "IETF I2RS (Interface to the Routing System) Working Group"; 1163 contact 1164 "WG Web: 1165 WG List: 1167 Editor: Yan Zhuang 1168 1170 Editor: Danian Shi 1171 "; 1173 description 1174 "This module contains a collection of YANG definitions for 1175 Fabric state, representing topology that is either learned, 1176 or topology that results from applying toplogy that has been 1177 configured per the ietf-dc-fabric-topology model, mirroring 1178 the corresponding data nodes in this model. 1180 This model mirrors the configuration tree of ietf-dc-fabric 1181 -topology, but contains only read-only state data. The model 1182 is not needed when the implementation infrastructure supports 1183 the Network Management Datastore Architecture(NMDA). 1185 Copyright (c) 2018 IETF Trust and the persons identified as 1186 authors of the code. All rights reserved. 1188 Redistribution and use in source and binary forms, with or 1189 without modification, is permitted pursuant to, and subject 1190 to the license terms contained in, the Simplified BSD 1191 License set forth in Section 4.c of the IETF Trust's Legal 1192 Provisions Relating to IETF Documents 1193 (http:s//trustee.ietf.org/license-info). 1195 This version of this YANG module is part of 1196 draft-ietf-i2rs-yang-dc-fabric-network-topology; 1197 see the RFC itself for full legal notices. 1199 NOTE TO RFC EDITOR: Please replace above reference to 1200 draft-ietf-i2rs-yang-dc-fabric-network-topology-12 with RFC 1201 number when published (i.e. RFC xxxx)."; 1203 revision "2018-11-08"{ 1204 description 1205 "Initial revision. 1206 NOTE TO RFC EDITOR: 1207 Please replace the following reference to 1208 draft-ietf-i2rs-yang-dc-fabric-network-topology-12 1209 with RFC number when published (i.e. RFC xxxx)."; 1210 reference 1211 "draft-ietf-i2rs-yang-dc-fabric-network-topology-12"; 1212 } 1214 //grouping statements 1215 grouping fabric-network-type { 1216 description "Identify the topology type to be fabric."; 1217 container fabric-network { 1218 presence "indicates fabric Network"; 1219 description 1220 "The presence of the container node indicates 1221 fabric topology"; 1222 } 1223 } 1225 grouping fabric-options { 1226 description "Options for a fabric"; 1228 leaf gateway-mode { 1229 type enumeration { 1230 enum centralized { 1231 description "The Fabric uses centralized 1232 gateway, in which gateway is deployed on SPINE 1233 node."; 1234 } 1235 enum distributed { 1236 description "The Fabric uses distributed 1237 gateway, in which gateway is deployed on LEAF 1238 node."; 1239 } 1240 } 1241 default "distributed"; 1242 description "Gateway mode of the fabric"; 1243 } 1245 leaf traffic-behavior { 1246 type enumeration { 1247 enum normal { 1248 description "Normal means no policy is needed 1249 for all traffic"; 1250 } 1251 enum policy-driven { 1252 description "Policy driven means policy is 1253 needed for the traffic otherwise the traffic 1254 will be discarded."; 1255 } 1256 } 1257 default "normal"; 1258 description "Traffic behavior of the fabric"; 1259 } 1261 leaf-list capability-supported { 1262 type fabrictypes:service-capabilities; 1263 description 1264 "It provides a list of supported services of the 1265 fabric. The service-capabilities is defined as 1266 identity-ref. Users can define more services 1267 by defining new identities."; 1268 } 1269 } 1271 grouping device-attributes { 1272 description "device attributes"; 1273 leaf device-ref { 1274 type fabrictypes:node-ref; 1275 description 1276 "The device that the fabric includes which refers 1277 to a node in another topology."; 1278 } 1279 leaf-list role { 1280 type fabrictypes:device-role; 1281 default fabrictypes:leaf; 1282 description 1283 "It is a list of devce-role to represent the roles 1284 that a device plays within a POD, such as SPINE, 1285 LEAF, Border, or Border-Leaf. 1286 The device-role is defined as identity-ref. If more 1287 than 2 stage is used for a POD, users can 1288 define new identities for the device-role."; 1289 } 1290 } 1292 grouping link-attributes { 1293 description "Link attributes"; 1294 leaf link-ref { 1295 type fabrictypes:link-ref; 1296 description 1297 "The link that the fabric includes which refers to 1298 a link in another topology."; 1299 } 1300 } 1302 grouping port-attributes { 1303 description "Port attributes"; 1304 leaf port-ref { 1305 type fabrictypes:tp-ref; 1306 description 1307 "The port that the fabric includes which refers to 1308 a termination-point in another topology."; 1309 } 1310 leaf port-type { 1311 type fabrictypes:port-type; 1312 description 1313 "Port type is defined as identity-ref. If current 1314 types includes ethernet or serial. If more types 1315 are needed, developers can define new identities."; 1316 } 1317 leaf bandwidth { 1318 type fabrictypes:bandwidth; 1319 description 1320 "Bandwidth of the port. It is defined as 1321 identity-ref. If more speeds are introduced, 1322 developers can define new identities for them. 1323 Current speeds include 1M, 10M, 100M, 1G, 10G, 1324 25G, 40G, 100G and 400G."; 1325 } 1326 } 1328 grouping fabric-attributes { 1329 description "Attributes of a fabric"; 1331 leaf fabric-id { 1332 type fabrictypes:fabric-id; 1333 description 1334 "Fabric id"; 1335 } 1337 leaf name { 1338 type string; 1339 description 1340 "Name of the fabric"; 1341 } 1343 leaf type { 1344 type fabrictypes:underlay-network-type; 1345 description 1346 "The type of physical network that implements this 1347 fabric. Examples are VLAN, and TRILL."; 1348 } 1350 container vni-capacity { 1351 description "The range of the VNI(VXLAN Network 1352 Identifier defined in RFC 7348)s that the POD uses."; 1354 leaf min { 1355 type int32; 1356 description 1357 "The lower limit VNI."; 1358 } 1360 leaf max { 1361 type int32; 1362 description 1363 "The upper limit VNI."; 1364 } 1365 } 1367 leaf description { 1368 type string; 1369 description 1370 "Description of the fabric"; 1371 } 1373 container options { 1374 description "Options of the fabric"; 1375 uses fabric-options; 1376 } 1377 list device-nodes { 1378 key device-ref; 1379 description "Device nodes that are included in a fabric."; 1380 uses device-attributes; 1381 } 1383 list device-links { 1384 key link-ref; 1385 description "Links that are included within a fabric."; 1386 uses link-attributes; 1387 } 1389 list device-ports { 1390 key port-ref; 1391 description "Ports that are included in the fabric."; 1392 uses port-attributes; 1393 } 1394 } 1396 // augment statements 1398 augment "/nws:networks/nws:network/nws:network-types" { 1399 description 1400 "Introduce a new network type for Fabric-based logical 1401 topology"; 1402 uses fabric-network-type; 1403 } 1405 augment "/nws:networks/nws:network/nws:node" { 1406 when "/nws:networks/nws:network/nws:network-types" 1407 +"/sfabric:fabric-network"{ 1408 description "Augmentation parameters apply only for 1409 networks with fabric topology."; 1410 } 1411 description "Augmentation for fabric nodes."; 1412 container fabric-attributes-state { 1413 description 1414 "Attributes for a fabric network"; 1415 uses fabric-attributes; 1416 } 1417 } 1418 } 1419 1421 Authors' Addresses 1423 Yan Zhuang 1424 Huawei 1425 101 Software Avenue, Yuhua District 1426 Nanjing, Jiangsu 210012 1427 China 1429 Email: zhuangyan.zhuang@huawei.com 1431 Danian Shi 1432 Huawei 1433 101 Software Avenue, Yuhua District 1434 Nanjing, Jiangsu 210012 1435 China 1437 Email: shidanian@huawei.com 1439 Rong Gu 1440 China Mobile 1441 32 Xuanwumen West Ave, Xicheng District 1442 Beijing, Beijing 100053 1443 China 1445 Email: gurong_cmcc@outlook.com 1447 Hariharan Ananthakrishnan 1448 Netflix 1450 Email: hari@netflix.com