idnits 2.17.1 draft-ietf-ospf-sr-yang-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 111 has weird spacing: '...r-bound uin...' == Line 112 has weird spacing: '...r-bound uin...' == Line 120 has weird spacing: '...roup-id uin...' == Line 138 has weird spacing: '...r-bound uin...' == Line 139 has weird spacing: '...r-bound uin...' == (1 more instance...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (March 13, 2017) is 2600 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Missing Reference: 'I-D.ietf-netmod-routing-cfg' is mentioned on line 1159, but not defined == Unused Reference: 'RFC1793' is defined on line 1173, but no explicit reference was found in the text == Unused Reference: 'RFC2328' is defined on line 1182, but no explicit reference was found in the text == Unused Reference: 'RFC3101' is defined on line 1186, but no explicit reference was found in the text == Unused Reference: 'RFC3623' is defined on line 1190, but no explicit reference was found in the text == Unused Reference: 'RFC3630' is defined on line 1194, but no explicit reference was found in the text == Unused Reference: 'RFC4577' is defined on line 1199, but no explicit reference was found in the text == Unused Reference: 'RFC4750' is defined on line 1204, but no explicit reference was found in the text == Unused Reference: 'RFC5187' is defined on line 1209, but no explicit reference was found in the text == Unused Reference: 'RFC5340' is defined on line 1213, but no explicit reference was found in the text == Unused Reference: 'RFC5643' is defined on line 1217, but no explicit reference was found in the text == Unused Reference: 'RFC5838' is defined on line 1221, but no explicit reference was found in the text == Unused Reference: 'RFC5880' is defined on line 1226, but no explicit reference was found in the text == Unused Reference: 'RFC6565' is defined on line 1240, but no explicit reference was found in the text == Unused Reference: 'RFC7223' is defined on line 1245, but no explicit reference was found in the text == Unused Reference: 'RFC8022' is defined on line 1253, but no explicit reference was found in the text ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) ** Obsolete normative reference: RFC 8022 (Obsoleted by RFC 8349) == Outdated reference: A later version (-29) exists of draft-ietf-ospf-yang-06 == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-06 Summary: 3 errors (**), 0 flaws (~~), 26 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet D. Yeung 3 Internet-Draft Arrcus 4 Intended status: Informational Y. Qu 5 Expires: September 14, 2017 Huawei 6 J. Zhang 7 Juniper Networks 8 I. Chen 9 Jabil Circuit 10 A. Lindem 11 Cisco Systems 12 March 13, 2017 14 Yang Data Model for OSPF SR (Segment Routing) Protocol 15 draft-ietf-ospf-sr-yang-01 17 Abstract 19 This document defines a YANG data model that can be used to configure 20 and manage OSPF Segment Routing. 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. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 57 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 58 2. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 2 59 3. OSPF Segment Routing Yang Module . . . . . . . . . . . . . . 10 60 4. Security Considerations . . . . . . . . . . . . . . . . . . . 25 61 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 25 62 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 63 6.1. Normative References . . . . . . . . . . . . . . . . . . 25 64 6.2. Informative References . . . . . . . . . . . . . . . . . 27 65 Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 28 66 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 68 1. Overview 70 YANG [RFC6020] [RFC7950] is a data definition language used to 71 define the contents of a conceptual data store that allows networked 72 devices to be managed using NETCONF [RFC6241]. YANG is proving 73 relevant beyond its initial confines, as bindings to other interfaces 74 (e.g., ReST) and encodings other than XML (e.g., JSON) are being 75 defined. Furthermore, YANG data models can be used as the basis for 76 implementation of other interfaces, such as CLI and programmatic 77 APIs. 79 This document defines a YANG data model that can be used to configure 80 and manage OSPF Segment Routing and it is an augmentation to the OSPF 81 YANG data model. 83 1.1. Requirements Language 85 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 86 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 87 document are to be interpreted as described in [RFC2119]. 89 2. OSPF Segment Routing 91 This document defines a model for OSPF Segment Routing feature. It 92 is an augmentation of the OSPF base model. 94 The OSPF SR YANG module requires support for the base segment routing 95 module [I-D.ietf-spring-sr-yang], which defines the global segment 96 routing configuration independent of any specific routing protocol 97 configuration, and support of OSPF base model[I-D.ietf-ospf-yang] 98 which defines basic OSPF configuration and state. 100 module: ietf-ospf-sr 101 augment /rt:routing/rt:control-plane-protocols 102 /rt:control-plane-protocol/ospf:ospf/ospf:instance: 103 +--rw segment-routing 104 | +--rw enabled? boolean 105 | +--rw bindings 106 | +--rw advertise 107 | | +--rw policies* string 108 | +--rw receive? boolean 109 +--rw protocol-srgb {sr:protocol-srgb}? 110 +--rw srgb* [lower-bound upper-bound] 111 +--rw lower-bound uint32 112 +--rw upper-bound uint32 113 augment /rt:routing/rt:control-plane-protocols 114 /rt:control-plane-protocol/ospf:ospf 115 /ospf:instance/ospf:areas/ospf:area 116 /ospf:interfaces/ospf:interface: 117 +--rw segment-routing 118 +--rw adjacency-sid 119 +--rw advertise-adj-group-sid* [group-id] 120 | +--rw group-id uint32 121 +--rw advertise-protection? enumeration 122 augment /rt:routing/rt:control-plane-protocols 123 /rt:control-plane-protocol/ospf:ospf 124 /ospf:instance/ospf:areas/ospf:area 125 /ospf:interfaces/ospf:interface/ospf:fast-reroute: 126 +--rw ti-lfa {ti-lfa}? 127 +--rw enable? boolean 128 augment /rt:routing-state/rt:control-plane-protocols 129 /rt:control-plane-protocol/ospf:ospf/ospf:instance: 130 +--ro segment-routing 131 | +--ro enabled? boolean 132 | +--ro bindings 133 | +--ro advertise 134 | | +--ro policies* string 135 | +--ro receive? boolean 136 +--ro protocol-srgb {sr:protocol-srgb}? 137 +--ro srgb* [lower-bound upper-bound] 138 +--ro lower-bound uint32 139 +--ro upper-bound uint32 140 augment /rt:routing-state/rt:control-plane-protocols 141 /rt:control-plane-protocol/ospf:ospf 142 /ospf:instance/ospf:areas/ospf:area 143 /ospf:interfaces/ospf:interface: 144 +--ro segment-routing 145 +--ro adjacency-sid 146 +--ro advertise-adj-group-sid* [group-id] 147 | +--ro group-id uint32 148 +--ro advertise-protection? enumeration 149 augment /rt:routing-state/rt:control-plane-protocols 150 /rt:control-plane-protocol/ospf:ospf/ospf:instance 151 /ospf:areas/ospf:area/ospf:interfaces/ospf:interface 152 /ospf:database/ospf:link-scope-lsa-type 153 /ospf:link-scope-lsas/ospf:link-scope-lsa/ospf:version 154 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 155 /ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv: 156 +--ro perfix-sid-sub-tlvs 157 | +--ro prefix-sid-sub-tlv* 158 | +--ro flags? bits 159 | +--ro mt-id? uint8 160 | +--ro algorithm? uint8 161 | +--ro sid? uint32 162 +--ro sid-binding-sub-tlvs 163 +--ro sid-binding-sub-tlv* 164 +--ro flags? bits 165 +--ro mt-id? uint8 166 +--ro weight? uint8 167 +--ro sid-sub-tlv 168 | +--ro sid? uint32 169 +--ro ero-metric-sub-tlv 170 | +--ro metric? uint32 171 +--ro ipv4-ero-sub-tlv 172 | +--ro flags? bits 173 | +--ro ipv4-address? inet:ipv4-address 174 +--ro unnumbered-ero-sub-tlv 175 | +--ro flags? bits 176 | +--ro router-id? yang:dotted-quad 177 | +--ro interface-id? uint32 178 +--ro ipv4-backup-ero-sub-tlv 179 | +--ro flags? bits 180 | +--ro ipv4-address? inet:ipv4-address 181 +--ro unnumbered-backup-ero-sub-tlv 182 +--ro flags? bits 183 +--ro router-id? yang:dotted-quad 184 +--ro interface-id? uint32 185 augment /rt:routing-state/rt:control-plane-protocols 186 /rt:control-plane-protocol/ospf:ospf/ospf:instance 187 /ospf:areas/ospf:area/ospf:database 188 /ospf:area-scope-lsa-type/ospf:area-scope-lsas 189 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2 190 /ospf:ospfv2/ospf:body/ospf:opaque 191 /ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv: 192 +--ro perfix-sid-sub-tlvs 193 | +--ro prefix-sid-sub-tlv* 194 | +--ro flags? bits 195 | +--ro mt-id? uint8 196 | +--ro algorithm? uint8 197 | +--ro sid? uint32 198 +--ro sid-binding-sub-tlvs 199 +--ro sid-binding-sub-tlv* 200 +--ro flags? bits 201 +--ro mt-id? uint8 202 +--ro weight? uint8 203 +--ro sid-sub-tlv 204 | +--ro sid? uint32 205 +--ro ero-metric-sub-tlv 206 | +--ro metric? uint32 207 +--ro ipv4-ero-sub-tlv 208 | +--ro flags? bits 209 | +--ro ipv4-address? inet:ipv4-address 210 +--ro unnumbered-ero-sub-tlv 211 | +--ro flags? bits 212 | +--ro router-id? yang:dotted-quad 213 | +--ro interface-id? uint32 214 +--ro ipv4-backup-ero-sub-tlv 215 | +--ro flags? bits 216 | +--ro ipv4-address? inet:ipv4-address 217 +--ro unnumbered-backup-ero-sub-tlv 218 +--ro flags? bits 219 +--ro router-id? yang:dotted-quad 220 +--ro interface-id? uint32 221 augment /rt:routing-state/rt:control-plane-protocols 222 /rt:control-plane-protocol/ospf:ospf/ospf:instance 223 /ospf:database/ospf:as-scope-lsa-type/ospf:as-scope-lsas 224 /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 225 /ospf:body/ospf:opaque/ospf:extended-prefix-tlvs 226 /ospf:extended-prefix-tlv: 227 +--ro perfix-sid-sub-tlvs 228 | +--ro prefix-sid-sub-tlv* 229 | +--ro flags? bits 230 | +--ro mt-id? uint8 231 | +--ro algorithm? uint8 232 | +--ro sid? uint32 233 +--ro sid-binding-sub-tlvs 234 +--ro sid-binding-sub-tlv* 235 +--ro flags? bits 236 +--ro mt-id? uint8 237 +--ro weight? uint8 238 +--ro sid-sub-tlv 239 | +--ro sid? uint32 240 +--ro ero-metric-sub-tlv 241 | +--ro metric? uint32 242 +--ro ipv4-ero-sub-tlv 243 | +--ro flags? bits 244 | +--ro ipv4-address? inet:ipv4-address 245 +--ro unnumbered-ero-sub-tlv 246 | +--ro flags? bits 247 | +--ro router-id? yang:dotted-quad 248 | +--ro interface-id? uint32 249 +--ro ipv4-backup-ero-sub-tlv 250 | +--ro flags? bits 251 | +--ro ipv4-address? inet:ipv4-address 252 +--ro unnumbered-backup-ero-sub-tlv 253 +--ro flags? bits 254 +--ro router-id? yang:dotted-quad 255 +--ro interface-id? uint32 256 augment /rt:routing-state/rt:control-plane-protocols 257 /rt:control-plane-protocol/ospf:ospf/ospf:instance 258 /ospf:areas/ospf:area/ospf:database 259 /ospf:area-scope-lsa-type/ospf:area-scope-lsas 260 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2 261 /ospf:ospfv2/ospf:body/ospf:opaque 262 /ospf:extended-link-tlvs/ospf:extended-link-tlv: 263 +--ro adj-sid-sub-tlvs 264 | +--ro adj-sid-sub-tlv* 265 | +--ro flags? bits 266 | +--ro mt-id? uint8 267 | +--ro weight? uint8 268 | +--ro sid? uint32 269 +--ro lan-adj-sid-sub-tlvs 270 +--ro lan-adj-sid-sub-tlv* 271 +--ro flags? bits 272 +--ro mt-id? uint8 273 +--ro weight? uint8 274 +--ro neighbor-router-id? yang:dotted-quad 275 +--ro sid? uint32 276 augment /rt:routing-state/rt:control-plane-protocols 277 /rt:control-plane-protocol/ospf:ospf/ospf:instance 278 /ospf:areas/ospf:area/ospf:interfaces/ospf:interface 279 /ospf:database/ospf:link-scope-lsa-type 280 /ospf:link-scope-lsas/ospf:link-scope-lsa 281 /ospf:version/ospf:ospfv2/ospf:ospfv2 282 /ospf:body/ospf:opaque: 283 +--ro extended-prefix-range-tlvs 284 | +--ro extended-prefix-range-tlv* 285 | +--ro range-size? uint16 286 | +--ro flags? bits 287 | +--ro prefix? inet:ip-prefix 288 | +--ro perfix-sid-sub-tlvs 289 | | +--ro prefix-sid-sub-tlv* 290 | | +--ro flags? bits 291 | | +--ro mt-id? uint8 292 | | +--ro algorithm? uint8 293 | | +--ro sid? uint32 294 | +--ro sid-binding-sub-tlvs 295 | | +--ro sid-binding-sub-tlv* 296 | | +--ro flags? bits 297 | | +--ro mt-id? uint8 298 | | +--ro weight? uint8 299 | | +--ro sid-sub-tlv 300 | | | +--ro sid? uint32 301 | | +--ro ero-metric-sub-tlv 302 | | | +--ro metric? uint32 303 | | +--ro ipv4-ero-sub-tlv 304 | | | +--ro flags? bits 305 | | | +--ro ipv4-address? inet:ipv4-address 306 | | +--ro unnumbered-ero-sub-tlv 307 | | | +--ro flags? bits 308 | | | +--ro router-id? yang:dotted-quad 309 | | | +--ro interface-id? uint32 310 | | +--ro ipv4-backup-ero-sub-tlv 311 | | | +--ro flags? bits 312 | | | +--ro ipv4-address? inet:ipv4-address 313 | | +--ro unnumbered-backup-ero-sub-tlv 314 | | +--ro flags? bits 315 | | +--ro router-id? yang:dotted-quad 316 | | +--ro interface-id? uint32 317 | +--ro unknown-tlvs 318 | +--ro unknown-tlv* 319 | +--ro type? uint16 320 | +--ro length? uint16 321 | +--ro value? yang:hex-string 322 +--ro sr-algorithm-tlv 323 | +--ro sr-algorithm* uint8 324 +--ro sid-range-tlvs 325 +--ro sid-range-tlv* 326 +--ro range-size? ospf:uint24 327 +--ro sid-sub-tlv 328 +--ro sid? uint32 329 augment /rt:routing-state/rt:control-plane-protocols 330 /rt:control-plane-protocol/ospf:ospf/ospf:instance 331 /ospf:areas/ospf:area/ospf:database 332 /ospf:area-scope-lsa-type/ospf:area-scope-lsas 333 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2 334 /ospf:ospfv2/ospf:body/ospf:opaque: 335 +--ro extended-prefix-range-tlvs 336 | +--ro extended-prefix-range-tlv* 337 | +--ro range-size? uint16 338 | +--ro flags? bits 339 | +--ro prefix? inet:ip-prefix 340 | +--ro perfix-sid-sub-tlvs 341 | | +--ro prefix-sid-sub-tlv* 342 | | +--ro flags? bits 343 | | +--ro mt-id? uint8 344 | | +--ro algorithm? uint8 345 | | +--ro sid? uint32 346 | +--ro sid-binding-sub-tlvs 347 | | +--ro sid-binding-sub-tlv* 348 | | +--ro flags? bits 349 | | +--ro mt-id? uint8 350 | | +--ro weight? uint8 351 | | +--ro sid-sub-tlv 352 | | | +--ro sid? uint32 353 | | +--ro ero-metric-sub-tlv 354 | | | +--ro metric? uint32 355 | | +--ro ipv4-ero-sub-tlv 356 | | | +--ro flags? bits 357 | | | +--ro ipv4-address? inet:ipv4-address 358 | | +--ro unnumbered-ero-sub-tlv 359 | | | +--ro flags? bits 360 | | | +--ro router-id? yang:dotted-quad 361 | | | +--ro interface-id? uint32 362 | | +--ro ipv4-backup-ero-sub-tlv 363 | | | +--ro flags? bits 364 | | | +--ro ipv4-address? inet:ipv4-address 365 | | +--ro unnumbered-backup-ero-sub-tlv 366 | | +--ro flags? bits 367 | | +--ro router-id? yang:dotted-quad 368 | | +--ro interface-id? uint32 369 | +--ro unknown-tlvs 370 | +--ro unknown-tlv* 371 | +--ro type? uint16 372 | +--ro length? uint16 373 | +--ro value? yang:hex-string 374 +--ro sr-algorithm-tlv 375 | +--ro sr-algorithm* uint8 376 +--ro sid-range-tlvs 377 +--ro sid-range-tlv* 378 +--ro range-size? ospf:uint24 379 +--ro sid-sub-tlv 380 +--ro sid? uint32 381 augment /rt:routing-state/rt:control-plane-protocols 382 /rt:control-plane-protocol/ospf:ospf/ospf:instance 383 /ospf:database/ospf:as-scope-lsa-type 384 /ospf:as-scope-lsas/ospf:as-scope-lsa/ospf:version 385 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: 386 +--ro extended-prefix-range-tlvs 387 | +--ro extended-prefix-range-tlv* 388 | +--ro range-size? uint16 389 | +--ro flags? bits 390 | +--ro prefix? inet:ip-prefix 391 | +--ro perfix-sid-sub-tlvs 392 | | +--ro prefix-sid-sub-tlv* 393 | | +--ro flags? bits 394 | | +--ro mt-id? uint8 395 | | +--ro algorithm? uint8 396 | | +--ro sid? uint32 397 | +--ro sid-binding-sub-tlvs 398 | | +--ro sid-binding-sub-tlv* 399 | | +--ro flags? bits 400 | | +--ro mt-id? uint8 401 | | +--ro weight? uint8 402 | | +--ro sid-sub-tlv 403 | | | +--ro sid? uint32 404 | | +--ro ero-metric-sub-tlv 405 | | | +--ro metric? uint32 406 | | +--ro ipv4-ero-sub-tlv 407 | | | +--ro flags? bits 408 | | | +--ro ipv4-address? inet:ipv4-address 409 | | +--ro unnumbered-ero-sub-tlv 410 | | | +--ro flags? bits 411 | | | +--ro router-id? yang:dotted-quad 412 | | | +--ro interface-id? uint32 413 | | +--ro ipv4-backup-ero-sub-tlv 414 | | | +--ro flags? bits 415 | | | +--ro ipv4-address? inet:ipv4-address 416 | | +--ro unnumbered-backup-ero-sub-tlv 417 | | +--ro flags? bits 418 | | +--ro router-id? yang:dotted-quad 419 | | +--ro interface-id? uint32 420 | +--ro unknown-tlvs 421 | +--ro unknown-tlv* 422 | +--ro type? uint16 423 | +--ro length? uint16 424 | +--ro value? yang:hex-string 425 +--ro sr-algorithm-tlv 426 | +--ro sr-algorithm* uint8 427 +--ro sid-range-tlvs 428 +--ro sid-range-tlv* 429 +--ro range-size? ospf:uint24 430 +--ro sid-sub-tlv 431 +--ro sid? uint32 433 3. OSPF Segment Routing Yang Module 435 file "ietf-ospf-sr@2017-03-13.yang" 436 module ietf-ospf-sr { 437 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr"; 439 prefix ospf-sr; 441 import ietf-inet-types { 442 prefix "inet"; 443 } 445 import ietf-yang-types { 446 prefix "yang"; 447 } 449 import ietf-routing { 450 prefix "rt"; 451 } 452 import ietf-segment-routing-common { 453 prefix "sr-cmn"; 454 } 455 import ietf-segment-routing { 456 prefix "sr"; 457 } 458 import ietf-ospf { 459 prefix "ospf"; 460 } 462 organization 463 "Cisco Systems 464 170 West Tasman Drive 465 San Jose, CA 95134-1706 466 USA"; 468 contact 469 "WG Web: 470 WG List: 472 WG Chair: Acee Lindem 473 475 WG Chair: Abhay Roy 476 478 Editor: Derek Yeung 479 480 Author: Derek Yeung 481 482 Author: Yingzhen Qu 483 484 Author: Acee Lindem 485 486 Author: Jeffrey Zhang 487 488 Author: Ing-Wher Chen 489 490 Author: Greg Hankins 491 "; 493 description 494 "This YANG module defines the generic configuration 495 and operational state for OSPF Segment Routing, which is 496 common across all of the vendor implementations. It is 497 intended that the module will be extended by vendors to 498 define vendor-specific OSPF Segment Routing configuration 499 and operational parameters and policies. 501 Terms and Acronyms 503 OSPF (ospf): Open Shortest Path First 505 IP (ip): Internet Protocol 507 IPv4 (ipv4):Internet Protocol Version 4 509 IPv6 (ipv6): Internet Protocol Version 6 510 "; 512 revision 2017-03-13 { 513 description 514 "* Add p-flag in adj-sid sub-tlv."; 515 reference 516 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 517 } 519 revision 2016-10-31 { 520 description 521 "* Update authors information. 522 * Add import of ietf-segment-routing-common module."; 523 reference 524 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 525 } 527 revision 2016-07-07 { 528 description 529 "* Change routing-protocol to control-plane-protocol."; 530 reference 531 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 532 } 534 revision 2016-03-20 { 535 description 536 "* Remove routing-instance."; 537 reference 538 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 539 } 541 revision 2015-10-19 { 542 description 543 "* Add per-protocol SRGB support. 544 * Editorial changes."; 545 reference 546 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 547 } 549 revision 2015-09-02 { 550 description 551 "* Author list update. 552 * Editorial changes."; 553 reference 554 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 555 } 557 revision 2015-07-06 { 558 description 559 "Initial revision."; 560 reference 561 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 562 } 564 feature ti-lfa { 565 description 566 "Topology-Independent Loop-Free Alternate (TI-LFA) 567 computation using segment routing."; 568 } 570 /* Configuration */ 572 augment "/rt:routing/rt:control-plane-protocols" 573 + "/rt:control-plane-protocol/ospf:ospf/ospf:instance" { 574 when "../../rt:type = 'ospf:ospfv2' or " 575 + "../../rt:type = 'ospf:ospfv3'" { 576 description 577 "This augments the OSPF routing protocol when used."; 578 } 579 description 580 "This augments the OSPF protocol configuration 581 with segment routing."; 582 uses sr:controlplane-cfg; 583 container protocol-srgb { 584 if-feature sr:protocol-srgb; 585 uses sr-cmn:srgb-cfg; 586 description 587 "Per-protocol SRGB."; 588 } 589 } 591 augment "/rt:routing/rt:control-plane-protocols/" 592 + "rt:control-plane-protocol/ospf:ospf/ospf:instance/" 593 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 594 when "../../../../../../rt:type = 'ospf:ospfv2' or " 595 + "../../../../../../rt:type = 'ospf:ospfv3'" { 596 description 597 "This augments the OSPF interface configuration 598 when used."; 599 } 600 description 601 "This augments the OSPF protocol interface 602 configuration with segment routing."; 604 uses sr:igp-interface-cfg; 605 } 607 augment "/rt:routing/rt:control-plane-protocols/" 608 + "rt:control-plane-protocol/ospf:ospf/ospf:instance/" 609 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" 610 + "ospf:fast-reroute" { 611 when "../../../../../../../rt:type = 'ospf:ospfv2' or " 612 + "../../../../../../../rt:type = 'ospf:ospfv3'" { 613 description 614 "This augments the OSPF routing protocol when used."; 615 } 616 description 617 "This augments the OSPF protocol IP-FRR with TI-LFA."; 619 container ti-lfa { 620 if-feature ti-lfa; 621 leaf enable { 622 type boolean; 623 description 624 "Enables TI-LFA computation."; 626 } 627 description 628 "Topology Independent Loop Free Alternate 629 (TI-LFA) support."; 630 } 631 } 633 /* Operational states */ 635 augment "/rt:routing-state/" 636 + "rt:control-plane-protocols/rt:control-plane-protocol/" 637 + "ospf:ospf/ospf:instance" { 638 when "../../rt:type = 'ospf:ospfv2' or " 639 + "../../rt:type = 'ospf:ospfv3'" { 640 description 641 "This augments the OSPF routing protocol when used."; 642 } 643 description 644 "This augments the OSPF protocol operational state 645 with segment routing."; 646 uses sr:controlplane-cfg; 647 container protocol-srgb { 648 if-feature sr:protocol-srgb; 649 uses sr-cmn:srgb-cfg; 650 description 651 "Per-protocol SRGB."; 652 } 653 } 655 augment "/rt:routing-state/" 656 + "rt:control-plane-protocols/rt:control-plane-protocol/" 657 + "ospf:ospf/ospf:instance/ospf:areas/ospf:area/" 658 + "ospf:interfaces/ospf:interface" { 659 when "../../../../../../rt:type = 'ospf:ospfv2' or " 660 + "../../../../../../rt:type = 'ospf:ospfv3'" { 661 description 662 "This augments the OSPF routing protocol when used."; 663 } 664 description 665 "This augments the OSPF protocol interface 666 operational state with segment routing."; 668 uses sr:igp-interface-cfg; 669 } 671 /* Database */ 673 grouping sid-sub-tlv { 674 description "SID/Label sub-TLV grouping."; 675 container sid-sub-tlv { 676 description 677 "Used to advertise the SID/Label associated with a 678 prefix or adjacency."; 679 leaf sid { 680 type uint32; 681 description 682 "Segment Identifier (SID) - A 20 bit label or 683 32 bit SID."; 684 } 685 } 686 } 688 grouping prefix-sid-sub-tlvs { 689 description "Prefix Segment ID (SID) sub-TLVs."; 690 container perfix-sid-sub-tlvs{ 691 description "Prefix SID sub-TLV."; 692 list prefix-sid-sub-tlv { 693 description "Prefix SID sub-TLV."; 694 leaf flags { 695 type bits { 696 bit NP { 697 description 698 "No-PHP flag."; 699 } 700 bit M { 701 description 702 "Mapping server flag."; 703 } 704 bit E { 705 description 706 "Explicit-NULL flag."; 707 } 708 bit V { 709 description 710 "Value/Index flag."; 711 } 712 bit L { 713 description 714 "Local flag."; 715 } 716 } 717 description "Segment Identifier (SID) Flags."; 718 } 719 leaf mt-id { 720 type uint8; 721 description "Multi-topology ID."; 723 } 724 leaf algorithm { 725 type uint8; 726 description 727 "The algorithm associated with the prefix-SID."; 728 } 729 leaf sid { 730 type uint32; 731 description "An index or label."; 732 } 733 } 734 } 735 } 737 grouping sid-binding-sub-tlvs { 738 description "SID/Label binding sub-TLV grouping."; 739 container sid-binding-sub-tlvs { 740 description "SID binding sub-TLVs."; 741 list sid-binding-sub-tlv { 742 description "SID binding sub-TLV."; 743 leaf flags { 744 type bits { 745 bit M { 746 description 747 "Mirroring context flag."; 748 } 749 } 750 description "Flags."; 751 } 752 leaf mt-id { 753 type uint8; 754 description "Multi-topology ID."; 755 } 756 leaf weight { 757 type uint8; 758 description "Weight for load-balancing purposes."; 759 } 761 uses sid-sub-tlv; 763 container ero-metric-sub-tlv { 764 description 765 "The cost of an Explicit Route Object (ERO) path."; 766 leaf metric { 767 type uint32; 768 description "The aggregate IGP or TE path cost."; 769 } 770 } 771 container ipv4-ero-sub-tlv { 772 description 773 "The IPv4 ERO sub-TLV describes a path segment 774 using IPv4 address."; 775 leaf flags { 776 type bits { 777 bit L { 778 description 779 "If set, then the segment path is designated as 780 'loose'. Otherwise, the path is 'strict'."; 781 } 782 } 783 description "ERO Flags."; 784 } 785 leaf ipv4-address { 786 type inet:ipv4-address; 787 description "The address of the explicit route hop."; 788 } 789 } 790 container unnumbered-ero-sub-tlv { 791 description "The unnumbered interface ID ERO sub-TLV 792 describes a path segment that includes an 793 unnumbered interface."; 794 leaf flags { 795 type bits { 796 bit L { 797 description 798 "If set, then the segment path is designated as 799 'loose'. Otherwise as 'strict'."; 800 } 801 } 802 description "ERO Flags."; 803 } 804 leaf router-id { 805 type yang:dotted-quad; 806 description "Router-id of the next-hop."; 807 } 808 leaf interface-id { 809 type uint32; 810 description 811 "The identifier assigned to the link by the 812 router specified by the router-id."; 813 } 814 } 815 container ipv4-backup-ero-sub-tlv { 816 description 817 "The IPv4 backup ERO sub-TLV describes a path 818 segment using IPv4 address."; 820 leaf flags { 821 type bits { 822 bit L { 823 description 824 "If set, then the segment path is designated as 825 'loose'. Otherwise as 'strict'."; 826 } 827 } 828 description "Flags."; 829 } 830 leaf ipv4-address { 831 type inet:ipv4-address; 832 description "The address of the explicit route hop."; 833 } 834 } 835 container unnumbered-backup-ero-sub-tlv { 836 description 837 "The unnumbered interface ID backup ERO sub-TLV 838 describes a path segment that includes an 839 unnumbered interface."; 840 leaf flags { 841 type bits { 842 bit L { 843 description 844 "If set, then the segment path is designated as 845 'loose'. Otherwise, the path is 'strict'."; 846 } 847 } 848 description "Flags."; 849 } 850 leaf router-id { 851 type yang:dotted-quad; 852 description "Router-id of the next-hop."; 853 } 854 leaf interface-id { 855 type uint32; 856 description 857 "The identifier assigned to the link by the 858 router specified by the router-id."; 859 } 860 } 861 } 862 } 863 } 865 grouping extended-prefix-range-tlvs { 866 description "Extended prefix range TLV grouping."; 867 container extended-prefix-range-tlvs { 868 description "The list of range of prefixes."; 869 list extended-prefix-range-tlv { //type=2? 870 description "The range of prefixes."; 871 leaf range-size { 872 type uint16; 873 description "The number of prefixes covered by the 874 advertisement."; 875 } 876 leaf flags { 877 type bits { 878 bit IA { 879 description 880 "Inter-Area flag."; 881 } 882 } 883 description "Flags."; 884 } 885 leaf prefix { 886 type inet:ip-prefix; 887 description "Address prefix."; 888 } 889 uses prefix-sid-sub-tlvs; 890 uses sid-binding-sub-tlvs; 891 uses ospf:unknown-tlvs; 892 } 893 } 894 } 896 grouping sr-algorithm-tlv { 897 description "SR algorithm TLV grouping."; 898 container sr-algorithm-tlv { 899 description "All SR algorithm TLVs."; 900 leaf-list sr-algorithm { 901 type uint8; 902 description 903 "The Segment Routing (SR) algorithms that the router is 904 currently using."; 905 } 906 } 907 } 909 grouping sid-range-tlvs { 910 description "SID Range TLV grouping."; 911 container sid-range-tlvs { 912 description "List of SID range TLVs."; 913 list sid-range-tlv { 914 description "SID range TLV."; 915 leaf range-size { 916 type ospf:uint24; 917 description "The SID range."; 918 } 919 uses sid-sub-tlv; 920 } 921 } 922 } 923 augment "/rt:routing-state/" 924 + "rt:control-plane-protocols/rt:control-plane-protocol/" 925 + "ospf:ospf/ospf:instance/ospf:areas/ospf:area/" 926 + "ospf:interfaces/ospf:interface/ospf:database/" 927 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 928 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 929 + "ospf:ospfv2/ospf:body/ospf:opaque/" 930 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 931 when "../../../../../../../../../../../../../../../" 932 + "rt:type = 'ospf:ospfv2'" { 933 description 934 "This augmentation is only valid for OSPFv2."; 935 } 936 description 937 "SR specific TLVs for OSPFv2 extended prefix TLV 938 in type 9 opaque LSA."; 939 uses prefix-sid-sub-tlvs; 940 uses sid-binding-sub-tlvs; 941 } 943 augment "/rt:routing-state/" 944 + "rt:control-plane-protocols/rt:control-plane-protocol/" 945 + "ospf:ospf/ospf:instance/ospf:areas/" 946 + "ospf:area/ospf:database/" 947 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 948 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 949 + "ospf:ospfv2/ospf:body/ospf:opaque/" 950 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 951 when "../../../../../../../../../../../../../" 952 + "rt:type = 'ospf:ospfv2'" { 953 description 954 "This augmentation is only valid for OSPFv2."; 955 } 956 description 957 "SR specific TLVs for OSPFv2 extended prefix TLV 958 in type 10 opaque LSA."; 959 uses prefix-sid-sub-tlvs; 960 uses sid-binding-sub-tlvs; 961 } 962 augment "/rt:routing-state/" 963 + "rt:control-plane-protocols/rt:control-plane-protocol/" 964 + "ospf:ospf/ospf:instance/ospf:database/" 965 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 966 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 967 + "ospf:ospfv2/ospf:body/ospf:opaque/" 968 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 969 when "../../../../../../../../../../../" 970 + "rt:type = 'ospf:ospfv2'" { 971 description 972 "This augmentation is only valid for OSPFv2."; 973 } 974 description 975 "SR specific TLVs for OSPFv2 extended prefix TLV 976 in type 11 opaque LSA."; 977 uses prefix-sid-sub-tlvs; 978 uses sid-binding-sub-tlvs; 979 } 981 augment "/rt:routing-state/" 982 + "rt:control-plane-protocols/rt:control-plane-protocol/" 983 + "ospf:ospf/ospf:instance/ospf:areas/" 984 + "ospf:area/ospf:database/" 985 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 986 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 987 + "ospf:ospfv2/ospf:body/ospf:opaque/" 988 + "ospf:extended-link-tlvs/ospf:extended-link-tlv" { 989 when "../../../../../../../../../../../../../" 990 + "rt:type = 'ospf:ospfv2'" { 991 description 992 "This augmentation is only valid for OSPFv2."; 993 } 994 description 995 "SR specific TLVs for OSPFv2 extended link TLV 996 in type 10 opaque LSA."; 998 container adj-sid-sub-tlvs { 999 description "Adjacency SID optional sub-TLVs."; 1000 list adj-sid-sub-tlv { 1001 description "List of Adjacency SID sub-TLVs."; 1002 leaf flags { 1003 type bits { 1004 bit B { 1005 description 1006 "Backup flag."; 1007 } 1008 bit V { 1009 description 1010 "Value/Index flag."; 1011 } 1012 bit L { 1013 description 1014 "Local/Global flag."; 1015 } 1016 bit G { 1017 description 1018 "Group flag."; 1019 } 1020 bit P { 1021 description 1022 "Persistent flag."; 1023 } 1024 } 1025 description "Flags."; 1026 } 1027 leaf mt-id { 1028 type uint8; 1029 description "Multi-topology ID."; 1030 } 1031 leaf weight { 1032 type uint8; 1033 description "Weight used for load-balancing."; 1034 } 1035 leaf sid { 1036 type uint32; 1037 description "Segment Identifier (SID) index/label."; 1038 } 1039 } 1040 } 1042 container lan-adj-sid-sub-tlvs { 1043 description "LAN Adjacency SID optional sub-TLVs."; 1044 list lan-adj-sid-sub-tlv { 1045 description "List of LAN adjacency SID sub-TLVs."; 1046 leaf flags { 1047 type bits { 1048 bit B { 1049 description 1050 "Backup flag."; 1051 } 1052 bit V { 1053 description 1054 "Value/Index flag."; 1055 } 1056 bit L { 1057 description 1058 "Local/Global flag."; 1059 } 1060 bit G { 1061 description 1062 "Group flag."; 1063 } 1064 bit P { 1065 description 1066 "Persistent flag."; 1067 } 1068 } 1069 description "Flags."; 1070 } 1071 leaf mt-id { 1072 type uint8; 1073 description "Multi-topology ID."; 1074 } 1075 leaf weight { 1076 type uint8; 1077 description "Weight used for load-balancing."; 1078 } 1079 leaf neighbor-router-id { 1080 type yang:dotted-quad; 1081 description "Neighbor router ID."; 1082 } 1083 leaf sid { 1084 type uint32; 1085 description "Segment Identifier (SID) index/label."; 1086 } 1087 } 1088 } 1089 } 1091 augment "/rt:routing-state/" 1092 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1093 + "ospf:ospf/ospf:instance/ospf:areas/ospf:area/" 1094 + "ospf:interfaces/ospf:interface/ospf:database/" 1095 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 1096 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 1097 + "ospf:ospfv2/ospf:body/ospf:opaque" { 1098 when "../../../../../../../../../../../../../" 1099 + "rt:type = 'ospf:ospfv2'" { 1100 description 1101 "This augmentation is only valid for OSPFv2."; 1102 } 1104 description 1105 "SR specific TLVs for OSPFv2 type 9 opaque LSA."; 1107 uses extended-prefix-range-tlvs; 1108 uses sr-algorithm-tlv; 1109 uses sid-range-tlvs; 1110 } 1112 augment "/rt:routing-state/" 1113 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1114 + "ospf:ospf/ospf:instance/ospf:areas/" 1115 + "ospf:area/ospf:database/" 1116 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1117 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 1118 + "ospf:ospfv2/ospf:body/ospf:opaque" { 1119 when "../../../../../../../../../../../" 1120 + "rt:type = 'ospf:ospfv2'" { 1121 description 1122 "This augmentation is only valid for OSPFv2."; 1123 } 1125 description 1126 "SR specific TLVs for OSPFv2 type 10 opaque LSA."; 1128 uses extended-prefix-range-tlvs; 1129 uses sr-algorithm-tlv; 1130 uses sid-range-tlvs; 1131 } 1133 augment "/rt:routing-state/" 1134 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1135 + "ospf:ospf/ospf:instance/ospf:database/" 1136 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 1137 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 1138 + "ospf:ospfv2/ospf:body/ospf:opaque" { 1139 when "../../../../../../../../../" 1140 + "rt:type = 'ospf:ospfv2'" { 1141 description 1142 "This augmentation is only valid for OSPFv2."; 1143 } 1144 description 1145 "SR specific TLVs for OSPFv2 type 11 opaque LSA."; 1147 uses extended-prefix-range-tlvs; 1148 uses sr-algorithm-tlv; 1149 uses sid-range-tlvs; 1150 } 1151 } 1152 1154 4. Security Considerations 1156 The data model defined does not create any security implications. 1158 This draft does not change any underlying security issues inherent in 1159 [I-D.ietf-netmod-routing-cfg]. 1161 5. Acknowledgements 1163 The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, 1164 Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and 1165 Alan Davey for their thorough reviews and helpful comments. 1167 This document was produced using Marshall Rose's xml2rfc tool. 1169 6. References 1171 6.1. Normative References 1173 [RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", 1174 RFC 1793, DOI 10.17487/RFC1793, April 1995, 1175 . 1177 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1178 Requirement Levels", BCP 14, RFC 2119, 1179 DOI 10.17487/RFC2119, March 1997, 1180 . 1182 [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, 1183 DOI 10.17487/RFC2328, April 1998, 1184 . 1186 [RFC3101] Murphy, P., "The OSPF Not-So-Stubby Area (NSSA) Option", 1187 RFC 3101, DOI 10.17487/RFC3101, January 2003, 1188 . 1190 [RFC3623] Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful OSPF 1191 Restart", RFC 3623, DOI 10.17487/RFC3623, November 2003, 1192 . 1194 [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering 1195 (TE) Extensions to OSPF Version 2", RFC 3630, 1196 DOI 10.17487/RFC3630, September 2003, 1197 . 1199 [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the 1200 Provider/Customer Edge Protocol for BGP/MPLS IP Virtual 1201 Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, 1202 June 2006, . 1204 [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., 1205 Coltun, R., and F. Baker, "OSPF Version 2 Management 1206 Information Base", RFC 4750, DOI 10.17487/RFC4750, 1207 December 2006, . 1209 [RFC5187] Pillay-Esnault, P. and A. Lindem, "OSPFv3 Graceful 1210 Restart", RFC 5187, DOI 10.17487/RFC5187, June 2008, 1211 . 1213 [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF 1214 for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, 1215 . 1217 [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information 1218 Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August 1219 2009, . 1221 [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and 1222 R. Aggarwal, "Support of Address Families in OSPFv3", 1223 RFC 5838, DOI 10.17487/RFC5838, April 2010, 1224 . 1226 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 1227 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 1228 . 1230 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1231 the Network Configuration Protocol (NETCONF)", RFC 6020, 1232 DOI 10.17487/RFC6020, October 2010, 1233 . 1235 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1236 and A. Bierman, Ed., "Network Configuration Protocol 1237 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1238 . 1240 [RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and 1241 M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge 1242 (PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, 1243 June 2012, . 1245 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 1246 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 1247 . 1249 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1250 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1251 . 1253 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1254 Management", RFC 8022, DOI 10.17487/RFC8022, November 1255 2016, . 1257 6.2. Informative References 1259 [I-D.ietf-ospf-yang] 1260 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1261 "Yang Data Model for OSPF Protocol", draft-ietf-ospf- 1262 yang-06 (work in progress), October 2016. 1264 [I-D.ietf-spring-sr-yang] 1265 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 1266 Data Model for Segment Routing", draft-ietf-spring-sr- 1267 yang-06 (work in progress), March 2017. 1269 Appendix A. Contributors' Addreses 1271 Dean Bogdanovic 1272 Volta Networks, Inc. 1274 EMail: dean@voltanet.io 1276 Kiran Koushik Agrahara Sreenivasa 1277 Cisco Systems 1278 12515 Research Blvd, Bldg 4 1279 Austin, TX 78681 1280 USA 1282 EMail: kkoushik@cisco.com 1284 Authors' Addresses 1286 Derek Yeung 1287 Arrcus 1289 EMail: derek@arrcus.com 1291 Yingzhen Qu 1292 Huawei 1293 2330 Central Expressway 1294 Santa Clara, CA 95050 1295 USA 1297 EMail: yingzhen.qu@huawei.com 1299 Jeffrey Zhang 1300 Juniper Networks 1301 10 Technology Park Drive 1302 Westford, MA 01886 1303 USA 1305 EMail: zzhang@juniper.net 1307 Ing-Wher Chen 1308 Jabil Circuit 1310 EMail: Ing-Wher_chen@jabil.com 1311 Acee Lindem 1312 Cisco Systems 1313 301 Midenhall Way 1314 Cary, NC 27513 1316 EMail: acee@cisco.com