idnits 2.17.1 draft-wang-i2rs-rib-data-model-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (March 09, 2015) is 3333 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-15) exists of draft-ietf-i2rs-architecture-09 == Outdated reference: A later version (-17) exists of draft-ietf-i2rs-rib-info-model-06 == Outdated reference: A later version (-03) exists of draft-ietf-i2rs-usecase-reqs-summary-00 -- Obsolete informational reference (is this intentional?): RFC 6021 (Obsoleted by RFC 6991) Summary: 0 errors (**), 0 flaws (~~), 4 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group L. Wang 3 Internet-Draft Huawei 4 Intended status: Standards Track H. Ananthakrishnan 5 Expires: September 10, 2015 Packet Design 6 M. Chen 7 Huawei 8 A. Dass 9 S. Kini 10 Ericsson 11 N. Bahadur 12 Bracket Computing 13 March 09, 2015 15 Data Model for RIB I2RS protocol 16 draft-wang-i2rs-rib-data-model-02 18 Abstract 20 This document defines a YANG data model for Routing Information Base 21 (RIB) that aligns with the I2RS RIB information model. 23 Requirements Language 25 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 26 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 27 document are to be interpreted as described in RFC 2119 [RFC2119]. 29 Status of This Memo 31 This Internet-Draft is submitted in full conformance with the 32 provisions of BCP 78 and BCP 79. 34 Internet-Drafts are working documents of the Internet Engineering 35 Task Force (IETF). Note that other groups may also distribute 36 working documents as Internet-Drafts. The list of current Internet- 37 Drafts is at http://datatracker.ietf.org/drafts/current/. 39 Internet-Drafts are draft documents valid for a maximum of six months 40 and may be updated, replaced, or obsoleted by other documents at any 41 time. It is inappropriate to use Internet-Drafts as reference 42 material or to cite them other than as "work in progress." 44 This Internet-Draft will expire on September 10, 2015. 46 Copyright Notice 48 Copyright (c) 2015 IETF Trust and the persons identified as the 49 document authors. All rights reserved. 51 This document is subject to BCP 78 and the IETF Trust's Legal 52 Provisions Relating to IETF Documents 53 (http://trustee.ietf.org/license-info) in effect on the date of 54 publication of this document. Please review these documents 55 carefully, as they describe your rights and restrictions with respect 56 to this document. Code Components extracted from this document must 57 include Simplified BSD License text as described in Section 4.e of 58 the Trust Legal Provisions and are provided without warranty as 59 described in the Simplified BSD License. 61 Table of Contents 63 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 64 1.1. Definitions and Acronyms . . . . . . . . . . . . . . . . 3 65 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 66 2. Model Structure . . . . . . . . . . . . . . . . . . . . . . . 3 67 2.1. RIB Capability . . . . . . . . . . . . . . . . . . . . . 5 68 2.2. Routing Instance and Rib . . . . . . . . . . . . . . . . 6 69 2.3. Route . . . . . . . . . . . . . . . . . . . . . . . . . . 7 70 2.4. Nexthop . . . . . . . . . . . . . . . . . . . . . . . . . 8 71 2.5. Notifications . . . . . . . . . . . . . . . . . . . . . . 12 72 3. YANG Modules . . . . . . . . . . . . . . . . . . . . . . . . 14 73 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 37 74 5. Security Considerations . . . . . . . . . . . . . . . . . . . 37 75 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 37 76 6.1. Normative References . . . . . . . . . . . . . . . . . . 37 77 6.2. Informative References . . . . . . . . . . . . . . . . . 37 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38 80 1. Introduction 82 The Interface to the Routing System (I2RS) 83 [I-D.ietf-i2rs-architecture] provides read and write access to the 84 information and state within the routing process that exists inside 85 the routing elements, this is achieved via the protocol message 86 exchange between I2RS clients and I2RS agents associated with the 87 routing system. One of the functions of I2RS is to read and write 88 data of Routing Information Base (RIB). 89 [I-D.ietf-i2rs-usecase-reqs-summary] introduces a set of RIB use 90 cases and the RIB information model is defined in 91 [I-D.ietf-i2rs-rib-info-model]. 93 This document defines a YANG [RFC6020][RFC6021] data model for the 94 RIB that satisfies the RIB use cases and aligns with the RIB 95 information model. 97 1.1. Definitions and Acronyms 99 RIB: Routing Information Base 101 Information Model (IM): An abstract model of a conceptual domain, 102 independent of a specific implementation or data representation. 104 1.2. Tree Diagrams 106 A simplified graphical representation of the data model is used in 107 this document. The meaning of the symbols in these diagrams is as 108 follows: 110 o Brackets "[" and "]" enclose list keys. 112 o Abbreviations before data node names: "rw" means configuration 113 (read-write) and "ro" state data (read-only). 115 o Symbols after data node names: "?" means an optional node and "*" 116 denotes a "list" and "leaf-list". 118 o Parentheses enclose choice and case nodes, and case nodes are also 119 marked with a colon (":"). 121 o Ellipsis ("...") stands for contents of subtrees that are not 122 shown. 124 2. Model Structure 126 The following figure shows an overview of structure tree of the i2rs- 127 rib module. To give a whole view of the structure tree, some details 128 of the tree are omitted. The detail are introduced in the following 129 sub-sections. 131 module: i2rs-rib 132 +--rw nexthop-capacity 133 | ... 134 +--rw nexthop-tunnel-encap-capacity 135 | ... 136 +--rw routing-instance 137 +--rw instance-name string 138 +--rw interface-list* [name] 139 | +--rw name if:interface-ref 140 +--rw router-id? yang:dotted-quad 141 +--rw rib-list* [rib-name] 142 +--rw rib-name string 143 +--rw rib-family rib-family-def 144 +--rw enable-ip-rpf-check? boolean 145 +--rw route-list* [route-index] 146 +--rw route-index uint64 147 +--rw route-type route-type-def 148 +--rw match 149 | +--rw (rib-route-type)? 150 | +--:(ipv4) 151 | | ... 152 | +--:(ipv6) 153 | | ... 154 | +--:(mpls-route) 155 | | ... 156 | +--:(mac-route) 157 | | ... 158 | +--:(interface-route) 159 | ... 160 +--rw nexthop 161 | +--rw nexthop-id uint32 162 | +--rw (nexthop-type)? 163 | +--:(nexthop-base) 164 | | ... 165 | +--:(nexthop-protection) 166 | | ... 167 | +--:(nexthop-load-balance) 168 | | ... 169 | +--:(nexthop-replicate) 170 | ... 171 +--rw route-statistic 172 | ... 173 +--rw route-attributes 174 | +--rw route-preference uint32 175 | +--rw local-only boolean 176 | +--rw address-family-route-attributes 177 | +--rw (route-type)? 178 | +--:(ip-route-attributes) 179 | +--:(mpls-route-attributes) 180 | +--:(eThernet-route-attributes) 181 +--rw route-vendor-attributes 182 notifications: 183 +---n nexthop-resolution-status-change 184 | +--ro nexthop 185 | | +--ro nexthop-id uint32 186 | | +--ro (nexthop-type)? 187 | | +--:(nexthop-base) 188 | | | ... 190 | | +--:(nexthop-protection) 191 | | | ... 192 | | +--:(nexthop-load-balance) 193 | | | ... 194 | | +--:(nexthop-replicate) 195 | | ... 196 | +--ro nexthop-state nexthop-state-def 197 +---n route-change 198 +--ro instance-name string 199 +--ro rib-name string 200 +--ro rib-family rib-family-def 201 +--ro route-index uint64 202 +--ro route-type route-type-def 203 +--ro match 204 | +--ro (rib-route-type)? 205 | +--:(ipv4) 206 | | ... 207 | +--:(ipv6) 208 | | ... 209 | +--:(mpls-route) 210 | | +--ro mpls-label uint32 211 | +--:(mac-route) 212 | | +--ro mac-address uint32 213 | +--:(interface-route) 214 | +--ro interface-identifier if:interface-ref 215 +--ro route-installed-state route-installed-state-def 216 +--ro route-state route-state-def 217 +--ro route-reason route-reason-def 219 Figure 1 Overview of I2RS module 221 2.1. RIB Capability 223 RIB capability negotiation is very important because not all of the 224 hardware will be able to support all kinds of nexthops and there 225 should be a limitation on how many levels of lookup can be 226 practically performed. Therefore, a RIB data model MUST specify a 227 way for an external entity to learn about the functional capabilities 228 of a network device. 230 At the same time, nexthop chains can be used to specify multiple 231 headers over a packet, before that particular packet is forwarded. 232 Not every network device will be able to support all kinds of nexthop 233 chains along with the arbitrary number of headers which are chained 234 together. The RIB data model MUST provide a way to expose the 235 nexthop chaining capability supported by a given network device. 237 The structure of the next-hop-capacity and the nexthop-tunnel-encap- 238 capacity is shown in the following figure: 240 Editor Notes: this version only includes the nexthop-hop and nexthop- 241 tunnel-encap capabilities, there may also need to define RIB 242 capabilities in future revision. 244 +--rw nexthop-capacity 245 | +--rw support-tunnel? boolean 246 | +--rw support-chains? boolean 247 | +--rw support-list-of-list? boolean 248 | +--rw support-replication? boolean 249 | +--rw support-weighted? boolean 250 | +--rw support-protection? boolean 251 | +--rw lookup-limit? uint8 252 +--rw nexthop-tunnel-encap-capacity 253 | +--rw support-ipv4? boolean 254 | +--rw support-ipv6? boolean 255 | +--rw support-mpls? boolean 256 | +--rw support-gre? boolean 257 | +--rw support-vxlan? boolean 258 | +--rw support-nvgre? boolean 260 Figure 2 RIB Capability 262 2.2. Routing Instance and Rib 264 A routing instance, in the context of the RIB information model, is a 265 collection of RIBs, interfaces, and routing protocol parameters. A 266 routing instance creates a logical slice of the router and can allow 267 multiple different logical slices; across a set of routers; to 268 communicate with each other. And the routing protocol parameters 269 control the information available in the RIBs. More detail about 270 routing instance can be found in Section 2.2 of 271 [I-D.ietf-i2rs-rib-info-model]. 273 As described in [I-D.ietf-i2rs-rib-info-model], there will be 274 multiple routing instances for a router. At the same time, for a 275 routing instance, there would be multiple RIBs as well. Therefore, 276 this model uses "list" to express the RIBs. The structure tree is 277 shown as following figure. 279 +--rw routing-instance 280 +--rw instance-name string 281 +--rw interface-list* [name] 282 | +--rw name if:interface-ref 283 +--rw router-id? yang:dotted-quad 284 +--rw rib-list* [rib-name] 285 +--rw rib-name string 286 +--rw rib-family rib-family-def 287 +--rw enable-ip-rpf-check? boolean 288 +--rw route-list* [route-index] 289 ... (refer to sec.2.3) 291 Figure 3 Routing Instance 293 2.3. Route 295 A route is essentially a match condition and an action following that 296 match. The match condition specifies the kind of route (e.g., IPv4, 297 MPLS, MAC, Interface etc.) and the set of fields to match on. 299 According to the definition in [I-D.ietf-i2rs-rib-info-model], a 300 route MUST associate with the following attributes: 302 o ROUTE_PREFERENCE: See Section 2.3 of 303 [I-D.ietf-i2rs-rib-info-model]. 305 o ACTIVE: Indicates whether a route is fully resolved and is a 306 candidate for selection. 308 o INSTALLED: Indicates whether the route got installed in the FIB. 310 In addition, a route can associate with one or more optional route 311 attributes(e.g., route-vendor-attributes). 313 For a RIB, there will have a number of routes, so the routes are 314 expressed as a list under the rib list. 316 +--rw route-list* [route-index] 317 +--rw route-index uint64 318 +--rw route-type route-type-def 319 +--rw match 320 | +--rw (rib-route-type)? 321 | +--:(ipv4) 322 | | +--rw ipv4 323 | | +--rw ipv4-route-type ip-route-type-def 324 | | +--rw (ip-route-type)? 325 | | +--:(destination-ipv4-address) 326 | | | +--rw destination-ipv4-prefix inet:ipv4-prefix 327 | | +--:(source-ipv4-address) 328 | | | +--rw source-ipv4-prefix inet:ipv4-prefix 329 | | +--:(destination-source-ipv4-address) 330 | | +--rw destination-source-ipv4-address 331 | | +--rw destination-ipv4-prefix inet:ipv4-prefix 332 | | +--rw source-ipv4-prefix inet:ipv4-prefix 333 | +--:(ipv6) 334 | | +--rw ipv6 335 | | +--rw ipv6-route-type ip-route-type-def 336 | | +--rw (ip-route-type)? 337 | | +--:(destination-ipv6-address) 338 | | | +--rw destination-ipv6-prefix inet:ipv6-prefix 339 | | +--:(source-ipv6-address) 340 | | | +--rw source-ipv6-prefix inet:ipv6-prefix 341 | | +--:(destination-source-ipv6-address) 342 | | +--rw destination-source-ipv6-address 343 | | +--rw destination-ipv6-prefix inet:ipv6-prefix 344 | | +--rw source-ipv6-prefix inet:ipv6-prefix 345 | +--:(mpls-route) 346 | | +--rw mpls-label uint32 347 | +--:(mac-route) 348 | | +--rw mac-address uint32 349 | +--:(interface-route) 350 | +--rw interface-identifier if:interface-ref 351 +--rw nexthop 352 ... (refer to sec.2.4) 354 Figure 4 Route 356 2.4. Nexthop 358 A nexthop represents an object resulting from a route lookup. As 359 illustrated in Section 2.4 of [I-D.ietf-i2rs-rib-info-model], to 360 support various of use cases (e.g., load balance, protection, 361 multicast or the combination of them), the nexthop is modelled as a 362 multi-level structure and supports recursion. The first level of the 363 nexthop includes the following four types: 365 o Base: The "base" nexthop itself is a hierarchical structure, it is 366 the base of all other nexthop types. The first level of the base 367 nexthop includes special-nexthop and nexthop-chain. The nexthop- 368 chain can have one or more nexthop chain members, each member is 369 one of the four types (as listed below) of specific nexthop. 370 Other first level nexthop (e.g., load-balance, protection and 371 replicate) will finally be iterated to a "base" nexthop. 373 * nexthop-id 375 * egress-interface 377 * logical-tunnel 379 * tunnel-encap 381 o Load-balance: Designed for load-balance case. 383 o Protection: Designed for protection scenario where it normally 384 will have primary and standby nexthop. 386 o Replicate: Designed for multiple destinations forwarding. 388 The structure tree of nexthop is shown in the following figures. 390 +--rw nexthop 391 | +--rw nexthop-id uint32 392 | +--rw (nexthop-type)? 393 | +--:(nexthop-base) 394 | | +--rw nexthop-base 395 | | +--rw nexthop-chain* [nexthop-chain-id] 396 | | +--rw nexthop-chain-id uint32 397 | | +--rw (nexthop-chain-type)? 398 | | ... (refer to Figure 6) 399 | +--:(nexthop-protection) 400 | | +--rw nexthop-protection-list* [nexthop-protection-id] 401 | | +--rw nexthop-protection-id uint32 402 | | +--rw nexthop-preference nexthop-preference-def 403 | | +--rw nexthop nexthop-ref 404 | +--:(nexthop-load-balance) 405 | | +--rw nexthop-lb 406 | | +--rw nexthop-lbs* [nexthop-lbs-id] 407 | | +--rw nexthop-lbs-id uint32 408 | | +--rw nhop-lb-weight nhop-lb-weight-def 409 | | +--rw nexthop-lb-member nexthop-ref 410 | +--:(nexthop-replicate) 411 | +--rw nexthop-replicate 412 | +--rw nexthop-replicates* [nexthop-replicates-id] 413 | +--rw nexthop-replicates-id uint32 414 | +--rw nexthop-replicate? nexthop-ref 416 Figure 5 Nexhop 418 Figure 6 (as shown blow) is a sub-tree of nexthop, it's under the 419 nexthop chain node. 421 +--rw (nexthop-chain-type)? 422 +--:(nexthop-chain-member-special) 423 | +--rw nexthop-chain-member-special 424 | +--rw nexthop-chain-member-special? special-nexthop-def 425 +--:(nexthop-chain-member-identifier) 426 | +--rw (nexthop-identifier-type)? 427 | +--:(nexthop-chain-name) 428 | | +--rw nexthop-chain-name string 429 | +--:(nexthop-chain-id) 430 | +--rw nexthop-chain-id uint32 431 +--:(egress-interface-next-hop) 432 | +--rw outgoing-interface if:interface-ref 433 +--:(ipv4-address-next-hop) 434 | +--rw next-hop-ipv4-address inet:ipv4-address 435 +--:(ipv6-address-next-hop) 436 | +--rw next-hop-ipv6-address inet:ipv6-address 437 +--:(egress-interface-ipv4-next-hop) 438 | +--rw next-hop-egress-interface-ipv4-address 439 | +--rw outgoing-interface if:interface-ref 440 | +--rw next-hop-egress-ipv4-address inet:ipv4-address 441 +--:(egress-interface-ipv6-next-hop) 442 | +--rw next-hop-egress-interface-ipv6-address 443 | +--rw outgoing-interface if:interface-ref 444 | +--rw next-hop-egress-ipv6-address inet:ipv4-address 445 +--:(egress-interface-mac-next-hop) 446 | +--rw next-hop-egress-interface-mac-address 447 | +--rw outgoing-interface if:interface-ref 448 | +--rw ieee-mac-address uint32 449 +--:(tunnel-encap-next-hop) 450 | +--rw tunnel-encap 451 | +--rw (tunnel-type)? 452 | | +--:(ipv4) 453 | | | +--rw source-ipv4-address inet:ipv4-address 454 | | | +--rw destination-ipv4-address inet:ipv4-address 455 | | | +--rw protocol uint8 456 | | | +--rw ttl? uint8 457 | | | +--rw dscp? uint8 458 | | +--:(ipv6) 459 | | | +--rw source-ipv6-address inet:ipv6-address 460 | | | +--rw destination-ipv6-address inet:ipv6-address 461 | | | +--rw next-header uint8 462 | | | +--rw traffic-class? uint8 463 | | | +--rw flow-label? uint16 464 | | | +--rw hop-limit? uint8 465 | | +--:(mpls) 466 | | | +--rw (mpls-action-type)? 467 | | | +--:(mpls-push) 468 | | | | +--rw mpls-push boolean 469 | | | | +--rw mpls-label uint32 470 | | | | +--rw s-bit? boolean 471 | | | | +--rw tos-value? uint8 472 | | | | +--rw ttl-value? uint8 473 | | | +--:(mpls-pop) 474 | | | +--rw mpls-pop boolean 475 | | | +--rw ttl-action? uint8 476 | | +--:(gre) 477 | | | +--rw gre-ip-destination inet:ipv4-address 478 | | | +--rw gre-protocol-type inet:ipv4-address 479 | | | +--rw gre-key? uint64 480 | | +--:(nvgre) 481 | | +--rw (nvgre-type)? 482 | | | +--:(ipv4) 483 | | | | +--rw source-ipv4-address inet:ipv4-address 484 | | | | +--rw destination-ipv4-address inet:ipv4-address 485 | | | | +--rw protocol uint8 486 | | | | +--rw ttl? uint8 487 | | | | +--rw dscp? uint8 488 | | | +--:(ipv6) 489 | | | +--rw source-ipv6-address inet:ipv6-address 490 | | | +--rw destination-ipv6-address inet:ipv6-address 491 | | | +--rw next-header uint8 492 | | | +--rw traffic-class? uint8 493 | | | +--rw flow-label? uint16 494 | | | +--rw hop-limit? uint8 495 | | +--rw virtual-subnet-id uint32 496 | | +--rw flow-id? uint16 497 | +--rw outgoing-interface? string 498 +--:(logical-tunnel-next-hop) 499 | +--rw logical-tunnel 500 | +--rw tunnel-type tunnel-type-def 501 | +--rw tunnel-name string 502 +--:(rib-name) 503 +--rw rib-name? string 505 Figure 6 Nexthop Chain 507 2.5. Notifications 509 Asynchronous notifications are sent by the RIB manager of a network 510 device to an external entity when some event triggers on the network 511 device. A RIB data-model MUST support sending 2 kind of asynchronous 512 notifications. 514 1. Route change notification: 516 o Installed (Indicates whether the route got installed in the FIB) ; 518 o Active (Indicates whether a route is fully resolved and is a 519 candidate for selection) ; 521 o Reason - E.g. Not authorized 523 2. Nexthop resolution status notification 525 Nexthops can be fully resolved nexthops or an unresolved nexthop. 527 A resolved nexthop has adequate level of information to send the 528 outgoing packet towards the destination by forwarding it on an 529 interface of a directly connected neighbor. 531 An unresolved nexthop is something that requires the RIB manager to 532 determine the final resolved nexthop. For example, in a case when a 533 nexthop could be an IP address. The RIB manager would resolve how to 534 reach that IP address, e.g. by checking if that particular IP is 535 address reachable by regular IP forwarding or by a MPLS tunnel or by 536 both. If the RIB manager cannot resolve the nexthop, then the 537 nexthop remains in an unresolved state and is NOT a suitable 538 candidate for installation in the FIB. 540 The structure tree of notifications is shown in the following figure. 542 notifications: 543 +---n nexthop-resolution-status-change 544 | +--ro nexthop 545 | | +--ro nexthop-id uint32 546 | | +--ro (nexthop-type)? 547 | | +--:(nexthop-base) 548 | | | +--ro nexthop-base 549 | | | +--ro nexthop-chain* [nexthop-chain-id] 550 | | | +--ro nexthop-chain-id uint32 551 | | | +--ro (nexthop-chain-type)? 552 | | | ... 553 | | +--:(nexthop-protection) 554 | | | +--ro nexthop-protection-list* [nexthop-protection-id] 555 | | | +--ro nexthop-protection-id uint32 556 | | | +--ro nexthop-preference nexthop-preference-def 557 | | | +--ro rw nexthop nexthop-ref 558 | | +--:(nexthop-load-balance) 559 | | | +--ro nexthop-lb 560 | | | +--ro nexthop-lbs* [nexthop-lbs-id] 561 | | | +--ro nexthop-lbs-id uint32 562 | | | +--ro nhop-lb-weight nhop-lb-weight-def 563 | | | +--ro nexthop-lb-member nexthop-ref 564 | | +--:(nexthop-replicate) 565 | | +--ro nexthop-replicate 566 | | +--ro nexthop-replicates* [nexthop-replicates-id] 567 | | +--ro nexthop-replicates-id uint32 568 | | +--ro nexthop-replicate? nexthop-ref 569 | +--ro nexthop-state nexthop-state-def 570 +---n route-change 571 +--ro instance-name string 572 +--ro rib-name string 573 +--ro rib-family rib-family-def 574 +--ro route-index uint64 575 +--ro route-type route-type-def 576 +--ro match 577 | +--ro (rib-route-type)? 578 | +--:(ipv4) 579 | | +--ro ipv4 580 | | ... 581 | +--:(ipv6) 582 | | +--ro ipv6 583 | | ... 584 | +--:(mpls-route) 585 | | +--ro mpls-label uint32 586 | +--:(mac-route) 587 | | +--ro mac-address uint32 588 | +--:(interface-route) 589 | +--ro interface-identifier if:interface-ref 590 +--ro route-installed-state route-installed-state-def 591 +--ro route-state route-state-def 592 +--ro route-reason route-reason-def 594 Figure 7 Notifications 596 3. YANG Modules 598 // file "i2rs rib@2015-03-09.yang" 600 module i2rs-rib { 601 namespace "urn:TBD1:params:xml:ns:yang:rt:i2rs:rib"; 602 // replace with iana namespace when assigned 603 prefix "i2rs-rib"; 605 import ietf-inet-types { 606 prefix inet; 607 //rfc6991 608 } 610 import ietf-interfaces { 611 prefix "if"; 612 } 614 import ietf-routing { 615 prefix "rt"; 616 } 618 organization 619 "TBD2"; 620 contact 621 "email: wang_little_star@sina.com 622 email: hari@packetdesign.com 623 email: mach.chen@huawei.com 624 email: amit.dass@ericsson.com 625 email: sriganesh.kini@ericsson.com 626 email: nitin_bahadur@yahoo.com"; 628 description 629 " 630 terms and acronyms 632 isis (isis):intermediate system to intermediate system 634 ip (ip): internet protocol 636 ipv4 (ipv4):internet protocol version 4 638 ipv6 (ipv6): internet protocol version 6 640 metric(metric): multi exit discriminator 642 igp (igp): interior gateway protocol 644 mtu (mtu) maximum transmission uint 645 "; 647 revision "2015-03-09" { 648 description "initial revision"; 649 reference "draft-ietf-i2rs-rib-info-model-06"; 650 } 652 container nexthop-capacity{ 653 leaf support-tunnel{ 654 type boolean; 655 } 656 leaf support-chains{ 657 type boolean; 658 } 659 leaf support-list-of-list{ 660 type boolean; 661 } 662 leaf support-replication{ 663 type boolean; 664 } 665 leaf support-weighted{ 666 type boolean; 667 } 668 leaf support-protection{ 669 type boolean; 670 } 671 leaf lookup-limit{ 672 type uint8; 673 } 674 } 675 container nexthop-tunnel-encap-capacity{ 676 leaf support-ipv4{ 677 type boolean; 678 } 679 leaf support-ipv6{ 680 type boolean; 681 } 682 leaf support-mpls{ 683 type boolean; 684 } 685 leaf support-gre{ 686 type boolean; 687 } 688 leaf support-vxlan{ 689 type boolean; 690 } 691 leaf support-nvgre{ 692 type boolean; 693 } 694 } 696 container routing-instance { 697 description 698 "Configuration of a 'i2rs' pseudo-protocol instance 699 consists of a list of routes."; 700 leaf instance-name { 701 description 702 "A routing instance is identified by its name, 703 INSTANCE_name. This MUST be unique across all routing 704 instances in a given network device."; 705 type string ; 706 mandatory true; 707 } 708 list interface-list { 709 description 710 "This represents the list of interfaces associated 711 with this routing instance. The interface list helps constrain 712 the boundaries of packet forwarding. Packets coming on these 713 interfaces are directly associated with the given routing 714 instance. The interface list contains a list of identifiers, 715 with each identifier uniquely identifying an interface."; 716 key "name"; 717 leaf name { 718 type if:interface-ref; 719 description 720 "A reference to The name of a configured network layer 721 interface."; 722 } 724 } 725 uses rt:router-id ; 726 list rib-list { 727 description 728 "This is the list of RIBs associated with this routing 729 instance. Each routing instance can have multiple RIBs to 730 represent routes of different types."; 731 key "rib-name"; 732 leaf rib-name { 733 description 734 "A reference to The name of a rib."; 735 type string; 736 mandatory true; 737 } 738 leaf rib-family { 739 type rib-family-def; 740 mandatory true; 741 } 742 leaf enable-ip-rpf-check { 743 description 744 "Each RIB can be optionally associated with a 745 ENABLE_IP_RPF_CHECK attribute that enables Reverse 746 path forwarding (RPF) checks on all IP routes in that 747 RIB. Reverse path forwarding (RPF) check is used to 748 prevent spoofing and limit malicious traffic."; 749 type boolean; 750 } 751 list route-list{ 752 key "route-index"; 753 uses route; 754 } 755 } 756 } 758 grouping route-prefix{ 759 description 760 "The common attributes used for all routes"; 761 leaf route-index { 762 type uint64 ; 763 mandatory true; 764 } 765 leaf route-type { 766 type route-type-def ; 767 mandatory true; 768 } 769 container match { 770 choice rib-route-type { 771 case ipv4 { 772 description 773 "Match on destination IP address in the IPv4 header"; 774 container ipv4{ 775 leaf ipv4-route-type { 776 type ip-route-type-def ; 777 mandatory true; 778 } 779 choice ip-route-type { 781 case destination-ipv4-address { 782 leaf destination-ipv4-prefix { 783 type inet:ipv4-prefix; 784 mandatory true; 785 } 786 } 787 case source-ipv4-address { 788 leaf source-ipv4-prefix { 789 type inet:ipv4-prefix; 790 mandatory true; 791 } 792 } 793 case destination-source-ipv4-address { 794 container destination-source-ipv4-address { 795 leaf destination-ipv4-prefix { 796 type inet:ipv4-prefix; 797 mandatory true; 798 } 799 leaf source-ipv4-prefix { 800 type inet:ipv4-prefix; 801 mandatory true; 802 } 803 } 804 } 805 } 806 } 807 } 808 case ipv6 { 809 description 810 "Match on destination IP address in the IPv6 header"; 811 container ipv6{ 812 leaf ipv6-route-type { 813 type ip-route-type-def ; 814 mandatory true; 815 } 816 choice ip-route-type { 817 case destination-ipv6-address { 818 leaf destination-ipv6-prefix { 819 type inet:ipv6-prefix; 820 mandatory true; 821 } 822 } 823 case source-ipv6-address { 824 leaf source-ipv6-prefix { 825 type inet:ipv6-prefix; 826 mandatory true; 827 } 828 } 829 case destination-source-ipv6-address { 830 container destination-source-ipv6-address { 831 leaf destination-ipv6-prefix { 832 type inet:ipv6-prefix; 833 mandatory true; 834 } 835 leaf source-ipv6-prefix { 836 type inet:ipv6-prefix; 837 mandatory true; 838 } 839 } 840 } 841 } 842 } 843 } 844 case mpls-route { 845 description 846 "Match on a MPLS label at the top of the MPLS label stack"; 847 leaf mpls-label { 848 type uint32 ; 849 mandatory true; 850 } 851 } 853 case mac-route { 854 description 855 "Match on MAC destination addresses in the ethernet header"; 856 leaf mac-address { 857 type uint32 ; 858 mandatory true; 859 } 860 } 861 case interface-route { 862 description 863 "Match on incoming interface of the packet"; 864 leaf interface-identifier { 865 type if:interface-ref; 866 mandatory true; 867 } 869 } 870 } 871 } 872 } 874 grouping route{ 875 description 876 "The common attributes usesd for all routes"; 877 uses route-prefix; 878 container nexthop{ 879 uses nexthop; 880 } 881 container route-statistic{ 882 leaf route-state { 883 type route-state-def ; 884 config false; 885 } 886 leaf route-installed-state { 887 type route-installed-state-def ; 888 config false; 889 } 890 leaf route-reason { 891 type route-reason-def ; 892 config false; 893 } 894 } 895 container route-attributes{ 896 uses route-attributes; 897 } 898 container route-vendor-attributes{ 899 uses route-vendor-attributes; 900 } 901 } 903 typedef nexthop-ref { 904 type leafref { 905 path "/i2rs-rib:routing-instance/i2rs-rib:rib-list" + 906 "/i2rs-rib:route-list/i2rs-rib:nexthop/i2rs-rib:nexthop-id"; 908 } 909 } 911 grouping nexthop { 912 leaf nexthop-id { 913 mandatory true; 914 type uint32; 915 } 916 choice nexthop-type { 917 case nexthop-base { 918 container nexthop-base { 919 list nexthop-chain { 920 key "nexthop-chain-id"; 921 uses nexthop-chain-member; 922 } 923 } 924 } 926 case nexthop-protection { 927 list nexthop-protection-list { 928 key "nexthop-protection-id"; 929 leaf nexthop-protection-id { 930 mandatory true; 931 type uint32; 932 } 933 leaf nexthop-preference { 934 description 935 "Nexthop-preference is used for protection schemes. 936 It is an integer value between 1 and 99. A lower 937 value indicates higher preference. To download a 938 primary/standby/tertiary group to the FIB, the 939 nexthops that are resolved and have two highest 940 preferences are selected."; 941 mandatory true; 942 type nexthop-preference-def; 943 } 944 leaf nexthop { 945 mandatory true; 946 type nexthop-ref; 947 } 948 } 949 } 951 case nexthop-load-balance { 952 container nexthop-lb { 953 list nexthop-lbs { 954 key "nexthop-lbs-id"; 955 leaf nexthop-lbs-id { 956 mandatory true; 957 type uint32; 958 } 959 leaf nhop-lb-weight { 960 mandatory true; 961 type nhop-lb-weight-def; 962 } 963 leaf nexthop-lb-member { 964 mandatory true; 965 type nexthop-ref; 966 } 967 } 968 } 969 } 971 case nexthop-replicate { 972 container nexthop-replicate { 973 list nexthop-replicates{ 974 key "nexthop-replicates-id"; 975 leaf nexthop-replicates-id { 976 mandatory true; 977 type uint32; 978 } 979 leaf nexthop-replicate { 980 type nexthop-ref; 981 } 982 } 983 } 984 } 985 } 986 } 988 grouping nexthop-chain-member { 989 description 990 "One Nexthop content for routes."; 991 leaf nexthop-chain-id{ 992 type uint32; 993 mandatory true; 994 } 995 choice nexthop-chain-type { 996 case nexthop-chain-member-special { 997 container nexthop-chain-member-special { 998 leaf nexthop-chain-member-special{ 999 type special-nexthop-def; 1000 } 1001 } 1002 } 1004 case nexthop-chain-member-identifier{ 1005 uses nexthop-chain-member-identifier; 1006 } 1008 case egress-interface-next-hop { 1009 description 1010 "Simple next-hop is specified as an outgoing interface, 1011 next-hop address or both."; 1012 leaf outgoing-interface { 1013 type if:interface-ref; 1014 mandatory true; 1015 description 1016 "Name of The outgoing interface."; 1017 } 1018 } 1020 case ipv4-address-next-hop { 1021 leaf next-hop-ipv4-address { 1022 type inet:ipv4-address; 1023 mandatory true; 1024 description 1025 "Ipv4 address of The next-hop."; 1026 } 1027 } 1029 case ipv6-address-next-hop { 1030 leaf next-hop-ipv6-address { 1031 type inet:ipv6-address; 1032 mandatory true; 1033 description 1034 "Ipv6 address of The next-hop."; 1035 } 1036 } 1038 case egress-interface-ipv4-next-hop { 1039 container next-hop-egress-interface-ipv4-address{ 1040 leaf outgoing-interface { 1041 type if:interface-ref; 1042 mandatory true; 1043 description 1044 "Name of The outgoing interface."; 1045 } 1046 leaf next-hop-egress-ipv4-address { 1047 type inet:ipv4-address; 1048 mandatory true; 1049 description 1050 "Ipv4 address of The next-hop."; 1051 } 1052 description 1053 "Egress-interface and ip address: This can be usesd 1054 in cases e.g.where The ip address is a link-local 1055 address."; 1056 } 1057 } 1059 case egress-interface-ipv6-next-hop { 1060 container next-hop-egress-interface-ipv6-address{ 1061 leaf outgoing-interface { 1062 type if:interface-ref; 1063 mandatory true; 1064 description 1065 "Name of The outgoing interface."; 1066 } 1067 leaf next-hop-egress-ipv6-address { 1068 type inet:ipv4-address; 1069 mandatory true; 1070 description 1071 "Ipv4 address of The next-hop."; 1072 } 1073 description 1074 "Egress-interface and ip address: This can be usesd 1075 in cases e.g.where The ip address is a link-local 1076 address."; 1077 } 1078 } 1080 case egress-interface-mac-next-hop { 1081 container next-hop-egress-interface-mac-address{ 1082 leaf outgoing-interface { 1083 type if:interface-ref; 1084 mandatory true; 1085 description 1086 "Name of The outgoing interface."; 1087 } 1088 leaf ieee-mac-address { 1089 type uint32; 1090 mandatory true; 1091 description 1092 "Name of The mac-address."; 1093 } 1094 description 1095 "Egress-interface and ip address: This can be usesd 1096 in cases e.g.where The ip address is a link-local 1097 address."; 1098 } 1099 } 1101 case tunnel-encap-next-hop { 1102 container tunnel-encap { 1103 uses tunnel-encap; 1104 leaf outgoing-interface { 1105 type string; 1106 } 1107 description 1108 "This can be an encap representing an ip tunnel or 1109 mpls tunnel or others as defined in this document. 1110 An optional egress interface can be specified to 1111 indicate which interface to send The packet out on. 1112 The egress interface is usesful when the network 1113 device contains eThernet interfaces and one needs 1114 to perform address resolution for The ip packet."; 1115 } 1116 } 1118 case logical-tunnel-next-hop { 1119 container logical-tunnel { 1120 uses logical-tunnel; 1121 description 1122 "This can be a mpls lsp or a gre tunnel (or others 1123 as defined in This document), that is represented 1124 by a unique identifier (e.g. name)."; 1125 } 1126 } 1128 case rib-name { 1129 leaf rib-name { 1130 type string; 1131 description 1132 "A nexthop pointing to a rib indicates that the 1133 route lookup needs to continue in The specified 1134 rib. This is a way to perform chained lookups."; 1135 } 1136 } 1137 } 1138 } 1140 grouping nexthop-chain-member-identifier{ 1141 choice nexthop-identifier-type{ 1142 case nexthop-chain-name { 1143 leaf nexthop-chain-name { 1144 type string; 1145 mandatory true; 1146 } 1147 } 1148 case nexthop-chain-id { 1149 leaf nexthop-chain-id { 1150 type uint32; 1151 mandatory true; 1152 } 1153 } 1154 } 1155 } 1156 grouping route-vendor-attributes{ 1157 } 1159 grouping logical-tunnel{ 1160 leaf tunnel-type { 1161 type tunnel-type-def ; 1162 mandatory true; 1163 } 1164 leaf tunnel-name { 1165 type string ; 1166 mandatory true; 1167 } 1168 } 1170 grouping ipv4-header{ 1171 leaf source-ipv4-address { 1172 type inet:ipv4-address; 1173 mandatory true; 1174 } 1175 leaf destination-ipv4-address { 1176 type inet:ipv4-address; 1177 mandatory true; 1178 } 1179 leaf protocol { 1180 type uint8; 1181 mandatory true; 1182 } 1183 leaf ttl { 1184 type uint8; 1185 } 1186 leaf dscp { 1187 type uint8; 1188 } 1189 } 1191 grouping ipv6-header{ 1192 leaf source-ipv6-address { 1193 type inet:ipv6-address; 1194 mandatory true; 1195 } 1196 leaf destination-ipv6-address { 1197 type inet:ipv6-address; 1198 mandatory true; 1199 } 1200 leaf next-header { 1201 type uint8; 1202 mandatory true; 1203 } 1204 leaf traffic-class { 1205 type uint8; 1206 } 1207 leaf flow-label { 1208 type uint16; 1209 } 1210 leaf hop-limit { 1211 type uint8; 1212 } 1213 } 1215 grouping nvgre-header{ 1216 choice nvgre-type { 1217 description 1218 "nvgre-header."; 1219 case ipv4 { 1220 uses ipv4-header; 1221 } 1222 case ipv6 { 1223 uses ipv6-header; 1224 } 1225 } 1226 leaf virtual-subnet-id { 1227 type uint32; 1228 mandatory true; 1229 } 1230 leaf flow-id { 1231 type uint16; 1232 } 1233 } 1235 grouping vxlan-header{ 1236 choice vxlan-type { 1237 description 1238 "vxlan-header."; 1239 case ipv4 { 1240 uses ipv4-header; 1241 } 1242 case ipv6 { 1243 uses ipv6-header; 1244 } 1245 } 1246 leaf vxlan-identifier { 1247 type uint32; 1248 } 1249 } 1251 grouping gre-header{ 1252 leaf gre-ip-destination { 1253 type inet:ipv4-address; 1254 mandatory true; 1255 } 1256 leaf gre-protocol-type { 1257 type inet:ipv4-address; 1258 mandatory true; 1259 } 1260 leaf gre-key { 1261 type uint64; 1262 } 1263 } 1265 grouping mpls-header{ 1266 choice mpls-action-type { 1267 description 1268 "mpls-header."; 1269 case mpls-push { 1270 leaf mpls-push { 1271 type boolean; 1272 mandatory true; 1273 } 1274 leaf mpls-label { 1275 type uint32; 1276 mandatory true; 1277 } 1278 leaf s-bit { 1279 type boolean; 1280 } 1281 leaf tos-value { 1282 type uint8; 1283 } 1284 leaf ttl-value { 1285 type uint8; 1286 } 1287 } 1288 case mpls-pop { 1289 leaf mpls-pop { 1290 type boolean; 1291 mandatory true; 1292 } 1293 leaf ttl-action { 1294 type uint8; 1295 } 1296 } 1297 } 1298 } 1299 grouping tunnel-encap{ 1300 choice tunnel-type { 1301 description 1302 "options for next-hops."; 1303 case ipv4 { 1304 uses ipv4-header; 1305 } 1306 case ipv6 { 1307 uses ipv6-header; 1308 } 1309 case mpls { 1310 uses mpls-header; 1311 } 1312 case gre { 1313 uses gre-header; 1314 } 1315 case nvgre { 1316 uses nvgre-header; 1317 } 1318 } 1319 } 1321 grouping route-attributes{ 1322 leaf route-preference { 1323 description 1324 "ROUTE_PREFERENCE: This is a numerical value that 1325 allows for comparing routes from different 1326 protocols. Static configuration is also 1327 considered a protocol for the purpose of this 1328 field. It iss also known as administrative-distance. 1329 The lower the value, the higher the preference."; 1330 type uint32 ; 1331 mandatory true; 1332 } 1333 leaf local-only { 1334 type boolean ; 1335 mandatory true; 1336 } 1337 container address-family-route-attributes{ 1338 choice route-type { 1339 case ip-route-attributes { 1340 } 1341 case mpls-route-attributes { 1342 } 1343 case eThernet-route-attributes { 1344 } 1345 } 1346 } 1348 } 1349 typedef nexthop-preference-def { 1350 description 1351 "Nexthop-preference is used for protection schemes. 1352 It is an integer value between 1 and 99. A lower 1353 value indicates higher preference. To download a 1354 primary/standby/tertiary group to the FIB, the 1355 nexthops that are resolved and have two highest 1356 preferences are selected."; 1357 type uint8 { 1358 range "1..99"; 1359 } 1360 } 1361 typedef nhop-lb-weight-def { 1362 description 1363 "Nhop-lb-weight is a number between 1 and 99."; 1364 type uint8 { 1365 range "1..99"; 1366 } 1367 } 1369 identity mpls-action { 1370 description 1371 "The mpls-action. "; 1372 } 1374 identity push { 1375 base "mpls-action"; 1376 } 1378 identity pop { 1379 base "mpls-action"; 1380 } 1382 identity swap { 1383 base "mpls-action"; 1384 } 1386 typedef mpls-action-def { 1387 type identityref { 1388 base "mpls-action"; 1389 } 1390 } 1392 identity special-nexthop { 1393 description 1394 "special-nexthop. "; 1395 } 1396 identity discard { 1397 base "special-nexthop"; 1398 } 1400 identity discard-with-error { 1401 base "special-nexthop"; 1402 } 1404 identity receive { 1405 base "special-nexthop"; 1406 } 1408 identity cos-value { 1409 base "special-nexthop"; 1410 } 1412 typedef special-nexthop-def { 1413 type identityref { 1414 base "special-nexthop"; 1415 } 1416 } 1418 identity ip-route-type { 1419 description 1420 "The ip route type. "; 1421 } 1423 identity src { 1424 base "ip-route-type"; 1425 } 1427 identity dest { 1428 base "ip-route-type"; 1429 } 1431 identity dest-src { 1432 base "ip-route-type"; 1433 } 1435 typedef ip-route-type-def { 1436 type identityref { 1437 base "ip-route-type"; 1438 } 1439 } 1441 identity rib-family { 1442 description 1443 "The rib-family."; 1445 } 1447 identity ipv4-rib-family { 1448 base "rib-family"; 1449 } 1451 identity ipv6-rib-family { 1452 base "rib-family"; 1453 } 1455 identity mpls-rib-family { 1456 base "rib-family"; 1457 } 1459 identity ieee-mac-rib-family { 1460 base "rib-family"; 1461 } 1463 typedef rib-family-def { 1464 type identityref { 1465 base "rib-family"; 1466 } 1467 } 1469 identity route-type { 1470 description "The route type. "; 1471 } 1473 identity ipv4-route { 1474 base "route-type"; 1475 } 1477 identity ipv6-route { 1478 base "route-type"; 1479 } 1481 identity mpls-route { 1482 base "route-type"; 1483 } 1485 identity ieee-mac { 1486 base "route-type"; 1487 } 1489 identity interface { 1490 base "route-type"; 1491 } 1492 typedef route-type-def { 1493 type identityref { 1494 base "route-type"; 1495 } 1496 } 1498 identity tunnel-type { 1499 description 1500 "The tunnel type."; 1501 } 1503 identity ipv4-tunnel { 1504 base "tunnel-type"; 1505 description 1506 "IPv4 tunnel type"; 1507 } 1509 identity ipv6-tunnel { 1510 base "tunnel-type"; 1511 description 1512 "IPv6 Tunnel type"; 1513 } 1515 identity mpls-tunnel { 1516 base "tunnel-type"; 1517 description 1518 "MPLS tunnel type"; 1519 } 1521 identity gre-tunnel { 1522 base "tunnel-type"; 1523 description 1524 "GRE tunnel type"; 1525 } 1527 identity vxlan-tunnel { 1528 base "tunnel-type"; 1529 description 1530 "VxLAN tunnel type"; 1531 } 1533 identity nvgre-tunnel { 1534 base "tunnel-type"; 1535 description 1536 "NVGRE tunnel type"; 1537 } 1539 typedef tunnel-type-def { 1540 type identityref { 1541 base "tunnel-type"; 1542 } 1543 } 1545 identity route-state { 1546 description 1547 "The route state."; 1548 } 1550 identity active { 1551 base "route-state"; 1552 } 1554 identity inactive { 1555 base "route-state"; 1556 } 1558 typedef route-state-def { 1559 type identityref { 1560 base "route-state"; 1561 } 1562 } 1564 identity nexthop-state { 1565 description 1566 "The nexthop state."; 1567 } 1569 identity resolved { 1570 base "nexthop-state"; 1571 } 1573 identity unresolved { 1574 base "nexthop-state"; 1575 } 1577 typedef nexthop-state-def { 1578 type identityref { 1579 base "nexthop-state"; 1580 } 1581 } 1583 identity route-installed-state { 1584 description 1585 "The route installed state. "; 1586 } 1587 identity uninstalled { 1588 base "route-installed-state"; 1589 } 1591 identity Installed { 1592 base "route-installed-state"; 1593 } 1595 typedef route-installed-state-def { 1596 type identityref { 1597 base "route-installed-state"; 1598 } 1599 } 1601 identity route-reason { 1602 description 1603 "The reason of invalid route. "; 1604 } 1606 identity low-preference { 1607 base "route-reason"; 1608 description 1609 "Low preference"; 1610 } 1612 identity unresolved-nexthop { 1613 base "route-reason"; 1614 description 1615 "Unresolved nexthop"; 1616 } 1618 identity higher-metric { 1619 base "route-reason"; 1620 description 1621 "Higher metric"; 1622 } 1624 typedef route-reason-def { 1625 type identityref { 1626 base "route-reason"; 1627 } 1628 } 1630 notification nexthop-resolution-status-change { 1631 description 1632 "Nexthop resolution status (resolved/unresolved) 1633 notification."; 1635 container nexthop{ 1636 uses nexthop; 1637 } 1638 leaf nexthop-state { 1639 description 1640 "Nexthop resolution status (resolved/unresolved) 1641 notification."; 1642 type nexthop-state-def; 1643 mandatory true; 1644 } 1645 } 1647 notification route-change { 1648 description 1649 "Route change notification."; 1650 leaf instance-name { 1651 description 1652 "A routing instance is identified by its name, 1653 INSTANCE_name. This MUST be unique across all 1654 routing instances in a given network device."; 1655 type string ; 1656 mandatory true; 1657 } 1658 leaf rib-name { 1659 description 1660 "A reference to The name of a rib."; 1661 type string; 1662 mandatory true; 1663 } 1664 leaf rib-family { 1665 type rib-family-def; 1666 mandatory true; 1667 } 1668 uses route-prefix; 1669 leaf route-installed-state { 1670 description 1671 "Indicates whether the route got installed in the FIB."; 1672 type route-installed-state-def; 1673 mandatory true; 1674 } 1675 leaf route-state { 1676 description 1677 "Indicates whether a route is fully resolved and 1678 is a candidate for selection."; 1679 type route-state-def; 1680 mandatory true; 1681 } 1682 leaf route-reason { 1683 description 1684 "Need to be added."; 1685 type route-reason-def; 1686 mandatory true; 1687 } 1688 } 1689 } 1690 // 1692 4. IANA Considerations 1694 This draft includes no request to IANA. 1696 5. Security Considerations 1698 This document introduces no new security threat and SHOULD follow the 1699 security requirements as stated in [I-D.ietf-i2rs-architecture]. 1701 6. References 1703 6.1. Normative References 1705 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1706 Requirement Levels", BCP 14, RFC 2119, March 1997. 1708 6.2. Informative References 1710 [I-D.ietf-i2rs-architecture] 1711 Atlas, A., Halpern, J., Hares, S., Ward, D., and T. 1712 Nadeau, "An Architecture for the Interface to the Routing 1713 System", draft-ietf-i2rs-architecture-09 (work in 1714 progress), March 2015. 1716 [I-D.ietf-i2rs-rib-info-model] 1717 Bahadur, N., Folkes, R., Kini, S., and J. Medved, "Routing 1718 Information Base Info Model", draft-ietf-i2rs-rib-info- 1719 model-06 (work in progress), March 2015. 1721 [I-D.ietf-i2rs-usecase-reqs-summary] 1722 Hares, S. and M. Chen, "Summary of I2RS Use Case 1723 Requirements", draft-ietf-i2rs-usecase-reqs-summary-00 1724 (work in progress), November 2014. 1726 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1727 Network Configuration Protocol (NETCONF)", RFC 6020, 1728 October 2010. 1730 [RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021, 1731 October 2010. 1733 Authors' Addresses 1735 Lixing Wang 1736 Huawei 1738 Email: wang_little_star@sina.com 1740 Hariharan Ananthakrishnan 1741 Packet Design 1743 Email: hari@packetdesign.com 1745 Mach(Guoyi) Chen 1746 Huawei 1748 Email: mach.chen@huawei.com 1750 Amit Dass 1751 Ericsson 1752 Torshamnsgatan 48. 1753 Stockholm 16480 1754 Sweden 1756 Email: amit.dass@ericsson.com 1758 Sriganesh Kini 1759 Ericsson 1761 Email: sriganesh.kini@ericsson.com 1763 Nitin Bahadur 1764 Bracket Computing 1766 Email: nitin_bahadur@yahoo.com