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