idnits 2.17.1 draft-ietf-i2rs-yang-dc-fabric-network-topology-02.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 : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** There are 15 instances of too long lines in the document, the longest one being 20 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 280 has weird spacing: '...ice-ref fab...' == Line 283 has weird spacing: '...ink-ref fab...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (November 29, 2017) is 2312 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 95 -- Looks like a reference, but probably isn't: '7950' on line 95 == Missing Reference: 'I-D.ietf-i2rs-yang-network-topo' is mentioned on line 110, but not defined == Unused Reference: 'I-D.draft-ietf-i2rs-yang-l3-topology' is defined on line 1010, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-i2rs-yang-network-topo' is defined on line 1016, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-nvo3-vxlan-gpe' is defined on line 1022, but no explicit reference was found in the text == Unused Reference: 'RFC6020' is defined on line 1032, but no explicit reference was found in the text == Unused Reference: 'RFC6991' is defined on line 1036, but no explicit reference was found in the text == Unused Reference: 'RFC7950' is defined on line 1039, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-i2rs-usecase-reqs-summary' is defined on line 1044, 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 (-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-vxlan-gpe', was also mentioned in 'I-D.draft-ietf-i2rs-yang-network-topo'. == Outdated reference: A later version (-03) exists of draft-ietf-i2rs-usecase-reqs-summary-01 Summary: 2 errors (**), 0 flaws (~~), 16 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: June 2, 2018 R. Gu 6 China Mobile 7 H. Ananthakrishnan 8 Packet Design 9 November 29, 2017 11 A YANG Data Model for Fabric Topology in Data Center Network 12 draft-ietf-i2rs-yang-dc-fabric-network-topology-02 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 June 2, 2018. 36 Copyright Notice 38 Copyright (c) 2017 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 2.2. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 4 57 3. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 4 58 3.1. Topology Model structure . . . . . . . . . . . . . . . . 4 59 3.2. Fabric Topology Model . . . . . . . . . . . . . . . . . . 5 60 3.2.1. Fabric Topology . . . . . . . . . . . . . . . . . . . 5 61 3.2.2. Fabric node extension . . . . . . . . . . . . . . . . 6 62 3.2.3. Fabric termination-point extension . . . . . . . . . 7 63 4. Fabric YANG Module . . . . . . . . . . . . . . . . . . . . . 8 64 5. Security Consideration . . . . . . . . . . . . . . . . . . . 22 65 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 66 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 67 7.1. Normative References . . . . . . . . . . . . . . . . . . 22 68 7.2. Informative References . . . . . . . . . . . . . . . . . 23 69 Appendix A. Non NMDA -state modules . . . . . . . . . . . . . . 23 70 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 72 1. Introduction 74 Normally, a data center network is composed of single or multiple 75 fabrics which are also known as PODs (a Point Of Delivery). These 76 fabrics may be heterogeneous due to implementation of different 77 technologies while DC network upgrading or enrolling new techniques 78 and features. For example, Fabric A may use VXLAN while Fabric B may 79 use VLAN within a DC network. Likewise, a legacy Fabric may use 80 VXLAN while a new Fabric B implemented technique discussed in NVO3 WG 81 such as GPE[I-D. draft-ietf-nvo3-vxlan-gpe] may be built due to DC 82 expansion and upgrading. The configuration and management of such DC 83 networks with heterogeneous fabrics will be sophisticated and 84 complex. 86 Luckily, for a DC network, a fabric can be considered as an atomic 87 structure to provide network services and management, as well as 88 expand network capacity. From this point of view, the miscellaneous 89 DC network management can be decomposed to task of managing each 90 fabric respectively along with their connections, which can make the 91 entire management much concentrated and flexible, also easy to 92 expand. 94 With this purpose, this document defines a YANG data model for the 95 Fabric-based Data center topology by using YANG [6020][7950]. To do 96 so, it augments the generic network and network topology data models 97 defined in [I-D.ietf-i2rs-yang-network-topo] with information 98 specific to Data Center fabric network. 100 This model defines the generic configuration and operational state 101 for a fabric-based network topology, which can be extended by vendors 102 with specific information. This model can then be used by a network 103 controller to represent its view of the fabric topology that it 104 controls and expose it to network administrators or applications for 105 DC network management. 107 With the context of topology architecture defined in [I-D.ietf-i2rs- 108 yang-network-topo] and [I.D. draft-ietf-i2rs-usecase-reqs-summary], 109 this model can also be treated as an application of I2RS network 110 topology model [I-D.ietf-i2rs-yang-network-topo] in the scenario of 111 Data center network management. It can also act as a service 112 topology when mapping network elements at fabric layer to elements to 113 other topologies, such as L3 topology defined in [I.D. draft-ietf- 114 i2rs-yang-l3-topology-01. 116 By using this fabric topology model, people can treat a fabric as an 117 entity and focus on characteristics of fabrics (such as encapsulation 118 type, gateway type, etc.) as well as their interconnections while 119 putting the underlay topology aside. As such, clients can consume 120 the topology information at fabric level, while no need to be aware 121 of entire set of links and nodes in underlay networks. The 122 configuration of a fabric topology can be made by a network 123 administractor to the controller by adding physical devices and links 124 of a fabric into a fabric network. Alternatively, the fabric 125 topology can also learnt from the underlay network infrastructure. 127 2. Definitions an Acronyms 129 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 130 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 131 document are to be interpreted as described in [RFC2119]. 133 2.1. Terminology 135 DC Fabric: also known as POD, is a module of network, compute, 136 storage, and application components that work together to deliver 137 networking services. It is a repeatable design pattern, and its 138 components maximize the modularity, scalability, and manageability of 139 data centers. 141 2.2. Tree diagram 143 The following notations are used within the data tree and carry the 144 meaning as below. 146 Each node is printed as: 147 149 is one of: 150 + for current 151 x for deprecated 152 o for obsolete 153 is one of: 154 rw for configuration data 155 ro for non-configuration data 156 -x for rpcs 157 -n for notifications 158 is the name of the node 160 If the node is augmented into the tree from another module, its name 161 is printed as :. 162 is one of: 163 ? for an optional leaf or choice 164 ! for a presence container 165 * for a leaf-list or list 166 [] for a list's keys 167 is the name of the type for leafs and leaf-lists 169 In this document, these words will appear with that interpretation 170 only when in ALL CAPS. Lower case uses of these words are not to be 171 interpreted as carrying RFC-2119 significance. 173 3. Model Overview 175 This section provides an overview of the DC Fabric topology model and 176 its relationship with other topology models. 178 3.1. Topology Model structure 180 The relationship of the DC fabric topology model and other topology 181 models is shown in the following figure (dotted lines in the figure 182 denote augmentations). 184 +------------------------+ 185 | network model | 186 +------------------------+ 187 | 188 | 189 +------------V-----------+ 190 | network topology model | 191 +------------------------+ 192 | 193 +-----------+-----+------+-------------+ 194 | | | | 195 +---V----+ +---V----+ +---V----+ +----V---+ 196 | L1 | | L2 | | L3 | | Fabric | 197 |topology| |topology| |topology| |topology| 198 | model | | model | | model | | model | 199 +--------+ +--------+ +--------+ +--------+ 201 From the perspective of resource management and service provisioning 202 for a Data Center network, the fabric topology model augments the 203 basic network topology model with definitions and features specific 204 to a DC fabric, to provide common configuration and operations for 205 heterogeneous fabrics. 207 3.2. Fabric Topology Model 209 The fabric topology model module is designed to be generic and can be 210 applied to data center fabrics built with different technologies, 211 such as VLAN, VXLAN etc al. The main purpose of this module is to 212 configure and manage fabrics and their connections. provide a fabric- 213 based topology view for data center network applications. 215 3.2.1. Fabric Topology 217 In the fabric topology module, a fabric is modeled as a node in the 218 network, while the fabric-based Data center network consists of a set 219 of fabric nodes and their connections known as "fabric port". The 220 following is the snatch of the definition to show the main structure 221 of the model: 223 module: ietf-fabric-topology 224 augment /nw:networks/nw:network/nw:network-types: 225 +--rw fabric-network! 226 augment /nw:networks/nw:network/nw:node: 227 +--rw fabric-attributes 228 +--rw fabric-id? fabric-id 229 +--rw name? string 230 +--rw type? fabrictype:underlay-network-type 231 +--rw description? string 232 +--rw options 233 +--... 234 augment /nw:networks/nw:network/nw:node/nt:termination-point: 235 +--ro fport-attributes 236 +--ro name? string 237 +--ro role? fabric-port-role 238 +--ro type? fabric-port-type 240 The fabric topology module augments the generic ietf-network and 241 ietf-network-topology modules as follows: 243 o A new topology type "ietf-fabric-topology" is introduced and added 244 under the "network-types" container of the ietf-network module. 246 o Fabric is defined as a node under the network/node container. A 247 new container of "fabric-attributes" is defined to carry 248 attributes for a fabric network such as gateway mode, fabric 249 types, involved device nodes and links etc al. 251 o Termination points (in network topology module) are augmented with 252 fabric port attributes defined in a container. The "termination- 253 point" here can represent the "port" of a fabric that provides 254 connections to other nodes, such as device internally, another 255 fabric externally and also end hosts. 257 Details of fabric node and fabric termination point extension will be 258 explained in the following sections. 260 3.2.2. Fabric node extension 262 As a network, a fabric itself is composed of set of network elements 263 i.e. devices, and related links. As stated previously, the 264 configuration of a fabric is contained under the "fabric-attributes" 265 container depicted as follows: 267 +--rw fabric-attributes 268 +--rw fabric-id? fabric-id 269 +--rw name? string 270 +--rw type? fabrictype:underlay-network-type 271 +--rw vni-capacity 272 | +--rw min? int32 273 | +--rw max? int32 274 +--rw description? string 275 +--rw options 276 | +--rw gateway-mode? enumeration 277 | +--rw traffic-behavior? enumeration 278 | +--rw capability-supported* fabrictype:service-capabilities 279 +--rw device-nodes* [device-ref] 280 | +--rw device-ref fabrictype:node-ref 281 | +--rw role? fabrictype:device-role 282 +--rw device-links* [link-ref] 283 | +--rw link-ref fabrictype:link-ref 284 +--rw device-ports* [port-ref] 285 +--rw port-ref fabrictype:tp-ref 286 +--rw port-type? identityref 287 +--rw bandwidth? identityref 289 As in the module, additional data objects for nodes are introduced by 290 augmenting the "node" list of the network module. New objects 291 include fabric name, type of the fabric, descriptions of the fabric 292 as well as a set of options defined in an "options" container. The 293 options container includes type of the gateway-mode (centralized or 294 distributed) and traffic-behavior (whether acl needed for the 295 traffic). 297 Also, it defines a list of device-nodes and related links as 298 supporting-nodes to form a fabric network. These device nodes and 299 links are leaf-ref of existing nodes and links in the underlay 300 topology. For the device-node, the "role" object is defined to 301 represents the role of the device within the fabric, such as "SPINE" 302 or "LEAF", which should work together with gateway-mode. 304 3.2.3. Fabric termination-point extension 306 Since the fabric can be considered as a node, in this concept, 307 "termination-points" can represent "ports" of a fabric that connects 308 to other fabrics or end hosts, besides representing ports that 309 connect devices inside the fabric itself. 311 As such, the "termination-point" in the fabric topology has three 312 roles, that are internal TP that connects to devices within a fabric, 313 external TP that connects to outside network, and access TP to end 314 hosts. 316 The set of "termination-point" of a fabric indicates all connections 317 of the fabric, including its internal connections, interconnections 318 with other fabrics and also connections to end hosts for a DC 319 network. 321 The structure of fabric ports is as follows: 323 augment /nw:networks/nw:network/nw:node/nt:termination-point: 324 +--ro fport-attributes 325 +--ro name? string 326 +--ro role? fabric-port-role 327 +--ro type? fabric-port-type 328 +--ro device-port? tp-ref 329 +--ro (tunnel-option)? 330 +--:(gre) 331 +--ro src-ip? inet:ip-prefix 332 +--ro dest-ip? inet:ip-address 334 It augments the termination points (in network topology module) with 335 fabric port attributes defined in a container. 337 New nodes are defined for fabric ports which include name, role of 338 the port within the fabric (internal port, external port to outside 339 network, access port to end hosts), port type (l2 interface, l3 340 interface etc al). By defining the device-port as a tp-ref, a fabric 341 port can be mapped to a device node in the underlay network. 343 Also, a new container for tunnel-options is introduced to present the 344 tunnel configuration on the port. 346 The terminiation points information are all learnt from the underlay 347 networks but not configured by the fabric topology layer. 349 4. Fabric YANG Module 351 file "ietf-fabric-types@2017-11-29.yang" 352 module ietf-fabric-types { 354 yang-version 1.1; 355 namespace "urn:ietf:params:xml:ns:yang:ietf-fabric-types"; 356 prefix fabrictypes; 358 import ietf-inet-types { prefix "inet"; revision-date "2013-07-15"; } 359 import ietf-network-topology { prefix nt;} 361 organization 362 "IETF I2RS (Interface to the Routing System) Working Group"; 364 contact 365 "WG Web: 366 WG List: 368 WG Chair: Susan Hares 369 371 WG Chair: Russ White 372 374 Editor: Yan Zhuang 375 377 Editor: Danian Shi 378 "; 380 description 381 "This module contains a collection of YANG definitions for Fabric. 383 Copyright (c) 2016 IETF Trust and the persons identified as 384 authors of the code. All rights reserved. 386 Redistribution and use in source and binary forms, with or 387 without modification, is permitted pursuant to, and subject 388 to the license terms contained in, the Simplified BSD License 389 set forth in Section 4.c of the IETF Trust's Legal Provisions 390 Relating to IETF Documents(http://trustee.ietf.org/license-info). 392 This version of this YANG module is part of 393 draft-zhuang-i2rs-yang-dc-fabric-network-topology; 394 see the RFC itself for full legal notices."; 396 revision "2017-11-29"{ 397 description 398 "add identities for bandwidth and port-type"; 399 reference 400 "draft-ietf-i2rs-yang-dc-fabric-network-topology-02"; 401 } 403 revision "2016-09-29" { 404 description 405 "Initial revision of faas."; 406 reference 407 "draft-zhuang-i2rs-yang-dc-fabric-network-topology-02"; 408 } 410 identity fabric-type { 411 description 412 "base type for fabric networks"; 413 } 415 identity vxlan-fabric { 416 base fabric-type; 417 description 418 "vxlan fabric"; 419 } 421 identity vlan-fabric { 422 base fabric-type; 423 description 424 "vlan fabric"; 425 } 427 identity port-type { 428 description 429 "base type for fabric port"; 430 } 432 identity eth { 433 base port-type; 434 description "ETH"; 435 } 437 identity serial { 438 base port-type; 439 description "Serial"; 440 } 442 identity bandwidth { 443 description "base for bandwidth"; 444 } 446 identity bw-1M { 447 base bandwidth; 448 description "1M"; 449 } 451 identity bw-10M { 452 base bandwidth; 453 description "10M"; 454 } 455 identity bw-100M { 456 base bandwidth; 457 description "100M"; 458 } 460 identity bw-1G { 461 base bandwidth; 462 description "1G"; 463 } 465 identity bw-10G { 466 base bandwidth; 467 description "10G"; 468 } 470 identity bw-40G { 471 base bandwidth; 472 description "40G"; 473 } 475 identity bw-100G{ 476 base bandwidth; 477 description "100G"; 478 } 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 SFC function"; 487 } 488 enum dynamic-route-exchange{ 489 description "dynamic route exchange"; 490 } 491 } 492 description 493 "capability of the device"; 494 } 496 /* 497 * Typedefs 498 */ 499 typedef node-ref { 500 type instance-identifier; 501 description "A reference to a node in topology"; 503 } 505 typedef tp-ref { 506 type instance-identifier; 507 description "A reference to a termination point in topology"; 508 } 510 typedef link-ref { 511 type instance-identifier; 512 description "A reference to a link in topology"; 513 } 515 typedef device-role { 516 type enumeration { 517 enum SPINE { 518 description "a spine node"; 519 } 520 enum LEAF { 521 description "a leaf node"; 522 } 523 enum BORDER { 524 description "a border node"; 525 } 526 } 527 default "LEAF"; 528 description "device role type"; 529 } 531 typedef fabric-port-role { 532 type enumeration { 533 enum internal { 534 description "the port used for devices to access each other."; 535 } 536 enum external { 537 description "the port used for fabric to access outside network."; 538 } 539 enum access { 540 description "the port used for Endpoint to access fabric."; 541 } 542 enum reserved { 543 description " not decided yet. "; 544 } 545 } 546 description "the role of the physical port "; 547 } 549 typedef fabric-port-type { 550 type enumeration { 551 enum layer2interface { 552 description "l2 if"; 553 } 554 enum layer3interface { 555 description "l3 if"; 556 } 557 enum layer2Tunnel { 558 description "l2 tunnel"; 559 } 560 enum layer3Tunnel { 561 description "l3 tunnel"; 562 } 563 } 564 description 565 "fabric port type"; 566 } 568 typedef underlay-network-type { 569 type enumeration { 570 enum VXLAN { 571 description "vxlan"; 572 } 573 enum TRILL { 574 description "trill"; 575 } 576 enum VLAN { 577 description "vlan"; 578 } 579 } 580 description "underlay network type"; 581 } 583 grouping fabric-port { 584 description 585 "attributes of a fabric port"; 586 leaf name { 587 type string; 588 description "name of the port"; 589 } 590 leaf role { 591 type fabric-port-role; 592 description "role of the port in a fabric"; 593 } 594 leaf type { 595 type fabric-port-type; 596 description "type of the port"; 597 } 598 leaf device-port { 599 type tp-ref; 600 description "the device port it mapped to"; 601 } 602 choice tunnel-option { 603 description "tunnel options"; 605 case gre { 606 leaf src-ip { 607 type inet:ip-prefix; 608 description "source address"; 609 } 610 leaf dest-ip { 611 type inet:ip-address; 612 description "destination address"; 613 } 614 } 615 } 616 } 618 grouping route-group { 619 description 620 "route attributes"; 621 list route { 622 key "destination-prefix"; 623 description "route list"; 625 leaf description { 626 type string; 627 description "Textual description of the route."; 628 } 629 leaf destination-prefix { 630 type inet:ipv4-prefix; 631 mandatory true; 632 description "IPv4 destination prefix."; 633 } 634 choice next-hop-options { 635 description "choice of next hop options"; 636 case simple-next-hop { 637 leaf next-hop { 638 type inet:ipv4-address; 639 description "IPv4 address of the next hop."; 640 } 641 leaf outgoing-interface { 642 type nt:tp-id; 643 description "Name of the outgoing interface."; 644 } 645 } 646 } 648 } 649 } 651 grouping port-functions { 652 description 653 "port functions"; 655 container port-function { 656 description "port functions"; 657 choice function-type { 658 description "type of functions"; 659 case ip-mapping { 660 list ip-mapping-entry { 661 key "external-ip"; 662 description "list of NAT entry"; 663 leaf external-ip { 664 type inet:ipv4-address; 665 description "external address"; 666 } 667 leaf internal-ip { 668 type inet:ipv4-address; 669 description "internal address"; 670 } 671 } 672 } 673 } 674 } 675 } 677 grouping acl-list { 678 description "acl list"; 679 list fabric-acl { 680 key fabric-acl-name; 681 description "fabric acl list"; 682 leaf fabric-acl-name { 683 type string; 684 description "acl name"; 685 } 686 } 687 } 688 } 689 691 file "ietf-fabric-topology@2017-11-29.yang" 692 module ietf-fabric-topology { 694 yang-version 1.1; 695 namespace "urn:ietf:params:xml:ns:yang:ietf-fabric-topology"; 696 prefix fabric; 698 import ietf-network { prefix nw; } 699 import ietf-network-topology { prefix nt; } 700 import ietf-fabric-types { prefix fabrictype;} 702 organization 703 "IETF I2RS (Interface to the Routing System) Working Group"; 705 contact 706 "WG Web: 707 WG List: 709 WG Chair: Susan Hares 710 712 WG Chair: Russ White 713 715 Editor: Yan Zhuang 716 718 Editor: Danian Shi 719 "; 721 description 722 "This module contains a collection of YANG definitions for Fabric. 724 Copyright (c) 2016 IETF Trust and the persons identified as 725 authors of the code. All rights reserved. 727 Redistribution and use in source and binary forms, with or 728 without modification, is permitted pursuant to, and subject 729 to the license terms contained in, the Simplified BSD License 730 set forth in Section 4.c of the IETF Trust's Legal Provisions 731 Relating to IETF Documents(http://trustee.ietf.org/license-info). 733 This version of this YANG module is part of 734 draft-zhuang-i2rs-yang-dc-fabric-network-topology; 735 see the RFC itself for full legal notices."; 737 revision "2017-11-29"{ 738 description "fix comments"; 739 reference 740 "draft-ietf-i2rs-yang-dc-fabric-network-topology-02"; 741 } 742 revision "2017-11-21"{ 743 description "fix warnings."; 744 reference 745 "draft-ietf-i2rs-yang-dc-fabric-network-topology-01"; 746 } 748 revision "2017-06-29"{ 749 description 750 "update to NMDA compliant format"; 751 reference 752 "draft-zhuang-i2rs-yang-dc-fabric-network-topology-04"; 753 } 755 revision "2017-03-10" { 756 description 757 "remove the rpcs and add extra attributes"; 758 reference 759 "draft-zhuang-i2rs-yang-dc-fabric-network-topology-03"; 760 } 762 revision "2016-09-29" { 763 description 764 "Initial revision of fabric topology."; 765 reference 766 "draft-zhuang-i2rs-yang-dc-fabric-network-topology-02"; 767 } 769 identity fabric-context { 770 description 771 "identity of fabric context"; 772 } 774 typedef fabric-id { 775 type nw:node-id; 776 description 777 "An identifier for a fabric in a topology. 778 The identifier is generated by compose-fabric RPC."; 779 } 781 //grouping statements 782 grouping fabric-network-type { 783 description "Identify the topology type to be fabric."; 784 container fabric-network { 785 presence "indicates fabric Network"; 786 description 787 "The presence of the container node indicates 788 fabric Topology"; 789 } 791 } 793 grouping fabric-options { 794 description "options for a fabric"; 796 leaf gateway-mode { 797 type enumeration { 798 enum centralized { 799 description "centerilized gateway"; 800 } 801 enum distributed { 802 description "distributed gateway"; 803 } 804 } 805 default "distributed"; 806 description "gateway mode"; 807 } 809 leaf traffic-behavior { 810 type enumeration { 811 enum normal { 812 description "normal"; 813 } 814 enum policy-driven { 815 description "policy driven"; 816 } 817 } 818 default "normal"; 819 description "traffic behavior of the fabric"; 820 } 822 leaf-list capability-supported { 823 type fabrictype:service-capabilities; 824 description 825 "supported services of the fabric"; 826 } 827 } 829 grouping device-attributes { 830 description "device attributes"; 831 leaf device-ref { 832 type fabrictype:node-ref; 833 description 834 "the device it includes to"; 835 } 836 leaf role { 837 type fabrictype:device-role; 838 default "LEAF"; 839 description 840 "role of the node"; 841 } 842 } 844 grouping link-attributes { 845 description "link attributes"; 846 leaf link-ref { 847 type fabrictype:link-ref; 848 description 849 "the link it includes"; 850 } 851 } 853 grouping port-attributes { 854 description "port attributes"; 855 leaf port-ref { 856 type fabrictype:tp-ref; 857 description 858 "port reference"; 859 } 860 leaf port-type { 861 type identityref { 862 base fabrictype:port-type; 863 } 864 description 865 "port type: ethernet or serial or others"; 866 } 867 leaf bandwidth { 868 type identityref { 869 base fabrictype:bandwidth; 870 } 871 description 872 "bandwidth on the port"; 873 } 874 } 876 grouping fabric-attributes { 877 description "attributes of a fabric"; 879 leaf fabric-id { 880 type fabric-id; 881 description 882 "fabric id"; 883 } 885 leaf name { 886 type string; 887 description 888 "name of the fabric"; 889 } 891 leaf type { 892 type fabrictype:underlay-network-type; 893 description 894 "The type of physical network that implements 895 this fabric.Examples are vlan, and trill."; 896 } 898 container vni-capacity { 899 description "number of vnis the fabric has"; 900 leaf min { 901 type int32; 902 description 903 "vni min capacity"; 904 } 906 leaf max { 907 type int32; 908 description 909 "vni max capacity"; 910 } 911 } 913 leaf description { 914 type string; 915 description 916 "description of the fabric"; 917 } 919 container options { 920 description "options of the fabric"; 921 uses fabric-options; 922 } 924 list device-nodes { 925 key device-ref; 926 description "include device nodes in the fabric"; 927 uses device-attributes; 928 } 930 list device-links { 931 key link-ref; 932 description "include device links within the fabric"; 933 uses link-attributes; 934 } 935 list device-ports { 936 key port-ref; 937 description "include device ports within the fabric"; 938 uses port-attributes; 939 } 941 } 943 // augment statements 945 augment "/nw:networks/nw:network/nw:network-types" { 946 description 947 "Introduce new network type for Fabric-based logical topology"; 949 uses fabric-network-type; 950 } 952 augment "/nw:networks/nw:network/nw:node" { 953 when "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" { 954 description 955 "Augmentation parameters apply only for networks 956 with fabric topology"; 957 } 958 description "Augmentation for fabric nodes created by faas."; 960 container fabric-attributes { 961 description 962 "attributes for a fabric network"; 964 uses fabric-attributes; 965 } 966 } 968 augment "/nw:networks/nw:network/nw:node/nt:termination-point" { 969 when "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" { 970 description 971 "Augmentation parameters apply only for networks 972 with fabric topology"; 973 } 974 description "Augmentation for port on fabric."; 976 container fport-attributes { 977 config false; 978 description 979 "attributes for fabric ports"; 980 uses fabrictype:fabric-port; 981 } 982 } 984 } 985 987 5. Security Consideration 989 The underlay topology is learnt from the physical network, while the 990 fabric topology is composed of a collection of the underlay nodes. 991 The fabric model doesn't change the connections of underlay networks. 992 While there are data nodes for fabric configuration, these data nodes 993 may be considered sensitive or vulnerable in some network 994 enviroments. Write operations (e.g., edit-config) to these data 995 nodes without proper protection can have a negative effect on network 996 operations. For example, misconfiguration of underlay nodes to a 997 fabric node may lead to inproper activities when management are 998 implemented at fabric layer by customers. 1000 6. Acknowledgements 1002 We wish to acknowledge the helpful contributions, comments, and 1003 suggestions that were received from Alexander Clemm, Xufeng Liu, 1004 Susan Hares, Wei Song, Luis M. Contreras and Benoit Claise. 1006 7. References 1008 7.1. Normative References 1010 [I-D.draft-ietf-i2rs-yang-l3-topology] 1011 Clemm, A., Medved, J., Tkacik, T., Liu, X., Bryskin, I., 1012 Guo, A., Ananthakrishnan, H., Bahadur, N., and V. Beeram, 1013 "A YANG Data Model for Layer 3 Topologies", I-D draft- 1014 ietf-i2rs-yang-l3-topology-04, September 2016. 1016 [I-D.draft-ietf-i2rs-yang-network-topo] 1017 Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., 1018 and H. Ananthakrishnan, "A YANG Data Model for Network 1019 Topologies", I-D draft-ietf-i2rs-yang-network-topo-06, 1020 September 2016. 1022 [I-D.draft-ietf-nvo3-vxlan-gpe] 1023 Maino, F., Kreeger, L., and U. Elzur, "Generic Protocol 1024 Extension for VXLAN", I-D draft-ietf-i2rs-yang-network- 1025 topo-02, October 2016. 1027 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1028 Requirement Levels", BCP 14, RFC 2119, 1029 DOI 10.17487/RFC2119, March 1997, 1030 . 1032 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1033 Network Configuration Protocol (NETCONF)", RFC 6020, 1034 October 2010. 1036 [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, 1037 July 2013. 1039 [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", 1040 RFC 7950, DOI 10.17487/RFC7950, Auguest 2016. 1042 7.2. Informative References 1044 [I-D.draft-ietf-i2rs-usecase-reqs-summary] 1045 Hares, S. and M. Chen, "Summary of I2RS Use Case 1046 Requirements", I-D draft-ietf-i2rs-usecase-reqs-summary- 1047 01, May 2015. 1049 Appendix A. Non NMDA -state modules 1051 file "ietf-fabric-topology-state@2017-11-29.yang" 1052 module ietf-fabric-topology-state { 1054 yang-version 1.1; 1055 namespace "urn:ietf:params:xml:ns:yang:ietf-fabric-topology-state"; 1056 prefix sfabric; 1058 import ietf-network-state { prefix nws; } 1059 import ietf-fabric-types { prefix fabrictype;} 1060 import ietf-fabric-topology {prefix fabric;} 1061 organization 1062 "IETF I2RS (Interface to the Routing System) Working Group"; 1064 contact 1065 "WG Web: 1066 WG List: 1068 WG Chair: Susan Hares 1069 1071 WG Chair: Russ White 1072 1074 Editor: Yan Zhuang 1075 1077 Editor: Danian Shi 1078 "; 1080 description 1081 "This module contains a collection of YANG definitions for 1082 Fabric topology state for non NMDA. 1084 Copyright (c) 2016 IETF Trust and the persons identified as 1085 authors of the code. All rights reserved. 1087 Redistribution and use in source and binary forms, with or 1088 without modification, is permitted pursuant to, and subject 1089 to the license terms contained in, the Simplified BSD License 1090 set forth in Section 4.c of the IETF Trust's Legal Provisions 1091 Relating to IETF Documents(http://trustee.ietf.org/license-info). 1093 This version of this YANG module is part of 1094 draft-zhuang-i2rs-yang-dc-fabric-network-topology; 1095 see the RFC itself for full legal notices."; 1097 revision "2017-11-29" { 1098 description "fix comments"; 1099 reference 1100 "draft-ietf-i2rs-yang-dc-fabric-network-topology-02"; 1101 } 1103 revision "2017-11-21"{ 1104 description "fix warnings."; 1105 reference 1106 "draft-ietf-i2rs-yang-dc-fabric-network-topology-01"; 1107 } 1109 revision "2017-06-29"{ 1110 description "update to NMDA compliant format"; 1111 reference 1112 "draft-zhuang-i2rs-yang-dc-fabric-network-topology-04"; 1113 } 1115 //grouping statements 1116 grouping fabric-network-type { 1117 description "Identify the topology type to be fabric."; 1118 container fabric-network { 1119 presence "indicates fabric Network"; 1120 description 1121 "The presence of the container node indicates fabric Topology"; 1122 } 1123 } 1125 grouping fabric-options { 1126 description "options for a fabric"; 1127 leaf gateway-mode { 1128 type enumeration { 1129 enum centralized { 1130 description "centerilized gateway"; 1131 } 1132 enum distributed { 1133 description "distributed gateway"; 1134 } 1135 } 1136 default "distributed"; 1137 description "gateway mode"; 1138 } 1140 leaf traffic-behavior { 1141 type enumeration { 1142 enum normal { 1143 description "normal"; 1144 } 1145 enum policy-driven { 1146 description "policy driven"; 1147 } 1148 } 1149 default "normal"; 1150 description "traffic behavior of the fabric"; 1151 } 1153 leaf-list capability-supported { 1154 type fabrictype:service-capabilities; 1155 description 1156 "supported services of the fabric"; 1157 } 1158 } 1160 grouping device-attributes { 1161 description "device attributes"; 1162 leaf device-ref { 1163 type fabrictype:node-ref; 1164 description "the device it includes"; 1165 } 1166 leaf role { 1167 type fabrictype:device-role; 1168 default "LEAF"; 1169 description "role of the node"; 1170 } 1171 } 1173 grouping link-attributes { 1174 description "link attributes"; 1175 leaf link-ref { 1176 type fabrictype:link-ref; 1177 description "the link it includes"; 1178 } 1179 } 1181 grouping port-attributes { 1182 description "port attributes"; 1183 leaf port-ref { 1184 type fabrictype:tp-ref; 1185 description "port reference"; 1186 } 1187 leaf port-type { 1188 type identityref { 1189 base fabrictype:port-type; 1190 } 1191 description 1192 "port type: ethernet or serial or others"; 1193 } 1194 leaf bandwidth { 1195 type identityref { 1196 base fabrictype:bandwidth; 1197 } 1198 description "bandwidth on the port"; 1199 } 1200 } 1202 grouping fabric-attributes { 1203 description "attributes of a fabric"; 1204 leaf fabric-id { 1205 type fabric:fabric-id; 1206 description "fabric id"; 1207 } 1208 leaf name { 1209 type string; 1210 description "name of the fabric"; 1211 } 1212 leaf type { 1213 type fabrictype:underlay-network-type; 1214 description 1215 "The type of physical network that implements this 1216 fabric.Examples are vlan, and trill."; 1217 } 1218 container vni-capacity { 1219 description "number of vnis the fabric has"; 1220 leaf min { 1221 type int32; 1222 description "vni min capacity"; 1223 } 1224 leaf max { 1225 type int32; 1226 description "vni max capacity"; 1227 } 1228 } 1229 leaf description { 1230 type string; 1231 description "description of the fabric"; 1232 } 1233 container options { 1234 description "options of the fabric"; 1235 uses fabric-options; 1236 } 1237 list device-nodes { 1238 key device-ref; 1239 description "include device nodes in the fabric"; 1240 uses device-attributes; 1241 } 1242 list device-links { 1243 key link-ref; 1244 description "include device links within the fabric"; 1245 uses link-attributes; 1246 } 1247 list device-ports { 1248 key port-ref; 1249 description "include device ports within the fabric"; 1250 uses port-attributes; 1251 } 1252 } 1254 // augment statements 1256 augment "/nws:networks/nws:network/nws:network-types" { 1257 description 1258 "Introduce new network type for Fabric-based logical topology"; 1259 uses fabric-network-type; 1260 } 1262 augment "/nws:networks/nws:network/nws:node" { 1263 when "/nws:networks/nws:network/nws:network-types/sfabric:fabric-network" { 1264 description "Augmentation parameters apply only for networks with fabric topology."; 1265 } 1266 description "Augmentation for fabric nodes."; 1267 container fabric-attributes-state { 1268 description 1269 "attributes for a fabric network"; 1270 uses fabric-attributes; 1271 } 1273 } 1274 } 1275 1277 Authors' Addresses 1279 Yan Zhuang 1280 Huawei 1281 101 Software Avenue, Yuhua District 1282 Nanjing, Jiangsu 210012 1283 China 1285 Email: zhuangyan.zhuang@huawei.com 1287 Danian Shi 1288 Huawei 1289 101 Software Avenue, Yuhua District 1290 Nanjing, Jiangsu 210012 1291 China 1293 Email: shidanian@huawei.com 1295 Rong Gu 1296 China Mobile 1297 32 Xuanwumen West Ave, Xicheng District 1298 Beijing, Beijing 100053 1299 China 1301 Email: gurong_cmcc@outlook.com 1303 Hariharan Ananthakrishnan 1304 Packet Design 1306 Email: hari@packetdesign.com