idnits 2.17.1 draft-jiang-opsawg-nettunnel-model-yang-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 102 instances of too long lines in the document, the longest one being 62 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 226 has weird spacing: '...address ine...' == Line 229 has weird spacing: '...address ine...' == Line 232 has weird spacing: '...te-name str...' == Line 293 has weird spacing: '...address ine...' == Line 296 has weird spacing: '...address ine...' == (20 more instances...) -- The document date (March 13, 2017) is 2601 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Missing Reference: 'RFC6020' is mentioned on line 1814, but not defined -- Obsolete informational reference (is this intentional?): RFC 6536 (Obsoleted by RFC 8341) Summary: 1 error (**), 0 flaws (~~), 8 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group R. Jiang 3 Internet-Draft Z. Li 4 Intended status: Informational Huawei Technologies 5 Expires: September 14, 2017 March 13, 2017 7 Yang Model of Network-based P2P TE Tunnel 8 draft-jiang-opsawg-nettunnel-model-yang-00 10 Abstract 12 This document defines a YANG data model for network-based P2P TE 13 Tunnel which can be abstracted and exposed as north bound API of SDN 14 Controller. 16 Requirements Language 18 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 19 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 20 document are to be interpreted as described in RFC 2119 [RFC2119]. 22 Status of This Memo 24 This Internet-Draft is submitted in full conformance with the 25 provisions of BCP 78 and BCP 79. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at http://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on September 14, 2017. 39 Copyright Notice 41 Copyright (c) 2017 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents 46 (http://trustee.ietf.org/license-info) in effect on the date of 47 publication of this document. Please review these documents 48 carefully, as they describe your rights and restrictions with respect 49 to this document. Code Components extracted from this document must 50 include Simplified BSD License text as described in Section 4.e of 51 the Trust Legal Provisions and are provided without warranty as 52 described in the Simplified BSD License. 54 Table of Contents 56 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 57 2. Network Tunnel Service Models . . . . . . . . . . . . . . . . 3 58 3. UTE Tunnel YANG Model . . . . . . . . . . . . . . . . . . . . 3 59 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 60 3.2. Configuration . . . . . . . . . . . . . . . . . . . . . . 4 61 3.2.1. Configuration Hierarchy . . . . . . . . . . . . . . . 6 62 3.3. Operational state . . . . . . . . . . . . . . . . . . . . 7 63 3.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 8 64 3.5. Actions . . . . . . . . . . . . . . . . . . . . . . . . . 9 65 4. Network TE Tunnel YANG Model . . . . . . . . . . . . . . . . 9 66 4.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 9 67 4.2. Configuration . . . . . . . . . . . . . . . . . . . . . . 10 68 4.2.1. Configuration Hierarchy . . . . . . . . . . . . . . . 13 69 4.3. Operational state . . . . . . . . . . . . . . . . . . . . 14 70 4.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 16 71 4.5. Actions . . . . . . . . . . . . . . . . . . . . . . . . . 16 72 4.6. Open Items . . . . . . . . . . . . . . . . . . . . . . . 17 73 5. YANG Specification . . . . . . . . . . . . . . . . . . . . . 17 74 6. Security Considerations . . . . . . . . . . . . . . . . . . . 40 75 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40 76 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 40 77 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 41 78 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 79 10.1. Normative References . . . . . . . . . . . . . . . . . . 41 80 10.2. Informative References . . . . . . . . . . . . . . . . . 42 81 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42 83 1. Introduction 85 This document defines a YANG data model for network-based P2P TE 86 tunnel which can be abstracted and exposed as north bound API of SDN 87 Controller. The Network P2P TE tunnel includes RSVP-TE[RFC3209] 88 tunnel and SR-TE[RFC6241] tunnel.The data model is defined for 89 following structures that are used for managing the API of Network TE 90 Tunnel: 92 o Configuration 94 o Operational State 96 o Executables (Actions) 97 o Notifications 99 2. Network Tunnel Service Models 101 The hierarchy of Network-based P2P TE Tunnel service models are 102 depicted in the following figure: 104 +--------------+ 105 | | 106 | Network | 107 | UTETunnel | 108 +-------+------+ 109 | 110 +--------------+--------------+ 111 | | 112 V V 113 +--------------+ +--------------+ 114 | Network | | Network | 115 | TE Tunnel | | UNI Tunnel | 116 | | | | 117 +--------------+ +--------------+ 118 | 119 +-------------------+ 120 | | 121 V V 122 +---------------+ +---------------+ 123 | RSVP TE | | SR TE | 124 | Tunnel | | Tunnel | 125 | | | | 126 +---------------+ +---------------+ 127 Figure 1: Architecture of Tunnel Service Model 129 For Network TE Tunnel hierarchical service models, Network UTE Tunnel 130 means the abstract common Tunnel model for different kind of Network 131 TE tunnels, and Network TE-Tunnel in this draft is augmented from 132 Network UTE Tunnel model. Network TE Tunnel include SR Tunnel and 133 RSVP TE Tunnel. 135 3. UTE Tunnel YANG Model 137 3.1. Overview 139 This section describes a new model named as "net-ute-tunnel" for 140 unified Network TE Tunnel data model. 142 There are four main containers in "net-ute-tunnel" module as follows: 144 o Read-Write parameters for configuration (Discussed in Section 3.2) 145 o Read-only parameters for operational state (Discussed in 146 Section 3.3) 148 o Notifications for events (Discussed in Section 3.4) 150 o RPCs for executing commands to perform some action (Discussed in 151 Section 3.5) 153 For the configuration and state data, this model include two types: 154 one is configurable item (rw), the other is operational item(ro) 155 which means applied and derived state. 157 The following diagram depicts high level Unified Network TE Tunnel 158 Yang tree organization and hierarchy: 160 module: ietf-OPSAWG-ute-tunnel 161 +--rw ute-tunnel-cfg 162 | +--rw p2p-tunnel 163 | +--rw tunnels 164 | | +--rw tunnel* [tunnel-name] 165 | +--rw bidirection-co-route-groups 166 | +--rw co-route-group* [co-route-name] 167 +--ro ute-tunnel-oper 168 | +--ro p2p-tunnel 169 | +--ro tunnels 170 notifications: 171 +---n tunnel-state-down 172 +---n tunnel-state-down-clear 173 +---n tunnel-lsp-changed 175 Figure 2: high level Network UTE Tunnel yang tree organization and 176 hierarchy 178 This model includes common abstract properties of different Network 179 TE Tunnels, such as Network P2P tunnel configuration and set up 180 bidirection co-route groups, in notification part it only support 181 basic events like tunnel down and changed. 183 3.2. Configuration 185 This specification defines the configuration parameters for Network 186 UTE Tunnel resource, and defines some of the most significant and 187 commonly used capabilities. 189 As mentioned above, the configuration tree presents read-write 190 intended configuration leave/items as well as read-only state of the 191 applied configuration. 193 Following is high-level configuration organization for Network UTE 194 Tunnel: 196 module: ietf-OPSAWG-ute-tunnel 197 augment /ute-tunnel:ute-tunnel-cfg: 198 +--rw p2p-tunnel 199 +--rw tunnels 200 +--rw bidirection-co-route-groups 202 Figure 3: high-level configuration organization for UTE Tunnel 204 Following is a simplified graphical representation of the data model 205 for Network UTE Tunnel configuration: 207 +--rw ute-tunnel-cfg 208 | +--rw p2p-tunnel 209 | +--rw tunnels 210 | | +--rw tunnel* [tunnel-name] 211 | | +--rw tunnel-name string 212 | | +--rw user-label? string 213 | | +--rw tunnel-type identityref 214 | | +--rw admin-status? ac-type:admin-status 215 | | +--rw sym-tunnel-name? string 216 | | +--rw mtu? uint32 217 | | +--rw manage-type? manage-type 218 | | +--rw manage-protocol? manage-protocol 219 | | +--rw control-protocol? control-protocol 220 | | +--rw control-mode? control-mode 221 | | +--rw adopt? boolean 222 | | +--rw ip-address? inet:ipv4-address 223 | | +--rw ip-unnumbered? string 224 | | +--rw source 225 | | | +--rw ne-id? yang:uuid 226 | | | +--rw ip-address inet:ip-address 227 | | +--rw destination 228 | | +--rw ne-id? yang:uuid 229 | | +--rw ip-address inet:ip-address 230 | +--rw bidirection-co-route-groups 231 | +--rw co-route-group* [co-route-name] 232 | +--rw co-route-name string 233 | +--rw user-label? string 234 | +--rw bfd-enable? boolean 235 | +--rw first-tunnel 236 | | +--rw tunnel-name? string 237 | +--rw second-tunnel 238 | +--rw tunnel-name? string 240 Figure 4: simplified graphical representation of the data model for 241 Network UTE Tunnel configuration 243 3.2.1. Configuration Hierarchy 245 The Network UTE Tunnel configuration container is logically divided 246 into following high-level config areas: 248 UTE-Tunnel parameters 249 o Point to Point Tunnel parameters 250 - Tunnels 251 - Per-Tunnel: 252 - bidirection-co-route-groups 253 - co-route-group 255 Figure 5: high-level Network UTE Tunnel configuration container 257 Following subsections briefly explain these configuration areas. 259 3.2.1.1. Network P2P Tunnel parameters 261 Network P2P Tunnel parameters is used to configure the detail 262 properties of Network TE Tunnel, The manage-type describe the tunnel 263 management right belongs to SDN controller or network element. The 264 manage-protocol means the tunnel management protocol between SDN 265 controller and devices. 267 bidirection-co-route-groups bind two tunnel which use the same path- 268 hops but the direction is opposite together, we can choose whether 269 need to enable BFD feature or not 271 3.3. Operational state 273 Operational state of Network TE tunnel can be queried and obtained 274 from read-only state containers that fall under the same tree (/ute- 275 tunnel:ute-tunnel-oper /ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute- 276 tunnel:tunnel) as the configuration. 278 Please note this state tree refers both the configuration "applied" 279 state. Following is a simplified graphical representation of the 280 data model for Network UTE tunnel operational state. 282 +--ro ute-tunnel-oper 283 +--ro p2p-tunnel 284 +--ro tunnels 285 +--ro tunnel* [tunnel-name] 286 +--ro tunnel-name string 287 +--ro tunnel-type identityref 288 +--ro oper-status? ac-type:operate-status 289 +--ro tunnel-id? uint32 290 +--ro sym-tunnel-name? string 291 +--ro source 292 | +--ro ne-id? yang:uuid 293 | +--ro ip-address inet:ip-address 294 +--ro destination 295 +--ro ne-id? yang:uuid 296 +--ro ip-address inet:ip-address 298 Figure 6: simplified graphical representation of the data model for 299 Network UTE Tunnel Operational state 301 The Network UTE Tunnel Operational states mostly the subset of 302 configuration data,such as tunnel name and other basic properties. 304 3.4. Notifications 306 This model defines a list of notifications to inform subscriber of 307 important events detected during the configuration and operation. 308 These events include events related to changes in the operational 309 state of Network TE Tunnel, including tunnel-state-down event, 310 Tunnel-state-down-clear event, tunnel-lsp-changed event. Following 311 is a simplified graphical representation of the data model for 312 Network UTE Tunnel notifications. 314 notifications: 315 +---n tunnel-state-down 316 | +--ro tunnel-name? leafref 317 +---n tunnel-state-down-clear 318 | +--ro tunnel-name? leafref 319 | +--ro reason? tunnel-down-clear-reason 320 +---n tunnel-lsp-changed 321 +--ro tunnel-name? leafref 322 +--ro oper-type? oper-type 323 +--ro sym-path-name? leafref 324 +--ro source 325 +--ro ne-id? yang:uuid 326 +--ro ip-address inet:ip-address 328 Figure 7: simplified graphical representation of the data model for 329 UTE Tunnel notifications 331 3.5. Actions 333 There is no rpc that allow performing an action or executing a 334 command on the QoS operation. 336 4. Network TE Tunnel YANG Model 338 4.1. Overview 340 This section defines a new module named "net-te-tunnel" for Network 341 TE Tunnel data model where this module augments net-ute-tunnel that 342 is defined in previous section. 344 There are four main containers in "net-te-tunnel" module as follows: 345 o Read-Write parameters for configuration (Discussed in Section 3.2) 346 o Read-only parameters for operational state (Discussed in 347 Section 3.3) o Notifications for events (Discussed in Section 3.4) o 348 RPCs for executing commands to perform some action (Discussed in 349 Section 3.5) 351 Following diagram depicts high level Network TE Tunnel yang tree 352 organization and hierarchy: 354 module: ietf-OPSAWG-te-tunnel 355 augment /ute-tunnel:ute-tunnel-cfg: 356 +--rw global-cfg 357 augment /ute-tunnel:ute-tunnel-cfg/ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute-tunnel:tunnel: 358 +--rw path-setup-type? pce-type:path-setup-type 359 +--rw sr-path-type? sr-path-type 360 +--rw ... 361 augment /ute-tunnel:ute-tunnel-oper/ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute-tunnel:tunnel: 362 +--ro path-setup-type? pce-type:path-setup-type 363 +--ro co-route-name? string 364 +--ro ... 365 rpcs: 366 +---x query-te-tunnels-nbi 367 +--ro input 368 +--ro output 369 notifications: 370 +--- n tunnel-besteffort 371 +--- n ... 373 Figure 8: high level Network TE Tunnel yang tree organization and 374 hierarchy 376 Before going into data model details, it is important to take note of 377 the following points: 379 o This module does not cover CR-LDP, only focus on RSVP-TE and SR-TE 380 which is widely used on devices. 382 o This model supports two address-families, namely "ipv4" and "ipv6". 384 o When in SR-TE Scenario, this model support centralized control of 385 allocating adjacency label/segment to avoid extending IGP to allocate 386 label/segment which will take effect on network performance. 388 A graphical representation of Network TE YANG data model is presented 389 in Figure 10, Figure 12, Figure 13, and Figure 14. Whereas, the 390 actual model definition in YANG is captured in the end of this 391 Section. While presenting the YANG tree view and actual yang 392 specification, this document assumes the reader is familiar with the 393 concepts of YANG modelling, its presentation and its compilation. 395 4.2. Configuration 397 This specification defines the configuration parameters for Network 398 TE Tunnel resource, and defines some of the most significant and 399 commonly used capabilities such as Hot Standby, SR-TE label/segment 400 adherence when label stack is too deep, and Fast Reroute. 402 This model augments net-ute-tunnel that is defined in previous 403 section. As mentioned above, the configuration tree presents read- 404 write intended configuration leave/items as well as read-only state 405 of the applied configuration. 407 Following is high-level configuration organization for Network TE 408 Tunnel: 410 module: ietf-OPSAWG-te-tunnel 411 augment /ute-tunnel:ute-tunnel-cfg: 412 +--rw global-cfg 413 +--rw p2p-tunnel 414 +--rw tunnels 415 +--rw bidirection-co-route-groups 417 Figure 9: high-level configuration organization for Network TE Tunnel 419 Following is a simplified graphical representation of the data model 420 for Tunnel configuration: 422 +--rw te-tunnel-cfg 423 +--rw global-cfg 424 +--rw bandwith-threshold? uint32 425 +--rw p2p-tunnel 426 +--rw tunnels 427 | +--rw tunnel 428 | +--rw tunnelname string 429 | +--rw user-label string 430 | +--rw tunnel-type tunl-type 431 | +--rw admin-status ac-typeadmin-status 432 | +--rw sym-tunnel-name string 433 | +--rw mtu uint32 434 | +--rw manage-type manage-type 435 | +--rw manage-protocol manage-protocol 436 | +--rw control-protocol control-protocol 437 | +--rw control-mode control-mode 438 | +--rw adopt boolean 439 | +--rw ip-address inetipv4-address 440 | +--rw ip-unnumbered string 441 | +--rw source 442 | +--rw ne-id yanguuid 443 | +--rw ip-address inetip-address; 444 | +--rw destination 445 | +--rw ne-id yanguuid 446 | +--rw ip-address inetip-address; 447 | +--rw path-setup-type? pce-type:path-setup-type 448 | +--rw sr-path-type? sr-path-type 449 | +--rw is-bypass-tunnel? boolean 450 | +--rw bypass-tunnel 451 | | +--rw protect-interface 452 | | +--rw ltp-id? yang:uuid 453 | +--rw hot-standby-enable? boolean 454 | +--rw tunnel-constraint 455 | | +--rw setup-priority? uint8 456 | | +--rw holdup-priority? uint8 457 | | +--rw bandwidth? uint32 458 | | +--rw oper-bandwidth? uint32 459 | | +--rw path-options* [option-number] 460 | | +--rw option-number uint16 461 | | +--rw path-constraints* [path-role] 462 | | +--rw path-role pce-type:lsp-role 463 | | +--rw latency? uint32 464 | | +--rw hop-limit? uint16 465 | | +--rw include-affinity-any? pce-type:affinity 466 | | +--rw include-affinity-all? pce-type:affinity 467 | | +--rw exclude-affinity? pce-type:affinity 468 | | +--rw te-attribute-ignore? bits 469 | | +--rw explicit-path-hops 470 | | +--rw explicit-path-hop* [hop-index] 471 | | +--rw hop-index uint32 472 | | +--rw ne-id? yang:uuid 473 | | +--rw ltp-id? yang:uuid 474 | | +--rw ip-address? inet:ipv4-address 475 | | +--rw hop-inc-type? pce-type:hop-inc-type 476 | | +--rw hop-type? pce-type:hop-type 477 | +--rw protect-policy 478 | | +--rw hot-standby 479 | | | +--rw revertive? revertive-type 480 | | | +--rw bandwidth-mode? bandwidth-mode 481 | | | +--rw wtr? uint32 482 | | +--rw frr 483 | | +--rw fast-reroute? boolean 484 | | +--rw bypass-attributes 485 | | +--rw setup-priority? uint8 486 | | +--rw holdup-priority? uint8 487 | | +--rw bandwidth? uint32 488 | | +--rw include-affinity-any? pce-type:affinity 489 | | +--rw include-affinity-all? pce-type:affinity 490 | | +--rw exclude-affinity? pce-type:affinity 491 | | +--rw te-attribute-ignore? bits 492 | +--rw tunnel-service 493 | +--rw service-class? bits 494 | +--rw outbound-limit? boolean 495 | +--rw reserved-for-binding? boolean 496 | +--rw statistic-enable? boolean 497 | +--rw igp-capabilities 498 | +--rw igp-instance* [index] 499 | | +--rw index uint32 500 | | +--rw protocol-type protocol-type 501 | | +--rw igp-instance-id? uint32 502 | | +--rw ospf-area-id? uint32 503 | +--rw propagate-mode? propagate-mode 504 | +--rw advertise-hold-time? uint32 505 | +--rw igp-metric-type? igp-metric-type 506 | +--rw relative-metric-value? int32 507 | +--rw absolute-metric-value? uint32 508 +--rw bidirection-co-route-groups 509 +--rw co-route-group 510 +--rw co-route-name string 511 +--rw user-label string 512 +--rw co-route-group 513 +--rw co-route-name string 514 +--rw user-label string 515 +--rw bfd-enable boolean 516 +--rw first-tunnel 517 +--rw tunnel-name string 518 +--rw second-tunnel 519 +--rw tunnel-name string 521 Figure 10: Simplified graphical representation of the data model for 522 Network TE Tunnel configuration 524 4.2.1. Configuration Hierarchy 526 The Tunnel configuration container is logically divided into 527 following high-level config areas: 529 TE-Tunnel parameters 530 o Global Tunnel parameters 531 o Point to Point Tunnel parameters 532 - Tunnels 533 - Per-Tunnel: 534 tunnel-constraint 535 protect-policy 536 tunnel-service 537 - bidirection-co-route-groups 538 - co-route-group 540 Figure 11: high-level Tunnel configuration container 542 Following subsections briefly explain these configuration areas. 544 4.2.1.1. Network TE-Tunnel parameters 546 Network TE tunnel parameters is used to describe the common 547 properties of different types of Network TE tunnels, including SR-TE 548 and RSVP-TE Tunnel, So the configuration is further divided into sub 549 categories as follows. 551 4.2.1.1.1. Global Tunnel parameters 553 Global Tunnel parameters is used to configure the bandwidth threshold 554 of Network TE tunnel, it describe Network TE tunnel max bandwidth of 555 network, only effective when enable auto-bandwidth adjustment. 557 4.2.1.1.2. Point to Point Tunnel parameters 559 Network Point to Point Tunnel parameters is used to configure the 560 detail properties of Network TE Tunnel, the Tunnel-type include SR-TE 561 and RSVP-TE. The manage-type describe the tunnel management right 562 belongs to SDN controller or network element. The manage-protocol 563 means the tunnel management protocol between SDN controller and 564 devices. The tunnel configuration support explicit other constraints 565 on path set up, also the protect-policy like Hot standby, FRR is in 566 parameters. Tunnel service is used to for identify the tunnel can be 567 used on forwarding plane such as Qos and IGP capabilities of this 568 tunnel interface 570 bidirection-co-route-groups is already mentioned above in Network UTE 571 tunnel configuration. 573 4.3. Operational state 575 Operational state of Network TE tunnel can be queried and obtained 576 from read-only state containers that fall under the same tree (/ute- 577 tunnel:ute-tunnel-oper /ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute- 578 tunnel:tunnel) as the configuration. 580 Please note this state tree refers both the configuration "applied" 581 state. Following is a simplified graphical representation of the 582 data model for Network TE tunnel operational state. 584 +--ro te-tunnel-oper 585 augment /ute-tunnel:ute-tunnel-oper/ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute-tunnel:tunnel: 586 +--ro path-setup-type? pce-type:path-setup-type 587 +--ro co-route-name? string 588 +--ro trigger-source? pce-type:trigger-type 589 +--ro path-lists 590 +--ro path-list* [option-number] 591 +--ro option-number uint16 592 +--ro paths* [path-role lsp-id] 593 +--ro path-role pce-type:lsp-role 594 +--ro lsp-id uint32 595 +--ro active? boolean 596 +--ro bandwidth? pce-type:bandwidth 597 +--ro request-latency? uint32 598 +--ro path-latency? uint32 599 +--ro path-metric? uint32 600 +--ro include-affinity-any? pce-type:affinity 601 +--ro include-affinity-all? pce-type:affinity 602 +--ro exclude-affinity? pce-type:affinity 603 +--ro setup-priority? uint8 604 +--ro holdup-priority? uint8 605 +--ro hops 606 | +--ro hop* [hop-index] 607 | +--ro hop-index uint32 608 | +--ro ne-id? yang:uuid 609 | +--ro ltp-id? yang:uuid 610 | +--ro ip-address? inet:ipv4-address 611 | +--ro hop-inc-type? pce-type:hop-inc-type 612 +--ro sr-label-stack 613 +--ro sr-label* [hop-index] 614 +--ro hop-index uint32 615 +--ro sid? uint32 616 +--ro sid-type? sid-type 617 +--ro ipv4-node-info 618 | +--ro node-address? inet:ipv4-address 619 +--ro ipv6-node-info 620 | +--ro node-address? inet:ipv6-address 621 +--ro ipv4-adjacency-info 622 | +--ro local-address? inet:ipv4-address 623 | +--ro remote-address? inet:ipv4-address 624 +--ro ipv6-adjacency-info 625 | +--ro local-address? inet:ipv6-address 626 | +--ro remote-address? inet:ipv6-address 627 +--ro lsr-id 628 +--ro node-lsr-id? inet:ip-address 630 Figure 12: simplified graphical representation of the data model for 631 Tunnel Operational state 633 The Network TE Tunnel Operational states mostly the subset of 634 configuration data, based on path constraints, SDN Controller can 635 calculate the path which can be represent by hops for both RSVP-TE 636 and SR-TE, these two kind of tunnels have many features in common 637 like affinity, but for SR-TE only it needs the SR label stack to show 638 the whole path, and if the label stack is too deep, it also need to 639 identify the lsr-id who should do the label adhesion job in the path. 641 4.4. Notifications 643 This model defines a list of notifications to inform subscriber of 644 important events detected during the configuration and operation. 645 These events include events related to changes in the operational 646 state of an Network TE Tunnel, including tunnel-besteffort event when 647 Tunnel downgrades to best effort, tunnel-unprotected when Tunnel 648 downgrades to non protection, tunnel-overlap event when Tunnel's 649 primary and secondary LSPs are overlap, tunnel-constraint-unsatisfied 650 event when Tunnel new constraint is unsatisfied. Following is a 651 simplified graphical representation of the data model for Network TE 652 Tunnel notifications. 654 module: net-te-tunnel 655 notifications: 656 +---n tunnel-besteffort 657 | +--ro tunnel-name? leafref 658 +---n tunnel-besteffort-clear 659 | +--ro tunnel-name? leafref 660 +---n tunnel-unprotected 661 | +--ro tunnel-name? leafref 662 +---n tunnel-unprotected-clear 663 | +--ro tunnel-name? leafref 664 +---n tunnel-overlap 665 | +--ro tunnel-name? leafref 666 +---n tunnel-overlap-clear 667 | +--ro tunnel-name? leafref 668 +---n tunnel-constraint-unsatisfied 669 | +--ro tunnel-name? leafref 670 +---n tunnel-constraint-unsatisfied-clear 671 +--ro tunnel-name? leafref 673 Figure 13: simplified graphical representation of the data model for 674 Network TE Tunnel notifications 676 4.5. Actions 678 This model defines a list of rpcs that allow performing an action or 679 executing a command on the protocol. For here, it only have one RPC 680 to support query-te-tunnels-nbi to query all TE Tunnels Following is 681 a simplified graphical representation of the data model for Network 682 TE Tunnel actions. 684 module: ietf-OPSAWG-te-tunnel 685 RPCs: 686 +---x query-te-tunnels-nbi 687 +--ro input 688 | +--ro src-ne-id yang:uuid 689 | +--ro dst-ne-id yang:uuid 690 | +--ro tunnel-name? pce-type:tunnel-name 691 +--ro output 692 +--ro te-tunnel-brief 693 +--ro total-record-num? uint32 694 +--ro te-tunnel* 695 +--ro tunnel-name? pce-type:tunnel-name 696 +--ro tunnel-type? identityref 697 +--ro user-label? string 698 +--ro source 699 | +--ro ne-id? yang:uuid 700 | +--ro ip-address inet:ip-address 701 +--ro destination 702 | +--ro ne-id? yang:uuid 703 | +--ro ip-address inet:ip-address 704 +--ro bandwidth? uint32 705 +--ro min-latency? uint32 707 Figure 14: simplified graphical representation of the data model for 708 Network TE Tunnel actions 710 4.6. Open Items 712 TBD 714 5. YANG Specification 716 Following are actual YANG definition for Network UTE Tunnel and 717 Network TE Tunnel constructs defined earlier in the document, Network 718 UTE Tunnel yang file is Unified TE tunnel and used to describe the 719 common properties of different types of Network TE tunnels, Network 720 TE Tunnel yang file is augment from it. 722 file "ietf-OPSAWG-ute-tunnel.yang"-----> 723 module ietf-OPSAWG-ute-tunnel { 724 namespace namespace "urn:ietf:params:xml:ns:yang:ietf-OPSAWG-ute-tunnel"; 725 prefix ute-tunnel; 727 import ietf-yang-types {prefix yang;} 728 import ietf-inet-types {prefix inet;} 729 import ietf-ac-pub-type {prefix ac-type;} 731 organization "IETF OPSA Working Group"; 732 contact 733 "Editor: Robin Li 734 "; 735 description ; 736 revision 2017-03-11{ 737 description Initial version; 738 reference ; 739 } 741 enumeration 743 typedef manage-protocol{ 744 type enumeration{ 745 enum netconf{ 746 value 0; 747 } 748 } 749 } 751 typedef control-protocol{ 752 type enumeration{ 753 enum pcep{ 754 value 0; 755 } 756 enum netconf{ 757 value 1; 758 } 759 } 760 } 762 typedef manage-type{ 763 type enumeration{ 764 enum ne{ 765 value 0; 766 description Tunnel is create and delete,modified by ne; 767 } 768 enum controller{ 769 value 1; 770 description tunne is create,delete andmodified by controller; 771 } 772 } 773 } 774 typedef control-mode{ 775 type enumeration{ 776 enum delegate{ 777 value 0; 778 } 779 enum report{ 780 value 1; 781 } 782 enum none{ 783 value 2; 784 } 785 } 786 } 788 typedef tunnel-down-clear-reason { 789 type enumeration { 790 enum up { 791 value 1; 792 description indicates the tunnel is down .; 793 } 794 enum delete { 795 value 2; 796 description indicates the tunnel is delete .; 797 } 798 } 799 } 800 typedef oper-type { 801 type enumeration { 802 enum update { 803 value 0; 804 description indicates the tunnel lsp is update .; 805 } 806 enum remove { 807 value 1; 808 description indicates the tunnel lsp is remove .; 809 } 810 } 811 } 813 Identities 815 identity tunl-type { 816 } 817 identity te{ 818 base tunl-type; 819 } 820 identity uni{ 821 base tunl-type; 823 } 825 Groupings 827 grouping src-or-dst{ 828 leaf ne-id{ 829 type yanguuid; 830 } 831 leaf ip-address{ 832 type inetip-address; 833 mandatory true; 834 } 835 } 837 Main container of cfg 839 container ute-tunnel-cfg{ 840 container p2p-tunnel{ 841 container tunnels{ 842 list tunnel{ 843 key tunnel-name; 844 leaf tunnel-name{ 845 type string { 846 length 1..64; 847 } 848 description Tunnel Name; 849 } 850 leaf user-label{ 851 type string { 852 length 0..242; 853 } 854 } 855 leaf tunnel-type{ 856 type identityref{ 857 base tunl-type; 858 } 859 mandatory true; 860 } 861 leaf admin-status{ 862 type ac-typeadmin-status; 863 default admin-up; 864 } 865 leaf sym-tunnel-name{ 866 type string { 867 length 1..255; 868 } 869 } 870 leaf mtu{ 871 type uint32 { 872 range 46..9600; 873 } 874 default 1500; 875 } 876 leaf manage-type{ 877 type manage-type; 878 } 879 leaf manage-protocol{ 880 type manage-protocol; 881 } 882 leaf control-protocol { 883 description The tunnel path's control protocol type; 884 type control-protocol; 885 default pcep; 886 } 887 leaf control-mode{ 888 type control-mode; 889 } 890 leaf adopt { 891 description Tunnel is adopted by controller and can be relayed by services; 892 type boolean; 893 default false; 894 } 895 leaf ip-address{ 896 type inetipv4-address; 897 } 898 leaf ip-unnumbered{ 899 type string { 900 length 1..64; 901 } 902 } 903 container source{ 904 uses src-or-dst; 905 } 906 container destination{ 907 uses src-or-dst; 908 } 909 } 910 } 912 container bidirection-co-route-groups{ 913 list co-route-group{ 914 key co-route-name; 915 leaf co-route-name{ 916 type string { 917 length 1..64; 919 } 920 } 921 leaf user-label{ 922 type string { 923 length 0..242; 924 } 925 } 926 leaf bfd-enable { 927 type boolean; 928 default false; 929 } 930 container first-tunnel{ 931 leaf tunnel-name { 932 type string { 933 length 1..64; 934 } 935 } 936 } 937 container second-tunnel{ 938 leaf tunnel-name { 939 type string { 940 length 1..64; 941 } 942 } 943 } 944 } 945 } 946 } 947 } 949 Main container of oper 951 container ute-tunnel-oper{ 952 config false; 953 container p2p-tunnel{ 954 container tunnels{ 955 list tunnel{ 956 key tunnel-name; 957 leaf tunnel-name{ 958 type string { 959 length 1..64; 960 } 961 description Tunnel Name; 962 } 963 leaf tunnel-type{ 964 type identityref{ 965 base tunl-type; 967 } 968 mandatory true; 969 } 970 leaf oper-status{ 971 type ac-typeoperate-status; 972 } 973 leaf tunnel-id{ 974 type uint32; 975 } 976 leaf sym-tunnel-name{ 977 type string { 978 length 1..255; 979 } 980 } 981 container source{ 982 uses src-or-dst; 983 } 984 container destination{ 985 uses src-or-dst; 986 } 987 } 988 } 989 } 990 } 992 notification 994 notification tunnel-state-down{ 995 leaf tunnel-name{ 996 type leafref{ 997 path ute-tunnel-operp2p-tunneltunnelstunneltunnel-name; 998 } 999 } 1000 } 1002 notification tunnel-state-down-clear{ 1003 leaf tunnel-name{ 1004 type leafref{ 1005 path ute-tunnel-operp2p-tunneltunnelstunneltunnel-name; 1006 } 1007 } 1008 leaf reason { 1009 type tunnel-down-clear-reason; 1010 } 1011 } 1012 notification tunnel-lsp-changed{ 1013 leaf tunnel-name{ 1014 type leafref{ 1015 path ute-tunnel-operp2p-tunneltunnelstunneltunnel-name; 1016 } 1017 } 1018 leaf oper-type{ 1019 type oper-type; 1020 } 1021 leaf sym-path-name{ 1022 type leafref{ 1023 path ute-tunnel-operp2p-tunneltunnelstunnelsym-tunnel-name; 1024 } 1025 } 1026 container source{ 1027 uses src-or-dst; 1028 } 1029 } 1030 } 1032 Figure 15: Network UTE Tunnel Yang File 1034 file "ietf-OPSAWG-te-tunnel.yang"-----> 1035 module ietf-OPSAWG-te-tunnel{ 1036 namespace "urn:ietf:params:xml:ns:yang:ietf-OPSAWG-te-tunnel"; 1037 prefix "te-tunnel"; 1039 import ietf-yang-types {prefix yang;} 1040 import ietf-inet-types {prefix inet;} 1041 import ietf-OPSAWG-ute-tunnel{prefix ute-tunnel;} 1042 import ietf-pce-type {prefix pce-type;} 1044 organization "IETF OPSA Working Group"; 1045 contact 1046 "Editor: Robin Li 1047 "; 1048 description "Net MPLS TE tunnel"; 1049 revision 2016-01-01{ 1050 description "Initial version"; 1051 reference ""; 1052 } 1054 /***************************************************************** 1055 * enumeration 1056 *****************************************************************/ 1057 typedef revertive-type{ 1058 type enumeration{ 1059 enum revertive{ 1060 value 0; 1061 description "hot-standby revertive"; 1062 } 1063 enum no-revertive{ 1064 value 1; 1065 description "hot-standby no-revertive"; 1066 } 1067 } 1068 } 1070 typedef bandwidth-mode{ 1071 type enumeration{ 1072 enum original-bandwidth{ 1073 value 0; 1074 description "hotstandby lsp's bandwidth is same with the primary lsp"; 1075 } 1076 enum dynamic-bandwidth{ 1077 value 1; 1078 description "hotstandby lsp use 0 bandwidth"; 1079 } 1080 } 1081 } 1083 typedef sr-path-type{ 1084 type enumeration{ 1085 enum adjacency-sid{ 1086 value 1; 1087 } 1088 enum node-sid{ 1089 value 2; 1090 } 1091 /* 1092 enum hybrid{ 1093 value 3; 1094 } 1095 */ 1096 } 1097 } 1099 typedef sid-type { 1100 type enumeration { 1101 enum "ipv4-node" { 1102 value 1; 1103 description "IPv4 node sid"; 1104 } 1105 /* 1106 enum "ipv6-node" { 1107 value 2; 1108 description "IPv6 node sid"; 1109 } 1110 */ 1111 enum "ipv4-adjacency" { 1112 value 3; 1113 description "IPv4 adjacency sid"; 1114 } 1115 /* 1116 enum "ipv6-adjacency" { 1117 value 4; 1118 description "IPv6 adjacency sid"; 1119 } 1120 */ 1121 /* value 5 is remained for unnumbered adjacency */ 1122 enum "adhere-label" { 1123 value 6; 1124 description "IPv6 adjacency sid"; 1125 } 1126 } 1127 } 1129 typedef protocol-type{ 1130 type enumeration{ 1131 enum isis{ 1132 value 1; 1133 } 1134 enum ospf{ 1135 value 2; 1136 } 1137 } 1138 } 1140 typedef igp-metric-type{ 1141 type enumeration{ 1142 enum relative{ 1143 value 1; 1144 } 1145 enum absolute{ 1146 value 2; 1147 } 1148 } 1149 } 1151 typedef propagate-mode{ 1152 type enumeration{ 1153 enum shortcut{ 1154 value 1; 1155 } 1156 enum forward-adjacency{ 1157 value 2; 1158 } 1159 } 1160 } 1162 /***************************************************************** 1163 * Groupings 1164 *****************************************************************/ 1165 grouping tunnel-constraint-cfg{ 1167 leaf setup-priority{ 1168 type uint8 { 1169 range "0 .. 7"; 1170 } 1171 default 7; 1172 } 1173 leaf holdup-priority{ 1174 type uint8 { 1175 range "0 .. 7"; 1176 } 1177 default 7; 1178 } 1179 leaf bandwidth{ 1180 type uint32 { 1181 range "0..4000000000"; 1182 } 1183 default 0; 1184 } 1185 leaf oper-bandwidth{ 1186 type uint32 { 1187 range "0..4000000000"; 1188 } 1189 default 0; 1190 } 1191 list path-options{ 1192 key "option-number"; 1193 leaf option-number{ 1194 type uint16{ 1195 range "1 | 65535"; 1196 } 1197 description "path option number , only support 1 and 65535, 65535 is for the best-effort path"; 1198 } 1199 list path-constraints{ 1200 key "path-role"; 1201 leaf path-role{ 1202 type pce-type:lsp-role; 1203 } 1204 leaf latency{ 1205 type uint32 { 1206 range "0..60000000"; 1207 } 1208 default 0; 1209 } 1210 leaf hop-limit{ 1211 type uint16 { 1212 range "1..32"; 1213 } 1214 default 32; 1215 } 1216 leaf include-affinity-any{ 1217 type pce-type:affinity; 1218 } 1219 leaf include-affinity-all{ 1220 type pce-type:affinity; 1221 description "include-affinity-all"; 1222 } 1223 leaf exclude-affinity{ 1224 type pce-type:affinity; 1225 } 1226 leaf te-attribute-ignore{ 1227 type bits { 1228 bit ignore-affinity { 1229 position 0; 1230 } 1231 } 1232 } 1233 container explicit-path-hops{ 1234 list explicit-path-hop{ 1235 key "hop-index"; 1236 leaf hop-index{ 1237 type uint32{ 1238 range 0..63; 1239 } 1240 } 1241 leaf ne-id{ 1242 type yang:uuid; 1243 } 1244 leaf ltp-id{ 1245 type yang:uuid; 1246 } 1247 leaf ip-address{ 1248 type "inet:ipv4-address"; 1249 } 1250 leaf hop-inc-type{ 1251 type pce-type:hop-inc-type; 1253 } 1254 leaf hop-type{ 1255 type pce-type:hop-type; 1256 } 1257 } 1258 } 1259 } 1260 } 1261 } 1263 grouping hot-standby{ 1264 leaf revertive{ 1265 type revertive-type; 1266 default revertive; 1267 } 1268 leaf bandwidth-mode{ 1269 type bandwidth-mode; 1270 default original-bandwidth; 1271 } 1272 leaf wtr{ 1273 type uint32 { 1274 range "0..2592000"; 1275 } 1276 default 10; 1277 description "wait to restore"; 1278 } 1279 } 1280 /************************************************************* 1281 * augment extension 1282 **************************************************************/ 1283 augment "/ute-tunnel:ute-tunnel-cfg" { 1284 container global-cfg { 1285 leaf bandwidth-threshold { 1286 description "TE tunel max bandwidth of network, only effective to service-driven tunnel"; 1287 type uint32 { 1288 range "0..4000000000"; 1289 } 1290 default 500000; 1291 } 1292 } 1293 } 1294 augment "/ute-tunnel:ute-tunnel-cfg/ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute-tunnel:tunnel"{ 1295 when "ute-tunnel:tunnel-type='te'"; 1297 leaf path-setup-type{ 1298 type pce-type:path-setup-type; 1299 default rsvp-te; 1300 } 1301 leaf sr-path-type { 1302 description "The SR-TE tunnel path's type"; 1303 type sr-path-type; 1304 default adjacency-sid; 1305 } 1307 leaf is-bypass-tunnel{ 1308 must "path-setup-type = 'pce-type:rsvp-te'"; 1309 type boolean; 1310 default false; 1311 } 1313 container bypass-tunnel{ 1314 must "path-setup-type = 'pce-type:rsvp-te'"; 1315 when "is-bypass-tunnel='true'"; 1316 container protect-interface{ 1317 leaf ltp-id{ 1318 type yang:uuid; 1319 } 1320 } 1321 } 1323 leaf hot-standby-enable { 1324 type "boolean"; 1325 default false; 1326 description "hot-standby protect capability"; 1327 } 1329 container tunnel-constraint{ 1330 uses tunnel-constraint-cfg; 1331 } 1333 container protect-policy{ 1334 when "is-bypass-tunnel='false'"; 1336 container hot-standby{ 1337 uses hot-standby; 1338 } 1339 container frr{ 1340 must "path-setup-type = 'pce-type:rsvp-te'"; 1342 leaf fast-reroute{ 1343 type boolean; 1344 } 1345 container bypass-attributes{ 1346 leaf setup-priority{ 1347 type uint8 { 1348 range "0 .. 7"; 1350 } 1351 default 7; 1352 } 1353 leaf holdup-priority{ 1354 type uint8 { 1355 range "0 .. 7"; 1356 } 1357 default 7; 1358 } 1359 leaf bandwidth{ 1360 type uint32 { 1361 range "0..4000000000"; 1362 } 1363 default 0; 1364 } 1365 leaf include-affinity-any{ 1366 type pce-type:affinity; 1367 } 1368 leaf include-affinity-all{ 1369 type pce-type:affinity; 1370 } 1371 leaf exclude-affinity{ 1372 type pce-type:affinity; 1373 } 1374 leaf te-attribute-ignore{ 1375 type bits { 1376 bit ignore-affinity { 1377 position 0; 1378 } 1379 } 1380 } 1381 } 1382 } 1383 } 1385 container tunnel-service{ 1386 leaf service-class{ 1387 type bits{ 1388 bit be{ 1389 position 0; 1390 } 1391 bit af1{ 1392 position 1; 1393 } 1394 bit af2{ 1395 position 2; 1396 } 1397 bit af3{ 1398 position 3; 1399 } 1400 bit af4{ 1401 position 4; 1402 } 1403 bit ef{ 1404 position 5; 1405 } 1406 bit cs6{ 1407 position 6; 1408 } 1409 bit cs7{ 1410 position 7; 1411 } 1412 bit default{ 1413 position 8; 1414 } 1415 } 1416 } 1417 leaf outbound-limit{ 1418 type boolean; 1419 default false; 1420 } 1421 leaf reserved-for-binding{ 1422 type boolean; 1423 } 1424 leaf statistic-enable{ 1425 type boolean; 1426 default false; 1427 description "traffic statistic enable"; 1428 } 1429 container igp-capabilities { 1430 description "The IGP capabilities of this tunnel interface"; 1431 list igp-instance { 1432 description "The key of this IGP instance"; 1433 key "index"; 1434 leaf index{ 1435 type uint32; 1436 description "The index of this object"; 1437 } 1438 leaf protocol-type{ 1439 type protocol-type; 1440 description "The protocol type of this tunnel interface"; 1441 mandatory true; 1442 } 1443 leaf igp-instance-id{ 1444 type uint32{ 1445 range 1..4294967295; 1447 } 1448 description "The id of this protocol instance"; 1449 default 1; 1450 } 1451 leaf ospf-area-id{ 1452 when protocol-type=ospf; 1453 type uint32{ 1454 range 0..4294967295; 1455 } 1456 description "The id of OSPF area"; 1457 } 1458 } 1459 leaf propagate-mode{ 1460 type propagate-mode; 1461 description "The propagate mode"; 1462 } 1463 leaf advertise-hold-time { 1464 when propagate-mode=forward-adjacency; 1465 type uint32{ 1466 range 0..4294967295; 1467 } 1468 description "The time value of advertise hold timer when FA is enabled"; 1469 } 1470 leaf igp-metric-type{ 1471 type igp-metric-type; 1472 description "The igp metric type"; 1473 } 1474 leaf relative-metric-value { 1475 when igp-metric-type=relative; 1476 type int32{ 1477 range -10..10; 1478 } 1479 description "The igp metric value when type is relative"; 1480 } 1481 leaf absolute-metric-value { 1482 when igp-metric-type=absolute; 1483 type uint32{ 1484 range 1..65535; 1485 } 1486 description "The igp metric value when type is absolute"; 1487 } 1488 } 1489 } 1490 } 1492 augment "/ute-tunnel:ute-tunnel-oper/ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute-tunnel:tunnel" { 1493 when "ute-tunnel:tunnel-type='te'"; 1494 leaf path-setup-type{ 1495 config "false"; 1496 type pce-type:path-setup-type; 1497 default rsvp-te; 1498 } 1499 leaf co-route-name{ 1500 type string { 1501 length "1..64"; 1502 } 1503 } 1504 leaf trigger-source{ 1505 type pce-type:trigger-type; 1506 } 1507 container path-lists{ 1508 list path-list{ 1509 key "option-number"; 1510 leaf option-number{ 1511 type uint16; 1512 description "path option number , only support 1 and 65535, 65535 is for the best-effort path"; 1513 } 1514 list paths{ 1515 key "path-role lsp-id"; 1516 leaf path-role{ 1517 type pce-type:lsp-role; 1518 } 1519 leaf lsp-id{ 1520 type uint32{ 1521 range 0..4294967295; 1522 } 1523 } 1524 leaf active { 1525 type boolean; 1526 } 1527 uses path-constraint-inuse; 1528 container hops{ 1529 list hop{ 1530 key "hop-index"; 1531 leaf hop-index{ 1532 type uint32{ 1533 range 0..63; 1534 } 1535 } 1536 leaf ne-id{ 1537 type yang:uuid; 1538 } 1539 leaf ltp-id{ 1540 type yang:uuid; 1541 } 1542 leaf ip-address{ 1543 type inet:ipv4-address; 1544 } 1545 leaf hop-inc-type{ 1546 type pce-type:hop-inc-type; 1547 } 1548 } 1549 } 1550 container sr-label-stack{ 1551 description "The label stack of this SR-TE tunnel"; 1552 list sr-label{ 1553 description "The SID information of this hop instance"; 1554 key "hop-index"; 1555 leaf hop-index{ 1556 type uint32{ 1557 range 0..63; 1558 } 1559 description "The index of this hop instance"; 1560 } 1561 leaf sid { 1562 type uint32; 1563 description "The SID of this hop instance"; 1564 } 1565 leaf sid-type { 1566 type sid-type; 1567 description "The type of this SID"; 1568 } 1569 container ipv4-node-info { 1570 description "The information of this IPv4 node SID"; 1571 when sid-type=ipv4-node; 1572 leaf node-address { 1573 type inet:ipv4-address; 1574 description "The address of this IPv4 node SID"; 1575 } 1576 } 1577 container ipv6-node-info { 1578 description "The information of this IPv6 node SID"; 1579 when sid-type=ipv6-node; 1580 leaf node-address { 1581 type inet:ipv6-address; 1582 description "The address of this IPv6 node SID"; 1583 } 1584 } 1585 container ipv4-adjacency-info { 1586 description "The information of this IPv4 adj SID"; 1587 when sid-type=ipv4-adjacency; 1588 leaf local-address { 1589 type inet:ipv4-address; 1590 description "The local address of this IPv4 adj SID"; 1591 } 1592 leaf remote-address { 1593 type inet:ipv4-address; 1594 description "The remote address of this IPv4 adj SID"; 1595 } 1596 } 1597 container ipv6-adjacency-info { 1598 description "The information of this IPv6 node SID"; 1599 when sid-type=ipv6-adjacency; 1600 leaf local-address { 1601 type inet:ipv6-address; 1602 description "The local address of this IPv6 adj SID"; 1603 } 1604 leaf remote-address { 1605 type inet:ipv6-address; 1606 description "The remote address of this IPv6 adj SID"; 1607 } 1608 } 1609 container lsr-id { 1610 description "The information of this adhere node"; 1611 when sid-type=adhere-label; 1612 leaf node-lsr-id { 1613 type inet:ip-address; 1614 description "The LSR-ID address of this adhere node"; 1615 } 1616 } 1617 } 1618 } 1619 } 1620 } 1621 } 1622 } 1624 grouping te-tunnel-brief-grouping{ 1625 leaf total-record-num{ 1626 type uint32; 1627 } 1628 list te-tunnel{ 1629 leaf tunnel-name{ 1630 type pce-type:tunnel-name; 1631 description "Tunnel Name"; 1632 } 1633 leaf tunnel-type{ 1634 type identityref{ 1635 base ute-tunnel:tunl-type; 1636 } 1637 } 1638 leaf user-label{ 1639 type string { 1640 length "0..242"; 1641 } 1642 } 1643 container source{ 1644 uses ute-tunnel:src-or-dst; 1645 } 1646 container destination{ 1647 uses ute-tunnel:src-or-dst; 1648 } 1649 leaf bandwidth{ 1650 type uint32; 1651 } 1652 leaf min-latency{ 1653 type uint32 { 1654 range "0..60000000"; 1655 } 1656 description "Min latency of configuration"; 1657 } 1658 } 1659 } 1660 grouping path-constraint-inuse{ 1661 leaf bandwidth{ 1662 type pce-type:bandwidth; 1663 description "bandwidth"; 1664 } 1665 leaf request-latency{ 1666 type uint32{ 1667 range 0..4294967295; 1668 } 1669 description "latency"; 1670 } 1671 leaf path-latency{ 1672 type uint32{ 1673 range 0..4294967295; 1674 } 1675 } 1676 leaf path-metric{ 1677 type uint32; 1678 description "The metric value of this path"; 1679 } 1680 leaf include-affinity-any{ 1681 type pce-type:affinity; 1682 } 1683 leaf include-affinity-all{ 1684 type pce-type:affinity; 1685 description "include-affinity-all"; 1686 } 1687 leaf exclude-affinity{ 1688 type pce-type:affinity; 1689 } 1690 leaf setup-priority{ 1691 type uint8 { 1692 range "0 .. 7"; 1693 } 1694 } 1695 leaf holdup-priority{ 1696 type uint8 { 1697 range "0 .. 7"; 1698 } 1699 } 1700 } 1701 /************************************************************* 1702 * rpc 1703 **************************************************************/ 1704 rpc query-te-tunnels-nbi{ 1705 description "Tunnels generated through NBI, E2E sync and adopted, state is up"; 1706 input{ 1707 leaf src-ne-id{ 1708 type yang:uuid; 1709 mandatory true; 1710 } 1711 leaf dst-ne-id{ 1712 type yang:uuid; 1713 mandatory true; 1714 } 1715 leaf tunnel-name{ 1716 type pce-type:tunnel-name; 1717 description "Tunnel Name"; 1718 mandatory false; 1719 } 1720 } 1721 output{ 1722 container te-tunnel-brief{ 1723 uses te-tunnel-brief-grouping; 1724 } 1725 } 1726 } 1728 /*************************************************************** 1729 * notification 1730 ***************************************************************/ 1731 notification tunnel-besteffort{ 1732 leaf tunnel-name{ 1733 type leafref{ 1734 path "/ute-tunnel:ute-tunnel-oper/ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute-tunnel:tunnel/ute-tunnel:tunnel-name"; 1736 } 1737 description "Tunnel Name"; 1738 } 1739 description "Tunnel downgrades to besteffort"; 1740 } 1741 notification tunnel-besteffort-clear{ 1742 leaf tunnel-name{ 1743 type leafref{ 1744 path "/ute-tunnel:ute-tunnel-oper/ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute-tunnel:tunnel/ute-tunnel:tunnel-name"; 1745 } 1746 description "Tunnel Name"; 1747 } 1748 description "Tunnel upgrades to main LSP"; 1749 } 1750 notification tunnel-unprotected{ 1751 leaf tunnel-name{ 1752 type leafref{ 1753 path "/ute-tunnel:ute-tunnel-oper/ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute-tunnel:tunnel/ute-tunnel:tunnel-name"; 1754 } 1755 description "Tunnel Name"; 1756 } 1757 description "Tunnel downgrades to non protection"; 1758 } 1759 notification tunnel-unprotected-clear{ 1760 leaf tunnel-name{ 1761 type leafref{ 1762 path "/ute-tunnel:ute-tunnel-oper/ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute-tunnel:tunnel/ute-tunnel:tunnel-name"; 1763 } 1764 description "Tunnel Name"; 1765 } 1766 description "Tunnel upgrades to protection"; 1767 } 1768 notification tunnel-overlap{ 1769 leaf tunnel-name{ 1770 type leafref{ 1771 path "/ute-tunnel:ute-tunnel-oper/ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute-tunnel:tunnel/ute-tunnel:tunnel-name"; 1772 } 1773 description "Tunnel Name"; 1774 } 1775 description "Tunnel's primary and secondary LSPs are overlap"; 1776 } 1777 notification tunnel-overlap-clear{ 1778 leaf tunnel-name{ 1779 type leafref{ 1780 path "/ute-tunnel:ute-tunnel-oper/ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute-tunnel:tunnel/ute-tunnel:tunnel-name"; 1781 } 1782 description "Tunnel Name"; 1783 } 1784 description "Tunnel's primary and secondary LSPs completely separate"; 1785 } 1786 notification tunnel-constraint-unsatisfied{ 1787 leaf tunnel-name{ 1788 type leafref{ 1789 path "/ute-tunnel:ute-tunnel-oper/ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute-tunnel:tunnel/ute-tunnel:tunnel-name"; 1790 } 1791 description "Tunnel Name"; 1792 } 1793 description "Tunnel new constraint is unsatisfied"; 1794 } 1795 notification tunnel-constraint-unsatisfied-clear{ 1796 leaf tunnel-name{ 1797 type leafref{ 1798 path "/ute-tunnel:ute-tunnel-oper/ute-tunnel:p2p-tunnel/ute-tunnel:tunnels/ute-tunnel:tunnel/ute-tunnel:tunnel-name"; 1799 } 1800 description "Tunnel Name"; 1801 } 1802 description "Tunnel new constraint is satisfied"; 1803 } 1804 } 1806 Figure 16: Network TE Tunnel Yang File 1808 6. Security Considerations 1810 The configuration, state, action and notification data defined using 1811 YANG data models in this document are likely to be accessed via the 1812 protocols such as NETCONF [RFC6241] etc. Hence, YANG implementations 1813 MUST comply with the security requirements specified in section 15 of 1814 [RFC6020]. Additionally, NETCONF implementations MUST comply with 1815 the security requirements specified in sections 2.2, 2.3 and 9 of 1816 [RFC6241] as well as section 3.7 of [RFC6536]. 1818 7. IANA Considerations 1820 This document has no actions for IANA. 1822 8. Contributors 1824 The following people all contributed to creating this document, 1825 listed in alphabetical order: 1827 TBD 1829 9. Acknowledgements 1831 This document has benefited from reviews, suggestions, comments and 1832 proposed text provided by the following members, listed in 1833 alphabetical order:xxx. 1835 Part of the initial draft of this document was picked up from 1836 previous documents, and this section lists the acknowledgements from 1837 them. 1839 From "xxx" [xxx] 1841 The following people all contributed to creating this document, 1842 listed in alphabetical order: 1844 xxx, Huawei Technologies 1846 This document has benefited from reviews, suggestions, comments and 1847 proposed text provided by the following members, listed in 1848 alphabetical order: xxx. 1850 The authors of "xxx" [xxx] were: 1852 xxx , NetCracker 1854 The initial draft of this document merged one document, and this 1855 section lists the acknowledgements from it. 1857 From "draft-jiang-opsawg-nettunnel-model-yang" 1859 The authors of this draft would like to thank the following persons 1860 for the provided valuable feedback and contributions: xxx contributed 1861 to an early version of this draft. 1863 The authors of "draft-jiang-opsawg-nettunnel-model-yang" were: 1865 TBD 1867 The authors of this draft would like to thank the following persons 1868 for the provided valuable feedback: TBD 1870 10. References 1872 10.1. Normative References 1874 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1875 Requirement Levels", BCP 14, RFC 2119, 1876 DOI 10.17487/RFC2119, March 1997, 1877 . 1879 10.2. Informative References 1881 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 1882 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 1883 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 1884 . 1886 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1887 and A. Bierman, Ed., "Network Configuration Protocol 1888 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1889 . 1891 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1892 Protocol (NETCONF) Access Control Model", RFC 6536, 1893 DOI 10.17487/RFC6536, March 2012, 1894 . 1896 Authors' Addresses 1898 Rui Jiang 1899 Huawei Technologies 1900 Huawei Bld., No.156 Beiqing Rd. 1901 Beijing 100095 1902 China 1904 Email: jiangrui1@huawei.com 1906 Zhenbin Li 1907 Huawei Technologies 1908 Huawei Bld., No.156 Beiqing Rd. 1909 Beijing 100095 1910 China 1912 Email: lizhenbin@huawei.com