idnits 2.17.1 draft-ietf-i2rs-yang-dc-fabric-network-topology-05.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 18 instances of too long lines in the document, the longest one being 30 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 255 has weird spacing: '...ice-ref fab...' == Line 258 has weird spacing: '...ink-ref fab...' == Line 1294 has weird spacing: '...hin the fabri...' -- The document date (February 11, 2018) is 2265 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) -- Looks like a reference, but probably isn't: '6020' on line 96 -- Looks like a reference, but probably isn't: '7950' on line 96 == Missing Reference: 'I-D.ietf-i2rs-yang-network-topo' is mentioned on line 111, but not defined == Missing Reference: 'RFC3688' is mentioned on line 885, but not defined == Unused Reference: 'I-D.draft-ietf-i2rs-yang-l3-topology' is defined on line 960, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-i2rs-yang-network-topo' is defined on line 966, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-netmod-revised-datastores-06' is defined on line 972, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-nvo3-geneve' is defined on line 978, but no explicit reference was found in the text == Unused Reference: 'RFC6991' is defined on line 1008, but no explicit reference was found in the text == Unused Reference: 'RFC7348' is defined on line 1011, but no explicit reference was found in the text == Unused Reference: 'RFC7950' is defined on line 1018, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-i2rs-usecase-reqs-summary' is defined on line 1027, but no explicit reference was found in the text == Outdated reference: A later version (-16) exists of draft-ietf-i2rs-yang-l3-topology-04 == Outdated reference: A later version (-20) exists of draft-ietf-i2rs-yang-network-topo-06 == Outdated reference: A later version (-10) exists of draft-ietf-netmod-revised-datastores-06 == Outdated reference: A later version (-20) exists of draft-ietf-i2rs-yang-network-topo-02 -- Duplicate reference: draft-ietf-i2rs-yang-network-topo, mentioned in 'I-D.draft-ietf-nvo3-geneve', was also mentioned in 'I-D.draft-ietf-i2rs-yang-network-topo'. ** 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 Summary: 4 errors (**), 0 flaws (~~), 18 warnings (==), 4 comments (--). 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: August 15, 2018 R. Gu 6 China Mobile 7 H. Ananthakrishnan 8 Packet Design 9 February 11, 2018 11 A YANG Data Model for Fabric Topology in Data Center Networks 12 draft-ietf-i2rs-yang-dc-fabric-network-topology-05 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 August 15, 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 . . . . . . . . . . . . . . 23 70 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 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 [6020][7950] for fabric-based data center topology. To do 97 so, it augments the generic network and network topology data models 98 defined in [I-D.ietf-i2rs-yang-network-topo] with information that is 99 specific to Data 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 [I-D.ietf- 109 i2rs-yang-network-topo] and [I.D. draft-ietf-i2rs-usecase-reqs- 110 summary], this model can also be treated as an application of the 111 I2RS network topology model [I-D.ietf-i2rs-yang-network-topo] in the 112 scenario of Data center network management. It can also act as a 113 service topology when mapping network elements at the fabric layer to 114 elements of other topologies, such as L3 topologies as defined in 115 [I.D. draft-ietf-i2rs-yang-l3-topology]. 117 By using the fabric topology model defined in this document, people 118 can treat a fabric as a holistic entity and focus on characteristics 119 of a fabric (such as encapsulation type, gateway type, etc.) as well 120 as its connections to other fabrics while putting the underlay 121 topology aside. As such, clients can consume the topology 122 information at the fabric level with no need to be aware of the 123 entire set of links and nodes in the corresponding underlay networks. 124 A fabric topology can be configured by a network administrator using 125 the controller by adding physical devices and links into a fabric. 126 Alternatively, fabric topology can be learned from the underlay 127 network infrastructure. 129 2. Definitions an Acronyms 131 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 132 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 133 document are to be interpreted as described in [RFC2119]. In this 134 document, these words will appear with that interpretation only when 135 in ALL CAPS. Lower case uses of these words are not to be 136 interpreted as carrying RFC-2119 significance. 138 2.1. Terminology 140 Fabric: also known as a POD, is a module of network, compute, 141 storage, and application components that work together to deliver 142 networking services. It represents a repeatable design pattern. Its 143 components maximize the modularity, scalability, and manageability of 144 data centers. 146 3. Model Overview 148 This section provides an overview of the data center fabric topology 149 model and its relationship with other topology models. 151 3.1. Topology Model structure 153 The relationship of the DC fabric topology model and other topology 154 models is shown in the following figure. 156 +------------------------+ 157 | network model | 158 +------------------------+ 159 | 160 | 161 +------------V-----------+ 162 | network topology model | 163 +------------------------+ 164 | 165 +-----------+-----+------+-------------+ 166 | | | | 167 +---V----+ +---V----+ +---V----+ +----V---+ 168 | L1 | | L2 | | L3 | | Fabric | 169 |topology| |topology| |topology| |topology| 170 | model | | model | | model | | model | 171 +--------+ +--------+ +--------+ +--------+ 172 Figure 1: The network data model structure 174 From the perspective of resource management and service provisioning 175 for a data center network, the fabric topology model augments the 176 basic network topology model with definitions and features specific 177 to a DC fabric, to provide common configuration and operations for 178 heterogeneous fabrics. 180 3.2. Fabric Topology Model 182 The fabric topology model module is designed to be generic and can be 183 applied to data center fabrics built with different technologies, 184 such as VLAN, VXLAN etc. The main purpose of this module is to 185 configure and manage fabrics and their connections. It provides a 186 fabric-based topology view for data center applications. 188 3.2.1. Fabric Topology 190 In the fabric topology module, a fabric is modeled as a node of a 191 network, as such the fabric-based data center network consists of a 192 set of fabric nodes and their connections. The following depicts a 193 snippet of the definitions to show the main structure of the model. 194 The notation syntax follows [I-D.draft-ietf-netmod-yang-tree- 195 diagrams]. 197 module: ietf-fabric-topology 198 augment /nw:networks/nw:network/nw:network-types: 199 +--rw fabric-network! 200 augment /nw:networks/nw:network/nw:node: 201 +--rw fabric-attributes 202 +--rw fabric-id? fabric-id 203 +--rw name? string 204 +--rw type? fabrictype:underlay-network-type 205 +--rw description? string 206 +--rw options 207 +--... 208 augment /nw:networks/nw:network/nw:node/nt:termination-point: 209 +--ro fport-attributes 210 +--ro name? string 211 +--ro role? fabric-port-role 212 +--ro type? fabric-port-type 214 The fabric topology module augments the generic ietf-network and 215 ietf-network-topology modules as follows: 217 o A new topology type "ietf-fabric-topology" is introduced and added 218 under the "network-types" container of the ietf-network module. 220 o Fabric is defined as a node under the network/node container. A 221 new container "fabric-attributes" is defined to carry attributes 222 for a fabric such as gateway mode, fabric types, involved device 223 nodes, and links. 225 o Termination points (in network topology module) are augmented with 226 fabric port attributes defined in a container. The "termination- 227 point" here is used to represent a fabric "port" that provides 228 connections to other nodes, such as an internal device, another 229 fabric externally, or end hosts. 231 Details of the fabric node and the fabric termination point extension 232 will be explained in the following sections. 234 3.2.2. Fabric node extension 236 As an atomic network, a fabric itself is composed of a set of network 237 elements i.e. devices, and related links. The configuration of a 238 fabric is contained under the "fabric-attributes" container depicted 239 as follows. The notation syntax follows [I-D.draft-ietf-netmod-yang- 240 tree-diagrams]. 242 +--rw fabric-attributes 243 +--rw fabric-id? fabric-id 244 +--rw name? string 245 +--rw type? fabrictype:underlay-network-type 246 +--rw vni-capacity 247 | +--rw min? int32 248 | +--rw max? int32 249 +--rw description? string 250 +--rw options 251 | +--rw gateway-mode? enumeration 252 | +--rw traffic-behavior? enumeration 253 | +--rw capability-supported* fabrictype:service-capabilities 254 +--rw device-nodes* [device-ref] 255 | +--rw device-ref fabrictype:node-ref 256 | +--rw role*? fabrictype:device-role 257 +--rw device-links* [link-ref] 258 | +--rw link-ref fabrictype:link-ref 259 +--rw device-ports* [port-ref] 260 +--rw port-ref fabrictype:tp-ref 261 +--rw port-type? fabrictypes:port-type 262 +--rw bandwidth? fabrictypes:bandwidth 264 In the module, additional data objects for fabric nodes are 265 introduced by augmenting the "node" list of the network module. New 266 objects include fabric name, type of the fabric, descriptions of the 267 fabric as well as a set of options defined in an "options" container. 268 The "options" container includes the gateway-mode type (centralized 269 or distributed) and traffic-behavior (whether an Access Control Lists 270 (ACLs) is needed for the traffic). Also, it includes a list of 271 device-nodes and related links as supporting-nodes to form a fabric 272 network. These device nodes and links are represented as leaf-refs 273 of existing nodes and links in the underlay topology. For the 274 device-node, the "role" object is defined to represent the role of a 275 device within the fabric, such as "SPINE" or "LEAF", which should 276 work together with the gateway-mode. 278 3.2.3. Fabric termination-point extension 280 Since a fabric can be considered as a node, "termination-points" can 281 represent fabric "ports" that connect to other fabrics, end hosts, as 282 well as devices inside the fabric. 284 As such, the set of "termination-points" of a fabric indicate all 285 connections of the fabric, including its internal connections, 286 interconnections with other fabrics, and connections to end hosts. 288 The structure of fabric ports is as follows. The notation syntax 289 follows [I-D.draft-ietf-netmod-yang-tree-diagrams]. 291 The structure of fabric ports is as follows: 293 augment /nw:networks/nw:network/nw:node/nt:termination-point: 294 +--ro fport-attributes 295 +--ro name? string 296 +--ro role? fabric-port-role 297 +--ro type? fabric-port-type 298 +--ro device-port? tp-ref 299 +--ro (tunnel-option)? 301 It augments the termination points (in network topology module) with 302 fabric port attributes defined in a container. 304 New nodes are defined for fabric ports including fabric name, role of 305 the port within the fabric (internal port, external port to outside 306 network, access port to end hosts), port type (l2 interface, l3 307 interface, etc). By defining the device-port as a tp-ref, a fabric 308 port can be mapped to a device node in the underlay network. 310 Also, a new container for tunnel-options is introduced to present the 311 tunnel configuration on a port. 313 The termination point information is learned from the underlay 314 networks, not configured by the fabric topology layer. 316 4. Fabric YANG Module 318 file "ietf-dc-fabric-types@2017-12-21.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; 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) 2016 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 (http://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 } 371 identity vxlan-fabric { 372 base fabric-type; 373 description "Vxlan fabric"; 374 } 376 identity vlan-fabric { 377 base fabric-type; 378 description 379 "Vlan fabric"; 380 } 382 identity trill-fabric { 383 base fabric-type; 384 description "Trill fabric"; 385 } 386 identity port-type { 387 description 388 "Base type for fabric port"; 389 } 390 identity eth { 391 base port-type; 392 description "ETH"; 393 } 394 identity serial { 395 base port-type; 396 description "Serial"; 397 } 399 identity bandwidth { 400 description "Base for bandwidth"; 401 } 402 identity bw-1M { 403 base bandwidth; 404 description "1M"; 405 } 406 identity bw-10M { 407 base bandwidth; 408 description "10M"; 409 } 410 identity bw-100M { 411 base bandwidth; 412 description "100M"; 413 } 414 identity bw-1G { 415 base bandwidth; 416 description "1G"; 417 } 418 identity bw-10G { 419 base bandwidth; 420 description "10G"; 421 } 422 identity bw-40G { 423 base bandwidth; 424 description "40G"; 425 } 426 identity bw-100G{ 427 base bandwidth; 428 description "100G"; 429 } 431 identity device-role { 432 description "Base for the device role in a fabric."; 433 } 434 identity spine { 435 base device-role; 436 description "This is a spine node in a fabric."; 437 } 438 identity leaf { 439 base device-role; 440 description "This is a leaf node in a fabric. "; 441 } 442 identity border { 443 base device-role; 444 description "This is a border node to connect to 445 other fabric/network."; 446 } 447 identity fabric-port-role { 448 description "Base for the port's role in a fabric."; 449 } 450 identity internal { 451 base fabric-port-role; 452 description "The port is used for devices to access 453 each other within a fabric."; 454 } 455 identity external { 456 base fabric-port-role; 457 description "The port is used for a fabric to connect 458 to outside network."; 459 } 460 identity access { 461 base fabric-port-role; 462 description "The port is used for an endpoint to 463 connect to a fabric."; 464 } 466 /* 467 * Typedefs 468 */ 469 typedef service-capabilities { 470 type enumeration { 471 enum ip-mapping { 472 description "NAT"; 473 } 474 enum acl-redirect{ 475 description "Acl redirect, which can provide 476 SFC function"; 477 } 478 enum dynamic-route-exchange{ 479 description "Dynamic route exchange"; 480 } 481 } 482 description 483 "Capability of the device"; 484 } 486 typedef port-type { 487 type identityref { 488 base port-type; 489 } 490 description "Port type: ethernet or serial or others."; 491 } 492 typedef bandwidth { 493 type identityref { 494 base bandwidth; 495 } 496 description "Bandwidth of the port."; 497 } 498 typedef node-ref { 499 type instance-identifier; 500 description "A reference to a node in topology"; 501 } 503 typedef tp-ref { 504 type instance-identifier; 505 description "A reference to a termination point in topology"; 506 } 508 typedef link-ref { 509 type instance-identifier; 510 description "A reference to a link in topology"; 511 } 513 typedef underlay-network-type { 514 type identityref { 515 base fabric-type; 516 } 517 description "The type of physical network that implements this 518 fabric.Examples are vlan, and trill."; 519 } 520 typedef device-role { 521 type identityref { 522 base device-role; 523 } 524 description "Role of the device node."; 525 } 526 typedef fabric-port-role { 527 type identityref { 528 base fabric-port-role; 529 } 530 description "Role of the port in a fabric."; 531 } 533 typedef fabric-port-type { 534 type enumeration { 535 enum layer2interface { 536 description "L2 interface"; 537 } 538 enum layer3interface { 539 description "L3 interface"; 540 } 541 enum layer2Tunnel { 542 description "L2 tunnel"; 543 } 544 enum layer3Tunnel { 545 description "L3 tunnel"; 546 } 547 } 548 description 549 "Fabric port type"; 550 } 552 grouping fabric-port { 553 description 554 "Attributes of a fabric port."; 555 leaf name { 556 type string; 557 description "Name of the port."; 558 } 559 leaf role { 560 type fabric-port-role; 561 description "Role of the port in a fabric."; 562 } 563 leaf type { 564 type fabric-port-type; 565 description "Type of the port"; 566 } 567 leaf device-port { 568 type tp-ref; 569 description "The device port it mapped to."; 570 } 571 choice tunnel-option { 572 description "Tunnel options to connect two fabrics. 573 It could be L2 Tunnel or L3 Tunnel."; 574 } 575 } 576 } 577 579 file "ietf-dc-fabric-topology@2018-02-11.yang" 580 module ietf-dc-fabric-topology { 582 yang-version 1.1; 583 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology"; 584 prefix fabric; 586 import ietf-network { 587 prefix nw; 589 reference 590 "draft-ietf-i2rs-yang-network-topo-20 591 NOTE TO RFC EDITOR: 592 (1) Please replace above reference to 593 draft-ietf-i2rs-yang-network-topo-20 with RFC 594 number when published (i.e. RFC xxxx). 595 (2) Please replace the date in the revision statement with the 596 date of publication when published."; 597 } 599 import ietf-network-topology { 600 prefix nt; 602 reference 603 "draft-ietf-i2rs-yang-network-topo-20 604 NOTE TO RFC EDITOR: 605 (1) Please replace above reference to 606 draft-ietf-i2rs-yang-network-topo-20 with RFC 607 number when published (i.e. RFC xxxx). 608 (2) Please replace the date in the revision statement with the 609 date of publication when published."; 610 } 611 import ietf-dc-fabric-types { 612 prefix fabrictypes; 614 reference 615 "draft-ietf-i2rs-yang-dc-fabric-network-topology-03 616 NOTE TO RFC EDITOR: 617 (1) Please replace above reference to draft-ietf-i2rs-yang-dc 618 -fabric-network-topology-03 with RFC number when publised 619 (i.e. RFC xxxx). 620 (2) Please replace the data in the revision statement with the 621 data of publication when published."; 622 } 624 organization 625 "IETF I2RS (Interface to the Routing System) Working Group"; 627 contact 628 "WG Web: 629 WG List: 631 Editor: Yan Zhuang 632 634 Editor: Danian Shi 635 "; 637 description 638 "This module contains a collection of YANG definitions for Fabric. 640 Copyright (c) 2016 IETF Trust and the persons identified as 641 authors of the code. All rights reserved. 643 Redistribution and use in source and binary forms, with or 644 without modification, is permitted pursuant to, and subject 645 to the license terms contained in, the Simplified BSD License 646 set forth in Section 4.c of the IETF Trust's Legal Provisions 647 Relating to IETF Documents 648 (http://trustee.ietf.org/license-info). 650 This version of this YANG module is part of 651 draft-ietf-i2rs-yang-dc-fabric-network-topology;see the RFC 652 itself for full legal notices. 654 NOTE TO RFC EDITOR: Please replace above reference to 655 draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC 656 number when published (i.e. RFC xxxx)."; 657 revision "2018-02-11"{ 658 description 659 "Initial revision. 660 NOTE TO RFC EDITOR: Please replace the following reference 661 to draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with 662 RFC number when published (i.e. RFC xxxx)."; 663 reference 664 "draft-ietf-i2rs-yang-dc-fabric-network-topology-05"; 665 } 667 identity fabric-context { 668 description 669 "Identity of fabric context"; 670 } 672 typedef fabric-id { 673 type nw:node-id; 674 description 675 "An identifier for a fabric in a topology. 676 The identifier is generated by compose-fabric RPC."; 677 } 679 //grouping statements 680 grouping fabric-network-type { 681 description "Identify the topology type to be fabric."; 682 container fabric-network { 683 presence "indicates fabric Network"; 684 description 685 "The presence of the container node indicates fabric topology"; 686 } 687 } 689 grouping fabric-options { 690 description "Options for a fabric"; 692 leaf gateway-mode { 693 type enumeration { 694 enum centralized { 695 description "The Fabric uses centerilized gateway, in 696 which gateway is deployed on SPINE node."; 697 } 698 enum distributed { 699 description "The Fabric uses distributed gateway, in 700 which gateway is deployed on LEAF node."; 701 } 702 } 703 default "distributed"; 704 description "Gateway mode of the fabric"; 706 } 708 leaf traffic-behavior { 709 type enumeration { 710 enum normal { 711 description "Normal, no policy is enforced."; 712 } 713 enum policy-driven { 714 description "Policy driven"; 715 } 716 } 717 default "normal"; 718 description "Traffic behavior of the fabric"; 719 } 721 leaf-list capability-supported { 722 type fabrictypes:service-capabilities; 723 description 724 "Supported services of the fabric"; 725 } 726 } 728 grouping device-attributes { 729 description "device attributes"; 730 leaf device-ref { 731 type fabrictypes:node-ref; 732 description 733 "The device the fabric includes."; 734 } 735 leaf-list role { 736 type fabrictypes:device-role; 737 default fabrictypes:leaf; 738 description 739 "Role of the device node"; 740 } 741 } 743 grouping link-attributes { 744 description "Link attributes"; 745 leaf link-ref { 746 type fabrictypes:link-ref; 747 description 748 "The link it includes"; 749 } 750 } 752 grouping port-attributes { 753 description "Port attributes"; 754 leaf port-ref { 755 type fabrictypes:tp-ref; 756 description 757 "The port it refers to."; 758 } 759 leaf port-type { 760 type fabrictypes:port-type; 761 description 762 "Port type: ethernet or serial or others."; 763 } 764 leaf bandwidth { 765 type fabrictypes:bandwidth; 766 description 767 "Bandwidth of the port."; 768 } 769 } 771 grouping fabric-attributes { 772 description "Attributes of a fabric"; 774 leaf fabric-id { 775 type fabric-id; 776 description 777 "Fabric id"; 778 } 780 leaf name { 781 type string; 782 description 783 "Name of the fabric"; 784 } 786 leaf type { 787 type fabrictypes:underlay-network-type; 788 description 789 "The type of physical network that implements this 790 fabric.Examples are vlan, and trill."; 791 } 793 container vni-capacity { 794 description "Number of vni(VXLAN Network Identifier, see [RFC7348])s that the fabric has"; 795 leaf min { 796 type int32; 797 description 798 "Vni min capacity"; 799 } 801 leaf max { 802 type int32; 803 description 804 "Vni max capacity"; 805 } 806 } 808 leaf description { 809 type string; 810 description 811 "Description of the fabric"; 812 } 814 container options { 815 description "Options of the fabric"; 816 uses fabric-options; 817 } 819 list device-nodes { 820 key device-ref; 821 description "Device nodes that include in a fabric."; 822 uses device-attributes; 823 } 825 list device-links { 826 key link-ref; 827 description "Links that include within a fabric."; 828 uses link-attributes; 829 } 831 list device-ports { 832 key port-ref; 833 description "Ports that include in the fabric."; 834 uses port-attributes; 835 } 837 } 839 // augment statements 841 augment "/nw:networks/nw:network/nw:network-types" { 842 description 843 "Introduce new network type for Fabric-based logical topology"; 845 uses fabric-network-type; 846 } 848 augment "/nw:networks/nw:network/nw:node" { 849 when "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" { 850 description 851 "Augmentation parameters apply only for networks 852 with fabric topology"; 853 } 854 description "Augmentation for fabric nodes created by fabric topology."; 856 container fabric-attributes { 857 description 858 "Attributes for a fabric network"; 860 uses fabric-attributes; 861 } 862 } 864 augment "/nw:networks/nw:network/nw:node/nt:termination-point" { 865 when "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" { 866 description 867 "Augmentation parameters apply only for networks 868 with fabric topology"; 869 } 870 description "Augmentation for port on fabric."; 872 container fport-attributes { 873 config false; 874 description 875 "Attributes for fabric ports"; 876 uses fabrictypes:fabric-port; 877 } 878 } 879 } 880 882 5. IANA Considerations 884 This document registers the following namespace URIs in the "IETF XML 885 Registry" [RFC3688]: 887 URI: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types Registrant 888 Contact: The IESG. XML: N/A; the requested URI is an XML namespace. 890 URI: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology Registrant 891 Contact: The IESG. XML: N/A; the requested URI is an XML namespace. 893 URI: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state 894 Registrant Contact: The IESG. XML: N/A; the requested URI is an XML 895 namespace. 897 This document registers the following YANG modules in the "YANG 898 Module Names" registry [RFC6020]: 900 NOTE TO THE RFC EDITOR: In the list below, please replace references 901 to "draft-ietf-i2rs-yang-dc-fabric-network-topology-03 (RFC form)" 902 with RFC number when published (i.e. RFC xxxx). 904 Name: ietf-dc-fabric-types Namespace: 905 urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types Prefix: fabrictypes 906 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-03.txt 907 (RFC form) 909 Name: ietf-dc-fabric-topology Namespace: 910 urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology Prefix: fabric 911 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-03.txt 912 (RFC form) 914 Name: ietf-dc-fabric-topology-state Namespace: 915 urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state Prefix: 916 sfabric Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology- 917 03.txt (RFC form) 919 6. Security Considerations 921 The YANG module defined in this document is designed to be accessed 922 via network management protocols such as NETCONF [RFC6241] or 923 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 924 layer, and the mandatory-to-implement secure transport is Secure 925 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 926 mandatory-to-implement secure transport is TLS [RFC5246]. 928 The NETCONF access control model [RFC6536] provides the means to 929 restrict access for particular NETCONF or RESTCONF users to a 930 preconfigured subset of all available NETCONF or RESTCONF protocol 931 operations and content. The subtrees and data nodes and their 932 sensitivity/vulnerability in the ietf-dc-fabric-topology module are 933 as follows: 935 fabric-attributes: A malicious client could attempt to sabotage the 936 configuration of important fabric attributes, such as device-nodes or 937 type. 939 Some of the readable data nodes in this YANG module may be considered 940 sensitive or vulnerable in some network environments. It is thus 941 important to control read access (e.g., via get, get-config, or 942 notification) to these data nodes. The subtrees and data nodes and 943 their sensitivity/vulnerability in the ietf-dc-fabric-topology module 944 are as follows: 946 fport-attributes: A malicious client could attempt to read the 947 connections of fabrics without permission, such as device-port, name. 949 7. Acknowledgements 951 We wish to acknowledge the helpful contributions, comments, and 952 suggestions that were received from Alexander Clemm, Donald E. 953 Eastlake, Xufeng Liu, Susan Hares, Wei Song, Luis M. Contreras and 954 Benoit Claise. 956 8. References 958 8.1. Normative References 960 [I-D.draft-ietf-i2rs-yang-l3-topology] 961 Clemm, A., Medved, J., Tkacik, T., Liu, X., Bryskin, I., 962 Guo, A., Ananthakrishnan, H., Bahadur, N., and V. Beeram, 963 "A YANG Data Model for Layer 3 Topologies", I-D draft- 964 ietf-i2rs-yang-l3-topology-04, September 2016. 966 [I-D.draft-ietf-i2rs-yang-network-topo] 967 Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., 968 and H. Ananthakrishnan, "A YANG Data Model for Network 969 Topologies", I-D draft-ietf-i2rs-yang-network-topo-06, 970 September 2016. 972 [I-D.draft-ietf-netmod-revised-datastores-06] 973 Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 974 and R. Wilton, "A Revised Conceptual Model for YANG 975 Datastores", I-D draft-ietf-netmod-revised-datastores-06, 976 October 2017. 978 [I-D.draft-ietf-nvo3-geneve] 979 Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic 980 Network Virtualization Encapsulation", I-D draft-ietf- 981 i2rs-yang-network-topo-02, September 2017. 983 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 984 Requirement Levels", BCP 14, RFC 2119, 985 DOI 10.17487/RFC2119, March 1997, 986 . 988 [RFC5246] Dierks, T. and E. Rescorla, "Transport Layer Security 989 (TLS) Protocol Version 1.2", August 2008, 990 . 992 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 993 Network Configuration Protocol (NETCONF)", RFC 6020, 994 October 2010. 996 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 997 Bierman, "Network Configuration Protocol (NETCONF)", June 998 2011, . 1000 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1001 Shell (SSH)", June 2011, 1002 . 1004 [RFC6536] Bierman, A. and B. Bjorklund, "Network Configuration 1005 Protocol (NETCONF) Access Control Model", March 2012, 1006 . 1008 [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, 1009 July 2013. 1011 [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, 1012 L., Sridhar, T., Bursell, M., and C. Wright, "Virtual 1013 eXtensible Local Area Network (VXLAN): A Framework for 1014 Overlaying Virtualized Layer 2 Networks over Layer 3 1015 Networks", August 2014, 1016 . 1018 [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", 1019 RFC 7950, DOI 10.17487/RFC7950, Auguest 2016. 1021 [RFC8040] Bierman, A., Bjorklund, B., and K. Watsen, "RESTCONF 1022 Protocol", Jan 2017, 1023 . 1025 8.2. Informative References 1027 [I-D.draft-ietf-i2rs-usecase-reqs-summary] 1028 Hares, S. and M. Chen, "Summary of I2RS Use Case 1029 Requirements", I-D draft-ietf-netmod-yang-tree-diagrams, 1030 May 2015. 1032 [I-D.draft-ietf-netmod-yang-tree-diagrams] 1033 Bjorklund, M. and L. Berger, "YANG Tree Diagrams", I-D 1034 draft-ietf-netmod-yang-tree-diagrams, October 2017. 1036 Appendix A. Non NMDA -state modules 1038 The YANG module ietf-fabric-toplogy defined in this document augments 1039 two modules, ietf-network and ietf-network-topology, that are 1040 designed to be used in conjunction with implementations that support 1041 the Network Management Datastore Architecture (NMDA) defined in [I- 1042 D.draft-ietf-netmod-revised-datastores]. In order to allow 1043 implementations to use the model even in case when NMDA is not 1044 supported, a set of companion modules have been defined that 1045 represent a state model of networks and network topologies, ietf- 1046 network-state and ietf-network-topology-state, respectively. 1048 In order to be able to use the model for fabric topologies defined in 1049 this in this document in conjunction with non-NMDA compliant 1050 implementations, a corresponding companion module needs to be 1051 introduced as well. This companion module, ietf-fabric-topology- 1052 state, mirrors ietf-fabric-topology. However, the module augments 1053 ietf-network-state (instead of ietf-network and ietf-network- 1054 topology) and all of its data nodes are non-configurable. 1056 Like ietf-network-state and ietf-network-topology-state, ietf-fabric- 1057 topology-state SHOULD NOT be supported by implementations that 1058 support NMDA. It is for this reason that the module is defined in 1059 the Appendix. 1061 The definition of the module follows below. As the structure of the 1062 module mirrors that of its underlying module, the YANG tree is not 1063 depicted separately. 1065 file "ietf-dc-fabric-topology-state@2018-02-11.yang" 1066 module ietf-dc-fabric-topology-state { 1068 yang-version 1.1; 1069 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state"; 1070 prefix sfabric; 1072 import ietf-network-state { 1073 prefix nws; 1074 reference 1075 "draft-ietf-i2rs-yang-network-topo-20 1076 NOTE TO RFC EDITOR: 1077 (1) Please replace above reference to 1078 draft-ietf-i2rs-yang-network-topo-20 with RFC 1079 number when published (i.e. RFC xxxx). 1080 (2) Please replace the date in the revision statement with the 1081 date of publication when published."; 1082 } 1083 import ietf-dc-fabric-types { 1084 prefix fabrictypes; 1086 reference 1087 "draft-ietf-i2rs-yang-dc-fabric-network-topology-03 1088 NOTE TO RFC EDITOR: 1089 (1) Please replace above reference to draft-ietf-i2rs-yang-dc 1090 -fabric-network-topology-03 with RFC number when published 1091 (i.e. RFC xxxx). 1092 (2) Please replace the data in the revision statement with the 1093 data of publication when published."; 1094 } 1095 import ietf-dc-fabric-topology { 1096 prefix fabric; 1098 reference 1099 "draft-ietf-i2rs-yang-dc-fabric-network-topology-03 1100 NOTE TO RFC EDITOR: 1101 (1) Please replace above reference to draft-ietf-i2rs-yang-dc 1102 -fabric-network-topology-03 with RFC number when published 1103 (i.e. RFC xxxx). 1104 (2) Please replace the data in the revision statement with the 1105 data of publication when published."; 1106 } 1108 organization 1109 "IETF I2RS (Interface to the Routing System) Working Group"; 1111 contact 1112 "WG Web: 1113 WG List: 1115 Editor: Yan Zhuang 1116 1118 Editor: Danian Shi 1119 "; 1121 description 1122 "This module contains a collection of YANG definitions 1123 for Fabric state, representing topology that is either 1124 learned, or topology that results from applying toplogy 1125 that has been configured per the ietf-dc-fabric-topology 1126 model, mirroring the corresponding data nodes in this model. 1128 This model mirrors the configuration tree of 1129 ietf-dc-fabric-topology, but contains only read-only state 1130 data. The model is not needed when the implemtation 1131 infrastructure supports the Network Management Datastore 1132 Architecture(NMDA). 1134 Copyright (c) 2016 IETF Trust and the persons identified 1135 as authors of the code. All rights reserved. 1137 Redistribution and use in source and binary forms, with or 1138 without modification, is permitted pursuant to, and subject 1139 to the license terms contained in, the Simplified BSD License 1140 set forth in Section 4.c of the IETF Trust's Legal Provisions 1141 Relating to IETF Documents(http://trustee.ietf.org/license-info). 1143 This version of this YANG module is part of 1144 draft-ietf-i2rs-yang-dc-fabric-network-topology;see the RFC 1145 itself for full legal notices. 1147 NOTE TO RFC EDITOR: Please replace above reference to 1148 draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC number 1149 when published (i.e. RFC xxxx)."; 1151 revision "2018-02-11" { 1152 description 1153 "Initial revision. 1154 NOTE TO RFC EDITOR: Please replace the following reference to 1155 draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC 1156 number when published (i.e. RFC xxxx)."; 1157 reference 1158 "draft-ietf-i2rs-yang-dc-fabric-network-topology-05"; 1159 } 1161 //grouping statements 1162 grouping fabric-network-type { 1163 description "Identify the topology type to be fabric."; 1164 container fabric-network { 1165 presence "indicates fabric Network"; 1166 description 1167 "The presence of the container node indicates fabric Topology"; 1168 } 1169 } 1171 grouping fabric-options { 1172 description "Options for a fabric"; 1173 leaf gateway-mode { 1174 type enumeration { 1175 enum centralized { 1176 description "The Fabric uses centerilized gateway, in which 1177 gateway is deployed on SPINE node."; 1178 } 1179 enum distributed { 1180 description "The Fabric uses distributed gateway, in which 1181 gateway is deployed on LEAF node."; 1182 } 1183 } 1184 default "distributed"; 1185 description "Gateway mode of the fabric"; 1186 } 1188 leaf traffic-behavior { 1189 type enumeration { 1190 enum normal { 1191 description "Normal"; 1192 } 1193 enum policy-driven { 1194 description "Policy driven"; 1195 } 1196 } 1197 default "normal"; 1198 description "Traffic behavior of the fabric"; 1199 } 1201 leaf-list capability-supported { 1202 type fabrictypes:service-capabilities; 1203 description 1204 "Supported services of the fabric"; 1205 } 1206 } 1208 grouping device-attributes { 1209 description "device attributes"; 1210 leaf device-ref { 1211 type fabrictypes:node-ref; 1212 description "The device the fabric includes."; 1213 } 1214 leaf-list role { 1215 type fabrictypes:device-role; 1216 default fabrictypes:leaf; 1217 description "Role of the node"; 1218 } 1219 } 1221 grouping link-attributes { 1222 description "Link attributes"; 1223 leaf link-ref { 1224 type fabrictypes:link-ref; 1225 description "The link it includes"; 1226 } 1228 } 1230 grouping port-attributes { 1231 description "Port attributes"; 1232 leaf port-ref { 1233 type fabrictypes:tp-ref; 1234 description "The port it refers to."; 1235 } 1236 leaf port-type { 1237 type fabrictypes:port-type; 1238 description 1239 "Port type: ethernet or serial or others"; 1240 } 1241 leaf bandwidth { 1242 type fabrictypes:bandwidth; 1243 description "Bandwidth of the port"; 1244 } 1245 } 1247 grouping fabric-attributes { 1248 description "Attributes of a fabric"; 1249 leaf fabric-id { 1250 type fabric:fabric-id; 1251 description "Fabric id"; 1252 } 1253 leaf name { 1254 type string; 1255 description "Name of the fabric"; 1256 } 1257 leaf type { 1258 type fabrictypes:underlay-network-type; 1259 description 1260 "The type of physical network that implements this 1261 fabric.Examples are vlan, and trill."; 1262 } 1263 container vni-capacity { 1264 description "Number of vnis the fabric has"; 1265 leaf min { 1266 type int32; 1267 description "Vni min capacity"; 1268 } 1269 leaf max { 1270 type int32; 1271 description "Vni max capacity"; 1272 } 1273 } 1274 leaf description { 1275 type string; 1276 description "Description of the fabric"; 1277 } 1278 container options { 1279 description "Options of the fabric"; 1280 uses fabric-options; 1281 } 1282 list device-nodes { 1283 key device-ref; 1284 description "Device nodes that include in a fabric."; 1285 uses device-attributes; 1286 } 1287 list device-links { 1288 key link-ref; 1289 description "Links that are included within the fabric."; 1290 uses link-attributes; 1291 } 1292 list device-ports { 1293 key port-ref; 1294 description "Ports that are included within the fabric."; 1295 uses port-attributes; 1296 } 1297 } 1299 // augment statements 1301 augment "/nws:networks/nws:network/nws:network-types" { 1302 description 1303 "Introduce new network type for Fabric-based logical topology"; 1304 uses fabric-network-type; 1305 } 1307 augment "/nws:networks/nws:network/nws:node" { 1308 when "/nws:networks/nws:network/nws:network-types/sfabric:fabric-network" { 1309 description "Augmentation parameters apply only for networks with 1310 fabric topology."; 1311 } 1312 description "Augmentation for fabric nodes."; 1313 container fabric-attributes-state { 1314 description 1315 "Attributes for a fabric network"; 1316 uses fabric-attributes; 1317 } 1318 } 1319 } 1320 1321 Authors' Addresses 1323 Yan Zhuang 1324 Huawei 1325 101 Software Avenue, Yuhua District 1326 Nanjing, Jiangsu 210012 1327 China 1329 Email: zhuangyan.zhuang@huawei.com 1331 Danian Shi 1332 Huawei 1333 101 Software Avenue, Yuhua District 1334 Nanjing, Jiangsu 210012 1335 China 1337 Email: shidanian@huawei.com 1339 Rong Gu 1340 China Mobile 1341 32 Xuanwumen West Ave, Xicheng District 1342 Beijing, Beijing 100053 1343 China 1345 Email: gurong_cmcc@outlook.com 1347 Hariharan Ananthakrishnan 1348 Packet Design 1350 Email: hari@packetdesign.com