idnits 2.17.1 draft-ietf-i2rs-yang-dc-fabric-network-topology-07.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 36 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 1308 has weird spacing: '...hin the fabri...' -- The document date (March 18, 2018) is 2229 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 895, but not defined == Unused Reference: 'I-D.draft-ietf-i2rs-yang-l3-topology' is defined on line 970, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-i2rs-yang-network-topo' is defined on line 976, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-netmod-revised-datastores-06' is defined on line 982, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-netmod-rfc7277bis' is defined on line 988, but no explicit reference was found in the text == Unused Reference: 'RFC6991' is defined on line 1017, but no explicit reference was found in the text == Unused Reference: 'RFC7950' is defined on line 1027, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-i2rs-usecase-reqs-summary' is defined on line 1036, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-nvo3-geneve' is defined on line 1045, 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 ** 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-05 Summary: 4 errors (**), 0 flaws (~~), 18 warnings (==), 3 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: September 19, 2018 R. Gu 6 China Mobile 7 H. Ananthakrishnan 8 Packet Design 9 March 18, 2018 11 A YANG Data Model for Fabric Topology in Data Center Networks 12 draft-ietf-i2rs-yang-dc-fabric-network-topology-07 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 19, 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 This module imports typedefs from [ietf-i2rs-yang-network-topo], and 319 it references [RFC7348] and [draft-ietf-netmod-rfc7277bis]. 321 NOTE TO RFC EDITOR: (1) Please replace above reference to draft-ietf- 322 i2rs-yang-network-topo-20 and [draft-ietf-netmod-rfc7277bis] with RFC 323 numbers when published (i.e. RFC xxxx). (2) Please replace the date 324 in the revision statement with the date of publication when 325 published." 327 file "ietf-dc-fabric-types@2017-12-21.yang" 328 module ietf-dc-fabric-types { 330 yang-version 1.1; 331 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types"; 332 prefix fabrictypes; 334 organization 335 "IETF I2RS (Interface to the Routing System) Working Group"; 337 contact 338 "WG Web: 339 WG List: 341 Editor: Yan Zhuang 342 344 Editor: Danian Shi 345 "; 347 description 348 "This module contains a collection of YANG definitions for Fabric. 349 Copyright (c) 2016 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 (http://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-03 with RFC 365 number when published (i.e. RFC xxxx)."; 367 revision "2017-12-21"{ 368 description 369 "Initial revision. 370 NOTE TO RFC EDITOR: Please replace the following reference to 371 draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC 372 number when published (i.e. RFC xxxx)."; 373 reference 374 "draft-ietf-i2rs-yang-dc-fabric-network-topology-03"; 375 } 377 identity fabric-type { 378 description 379 "Base type for fabric networks"; 380 } 382 identity vxlan-fabric { 383 base fabric-type; 384 description "Vxlan fabric"; 385 } 387 identity vlan-fabric { 388 base fabric-type; 389 description 390 "Vlan fabric"; 391 } 393 identity trill-fabric { 394 base fabric-type; 395 description "Trill fabric"; 396 } 397 identity port-type { 398 description 399 "Base type for fabric port"; 400 } 401 identity eth { 402 base port-type; 403 description "ETH"; 404 } 405 identity serial { 406 base port-type; 407 description "Serial"; 408 } 410 identity bandwidth { 411 description "Base for bandwidth"; 412 } 413 identity bw-1M { 414 base bandwidth; 415 description "1M"; 416 } 417 identity bw-10M { 418 base bandwidth; 419 description "10M"; 420 } 421 identity bw-100M { 422 base bandwidth; 423 description "100M"; 424 } 425 identity bw-1G { 426 base bandwidth; 427 description "1G"; 428 } 429 identity bw-10G { 430 base bandwidth; 431 description "10G"; 432 } 433 identity bw-40G { 434 base bandwidth; 435 description "40G"; 436 } 437 identity bw-100G{ 438 base bandwidth; 439 description "100G"; 440 } 442 identity device-role { 443 description "Base for the device role in a fabric."; 444 } 445 identity spine { 446 base device-role; 447 description "This is a spine node in a fabric."; 448 } 449 identity leaf { 450 base device-role; 451 description "This is a leaf node in a fabric. "; 452 } 453 identity border { 454 base device-role; 455 description "This is a border node to connect to 456 other fabric/network."; 457 } 458 identity fabric-port-role { 459 description "Base for the port's role in a fabric."; 460 } 461 identity internal { 462 base fabric-port-role; 463 description "The port is used for devices to access 464 each other within a fabric."; 465 } 466 identity external { 467 base fabric-port-role; 468 description "The port is used for a fabric to connect 469 to outside network."; 470 } 471 identity access { 472 base fabric-port-role; 473 description "The port is used for an endpoint to 474 connect to a fabric."; 475 } 477 /* 478 * Typedefs 479 */ 480 typedef service-capabilities { 481 type enumeration { 482 enum ip-mapping { 483 description "NAT"; 484 } 485 enum acl-redirect{ 486 description "Acl redirect, which can provide 487 SFC function"; 488 } 489 enum dynamic-route-exchange{ 490 description "Dynamic route exchange"; 491 } 492 } 493 description 494 "Capability of the device"; 495 } 497 typedef port-type { 498 type identityref { 499 base port-type; 500 } 501 description "Port type: ethernet or serial or others."; 502 } 503 typedef bandwidth { 504 type identityref { 505 base bandwidth; 506 } 507 description "Bandwidth of the port."; 508 } 509 typedef node-ref { 510 type instance-identifier; 511 description "A reference to a node in topology"; 512 } 514 typedef tp-ref { 515 type instance-identifier; 516 description "A reference to a termination point in topology"; 517 } 519 typedef link-ref { 520 type instance-identifier; 521 description "A reference to a link in topology"; 522 } 524 typedef underlay-network-type { 525 type identityref { 526 base fabric-type; 527 } 528 description "The type of physical network that implements this 529 fabric.Examples are vlan, and trill."; 530 } 531 typedef device-role { 532 type identityref { 533 base device-role; 534 } 535 description "Role of the device node."; 536 } 537 typedef fabric-port-role { 538 type identityref { 539 base fabric-port-role; 540 } 541 description "Role of the port in a fabric."; 542 } 544 typedef fabric-port-type { 545 type enumeration { 546 enum layer2interface { 547 description "L2 interface"; 548 } 549 enum layer3interface { 550 description "L3 interface"; 551 } 552 enum layer2Tunnel { 553 description "L2 tunnel"; 554 } 555 enum layer3Tunnel { 556 description "L3 tunnel"; 557 } 558 } 559 description 560 "Fabric port type"; 561 } 562 grouping fabric-port { 563 description 564 "Attributes of a fabric port."; 565 leaf name { 566 type string; 567 description "Name of the port."; 568 } 569 leaf role { 570 type fabric-port-role; 571 description "Role of the port in a fabric."; 572 } 573 leaf type { 574 type fabric-port-type; 575 description "Type of the port"; 576 } 577 leaf device-port { 578 type tp-ref; 579 description "The device port it mapped to."; 580 } 581 choice tunnel-option { 582 description "Tunnel options to connect two fabrics. 583 It could be L2 Tunnel or L3 Tunnel."; 584 } 585 } 586 } 587 589 file "ietf-dc-fabric-topology@2018-02-11.yang" 590 module ietf-dc-fabric-topology { 592 yang-version 1.1; 593 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology"; 594 prefix fabric; 596 import ietf-network { 597 prefix nw; 599 reference 600 "draft-ietf-i2rs-yang-network-topo-20 601 NOTE TO RFC EDITOR: 602 (1) Please replace above reference to 603 draft-ietf-i2rs-yang-network-topo-20 with RFC 604 number when published (i.e. RFC xxxx). 605 (2) Please replace the date in the revision statement with the 606 date of publication when published."; 607 } 609 import ietf-network-topology { 610 prefix nt; 612 reference 613 "draft-ietf-i2rs-yang-network-topo-20 614 NOTE TO RFC EDITOR: 615 (1) Please replace above reference to 616 draft-ietf-i2rs-yang-network-topo-20 with RFC 617 number when published (i.e. RFC xxxx). 618 (2) Please replace the date in the revision statement with the 619 date of publication when published."; 620 } 622 import ietf-dc-fabric-types { 623 prefix fabrictypes; 625 reference 626 "draft-ietf-i2rs-yang-dc-fabric-network-topology-03 627 NOTE TO RFC EDITOR: 628 (1) Please replace above reference to draft-ietf-i2rs-yang-dc 629 -fabric-network-topology-03 with RFC number when publised 630 (i.e. RFC xxxx). 631 (2) Please replace the data in the revision statement with the 632 data of publication when published."; 633 } 635 organization 636 "IETF I2RS (Interface to the Routing System) Working Group"; 638 contact 639 "WG Web: 640 WG List: 642 Editor: Yan Zhuang 643 645 Editor: Danian Shi 646 "; 648 description 649 "This module contains a collection of YANG definitions for Fabric. 651 Copyright (c) 2016 IETF Trust and the persons identified as 652 authors of the code. All rights reserved. 654 Redistribution and use in source and binary forms, with or 655 without modification, is permitted pursuant to, and subject 656 to the license terms contained in, the Simplified BSD License 657 set forth in Section 4.c of the IETF Trust's Legal Provisions 658 Relating to IETF Documents 659 (http://trustee.ietf.org/license-info). 661 This version of this YANG module is part of 662 draft-ietf-i2rs-yang-dc-fabric-network-topology;see the RFC 663 itself for full legal notices. 665 NOTE TO RFC EDITOR: Please replace above reference to 666 draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC 667 number when published (i.e. RFC xxxx)."; 669 revision "2018-02-11"{ 670 description 671 "Initial revision. 672 NOTE TO RFC EDITOR: Please replace the following reference 673 to draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with 674 RFC number when published (i.e. RFC xxxx)."; 675 reference 676 "draft-ietf-i2rs-yang-dc-fabric-network-topology-05"; 677 } 679 identity fabric-context { 680 description 681 "Identity of fabric context"; 682 } 684 typedef fabric-id { 685 type nw:node-id; 686 description 687 "An identifier for a fabric in a topology. 688 The identifier is generated by compose-fabric RPC."; 689 } 691 //grouping statements 692 grouping fabric-network-type { 693 description "Identify the topology type to be fabric."; 694 container fabric-network { 695 presence "indicates fabric Network"; 696 description 697 "The presence of the container node indicates fabric topology"; 698 } 699 } 701 grouping fabric-options { 702 description "Options for a fabric"; 704 leaf gateway-mode { 705 type enumeration { 706 enum centralized { 707 description "The Fabric uses centerilized gateway, in 708 which gateway is deployed on SPINE node."; 709 } 710 enum distributed { 711 description "The Fabric uses distributed gateway, in 712 which gateway is deployed on LEAF node."; 713 } 714 } 715 default "distributed"; 716 description "Gateway mode of the fabric"; 717 } 719 leaf traffic-behavior { 720 type enumeration { 721 enum normal { 722 description "Normal, no policy is enforced."; 723 } 724 enum policy-driven { 725 description "Policy driven"; 726 } 727 } 728 default "normal"; 729 description "Traffic behavior of the fabric"; 730 } 732 leaf-list capability-supported { 733 type fabrictypes:service-capabilities; 734 description 735 "Supported services of the fabric"; 736 } 737 } 739 grouping device-attributes { 740 description "device attributes"; 741 leaf device-ref { 742 type fabrictypes:node-ref; 743 description 744 "The device the fabric includes."; 745 } 746 leaf-list role { 747 type fabrictypes:device-role; 748 default fabrictypes:leaf; 749 description 750 "Role of the device node"; 751 } 752 } 753 grouping link-attributes { 754 description "Link attributes"; 755 leaf link-ref { 756 type fabrictypes:link-ref; 757 description 758 "The link it includes"; 759 } 760 } 762 grouping port-attributes { 763 description "Port attributes"; 764 leaf port-ref { 765 type fabrictypes:tp-ref; 766 description 767 "The port it refers to."; 768 } 769 leaf port-type { 770 type fabrictypes:port-type; 771 description 772 "Port type: ethernet or serial or others."; 773 } 774 leaf bandwidth { 775 type fabrictypes:bandwidth; 776 description 777 "Bandwidth of the port."; 778 } 779 } 781 grouping fabric-attributes { 782 description "Attributes of a fabric"; 784 leaf fabric-id { 785 type fabric-id; 786 description 787 "Fabric id"; 788 } 790 leaf name { 791 type string; 792 description 793 "Name of the fabric"; 794 } 796 leaf type { 797 type fabrictypes:underlay-network-type; 798 description 799 "The type of physical network that implements this 800 fabric.Examples are vlan, and trill."; 802 } 804 container vni-capacity { 805 description "Number of vni(VXLAN Network Identifier defined in RFC 7348)s that the fabric has."; 806 leaf min { 807 type int32; 808 description 809 "Vni min capacity"; 810 } 812 leaf max { 813 type int32; 814 description 815 "Vni max capacity"; 816 } 817 } 819 leaf description { 820 type string; 821 description 822 "Description of the fabric"; 823 } 825 container options { 826 description "Options of the fabric"; 827 uses fabric-options; 828 } 830 list device-nodes { 831 key device-ref; 832 description "Device nodes that include in a fabric."; 833 uses device-attributes; 834 } 836 list device-links { 837 key link-ref; 838 description "Links that include within a fabric."; 839 uses link-attributes; 840 } 842 list device-ports { 843 key port-ref; 844 description "Ports that include in the fabric."; 845 uses port-attributes; 846 } 848 } 849 // augment statements 851 augment "/nw:networks/nw:network/nw:network-types" { 852 description 853 "Introduce new network type for Fabric-based logical topology"; 855 uses fabric-network-type; 856 } 858 augment "/nw:networks/nw:network/nw:node" { 859 when "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" { 860 description 861 "Augmentation parameters apply only for networks 862 with fabric topology"; 863 } 864 description "Augmentation for fabric nodes created by fabric topology."; 866 container fabric-attributes { 867 description 868 "Attributes for a fabric network"; 870 uses fabric-attributes; 871 } 872 } 874 augment "/nw:networks/nw:network/nw:node/nt:termination-point" { 875 when "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" { 876 description 877 "Augmentation parameters apply only for networks 878 with fabric topology"; 879 } 880 description "Augmentation for port on fabric."; 882 container fport-attributes { 883 config false; 884 description 885 "Attributes for fabric ports"; 886 uses fabrictypes:fabric-port; 887 } 888 } 889 } 890 892 5. IANA Considerations 894 This document registers the following namespace URIs in the "IETF XML 895 Registry" [RFC3688]: 897 URI: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types Registrant 898 Contact: The IESG. XML: N/A; the requested URI is an XML namespace. 900 URI: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology Registrant 901 Contact: The IESG. XML: N/A; the requested URI is an XML namespace. 903 URI: urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state 904 Registrant Contact: The IESG. XML: N/A; the requested URI is an XML 905 namespace. 907 This document registers the following YANG modules in the "YANG 908 Module Names" registry [RFC6020]: 910 NOTE TO THE RFC EDITOR: In the list below, please replace references 911 to "draft-ietf-i2rs-yang-dc-fabric-network-topology-03 (RFC form)" 912 with RFC number when published (i.e. RFC xxxx). 914 Name: ietf-dc-fabric-types Namespace: 915 urn:ietf:params:xml:ns:yang:ietf-dc-fabric-types Prefix: fabrictypes 916 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-03.txt 917 (RFC form) 919 Name: ietf-dc-fabric-topology Namespace: 920 urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology Prefix: fabric 921 Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology-03.txt 922 (RFC form) 924 Name: ietf-dc-fabric-topology-state Namespace: 925 urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state Prefix: 926 sfabric Reference: draft-ietf-i2rs-yang-dc-fabric-network-topology- 927 03.txt (RFC form) 929 6. Security Considerations 931 The YANG module defined in this document is designed to be accessed 932 via network management protocols such as NETCONF [RFC6241] or 933 RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport 934 layer, and the mandatory-to-implement secure transport is Secure 935 Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the 936 mandatory-to-implement secure transport is TLS [RFC5246]. 938 The NETCONF access control model [RFC6536] provides the means to 939 restrict access for particular NETCONF or RESTCONF users to a 940 preconfigured subset of all available NETCONF or RESTCONF protocol 941 operations and content. The subtrees and data nodes and their 942 sensitivity/vulnerability in the ietf-dc-fabric-topology module are 943 as follows: 945 fabric-attributes: A malicious client could attempt to sabotage the 946 configuration of important fabric attributes, such as device-nodes or 947 type. 949 Some of the readable data nodes in this YANG module may be considered 950 sensitive or vulnerable in some network environments. It is thus 951 important to control read access (e.g., via get, get-config, or 952 notification) to these data nodes. The subtrees and data nodes and 953 their sensitivity/vulnerability in the ietf-dc-fabric-topology module 954 are as follows: 956 fport-attributes: A malicious client could attempt to read the 957 connections of fabrics without permission, such as device-port, name. 959 7. Acknowledgements 961 We wish to acknowledge the helpful contributions, comments, and 962 suggestions that were received from Alexander Clemm, Donald E. 963 Eastlake, Xufeng Liu, Susan Hares, Wei Song, Luis M. Contreras and 964 Benoit Claise. 966 8. References 968 8.1. Normative References 970 [I-D.draft-ietf-i2rs-yang-l3-topology] 971 Clemm, A., Medved, J., Tkacik, T., Liu, X., Bryskin, I., 972 Guo, A., Ananthakrishnan, H., Bahadur, N., and V. Beeram, 973 "A YANG Data Model for Layer 3 Topologies", I-D draft- 974 ietf-i2rs-yang-l3-topology-04, September 2016. 976 [I-D.draft-ietf-i2rs-yang-network-topo] 977 Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., 978 and H. Ananthakrishnan, "A YANG Data Model for Network 979 Topologies", I-D draft-ietf-i2rs-yang-network-topo-06, 980 September 2016. 982 [I-D.draft-ietf-netmod-revised-datastores-06] 983 Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 984 and R. Wilton, "A Revised Conceptual Model for YANG 985 Datastores", I-D draft-ietf-netmod-revised-datastores-06, 986 October 2017. 988 [I-D.draft-ietf-netmod-rfc7277bis] 989 Bjorklund, M., "A YANG Data Model for IP Management", I-D 990 draft-ietf-netmod-rfc7277bis-03, January 2018. 992 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 993 Requirement Levels", BCP 14, RFC 2119, 994 DOI 10.17487/RFC2119, March 1997, 995 . 997 [RFC5246] Dierks, T. and E. Rescorla, "Transport Layer Security 998 (TLS) Protocol Version 1.2", August 2008, 999 . 1001 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1002 Network Configuration Protocol (NETCONF)", RFC 6020, 1003 October 2010. 1005 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 1006 Bierman, "Network Configuration Protocol (NETCONF)", June 1007 2011, . 1009 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1010 Shell (SSH)", June 2011, 1011 . 1013 [RFC6536] Bierman, A. and B. Bjorklund, "Network Configuration 1014 Protocol (NETCONF) Access Control Model", March 2012, 1015 . 1017 [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, 1018 July 2013. 1020 [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, 1021 L., Sridhar, T., Bursell, M., and C. Wright, "Virtual 1022 eXtensible Local Area Network (VXLAN): A Framework for 1023 Overlaying Virtualized Layer 2 Networks over Layer 3 1024 Networks", August 2014, 1025 . 1027 [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", 1028 RFC 7950, DOI 10.17487/RFC7950, Auguest 2016. 1030 [RFC8040] Bierman, A., Bjorklund, B., and K. Watsen, "RESTCONF 1031 Protocol", Jan 2017, 1032 . 1034 8.2. Informative References 1036 [I-D.draft-ietf-i2rs-usecase-reqs-summary] 1037 Hares, S. and M. Chen, "Summary of I2RS Use Case 1038 Requirements", I-D draft-ietf-netmod-yang-tree-diagrams, 1039 May 2015. 1041 [I-D.draft-ietf-netmod-yang-tree-diagrams] 1042 Bjorklund, M. and L. Berger, "YANG Tree Diagrams", I-D 1043 draft-ietf-netmod-yang-tree-diagrams, October 2017. 1045 [I-D.draft-ietf-nvo3-geneve] 1046 Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic 1047 Network Virtualization Encapsulation", I-D draft-ietf- 1048 nvo3-geneve-05, September 2017. 1050 Appendix A. Non NMDA -state modules 1052 The YANG module ietf-fabric-toplogy defined in this document augments 1053 two modules, ietf-network and ietf-network-topology, that are 1054 designed to be used in conjunction with implementations that support 1055 the Network Management Datastore Architecture (NMDA) defined in [I- 1056 D.draft-ietf-netmod-revised-datastores]. In order to allow 1057 implementations to use the model even in case when NMDA is not 1058 supported, a set of companion modules have been defined that 1059 represent a state model of networks and network topologies, ietf- 1060 network-state and ietf-network-topology-state, respectively. 1062 In order to be able to use the model for fabric topologies defined in 1063 this in this document in conjunction with non-NMDA compliant 1064 implementations, a corresponding companion module needs to be 1065 introduced as well. This companion module, ietf-fabric-topology- 1066 state, mirrors ietf-fabric-topology. However, the module augments 1067 ietf-network-state (instead of ietf-network and ietf-network- 1068 topology) and all of its data nodes are non-configurable. 1070 Like ietf-network-state and ietf-network-topology-state, ietf-fabric- 1071 topology-state SHOULD NOT be supported by implementations that 1072 support NMDA. It is for this reason that the module is defined in 1073 the Appendix. 1075 The definition of the module follows below. As the structure of the 1076 module mirrors that of its underlying module, the YANG tree is not 1077 depicted separately. 1079 file "ietf-dc-fabric-topology-state@2018-02-11.yang" 1080 module ietf-dc-fabric-topology-state { 1082 yang-version 1.1; 1083 namespace "urn:ietf:params:xml:ns:yang:ietf-dc-fabric-topology-state"; 1084 prefix sfabric; 1086 import ietf-network-state { 1087 prefix nws; 1088 reference 1089 "draft-ietf-i2rs-yang-network-topo-20 1090 NOTE TO RFC EDITOR: 1091 (1) Please replace above reference to 1092 draft-ietf-i2rs-yang-network-topo-20 with RFC 1093 number when published (i.e. RFC xxxx). 1094 (2) Please replace the date in the revision statement with the 1095 date of publication when published."; 1096 } 1097 import ietf-dc-fabric-types { 1098 prefix fabrictypes; 1100 reference 1101 "draft-ietf-i2rs-yang-dc-fabric-network-topology-03 1102 NOTE TO RFC EDITOR: 1103 (1) Please replace above reference to draft-ietf-i2rs-yang-dc 1104 -fabric-network-topology-03 with RFC number when published 1105 (i.e. RFC xxxx). 1106 (2) Please replace the data in the revision statement with the 1107 data of publication when published."; 1108 } 1109 import ietf-dc-fabric-topology { 1110 prefix fabric; 1112 reference 1113 "draft-ietf-i2rs-yang-dc-fabric-network-topology-03 1114 NOTE TO RFC EDITOR: 1115 (1) Please replace above reference to draft-ietf-i2rs-yang-dc 1116 -fabric-network-topology-03 with RFC number when published 1117 (i.e. RFC xxxx). 1118 (2) Please replace the data in the revision statement with the 1119 data of publication when published."; 1120 } 1122 organization 1123 "IETF I2RS (Interface to the Routing System) Working Group"; 1125 contact 1126 "WG Web: 1127 WG List: 1129 Editor: Yan Zhuang 1130 1132 Editor: Danian Shi 1133 "; 1135 description 1136 "This module contains a collection of YANG definitions 1137 for Fabric state, representing topology that is either 1138 learned, or topology that results from applying toplogy 1139 that has been configured per the ietf-dc-fabric-topology 1140 model, mirroring the corresponding data nodes in this model. 1142 This model mirrors the configuration tree of 1143 ietf-dc-fabric-topology, but contains only read-only state 1144 data. The model is not needed when the implemtation 1145 infrastructure supports the Network Management Datastore 1146 Architecture(NMDA). 1148 Copyright (c) 2016 IETF Trust and the persons identified 1149 as authors of the code. All rights reserved. 1151 Redistribution and use in source and binary forms, with or 1152 without modification, is permitted pursuant to, and subject 1153 to the license terms contained in, the Simplified BSD License 1154 set forth in Section 4.c of the IETF Trust's Legal Provisions 1155 Relating to IETF Documents(http://trustee.ietf.org/license-info). 1157 This version of this YANG module is part of 1158 draft-ietf-i2rs-yang-dc-fabric-network-topology;see the RFC 1159 itself for full legal notices. 1161 NOTE TO RFC EDITOR: Please replace above reference to 1162 draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC number 1163 when published (i.e. RFC xxxx)."; 1165 revision "2018-02-11" { 1166 description 1167 "Initial revision. 1168 NOTE TO RFC EDITOR: Please replace the following reference to 1169 draft-ietf-i2rs-yang-dc-fabric-network-topology-03 with RFC 1170 number when published (i.e. RFC xxxx)."; 1171 reference 1172 "draft-ietf-i2rs-yang-dc-fabric-network-topology-05"; 1173 } 1175 //grouping statements 1176 grouping fabric-network-type { 1177 description "Identify the topology type to be fabric."; 1178 container fabric-network { 1179 presence "indicates fabric Network"; 1180 description 1181 "The presence of the container node indicates fabric Topology"; 1182 } 1183 } 1184 grouping fabric-options { 1185 description "Options for a fabric"; 1186 leaf gateway-mode { 1187 type enumeration { 1188 enum centralized { 1189 description "The Fabric uses centerilized gateway, in which 1190 gateway is deployed on SPINE node."; 1191 } 1192 enum distributed { 1193 description "The Fabric uses distributed gateway, in which 1194 gateway is deployed on LEAF node."; 1195 } 1196 } 1197 default "distributed"; 1198 description "Gateway mode of the fabric"; 1199 } 1201 leaf traffic-behavior { 1202 type enumeration { 1203 enum normal { 1204 description "Normal"; 1205 } 1206 enum policy-driven { 1207 description "Policy driven"; 1208 } 1209 } 1210 default "normal"; 1211 description "Traffic behavior of the fabric"; 1212 } 1214 leaf-list capability-supported { 1215 type fabrictypes:service-capabilities; 1216 description 1217 "Supported services of the fabric"; 1218 } 1219 } 1221 grouping device-attributes { 1222 description "device attributes"; 1223 leaf device-ref { 1224 type fabrictypes:node-ref; 1225 description "The device the fabric includes."; 1226 } 1227 leaf-list role { 1228 type fabrictypes:device-role; 1229 default fabrictypes:leaf; 1230 description "Role of the node"; 1231 } 1233 } 1235 grouping link-attributes { 1236 description "Link attributes"; 1237 leaf link-ref { 1238 type fabrictypes:link-ref; 1239 description "The link it includes"; 1240 } 1241 } 1243 grouping port-attributes { 1244 description "Port attributes"; 1245 leaf port-ref { 1246 type fabrictypes:tp-ref; 1247 description "The port it refers to."; 1248 } 1249 leaf port-type { 1250 type fabrictypes:port-type; 1251 description 1252 "Port type: ethernet or serial or others"; 1253 } 1254 leaf bandwidth { 1255 type fabrictypes:bandwidth; 1256 description "Bandwidth of the port"; 1257 } 1258 } 1260 grouping fabric-attributes { 1261 description "Attributes of a fabric"; 1262 leaf fabric-id { 1263 type fabric:fabric-id; 1264 description "Fabric id"; 1265 } 1266 leaf name { 1267 type string; 1268 description "Name of the fabric"; 1269 } 1270 leaf type { 1271 type fabrictypes:underlay-network-type; 1272 description 1273 "The type of physical network that implements this 1274 fabric.Examples are vlan, and trill."; 1275 } 1276 container vni-capacity { 1277 description "Number of vnis the fabric has"; 1278 leaf min { 1279 type int32; 1280 description "Vni min capacity"; 1282 } 1283 leaf max { 1284 type int32; 1285 description "Vni max capacity"; 1286 } 1287 } 1288 leaf description { 1289 type string; 1290 description "Description of the fabric"; 1291 } 1292 container options { 1293 description "Options of the fabric"; 1294 uses fabric-options; 1295 } 1296 list device-nodes { 1297 key device-ref; 1298 description "Device nodes that include in a fabric."; 1299 uses device-attributes; 1300 } 1301 list device-links { 1302 key link-ref; 1303 description "Links that are included within the fabric."; 1304 uses link-attributes; 1305 } 1306 list device-ports { 1307 key port-ref; 1308 description "Ports that are included within the fabric."; 1309 uses port-attributes; 1310 } 1311 } 1313 // augment statements 1315 augment "/nws:networks/nws:network/nws:network-types" { 1316 description 1317 "Introduce new network type for Fabric-based logical topology"; 1318 uses fabric-network-type; 1319 } 1321 augment "/nws:networks/nws:network/nws:node" { 1322 when "/nws:networks/nws:network/nws:network-types/sfabric:fabric-network" { 1323 description "Augmentation parameters apply only for networks with 1324 fabric topology."; 1325 } 1326 description "Augmentation for fabric nodes."; 1327 container fabric-attributes-state { 1328 description 1329 "Attributes for a fabric network"; 1331 uses fabric-attributes; 1332 } 1333 } 1334 } 1335 1337 Authors' Addresses 1339 Yan Zhuang 1340 Huawei 1341 101 Software Avenue, Yuhua District 1342 Nanjing, Jiangsu 210012 1343 China 1345 Email: zhuangyan.zhuang@huawei.com 1347 Danian Shi 1348 Huawei 1349 101 Software Avenue, Yuhua District 1350 Nanjing, Jiangsu 210012 1351 China 1353 Email: shidanian@huawei.com 1355 Rong Gu 1356 China Mobile 1357 32 Xuanwumen West Ave, Xicheng District 1358 Beijing, Beijing 100053 1359 China 1361 Email: gurong_cmcc@outlook.com 1363 Hariharan Ananthakrishnan 1364 Packet Design 1366 Email: hari@packetdesign.com