idnits 2.17.1 draft-ietf-i2rs-yang-l2-network-topology-00.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 5 instances of too long lines in the document, the longest one being 5 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (April 22, 2015) is 3290 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) == Outdated reference: A later version (-20) exists of draft-ietf-i2rs-yang-network-topo-00 ** Downref: Normative reference to an Experimental draft: draft-medved-i2rs-topology-im (ref. 'I-D.medved-i2rs-topology-im') ** Obsolete normative reference: RFC 6021 (Obsoleted by RFC 6991) Summary: 3 errors (**), 0 flaws (~~), 2 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group J. Dong 3 Internet-Draft X. Wei 4 Intended status: Standards Track Huawei Technologies 5 Expires: October 24, 2015 April 22, 2015 7 A YANG Data Model for Layer-2 Network Topologies 8 draft-ietf-i2rs-yang-l2-network-topology-00 10 Abstract 12 This document defines a YANG data model for layer-2 network 13 topologies. 15 Requirements Language 17 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 18 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 19 document are to be interpreted as described in RFC 2119 [RFC2119]. 21 Status of This Memo 23 This Internet-Draft is submitted in full conformance with the 24 provisions of BCP 78 and BCP 79. 26 Internet-Drafts are working documents of the Internet Engineering 27 Task Force (IETF). Note that other groups may also distribute 28 working documents as Internet-Drafts. The list of current Internet- 29 Drafts is at http://datatracker.ietf.org/drafts/current/. 31 Internet-Drafts are draft documents valid for a maximum of six months 32 and may be updated, replaced, or obsoleted by other documents at any 33 time. It is inappropriate to use Internet-Drafts as reference 34 material or to cite them other than as "work in progress." 36 This Internet-Draft will expire on October 24, 2015. 38 Copyright Notice 40 Copyright (c) 2015 IETF Trust and the persons identified as the 41 document authors. All rights reserved. 43 This document is subject to BCP 78 and the IETF Trust's Legal 44 Provisions Relating to IETF Documents 45 (http://trustee.ietf.org/license-info) in effect on the date of 46 publication of this document. Please review these documents 47 carefully, as they describe your rights and restrictions with respect 48 to this document. Code Components extracted from this document must 49 include Simplified BSD License text as described in Section 4.e of 50 the Trust Legal Provisions and are provided without warranty as 51 described in the Simplified BSD License. 53 Table of Contents 55 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 56 2. Layer-2 Topology Model . . . . . . . . . . . . . . . . . . . 2 57 3. Layer-2 Topology Yang Module . . . . . . . . . . . . . . . . 5 58 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 59 5. Security Considerations . . . . . . . . . . . . . . . . . . . 13 60 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 61 6.1. Normative References . . . . . . . . . . . . . . . . . . 13 62 6.2. Informative References . . . . . . . . . . . . . . . . . 13 63 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 65 1. Introduction 67 [I-D.medved-i2rs-topology-im] specifies the generic network topology 68 information model, and approaches to extend the generic network 69 topology information model to specific type of network topologies. 70 It also provides the extensions made for Layer-3 unicast IGP, IS-IS 71 and OSPF topologies. [I-D.ietf-i2rs-yang-network-topo] defines the 72 Yang [RFC6020] [RFC6021] data models for generic network topology, L3 73 unicast IGP, IS-IS, OSPF and TED which are derived from the 74 information model defined in [I-D.medved-i2rs-topology-im]. 76 Besides the information collected through "live" layer-3 IGP, 77 [I-D.amante-i2rs-topology-use-cases] also specifies the collection of 78 network information which is not visible within the Layer 3 IGP's 79 LSDB. Such information can be links, nodes, or properties of those 80 links or nodes in lower layers of the network. The requirements on 81 the topology data model in [I-D.medved-i2rs-topology-requirements] 82 also include the physical properties associated with the ports/ 83 interfaces, and information associated with the network element's 84 immediately adjacent neighbors. 86 This document defines the Yang data model for layer-2 network 87 topologies by extending the generic network topology data model 88 defined in [I-D.ietf-i2rs-yang-network-topo]. 90 2. Layer-2 Topology Model 92 In order to represent a layer-2 network topology, the generic network 93 topology model needs to be extended to contain layer-2 specific 94 information. Module "l2-topology" applies the generic network 95 topology model to layer-2 network topologies, and augments the 96 generic network topology with information specific to layer-2 97 networks. 99 The relationship between the l2-topology model and the generic 100 network topology model is shown in the figure below: 102 +---------------------+ 103 | network-topology | 104 +----------+----------+ 105 ^ 106 | 107 | 108 +----------^----------+ 109 | l2-topology | 110 +---------------------+ 111 Figure 1. L2-topology and generic network-topology 113 For layer-2 network topology, there are some layer-2 specific 114 parameters and capabilities to be added to the generic network 115 topology model, such as properties of layer-2 links or nodes, 116 descriptions, layer-2 addresses, encapsulations, etc. Part of the 117 Information collected through LLDP could be included in the layer-2 118 network topology. 120 The structure of "L2-topology" data model is depicted in the 121 following diagram. Brackets enclose list keys, "rw" means 122 configuration data, "ro" means operational state data, "?" designates 123 optional nodes, "*" designates nodes that can have multiple 124 instances. 126 module: ietf-l2-topology 127 augment /nt:network/nt:network-types: 128 +--rw l2-network! 129 augment /nt:network: 130 +--rw l2-network-attributes 131 +--rw name? string 132 +--rw flag* flag-type 133 augment /nt:network/nt:node: 134 +--rw l2-node-attributes 135 +--rw name? string 136 +--rw description? string 137 +--rw chassis-id? yang:mac-address 138 +--rw management-address* inet:ip-prefix 139 +--rw management-vid? vlan 140 +--rw nick-name? nickname {TRILL}? 141 +--rw flag* flag-type 142 augment /nt:network/ntopo:link: 143 +--rw l2-link-attributes 144 +--rw name? string 145 +--rw rate? decimal64 146 +--rw flag* flag-type 147 augment /nt:network/nt:node/ntopo:termination-point: 148 +--rw l2-termination-point-attributes 149 +--rw description? string 150 +--rw mac-address? yang:mac-address 151 +--rw port-vlan-id? vlan 152 +--rw ppvid 153 | +--rw ppvid? vlan 154 | +--rw ppvid-flags? bits 155 +--rw vlan-name* [vlan-id] 156 | +--rw vlan-id vlan 157 | +--rw vlan-name? string 158 +--rw encapsulation? identityref 159 +--rw maximum-frame-size? uint32 160 +--rw link-aggregation 161 | +--rw aggregation-status? bits 162 | +--rw aggregated-port-id? string 163 +--ro tp-state? enumeration 165 The L2-topology module augments the generic network-topology module 166 as follows: 168 o A new network type "l2-network-type" is introduced. This is 169 represented by a container object, and is inserted under the 170 "network-types" container of the generic network module in 171 [I-D.ietf-i2rs-yang-network-topo]. 173 o Additional network attributes are introduced in a grouping "l2- 174 network-attributes", which augments the "network" list of the 175 network module in [I-D.ietf-i2rs-yang-network-topo]. The 176 attributes include an Layer-2 network name and a set of flags. 177 Each type of flag is represented by a separate identity. 179 o Additional data objects for nodes are introduced by augmenting the 180 "node" list of the generic network module. New objects include a 181 series of layer-2 node parameters, as well as a set of flags. 183 o Additional data objects for termination points are introduced by 184 augmenting the "termination-point" list of the generic network- 185 topology module. New objects include a series of port properties 186 and parameters. 188 o Links are augmented as well with a set of parameters, allowing to 189 associate a link with an L2 name, the link rate and another set of 190 flags. 192 3. Layer-2 Topology Yang Module 194 195 file "ietf-l2-topology@2015-04-22.yang" 196 module ietf-l2-topology { 197 yang-version 1; 198 namespace "urn:ietf:params:xml:ns:yang:ietf-l2-topology"; 199 prefix "l2t"; 201 import network { 202 prefix "nt"; 203 } 205 import network-topology { 206 prefix "ntopo"; 207 } 209 import ietf-inet-types { 210 prefix "inet"; 211 } 213 import ietf-yang-types { 214 prefix "yang"; 215 } 217 organization "TBD"; 218 contact "I-D Editor: jie.dong@huawei.com"; 220 description 221 "This module defines a model for the layer-2 topology of a network"; 223 revision "2015-04-22" { 224 description "Initial revision"; 225 reference "draft-ietf-i2rs-yang-l2-network-topology-00"; 226 } 228 /* 229 * Typedefs 230 */ 232 typedef vlan { 233 description "VLAN ID"; 234 type uint16 { 235 range "0..4095"; 236 } 237 } 239 typedef nickname { 240 description "TRILL Nickname"; 241 type uint16; 242 } 244 typedef flag-type { 245 type identityref { 246 base "flag-identity"; 247 } 248 } 250 /* 251 * Features 252 */ 254 feature QinQ { 255 description 256 "Indicates that the system supports the qinq functions"; 257 } 259 feature PBB { 260 description 261 "Indicates that the device supports the 262 provider-backbone-bridging functions"; 263 } 265 feature VPLS { 266 description 267 "Indicates that the device supports the VPLS functions"; 269 reference "RFC 4761, RFC 4762"; 270 } 272 feature TRILL { 273 description 274 "Indicates that the device supports the TRILL functions"; 275 reference "RFC 6325"; 276 } 278 feature VXLAN { 279 description 280 "Indicates that the device supports the VXLAN functions"; 281 reference "RFC 7348"; 282 } 284 /* 285 * Identities 286 */ 288 identity flag-identity { 289 description "Base type for flags"; 290 } 292 identity encapsulation-type { 293 description 294 "Base identity from which specific encapsulation types are 295 derived."; 296 } 298 identity ethernet { 299 base encapsulation-type; 300 description 301 "native ethernet encapsulation"; 302 } 304 identity vlan { 305 base encapsulation-type; 306 description 307 "vlan encapsulation"; 308 } 310 identity qinq { 311 base encapsulation-type; 312 description 313 "qinq encapsulation"; 314 } 315 identity pbb { 316 base encapsulation-type; 317 description 318 "pbb encapsulation"; 319 } 321 identity trill { 322 base encapsulation-type; 323 description 324 "trill encapsulation"; 325 } 327 identity vpls { 328 base encapsulation-type; 329 description 330 "vpls encapsulation"; 331 } 333 identity vxlan { 334 base encapsulation-type; 335 description 336 "vxlan encapsulation"; 337 } 339 /* 340 * Groupings 341 */ 343 grouping l2-network-type { 344 container l2-network { 345 presence "indicates L2 Network"; 346 } 347 } 349 grouping l2-network-attributes { 350 container l2-network-attributes { 351 leaf name { 352 description "Name of the network"; 353 type string; 354 } 356 leaf-list flag { 357 description "L2 network flags"; 358 type flag-type; 359 } 360 } 362 } 364 grouping l2-node-attributes { 365 container l2-node-attributes { 366 leaf name { 367 description "Node name"; 368 type string; 369 } 370 leaf description { 371 description "Node description"; 372 type string; 373 } 374 leaf chassis-id { 375 description "System MAC address"; 376 type yang:mac-address; 377 } 378 leaf-list management-address { 379 description "System management address"; 380 type inet:ip-prefix; 381 } 383 leaf management-vid { 384 description "System management VID"; 385 type vlan; 386 } 388 leaf nick-name { 389 if-feature TRILL; 390 description "Nickname of RBridge"; 391 type nickname; 392 } 394 leaf-list flag { 395 description "Node operational flags"; 396 type flag-type; 397 } 398 } 399 } // grouping l2-node-attributes 401 grouping l2-link-attributes { 402 container l2-link-attributes { 403 leaf name { 404 description "Link name"; 405 type string; 406 } 407 leaf rate { 408 description "Link rate"; 409 type decimal64 { 410 fraction-digits 2; 411 } 412 } 413 leaf-list flag { 414 description "Link flags"; 415 type flag-type; 416 } 418 } 419 } // grouping l2-link-attributes 421 grouping l2-termination-point-attributes { 422 container l2-termination-point-attributes { 423 leaf description { 424 description "Port description"; 425 type string; 426 } 427 leaf mac-address { 428 description "Interface MAC address"; 429 type yang:mac-address; 430 } 431 leaf port-vlan-id { 432 description "Port VLAN ID"; 433 type vlan; 434 } 436 container ppvid { 437 description "Port and protocol VLAN ID"; 438 leaf ppvid { 439 type vlan; 440 } 441 leaf ppvid-flags { 442 type bits { 443 bit port-protocol-vlan-supported { 444 position 1; 445 } 446 bit port-protocol-vlan-enabled { 447 position 2; 448 } 449 } 450 } 451 } 453 list vlan-name { 454 key "vlan-id"; 455 description "Interface configured VLANs"; 456 leaf vlan-id { 457 type vlan; 459 } 460 leaf vlan-name { 461 type string; 462 } 463 } 465 leaf encapsulation { 466 description "encapsulation type of this termination point."; 467 type identityref { 468 base encapsulation-type; 469 } 470 } 472 leaf maximum-frame-size { 473 description "interface maximum frame size"; 474 type uint32; 475 } 477 container link-aggregation { 478 leaf aggregation-status { 479 description "Link aggregation capabilities and status"; 480 type bits { 481 bit aggregation-capability { 482 position 0; 483 } 484 bit aggregation-status { 485 position 1; 486 } 487 } 488 } 489 leaf aggregated-port-id { 490 type string; 491 } 492 } 494 leaf tp-state { 495 config false; 496 type enumeration { 497 enum "forwarding" { 498 value 0; 499 description 500 "the termination point is in forwarding state"; 501 } 502 enum "blocking" { 503 value 1; 504 description 505 "the termination point is in blocking state"; 506 } 507 enum "others" { 508 value 2; 509 description 510 "the termination point is in other state"; 511 } 512 } 513 } 514 } 515 } // grouping l2-termination-point-attributes 517 /* 518 * Data nodes 519 */ 521 augment "/nt:network/nt:network-types" { 522 uses l2-network-type; 523 } 525 augment "/nt:network" { 526 when "nt:network-types/l2-network"; 527 uses l2-network-attributes; 528 } 530 augment "/nt:network/nt:node" { 531 when "../nt:network-types/l2-network"; 532 uses l2-node-attributes; 533 } 535 augment "/nt:network/ntopo:link" { 536 when "/nt:network/nt:network-types/l2-network"; 537 uses l2-link-attributes; 538 } 540 augment "/nt:network/nt:node/ntopo:termination-point" { 541 when "/nt:network/nt:network-types/l2-network"; 542 uses l2-termination-point-attributes; 543 } 545 /* 546 * Notifications: to be added 547 */ 549 } // module l2-topology 551 552 4. IANA Considerations 554 This document makes no request of IANA. 556 Note to RFC Editor: this section may be removed on publication as an 557 RFC. 559 5. Security Considerations 561 The transport protocol used for sending the topology data MUST 562 support authentication and SHOULD support encryption. The data-model 563 by itself does not create any security implications. 565 6. References 567 6.1. Normative References 569 [I-D.ietf-i2rs-yang-network-topo] 570 Clemm, A., Medved, J., Varga, R., Tkacik, T., Bahadur, N., 571 and H. Ananthakrishnan, "A Data Model for Network 572 Topologies", draft-ietf-i2rs-yang-network-topo-00 (work in 573 progress), April 2015. 575 [I-D.medved-i2rs-topology-im] 576 Medved, J., Bahadur, N., Clemm, A., and H. 577 Ananthakrishnan, "An Information Model for Network 578 Topologies", draft-medved-i2rs-topology-im-01 (work in 579 progress), October 2013. 581 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 582 Requirement Levels", BCP 14, RFC 2119, March 1997. 584 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 585 Network Configuration Protocol (NETCONF)", RFC 6020, 586 October 2010. 588 [RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021, 589 October 2010. 591 6.2. Informative References 593 [I-D.amante-i2rs-topology-use-cases] 594 Medved, J., Previdi, S., Lopez, V., and S. Amante, 595 "Topology API Use Cases", draft-amante-i2rs-topology-use- 596 cases-01 (work in progress), October 2013. 598 [I-D.medved-i2rs-topology-requirements] 599 Medved, J., Previdi, S., Gredler, H., Nadeau, T., and S. 600 Amante, "Topology API Requirements", draft-medved-i2rs- 601 topology-requirements-00 (work in progress), February 602 2013. 604 Authors' Addresses 606 Jie Dong 607 Huawei Technologies 608 Huawei Campus, No. 156 Beiqing Rd. 609 Beijing 100095 610 China 612 Email: jie.dong@huawei.com 614 Xiugang Wei 615 Huawei Technologies 616 Huawei Campus, No. 156 Beiqing Rd. 617 Beijing 100095 618 China 620 Email: weixiugang@huawei.com