idnits 2.17.1 draft-ietf-i2rs-yang-dc-fabric-network-topology-01.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 44 instances of too long lines in the document, the longest one being 49 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 279 has weird spacing: '...ice-ref fab...' == Line 282 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 22, 2017) is 2347 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 983, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-i2rs-yang-network-topo' is defined on line 989, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-nvo3-vxlan-gpe' is defined on line 995, but no explicit reference was found in the text == Unused Reference: 'RFC6020' is defined on line 1005, but no explicit reference was found in the text == Unused Reference: 'RFC6991' is defined on line 1009, but no explicit reference was found in the text == Unused Reference: 'RFC7950' is defined on line 1012, but no explicit reference was found in the text == Unused Reference: 'I-D.draft-ietf-i2rs-usecase-reqs-summary' is defined on line 1017, 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: May 26, 2018 R. Gu 6 China Mobile 7 H. Ananthakrishnan 8 Packet Design 9 November 22, 2017 11 A YANG Data Model for Fabric Topology in Data Center Network 12 draft-ietf-i2rs-yang-dc-fabric-network-topology-01 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 May 26, 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 . . . . . . . . . . . . . . . . . . . 21 65 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 66 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 67 7.1. Normative References . . . . . . . . . . . . . . . . . . 22 68 7.2. Informative References . . . . . . . . . . . . . . . . . 22 69 Appendix A. Non NMDA -state modules . . . . . . . . . . . . . . 22 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-attribute 228 +--rw name? string 229 +--rw type? fabrictype:underlayer-network-type 230 +--rw description? string 231 +--rw options 232 +--... 233 augment /nw:networks/nw:network/nw:node/nt:termination-point: 234 +--ro fport-attribute 235 +--ro name? string 236 +--ro role? fabric-port-role 237 +--ro type? fabric-port-type 239 The fabric topology module augments the generic ietf-network and 240 ietf-network-topology modules as follows: 242 o A new topology type "ietf-fabric-topology" is introduced and added 243 under the "network-types" container of the ietf-network module. 245 o Fabric is defined as a node under the network/node container. A 246 new container of "fabric-attribute" is defined to carry attributes 247 for a fabric network such as gateway mode, fabric types, involved 248 device nodes and links etc al. 250 o Termination points (in network topology module) are augmented with 251 fabric port attributes defined in a container. The "termination- 252 point" here can represent the "port" of a fabric that provides 253 connections to other nodes, such as device internally, another 254 fabric externally and also end hosts. 256 Details of fabric node and fabric termination point extension will be 257 explained in the following sections. 259 3.2.2. Fabric node extension 261 As a network, a fabric itself is composed of set of network elements 262 i.e. devices, and related links. As stated previously, the 263 configuration of a fabric is contained under the "fabric-attribute" 264 container depicted as follows: 266 +--rw fabric-attribute 267 +--rw fabric-id? fabric-id 268 +--rw name? string 269 +--rw type? fabrictype:underlayer-network-type 270 +--rw vni-capacity 271 | +--rw min? int32 272 | +--rw max? int32 273 +--rw description? string 274 +--rw options 275 | +--rw gateway-mode? enumeration 276 | +--rw traffic-behavior? enumeration 277 | +--rw capability-supported* fabrictype:service-capabilities 278 +--rw device-nodes* [device-ref] 279 | +--rw device-ref fabrictype:node-ref 280 | +--rw role? fabrictype:device-role 281 +--rw device-links* [link-ref] 282 | +--rw link-ref fabrictype:link-ref 283 +--rw device-ports* [port-ref] 284 +--rw port-ref fabrictype:tp-ref 285 +--rw port-type? enumeration 286 +--rw bandwith? Enumeration 288 As in the module, additional data objects for nodes are introduced by 289 augmenting the "node" list of the network module. New objects 290 include fabric name, type of the fabric, descriptions of the fabric 291 as well as a set of options defined in an "options" container. The 292 options container includes type of the gateway-mode (centralized or 293 distributed) and traffic-behavior (whether acl needed for the 294 traffic). 296 Also, it defines a list of device-nodes and related links as 297 supporting-nodes to form a fabric network. These device nodes and 298 links are leaf-ref of existing nodes and links in the physical 299 topology. For the device-node, the "role" object is defined to 300 represents the role of the device within the fabric, such as "SPINE" 301 or "LEAF", which should work together with gateway-mode. 303 3.2.3. Fabric termination-point extension 305 Since the fabric is considered as a node, in this concept, 306 "termination-points" can represent "ports" of a fabric that connects 307 to other fabrics or end hosts, besides representing ports that 308 connect devices inside the fabric itself. 310 As such, the "termination-point" in the fabric topology has three 311 roles, including internal TP that connects to devices within a 312 fabric, external TP that connects to outside network, as well as 313 access TP to end hosts. 315 A set of "termination-point" indicates all connections of a fabric 316 including its internal connections, interconnections with other 317 fabrics and also connections to end hosts for a DC network. 319 The structure of fabric ports is as follows: 321 augment /nw:networks/nw:network/nw:node/nt:termination-point: 322 +--ro fport-attribute 323 +--ro name? string 324 +--ro role? fabric-port-role 325 +--ro type? fabric-port-type 326 +--ro device-port? tp-ref 327 +--ro (tunnel-option)? 328 +--:(gre) 329 +--ro src-ip? inet:ip-prefix 330 +--ro dest-ip? inet:ip-address 332 It augments the termination points (in network topology module) with 333 fabric port attributes defined in a container. 335 New nodes are defined for fabric ports which include name, role of 336 the port within the fabric (internal port, external port to outside 337 network, access port to end hosts), port type (l2 interface, l3 338 interface etc al). By using the device-port defined as a tp-ref, 339 this fabric port can be mapped to a device node in the underlay 340 network. 342 Also, a new container for tunnel-options is introduced as well to 343 present the tunnel configuration on the port. 345 The terminiation points information are all learnt from the underlay 346 networks but not configured by the fabric topology layer. 348 4. Fabric YANG Module 350 file "ietf-fabric-types@2016-09-29.yang" 351 module ietf-fabric-types { 353 yang-version 1.1; 354 namespace "urn:ietf:params:xml:ns:yang:ietf-fabric-types"; 355 prefix fabrictypes; 357 import ietf-inet-types { prefix "inet"; revision-date "2013-07-15"; } 358 import ietf-network-topology { prefix nt; } 360 organization 361 "IETF I2RS (Interface to the Routing System) Working Group"; 363 contact 364 "WG Web: 365 WG List: 367 WG Chair: Susan Hares 368 370 WG Chair: Russ White 371 373 Editor: Yan Zhuang 374 376 Editor: Danian Shi 377 "; 379 description 380 "This module contains a collection of YANG definitions for Fabric."; 382 revision "2016-09-29" { 383 description 384 "Initial revision of faas."; 385 reference 386 "draft-zhuang-i2rs-yang-dc-fabric-network-topology-02"; 387 } 389 identity fabric-type { 390 description 391 "base type for fabric networks"; 392 } 394 identity vxlan-fabric { 395 base fabric-type; 396 description 397 "vxlan fabric"; 398 } 400 identity vlan-fabric { 401 base fabric-type; 402 description 403 "vlan fabric"; 404 } 405 typedef service-capabilities { 406 type enumeration { 407 enum ip-mapping { 408 description "NAT"; 409 } 410 enum acl-redirect{ 411 description "acl redirect, which can provide SFC function"; 412 } 413 enum dynamic-route-exchange{ 414 description "dynamic route exchange"; 415 } 416 } 417 description 418 "capability of the device"; 419 } 421 /* 422 * Typedefs 423 */ 424 typedef node-ref { 425 type instance-identifier; 426 description "A reference to a node in topology"; 427 } 429 typedef tp-ref { 430 type instance-identifier; 431 description "A reference to a termination point in topology"; 432 } 434 typedef link-ref { 435 type instance-identifier; 436 description "A reference to a link in topology"; 437 } 439 typedef device-role { 440 type enumeration { 441 enum SPINE { 442 description "a spine node"; 443 } 444 enum LEAF { 445 description "a leaf node"; 446 } 447 enum BORDER { 448 description "a border node"; 449 } 450 } 451 default "LEAF"; 452 description "device role type"; 454 } 456 typedef fabric-port-role { 457 type enumeration { 458 enum internal { 459 description "the port used for devices to access each other."; 460 } 461 enum external { 462 description "the port used for fabric to access outside network."; 463 } 464 enum access { 465 description "the port used for Endpoint to access fabric."; 466 } 467 enum reserved { 468 description " not decided yet. "; 469 } 470 } 471 description "the role of the physical port "; 472 } 474 typedef fabric-port-type { 475 type enumeration { 476 enum layer2interface { 477 description "l2 if"; 478 } 479 enum layer3interface { 480 description "l3 if"; 481 } 482 enum layer2Tunnel { 483 description "l2 tunnel"; 484 } 485 enum layer3Tunnel { 486 description "l3 tunnel"; 487 } 488 } 489 description 490 "fabric port type"; 491 } 493 typedef underlayer-network-type { 494 type enumeration { 495 enum VXLAN { 496 description "vxlan"; 497 } 498 enum TRILL { 499 description "trill"; 500 } 501 enum VLAN { 502 description "vlan"; 503 } 504 } 505 description ""; 506 } 508 typedef layer2-protocol-type-enum { 509 type enumeration { 510 enum VLAN{ 511 description "vlan"; 512 } 513 enum VXLAN{ 514 description "vxlan"; 515 } 516 enum TRILL{ 517 description "trill"; 518 } 519 enum NvGRE{ 520 description "nvgre"; 521 } 522 } 523 description ""; 524 } 526 typedef access-type { 527 type enumeration { 528 enum exclusive{ 529 description "exclusive"; 530 } 531 enum vlan{ 532 description "vlan"; 533 } 534 } 535 description ""; 536 } 538 grouping fabric-port { 539 description 540 "attributes of a fabric port"; 541 leaf name { 542 type string; 543 description "name of the port"; 544 } 545 leaf role { 546 type fabric-port-role; 547 description "role of the port in a fabric"; 548 } 549 leaf type { 550 type fabric-port-type; 551 description "type of the port"; 552 } 553 leaf device-port { 554 type tp-ref; 555 description "the device port it mapped to"; 556 } 557 choice tunnel-option { 558 description "tunnel options"; 560 case gre { 561 leaf src-ip { 562 type inet:ip-prefix; 563 description "source address"; 564 } 565 leaf dest-ip { 566 type inet:ip-address; 567 description "destination address"; 568 } 569 } 570 } 571 } 573 grouping route-group { 574 description 575 "route attributes"; 576 list route { 577 key "destination-prefix"; 578 description "route list"; 580 leaf description { 581 type string; 582 description "Textual description of the route."; 583 } 584 leaf destination-prefix { 585 type inet:ipv4-prefix; 586 mandatory true; 587 description "IPv4 destination prefix."; 588 } 589 choice next-hop-options { 590 description "choice of next hop options"; 591 case simple-next-hop { 592 leaf next-hop { 593 type inet:ipv4-address; 594 description "IPv4 address of the next hop."; 595 } 596 leaf outgoing-interface { 597 type nt:tp-id; 598 description "Name of the outgoing interface."; 599 } 600 } 601 } 602 } 603 } 605 grouping port-functions { 606 description 607 "port functions"; 609 container port-function { 610 description "port functions"; 611 choice function-type { 612 description "type of functions"; 613 case ip-mapping { 614 list ip-mapping-entry { 615 key "external-ip"; 616 description "list of NAT entry"; 617 leaf external-ip { 618 type inet:ipv4-address; 619 description "external address"; 620 } 621 leaf internal-ip { 622 type inet:ipv4-address; 623 description "internal address"; 624 } 625 } 626 } 627 } 628 } 629 } 630 grouping acl-list { 631 description "acl list"; 632 list fabric-acl { 633 key fabric-acl-name; 634 description "fabric acl list"; 635 leaf fabric-acl-name { 636 type string; 637 description "acl name"; 638 } 639 } 640 } 641 } 642 644 file "ietf-fabric-topology@2017-11-21.yang" 645 module ietf-fabric-topology { 646 yang-version 1.1; 647 namespace "urn:ietf:params:xml:ns:yang:ietf-fabric-topology"; 648 prefix fabric; 650 import ietf-network { prefix nw; } 651 import ietf-network-topology { prefix nt; } 652 import ietf-fabric-types { prefix fabrictype; revision-date "2016-09-29"; } 654 organization 655 "IETF I2RS (Interface to the Routing System) Working Group"; 657 contact 658 "WG Web: 659 WG List: 661 WG Chair: Susan Hares 662 664 WG Chair: Russ White 665 667 Editor: Yan Zhuang 668 670 Editor: Danian Shi 671 "; 673 description 674 "This module contains a collection of YANG definitions for Fabric. 676 Copyright (c) 2016 IETF Trust and the persons identified as 677 authors of the code. All rights reserved. 679 Redistribution and use in source and binary forms, with or 680 without modification, is permitted pursuant to, and subject 681 to the license terms contained in, the Simplified BSD License 682 set forth in Section 4.c of the IETF Trust's Legal Provisions 683 Relating to IETF Documents 684 (http://trustee.ietf.org/license-info). 686 This version of this YANG module is part of 687 draft-zhuang-i2rs-yang-dc-fabric-network-topology; 688 see the RFC itself for full legal notices."; 690 revision "2017-11-21"{ 691 description 692 "fix warnings."; 694 reference 695 "draft-ietf-i2rs-yang-dc-fabric-network-topology-01"; 696 } 698 revision "2017-06-29"{ 699 description 700 "update to NMDA compliant format"; 701 reference 702 "draft-zhuang-i2rs-yang-dc-fabric-network-topology-04"; 703 } 705 revision "2017-03-10" { 706 description 707 "remove the rpcs and add extra attributes"; 708 reference 709 "draft-zhuang-i2rs-yang-dc-fabric-network-topology-03"; 710 } 711 revision "2016-09-29" { 712 description 713 "Initial revision of fabric topology."; 714 reference 715 "draft-zhuang-i2rs-yang-dc-fabric-network-topology-02"; 716 } 718 identity fabric-context { 719 description 720 "identity of fabric context"; 721 } 723 typedef fabric-id { 724 type nw:node-id; 725 description 726 "An identifier for a fabric in a topology. 727 The identifier is generated by compose-fabric RPC."; 728 } 730 //grouping statements 731 grouping fabric-network-type { 732 description "Identify the topology type to be fabric."; 733 container fabric-network { 734 presence "indicates fabric Network"; 735 description 736 "The presence of the container node indicates 737 fabric Topology"; 738 } 739 } 741 grouping fabric-options { 742 description "options for a fabric"; 744 leaf gateway-mode { 745 type enumeration { 746 enum centralized { 747 description "centerilized gateway"; 748 } 749 enum distributed { 750 description "distributed gateway"; 751 } 752 } 753 default "distributed"; 754 description "gateway mode"; 755 } 757 leaf traffic-behavior { 758 type enumeration { 759 enum normal { 760 description "normal"; 761 } 762 enum policy-driven { 763 description "policy driven"; 764 } 765 } 766 default "normal"; 767 description "traffic behavior of the fabric"; 768 } 770 leaf-list capability-supported { 771 type fabrictype:service-capabilities; 772 description 773 "supported services of the fabric"; 774 } 775 } 777 grouping device-attributes { 778 description "device attributes"; 779 leaf device-ref { 780 type fabrictype:node-ref; 781 description 782 "the device it includes to"; 783 } 784 leaf role { 785 type fabrictype:device-role; 786 default "LEAF"; 787 description 788 "role of the node"; 789 } 791 } 793 grouping link-attributes { 794 description "link attributes"; 795 leaf link-ref { 796 type fabrictype:link-ref; 797 description 798 "the link it includes"; 799 } 800 } 802 grouping port-attributes { 803 description "port attributes"; 804 leaf port-ref { 805 type fabrictype:tp-ref; 806 description 807 "port reference"; 808 } 809 leaf port-type { 810 type enumeration { 811 enum ETH { 812 description "ETH"; 813 } 814 enum SERIAL { 815 description "Serial"; 816 } 817 } 818 description 819 "port type: ethernet or serial"; 820 } 821 leaf bandwith { 822 type enumeration { 823 enum 1G { 824 description "1G"; 825 } 826 enum 10G { 827 description "10G"; 828 } 829 enum 40G { 830 description "40G"; 831 } 832 enum 100G { 833 description "100G"; 834 } 835 enum 10M { 836 description "10M"; 837 } 838 enum 100M { 839 description "100M"; 840 } 841 enum 1M { 842 description "1M"; 843 } 844 } 845 description 846 "bandwidth on the port"; 847 } 848 } 850 grouping fabric-attributes { 851 description "attributes of a fabric"; 853 leaf fabric-id { 854 type fabric-id; 855 description 856 "fabric id"; 857 } 859 leaf name { 860 type string; 861 description 862 "name of the fabric"; 863 } 865 leaf type { 866 type fabrictype:underlayer-network-type; 867 description 868 "The type of physical network that implements this fabric.Examples are vlan, and trill."; 869 } 871 container vni-capacity { 872 description "number of vnis the fabric has"; 873 leaf min { 874 type int32; 875 description 876 "vni min capacity"; 877 } 879 leaf max { 880 type int32; 881 description 882 "vni max capacity"; 883 } 884 } 886 leaf description { 887 type string; 888 description 889 "description of the fabric"; 890 } 892 container options { 893 description "options of the fabric"; 894 uses fabric-options; 895 } 897 list device-nodes { 898 key device-ref; 899 description "include device nodes in the fabric"; 900 uses device-attributes; 901 } 903 list device-links { 904 key link-ref; 905 description "include device links within the fabric"; 906 uses link-attributes; 907 } 909 list device-ports { 910 key port-ref; 911 description "include device ports within the fabric"; 912 uses port-attributes; 913 } 915 } 917 // augment statements 919 augment "/nw:networks/nw:network/nw:network-types" { 920 description 921 "Introduce new network type for Fabric-based logical topology"; 923 uses fabric-network-type; 924 } 926 augment "/nw:networks/nw:network/nw:node" { 927 when "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" { 928 description 929 "Augmentation parameters apply only for networks 930 with fabric topology"; 931 } 932 description "Augmentation for fabric nodes created by faas."; 934 container fabric-attribute { 935 description 936 "attributes for a fabric network"; 938 uses fabric-attributes; 939 } 940 } 942 augment "/nw:networks/nw:network/nw:node/nt:termination-point" { 943 when "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" { 944 description 945 "Augmentation parameters apply only for networks 946 with fabric topology"; 947 } 948 description "Augmentation for port on fabric."; 950 container fport-attribute { 951 config false; 952 description 953 "attributes for fabric ports"; 954 uses fabrictype:fabric-port; 955 } 956 } 957 } 958 960 5. Security Consideration 962 The underlay topology is learnt from the physical network, while the 963 fabric topology is composed of a collection of the underlay 964 nodes. The fabric model doesn't change the connections of underlay 965 networks. While there are data nodes for fabric configuration, these 966 data nodes may be considered sensitive or vulnerable in some network 967 enviroments. Write operations (e.g., edit-config) to these data 968 nodes without proper protection can have a negative effect on network 969 operations. For example, misconfiguration of underlay nodes to a 970 fabric node may lead to inproper activities when management are 971 implemented at fabric layer by customers. 973 6. Acknowledgements 975 We wish to acknowledge the helpful contributions, comments, and 976 suggestions that were received from Alexander Clemm, Xufeng Liu, 977 Susan Hares, Wei Song, Luis M. Contreras and Benoit Claise. 979 7. References 981 7.1. Normative References 983 [I-D.draft-ietf-i2rs-yang-l3-topology] 984 Clemm, A., Medved, J., Tkacik, T., Liu, X., Bryskin, I., 985 Guo, A., Ananthakrishnan, H., Bahadur, N., and V. Beeram, 986 "A YANG Data Model for Layer 3 Topologies", I-D draft- 987 ietf-i2rs-yang-l3-topology-04, September 2016. 989 [I-D.draft-ietf-i2rs-yang-network-topo] 990 Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., 991 and H. Ananthakrishnan, "A YANG Data Model for Network 992 Topologies", I-D draft-ietf-i2rs-yang-network-topo-06, 993 September 2016. 995 [I-D.draft-ietf-nvo3-vxlan-gpe] 996 Maino, F., Kreeger, L., and U. Elzur, "Generic Protocol 997 Extension for VXLAN", I-D draft-ietf-i2rs-yang-network- 998 topo-02, October 2016. 1000 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1001 Requirement Levels", BCP 14, RFC 2119, 1002 DOI 10.17487/RFC2119, March 1997, 1003 . 1005 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1006 Network Configuration Protocol (NETCONF)", RFC 6020, 1007 October 2010. 1009 [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, 1010 July 2013. 1012 [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", 1013 RFC 7950, DOI 10.17487/RFC7950, Auguest 2016. 1015 7.2. Informative References 1017 [I-D.draft-ietf-i2rs-usecase-reqs-summary] 1018 Hares, S. and M. Chen, "Summary of I2RS Use Case 1019 Requirements", I-D draft-ietf-i2rs-usecase-reqs-summary- 1020 01, May 2015. 1022 Appendix A. Non NMDA -state modules 1024 file "ietf-fabric-topology-state@2017-11-21.yang" 1025 module ietf-fabric-topology-state { 1027 yang-version 1.1; 1028 namespace "urn:ietf:params:xml:ns:yang:ietf-fabric-topology-state"; 1029 prefix sfabric; 1031 import ietf-network-state { prefix nws; } 1032 import ietf-fabric-types { prefix fabrictype; revision-date "2016-09-29"; } 1033 import ietf-fabric-topology {prefix fabric;} 1034 organization 1035 "IETF I2RS (Interface to the Routing System) Working Group"; 1037 contact 1038 "WG Web: 1039 WG List: 1041 WG Chair: Susan Hares 1042 1044 WG Chair: Russ White 1045 1047 Editor: Yan Zhuang 1048 1050 Editor: Danian Shi 1051 "; 1053 description 1054 "This module contains a collection of YANG definitions for Fabric topology state for non NMDA. 1056 Copyright (c) 2016 IETF Trust and the persons identified as 1057 authors of the code. All rights reserved. 1059 Redistribution and use in source and binary forms, with or 1060 without modification, is permitted pursuant to, and subject 1061 to the license terms contained in, the Simplified BSD License 1062 set forth in Section 4.c of the IETF Trust's Legal Provisions 1063 Relating to IETF Documents 1064 (http://trustee.ietf.org/license-info). 1066 This version of this YANG module is part of 1067 draft-zhuang-i2rs-yang-dc-fabric-network-topology; 1068 see the RFC itself for full legal notices."; 1070 revision "2017-11-21"{ 1071 description 1072 "fix warnings."; 1073 reference 1074 "draft-ietf-i2rs-yang-dc-fabric-network-topology-01"; 1075 } 1077 revision "2017-06-29"{ 1078 description 1079 "update to NMDA compliant format"; 1080 reference 1081 "draft-zhuang-i2rs-yang-dc-fabric-network-topology-04"; 1082 } 1084 //grouping statements 1085 grouping fabric-network-type { 1086 description "Identify the topology type to be fabric."; 1087 container fabric-network { 1088 presence "indicates fabric Network"; 1089 description 1090 "The presence of the container node indicates 1091 fabric Topology"; 1092 } 1093 } 1095 grouping fabric-options { 1096 description "options for a fabric"; 1098 leaf gateway-mode { 1099 type enumeration { 1100 enum centralized { 1101 description "centerilized gateway"; 1102 } 1103 enum distributed { 1104 description "distributed gateway"; 1105 } 1106 } 1107 default "distributed"; 1108 description "gateway mode"; 1109 } 1111 leaf traffic-behavior { 1112 type enumeration { 1113 enum normal { 1114 description "normal"; 1115 } 1116 enum policy-driven { 1117 description "policy driven"; 1118 } 1119 } 1120 default "normal"; 1121 description "traffic behavior of the fabric"; 1123 } 1125 leaf-list capability-supported { 1126 type fabrictype:service-capabilities; 1127 description 1128 "supported services of the fabric"; 1129 } 1130 } 1132 grouping device-attributes { 1133 description "device attributes"; 1134 leaf device-ref { 1135 type fabrictype:node-ref; 1136 description 1137 "the device it includes to"; 1138 } 1139 leaf role { 1140 type fabrictype:device-role; 1141 default "LEAF"; 1142 description 1143 "role of the node"; 1144 } 1145 } 1147 grouping link-attributes { 1148 description "link attributes"; 1149 leaf link-ref { 1150 type fabrictype:link-ref; 1151 description 1152 "the link it includes"; 1153 } 1154 } 1156 grouping port-attributes { 1157 description "port attributes"; 1158 leaf port-ref { 1159 type fabrictype:tp-ref; 1160 description 1161 "port reference"; 1162 } 1163 leaf port-type { 1164 type enumeration { 1165 enum ETH { 1166 description "ETH"; 1167 } 1168 enum SERIAL { 1169 description "Serial"; 1170 } 1172 } 1173 description 1174 "port type: ethernet or serial"; 1175 } 1176 leaf bandwith { 1177 type enumeration { 1178 enum 1G { 1179 description "1G"; 1180 } 1181 enum 10G { 1182 description "10G"; 1183 } 1184 enum 40G { 1185 description "40G"; 1186 } 1187 enum 100G { 1188 description "100G"; 1189 } 1190 enum 10M { 1191 description "10M"; 1192 } 1193 enum 100M { 1194 description "100M"; 1195 } 1196 enum 1M { 1197 description "1M"; 1198 } 1199 } 1200 description 1201 "bandwidth on the port"; 1202 } 1203 } 1205 grouping fabric-attributes { 1206 description "attributes of a fabric"; 1208 leaf fabric-id { 1209 type fabric:fabric-id; 1210 description 1211 "fabric id"; 1212 } 1214 leaf name { 1215 type string; 1216 description 1217 "name of the fabric"; 1218 } 1219 leaf type { 1220 type fabrictype:underlayer-network-type; 1221 description 1222 "The type of physical network that implements this fabric.Examples are vlan, and trill."; 1223 } 1225 container vni-capacity { 1226 description "number of vnis the fabric has"; 1227 leaf min { 1228 type int32; 1229 description 1230 "vni min capacity"; 1231 } 1233 leaf max { 1234 type int32; 1235 description 1236 "vni max capacity"; 1237 } 1238 } 1240 leaf description { 1241 type string; 1242 description 1243 "description of the fabric"; 1244 } 1246 container options { 1247 description "options of the fabric"; 1248 uses fabric-options; 1249 } 1251 list device-nodes { 1252 key device-ref; 1253 description "include device nodes in the fabric"; 1254 uses device-attributes; 1255 } 1257 list device-links { 1258 key link-ref; 1259 description "include device links within the fabric"; 1260 uses link-attributes; 1261 } 1263 list device-ports { 1264 key port-ref; 1265 description "include device ports within the fabric"; 1266 uses port-attributes; 1268 } 1270 } 1272 // augment statements 1274 augment "/nws:networks/nws:network/nws:network-types" { 1275 description 1276 "Introduce new network type for Fabric-based logical topology"; 1278 uses fabric-network-type; 1279 } 1281 augment "/nws:networks/nws:network/nws:node" { 1282 when "/nws:networks/nws:network/nws:network-types/sfabric:fabric-network" { 1283 description 1284 "Augmentation parameters apply only for networks 1285 with fabric topology."; 1286 } 1287 description "Augmentation for fabric nodes."; 1289 container fabric-attribute-state { 1290 config false; 1291 description 1292 "attributes for a fabric network"; 1294 uses fabric-attributes; 1295 } 1296 } 1297 } 1299 1301 Authors' Addresses 1303 Yan Zhuang 1304 Huawei 1305 101 Software Avenue, Yuhua District 1306 Nanjing, Jiangsu 210012 1307 China 1309 Email: zhuangyan.zhuang@huawei.com 1310 Danian Shi 1311 Huawei 1312 101 Software Avenue, Yuhua District 1313 Nanjing, Jiangsu 210012 1314 China 1316 Email: shidanian@huawei.com 1318 Rong Gu 1319 China Mobile 1320 32 Xuanwumen West Ave, Xicheng District 1321 Beijing, Beijing 100053 1322 China 1324 Email: gurong_cmcc@outlook.com 1326 Hariharan Ananthakrishnan 1327 Packet Design 1329 Email: hari@packetdesign.com