idnits 2.17.1 draft-ietf-i2rs-yang-dc-fabric-network-topology-09.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 252 has weird spacing: '...ice-ref fab...' == Line 255 has weird spacing: '...ink-ref fab...' -- The document date (April 18, 2018) is 2172 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 1075, 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: October 20, 2018 R. Gu 6 China Mobile 7 H. Ananthakrishnan 8 Packet Design 9 April 18, 2018 11 A YANG Data Model for Fabric Topology in Data Center Networks 12 draft-ietf-i2rs-yang-dc-fabric-network-topology-09 14 Abstract 16 This document defines a YANG data model for fabric topology in Data 17 Center Networks. 19 Status of This Memo 21 This Internet-Draft is submitted in full conformance with the 22 provisions of BCP 78 and BCP 79. 24 Internet-Drafts are working documents of the Internet Engineering 25 Task Force (IETF). Note that other groups may also distribute 26 working documents as Internet-Drafts. The list of current Internet- 27 Drafts is at https://datatracker.ietf.org/drafts/current/. 29 Internet-Drafts are draft documents valid for a maximum of six months 30 and may be updated, replaced, or obsoleted by other documents at any 31 time. It is inappropriate to use Internet-Drafts as reference 32 material or to cite them other than as "work in progress." 34 This Internet-Draft will expire on October 20, 2018. 36 Copyright Notice 38 Copyright (c) 2018 IETF Trust and the persons identified as the 39 document authors. All rights reserved. 41 This document is subject to BCP 78 and the IETF Trust's Legal 42 Provisions Relating to IETF Documents 43 (https://trustee.ietf.org/license-info) in effect on the date of 44 publication of this document. Please review these documents 45 carefully, as they describe your rights and restrictions with respect 46 to this document. Code Components extracted from this document must 47 include Simplified BSD License text as described in Section 4.e of 48 the Trust Legal Provisions and are provided without warranty as 49 described in the Simplified BSD License. 51 Table of Contents 53 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 54 2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3 55 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 56 3. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 4 57 3.1. Topology Model structure . . . . . . . . . . . . . . . . 4 58 3.2. Fabric Topology Model . . . . . . . . . . . . . . . . . . 4 59 3.2.1. Fabric Topology . . . . . . . . . . . . . . . . . . . 4 60 3.2.2. Fabric node extension . . . . . . . . . . . . . . . . 5 61 3.2.3. Fabric termination-point extension . . . . . . . . . 6 62 4. Fabric YANG Module . . . . . . . . . . . . . . . . . . . . . 7 63 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 64 6. Security Considerations . . . . . . . . . . . . . . . . . . . 21 65 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 66 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 67 8.1. Normative References . . . . . . . . . . . . . . . . . . 22 68 8.2. Informative References . . . . . . . . . . . . . . . . . 23 69 Appendix A. Non NMDA -state modules . . . . . . . . . . . . . . 24 70 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 72 1. Introduction 74 Normally, a data center (DC) network is composed of single or 75 multiple fabrics which are also known as PODs (Points Of Delivery). 76 These fabrics may be heterogeneous due to implementation of different 77 technologies when a DC network is upgraded or new techniques and 78 features are rolled out. For example, Fabric A may use VXLAN while 79 Fabric B may use VLAN within a DC network. Likewise, an existing 80 fabric may use VXLAN while a new fabric, for example a fabric 81 introduced for DC upgrade and expansion, may implement a technique 82 discussed in NVO3 WG, such as Geneve [I-D. draft-ietf-nvo3-geneve]. 83 The configuration and management of such DC networks with 84 heterogeneous fabrics will result in considerable complexity, 85 requiring a fair amount of sophistication. 87 Luckily, for a DC network, a fabric can be considered as an atomic 88 structure for management purposes. From this point of view, the 89 management of the DC network can be decomposed into a set of tasks to 90 manage each fabric separately, as well as the fabric 91 interconnections. This way, the overall management task becomes very 92 flexible and makes it easy to expand and adopt to DC networks that 93 evolve over time. 95 As a basis for DC fabric management, this document defines a YANG 96 data model [RFC6020][RFC7950] for fabric-based data center topology. 97 To do so, it augments the generic network and network topology data 98 models defined in [RFC8345] with information that is specific to Data 99 Center fabric networks. 101 The model defines the generic configuration and operational state for 102 a fabric-based network topology, which can subsequently be extended 103 by vendors with vendor-specific information as needed. The model can 104 be used by a network controller to represent its view of the fabric 105 topology that it controls and expose this view to network 106 administrators or applications for DC network management. 108 Within the context of topology architecture defined in [RFC8345], 109 this model can also be treated as an application of the I2RS network 110 topology model [RFC8345] in the scenario of Data center network 111 management. It can also act as a service topology when mapping 112 network elements at the fabric layer to elements of other topologies, 113 such as L3 topologies as defined in [RFC8346]. 115 By using the fabric topology model defined in this document, people 116 can treat a fabric as a holistic entity and focus on characteristics 117 of a fabric (such as encapsulation type, gateway type, etc.) as well 118 as its connections to other fabrics while putting the underlay 119 topology aside. As such, clients can consume the topology 120 information at the fabric level with no need to be aware of the 121 entire set of links and nodes in the corresponding underlay networks. 122 A fabric topology can be configured by a network administrator using 123 the controller by adding physical devices and links into a fabric. 124 Alternatively, fabric topology can be learned from the underlay 125 network infrastructure. 127 2. Definitions and Acronyms 129 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 130 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 131 "OPTIONAL" in this document are to be interpreted as described in BCP 132 14 [RFC2119] [RFC8174] when, and only when, they appear in all 133 capitals, as shown here. 135 2.1. Terminology 137 POD: a module of network, compute, storage, and application 138 components that work together to deliver networking services. It 139 represents a repeatable design pattern. Its components maximize the 140 modularity, scalability, and manageability of data centers. 142 Fabric: composed of several PODs to form a data center network. 144 3. Model Overview 146 This section provides an overview of the data center fabric topology 147 model and its relationship with other topology models. 149 3.1. Topology Model structure 151 The relationship of the DC fabric topology model and other topology 152 models is shown in the following figure. 154 +------------------------+ 155 | network model | 156 +------------------------+ 157 | 158 | 159 +------------V-----------+ 160 | network topology model | 161 +------------------------+ 162 | 163 +-----------+-----+------+-------------+ 164 | | | | 165 +---V----+ +---V----+ +---V----+ +----V---+ 166 | L1 | | L2 | | L3 | | Fabric | 167 |topology| |topology| |topology| |topology| 168 | model | | model | | model | | model | 169 +--------+ +--------+ +--------+ +--------+ 170 Figure 1: The network data model structure 172 From the perspective of resource management and service provisioning 173 for a data center network, the fabric topology model augments the 174 basic network topology model with definitions and features specific 175 to a DC fabric, to provide common configuration and operations for 176 heterogeneous fabrics. 178 3.2. Fabric Topology Model 180 The fabric topology model module is designed to be generic and can be 181 applied to data center fabrics built with different technologies, 182 such as VLAN, VXLAN etc. The main purpose of this module is to 183 configure and manage fabrics and their connections. It provides a 184 fabric-based topology view for data center applications. 186 3.2.1. Fabric Topology 188 In the fabric topology module, a fabric is modeled as a node of a 189 network, as such the fabric-based data center network consists of a 190 set of fabric nodes and their connections. The following depicts a 191 snippet of the definitions to show the main structure of the model. 192 The notation syntax follows [RFC8340]. 194 module: ietf-dc-fabric-topology 195 augment /nw:networks/nw:network/nw:network-types: 196 +--rw fabric-network! 197 augment /nw:networks/nw:network/nw:node: 198 +--rw fabric-attributes 199 +--rw fabric-id? fabric-id 200 +--rw name? string 201 +--rw type? fabrictype:underlay-network-type 202 +--rw description? string 203 +--rw options 204 +--... 205 augment /nw:networks/nw:network/nw:node/nt:termination-point: 206 +--ro fport-attributes 207 +--ro name? string 208 +--ro role? fabric-port-role 209 +--ro type? fabric-port-type 211 The fabric topology module augments the generic ietf-network and 212 ietf-network-topology modules as follows: 214 o A new topology type "ietf-dc-fabric-topology" is introduced and 215 added under the "network-types" container of the ietf-network 216 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, a fabric itself is composed of a set of network 235 elements i.e. devices, and related links. The configuration of a 236 fabric is contained under the "fabric-attributes" container depicted 237 as follows. The notation syntax follows [RFC8340]. 239 +--rw fabric-attributes 240 +--rw fabric-id? fabrictypes:fabric-id 241 +--rw name? string 242 +--rw type? fabrictype:underlay-network-type 243 +--rw vni-capacity 244 | +--rw min? int32 245 | +--rw max? int32 246 +--rw description? string 247 +--rw options 248 | +--rw gateway-mode? enumeration 249 | +--rw traffic-behavior? enumeration 250 | +--rw capability-supported* fabrictype:service-capabilities 251 +--rw device-nodes* [device-ref] 252 | +--rw device-ref fabrictype:node-ref 253 | +--rw role*? fabrictype:device-role 254 +--rw device-links* [link-ref] 255 | +--rw link-ref fabrictype:link-ref 256 +--rw device-ports* [port-ref] 257 +--rw port-ref fabrictype:tp-ref 258 +--rw port-type? fabrictypes:port-type 259 +--rw bandwidth? fabrictypes:bandwidth 261 In the module, additional data objects for fabric nodes are 262 introduced by augmenting the "node" list of the network module. New 263 objects include fabric name, type of the fabric, descriptions of the 264 fabric as well as a set of options defined in an "options" container. 265 The "options" container includes the gateway-mode type (centralized 266 or distributed) and traffic-behavior (whether an Access Control Lists 267 (ACLs) is needed for the traffic). Also, it includes a list of 268 device-nodes and related links as supporting-nodes to form a fabric 269 network. These device nodes and links are represented as leaf-refs 270 of existing nodes and links in the underlay topology. For the 271 device-node, the "role" object is defined to represent the role of a 272 device within the fabric, such as "SPINE" or "LEAF", which should 273 work together with the gateway-mode. 275 3.2.3. Fabric termination-point extension 277 Since a fabric can be considered as a node, "termination-points" can 278 represent fabric "ports" that connect to other fabrics, end hosts, as 279 well as devices inside the fabric. 281 As such, the set of "termination-points" of a fabric indicate all 282 connections of the fabric, including its internal connections, 283 interconnections with other fabrics, and connections to end hosts. 285 The structure of fabric ports is as follows. The notation syntax 286 follows [RFC8340]. 288 The structure of fabric ports is as follows: 290 augment /nw:networks/nw:network/nw:node/nt:termination-point: 291 +--ro fport-attributes 292 +--ro name? string 293 +--ro role? fabric-port-role 294 +--ro type? fabric-port-type 295 +--ro device-port? tp-ref 296 +--ro (tunnel-option)? 298 It augments the termination points (in network topology module) with 299 fabric port attributes defined in a container. 301 New nodes are defined for fabric ports including fabric name, role of 302 the port within the fabric (internal port, external port to outside 303 network, access port to end hosts), port type (l2 interface, l3 304 interface, etc). By defining the device-port as a tp-ref, a fabric 305 port can be mapped to a device node in the underlay network. 307 Also, a new container for tunnel-options is introduced to present the 308 tunnel configuration on a port. 310 The termination point information is learned from the underlay 311 networks, not configured by the fabric topology layer. 313 4. Fabric YANG Module 315 This module imports typedefs from [RFC8345], and it references 316 [RFC7348] and [RFC8344]. 318 file "ietf-dc-fabric-types@2018-04-16.yang" 319 module ietf-dc-fabric-types { 321 yang-version 1.1; 322 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types"; 323 prefix fabrictypes; 325 import ietf-network { 326 prefix nw; 328 reference 329 "RFC 8345:A Data Model for Network Topologies"; 330 } 331 organization 332 "IETF I2RS (Interface to the Routing System) Working Group"; 334 contact 335 "WG Web: 336 WG List: 338 Editor: Yan Zhuang 339 341 Editor: Danian Shi 342 "; 344 description 345 "This module contains a collection of YANG definitions for 346 Fabric. 348 Copyright (c) 2018 IETF Trust and the persons identified as 349 authors of the code. All rights reserved. 351 Redistribution and use in source and binary forms, with or 352 without modification, is permitted pursuant to, and subject 353 to the license terms contained in, the Simplified BSD License 354 set forth in Section 4.c of the IETF Trust's Legal Provisions 355 Relating to IETF Documents 356 (https://trustee.ietf.org/license-info). 358 This version of this YANG module is part of 359 draft-ietf-i2rs-yang-dc-fabric-network-topology; 360 see the RFC itself for full legal notices. 362 NOTE TO RFC EDITOR: Please replace above reference to 363 draft-ietf-i2rs-yang-dc-fabric-network-topology-09 with RFC 364 number when published (i.e. RFC xxxx)."; 366 revision "2018-04-16"{ 367 description 368 "Initial revision. 369 NOTE TO RFC EDITOR: 370 Please replace the following reference to 371 draft-ietf-i2rs-yang-dc-fabric-network-topology-09 372 with RFC number when published (i.e. RFC xxxx)."; 373 reference 374 "draft-ietf-i2rs-yang-dc-fabric-network-topology-09"; 375 } 377 identity fabric-type { 378 description 379 "Base type for fabric networks"; 380 } 382 identity vxlan-fabric { 383 base fabric-type; 384 description 385 "Vxlan fabric"; 386 } 388 identity vlan-fabric { 389 base fabric-type; 390 description 391 "Vlan fabric"; 392 } 394 identity trill-fabric { 395 base fabric-type; 396 description "Trill fabric"; 397 } 398 identity port-type { 399 description 400 "Base type for fabric port"; 401 } 402 identity eth { 403 base port-type; 404 description "ETH"; 405 } 406 identity serial { 407 base port-type; 408 description "Serial"; 409 } 411 identity bandwidth { 412 description "Base for bandwidth"; 413 } 414 identity bw-1M { 415 base bandwidth; 416 description "1M"; 417 } 418 identity bw-10M { 419 base bandwidth; 420 description "10M"; 421 } 422 identity bw-100M { 423 base bandwidth; 424 description "100M"; 425 } 426 identity bw-1G { 427 base bandwidth; 428 description "1G"; 429 } 430 identity bw-10G { 431 base bandwidth; 432 description "10G"; 433 } 434 identity bw-40G { 435 base bandwidth; 436 description "40G"; 437 } 438 identity bw-100G{ 439 base bandwidth; 440 description "100G"; 441 } 443 identity device-role { 444 description "Base for the device role in a fabric."; 445 } 446 identity spine { 447 base device-role; 448 description "This is a spine node in a fabric."; 449 } 450 identity leaf { 451 base device-role; 452 description "This is a leaf node in a fabric. "; 453 } 454 identity border { 455 base device-role; 456 description "This is a border node to connect to other 457 fabric/network."; 458 } 459 identity fabric-port-role { 460 description "Base for the port's role in a fabric."; 461 } 462 identity internal { 463 base fabric-port-role; 464 description "The port is used for devices to access each 465 other within a fabric."; 466 } 467 identity external { 468 base fabric-port-role; 469 description "The port is used for a fabric to connect to 470 outside network."; 471 } 472 identity access { 473 base fabric-port-role; 474 description "The port is used for an endpoint to connect 475 to a fabric."; 476 } 478 identity service-capability { 479 description "Base for the service of the fabric "; 480 } 481 identity ip-mapping { 482 base service-capability; 483 description "NAT."; 484 } 485 identity acl-redirect { 486 base service-capability; 487 description "Acl redirect, which can provide SFC function."; 488 } 489 identity dynamic-route-exchange { 490 base service-capability; 491 description "Dynamic route exchange."; 492 } 494 /* 495 * Typedefs 496 */ 497 typedef fabric-id { 498 type nw:node-id; 499 description 500 "An identifier for a fabric in a topology. 501 This identifier can be generated when composing a fabric. 502 The composition of a fabric can be achived by defining a 503 RPC, which is left for vendor specific implementation 504 and not provided in this model."; 505 } 507 typedef service-capabilities { 508 type identityref { 509 base service-capability; 510 } 511 description 512 "Service capability of the fabric"; 513 } 515 typedef port-type { 516 type identityref { 517 base port-type; 518 } 519 description "Port type: ethernet or serial or others."; 520 } 521 typedef bandwidth { 522 type identityref { 523 base bandwidth; 524 } 525 description "Bandwidth of the port."; 526 } 527 typedef node-ref { 528 type instance-identifier; 529 description "A reference to a node in topology"; 530 } 532 typedef tp-ref { 533 type instance-identifier; 534 description "A reference to a termination point in topology"; 535 } 537 typedef link-ref { 538 type instance-identifier; 539 description "A reference to a link in topology"; 540 } 542 typedef underlay-network-type { 543 type identityref { 544 base fabric-type; 545 } 546 description "The type of physical network that implements 547 this fabric.Examples are vlan, and trill."; 548 } 549 typedef device-role { 550 type identityref { 551 base device-role; 552 } 553 description "Role of the device node."; 554 } 555 typedef fabric-port-role { 556 type identityref { 557 base fabric-port-role; 558 } 559 description "Role of the port in a fabric."; 560 } 562 typedef fabric-port-type { 563 type enumeration { 564 enum layer2interface { 565 description "L2 interface"; 566 } 567 enum layer3interface { 568 description "L3 interface"; 569 } 570 enum layer2Tunnel { 571 description "L2 tunnel"; 572 } 573 enum layer3Tunnel { 574 description "L3 tunnel"; 575 } 576 } 577 description 578 "Fabric port type"; 579 } 581 grouping fabric-port { 582 description 583 "Attributes of a fabric port."; 584 leaf name { 585 type string; 586 description "Name of the port."; 587 } 588 leaf role { 589 type fabric-port-role; 590 description "Role of the port in a fabric."; 591 } 592 leaf type { 593 type fabric-port-type; 594 description "Type of the port"; 595 } 596 leaf device-port { 597 type tp-ref; 598 description "The device port it mapped to."; 599 } 600 choice tunnel-option { 601 description "Tunnel options to connect two fabrics. 602 It could be L2 Tunnel or L3 Tunnel."; 603 } 604 } 605 } 606 608 file "ietf-dc-fabric-topology@2018-04-16.yang" 609 module ietf-dc-fabric-topology { 611 yang-version 1.1; 612 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology"; 613 prefix fabric; 615 import ietf-network { 616 prefix nw; 617 reference 618 "RFC 8345:A Data Model for Network Topologies"; 619 } 621 import ietf-network-topology { 622 prefix nt; 624 reference 625 "RFC 8345:A Data Model for Network Topologies"; 626 } 628 import ietf-dc-fabric-types { 629 prefix fabrictypes; 631 reference 632 "draft-ietf-i2rs-yang-dc-fabric-network-topology-09 633 NOTE TO RFC EDITOR: 634 (1) Please replace above reference to 635 draft-ietf-i2rs-yang-dc-fabric-network-topology-09 636 with RFC number when publised (i.e. RFC xxxx). 637 (2) Please replace the data in the revision statement 638 with the data of publication when published."; 639 } 641 organization 642 "IETF I2RS (Interface to the Routing System) Working Group"; 644 contact 645 "WG Web: 646 WG List: 648 Editor: Yan Zhuang 649 651 Editor: Danian Shi 652 "; 654 description 655 "This module contains a collection of YANG definitions for 656 Fabric. 658 Copyright (c) 2018 IETF Trust and the persons identified as 659 authors of the code. All rights reserved. 661 Redistribution and use in source and binary forms, with or 662 without modification, is permitted pursuant to, and subject 663 to the license terms contained in, the Simplified BSD License 664 set forth in Section 4.c of the IETF Trust's Legal Provisions 665 Relating to IETF Documents 666 (https://trustee.ietf.org/license-info). 668 This version of this YANG module is part of 669 draft-ietf-i2rs-yang-dc-fabric-network-topology; 670 see the RFC itself for full legal notices. 672 NOTE TO RFC EDITOR: Please replace above reference to 673 draft-ietf-i2rs-yang-dc-fabric-network-topology-09 with RFC 674 number when published (i.e. RFC xxxx)."; 676 revision "2018-04-16"{ 677 description 678 "Initial revision. 679 NOTE TO RFC EDITOR: Please replace the following 680 reference to draft-ietf-i2rs-yang-dc-fabric-network 681 -topology-09 with RFC number when published 682 (i.e. RFC xxxx)."; 683 reference 684 "draft-ietf-i2rs-yang-dc-fabric-network-topology-09"; 685 } 687 /*identity fabric-context { 688 description 689 "Identity of fabric context"; 690 }*/ 692 //grouping statements 693 grouping fabric-network-type { 694 description "Identify the topology type to be fabric."; 695 container fabric-network { 696 presence "indicates fabric Network"; 697 description 698 "The presence of the container node indicates 699 fabric Topology"; 700 } 701 } 703 grouping fabric-options { 704 description "Options for a fabric"; 706 leaf gateway-mode { 707 type enumeration { 708 enum centralized { 709 description "The Fabric uses centerilized 710 gateway,in which gateway is deployed on SPINE 711 node."; 713 } 714 enum distributed { 715 description "The Fabric uses distributed 716 gateway, in which gateway is deployed on LEAF 717 node."; 718 } 719 } 720 default "distributed"; 721 description "Gateway mode of the fabric"; 722 } 724 leaf traffic-behavior { 725 type enumeration { 726 enum normal { 727 description "Normal means no policy is needed 728 for all traffic"; 729 } 730 enum policy-driven { 731 description "Policy driven means policy is 732 needed for the traffic otherwise the traffic 733 will be discard."; 734 } 735 } 736 default "normal"; 737 description "Traffic behavior of the fabric"; 738 } 740 leaf-list capability-supported { 741 type fabrictypes:service-capabilities; 742 description 743 "It provides a list of supported services of the 744 fabric. The service-capabilities is defined as 745 identity-ref. Developers can define more services 746 by defining new identies."; 747 } 748 } 750 grouping device-attributes { 751 description "device attributes"; 752 leaf device-ref { 753 type fabrictypes:node-ref; 754 description 755 "The device that the fabric includes which refers 756 to a node in another topolopogy."; 757 } 758 leaf-list role { 759 type fabrictypes:device-role; 760 default fabrictypes:leaf; 761 description 762 "It is a list of devce-role to represent the roles 763 that a device plays within a PoD, such as SPINE, 764 LEAF, Border, or Border-Leaf. 765 The device-role is defined as identity-ref. If more 766 than 2 stage is used for a PoD, developers can 767 define new identities for the device-role."; 768 } 769 } 771 grouping link-attributes { 772 description "Link attributes"; 773 leaf link-ref { 774 type fabrictypes:link-ref; 775 description 776 "The link that the fabric includes which refers to 777 a link in another topology."; 778 } 779 } 781 grouping port-attributes { 782 description "Port attributes"; 783 leaf port-ref { 784 type fabrictypes:tp-ref; 785 description 786 "The port that the fabric includes which refers to 787 a termination-point in another topology."; 788 } 789 leaf port-type { 790 type fabrictypes:port-type; 791 description 792 "Port type is defined as identiy-ref. If current 793 types includes ethernet or serial. If more types 794 are needed, developers can define new identities."; 795 } 796 leaf bandwidth { 797 type fabrictypes:bandwidth; 798 description 799 "Bandwidth of the port. It is defined as identity-ref. 800 If more speeds are introduced, developers can define 801 new identies for them. Current speeds include 1M, 10M, 802 100M, 1G, 10G, 40G and 100G."; 803 } 804 } 806 grouping fabric-attributes { 807 description "Attributes of a fabric"; 808 leaf fabric-id { 809 type fabrictypes:fabric-id; 810 description 811 "An identifier for a fabric in a topology. 812 This identifier can be generated when composing a fabric. 813 The composition of a fabric can be achived by defining a 814 RPC, which is left for vendor specific implementation and 815 not provided in this model."; 816 } 818 leaf name { 819 type string; 820 description 821 "Name of the fabric"; 822 } 824 leaf type { 825 type fabrictypes:underlay-network-type; 826 description 827 "The type of physical network that implements this 828 fabric.Examples are vlan, and trill."; 829 } 831 container vni-capacity { 832 description "The range of the VNI(VXLAN Network Identifier 833 defined in RFC 7348)s that the PoD uses."; 835 leaf min { 836 type int32; 837 description 838 "The lower limit Vni."; 839 } 841 leaf max { 842 type int32; 843 description 844 "The upper limite Vni."; 845 } 846 } 848 leaf description { 849 type string; 850 description 851 "Description of the fabric"; 852 } 854 container options { 855 description "Options of the fabric"; 856 uses fabric-options; 857 } 859 list device-nodes { 860 key device-ref; 861 description "Device nodes that include in a fabric."; 862 uses device-attributes; 863 } 865 list device-links { 866 key link-ref; 867 description "Links that include within a fabric."; 868 uses link-attributes; 869 } 871 list device-ports { 872 key port-ref; 873 description "Ports that include in the fabric."; 874 uses port-attributes; 875 } 877 } 879 // augment statements 881 augment "/nw:networks/nw:network/nw:network-types" { 882 description 883 "Introduce new network type for Fabric-based topology"; 885 uses fabric-network-type; 886 } 888 augment "/nw:networks/nw:network/nw:node" { 889 when "/nw:networks/nw:network/nw:network-types/" 890 +"fabric:fabric-network"{ 891 description 892 "Augmentation parameters apply only for networks 893 with fabric topology"; 894 } 895 description "Augmentation for fabric nodes created by 896 fabric topology."; 898 container fabric-attributes { 899 description 900 "Attributes for a fabric network"; 902 uses fabric-attributes; 903 } 905 } 907 augment "/nw:networks/nw:network/nw:node/nt:termination-point" { 908 when "/nw:networks/nw:network/nw:network-types/" 909 +"fabric:fabric-network" { 910 description 911 "Augmentation parameters apply only for networks 912 with fabric topology"; 913 } 914 description "Augmentation for port on fabric."; 916 container fport-attributes { 917 config false; 918 description 919 "Attributes for fabric ports"; 920 uses fabrictypes:fabric-port; 921 } 922 } 923 } 924 926 5. IANA Considerations 928 This document registers the following namespace URIs in the "IETF XML 929 Registry" [RFC3688]: 931 URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types 933 Registrant Contact: The IESG. 935 XML: N/A; the requested URI is an XML namespace. 937 URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology 939 Registrant Contact: The IESG. 941 XML: N/A; the requested URI is an XML namespace. 943 URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state 945 Registrant Contact: The IESG. 947 XML: N/A; the requested URI is an XML namespace. 949 This document registers the following YANG modules in the "YANG 950 Module Names" registry [RFC6020]: 952 NOTE TO THE RFC EDITOR: In the list below, please replace references 953 to "draft-ietf-i2rs-yang-dc-fabric-network-topology-09 (RFC form)" 954 with RFC number when published (i.e. RFC xxxx). 956 Name: ietf-dc-fabric-types 958 Namespace: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types 960 Prefix: fabrictypes 962 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-09.txt 963 (RFC form) 965 Name: ietf-dc-fabric-topology 967 Namespace: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology 969 Prefix: fabric 971 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-09.txt 972 (RFC form) 974 Name: ietf-dc-fabric-topology-state 976 Namespace: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state 978 Prefix: sfabric 980 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-09.txt 981 (RFC form) 983 6. Security Considerations 985 The YANG module defined in this document is designed to be accessed 986 via network management protocols such as NETCONF [RFC6241] or 987 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 988 layer, and the mandatory-to-implement secure transport is Secure 989 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 990 mandatory-to-implement secure transport is TLS [RFC5246]. 992 The NETCONF access control model [RFC8341] provides the means to 993 restrict access for particular NETCONF or RESTCONF users to a 994 preconfigured subset of all available NETCONF or RESTCONF protocol 995 operations and content. The subtrees and data nodes and their 996 sensitivity/vulnerability in the ietf-dc-fabric-topology module are 997 as follows: 999 fabric-attributes: A malicious client could attempt to sabotage the 1000 configuration of important fabric attributes, such as device-nodes or 1001 type. 1003 Some of the readable data nodes in this YANG module may be considered 1004 sensitive or vulnerable in some network environments. It is thus 1005 important to control read access (e.g., via get, get-config, or 1006 notification) to these data nodes. The subtrees and data nodes and 1007 their sensitivity/vulnerability in the ietf-dc-fabric-topology module 1008 are as follows: 1010 fport-attributes: A malicious client could attempt to read the 1011 connections of fabrics without permission, such as device-port, name. 1013 7. Acknowledgements 1015 We wish to acknowledge the helpful contributions, comments, and 1016 suggestions that were received from Alexander Clemm, Donald E. 1017 Eastlake, Xufeng Liu, Susan Hares, Wei Song, Luis M. Contreras and 1018 Benoit Claise. 1020 8. References 1022 8.1. Normative References 1024 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1025 Requirement Levels", BCP 14, RFC 2119, 1026 DOI 10.17487/RFC2119, March 1997, 1027 . 1029 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1030 DOI 10.17487/RFC3688, January 2004, 1031 . 1033 [RFC5246] Dierks, T. and E. Rescorla, "Transport Layer Security 1034 (TLS) Protocol Version 1.2", August 2008, 1035 . 1037 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1038 Network Configuration Protocol (NETCONF)", RFC 6020, 1039 October 2010. 1041 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 1042 Bierman, "Network Configuration Protocol (NETCONF)", June 1043 2011, . 1045 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1046 Shell (SSH)", June 2011, 1047 . 1049 [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", 1050 RFC 7950, DOI 10.17487/RFC7950, Auguest 2016. 1052 [RFC8040] Bierman, A., Bjorklund, B., and K. Watsen, "RESTCONF 1053 Protocol", Jan 2017, 1054 . 1056 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1057 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1058 May 2017, . 1060 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 1061 Protocol Access Control Model", March 2018, 1062 . 1064 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1065 and R. Wilton, "Network Management Datastore 1066 Architecture", RFC 8342, March 2018. 1068 [RFC8345] Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., 1069 and H. Ananthakrishnan, "A YANG Data Model for Network 1070 Topologies", RFC 8345, March 2018, 1071 . 1073 8.2. Informative References 1075 [I-D.draft-ietf-nvo3-geneve] 1076 Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic 1077 Network Virtualization Encapsulation", I-D draft-ietf- 1078 nvo3-geneve-06, March 2018. 1080 [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, 1081 L., Sridhar, T., Bursell, M., and C. Wright, "Virtual 1082 eXtensible Local Area Network (VXLAN): A Framework for 1083 Overlaying Virtualized Layer 2 Networks over Layer 3 1084 Networks", August 2014, 1085 . 1087 [RFC8340] Bjorklund, M. and L. Berger, "YANG Tree Diagrams", 1088 RFC 8340, March 2018, 1089 . 1091 [RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", 1092 RFC 8344, March 2018, 1093 . 1095 [RFC8346] Clemm, A., Medved, J., Tkacik, T., Liu, X., Bryskin, I., 1096 Guo, A., Ananthakrishnan, H., Bahadur, N., and V. Beeram, 1097 "A YANG Data Model for Layer 3 Topologies", RFC 8346, 1098 March 2018, . 1100 Appendix A. Non NMDA -state modules 1102 The YANG module ietf-dc-fabric-toplogy defined in this document 1103 augments two modules, ietf-network and ietf-network-topology, that 1104 are designed to be used in conjunction with implementations that 1105 support the Network Management Datastore Architecture (NMDA) defined 1106 in [RFC8342]. In order to allow implementations to use the model 1107 even in case when NMDA is not supported, a set of companion modules 1108 have been defined that represent a state model of networks and 1109 network topologies, ietf-network-state and ietf-network-topology- 1110 state, respectively. 1112 In order to be able to use the model for fabric topologies defined in 1113 this in this document in conjunction with non-NMDA compliant 1114 implementations, a corresponding companion module needs to be 1115 introduced as well. This companion module, ietf-dc-fabric-topology- 1116 state, mirrors ietf-dc-fabric-topology. However, the module augments 1117 ietf-network-state (instead of ietf-network and ietf-network- 1118 topology) and all of its data nodes are non-configurable. 1120 Like ietf-network-state and ietf-network-topology-state, ietf-dc- 1121 fabric-topology-state SHOULD NOT be supported by implementations that 1122 support NMDA. It is for this reason that the module is defined in 1123 the Appendix. 1125 The definition of the module follows below. As the structure of the 1126 module mirrors that of its underlying module, the YANG tree is not 1127 depicted separately. 1129 1130 file "ietf-dc-fabric-topology-state@2018-04-16.yang" 1131 module ietf-dc-fabric-topology-state { 1133 yang-version 1.1; 1134 namespace 1135 "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state"; 1136 prefix sfabric; 1138 import ietf-network-state { 1139 prefix nws; 1140 reference 1141 "RFC 8345:A Data Model for Network Topologies"; 1142 } 1143 import ietf-dc-fabric-types { 1144 prefix fabrictypes; 1146 reference 1147 "draft-ietf-i2rs-yang-dc-fabric-network-topology-09 1148 NOTE TO RFC EDITOR: 1149 (1) Please replace above reference to draft-ietf-i2rs-yang 1150 -dc-fabric-network-topology-09 with RFC number when 1151 published (i.e. RFC xxxx). 1152 (2) Please replace the data in the revision statement 1153 with the data of publication when published."; 1154 } 1156 organization 1157 "IETF I2RS (Interface to the Routing System) Working Group"; 1159 contact 1160 "WG Web: 1161 WG List: 1163 Editor: Yan Zhuang 1164 1166 Editor: Danian Shi 1167 "; 1169 description 1170 "This module contains a collection of YANG definitions for 1171 Fabric state, representing topology that is either learned, 1172 or topology that results from applying toplogy that has been 1173 configured per the ietf-dc-fabric-topology model, mirroring 1174 the corresponding data nodes in this model. 1176 This model mirrors the configuration tree of ietf-dc-fabric 1177 -topology, but contains only read-only state data. The model 1178 is not needed when the implemtation infrastructure supports 1179 the Network Management Datastore Architecture(NMDA). 1181 Copyright (c) 2018 IETF Trust and the persons identified as 1182 authors of the code. All rights reserved. 1184 Redistribution and use in source and binary forms, with or 1185 without modification, is permitted pursuant to, and subject 1186 to the license terms contained in, the Simplified BSD 1187 License set forth in Section 4.c of the IETF Trust's Legal 1188 Provisions Relating to IETF Documents 1189 (http:s//trustee.ietf.org/license-info). 1191 This version of this YANG module is part of 1192 draft-ietf-i2rs-yang-dc-fabric-network-topology; 1193 see the RFC itself for full legal notices. 1195 NOTE TO RFC EDITOR: Please replace above reference to 1196 draft-ietf-i2rs-yang-dc-fabric-network-topology-09 with RFC 1197 number when published (i.e. RFC xxxx)."; 1199 revision "2018-04-16"{ 1200 description 1201 "Initial revision. 1202 NOTE TO RFC EDITOR: 1203 Please replace the following reference to 1204 draft-ietf-i2rs-yang-dc-fabric-network-topology-09 1205 with RFC number when published (i.e. RFC xxxx)."; 1206 reference 1207 "draft-ietf-i2rs-yang-dc-fabric-network-topology-09"; 1208 } 1210 //grouping statements 1211 grouping fabric-network-type { 1212 description "Identify the topology type to be fabric."; 1213 container fabric-network { 1214 presence "indicates fabric Network"; 1215 description 1216 "The presence of the container node indicates 1217 fabric Topology"; 1218 } 1219 } 1221 grouping fabric-options { 1222 description "Options for a fabric"; 1224 leaf gateway-mode { 1225 type enumeration { 1226 enum centralized { 1227 description "The Fabric uses centerilized 1228 gateway, in which gateway is deployed on SPINE 1229 node."; 1230 } 1231 enum distributed { 1232 description "The Fabric uses distributed 1233 gateway, in which gateway is deployed on LEAF 1234 node."; 1235 } 1236 } 1237 default "distributed"; 1238 description "Gateway mode of the fabric"; 1239 } 1241 leaf traffic-behavior { 1242 type enumeration { 1243 enum normal { 1244 description "Normal means no policy is needed 1245 for all traffic"; 1246 } 1247 enum policy-driven { 1248 description "Policy driven means policy is 1249 needed for the traffic otherwise the traffic 1250 will be discard."; 1251 } 1252 } 1253 default "normal"; 1254 description "Traffic behavior of the fabric"; 1255 } 1257 leaf-list capability-supported { 1258 type fabrictypes:service-capabilities; 1259 description 1260 "It provides a list of supported services of the 1261 fabric. The service-capabilities is defined as 1262 identity-ref. Developers can define more services 1263 by defining new identies."; 1264 } 1265 } 1267 grouping device-attributes { 1268 description "device attributes"; 1269 leaf device-ref { 1270 type fabrictypes:node-ref; 1271 description 1272 "The device that the fabric includes which refers 1273 to a node in another topolopogy."; 1274 } 1275 leaf-list role { 1276 type fabrictypes:device-role; 1277 default fabrictypes:leaf; 1278 description 1279 "It is a list of devce-role to represent the roles 1280 that a device plays within a PoD, such as SPINE, 1281 LEAF, Border, or Border-Leaf. 1282 The device-role is defined as identity-ref. If more 1283 than 2 stage is used for a PoD, developers can 1284 define new identities for the device-role."; 1285 } 1286 } 1288 grouping link-attributes { 1289 description "Link attributes"; 1290 leaf link-ref { 1291 type fabrictypes:link-ref; 1292 description 1293 "The link that the fabric includes which refers to 1294 a link in another topology."; 1295 } 1296 } 1298 grouping port-attributes { 1299 description "Port attributes"; 1300 leaf port-ref { 1301 type fabrictypes:tp-ref; 1302 description 1303 "The port that the fabric includes which refers to 1304 a termination-point in another topology."; 1305 } 1306 leaf port-type { 1307 type fabrictypes:port-type; 1308 description 1309 "Port type is defined as identiy-ref. If current 1310 types includes ethernet or serial. If more types 1311 are needed, developers can define new identities."; 1312 } 1313 leaf bandwidth { 1314 type fabrictypes:bandwidth; 1315 description 1316 "Bandwidth of the port. It is defined as 1317 identity-ref. If more speeds are introduced, 1318 developers can define new identies for them. 1319 Current speeds include 1M, 10M, 100M, 1G, 10G, 1320 40G and 100G."; 1321 } 1322 } 1324 grouping fabric-attributes { 1325 description "Attributes of a fabric"; 1327 leaf fabric-id { 1328 type fabrictypes:fabric-id; 1329 description 1330 "Fabric id"; 1331 } 1333 leaf name { 1334 type string; 1335 description 1336 "Name of the fabric"; 1337 } 1339 leaf type { 1340 type fabrictypes:underlay-network-type; 1341 description 1342 "The type of physical network that implements this 1343 fabric.Examples are vlan, and trill."; 1344 } 1346 container vni-capacity { 1347 description "The range of the VNI(VXLAN Network 1348 Identifier defined in RFC 7348)s that the PoD uses."; 1350 leaf min { 1351 type int32; 1352 description 1353 "The lower limit Vni."; 1354 } 1356 leaf max { 1357 type int32; 1358 description 1359 "The upper limite Vni."; 1360 } 1361 } 1363 leaf description { 1364 type string; 1365 description 1366 "Description of the fabric"; 1367 } 1369 container options { 1370 description "Options of the fabric"; 1371 uses fabric-options; 1372 } 1374 list device-nodes { 1375 key device-ref; 1376 description "Device nodes that include in a fabric."; 1377 uses device-attributes; 1378 } 1380 list device-links { 1381 key link-ref; 1382 description "Links that include within a fabric."; 1383 uses link-attributes; 1384 } 1386 list device-ports { 1387 key port-ref; 1388 description "Ports that include in the fabric."; 1389 uses port-attributes; 1390 } 1391 } 1393 // augment statements 1395 augment "/nws:networks/nws:network/nws:network-types" { 1396 description 1397 "Introduce new network type for Fabric-based logical 1398 topology"; 1399 uses fabric-network-type; 1400 } 1402 augment "/nws:networks/nws:network/nws:node" { 1403 when "/nws:networks/nws:network/nws:network-types" 1404 +"/sfabric:fabric-network"{ 1405 description "Augmentation parameters apply only for 1406 networks with fabric topology."; 1407 } 1408 description "Augmentation for fabric nodes."; 1409 container fabric-attributes-state { 1410 description 1411 "Attributes for a fabric network"; 1412 uses fabric-attributes; 1413 } 1414 } 1415 } 1416 1418 Authors' Addresses 1419 Yan Zhuang 1420 Huawei 1421 101 Software Avenue, Yuhua District 1422 Nanjing, Jiangsu 210012 1423 China 1425 Email: zhuangyan.zhuang@huawei.com 1427 Danian Shi 1428 Huawei 1429 101 Software Avenue, Yuhua District 1430 Nanjing, Jiangsu 210012 1431 China 1433 Email: shidanian@huawei.com 1435 Rong Gu 1436 China Mobile 1437 32 Xuanwumen West Ave, Xicheng District 1438 Beijing, Beijing 100053 1439 China 1441 Email: gurong_cmcc@outlook.com 1443 Hariharan Ananthakrishnan 1444 Packet Design 1446 Email: hari@packetdesign.com