idnits 2.17.1 draft-ietf-i2rs-yang-dc-fabric-network-topology-11.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 253 has weird spacing: '...ice-ref fab...' == Line 256 has weird spacing: '...ink-ref fab...' -- The document date (August 1, 2018) is 2094 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 1076, 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: February 2, 2019 R. Gu 6 China Mobile 7 H. Ananthakrishnan 8 Netflix 9 August 1, 2018 11 A YANG Data Model for Fabric Topology in Data Center Networks 12 draft-ietf-i2rs-yang-dc-fabric-network-topology-11 14 Abstract 16 This document defines a YANG data model for fabric topology in Data 17 Center Networks and it represents only one possible view of the dc 18 fabric. 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at https://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on February 2, 2019. 37 Copyright Notice 39 Copyright (c) 2018 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (https://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 55 2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3 56 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 57 3. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 4 58 3.1. Topology Model structure . . . . . . . . . . . . . . . . 4 59 3.2. Fabric Topology Model . . . . . . . . . . . . . . . . . . 4 60 3.2.1. Fabric Topology . . . . . . . . . . . . . . . . . . . 4 61 3.2.2. Fabric node extension . . . . . . . . . . . . . . . . 5 62 3.2.3. Fabric termination-point extension . . . . . . . . . 6 63 4. Fabric YANG Module . . . . . . . . . . . . . . . . . . . . . 7 64 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 65 6. Security Considerations . . . . . . . . . . . . . . . . . . . 21 66 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 67 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 68 8.1. Normative References . . . . . . . . . . . . . . . . . . 22 69 8.2. Informative References . . . . . . . . . . . . . . . . . 23 70 Appendix A. Non NMDA -state modules . . . . . . . . . . . . . . 24 71 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 73 1. Introduction 75 Normally, a data center (DC) network is composed of single or 76 multiple fabrics which are also known as PODs (Points Of Delivery). 77 These fabrics may be heterogeneous due to implementation of different 78 technologies when a DC network is upgraded or new techniques and 79 features are rolled out. For example, Fabric A may use VXLAN while 80 Fabric B may use VLAN within a DC network. Likewise, an existing 81 fabric may use VXLAN while a new fabric, for example a fabric 82 introduced for DC upgrade and expansion, may implement a technique 83 discussed in NVO3 WG, such as Geneve [I-D. draft-ietf-nvo3-geneve]. 84 The configuration and management of such DC networks with 85 heterogeneous fabrics will result in considerable complexity, 86 requiring a fair amount of sophistication. 88 Luckily, for a DC network, a fabric can be considered as an atomic 89 structure for management purposes. From this point of view, the 90 management of the DC network can be decomposed into a set of tasks to 91 manage each fabric separately, as well as the fabric 92 interconnections. This way, the overall management task becomes very 93 flexible and makes it easy to expand and adopt to DC networks that 94 evolve over time. 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, etc.) as well 119 as its connections to other fabrics while putting the underlay 120 topology aside. As such, clients can consume the topology 121 information at the fabric level with no need to be aware of the 122 entire set of links and nodes in the corresponding underlay networks. 123 A fabric topology can be configured by a network administrator using 124 the controller by adding physical devices and links into a fabric. 125 Alternatively, fabric topology can be learned from the underlay 126 network 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 etc. The main purpose of this module is to 184 configure and manage fabrics and their connections. It provides a 185 fabric-based 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 introduced and 216 added under the "network-types" container of the ietf-network 217 module. 219 o Fabric is defined as a node under the network/node container. A 220 new container "fabric-attributes" is defined to carry attributes 221 for a fabric such as gateway mode, fabric types, involved device 222 nodes, and links. 224 o Termination points (in network topology module) are augmented with 225 fabric port attributes defined in a container. The "termination- 226 point" here is used to represent a fabric "port" that provides 227 connections to other nodes, such as an internal device, another 228 fabric externally, or end hosts. 230 Details of the fabric node and the fabric termination point extension 231 will be explained in the following sections. 233 3.2.2. Fabric node extension 235 As an atomic network, a fabric itself is composed of a set of network 236 elements i.e. devices, and related links. The configuration of a 237 fabric is contained under the "fabric-attributes" container depicted 238 as follows. The notation syntax follows [RFC8340]. 240 +--rw fabric-attributes 241 +--rw fabric-id? fabrictypes:fabric-id 242 +--rw name? string 243 +--rw type? fabrictype:underlay-network-type 244 +--rw vni-capacity 245 | +--rw min? int32 246 | +--rw max? int32 247 +--rw description? string 248 +--rw options 249 | +--rw gateway-mode? enumeration 250 | +--rw traffic-behavior? enumeration 251 | +--rw capability-supported* fabrictype:service-capabilities 252 +--rw device-nodes* [device-ref] 253 | +--rw device-ref fabrictype:node-ref 254 | +--rw role*? fabrictype:device-role 255 +--rw device-links* [link-ref] 256 | +--rw link-ref fabrictype:link-ref 257 +--rw device-ports* [port-ref] 258 +--rw port-ref fabrictype:tp-ref 259 +--rw port-type? fabrictypes:port-type 260 +--rw bandwidth? fabrictypes:bandwidth 262 In the module, additional data objects for fabric nodes are 263 introduced by augmenting the "node" list of the network module. New 264 objects include fabric name, type of the fabric, descriptions of the 265 fabric as well as a set of options defined in an "options" container. 266 The "options" container includes the gateway-mode type (centralized 267 or distributed) and traffic-behavior (whether an Access Control Lists 268 (ACLs) is needed for the traffic). Also, it includes a list of 269 device-nodes and related links as supporting-nodes to form a fabric 270 network. These device nodes and links are represented as leaf-refs 271 of existing nodes and links in the underlay topology. For the 272 device-node, the "role" object is defined to represent the role of a 273 device within the fabric, such as "SPINE" or "LEAF", which should 274 work together with the gateway-mode. 276 3.2.3. Fabric termination-point extension 278 Since a fabric can be considered as a node, "termination-points" can 279 represent fabric "ports" that connect to other fabrics, end hosts, as 280 well as devices inside the fabric. 282 As such, the set of "termination-points" of a fabric indicate all 283 connections of the fabric, including its internal connections, 284 interconnections with other fabrics, and connections to end hosts. 286 The structure of fabric ports is as follows. The notation syntax 287 follows [RFC8340]. 289 The structure of fabric ports is as follows: 291 augment /nw:networks/nw:network/nw:node/nt:termination-point: 292 +--ro fport-attributes 293 +--ro name? string 294 +--ro role? fabric-port-role 295 +--ro type? fabric-port-type 296 +--ro device-port? tp-ref 297 +--ro (tunnel-option)? 299 It augments the termination points (in network topology module) with 300 fabric port attributes defined in a container. 302 New nodes are defined for fabric ports including fabric name, role of 303 the port within the fabric (internal port, external port to outside 304 network, access port to end hosts), port type (l2 interface, l3 305 interface, etc). By defining the device-port as a tp-ref, a fabric 306 port can be mapped to a device node in the underlay network. 308 Also, a new container for tunnel-options is introduced to present the 309 tunnel configuration on a port. 311 The termination point information is learned from the underlay 312 networks, not configured by the fabric topology layer. 314 4. Fabric YANG Module 316 This module imports typedefs from [RFC8345], and it references 317 [RFC7348] and [RFC8344]. 319 file "ietf-dc-fabric-types@2018-04-16.yang" 320 module ietf-dc-fabric-types { 322 yang-version 1.1; 323 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types"; 324 prefix fabrictypes; 326 import ietf-network { 327 prefix nw; 329 reference 330 "RFC 8345:A Data Model for Network Topologies"; 331 } 332 organization 333 "IETF I2RS (Interface to the Routing System) Working Group"; 335 contact 336 "WG Web: 337 WG List: 339 Editor: Yan Zhuang 340 342 Editor: Danian Shi 343 "; 345 description 346 "This module contains a collection of YANG definitions for 347 Fabric. 349 Copyright (c) 2018 IETF Trust and the persons identified as 350 authors of the code. All rights reserved. 352 Redistribution and use in source and binary forms, with or 353 without modification, is permitted pursuant to, and subject 354 to the license terms contained in, the Simplified BSD License 355 set forth in Section 4.c of the IETF Trust's Legal Provisions 356 Relating to IETF Documents 357 (https://trustee.ietf.org/license-info). 359 This version of this YANG module is part of 360 draft-ietf-i2rs-yang-dc-fabric-network-topology; 361 see the RFC itself for full legal notices. 363 NOTE TO RFC EDITOR: Please replace above reference to 364 draft-ietf-i2rs-yang-dc-fabric-network-topology-09 with RFC 365 number when published (i.e. RFC xxxx)."; 367 revision "2018-04-16"{ 368 description 369 "Initial revision. 370 NOTE TO RFC EDITOR: 371 Please replace the following reference to 372 draft-ietf-i2rs-yang-dc-fabric-network-topology-09 373 with RFC number when published (i.e. RFC xxxx)."; 374 reference 375 "draft-ietf-i2rs-yang-dc-fabric-network-topology-09"; 376 } 378 identity fabric-type { 379 description 380 "Base type for fabric networks"; 381 } 383 identity vxlan-fabric { 384 base fabric-type; 385 description 386 "Vxlan fabric"; 387 } 389 identity vlan-fabric { 390 base fabric-type; 391 description 392 "Vlan fabric"; 393 } 395 identity trill-fabric { 396 base fabric-type; 397 description "Trill fabric"; 398 } 399 identity port-type { 400 description 401 "Base type for fabric port"; 402 } 403 identity eth { 404 base port-type; 405 description "ETH"; 406 } 407 identity serial { 408 base port-type; 409 description "Serial"; 410 } 412 identity bandwidth { 413 description "Base for bandwidth"; 414 } 415 identity bw-1M { 416 base bandwidth; 417 description "1M"; 418 } 419 identity bw-10M { 420 base bandwidth; 421 description "10M"; 422 } 423 identity bw-100M { 424 base bandwidth; 425 description "100M"; 426 } 427 identity bw-1G { 428 base bandwidth; 429 description "1G"; 430 } 431 identity bw-10G { 432 base bandwidth; 433 description "10G"; 434 } 435 identity bw-40G { 436 base bandwidth; 437 description "40G"; 438 } 439 identity bw-100G{ 440 base bandwidth; 441 description "100G"; 442 } 444 identity device-role { 445 description "Base for the device role in a fabric."; 446 } 447 identity spine { 448 base device-role; 449 description "This is a spine node in a fabric."; 450 } 451 identity leaf { 452 base device-role; 453 description "This is a leaf node in a fabric. "; 454 } 455 identity border { 456 base device-role; 457 description "This is a border node to connect to other 458 fabric/network."; 459 } 460 identity fabric-port-role { 461 description "Base for the port's role in a fabric."; 462 } 463 identity internal { 464 base fabric-port-role; 465 description "The port is used for devices to access each 466 other within a fabric."; 467 } 468 identity external { 469 base fabric-port-role; 470 description "The port is used for a fabric to connect to 471 outside network."; 472 } 473 identity access { 474 base fabric-port-role; 475 description "The port is used for an endpoint to connect 476 to a fabric."; 477 } 479 identity service-capability { 480 description "Base for the service of the fabric "; 481 } 482 identity ip-mapping { 483 base service-capability; 484 description "NAT."; 485 } 486 identity acl-redirect { 487 base service-capability; 488 description "Acl redirect, which can provide SFC function."; 489 } 490 identity dynamic-route-exchange { 491 base service-capability; 492 description "Dynamic route exchange."; 493 } 495 /* 496 * Typedefs 497 */ 498 typedef fabric-id { 499 type nw:node-id; 500 description 501 "An identifier for a fabric in a topology. 502 This identifier can be generated when composing a fabric. 503 The composition of a fabric can be achived by defining a 504 RPC, which is left for vendor specific implementation 505 and not provided in this model."; 506 } 508 typedef service-capabilities { 509 type identityref { 510 base service-capability; 511 } 512 description 513 "Service capability of the fabric"; 514 } 516 typedef port-type { 517 type identityref { 518 base port-type; 519 } 520 description "Port type: ethernet or serial or others."; 521 } 522 typedef bandwidth { 523 type identityref { 524 base bandwidth; 525 } 526 description "Bandwidth of the port."; 527 } 528 typedef node-ref { 529 type instance-identifier; 530 description "A reference to a node in topology"; 531 } 533 typedef tp-ref { 534 type instance-identifier; 535 description "A reference to a termination point in topology"; 536 } 538 typedef link-ref { 539 type instance-identifier; 540 description "A reference to a link in topology"; 541 } 543 typedef underlay-network-type { 544 type identityref { 545 base fabric-type; 546 } 547 description "The type of physical network that implements 548 this fabric.Examples are vlan, and trill."; 549 } 550 typedef device-role { 551 type identityref { 552 base device-role; 553 } 554 description "Role of the device node."; 555 } 556 typedef fabric-port-role { 557 type identityref { 558 base fabric-port-role; 559 } 560 description "Role of the port in a fabric."; 561 } 563 typedef fabric-port-type { 564 type enumeration { 565 enum layer2interface { 566 description "L2 interface"; 567 } 568 enum layer3interface { 569 description "L3 interface"; 570 } 571 enum layer2Tunnel { 572 description "L2 tunnel"; 573 } 574 enum layer3Tunnel { 575 description "L3 tunnel"; 576 } 577 } 578 description 579 "Fabric port type"; 580 } 582 grouping fabric-port { 583 description 584 "Attributes of a fabric port."; 585 leaf name { 586 type string; 587 description "Name of the port."; 588 } 589 leaf role { 590 type fabric-port-role; 591 description "Role of the port in a fabric."; 592 } 593 leaf type { 594 type fabric-port-type; 595 description "Type of the port"; 596 } 597 leaf device-port { 598 type tp-ref; 599 description "The device port it mapped to."; 600 } 601 choice tunnel-option { 602 description "Tunnel options to connect two fabrics. 603 It could be L2 Tunnel or L3 Tunnel."; 604 } 605 } 606 } 607 609 file "ietf-dc-fabric-topology@2018-04-16.yang" 610 module ietf-dc-fabric-topology { 612 yang-version 1.1; 613 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology"; 614 prefix fabric; 616 import ietf-network { 617 prefix nw; 618 reference 619 "RFC 8345:A Data Model for Network Topologies"; 620 } 622 import ietf-network-topology { 623 prefix nt; 625 reference 626 "RFC 8345:A Data Model for Network Topologies"; 627 } 629 import ietf-dc-fabric-types { 630 prefix fabrictypes; 632 reference 633 "draft-ietf-i2rs-yang-dc-fabric-network-topology-09 634 NOTE TO RFC EDITOR: 635 (1) Please replace above reference to 636 draft-ietf-i2rs-yang-dc-fabric-network-topology-09 637 with RFC number when publised (i.e. RFC xxxx). 638 (2) Please replace the data in the revision statement 639 with the data of publication when published."; 640 } 642 organization 643 "IETF I2RS (Interface to the Routing System) Working Group"; 645 contact 646 "WG Web: 647 WG List: 649 Editor: Yan Zhuang 650 652 Editor: Danian Shi 653 "; 655 description 656 "This module contains a collection of YANG definitions for 657 Fabric. 659 Copyright (c) 2018 IETF Trust and the persons identified as 660 authors of the code. All rights reserved. 662 Redistribution and use in source and binary forms, with or 663 without modification, is permitted pursuant to, and subject 664 to the license terms contained in, the Simplified BSD License 665 set forth in Section 4.c of the IETF Trust's Legal Provisions 666 Relating to IETF Documents 667 (https://trustee.ietf.org/license-info). 669 This version of this YANG module is part of 670 draft-ietf-i2rs-yang-dc-fabric-network-topology; 671 see the RFC itself for full legal notices. 673 NOTE TO RFC EDITOR: Please replace above reference to 674 draft-ietf-i2rs-yang-dc-fabric-network-topology-09 with RFC 675 number when published (i.e. RFC xxxx)."; 677 revision "2018-04-16"{ 678 description 679 "Initial revision. 680 NOTE TO RFC EDITOR: Please replace the following 681 reference to draft-ietf-i2rs-yang-dc-fabric-network 682 -topology-09 with RFC number when published 683 (i.e. RFC xxxx)."; 684 reference 685 "draft-ietf-i2rs-yang-dc-fabric-network-topology-09"; 686 } 688 /*identity fabric-context { 689 description 690 "Identity of fabric context"; 691 }*/ 693 //grouping statements 694 grouping fabric-network-type { 695 description "Identify the topology type to be fabric."; 696 container fabric-network { 697 presence "indicates fabric Network"; 698 description 699 "The presence of the container node indicates 700 fabric Topology"; 701 } 702 } 704 grouping fabric-options { 705 description "Options for a fabric"; 707 leaf gateway-mode { 708 type enumeration { 709 enum centralized { 710 description "The Fabric uses centerilized 711 gateway,in which gateway is deployed on SPINE 712 node."; 714 } 715 enum distributed { 716 description "The Fabric uses distributed 717 gateway, in which gateway is deployed on LEAF 718 node."; 719 } 720 } 721 default "distributed"; 722 description "Gateway mode of the fabric"; 723 } 725 leaf traffic-behavior { 726 type enumeration { 727 enum normal { 728 description "Normal means no policy is needed 729 for all traffic"; 730 } 731 enum policy-driven { 732 description "Policy driven means policy is 733 needed for the traffic otherwise the traffic 734 will be discard."; 735 } 736 } 737 default "normal"; 738 description "Traffic behavior of the fabric"; 739 } 741 leaf-list capability-supported { 742 type fabrictypes:service-capabilities; 743 description 744 "It provides a list of supported services of the 745 fabric. The service-capabilities is defined as 746 identity-ref. Developers can define more services 747 by defining new identies."; 748 } 749 } 751 grouping device-attributes { 752 description "device attributes"; 753 leaf device-ref { 754 type fabrictypes:node-ref; 755 description 756 "The device that the fabric includes which refers 757 to a node in another topolopogy."; 758 } 759 leaf-list role { 760 type fabrictypes:device-role; 761 default fabrictypes:leaf; 762 description 763 "It is a list of devce-role to represent the roles 764 that a device plays within a PoD, such as SPINE, 765 LEAF, Border, or Border-Leaf. 766 The device-role is defined as identity-ref. If more 767 than 2 stage is used for a PoD, developers can 768 define new identities for the device-role."; 769 } 770 } 772 grouping link-attributes { 773 description "Link attributes"; 774 leaf link-ref { 775 type fabrictypes:link-ref; 776 description 777 "The link that the fabric includes which refers to 778 a link in another topology."; 779 } 780 } 782 grouping port-attributes { 783 description "Port attributes"; 784 leaf port-ref { 785 type fabrictypes:tp-ref; 786 description 787 "The port that the fabric includes which refers to 788 a termination-point in another topology."; 789 } 790 leaf port-type { 791 type fabrictypes:port-type; 792 description 793 "Port type is defined as identiy-ref. If current 794 types includes ethernet or serial. If more types 795 are needed, developers can define new identities."; 796 } 797 leaf bandwidth { 798 type fabrictypes:bandwidth; 799 description 800 "Bandwidth of the port. It is defined as identity-ref. 801 If more speeds are introduced, developers can define 802 new identies for them. Current speeds include 1M, 10M, 803 100M, 1G, 10G, 40G and 100G."; 804 } 805 } 807 grouping fabric-attributes { 808 description "Attributes of a fabric"; 809 leaf fabric-id { 810 type fabrictypes:fabric-id; 811 description 812 "An identifier for a fabric in a topology. 813 This identifier can be generated when composing a fabric. 814 The composition of a fabric can be achived by defining a 815 RPC, which is left for vendor specific implementation and 816 not provided in this model."; 817 } 819 leaf name { 820 type string; 821 description 822 "Name of the fabric"; 823 } 825 leaf type { 826 type fabrictypes:underlay-network-type; 827 description 828 "The type of physical network that implements this 829 fabric.Examples are vlan, and trill."; 830 } 832 container vni-capacity { 833 description "The range of the VNI(VXLAN Network Identifier 834 defined in RFC 7348)s that the PoD uses."; 836 leaf min { 837 type int32; 838 description 839 "The lower limit Vni."; 840 } 842 leaf max { 843 type int32; 844 description 845 "The upper limite Vni."; 846 } 847 } 849 leaf description { 850 type string; 851 description 852 "Description of the fabric"; 853 } 855 container options { 856 description "Options of the fabric"; 857 uses fabric-options; 858 } 860 list device-nodes { 861 key device-ref; 862 description "Device nodes that include in a fabric."; 863 uses device-attributes; 864 } 866 list device-links { 867 key link-ref; 868 description "Links that include within a fabric."; 869 uses link-attributes; 870 } 872 list device-ports { 873 key port-ref; 874 description "Ports that include in the fabric."; 875 uses port-attributes; 876 } 878 } 880 // augment statements 882 augment "/nw:networks/nw:network/nw:network-types" { 883 description 884 "Introduce new network type for Fabric-based topology"; 886 uses fabric-network-type; 887 } 889 augment "/nw:networks/nw:network/nw:node" { 890 when "/nw:networks/nw:network/nw:network-types/" 891 +"fabric:fabric-network"{ 892 description 893 "Augmentation parameters apply only for networks 894 with fabric topology"; 895 } 896 description "Augmentation for fabric nodes created by 897 fabric topology."; 899 container fabric-attributes { 900 description 901 "Attributes for a fabric network"; 903 uses fabric-attributes; 904 } 906 } 908 augment "/nw:networks/nw:network/nw:node/nt:termination-point" { 909 when "/nw:networks/nw:network/nw:network-types/" 910 +"fabric:fabric-network" { 911 description 912 "Augmentation parameters apply only for networks 913 with fabric topology"; 914 } 915 description "Augmentation for port on fabric."; 917 container fport-attributes { 918 config false; 919 description 920 "Attributes for fabric ports"; 921 uses fabrictypes:fabric-port; 922 } 923 } 924 } 925 927 5. IANA Considerations 929 This document registers the following namespace URIs in the "IETF XML 930 Registry" [RFC3688]: 932 URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types 934 Registrant Contact: The IESG. 936 XML: N/A; the requested URI is an XML namespace. 938 URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology 940 Registrant Contact: The IESG. 942 XML: N/A; the requested URI is an XML namespace. 944 URI:urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state 946 Registrant Contact: The IESG. 948 XML: N/A; the requested URI is an XML namespace. 950 This document registers the following YANG modules in the "YANG 951 Module Names" registry [RFC6020]: 953 NOTE TO THE RFC EDITOR: In the list below, please replace references 954 to "draft-ietf-i2rs-yang-dc-fabric-network-topology-09 (RFC form)" 955 with RFC number when published (i.e. RFC xxxx). 957 Name: ietf-dc-fabric-types 959 Namespace: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types 961 Prefix: fabrictypes 963 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-09.txt 964 (RFC form) 966 Name: ietf-dc-fabric-topology 968 Namespace: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology 970 Prefix: fabric 972 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-09.txt 973 (RFC form) 975 Name: ietf-dc-fabric-topology-state 977 Namespace: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state 979 Prefix: sfabric 981 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-09.txt 982 (RFC form) 984 6. Security Considerations 986 The YANG module defined in this document is designed to be accessed 987 via network management protocols such as NETCONF [RFC6241] or 988 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 989 layer, and the mandatory-to-implement secure transport is Secure 990 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 991 mandatory-to-implement secure transport is TLS [RFC5246]. 993 The NETCONF access control model [RFC8341] provides the means to 994 restrict access for particular NETCONF or RESTCONF users to a 995 preconfigured subset of all available NETCONF or RESTCONF protocol 996 operations and content. The subtrees and data nodes and their 997 sensitivity/vulnerability in the ietf-dc-fabric-topology module are 998 as follows: 1000 fabric-attributes: A malicious client could attempt to sabotage the 1001 configuration of important fabric attributes, such as device-nodes or 1002 type. 1004 Some of the readable data nodes in this YANG module may be considered 1005 sensitive or vulnerable in some network environments. It is thus 1006 important to control read access (e.g., via get, get-config, or 1007 notification) to these data nodes. The subtrees and data nodes and 1008 their sensitivity/vulnerability in the ietf-dc-fabric-topology module 1009 are as follows: 1011 fport-attributes: A malicious client could attempt to read the 1012 connections of fabrics without permission, such as device-port, name. 1014 7. Acknowledgements 1016 We wish to acknowledge the helpful contributions, comments, and 1017 suggestions that were received from Alexander Clemm, Donald E. 1018 Eastlake, Xufeng Liu, Susan Hares, Wei Song, Luis M. Contreras and 1019 Benoit Claise. 1021 8. References 1023 8.1. Normative References 1025 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1026 Requirement Levels", BCP 14, RFC 2119, 1027 DOI 10.17487/RFC2119, March 1997, 1028 . 1030 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1031 DOI 10.17487/RFC3688, January 2004, 1032 . 1034 [RFC5246] Dierks, T. and E. Rescorla, "Transport Layer Security 1035 (TLS) Protocol Version 1.2", August 2008, 1036 . 1038 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1039 Network Configuration Protocol (NETCONF)", RFC 6020, 1040 October 2010. 1042 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 1043 Bierman, "Network Configuration Protocol (NETCONF)", June 1044 2011, . 1046 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1047 Shell (SSH)", June 2011, 1048 . 1050 [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", 1051 RFC 7950, DOI 10.17487/RFC7950, Auguest 2016. 1053 [RFC8040] Bierman, A., Bjorklund, B., and K. Watsen, "RESTCONF 1054 Protocol", Jan 2017, 1055 . 1057 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1058 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1059 May 2017, . 1061 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 1062 Protocol Access Control Model", March 2018, 1063 . 1065 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1066 and R. Wilton, "Network Management Datastore 1067 Architecture", RFC 8342, March 2018. 1069 [RFC8345] Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., 1070 and H. Ananthakrishnan, "A YANG Data Model for Network 1071 Topologies", RFC 8345, March 2018, 1072 . 1074 8.2. Informative References 1076 [I-D.draft-ietf-nvo3-geneve] 1077 Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic 1078 Network Virtualization Encapsulation", I-D draft-ietf- 1079 nvo3-geneve-06, March 2018. 1081 [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, 1082 L., Sridhar, T., Bursell, M., and C. Wright, "Virtual 1083 eXtensible Local Area Network (VXLAN): A Framework for 1084 Overlaying Virtualized Layer 2 Networks over Layer 3 1085 Networks", August 2014, 1086 . 1088 [RFC8340] Bjorklund, M. and L. Berger, "YANG Tree Diagrams", 1089 RFC 8340, March 2018, 1090 . 1092 [RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", 1093 RFC 8344, March 2018, 1094 . 1096 [RFC8346] Clemm, A., Medved, J., Tkacik, T., Liu, X., Bryskin, I., 1097 Guo, A., Ananthakrishnan, H., Bahadur, N., and V. Beeram, 1098 "A YANG Data Model for Layer 3 Topologies", RFC 8346, 1099 March 2018, . 1101 Appendix A. Non NMDA -state modules 1103 The YANG module ietf-dc-fabric-toplogy defined in this document 1104 augments two modules, ietf-network and ietf-network-topology, that 1105 are designed to be used in conjunction with implementations that 1106 support the Network Management Datastore Architecture (NMDA) defined 1107 in [RFC8342]. In order to allow implementations to use the model 1108 even in case when NMDA is not supported, a set of companion modules 1109 have been defined that represent a state model of networks and 1110 network topologies, ietf-network-state and ietf-network-topology- 1111 state, respectively. 1113 In order to be able to use the model for fabric topologies defined in 1114 this in this document in conjunction with non-NMDA compliant 1115 implementations, a corresponding companion module needs to be 1116 introduced as well. This companion module, ietf-dc-fabric-topology- 1117 state, mirrors ietf-dc-fabric-topology. However, the module augments 1118 ietf-network-state (instead of ietf-network and ietf-network- 1119 topology) and all of its data nodes are non-configurable. 1121 Like ietf-network-state and ietf-network-topology-state, ietf-dc- 1122 fabric-topology-state SHOULD NOT be supported by implementations that 1123 support NMDA. It is for this reason that the module is defined in 1124 the Appendix. 1126 The definition of the module follows below. As the structure of the 1127 module mirrors that of its underlying module, the YANG tree is not 1128 depicted separately. 1130 1131 file "ietf-dc-fabric-topology-state@2018-04-16.yang" 1132 module ietf-dc-fabric-topology-state { 1134 yang-version 1.1; 1135 namespace 1136 "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state"; 1137 prefix sfabric; 1139 import ietf-network-state { 1140 prefix nws; 1141 reference 1142 "RFC 8345:A Data Model for Network Topologies"; 1143 } 1144 import ietf-dc-fabric-types { 1145 prefix fabrictypes; 1147 reference 1148 "draft-ietf-i2rs-yang-dc-fabric-network-topology-09 1149 NOTE TO RFC EDITOR: 1150 (1) Please replace above reference to draft-ietf-i2rs-yang 1151 -dc-fabric-network-topology-09 with RFC number when 1152 published (i.e. RFC xxxx). 1153 (2) Please replace the data in the revision statement 1154 with the data of publication when published."; 1155 } 1157 organization 1158 "IETF I2RS (Interface to the Routing System) Working Group"; 1160 contact 1161 "WG Web: 1162 WG List: 1164 Editor: Yan Zhuang 1165 1167 Editor: Danian Shi 1168 "; 1170 description 1171 "This module contains a collection of YANG definitions for 1172 Fabric state, representing topology that is either learned, 1173 or topology that results from applying toplogy that has been 1174 configured per the ietf-dc-fabric-topology model, mirroring 1175 the corresponding data nodes in this model. 1177 This model mirrors the configuration tree of ietf-dc-fabric 1178 -topology, but contains only read-only state data. The model 1179 is not needed when the implemtation infrastructure supports 1180 the Network Management Datastore Architecture(NMDA). 1182 Copyright (c) 2018 IETF Trust and the persons identified as 1183 authors of the code. All rights reserved. 1185 Redistribution and use in source and binary forms, with or 1186 without modification, is permitted pursuant to, and subject 1187 to the license terms contained in, the Simplified BSD 1188 License set forth in Section 4.c of the IETF Trust's Legal 1189 Provisions Relating to IETF Documents 1190 (http:s//trustee.ietf.org/license-info). 1192 This version of this YANG module is part of 1193 draft-ietf-i2rs-yang-dc-fabric-network-topology; 1194 see the RFC itself for full legal notices. 1196 NOTE TO RFC EDITOR: Please replace above reference to 1197 draft-ietf-i2rs-yang-dc-fabric-network-topology-09 with RFC 1198 number when published (i.e. RFC xxxx)."; 1200 revision "2018-04-16"{ 1201 description 1202 "Initial revision. 1203 NOTE TO RFC EDITOR: 1204 Please replace the following reference to 1205 draft-ietf-i2rs-yang-dc-fabric-network-topology-09 1206 with RFC number when published (i.e. RFC xxxx)."; 1207 reference 1208 "draft-ietf-i2rs-yang-dc-fabric-network-topology-09"; 1209 } 1211 //grouping statements 1212 grouping fabric-network-type { 1213 description "Identify the topology type to be fabric."; 1214 container fabric-network { 1215 presence "indicates fabric Network"; 1216 description 1217 "The presence of the container node indicates 1218 fabric Topology"; 1219 } 1220 } 1222 grouping fabric-options { 1223 description "Options for a fabric"; 1225 leaf gateway-mode { 1226 type enumeration { 1227 enum centralized { 1228 description "The Fabric uses centerilized 1229 gateway, in which gateway is deployed on SPINE 1230 node."; 1231 } 1232 enum distributed { 1233 description "The Fabric uses distributed 1234 gateway, in which gateway is deployed on LEAF 1235 node."; 1236 } 1237 } 1238 default "distributed"; 1239 description "Gateway mode of the fabric"; 1240 } 1242 leaf traffic-behavior { 1243 type enumeration { 1244 enum normal { 1245 description "Normal means no policy is needed 1246 for all traffic"; 1247 } 1248 enum policy-driven { 1249 description "Policy driven means policy is 1250 needed for the traffic otherwise the traffic 1251 will be discard."; 1252 } 1253 } 1254 default "normal"; 1255 description "Traffic behavior of the fabric"; 1256 } 1258 leaf-list capability-supported { 1259 type fabrictypes:service-capabilities; 1260 description 1261 "It provides a list of supported services of the 1262 fabric. The service-capabilities is defined as 1263 identity-ref. Developers can define more services 1264 by defining new identies."; 1265 } 1266 } 1268 grouping device-attributes { 1269 description "device attributes"; 1270 leaf device-ref { 1271 type fabrictypes:node-ref; 1272 description 1273 "The device that the fabric includes which refers 1274 to a node in another topolopogy."; 1275 } 1276 leaf-list role { 1277 type fabrictypes:device-role; 1278 default fabrictypes:leaf; 1279 description 1280 "It is a list of devce-role to represent the roles 1281 that a device plays within a PoD, such as SPINE, 1282 LEAF, Border, or Border-Leaf. 1283 The device-role is defined as identity-ref. If more 1284 than 2 stage is used for a PoD, developers can 1285 define new identities for the device-role."; 1286 } 1287 } 1289 grouping link-attributes { 1290 description "Link attributes"; 1291 leaf link-ref { 1292 type fabrictypes:link-ref; 1293 description 1294 "The link that the fabric includes which refers to 1295 a link in another topology."; 1296 } 1297 } 1299 grouping port-attributes { 1300 description "Port attributes"; 1301 leaf port-ref { 1302 type fabrictypes:tp-ref; 1303 description 1304 "The port that the fabric includes which refers to 1305 a termination-point in another topology."; 1306 } 1307 leaf port-type { 1308 type fabrictypes:port-type; 1309 description 1310 "Port type is defined as identiy-ref. If current 1311 types includes ethernet or serial. If more types 1312 are needed, developers can define new identities."; 1313 } 1314 leaf bandwidth { 1315 type fabrictypes:bandwidth; 1316 description 1317 "Bandwidth of the port. It is defined as 1318 identity-ref. If more speeds are introduced, 1319 developers can define new identies for them. 1320 Current speeds include 1M, 10M, 100M, 1G, 10G, 1321 40G and 100G."; 1322 } 1323 } 1325 grouping fabric-attributes { 1326 description "Attributes of a fabric"; 1328 leaf fabric-id { 1329 type fabrictypes:fabric-id; 1330 description 1331 "Fabric id"; 1332 } 1334 leaf name { 1335 type string; 1336 description 1337 "Name of the fabric"; 1338 } 1340 leaf type { 1341 type fabrictypes:underlay-network-type; 1342 description 1343 "The type of physical network that implements this 1344 fabric.Examples are vlan, and trill."; 1345 } 1347 container vni-capacity { 1348 description "The range of the VNI(VXLAN Network 1349 Identifier defined in RFC 7348)s that the PoD uses."; 1351 leaf min { 1352 type int32; 1353 description 1354 "The lower limit Vni."; 1355 } 1357 leaf max { 1358 type int32; 1359 description 1360 "The upper limite Vni."; 1361 } 1362 } 1364 leaf description { 1365 type string; 1366 description 1367 "Description of the fabric"; 1368 } 1370 container options { 1371 description "Options of the fabric"; 1372 uses fabric-options; 1373 } 1375 list device-nodes { 1376 key device-ref; 1377 description "Device nodes that include in a fabric."; 1378 uses device-attributes; 1379 } 1381 list device-links { 1382 key link-ref; 1383 description "Links that include within a fabric."; 1384 uses link-attributes; 1385 } 1387 list device-ports { 1388 key port-ref; 1389 description "Ports that include in the fabric."; 1390 uses port-attributes; 1391 } 1392 } 1394 // augment statements 1396 augment "/nws:networks/nws:network/nws:network-types" { 1397 description 1398 "Introduce new network type for Fabric-based logical 1399 topology"; 1400 uses fabric-network-type; 1401 } 1403 augment "/nws:networks/nws:network/nws:node" { 1404 when "/nws:networks/nws:network/nws:network-types" 1405 +"/sfabric:fabric-network"{ 1406 description "Augmentation parameters apply only for 1407 networks with fabric topology."; 1408 } 1409 description "Augmentation for fabric nodes."; 1410 container fabric-attributes-state { 1411 description 1412 "Attributes for a fabric network"; 1413 uses fabric-attributes; 1414 } 1415 } 1416 } 1417 1419 Authors' Addresses 1420 Yan Zhuang 1421 Huawei 1422 101 Software Avenue, Yuhua District 1423 Nanjing, Jiangsu 210012 1424 China 1426 Email: zhuangyan.zhuang@huawei.com 1428 Danian Shi 1429 Huawei 1430 101 Software Avenue, Yuhua District 1431 Nanjing, Jiangsu 210012 1432 China 1434 Email: shidanian@huawei.com 1436 Rong Gu 1437 China Mobile 1438 32 Xuanwumen West Ave, Xicheng District 1439 Beijing, Beijing 100053 1440 China 1442 Email: gurong_cmcc@outlook.com 1444 Hariharan Ananthakrishnan 1445 Netflix 1447 Email: hari@netflix.com