idnits 2.17.1 draft-ietf-i2rs-yang-l2-network-topology-13.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 186 has weird spacing: '...vlan-id dot...' == Line 187 has weird spacing: '...vlan-id dot...' == Line 243 has weird spacing: '...vlan-id dot...' == Line 244 has weird spacing: '...vlan-id dot...' -- The document date (March 11, 2020) is 1506 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) == Unused Reference: 'RFC6325' is defined on line 1160, but no explicit reference was found in the text == Unused Reference: 'RFC7348' is defined on line 1165, but no explicit reference was found in the text Summary: 0 errors (**), 0 flaws (~~), 7 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 Q. Wu 5 Expires: September 12, 2020 Huawei 6 M. Boucadair 7 Orange 8 A. Liu 9 Tecent 10 March 11, 2020 12 A YANG Data Model for Layer-2 Network Topologies 13 draft-ietf-i2rs-yang-l2-network-topology-13 15 Abstract 17 This document defines a YANG data model for Layer 2 network 18 topologies. 20 Editorial Note (To be removed by RFC Editor) 22 Please update these statements within the document with the RFC 23 number to be assigned to this document: 25 o "This version of this YANG module is part of RFC XXXX;" 27 o "RFC XXXX: A YANG Data Model for Layer-2 Network Topologies"; 29 o reference: RFC XXXX 31 Please update the "revision" date of the YANG module. 33 Status of This Memo 35 This Internet-Draft is submitted in full conformance with the 36 provisions of BCP 78 and BCP 79. 38 Internet-Drafts are working documents of the Internet Engineering 39 Task Force (IETF). Note that other groups may also distribute 40 working documents as Internet-Drafts. The list of current Internet- 41 Drafts is at https://datatracker.ietf.org/drafts/current/. 43 Internet-Drafts are draft documents valid for a maximum of six months 44 and may be updated, replaced, or obsoleted by other documents at any 45 time. It is inappropriate to use Internet-Drafts as reference 46 material or to cite them other than as "work in progress." 48 This Internet-Draft will expire on September 12, 2020. 50 Copyright Notice 52 Copyright (c) 2020 IETF Trust and the persons identified as the 53 document authors. All rights reserved. 55 This document is subject to BCP 78 and the IETF Trust's Legal 56 Provisions Relating to IETF Documents 57 (https://trustee.ietf.org/license-info) in effect on the date of 58 publication of this document. Please review these documents 59 carefully, as they describe your rights and restrictions with respect 60 to this document. Code Components extracted from this document must 61 include Simplified BSD License text as described in Section 4.e of 62 the Trust Legal Provisions and are provided without warranty as 63 described in the Simplified BSD License. 65 Table of Contents 67 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 68 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 69 3. Layer 2 Topology Model . . . . . . . . . . . . . . . . . . . 3 70 4. Layer 2 Topology YANG Module . . . . . . . . . . . . . . . . 7 71 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 72 6. Security Considerations . . . . . . . . . . . . . . . . . . . 21 73 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 23 74 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 75 8.1. Normative References . . . . . . . . . . . . . . . . . . 23 76 8.2. Informative References . . . . . . . . . . . . . . . . . 24 77 Appendix A. Companion YANG Module for Non-NMDA Compliant 78 Implementations . . . . . . . . . . . . . . . . . . 25 79 Appendix B. An Example . . . . . . . . . . . . . . . . . . . . . 29 80 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 82 1. Introduction 84 [RFC8345] defines the YANG [RFC6020] [RFC7950] data models of the 85 abstract (generic) network and network topology. Such models can be 86 augmented with technology-specific details to build more specific 87 topology models. 89 This document defines the YANG data model for Layer 2 (L2) network 90 topologies by augmenting the generic network (Section 6.1 of 91 [RFC8345]) and network topology (Section 6.2 of [RFC8345]) data 92 models with L2-specific topology attributes. A sample example is 93 provided in Appendix B. 95 This document uses the common YANG types defined in [RFC6991] and 96 adopts the Network Management Datastore Architecture (NMDA 97 [RFC8342]). 99 The terminology for describing YANG modules is defined in [RFC7950]. 100 The meanings of the symbols used in the tree diagram are defined in 101 [RFC8340]. 103 2. Terminology 105 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 106 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 107 "OPTIONAL" in this document are to be interpreted as described in BCP 108 14 [RFC2119] [RFC8174] when, and only when, they appear in all 109 capitals, as shown here. 111 3. Layer 2 Topology Model 113 The Layer 2 network topology YANG module is designed to be generic 114 and applicable to Layer 2 networks built with different L2 115 technologies. It can be used to describe both the physical and the 116 logical (virtual) L2 network topologies. 118 The relationship between the Layer 2 topology module and the generic 119 network and network topology module is shown in Figure 1. In order 120 to represent a Layer 2 network topology, the generic network and 121 topology models are augmented with Layer-2 specific information, such 122 as the identifiers, identities (e.g., Provider Backbone 123 Bridging[IEEE802.1ah] or QinQ[IEEE802.1ad]), attributes, and states 124 of the Layer-2 networks, nodes, links, and termination points. Some 125 of the information may be collected via Link Layer Discovery Protocol 126 (LLDP) [IEEE802.1AB] or other Layer-2 protocols, and some of them may 127 be locally configured. 129 +---------------------+ 130 | ietf-network | 131 +----------^----------+ 132 | 133 | 134 +---------------------+ 135 |ietf-network-topology| 136 +----------^----------+ 137 | 138 | 139 +----------^----------+ 140 | ietf-l2-topology | 141 +---------------------+ 143 Figure 1: Layer-2 Topology YANG Module Structure 145 The structure of "ietf-l2-topology" YANG module is depicted in the 146 following tree diagram: 148 module: ietf-l2-topology 149 augment /nw:networks/nw:network/nw:network-types: 150 +--rw l2-network! 151 augment /nw:networks/nw:network: 152 +--rw l2-network-attributes 153 +--rw name? string 154 +--rw flag* l2-flag-type 155 augment /nw:networks/nw:network/nw:node: 156 +--rw l2-node-attributes 157 +--rw name? string 158 +--rw description? string 159 +--rw management-address* inet:ip-address 160 +--rw sys-mac-address? yang:mac-address 161 +--rw management-vid? dot1q-types:vlanid {VLAN}? 162 +--rw flag* node-flag-type 163 augment /nw:networks/nw:network/nt:link: 164 +--rw l2-link-attributes 165 +--rw name? string 166 +--rw flag* link-flag-type 167 +--rw rate? decimal64 168 +--rw delay? uint32 169 +--rw srlg* uint32 170 augment /nw:networks/nw:network/nw:node/nt:termination-point: 171 +--rw l2-termination-point-attributes 172 +--rw description? string 173 +--rw maximum-frame-size? uint32 174 +--rw (l2-termination-point-type)? 175 | +--:(ethernet) 176 | | +--rw mac-address? yang:mac-address 177 | | +--rw eth-encapsulation? identityref 178 | | +--rw lag? boolean 179 | | +--rw member-link-tp* leafref 180 | | +--rw mode? neg-mode 181 | | +--rw port-vlan-id? dot1q-types:vlanid {VLAN}? 182 | | +--rw vlan-id-name* [vlan-id] {VLAN}? 183 | | | +--rw vlan-id dot1q-types:vlanid 184 | | | +--rw vlan-name? string 185 | | +--rw qinq* [svlan-id cvlan-id] {QinQ}? 186 | | | +--rw svlan-id dot1q-types:vlanid 187 | | | +--rw cvlan-id dot1q-types:vlanid 188 | | +--rw vxlan {VXLAN}? 189 | | +--rw vni-id? vni 190 | +--:(legacy) 191 | +--rw layer-2-address? yang:phys-address 192 | +--rw encapsulation? identityref 193 +--ro tp-state? enumeration 195 notifications: 197 +---n l2-node-event 198 | +--ro event-type? l2-network-event-type 199 | +--ro node-ref? leafref 200 | +--ro network-ref? -> /nw:networks/network/network-id 201 | +--ro l2-network! 202 | +--ro l2-node-attributes 203 | +--ro name? string 204 | +--ro description? string 205 | +--ro management-address* inet:ip-address 206 | +--ro sys-mac-address? yang:mac-address 207 | +--ro management-vid? dot1q-types:vlanid {VLAN}? 208 | +--ro flag* node-flag-type 209 +---n l2-link-event 210 | +--ro event-type? l2-network-event-type 211 | +--ro link-ref? leafref 212 | +--ro network-ref? -> /nw:networks/network/network-id 213 | +--ro l2-network! 214 | +--ro l2-link-attributes 215 | +--ro name? string 216 | +--ro flag* link-flag-type 217 | +--ro rate? decimal64 218 | +--ro delay? uint32 219 | +--ro srlg* uint32 220 +---n l2-termination-point-event 221 +--ro event-type? l2-network-event-type 222 +--ro tp-ref? leafref 223 +--ro node-ref? leafref 224 +--ro network-ref? 225 | -> /nw:networks/network/network-id 226 +--ro l2-network! 227 +--ro l2-termination-point-attributes 228 +--ro description? string 229 +--ro maximum-frame-size? uint32 230 +--ro (l2-termination-point-type)? 231 | +--:(ethernet) 232 | | +--ro mac-address? yang:mac-address 233 | | +--ro eth-encapsulation? identityref 234 | | +--ro lag? boolean 235 | | +--ro member-link-tp* leafref 236 | | +--ro mode? neg-mode 237 | | +--ro port-vlan-id? dot1q-types:vlanid 238 | | | {VLAN}? 239 | | +--ro vlan-id-name* [vlan-id] {VLAN}? 240 | | | +--ro vlan-id dot1q-types:vlanid 241 | | | +--ro vlan-name? string 242 | | +--ro qinq* [svlan-id cvlan-id] {QinQ}? 243 | | | +--ro svlan-id dot1q-types:vlanid 244 | | | +--ro cvlan-id dot1q-types:vlanid 245 | | +--ro vxlan {VXLAN}? 246 | | +--ro vni-id? vni 247 | +--:(legacy) 248 | +--ro layer-2-address? yang:phys-address 249 | +--ro encapsulation? identityref 250 +--ro tp-state? enumeration 252 The Layer-2 topology YANG module augments the 'ietf-network' and 253 'ietf-network-topology' YANG modules as follows: 255 o A new network type "l2-network-type" is introduced. This is 256 represented by a container object, and is inserted under the 257 "network-types" container of the generic 'ietf-network' module 258 defined in [RFC8345]. 260 o Additional network attributes are introduced in a grouping "l2- 261 network-attributes", which augments the "network" list of the 262 'ietf-network' module. The attributes include Layer-2 network 263 name and a set of flags. Each type of flag is represented by a 264 separate identity. 266 o Additional data objects for Layer-2 nodes are introduced by 267 augmenting the "node" list of the generic 'ietf-network' module. 268 New objects include Layer-2 node identifier, description, 269 management address, and a set of flags. 271 o Additional data objects for Layer-2 termination points are 272 introduced by augmenting the "termination-point" list of the 273 'ietf-network-topology' module defined in [RFC8345]. New objects 274 include Layer-2 termination point descriptions, Layer-2 275 termination point type specific attributes and Layer-2 termination 276 point states. 278 o Links in the 'ietf-network-topology' module are augmented as well 279 with a set of Layer-2 parameters, allowing to associate a link 280 with a name, a set of Layer-2 link attributes and flags. 282 o Some optional L2 technology specific attributes are introduced in 283 this module as Layer-2 features because these attributes may be 284 useful to expose to above services/applications. Note that 285 learning or configuring advanced L2 technology-specific attributes 286 is not within the scope of the Layer-2 Topology YANG module; 287 dedicated YANG modules should be used instead (e.g., 288 [I-D.ietf-trill-yang]). 290 4. Layer 2 Topology YANG Module 292 This module uses types defined in [RFC6991], [RFC7224], 293 [IEEE802.1Qcp], and [RFC8345]. It also references [RFC4761], 294 [RFC4762], and [RFC4202]. 296 file "ietf-l2-topology@2019-10-15.yang" 297 module ietf-l2-topology { 298 yang-version 1.1; 299 namespace "urn:ietf:params:xml:ns:yang:ietf-l2-topology"; 300 prefix l2t; 302 import ietf-network { 303 prefix nw; 304 reference 305 "RFC 8345: A YANG Data Model for Network Topologies"; 306 } 307 import ietf-network-topology { 308 prefix nt; 309 reference 310 "RFC 8345: A YANG Data Model for Network Topologies"; 311 } 312 import ietf-inet-types { 313 prefix inet; 314 reference 315 "Section 4 of RFC 6991"; 316 } 317 import ietf-yang-types { 318 prefix yang; 319 reference 320 "Section 3 of RFC 6991"; 321 } 322 import iana-if-type { 323 prefix ift; 324 reference 325 "RFC 7224: IANA Interface Type YANG Module"; 326 } 327 import ieee802-dot1q-types { 328 prefix dot1q-types; 329 reference 330 "IEEE Std 802.1Qcp-2018: Bridges and Bridged 331 Networks - Amendment: YANG Data Model."; 332 } 334 organization 335 "IETF I2RS (Interface to the Routing System) Working Group"; 336 contact 337 "WG Web: 338 WG List: 339 Editor: Jie Dong 340 342 Editor: Xiugang Wei 343 345 Editor: Qin Wu 346 348 Editor: Mohamed Boucadair 349 351 Editor: Anders Liu 352 "; 353 description 354 "This module defines a basic model for 355 the layer-2 topology of a network. 357 Copyright (c) 2020 IETF Trust and the persons identified as 358 authors of the code. All rights reserved. 360 Redistribution and use in source and binary forms, with or 361 without modification, is permitted pursuant to, and subject 362 to the license terms contained in, the Simplified BSD License 363 set forth in Section 4.c of the IETF Trust's Legal Provisions 364 Relating to IETF Documents 365 (http://trustee.ietf.org/license-info). 367 This version of this YANG module is part of 368 RFC XXXX: A YANG Data Model for Layer-2 Network Topologies 369 see the RFC itself for full legal notices."; 371 revision 2019-10-15 { 372 description 373 "Initial revision"; 374 reference 375 "RFC XXXX: A YANG Data Model for Layer-2 Network 376 Topologies"; 377 } 379 /* 380 * Typedefs 381 */ 383 typedef vni { 384 type uint32 { 385 range "1..16777215"; 387 } 388 description 389 "VxLAN Network Identifier"; 390 reference 391 "RFC 7348: Virtual eXtensible Local Area 392 Network (VXLAN): A Framework for Overlaying 393 Virtualized Layer 2 Networks over Layer 3 394 Networks"; 395 } 397 typedef l2-flag-type { 398 type identityref { 399 base flag-identity; 400 } 401 description 402 "Base type for L2 flags. One example of L2 flag 403 type is trill which represents trill topology 404 type."; 405 } 407 typedef node-flag-type { 408 type identityref { 409 base flag-identity; 410 } 411 description 412 "Node flag attributes.The physical node can be 413 one example of node flag attribute."; 414 } 416 typedef link-flag-type { 417 type identityref { 418 base flag-identity; 419 } 420 description 421 "Link flag attributes. One example of link flag 422 attribute is the pseudowire."; 423 } 425 typedef l2-network-event-type { 426 type enumeration { 427 enum add { 428 value 0; 429 description 430 "A Layer-2 node or link or termination-point 431 has been added."; 432 } 433 enum remove { 434 value 1; 435 description 436 "A Layer-2 node or link or termination-point 437 has been removed."; 438 } 439 enum update { 440 value 2; 441 description 442 "A Layer-2 node or link or termination-point 443 has been updated."; 444 } 445 } 446 description 447 "Layer-2 network event type for notifications."; 448 } 450 // l2-topology-event-type 452 typedef neg-mode { 453 type enumeration { 454 enum full-duplex { 455 description 456 "Indicates full-duplex mode."; 457 } 458 enum auto-neg { 459 description 460 "Indicates auto-negotiation mode."; 461 } 462 enum half-duplex { 463 description 464 "Indicates half-duplex mode."; 465 } 466 } 467 description 468 "Indicates the type of the negotiation mode."; 469 } 471 // negotiation mode 472 /* 474 * Features 475 */ 477 feature VLAN { 478 description 479 "Indicates that the system supports the 480 vlan functions (also known as an IEEE 802.1Q tag)."; 481 } 482 feature QinQ { 483 description 484 "Indicates that the system supports the 485 qinq functions (also known as IEEE 802.1ad double tag)"; 486 } 488 feature VXLAN { 489 description 490 "Indicates that the device supports VXLAN functions."; 491 reference 492 "RFC 7348: Virtual eXtensible Local Area Network (VXLAN): 493 A Framework for Overlaying Virtualized Layer 2 Networks 494 over Layer 3 Networks"; 495 } 497 /* 498 * Identities 499 */ 501 identity flag-identity { 502 description 503 "Base type for flags."; 504 } 506 identity eth-encapsulation-type { 507 base ift:iana-interface-type; 508 description 509 "Base identity from which specific Ethernet 510 encapsulation types are derived."; 511 reference 512 "RFC 7224: IANA Interface Type YANG Module"; 513 } 515 identity ethernet { 516 base eth-encapsulation-type; 517 description 518 "Native Ethernet encapsulation."; 519 } 521 identity vlan { 522 base eth-encapsulation-type; 523 description 524 "VLAN encapsulation."; 525 } 527 identity qinq { 528 base eth-encapsulation-type; 529 description 530 "QinQ encapsulation."; 531 } 533 identity pbb { 534 base eth-encapsulation-type; 535 description 536 "Provider-backbone-bridging (PBB) encapsulation. 537 The PBB functions are developed in IEEE 802.1ah."; 538 } 540 identity trill { 541 base eth-encapsulation-type; 542 description 543 "TRILL encapsulation."; 544 } 546 identity vpls { 547 base eth-encapsulation-type; 548 description 549 "Ethernet VPLS interface encapsulation."; 550 } 552 identity vxlan { 553 base eth-encapsulation-type; 554 description 555 "VXLAN MAC in UDP encapsulation."; 556 } 558 /* 559 * Groupings 560 */ 562 grouping l2-network-type { 563 description 564 "Indicates the topology type to be L2."; 565 container l2-network { 566 presence "indicates L2 Network"; 567 description 568 "The presence of the container node indicates 569 L2 Topology."; 570 } 571 } 573 grouping l2-network-attributes { 574 description 575 "L2 Topology scope attributes."; 576 container l2-network-attributes { 577 description 578 "Contains L2 network attributes."; 579 leaf name { 580 type string; 581 description 582 "Name of the L2 network."; 583 } 584 leaf-list flag { 585 type l2-flag-type; 586 description 587 "L2 network flags."; 588 } 589 } 590 } 592 grouping l2-node-attributes { 593 description 594 "L2 node attributes"; 595 container l2-node-attributes { 596 description 597 "Contains L2 node attributes."; 598 leaf name { 599 type string; 600 description 601 "Node name."; 602 } 603 leaf description { 604 type string; 605 description 606 "Node description."; 607 } 608 leaf-list management-address { 609 type inet:ip-address; 610 description 611 "System management address."; 612 } 613 leaf sys-mac-address { 614 type yang:mac-address; 615 description 616 "System MAC-address."; 617 } 618 leaf management-vid { 619 if-feature "VLAN"; 620 type dot1q-types:vlanid; 621 description 622 "System management VID."; 623 } 624 leaf-list flag { 625 type node-flag-type; 626 description 627 "Node operational flags."; 628 } 629 } 630 } 632 // grouping l2-node-attributes 634 grouping l2-link-attributes { 635 description 636 "L2 link attributes"; 637 container l2-link-attributes { 638 description 639 "Contains L2 link attributes."; 640 leaf name { 641 type string; 642 description 643 "Link name."; 644 } 645 leaf-list flag { 646 type link-flag-type; 647 description 648 "Link flags."; 649 } 650 leaf rate { 651 type decimal64 { 652 fraction-digits 2; 653 } 654 units "Mbps"; 655 description 656 "Link rate."; 657 } 658 leaf delay { 659 type uint32; 660 units "microseconds"; 661 description 662 "Link delay in microseconds."; 663 } 664 leaf-list srlg { 665 type uint32; 666 description 667 "List of Shared Risk Link Groups 668 this link belongs to."; 669 reference 670 "RFC 4202: Routing Extensions in Support of 671 Generalized Multi-Protocol Label Switching 672 (GMPLS)"; 673 } 675 } 676 } 678 // grouping l2-link-attributes 680 grouping l2-termination-point-attributes { 681 description 682 "L2 termination point attributes"; 683 container l2-termination-point-attributes { 684 description 685 "Containing L2 termination point attributes."; 686 leaf description { 687 type string; 688 description 689 "Port description."; 690 } 691 leaf maximum-frame-size { 692 type uint32; 693 description 694 "Maximum L2 frame size. If L2 frame is an Ethernet 695 frame, the Ethernet header should be included; 696 if L2 frame is other type (e.g.,PPP), the L2 697 header should be included."; 698 } 699 choice l2-termination-point-type { 700 description 701 "Indicates termination-point type 702 specific attributes."; 703 case ethernet { 704 leaf mac-address { 705 type yang:mac-address; 706 description 707 "Interface MAC address."; 708 } 709 leaf eth-encapsulation { 710 type identityref { 711 base eth-encapsulation-type; 712 } 713 description 714 "Encapsulation type of this 715 termination point."; 716 } 717 leaf lag { 718 type boolean; 719 default "false"; 720 description 721 "Defines whether lag is support or not."; 722 } 723 leaf-list member-link-tp { 724 when "../lag = 'true'" { 725 description 726 "Relevant only when the lag interface is supported."; 727 } 728 type leafref { 729 path "/nw:networks/nw:network/nw:node/"+ 730 "nt:termination-point/nt:tp-id"; 731 } 732 description 733 "Member link termination points."; 734 } 735 leaf mode { 736 type neg-mode; 737 default "auto-neg"; 738 description 739 "Exposes the negotiation mode."; 740 } 741 leaf port-vlan-id { 742 when "derived-from-or-self(../eth-encapsulation"+ 743 ", 'l2t:vlan')" { 744 description 745 "Only applies when the type of the Ethernet 746 encapsulation is 'vlan'."; 747 } 748 if-feature "VLAN"; 749 type dot1q-types:vlanid; 750 description 751 "Port VLAN ID is the VLAN id that 752 will be assigned to any untagged frames entering 753 the switch on the specific port."; 754 } 755 list vlan-id-name { 756 when "derived-from-or-self(../eth-encapsulation"+ 757 ", 'l2t:vlan')" { 758 description 759 "Only applies when the type of the Ethernet 760 encapsulation is 'vlan'."; 761 } 762 if-feature "VLAN"; 763 key "vlan-id"; 764 description 765 "Interface configured VLANs."; 766 leaf vlan-id { 767 type dot1q-types:vlanid; 768 description 769 "VLAN ID."; 770 } 771 leaf vlan-name { 772 type string { 773 length "1..31"; 774 } 775 description 776 "VLAN name."; 777 } 778 } 779 list qinq { 780 when "derived-from-or-self(../eth-encapsulation"+ 781 ", 'l2t:qinq')" { 782 description 783 "Only applies when the type of the Ethernet 784 encapsulation is 'qinq'."; 785 } 786 if-feature "QinQ"; 787 key "svlan-id cvlan-id"; 788 description 789 "Interface configured SVLANs and CVLANs."; 790 leaf svlan-id { 791 type dot1q-types:vlanid; 792 description 793 "SVLAN ID."; 794 } 795 leaf cvlan-id { 796 type dot1q-types:vlanid; 797 description 798 "CVLAN ID."; 799 } 800 } 801 container vxlan { 802 when "derived-from-or-self(../eth-encapsulation"+ 803 ", 'l2t:vxlan')" { 804 description 805 "Only applies when the type of the Ethernet 806 encapsulation is 'vxlan'."; 807 } 808 if-feature "VXLAN"; 809 leaf vni-id { 810 type vni; 811 description 812 "VXLAN Network Identifier (VNI)."; 813 } 814 description 815 "vxlan."; 816 } 817 } 818 //case ethernet 819 case legacy { 820 leaf layer-2-address { 821 type yang:phys-address; 822 description 823 "Interface Layer 2 address."; 824 } 825 leaf encapsulation { 826 type identityref { 827 base ift:iana-interface-type; 828 } 829 description 830 "Other legacy encapsulation type of this 831 termination point."; 832 } 833 } 834 //case legacy such as atm, ppp, hdlc, etc. 835 } 836 //choice termination-point-type 837 leaf tp-state { 838 type enumeration { 839 enum in-use { 840 value 1; 841 description 842 "The termination point is in forwarding state."; 843 } 844 enum blocking { 845 value 2; 846 description 847 "The termination point is in blocking state."; 848 } 849 enum down { 850 value 3; 851 description 852 "The termination point is in down state."; 853 } 854 enum others { 855 value 4; 856 description 857 "The termination point is in other state."; 858 } 859 } 860 config false; 861 description 862 "State of the termination point."; 863 } 864 } 865 } 866 // grouping l2-termination-point-attributes 867 /* 868 * Data nodes 869 */ 871 augment "/nw:networks/nw:network/nw:network-types" { 872 description 873 "Introduces new network type for L2 topology."; 874 uses l2-network-type; 875 } 876 augment "/nw:networks/nw:network" { 877 when '/nw:networks/nw:network/nw:network-types/l2t:l2-network' { 878 description 879 "Augmentation parameters apply only for networks 880 with L2 topology."; 881 } 882 description 883 "Configuration parameters for the L2 network 884 as a whole."; 885 uses l2-network-attributes; 886 } 887 augment "/nw:networks/nw:network/nw:node" { 888 when '/nw:networks/nw:network/nw:network-types/l2t:l2-network' { 889 description 890 "Augmentation parameters apply only for networks 891 with L2 topology."; 892 } 893 description 894 "Configuration parameters for L2 at the node 895 level."; 896 uses l2-node-attributes; 897 } 898 augment "/nw:networks/nw:network/nt:link" { 899 when '/nw:networks/nw:network/nw:network-types/l2t:l2-network' { 900 description 901 "Augmentation parameters apply only for networks 902 with L2 topology."; 903 } 904 description 905 "Augments L2 topology link information."; 906 uses l2-link-attributes; 907 } 908 augment "/nw:networks/nw:network/nw:node/nt:termination-point" { 909 when '/nw:networks/nw:network/nw:network-types/l2t:l2-network' { 910 description 911 "Augmentation parameters apply only for networks 912 with L2 topology."; 913 } 914 description 915 "Augments L2 topology termination point information."; 916 uses l2-termination-point-attributes; 917 } 919 /* 920 * Notifications 921 */ 923 notification l2-node-event { 924 description 925 "Notification event for L2 node."; 926 leaf event-type { 927 type l2-network-event-type; 928 description 929 "Event type."; 930 } 931 uses nw:node-ref; 932 uses l2-network-type; 933 uses l2-node-attributes; 934 } 936 notification l2-link-event { 937 description 938 "Notification event for L2 link."; 939 leaf event-type { 940 type l2-network-event-type; 941 description 942 "Event type."; 943 } 944 uses nt:link-ref; 945 uses l2-network-type; 946 uses l2-link-attributes; 947 } 949 notification l2-termination-point-event { 950 description 951 "Notification event for L2 termination point."; 952 leaf event-type { 953 type l2-network-event-type; 954 description 955 "Event type."; 956 } 957 uses nt:tp-ref; 958 uses l2-network-type; 959 uses l2-termination-point-attributes; 960 } 961 } 962 964 5. IANA Considerations 966 This document requests IANA to register the following URIs in the 967 "ns" subregistry within the "IETF XML Registry" [RFC3688]: 969 URI: urn:ietf:params:xml:ns:yang:ietf-l2-topology 970 Registrant Contact: The IESG. 971 XML: N/A; the requested URI is an XML namespace. 973 URI: urn:ietf:params:xml:ns:yang:ietf-l2-topology-state 974 Registrant Contact: The IESG. 975 XML: N/A; the requested URI is an XML namespace. 977 This document requests IANA to register the following YANG modules in 978 the "YANG Module Names" subregistry [RFC6020] within the "YANG 979 Parameters" registry. 981 name: ietf-l2-topology 982 namespace: urn:ietf:params:xml:ns:yang:ietf-l2-topology 983 prefix: l2t 984 reference: RFC XXXX 986 name: ietf-l2-topology-state 987 namespace: urn:ietf:params:xml:ns:yang:ietf-l2-topology-state 988 prefix: l2t-s 989 reference: RFC XXXX 991 These modules are not maintained by IANA. 993 6. Security Considerations 995 The YANG module specified in this document defines a schema for data 996 that is designed to be accessed via network management protocols such 997 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 998 is the secure transport layer, and the mandatory-to-implement secure 999 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 1000 is HTTPS, and the mandatory-to-implement secure transport is TLS 1001 [RFC8446]. 1003 The Network Configuration Access Control Model (NACM) [RFC8341] 1004 provides the means to restrict access for particular NETCONF or 1005 RESTCONF users to a preconfigured subset of all available NETCONF or 1006 RESTCONF protocol operations and content. 1008 In general, Layer 2 network topologies are system-controlled and 1009 provide ephemeral topology information. In an NMDA-complient server, 1010 they are only part of which provides read-only access 1011 to clients, they are less vulnerable. That said, the YANG module 1012 does in principle allow information to be configurable. 1014 The Layer 2 topology module define information that can be 1015 configurable in certain instances, for example in the case of virtual 1016 topologies that can be created by client applications. In such 1017 cases, a malicious client could introduce topologies that are 1018 undesired. Specifically, a malicious client could attempt to remove 1019 or add a node, a link, a termination point, by creating or deleting 1020 corresponding elements in the node, link, and termination point 1021 lists, respectively. In the case of a topology that is learned, the 1022 server will automatically prohibit such misconfiguration attempts. 1023 In the case of a topology that is configured, i.e. whose origin is 1024 "intended", the undesired configuration could become effective and be 1025 reflected in the operational state datastore, leading to disruption 1026 of services provided via this topology might be disrupted. For those 1027 reasons, it is important that the NETCONF access control model is 1028 vigorously applied to prevent topology misconfiguration by 1029 unauthorized clients. 1031 There are a number of data nodes defined in this YANG module that are 1032 writable/creatable/deletable (i.e., config true, which is the 1033 default). These data nodes may be considered sensitive or vulnerable 1034 in some network environments. Write operations (e.g., edit-config) 1035 to these data nodes without proper protection can have a negative 1036 effect on network operations. These are the subtrees and data nodes 1037 and their sensitivity/vulnerability in the ietf-network module: 1039 o l2-network-attributes: A malicious client could attempt to 1040 sabotage the configuration of any of the contained attributes, 1041 such as the name or the flag data nodes. 1043 o l2-node-attributes: A malicious client could attempt to sabotage 1044 the configuration of important node attributes, such as the name 1045 or the management-address. 1047 o l2-link-attributes: A malicious client could attempt to sabotage 1048 the configuration of important link attributes, such as the rate 1049 or the delay data nodes. 1051 o l2-termination-point-attributes: A malicious client could attempt 1052 to sabotage the configuration of important termination point 1053 attributes, such as the maximum-frame-size. 1055 7. Acknowledgements 1057 The authors would like to acknowledge the comments and suggestions 1058 received from Susan Hares, Alia Atlas, Juergen Schoenwaelder, Mach 1059 Chen, Alexander Clemm, Sriganesh Kini, and Oscar Gonzalez de Dios. 1061 8. References 1063 8.1. Normative References 1065 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1066 Requirement Levels", BCP 14, RFC 2119, 1067 DOI 10.17487/RFC2119, March 1997, 1068 . 1070 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1071 DOI 10.17487/RFC3688, January 2004, 1072 . 1074 [RFC4202] Kompella, K., Ed. and Y. Rekhter, Ed., "Routing Extensions 1075 in Support of Generalized Multi-Protocol Label Switching 1076 (GMPLS)", RFC 4202, DOI 10.17487/RFC4202, October 2005, 1077 . 1079 [RFC4761] Kompella, K., Ed. and Y. Rekhter, Ed., "Virtual Private 1080 LAN Service (VPLS) Using BGP for Auto-Discovery and 1081 Signaling", RFC 4761, DOI 10.17487/RFC4761, January 2007, 1082 . 1084 [RFC4762] Lasserre, M., Ed. and V. Kompella, Ed., "Virtual Private 1085 LAN Service (VPLS) Using Label Distribution Protocol (LDP) 1086 Signaling", RFC 4762, DOI 10.17487/RFC4762, January 2007, 1087 . 1089 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1090 the Network Configuration Protocol (NETCONF)", RFC 6020, 1091 DOI 10.17487/RFC6020, October 2010, 1092 . 1094 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1095 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1096 . 1098 [RFC7224] Bjorklund, M., "IANA Interface Type YANG Module", 1099 RFC 7224, DOI 10.17487/RFC7224, May 2014, 1100 . 1102 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1103 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1104 . 1106 [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", 1107 RFC 7951, DOI 10.17487/RFC7951, August 2016, 1108 . 1110 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1111 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1112 May 2017, . 1114 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 1115 Access Control Model", STD 91, RFC 8341, 1116 DOI 10.17487/RFC8341, March 2018, 1117 . 1119 [RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., 1120 Ananthakrishnan, H., and X. Liu, "A YANG Data Model for 1121 Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March 1122 2018, . 1124 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 1125 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 1126 . 1128 8.2. Informative References 1130 [I-D.ietf-trill-yang] 1131 Weiguo, H., Yizhou, L., Kumar, D., Durrani, M., Zhai, H., 1132 and L. Xia, "TRILL YANG Data Model", draft-ietf-trill- 1133 yang-04 (work in progress), December 2015. 1135 [IEEE802.1AB] 1136 "Station and Media Access Control Connectivity Discovery", 1137 IEEE Std 802.1AB-2016, March 2016. 1139 [IEEE802.1ad] 1140 "Virtual Bridged Local Area Networks Amendment 4: Provider 1141 Bridges", IEEE Std 802.1ad-2005, May 2006. 1143 [IEEE802.1ah] 1144 "Virtual Bridged Local Area Networks Amendment 4: Provider 1145 Bridges", IEEE Std 802.1ah-2008, August 2008. 1147 [IEEE802.1Qcp] 1148 "Bridges and Bridged Networks - Amendment: YANG Data 1149 Model", IEEE Std 802.1Qcp-2018, September 2018. 1151 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1152 and A. Bierman, Ed., "Network Configuration Protocol 1153 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1154 . 1156 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1157 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1158 . 1160 [RFC6325] Perlman, R., Eastlake 3rd, D., Dutt, D., Gai, S., and A. 1161 Ghanwani, "Routing Bridges (RBridges): Base Protocol 1162 Specification", RFC 6325, DOI 10.17487/RFC6325, July 2011, 1163 . 1165 [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, 1166 L., Sridhar, T., Bursell, M., and C. Wright, "Virtual 1167 eXtensible Local Area Network (VXLAN): A Framework for 1168 Overlaying Virtualized Layer 2 Networks over Layer 3 1169 Networks", RFC 7348, DOI 10.17487/RFC7348, August 2014, 1170 . 1172 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1173 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1174 . 1176 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1177 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1178 . 1180 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1181 and R. Wilton, "Network Management Datastore Architecture 1182 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1183 . 1185 Appendix A. Companion YANG Module for Non-NMDA Compliant 1186 Implementations 1188 The YANG module ietf-l2-topology defined in this document augments 1189 two modules, 'ietf-network' and 'ietf-network-topology', that are 1190 designed to be used in conjunction with implementations that support 1191 the Network Management Datastore Architecture (NMDA) defined in 1192 [RFC8342]. In order to allow implementations to use the model even 1193 in cases when NMDA is not supported, a set of companion modules have 1194 been defined that represent a state model of networks and network 1195 topologies, 'ietf-network-state' and 'ietf-network-topology-state', 1196 respectively. 1198 In order to be able to use the model for layer 2 topologies defined 1199 in this document in conjunction with non-NMDA compliant 1200 implementations, a corresponding companion module is defined that 1201 represent the operational state of layer 2 network topologies. The 1202 module 'ietf-l2-topology-state' mirrors the module 'ietf-l2-topology' 1203 defined earlier in this document. However, it augments 'ietf- 1204 network-state' and 'ietf-network-topology-state' (instead of 'ietf- 1205 network' and 'ietf-network-topology') and all its data nodes are non- 1206 configurable. 1208 The companion module 'ietf-l2-topology' SHOULD NOT be supported by 1209 implementations that support NMDA. It is for this reason that this 1210 module is defined in the informative Appendix. 1212 As the structure of this modules mirrors that of its underlying 1213 modules, the YANG tree is not depicted separately. 1215 file "ietf-l2-topology-state@2019-06-04.yang" 1216 module ietf-l2-topology-state { 1217 yang-version 1.1; 1218 namespace "urn:ietf:params:xml:ns:yang:ietf-l2-topology-state"; 1219 prefix "l2t-s"; 1221 import ietf-network-state { 1222 prefix "nw-s"; 1223 reference 1224 "RFC 8345: A YANG Data Model for Network Topologies"; 1225 } 1227 import ietf-network-topology-state { 1228 prefix "nt-s"; 1229 reference 1230 "RFC 8345: A YANG Data Model for Network Topologies"; 1231 } 1233 import ietf-l2-topology { 1234 prefix "l2t"; 1235 reference 1236 "RFC XXXX: A YANG Data Model for Layer-2 Network 1237 Topologies"; 1238 } 1240 organization 1241 "IETF I2RS (Interface to the Routing System) Working Group"; 1242 contact 1243 "WG Web: 1244 WG List: 1245 Editor: Jie Dong 1246 1247 Editor: Xiugang Wei 1248 1249 Editor: Qin Wu 1250 1251 Editor: Mohamed Boucadair 1252 1253 Editor: Anders Liu 1254 "; 1256 description 1257 " This module defines a model for Layer 2 Network Topology 1258 state, representing topology that either is learned or 1259 results from applying topology that has been configured per 1260 the 'ietf-l2-topology' model, mirroring the 1261 corresponding data nodes in this model. 1263 This model mirrors 'ietf-l2-topology' but contains only 1264 read-only state data. The model is not needed when the 1265 underlying implementation infrastructure supports the 1266 Network Management Datastore Architecture (NMDA). 1268 Copyright (c) 2020 IETF Trust and the persons identified as 1269 authors of the code. All rights reserved. 1271 Redistribution and use in source and binary forms, with or 1272 without modification, is permitted pursuant to, and subject 1273 to the license terms contained in, the Simplified BSD License 1274 set forth in Section 4.c of the IETF Trust's Legal Provisions 1275 Relating to IETF Documents 1276 (https://trustee.ietf.org/license-info). 1278 This version of this YANG module is part of 1279 RFC XXXX: A YANG Data Model for Layer-2 Network Topologies 1280 see the RFC itself for full legal notices."; 1282 revision "2019-06-04" { 1283 description "Initial revision"; 1284 reference "RFC XXXX: A YANG Data Model for Layer-2 Network 1285 Topologies"; 1286 } 1288 /* 1289 * Data nodes 1290 */ 1291 augment "/nw-s:networks/nw-s:network/nw-s:network-types" { 1292 description 1293 "Introduce new network type for L2 topology"; 1295 uses l2t:l2-network-type; 1296 } 1298 augment "/nw-s:networks/nw-s:network" { 1299 when "/nw-s:networks/nw-s:network/nw-s:network-types/"+ 1300 "l2t-s:l2-network" { 1301 description 1302 "Augmentation parameters apply only for networks 1303 with L2 topology."; 1304 } 1305 description 1306 "Configuration parameters for the L2 network 1307 as a whole."; 1308 uses l2t:l2-network-attributes; 1309 } 1311 augment "/nw-s:networks/nw-s:network/nw-s:node" { 1312 when "../nw-s:network-types/l2t-s:l2-network" { 1313 description 1314 "Augmentation parameters apply only for networks 1315 with L2 topology."; 1316 } 1317 description 1318 "Configuration parameters for L2 at the node 1319 level."; 1320 uses l2t:l2-node-attributes; 1321 } 1323 augment "/nw-s:networks/nw-s:network/nt-s:link" { 1324 when "../nw-s:network-types/l2t-s:l2-network" { 1325 description 1326 "Augmentation parameters apply only for networks 1327 with L2 topology."; 1328 } 1329 description "Augments L2 topology link information."; 1330 uses l2t:l2-link-attributes; 1331 } 1333 augment "/nw-s:networks/nw-s:network/nw-s:node/"+ 1334 "nt-s:termination-point" { 1335 when "../../nw-s:network-types/l2t-s:l2-network" { 1336 description 1337 "Augmentation parameters apply only for networks 1338 with L2 topology."; 1339 } 1340 description 1341 "Augments L2 topology termination point information."; 1342 uses l2t:l2-termination-point-attributes; 1344 } 1346 /* 1347 * Notifications 1348 */ 1350 notification l2-node-event { 1351 description "Notification event for L2 node."; 1352 leaf event-type { 1353 type l2t:l2-network-event-type; 1354 description "Event type."; 1355 } 1356 uses nw-s:node-ref; 1357 uses l2t:l2-network-type; 1358 uses l2t:l2-node-attributes; 1359 } 1361 notification l2-link-event { 1362 description "Notification event for a L2 link."; 1363 leaf event-type { 1364 type l2t:l2-network-event-type; 1365 description "Event type."; 1366 } 1367 uses nt-s:link-ref; 1368 uses l2t:l2-network-type; 1369 uses l2t:l2-link-attributes; 1370 } 1372 notification l2-termination-point-event { 1373 description "Notification event for L2 termination point."; 1374 leaf event-type { 1375 type l2t:l2-network-event-type; 1376 description "Event type."; 1377 } 1378 uses nt-s:tp-ref; 1379 uses l2t:l2-network-type; 1380 uses l2t:l2-termination-point-attributes; 1381 } 1382 } 1383 1385 Appendix B. An Example 1387 This section contains an example of an instance data tree in JSON 1388 encoding [RFC7951]. The example instantiates "ietf-l2- topology" for 1389 the topology that is depicted in the following diagram. There are 1390 three nodes: D1, D2, and D3. D1 has three termination points: 1-0-1, 1391 1-2-1, and 1-3-1. D2 has three termination points as well: 2-1-1, 1392 2-0-1, and 2-3-1. D3 has two termination points: 3-1-1 and 3-2-1. 1393 In addition, there are six links, two between each pair of nodes, 1394 with one going in each direction. 1396 +------------+ +------------+ 1397 | D1 | | D2 | 1398 /-\ /-\ /-\ /-\ 1399 | | 1-0-1 | |---------------->| | 2-1-1 | | 1400 | | 1-2-1 | |<----------------| | 2-0-1 | | 1401 \-/ 1-3-1 \-/ \-/ 2-3-1 \-/ 1402 | /----\ | | /----\ | 1403 +---| |---+ +---| |---+ 1404 \----/ \----/ 1405 A | A | 1406 | | | | 1407 | | | | 1408 | | +------------+ | | 1409 | | | D3 | | | 1410 | | /-\ /-\ | | 1411 | +----->| | 3-1-1 | |-------+ | 1412 +---------| | 3-2-1 | |<---------+ 1413 \-/ \-/ 1414 | | 1415 +------------+ 1417 Figure 2. A Network Topology Example 1419 The corresponding instance data tree is depicted as below. Note that 1420 some lines have been wrapped to adhere to the 72-character line 1421 limitation of RFCs. 1423 { 1424 "ietf-network:networks": { 1425 "network": [ 1426 { 1427 "network-types": { 1428 "ietf-l2-topology:l2-network": {} 1429 }, 1430 "network-id": "l2-topo-example", 1431 "node": [ 1432 { 1433 "node-id": "D1", 1434 "termination-point": [ 1435 { 1436 "tp-id": "1-0-1", 1437 "ietf-l2-topology: 1438 l2-termination-point-attributes": { 1439 "mac-address": "00-00-5E-00-53-D0" 1441 } 1442 }, 1443 { 1444 "tp-id": "1-2-1", 1445 "ietf-l2-topology: 1446 l2-termination-point-attributes": { 1447 "mac-address": "00-00-5E-00-53-D1" 1448 } 1449 }, 1450 { 1451 "tp-id": "1-3-1", 1452 "ietf-l2-topology: 1453 l2-termination-point-attributes": { 1454 "mac-address": "00-00-5E-00-53-D2" 1455 } 1456 } 1457 ], 1458 "ietf-l2-topology:l2-node-attributes": { 1459 "management-address": ["192.0.2.1"] 1460 } 1461 }, 1462 { 1463 "node-id": "D2", 1464 "termination-point": [ 1465 { 1466 "tp-id": "2-0-1", 1467 "ietf-l2-topology: 1468 l2-termination-point-attributes": { 1469 "mac-address": "00-00-5E-00-53-E0" 1470 } 1471 }, 1472 { 1473 "tp-id": "2-1-1", 1474 "ietf-l2-topology: 1475 l2-termination-point-attributes": { 1476 "mac-address": "00-00-5E-00-53-E1" 1477 } 1478 }, 1479 { 1480 "tp-id": "2-3-1", 1481 "ietf-l2-topology: 1482 l2-termination-point-attributes": { 1483 "mac-address": "00-00-5E-00-53-E2" 1484 } 1485 } 1486 ], 1487 "ietf-l2-topology:l2-node-attributes": { 1488 "management-address": ["192.0.2.2"] 1490 } 1491 }, 1492 { 1493 "node-id": "D3", 1494 "termination-point": [ 1495 { 1496 "tp-id": "3-1-1", 1497 "ietf-l2-topology: 1498 l2-termination-point-attributes": { 1499 "mac-address": "00-00-5E-00-53-F0" 1500 } 1501 }, 1502 { 1503 "tp-id": "3-2-1", 1504 "ietf-l2-topology: 1505 l2-termination-point-attributes": { 1506 "mac-address": "00-00-5E-00-53-F1" 1507 } 1508 } 1509 ], 1510 "ietf-l2-topology:l2-node-attributes": { 1511 "management-address": ["192.0.2.3"] 1512 } 1513 } 1514 ], 1515 "ietf-network-topology:link": [ 1516 { 1517 "link-id": "D1,1-2-1,D2,2-1-1", 1518 "source": { 1519 "source-node": "D1", 1520 "source-tp": "1-2-1" 1521 } 1522 "destination": { 1523 "dest-node": "D2", 1524 "dest-tp": "2-1-1" 1525 }, 1526 "ietf-l2-topology:l2-link-attributes": { 1527 "rate": "1000" 1528 } 1529 }, 1530 { 1531 "link-id": "D2,2-1-1,D1,1-2-1", 1532 "source": { 1533 "source-node": "D2", 1534 "source-tp": "2-1-1" 1535 } 1536 "destination": { 1537 "dest-node": "D1", 1538 "dest-tp": "1-2-1" 1539 }, 1540 "ietf-l2-topology:l2-link-attributes": { 1541 "rate": "1000" 1542 } 1543 }, 1544 { 1545 "link-id": "D1,1-3-1,D3,3-1-1", 1546 "source": { 1547 "source-node": "D1", 1548 "source-tp": "1-3-1" 1549 } 1550 "destination": { 1551 "dest-node": "D3", 1552 "dest-tp": "3-1-1" 1553 }, 1554 "ietf-l2-topology:l2-link-attributes": { 1555 "rate": "1000" 1556 } 1557 }, 1558 { 1559 "link-id": "D3,3-1-1,D1,1-3-1", 1560 "source": { 1561 "source-node": "D3", 1562 "source-tp": "3-1-1" 1563 } 1564 "destination": { 1565 "dest-node": "D1", 1566 "dest-tp": "1-3-1" 1567 }, 1568 "ietf-l2-topology:l2-link-attributes": { 1569 "rate": "1000" 1570 } 1571 }, 1572 { 1573 "link-id": "D2,2-3-1,D3,3-2-1", 1574 "source": { 1575 "source-node": "D2", 1576 "source-tp": "2-3-1" 1577 } 1578 "destination": { 1579 "dest-node": "D3", 1580 "dest-tp": "3-2-1" 1581 }, 1582 "ietf-l2-topology:l2-link-attributes": { 1583 "rate": "1000" 1584 } 1585 }, 1586 { 1587 "link-id": "D3,3-2-1,D2,2-3-1", 1588 "source": { 1589 "source-node": "D3", 1590 "source-tp": "3-2-1" 1591 } 1592 "destination": { 1593 "dest-node": "D2", 1594 "dest-tp": "2-3-1" 1595 }, 1596 "ietf-l2-topology:l2-link-attributes": { 1597 "rate": "1000" 1598 } 1599 } 1600 ] 1601 } 1602 ] 1603 } 1604 } 1606 Authors' Addresses 1608 Jie Dong 1609 Huawei 1610 Huawei Campus, No. 156 Beiqing Rd. 1611 Beijing 100095 1612 China 1614 Email: jie.dong@huawei.com 1616 Xiugang Wei 1617 Huawei 1618 Huawei Campus, No. 156 Beiqing Rd. 1619 Beijing 100095 1620 China 1622 Email: weixiugang@huawei.com 1624 Qin Wu 1625 Huawei 1626 101 Software Avenue, Yuhua District 1627 Nanjing 210012 1628 China 1630 Email: bill.wu@huawei.com 1631 Mohamed Boucadair 1632 Orange 1633 Rennes 35000 1634 France 1636 Email: mohamed.boucadair@orange.com 1638 Anders Liu 1639 Tecent 1640 Yinke Building 38 Haidian St, Haidian District 1641 Beijing 100080 1642 China 1644 Email: andersliu@tencent.com