idnits 2.17.1 draft-ietf-i2rs-yang-dc-fabric-network-topology-08.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 : ---------------------------------------------------------------------------- ** There are 17 instances of too long lines in the document, the longest one being 11 characters in excess of 72. 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...' == Line 1279 has weird spacing: '...hin the fabri...' -- The document date (March 27, 2018) is 2223 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) == Missing Reference: 'RFC3688' is mentioned on line 875, but not defined == Unused Reference: 'RFC6991' is defined on line 975, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-i2rs-usecase-reqs-summary' is defined on line 1012, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-nvo3-geneve' is defined on line 1017, but no explicit reference was found in the text ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) ** Downref: Normative reference to an Informational RFC: RFC 7348 == Outdated reference: A later version (-16) exists of draft-ietf-nvo3-geneve-06 Summary: 4 errors (**), 0 flaws (~~), 9 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: September 28, 2018 R. Gu 6 China Mobile 7 H. Ananthakrishnan 8 Packet Design 9 March 27, 2018 11 A YANG Data Model for Fabric Topology in Data Center Networks 12 draft-ietf-i2rs-yang-dc-fabric-network-topology-08 14 Abstract 16 This document defines a YANG data model for fabric topology in Data 17 Center Network. 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 September 28, 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 an 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 . . . . . . . . . . . . . . . . . . . 5 60 3.2.2. Fabric node extension . . . . . . . . . . . . . . . . 6 61 3.2.3. Fabric termination-point extension . . . . . . . . . 7 62 4. Fabric YANG Module . . . . . . . . . . . . . . . . . . . . . 7 63 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 64 6. Security Considerations . . . . . . . . . . . . . . . . . . . 20 65 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 66 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 67 8.1. Normative References . . . . . . . . . . . . . . . . . . 21 68 8.2. Informative References . . . . . . . . . . . . . . . . . 22 69 Appendix A. Non NMDA -state modules . . . . . . . . . . . . . . 22 70 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 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 enrolled. 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] and 109 [I.D. draft-ietf-i2rs-usecase-reqs-summary], this model can also be 110 treated as an application of the I2RS network topology model 111 [RFC8345] in the scenario of Data center network management. It can 112 also act as a service topology when mapping network elements at the 113 fabric layer to elements of other topologies, such as L3 topologies 114 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 an Acronyms 130 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 131 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 132 document are to be interpreted as described in [RFC2119]. In this 133 document, these words will appear with that interpretation only when 134 in ALL CAPS. Lower case uses of these words are not to be 135 interpreted as carrying RFC-2119 significance. 137 2.1. Terminology 139 Fabric: also known as a POD, is a module of network, compute, 140 storage, and application components that work together to deliver 141 networking services. It represents a repeatable design pattern. Its 142 components maximize the modularity, scalability, and manageability of 143 data centers. 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-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-fabric-topology" is introduced and added 216 under the "network-types" container of the ietf-network module. 218 o Fabric is defined as a node under the network/node container. A 219 new container "fabric-attributes" is defined to carry attributes 220 for a fabric such as gateway mode, fabric types, involved device 221 nodes, and links. 223 o Termination points (in network topology module) are augmented with 224 fabric port attributes defined in a container. The "termination- 225 point" here is used to represent a fabric "port" that provides 226 connections to other nodes, such as an internal device, another 227 fabric externally, or end hosts. 229 Details of the fabric node and the fabric termination point extension 230 will be explained in the following sections. 232 3.2.2. Fabric node extension 234 As an atomic network, 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? 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@2017-12-21.yang" 319 module ietf-dc-fabric-types { 320 yang-version 1.1; 321 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types"; 322 prefix fabrictypes; 324 organization 325 "IETF I2RS (Interface to the Routing System) Working Group"; 327 contact 328 "WG Web: 329 WG List: 331 Editor: Yan Zhuang 332 334 Editor: Danian Shi 335 "; 337 description 338 "This module contains a collection of YANG definitions for Fabric. 339 Copyright (c) 2018 IETF Trust and the persons identified as 340 authors of the code. All rights reserved. 342 Redistribution and use in source and binary forms, with or 343 without modification, is permitted pursuant to, and subject 344 to the license terms contained in, the Simplified BSD License 345 set forth in Section 4.c of the IETF Trust's Legal Provisions 346 Relating to IETF Documents 347 (https://trustee.ietf.org/license-info). 349 This version of this YANG module is part of 350 draft-ietf-i2rs-yang-dc-fabric-network-topology; 351 see the RFC itself for full legal notices. 353 NOTE TO RFC EDITOR: Please replace above reference to 354 draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC 355 number when published (i.e. RFC xxxx)."; 357 revision "2017-12-21"{ 358 description 359 "Initial revision. 360 NOTE TO RFC EDITOR: Please replace the following reference to 361 draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC 362 number when published (i.e. RFC xxxx)."; 363 reference 364 "draft-ietf-i2rs-yang-dc-fabric-network-topology-03"; 365 } 367 identity fabric-type { 368 description 369 "Base type for fabric networks"; 370 } 372 identity vxlan-fabric { 373 base fabric-type; 374 description "Vxlan fabric"; 375 } 377 identity vlan-fabric { 378 base fabric-type; 379 description 380 "Vlan fabric"; 381 } 383 identity trill-fabric { 384 base fabric-type; 385 description "Trill fabric"; 386 } 387 identity port-type { 388 description 389 "Base type for fabric port"; 390 } 391 identity eth { 392 base port-type; 393 description "ETH"; 394 } 395 identity serial { 396 base port-type; 397 description "Serial"; 398 } 400 identity bandwidth { 401 description "Base for bandwidth"; 402 } 403 identity bw-1M { 404 base bandwidth; 405 description "1M"; 406 } 407 identity bw-10M { 408 base bandwidth; 409 description "10M"; 410 } 411 identity bw-100M { 412 base bandwidth; 413 description "100M"; 414 } 415 identity bw-1G { 416 base bandwidth; 417 description "1G"; 418 } 419 identity bw-10G { 420 base bandwidth; 421 description "10G"; 422 } 423 identity bw-40G { 424 base bandwidth; 425 description "40G"; 426 } 427 identity bw-100G{ 428 base bandwidth; 429 description "100G"; 430 } 432 identity device-role { 433 description "Base for the device role in a fabric."; 434 } 435 identity spine { 436 base device-role; 437 description "This is a spine node in a fabric."; 438 } 439 identity leaf { 440 base device-role; 441 description "This is a leaf node in a fabric. "; 442 } 443 identity border { 444 base device-role; 445 description "This is a border node to connect to 446 other fabric/network."; 447 } 448 identity fabric-port-role { 449 description "Base for the port's role in a fabric."; 450 } 451 identity internal { 452 base fabric-port-role; 453 description "The port is used for devices to access 454 each other within a fabric."; 455 } 456 identity external { 457 base fabric-port-role; 458 description "The port is used for a fabric to connect 459 to outside network."; 460 } 461 identity access { 462 base fabric-port-role; 463 description "The port is used for an endpoint to 464 connect to a fabric."; 465 } 467 /* 468 * Typedefs 469 */ 470 typedef service-capabilities { 471 type enumeration { 472 enum ip-mapping { 473 description "NAT"; 474 } 475 enum acl-redirect{ 476 description "Acl redirect, which can provide 477 SFC function"; 478 } 479 enum dynamic-route-exchange{ 480 description "Dynamic route exchange"; 481 } 482 } 483 description 484 "Capability of the device"; 485 } 487 typedef port-type { 488 type identityref { 489 base port-type; 490 } 491 description "Port type: ethernet or serial or others."; 492 } 493 typedef bandwidth { 494 type identityref { 495 base bandwidth; 496 } 497 description "Bandwidth of the port."; 498 } 499 typedef node-ref { 500 type instance-identifier; 501 description "A reference to a node in topology"; 502 } 504 typedef tp-ref { 505 type instance-identifier; 506 description "A reference to a termination point in topology"; 507 } 509 typedef link-ref { 510 type instance-identifier; 511 description "A reference to a link in topology"; 513 } 515 typedef underlay-network-type { 516 type identityref { 517 base fabric-type; 518 } 519 description "The type of physical network that implements this 520 fabric.Examples are vlan, and trill."; 521 } 522 typedef device-role { 523 type identityref { 524 base device-role; 525 } 526 description "Role of the device node."; 527 } 528 typedef fabric-port-role { 529 type identityref { 530 base fabric-port-role; 531 } 532 description "Role of the port in a fabric."; 533 } 535 typedef fabric-port-type { 536 type enumeration { 537 enum layer2interface { 538 description "L2 interface"; 539 } 540 enum layer3interface { 541 description "L3 interface"; 542 } 543 enum layer2Tunnel { 544 description "L2 tunnel"; 545 } 546 enum layer3Tunnel { 547 description "L3 tunnel"; 548 } 549 } 550 description 551 "Fabric port type"; 552 } 554 grouping fabric-port { 555 description 556 "Attributes of a fabric port."; 557 leaf name { 558 type string; 559 description "Name of the port."; 560 } 561 leaf role { 562 type fabric-port-role; 563 description "Role of the port in a fabric."; 564 } 565 leaf type { 566 type fabric-port-type; 567 description "Type of the port"; 568 } 569 leaf device-port { 570 type tp-ref; 571 description "The device port it mapped to."; 572 } 573 choice tunnel-option { 574 description "Tunnel options to connect two fabrics. 575 It could be L2 Tunnel or L3 Tunnel."; 576 } 577 } 578 } 579 581 file "ietf-dc-fabric-topology@2018-02-11.yang" 582 module ietf-dc-fabric-topology { 584 yang-version 1.1; 585 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology"; 586 prefix fabric; 588 import ietf-network { 589 prefix nw; 591 reference 592 "RFC 8345:A Data Model for Network Topologies"; 593 } 595 import ietf-network-topology { 596 prefix nt; 598 reference 599 "RFC 8345:A Data Model for Network Topologies"; 600 } 602 import ietf-dc-fabric-types { 603 prefix fabrictypes; 605 reference 606 "draft-ietf-i2rs-yang-dc-fabric-network-topology-03 607 NOTE TO RFC EDITOR: 608 (1) Please replace above reference to draft-ietf-i2rs-yang-dc 609 -fabric-network-topology-03 with RFC number when publised 610 (i.e. RFC xxxx). 611 (2) Please replace the date in the revision statement with the 612 data of publication when published."; 613 } 615 organization 616 "IETF I2RS (Interface to the Routing System) Working Group"; 618 contact 619 "WG Web: 620 WG List: 622 Editor: Yan Zhuang 623 625 Editor: Danian Shi 626 "; 628 description 629 "This module contains a collection of YANG definitions for Fabric. 631 Copyright (c) 2018 IETF Trust and the persons identified as 632 authors of the code. All rights reserved. 634 Redistribution and use in source and binary forms, with or 635 without modification, is permitted pursuant to, and subject 636 to the license terms contained in, the Simplified BSD License 637 set forth in Section 4.c of the IETF Trust's Legal Provisions 638 Relating to IETF Documents 639 (https://trustee.ietf.org/license-info). 641 This version of this YANG module is part of 642 draft-ietf-i2rs-yang-dc-fabric-network-topology;see the RFC 643 itself for full legal notices. 645 NOTE TO RFC EDITOR: Please replace above reference to 646 draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC 647 number when published (i.e. RFC xxxx)."; 649 revision "2018-02-11"{ 650 description 651 "Initial revision. 652 NOTE TO RFC EDITOR: Please replace the following reference 653 to draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with 654 RFC number when published (i.e. RFC xxxx)."; 655 reference 656 "draft-ietf-i2rs-yang-dc-fabric-network-topology-05"; 657 } 659 identity fabric-context { 660 description 661 "Identity of fabric context"; 662 } 664 typedef fabric-id { 665 type nw:node-id; 666 description 667 "An identifier for a fabric in a topology. 668 The identifier is generated by compose-fabric RPC."; 669 } 671 //grouping statements 672 grouping fabric-network-type { 673 description "Identify the topology type to be fabric."; 674 container fabric-network { 675 presence "indicates fabric Network"; 676 description 677 "The presence of the container node indicates fabric topology"; 678 } 679 } 681 grouping fabric-options { 682 description "Options for a fabric"; 684 leaf gateway-mode { 685 type enumeration { 686 enum centralized { 687 description "The Fabric uses centerilized gateway, in 688 which gateway is deployed on SPINE node."; 689 } 690 enum distributed { 691 description "The Fabric uses distributed gateway, in 692 which gateway is deployed on LEAF node."; 693 } 694 } 695 default "distributed"; 696 description "Gateway mode of the fabric"; 697 } 699 leaf traffic-behavior { 700 type enumeration { 701 enum normal { 702 description "Normal, no policy is enforced."; 703 } 704 enum policy-driven { 705 description "Policy driven"; 706 } 707 } 708 default "normal"; 709 description "Traffic behavior of the fabric"; 710 } 712 leaf-list capability-supported { 713 type fabrictypes:service-capabilities; 714 description 715 "Supported services of the fabric"; 716 } 717 } 719 grouping device-attributes { 720 description "device attributes"; 721 leaf device-ref { 722 type fabrictypes:node-ref; 723 description 724 "The device the fabric includes."; 725 } 726 leaf-list role { 727 type fabrictypes:device-role; 728 default fabrictypes:leaf; 729 description 730 "Role of the device node"; 731 } 732 } 734 grouping link-attributes { 735 description "Link attributes"; 736 leaf link-ref { 737 type fabrictypes:link-ref; 738 description 739 "The link it includes"; 740 } 741 } 743 grouping port-attributes { 744 description "Port attributes"; 745 leaf port-ref { 746 type fabrictypes:tp-ref; 747 description 748 "The port it refers to."; 749 } 750 leaf port-type { 751 type fabrictypes:port-type; 752 description 753 "Port type: ethernet or serial or others."; 754 } 755 leaf bandwidth { 756 type fabrictypes:bandwidth; 757 description 758 "Bandwidth of the port."; 759 } 760 } 762 grouping fabric-attributes { 763 description "Attributes of a fabric"; 765 leaf fabric-id { 766 type fabric-id; 767 description 768 "Fabric id"; 769 } 771 leaf name { 772 type string; 773 description 774 "Name of the fabric"; 775 } 777 leaf type { 778 type fabrictypes:underlay-network-type; 779 description 780 "The type of physical network that implements this 781 fabric.Examples are vlan, and trill."; 782 } 784 container vni-capacity { 785 description "Number of vni(VXLAN Network Identifier 786 defined in RFC 7348)s that the fabric has."; 787 leaf min { 788 type int32; 789 description 790 "Vni min capacity"; 791 } 793 leaf max { 794 type int32; 795 description 796 "Vni max capacity"; 797 } 798 } 799 leaf description { 800 type string; 801 description 802 "Description of the fabric"; 803 } 805 container options { 806 description "Options of the fabric"; 807 uses fabric-options; 808 } 810 list device-nodes { 811 key device-ref; 812 description "Device nodes that include in a fabric."; 813 uses device-attributes; 814 } 816 list device-links { 817 key link-ref; 818 description "Links that include within a fabric."; 819 uses link-attributes; 820 } 822 list device-ports { 823 key port-ref; 824 description "Ports that include in the fabric."; 825 uses port-attributes; 826 } 828 } 830 // augment statements 832 augment "/nw:networks/nw:network/nw:network-types" { 833 description 834 "Introduce new network type for Fabric-based logical topology"; 836 uses fabric-network-type; 837 } 839 augment "/nw:networks/nw:network/nw:node" { 840 when "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" { 841 description 842 "Augmentation parameters apply only for networks 843 with fabric topology"; 844 } 845 description "Augmentation for fabric nodes created by fabric topology."; 846 container fabric-attributes { 847 description 848 "Attributes for a fabric network"; 850 uses fabric-attributes; 851 } 852 } 854 augment "/nw:networks/nw:network/nw:node/nt:termination-point" { 855 when "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" { 856 description 857 "Augmentation parameters apply only for networks 858 with fabric topology"; 859 } 860 description "Augmentation for port on fabric."; 862 container fport-attributes { 863 config false; 864 description 865 "Attributes for fabric ports"; 866 uses fabrictypes:fabric-port; 867 } 868 } 869 } 870 872 5. IANA Considerations 874 This document registers the following namespace URIs in the "IETF XML 875 Registry" [RFC3688]: 877 URI: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types Registrant 878 Contact: The IESG. XML: N/A; the requested URI is an XML namespace. 880 URI: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology Registrant 881 Contact: The IESG. XML: N/A; the requested URI is an XML namespace. 883 URI: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state 884 Registrant Contact: The IESG. XML: N/A; the requested URI is an XML 885 namespace. 887 This document registers the following YANG modules in the "YANG 888 Module Names" registry [RFC6020]: 890 NOTE TO THE RFC EDITOR: In the list below, please replace references 891 to "draft-ietf-i2rs-yang-dc-fabric-network-topology-03 (RFC form)" 892 with RFC number when published (i.e. RFC xxxx). 894 Name: ietf-dc-fabric-types Namespace: 895 urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types Prefix: fabrictypes 896 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-03.txt 897 (RFC form) 899 Name: ietf-dc-fabric-topology Namespace: 900 urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology Prefix: fabric 901 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-03.txt 902 (RFC form) 904 Name: ietf-dc-fabric-topology-state Namespace: 905 urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state Prefix: 906 sfabric Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology- 907 03.txt (RFC form) 909 6. Security Considerations 911 The YANG module defined in this document is designed to be accessed 912 via network management protocols such as NETCONF [RFC6241] or 913 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 914 layer, and the mandatory-to-implement secure transport is Secure 915 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 916 mandatory-to-implement secure transport is TLS [RFC5246]. 918 The NETCONF access control model [RFC6536] provides the means to 919 restrict access for particular NETCONF or RESTCONF users to a 920 preconfigured subset of all available NETCONF or RESTCONF protocol 921 operations and content. The subtrees and data nodes and their 922 sensitivity/vulnerability in the ietf-dc-fabric-topology module are 923 as follows: 925 fabric-attributes: A malicious client could attempt to sabotage the 926 configuration of important fabric attributes, such as device-nodes or 927 type. 929 Some of the readable data nodes in this YANG module may be considered 930 sensitive or vulnerable in some network environments. It is thus 931 important to control read access (e.g., via get, get-config, or 932 notification) to these data nodes. The subtrees and data nodes and 933 their sensitivity/vulnerability in the ietf-dc-fabric-topology module 934 are as follows: 936 fport-attributes: A malicious client could attempt to read the 937 connections of fabrics without permission, such as device-port, name. 939 7. Acknowledgements 941 We wish to acknowledge the helpful contributions, comments, and 942 suggestions that were received from Alexander Clemm, Donald E. 943 Eastlake, Xufeng Liu, Susan Hares, Wei Song, Luis M. Contreras and 944 Benoit Claise. 946 8. References 948 8.1. Normative References 950 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 951 Requirement Levels", BCP 14, RFC 2119, 952 DOI 10.17487/RFC2119, March 1997, 953 . 955 [RFC5246] Dierks, T. and E. Rescorla, "Transport Layer Security 956 (TLS) Protocol Version 1.2", August 2008, 957 . 959 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 960 Network Configuration Protocol (NETCONF)", RFC 6020, 961 October 2010. 963 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 964 Bierman, "Network Configuration Protocol (NETCONF)", June 965 2011, . 967 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 968 Shell (SSH)", June 2011, 969 . 971 [RFC6536] Bierman, A. and B. Bjorklund, "Network Configuration 972 Protocol (NETCONF) Access Control Model", March 2012, 973 . 975 [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, 976 July 2013. 978 [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, 979 L., Sridhar, T., Bursell, M., and C. Wright, "Virtual 980 eXtensible Local Area Network (VXLAN): A Framework for 981 Overlaying Virtualized Layer 2 Networks over Layer 3 982 Networks", August 2014, 983 . 985 [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", 986 RFC 7950, DOI 10.17487/RFC7950, Auguest 2016. 988 [RFC8040] Bierman, A., Bjorklund, B., and K. Watsen, "RESTCONF 989 Protocol", Jan 2017, 990 . 992 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 993 and R. Wilton, "Network Management Datastore 994 Architecture", RFC 8342, March 2018. 996 [RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", 997 RFC 8344, March 2018, 998 . 1000 [RFC8345] Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., 1001 and H. Ananthakrishnan, "A YANG Data Model for Network 1002 Topologies", RFC 8345, March 2018, 1003 . 1005 [RFC8346] Clemm, A., Medved, J., Tkacik, T., Liu, X., Bryskin, I., 1006 Guo, A., Ananthakrishnan, H., Bahadur, N., and V. Beeram, 1007 "A YANG Data Model for Layer 3 Topologies", RFC 8346, 1008 March 2018, . 1010 8.2. Informative References 1012 [I-D.draft-ietf-i2rs-usecase-reqs-summary] 1013 Hares, S. and M. Chen, "Summary of I2RS Use Case 1014 Requirements", I-D draft-ietf-i2rs-usecase-reqs-summary, 1015 May 2015. 1017 [I-D.draft-ietf-nvo3-geneve] 1018 Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic 1019 Network Virtualization Encapsulation", I-D draft-ietf- 1020 nvo3-geneve-06, March 2018. 1022 [RFC8340] Bjorklund, M. and L. Berger, "YANG Tree Diagrams", 1023 RFC 8340, March 2018, 1024 . 1026 Appendix A. Non NMDA -state modules 1028 The YANG module ietf-fabric-toplogy defined in this document augments 1029 two modules, ietf-network and ietf-network-topology, that are 1030 designed to be used in conjunction with implementations that support 1031 the Network Management Datastore Architecture (NMDA) defined in 1032 [RFC8342]. In order to allow implementations to use the model even 1033 in case when NMDA is not supported, a set of companion modules have 1034 been defined that represent a state model of networks and network 1035 topologies, ietf-network-state and ietf-network-topology-state, 1036 respectively. 1038 In order to be able to use the model for fabric topologies defined in 1039 this in this document in conjunction with non-NMDA compliant 1040 implementations, a corresponding companion module needs to be 1041 introduced as well. This companion module, ietf-fabric-topology- 1042 state, mirrors ietf-fabric-topology. However, the module augments 1043 ietf-network-state (instead of ietf-network and ietf-network- 1044 topology) and all of its data nodes are non-configurable. 1046 Like ietf-network-state and ietf-network-topology-state, ietf-fabric- 1047 topology-state SHOULD NOT be supported by implementations that 1048 support NMDA. It is for this reason that the module is defined in 1049 the Appendix. 1051 The definition of the module follows below. As the structure of the 1052 module mirrors that of its underlying module, the YANG tree is not 1053 depicted separately. 1055 file "ietf-dc-fabric-topology-state@2018-02-11.yang" 1056 module ietf-dc-fabric-topology-state { 1058 yang-version 1.1; 1059 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state"; 1060 prefix sfabric; 1062 import ietf-network-state { 1063 prefix nws; 1064 reference 1065 "RFC 8345:A Data Model for Network Topologies"; 1066 } 1067 import ietf-dc-fabric-types { 1068 prefix fabrictypes; 1070 reference 1071 "draft-ietf-i2rs-yang-dc-fabric-network-topology-03 1072 NOTE TO RFC EDITOR: 1073 (1) Please replace above reference to draft-ietf-i2rs-yang-dc 1074 -fabric-network-topology-03 with RFC number when published 1075 (i.e. RFC xxxx). 1076 (2) Please replace the date in the revision statement with the 1077 data of publication when published."; 1078 } 1079 import ietf-dc-fabric-topology { 1080 prefix fabric; 1082 reference 1083 "draft-ietf-i2rs-yang-dc-fabric-network-topology-03 1084 NOTE TO RFC EDITOR: 1085 (1) Please replace above reference to draft-ietf-i2rs-yang-dc 1086 -fabric-network-topology-03 with RFC number when published 1087 (i.e. RFC xxxx). 1088 (2) Please replace the date in the revision statement with the 1089 data of publication when published."; 1090 } 1092 organization 1093 "IETF I2RS (Interface to the Routing System) Working Group"; 1095 contact 1096 "WG Web: 1097 WG List: 1099 Editor: Yan Zhuang 1100 1102 Editor: Danian Shi 1103 "; 1105 description 1106 "This module contains a collection of YANG definitions 1107 for Fabric state, representing topology that is either 1108 learned, or topology that results from applying toplogy 1109 that has been configured per the ietf-dc-fabric-topology 1110 model, mirroring the corresponding data nodes in this model. 1112 This model mirrors the configuration tree of 1113 ietf-dc-fabric-topology, but contains only read-only state 1114 data. The model is not needed when the implemtation 1115 infrastructure supports the Network Management Datastore 1116 Architecture(NMDA). 1118 Copyright (c) 2018 IETF Trust and the persons identified 1119 as authors of the code. All rights reserved. 1121 Redistribution and use in source and binary forms, with or 1122 without modification, is permitted pursuant to, and subject 1123 to the license terms contained in, the Simplified BSD License 1124 set forth in Section 4.c of the IETF Trust's Legal Provisions 1125 Relating to IETF Documents(https://trustee.ietf.org/license-info). 1127 This version of this YANG module is part of 1128 draft-ietf-i2rs-yang-dc-fabric-network-topology;see the RFC 1129 itself for full legal notices. 1131 NOTE TO RFC EDITOR: Please replace above reference to 1132 draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC number 1133 when published (i.e. RFC xxxx)."; 1135 revision "2018-02-11" { 1136 description 1137 "Initial revision. 1138 NOTE TO RFC EDITOR: Please replace the following reference to 1139 draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC 1140 number when published (i.e. RFC xxxx)."; 1141 reference 1142 "draft-ietf-i2rs-yang-dc-fabric-network-topology-05"; 1143 } 1145 //grouping statements 1146 grouping fabric-network-type { 1147 description "Identify the topology type to be fabric."; 1148 container fabric-network { 1149 presence "indicates fabric Network"; 1150 description 1151 "The presence of the container node indicates fabric Topology"; 1152 } 1153 } 1155 grouping fabric-options { 1156 description "Options for a fabric"; 1157 leaf gateway-mode { 1158 type enumeration { 1159 enum centralized { 1160 description "The Fabric uses centerilized gateway, in which 1161 gateway is deployed on SPINE node."; 1162 } 1163 enum distributed { 1164 description "The Fabric uses distributed gateway, in which 1165 gateway is deployed on LEAF node."; 1166 } 1167 } 1168 default "distributed"; 1169 description "Gateway mode of the fabric"; 1170 } 1172 leaf traffic-behavior { 1173 type enumeration { 1174 enum normal { 1175 description "Normal"; 1176 } 1177 enum policy-driven { 1178 description "Policy driven"; 1180 } 1181 } 1182 default "normal"; 1183 description "Traffic behavior of the fabric"; 1184 } 1186 leaf-list capability-supported { 1187 type fabrictypes:service-capabilities; 1188 description 1189 "Supported services of the fabric"; 1190 } 1191 } 1193 grouping device-attributes { 1194 description "device attributes"; 1195 leaf device-ref { 1196 type fabrictypes:node-ref; 1197 description "The device the fabric includes."; 1198 } 1199 leaf-list role { 1200 type fabrictypes:device-role; 1201 default fabrictypes:leaf; 1202 description "Role of the node"; 1203 } 1204 } 1206 grouping link-attributes { 1207 description "Link attributes"; 1208 leaf link-ref { 1209 type fabrictypes:link-ref; 1210 description "The link it includes"; 1211 } 1212 } 1214 grouping port-attributes { 1215 description "Port attributes"; 1216 leaf port-ref { 1217 type fabrictypes:tp-ref; 1218 description "The port it refers to."; 1219 } 1220 leaf port-type { 1221 type fabrictypes:port-type; 1222 description 1223 "Port type: ethernet or serial or others"; 1224 } 1225 leaf bandwidth { 1226 type fabrictypes:bandwidth; 1227 description "Bandwidth of the port"; 1229 } 1230 } 1232 grouping fabric-attributes { 1233 description "Attributes of a fabric"; 1234 leaf fabric-id { 1235 type fabric:fabric-id; 1236 description "Fabric id"; 1237 } 1238 leaf name { 1239 type string; 1240 description "Name of the fabric"; 1241 } 1242 leaf type { 1243 type fabrictypes:underlay-network-type; 1244 description 1245 "The type of physical network that implements this 1246 fabric.Examples are vlan, and trill."; 1247 } 1248 container vni-capacity { 1249 description "Number of vnis the fabric has"; 1250 leaf min { 1251 type int32; 1252 description "Vni min capacity"; 1253 } 1254 leaf max { 1255 type int32; 1256 description "Vni max capacity"; 1257 } 1258 } 1259 leaf description { 1260 type string; 1261 description "Description of the fabric"; 1262 } 1263 container options { 1264 description "Options of the fabric"; 1265 uses fabric-options; 1266 } 1267 list device-nodes { 1268 key device-ref; 1269 description "Device nodes that include in a fabric."; 1270 uses device-attributes; 1271 } 1272 list device-links { 1273 key link-ref; 1274 description "Links that are included within the fabric."; 1275 uses link-attributes; 1276 } 1277 list device-ports { 1278 key port-ref; 1279 description "Ports that are included within the fabric."; 1280 uses port-attributes; 1281 } 1282 } 1284 // augment statements 1286 augment "/nws:networks/nws:network/nws:network-types" { 1287 description 1288 "Introduce new network type for Fabric-based logical topology"; 1289 uses fabric-network-type; 1290 } 1292 augment "/nws:networks/nws:network/nws:node" { 1293 when "/nws:networks/nws:network/nws:network-types/sfabric:fabric-network" { 1294 description "Augmentation parameters apply only for networks with 1295 fabric topology."; 1296 } 1297 description "Augmentation for fabric nodes."; 1298 container fabric-attributes-state { 1299 description 1300 "Attributes for a fabric network"; 1301 uses fabric-attributes; 1302 } 1303 } 1304 } 1305 1307 Authors' Addresses 1309 Yan Zhuang 1310 Huawei 1311 101 Software Avenue, Yuhua District 1312 Nanjing, Jiangsu 210012 1313 China 1315 Email: zhuangyan.zhuang@huawei.com 1317 Danian Shi 1318 Huawei 1319 101 Software Avenue, Yuhua District 1320 Nanjing, Jiangsu 210012 1321 China 1323 Email: shidanian@huawei.com 1324 Rong Gu 1325 China Mobile 1326 32 Xuanwumen West Ave, Xicheng District 1327 Beijing, Beijing 100053 1328 China 1330 Email: gurong_cmcc@outlook.com 1332 Hariharan Ananthakrishnan 1333 Packet Design 1335 Email: hari@packetdesign.com