idnits 2.17.1 draft-wang-i2rs-rib-data-model-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 : ---------------------------------------------------------------------------- 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 3335 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-01 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 . . . . . . . . . . . . . . . . . . . . . . 11 72 3. YANG Modules . . . . . . . . . . . . . . . . . . . . . . . . 13 73 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36 74 5. Security Considerations . . . . . . . . . . . . . . . . . . . 36 75 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 36 76 6.1. Normative References . . . . . . . . . . . . . . . . . . 36 77 6.2. Informative References . . . . . . . . . . . . . . . . . 36 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 37 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. The 359 detail information of nexthop is defined in Section 2.4 of 360 [I-D.ietf-i2rs-rib-info-model]. Currently, four types of nexthop are 361 defined. 363 o base 364 o load-balance: design for load-balance case. 366 o primary-standby: designed for protection scenario where it 367 normally will have primary and standby nexthop. 369 o replicate: designed for multiple destinations forwarding. 371 To support some complex use cases (e.g., multicast with load-balance 372 and/or protection), the nexthop is defined in the way of recursion. 374 The structure tree of nexthop is shown in the following figures. 376 +--rw nexthop 377 | +--rw nexthop-id uint32 378 | +--rw (nexthop-type)? 379 | +--:(nexthop-base) 380 | | +--rw nexthop-base 381 | | +--rw nexthop-chain* [nexthop-chain-id] 382 | | +--rw nexthop-chain-id uint32 383 | | +--rw (nexthop-chain-type)? 384 | | ... (refer to Figure 6) 385 | +--:(nexthop-protection) 386 | | +--rw nexthop-protection-list* [nexthop-protection-id] 387 | | +--rw nexthop-protection-id uint32 388 | | +--rw nexthop-preference nexthop-preference-def 389 | | +--rw nexthop nexthop-ref 390 | +--:(nexthop-load-balance) 391 | | +--rw nexthop-lb 392 | | +--rw nexthop-lbs* [nexthop-lbs-id] 393 | | +--rw nexthop-lbs-id uint32 394 | | +--rw nhop-lb-weight nhop-lb-weight-def 395 | | +--rw nexthop-lb-member nexthop-ref 396 | +--:(nexthop-replicate) 397 | +--rw nexthop-replicate 398 | +--rw nexthop-replicates* [nexthop-replicates-id] 399 | +--rw nexthop-replicates-id uint32 400 | +--rw nexthop-replicate? nexthop-ref 402 Figure 5 Nexhop 404 Figure 6 (as shown blow) is a sub-tree of nexthop, it's under the 405 nexthop chain node. 407 +--rw (nexthop-chain-type)? 408 +--:(nexthop-chain-member-special) 409 | +--rw nexthop-chain-member-special 410 | +--rw nexthop-chain-member-special? special-nexthop-def 411 +--:(nexthop-chain-member-identifier) 412 | +--rw (nexthop-identifier-type)? 413 | +--:(nexthop-chain-name) 414 | | +--rw nexthop-chain-name string 415 | +--:(nexthop-chain-id) 416 | +--rw nexthop-chain-id uint32 417 +--:(egress-interface-next-hop) 418 | +--rw outgoing-interface if:interface-ref 419 +--:(ipv4-address-next-hop) 420 | +--rw next-hop-ipv4-address inet:ipv4-address 421 +--:(ipv6-address-next-hop) 422 | +--rw next-hop-ipv6-address inet:ipv6-address 423 +--:(egress-interface-ipv4-next-hop) 424 | +--rw next-hop-egress-interface-ipv4-address 425 | +--rw outgoing-interface if:interface-ref 426 | +--rw next-hop-egress-ipv4-address inet:ipv4-address 427 +--:(egress-interface-ipv6-next-hop) 428 | +--rw next-hop-egress-interface-ipv6-address 429 | +--rw outgoing-interface if:interface-ref 430 | +--rw next-hop-egress-ipv6-address inet:ipv4-address 431 +--:(egress-interface-mac-next-hop) 432 | +--rw next-hop-egress-interface-mac-address 433 | +--rw outgoing-interface if:interface-ref 434 | +--rw ieee-mac-address uint32 435 +--:(tunnel-encap-next-hop) 436 | +--rw tunnel-encap 437 | +--rw (tunnel-type)? 438 | | +--:(ipv4) 439 | | | +--rw source-ipv4-address inet:ipv4-address 440 | | | +--rw destination-ipv4-address inet:ipv4-address 441 | | | +--rw protocol uint8 442 | | | +--rw ttl? uint8 443 | | | +--rw dscp? uint8 444 | | +--:(ipv6) 445 | | | +--rw source-ipv6-address inet:ipv6-address 446 | | | +--rw destination-ipv6-address inet:ipv6-address 447 | | | +--rw next-header uint8 448 | | | +--rw traffic-class? uint8 449 | | | +--rw flow-label? uint16 450 | | | +--rw hop-limit? uint8 451 | | +--:(mpls) 452 | | | +--rw (mpls-action-type)? 453 | | | +--:(mpls-push) 454 | | | | +--rw mpls-push boolean 455 | | | | +--rw mpls-label uint32 456 | | | | +--rw s-bit? boolean 457 | | | | +--rw tos-value? uint8 458 | | | | +--rw ttl-value? uint8 459 | | | +--:(mpls-pop) 460 | | | +--rw mpls-pop boolean 461 | | | +--rw ttl-action? uint8 462 | | +--:(gre) 463 | | | +--rw gre-ip-destination inet:ipv4-address 464 | | | +--rw gre-protocol-type inet:ipv4-address 465 | | | +--rw gre-key? uint64 466 | | +--:(nvgre) 467 | | +--rw (nvgre-type)? 468 | | | +--:(ipv4) 469 | | | | +--rw source-ipv4-address inet:ipv4-address 470 | | | | +--rw destination-ipv4-address inet:ipv4-address 471 | | | | +--rw protocol uint8 472 | | | | +--rw ttl? uint8 473 | | | | +--rw dscp? uint8 474 | | | +--:(ipv6) 475 | | | +--rw source-ipv6-address inet:ipv6-address 476 | | | +--rw destination-ipv6-address inet:ipv6-address 477 | | | +--rw next-header uint8 478 | | | +--rw traffic-class? uint8 479 | | | +--rw flow-label? uint16 480 | | | +--rw hop-limit? uint8 481 | | +--rw virtual-subnet-id uint32 482 | | +--rw flow-id? uint16 483 | +--rw outgoing-interface? string 484 +--:(logical-tunnel-next-hop) 485 | +--rw logical-tunnel 486 | +--rw tunnel-type tunnel-type-def 487 | +--rw tunnel-name string 488 +--:(rib-name) 489 +--rw rib-name? string 491 Figure 6 Nexthop Chain 493 2.5. Notifications 495 Asynchronous notifications are sent by the RIB manager of a network 496 device to an external entity when some event triggers on the network 497 device. A RIB data-model MUST support sending 2 kind of asynchronous 498 notifications. 500 1. Route change notification: 502 o Installed (Indicates whether the route got installed in the FIB) ; 504 o Active (Indicates whether a route is fully resolved and is a 505 candidate for selection) ; 507 o Reason - E.g. Not authorized 508 2. Nexthop resolution status notification 510 Nexthops can be fully resolved nexthops or an unresolved nexthop. 512 A resolved nexthop has adequate level of information to send the 513 outgoing packet towards the destination by forwarding it on an 514 interface of a directly connected neighbor. 516 An unresolved nexthop is something that requires the RIB manager to 517 determine the final resolved nexthop. For example, in a case when a 518 nexthop could be an IP address. The RIB manager would resolve how to 519 reach that IP address, e.g. by checking if that particular IP is 520 address reachable by regular IP forwarding or by a MPLS tunnel or by 521 both. If the RIB manager cannot resolve the nexthop, then the 522 nexthop remains in an unresolved state and is NOT a suitable 523 candidate for installation in the FIB. 525 The structure tree of notifications is shown in the following figure. 527 notifications: 528 +---n nexthop-resolution-status-change 529 | +--ro nexthop 530 | | +--ro nexthop-id uint32 531 | | +--ro (nexthop-type)? 532 | | +--:(nexthop-base) 533 | | | +--ro nexthop-base 534 | | | +--ro nexthop-chain* [nexthop-chain-id] 535 | | | +--ro nexthop-chain-id uint32 536 | | | +--ro (nexthop-chain-type)? 537 | | | ... 538 | | +--:(nexthop-protection) 539 | | | +--ro nexthop-protection-list* [nexthop-protection-id] 540 | | | +--ro nexthop-protection-id uint32 541 | | | +--ro nexthop-preference nexthop-preference-def 542 | | | +--ro rw nexthop nexthop-ref 543 | | +--:(nexthop-load-balance) 544 | | | +--ro nexthop-lb 545 | | | +--ro nexthop-lbs* [nexthop-lbs-id] 546 | | | +--ro nexthop-lbs-id uint32 547 | | | +--ro nhop-lb-weight nhop-lb-weight-def 548 | | | +--ro nexthop-lb-member nexthop-ref 549 | | +--:(nexthop-replicate) 550 | | +--ro nexthop-replicate 551 | | +--ro nexthop-replicates* [nexthop-replicates-id] 552 | | +--ro nexthop-replicates-id uint32 553 | | +--ro nexthop-replicate? nexthop-ref 554 | +--ro nexthop-state nexthop-state-def 555 +---n route-change 556 +--ro instance-name string 557 +--ro rib-name string 558 +--ro rib-family rib-family-def 559 +--ro route-index uint64 560 +--ro route-type route-type-def 561 +--ro match 562 | +--ro (rib-route-type)? 563 | +--:(ipv4) 564 | | +--ro ipv4 565 | | ... 566 | +--:(ipv6) 567 | | +--ro ipv6 568 | | ... 569 | +--:(mpls-route) 570 | | +--ro mpls-label uint32 571 | +--:(mac-route) 572 | | +--ro mac-address uint32 573 | +--:(interface-route) 574 | +--ro interface-identifier if:interface-ref 575 +--ro route-installed-state route-installed-state-def 576 +--ro route-state route-state-def 577 +--ro route-reason route-reason-def 579 Figure 7 Notifications 581 3. YANG Modules 583 // file "i2rs rib@2015-03-09.yang" 585 module i2rs-rib { 586 namespace "urn:TBD1:params:xml:ns:yang:rt:i2rs:rib"; 587 // replace with iana namespace when assigned 588 prefix "i2rs-rib"; 590 import ietf-inet-types { 591 prefix inet; 592 //rfc6991 593 } 595 import ietf-interfaces { 596 prefix "if"; 597 } 599 import ietf-routing { 600 prefix "rt"; 601 } 603 organization 604 "TBD2"; 605 contact 606 "email: wang_little_star@sina.com 607 email: hari@packetdesign.com 608 email: mach.chen@huawei.com 609 email: amit.dass@ericsson.com 610 email: sriganesh.kini@ericsson.com 611 email: nitin_bahadur@yahoo.com"; 613 description 614 " 615 terms and acronyms 617 isis (isis):intermediate system to intermediate system 619 ip (ip): internet protocol 621 ipv4 (ipv4):internet protocol version 4 623 ipv6 (ipv6): internet protocol version 6 625 metric(metric): multi exit discriminator 627 igp (igp): interior gateway protocol 629 mtu (mtu) maximum transmission uint 630 "; 632 revision "2015-03-09" { 633 description "initial revision"; 634 reference "draft-ietf-i2rs-rib-info-model-06"; 635 } 637 container nexthop-capacity{ 638 leaf support-tunnel{ 639 type boolean; 640 } 641 leaf support-chains{ 642 type boolean; 643 } 644 leaf support-list-of-list{ 645 type boolean; 646 } 647 leaf support-replication{ 648 type boolean; 649 } 650 leaf support-weighted{ 651 type boolean; 652 } 653 leaf support-protection{ 654 type boolean; 655 } 656 leaf lookup-limit{ 657 type uint8; 658 } 659 } 661 container nexthop-tunnel-encap-capacity{ 662 leaf support-ipv4{ 663 type boolean; 664 } 665 leaf support-ipv6{ 666 type boolean; 667 } 668 leaf support-mpls{ 669 type boolean; 670 } 671 leaf support-gre{ 672 type boolean; 673 } 674 leaf support-vxlan{ 675 type boolean; 676 } 677 leaf support-nvgre{ 678 type boolean; 679 } 680 } 682 container routing-instance { 683 description 684 "Configuration of a 'i2rs' pseudo-protocol instance 685 consists of a list of routes."; 686 leaf instance-name { 687 description 688 "A routing instance is identified by its name, 689 INSTANCE_name. This MUST be unique across all routing 690 instances in a given network device."; 691 type string ; 692 mandatory true; 693 } 694 list interface-list { 695 description 696 "This represents the list of interfaces associated 697 with this routing instance. The interface list helps constrain 698 the boundaries of packet forwarding. Packets coming on these 699 interfaces are directly associated with the given routing 700 instance. The interface list contains a list of identifiers, 701 with each identifier uniquely identifying an interface."; 702 key "name"; 703 leaf name { 704 type if:interface-ref; 705 description 706 "A reference to The name of a configured network layer 707 interface."; 708 } 709 } 710 uses rt:router-id ; 711 list rib-list { 712 description 713 "This is the list of RIBs associated with this routing 714 instance. Each routing instance can have multiple RIBs to 715 represent routes of different types."; 716 key "rib-name"; 717 leaf rib-name { 718 description 719 "A reference to The name of a rib."; 720 type string; 721 mandatory true; 722 } 723 leaf rib-family { 724 type rib-family-def; 725 mandatory true; 726 } 727 leaf enable-ip-rpf-check { 728 description 729 "Each RIB can be optionally associated with a 730 ENABLE_IP_RPF_CHECK attribute that enables Reverse 731 path forwarding (RPF) checks on all IP routes in that 732 RIB. Reverse path forwarding (RPF) check is used to 733 prevent spoofing and limit malicious traffic."; 734 type boolean; 735 } 736 list route-list{ 737 key "route-index"; 738 uses route; 739 } 740 } 741 } 743 grouping route-prefix{ 744 description 745 "The common attributes used for all routes"; 747 leaf route-index { 748 type uint64 ; 749 mandatory true; 750 } 751 leaf route-type { 752 type route-type-def ; 753 mandatory true; 754 } 755 container match { 756 choice rib-route-type { 757 case ipv4 { 758 description 759 "Match on destination IP address in the IPv4 header"; 760 container ipv4{ 761 leaf ipv4-route-type { 762 type ip-route-type-def ; 763 mandatory true; 764 } 765 choice ip-route-type { 767 case destination-ipv4-address { 768 leaf destination-ipv4-prefix { 769 type inet:ipv4-prefix; 770 mandatory true; 771 } 772 } 773 case source-ipv4-address { 774 leaf source-ipv4-prefix { 775 type inet:ipv4-prefix; 776 mandatory true; 777 } 778 } 779 case destination-source-ipv4-address { 780 container destination-source-ipv4-address { 781 leaf destination-ipv4-prefix { 782 type inet:ipv4-prefix; 783 mandatory true; 784 } 785 leaf source-ipv4-prefix { 786 type inet:ipv4-prefix; 787 mandatory true; 788 } 789 } 790 } 791 } 792 } 793 } 794 case ipv6 { 795 description 796 "Match on destination IP address in the IPv6 header"; 797 container ipv6{ 798 leaf ipv6-route-type { 799 type ip-route-type-def ; 800 mandatory true; 801 } 802 choice ip-route-type { 803 case destination-ipv6-address { 804 leaf destination-ipv6-prefix { 805 type inet:ipv6-prefix; 806 mandatory true; 807 } 808 } 809 case source-ipv6-address { 810 leaf source-ipv6-prefix { 811 type inet:ipv6-prefix; 812 mandatory true; 813 } 814 } 815 case destination-source-ipv6-address { 816 container destination-source-ipv6-address { 817 leaf destination-ipv6-prefix { 818 type inet:ipv6-prefix; 819 mandatory true; 820 } 821 leaf source-ipv6-prefix { 822 type inet:ipv6-prefix; 823 mandatory true; 824 } 825 } 826 } 827 } 828 } 829 } 830 case mpls-route { 831 description 832 "Match on a MPLS label at the top of the MPLS label stack"; 833 leaf mpls-label { 834 type uint32 ; 835 mandatory true; 836 } 837 } 839 case mac-route { 840 description 841 "Match on MAC destination addresses in the ethernet header"; 842 leaf mac-address { 843 type uint32 ; 844 mandatory true; 845 } 846 } 847 case interface-route { 848 description 849 "Match on incoming interface of the packet"; 850 leaf interface-identifier { 851 type if:interface-ref; 852 mandatory true; 853 } 854 } 855 } 856 } 857 } 859 grouping route{ 860 description 861 "The common attributes usesd for all routes"; 862 uses route-prefix; 863 container nexthop{ 864 uses nexthop; 865 } 866 container route-statistic{ 867 leaf route-state { 868 type route-state-def ; 869 config false; 870 } 871 leaf route-installed-state { 872 type route-installed-state-def ; 873 config false; 874 } 875 leaf route-reason { 876 type route-reason-def ; 877 config false; 878 } 879 } 880 container route-attributes{ 881 uses route-attributes; 882 } 883 container route-vendor-attributes{ 884 uses route-vendor-attributes; 885 } 886 } 888 typedef nexthop-ref { 889 type leafref { 890 path "/i2rs-rib:routing-instance/i2rs-rib:rib-list" + 891 "/i2rs-rib:route-list/i2rs-rib:nexthop/i2rs-rib:nexthop-id"; 893 } 894 } 896 grouping nexthop { 897 leaf nexthop-id { 898 mandatory true; 899 type uint32; 900 } 901 choice nexthop-type { 902 case nexthop-base { 903 container nexthop-base { 904 list nexthop-chain { 905 key "nexthop-chain-id"; 906 uses nexthop-chain-member; 907 } 908 } 909 } 911 case nexthop-protection { 912 list nexthop-protection-list { 913 key "nexthop-protection-id"; 914 leaf nexthop-protection-id { 915 mandatory true; 916 type uint32; 917 } 918 leaf nexthop-preference { 919 description 920 "Nexthop-preference is used for protection schemes. 921 It is an integer value between 1 and 99. A lower 922 value indicates higher preference. To download a 923 primary/standby/tertiary group to the FIB, the 924 nexthops that are resolved and have two highest 925 preferences are selected."; 926 mandatory true; 927 type nexthop-preference-def; 928 } 929 leaf nexthop { 930 mandatory true; 931 type nexthop-ref; 932 } 933 } 934 } 936 case nexthop-load-balance { 937 container nexthop-lb { 938 list nexthop-lbs { 939 key "nexthop-lbs-id"; 940 leaf nexthop-lbs-id { 941 mandatory true; 942 type uint32; 943 } 944 leaf nhop-lb-weight { 945 mandatory true; 946 type nhop-lb-weight-def; 947 } 948 leaf nexthop-lb-member { 949 mandatory true; 950 type nexthop-ref; 951 } 952 } 953 } 954 } 956 case nexthop-replicate { 957 container nexthop-replicate { 958 list nexthop-replicates{ 959 key "nexthop-replicates-id"; 960 leaf nexthop-replicates-id { 961 mandatory true; 962 type uint32; 963 } 964 leaf nexthop-replicate { 965 type nexthop-ref; 966 } 967 } 968 } 969 } 970 } 971 } 973 grouping nexthop-chain-member { 974 description 975 "One Nexthop content for routes."; 976 leaf nexthop-chain-id{ 977 type uint32; 978 mandatory true; 979 } 980 choice nexthop-chain-type { 981 case nexthop-chain-member-special { 982 container nexthop-chain-member-special { 983 leaf nexthop-chain-member-special{ 984 type special-nexthop-def; 985 } 986 } 988 } 990 case nexthop-chain-member-identifier{ 991 uses nexthop-chain-member-identifier; 992 } 994 case egress-interface-next-hop { 995 description 996 "Simple next-hop is specified as an outgoing interface, 997 next-hop address or both."; 998 leaf outgoing-interface { 999 type if:interface-ref; 1000 mandatory true; 1001 description 1002 "Name of The outgoing interface."; 1003 } 1004 } 1006 case ipv4-address-next-hop { 1007 leaf next-hop-ipv4-address { 1008 type inet:ipv4-address; 1009 mandatory true; 1010 description 1011 "Ipv4 address of The next-hop."; 1012 } 1013 } 1015 case ipv6-address-next-hop { 1016 leaf next-hop-ipv6-address { 1017 type inet:ipv6-address; 1018 mandatory true; 1019 description 1020 "Ipv6 address of The next-hop."; 1021 } 1022 } 1024 case egress-interface-ipv4-next-hop { 1025 container next-hop-egress-interface-ipv4-address{ 1026 leaf outgoing-interface { 1027 type if:interface-ref; 1028 mandatory true; 1029 description 1030 "Name of The outgoing interface."; 1031 } 1032 leaf next-hop-egress-ipv4-address { 1033 type inet:ipv4-address; 1034 mandatory true; 1035 description 1036 "Ipv4 address of The next-hop."; 1037 } 1038 description 1039 "Egress-interface and ip address: This can be usesd 1040 in cases e.g.where The ip address is a link-local 1041 address."; 1042 } 1043 } 1045 case egress-interface-ipv6-next-hop { 1046 container next-hop-egress-interface-ipv6-address{ 1047 leaf outgoing-interface { 1048 type if:interface-ref; 1049 mandatory true; 1050 description 1051 "Name of The outgoing interface."; 1052 } 1053 leaf next-hop-egress-ipv6-address { 1054 type inet:ipv4-address; 1055 mandatory true; 1056 description 1057 "Ipv4 address of The next-hop."; 1058 } 1059 description 1060 "Egress-interface and ip address: This can be usesd 1061 in cases e.g.where The ip address is a link-local 1062 address."; 1063 } 1064 } 1066 case egress-interface-mac-next-hop { 1067 container next-hop-egress-interface-mac-address{ 1068 leaf outgoing-interface { 1069 type if:interface-ref; 1070 mandatory true; 1071 description 1072 "Name of The outgoing interface."; 1073 } 1074 leaf ieee-mac-address { 1075 type uint32; 1076 mandatory true; 1077 description 1078 "Name of The mac-address."; 1079 } 1080 description 1081 "Egress-interface and ip address: This can be usesd 1082 in cases e.g.where The ip address is a link-local 1083 address."; 1085 } 1086 } 1088 case tunnel-encap-next-hop { 1089 container tunnel-encap { 1090 uses tunnel-encap; 1091 leaf outgoing-interface { 1092 type string; 1093 } 1094 description 1095 "This can be an encap representing an ip tunnel or 1096 mpls tunnel or others as defined in this document. 1097 An optional egress interface can be specified to 1098 indicate which interface to send The packet out on. 1099 The egress interface is usesful when the network 1100 device contains eThernet interfaces and one needs 1101 to perform address resolution for The ip packet."; 1102 } 1103 } 1105 case logical-tunnel-next-hop { 1106 container logical-tunnel { 1107 uses logical-tunnel; 1108 description 1109 "This can be a mpls lsp or a gre tunnel (or others 1110 as defined in This document), that is represented 1111 by a unique identifier (e.g. name)."; 1112 } 1113 } 1115 case rib-name { 1116 leaf rib-name { 1117 type string; 1118 description 1119 "A nexthop pointing to a rib indicates that the 1120 route lookup needs to continue in The specified 1121 rib. This is a way to perform chained lookups."; 1122 } 1123 } 1124 } 1125 } 1127 grouping nexthop-chain-member-identifier{ 1128 choice nexthop-identifier-type{ 1129 case nexthop-chain-name { 1130 leaf nexthop-chain-name { 1131 type string; 1132 mandatory true; 1134 } 1135 } 1136 case nexthop-chain-id { 1137 leaf nexthop-chain-id { 1138 type uint32; 1139 mandatory true; 1140 } 1141 } 1142 } 1143 } 1145 grouping route-vendor-attributes{ 1146 } 1148 grouping logical-tunnel{ 1149 leaf tunnel-type { 1150 type tunnel-type-def ; 1151 mandatory true; 1152 } 1153 leaf tunnel-name { 1154 type string ; 1155 mandatory true; 1156 } 1157 } 1159 grouping ipv4-header{ 1160 leaf source-ipv4-address { 1161 type inet:ipv4-address; 1162 mandatory true; 1163 } 1164 leaf destination-ipv4-address { 1165 type inet:ipv4-address; 1166 mandatory true; 1167 } 1168 leaf protocol { 1169 type uint8; 1170 mandatory true; 1171 } 1172 leaf ttl { 1173 type uint8; 1174 } 1175 leaf dscp { 1176 type uint8; 1177 } 1178 } 1180 grouping ipv6-header{ 1181 leaf source-ipv6-address { 1182 type inet:ipv6-address; 1183 mandatory true; 1184 } 1185 leaf destination-ipv6-address { 1186 type inet:ipv6-address; 1187 mandatory true; 1188 } 1189 leaf next-header { 1190 type uint8; 1191 mandatory true; 1192 } 1193 leaf traffic-class { 1194 type uint8; 1195 } 1196 leaf flow-label { 1197 type uint16; 1198 } 1199 leaf hop-limit { 1200 type uint8; 1201 } 1202 } 1204 grouping nvgre-header{ 1205 choice nvgre-type { 1206 description 1207 "nvgre-header."; 1208 case ipv4 { 1209 uses ipv4-header; 1210 } 1211 case ipv6 { 1212 uses ipv6-header; 1213 } 1214 } 1215 leaf virtual-subnet-id { 1216 type uint32; 1217 mandatory true; 1218 } 1219 leaf flow-id { 1220 type uint16; 1221 } 1222 } 1224 grouping vxlan-header{ 1225 choice vxlan-type { 1226 description 1227 "vxlan-header."; 1228 case ipv4 { 1229 uses ipv4-header; 1231 } 1232 case ipv6 { 1233 uses ipv6-header; 1234 } 1235 } 1236 leaf vxlan-identifier { 1237 type uint32; 1238 } 1239 } 1241 grouping gre-header{ 1242 leaf gre-ip-destination { 1243 type inet:ipv4-address; 1244 mandatory true; 1245 } 1246 leaf gre-protocol-type { 1247 type inet:ipv4-address; 1248 mandatory true; 1249 } 1250 leaf gre-key { 1251 type uint64; 1252 } 1253 } 1255 grouping mpls-header{ 1256 choice mpls-action-type { 1257 description 1258 "mpls-header."; 1259 case mpls-push { 1260 leaf mpls-push { 1261 type boolean; 1262 mandatory true; 1263 } 1264 leaf mpls-label { 1265 type uint32; 1266 mandatory true; 1267 } 1268 leaf s-bit { 1269 type boolean; 1270 } 1271 leaf tos-value { 1272 type uint8; 1273 } 1274 leaf ttl-value { 1275 type uint8; 1276 } 1277 } 1278 case mpls-pop { 1279 leaf mpls-pop { 1280 type boolean; 1281 mandatory true; 1282 } 1283 leaf ttl-action { 1284 type uint8; 1285 } 1286 } 1287 } 1288 } 1290 grouping tunnel-encap{ 1291 choice tunnel-type { 1292 description 1293 "options for next-hops."; 1294 case ipv4 { 1295 uses ipv4-header; 1296 } 1297 case ipv6 { 1298 uses ipv6-header; 1299 } 1300 case mpls { 1301 uses mpls-header; 1302 } 1303 case gre { 1304 uses gre-header; 1305 } 1306 case nvgre { 1307 uses nvgre-header; 1308 } 1309 } 1310 } 1312 grouping route-attributes{ 1313 leaf route-preference { 1314 description 1315 "ROUTE_PREFERENCE: This is a numerical value that 1316 allows for comparing routes from different 1317 protocols. Static configuration is also 1318 considered a protocol for the purpose of this 1319 field. It iss also known as administrative-distance. 1320 The lower the value, the higher the preference."; 1321 type uint32 ; 1322 mandatory true; 1323 } 1324 leaf local-only { 1325 type boolean ; 1326 mandatory true; 1328 } 1329 container address-family-route-attributes{ 1330 choice route-type { 1331 case ip-route-attributes { 1332 } 1333 case mpls-route-attributes { 1334 } 1335 case eThernet-route-attributes { 1336 } 1337 } 1338 } 1339 } 1340 typedef nexthop-preference-def { 1341 description 1342 "Nexthop-preference is used for protection schemes. 1343 It is an integer value between 1 and 99. A lower 1344 value indicates higher preference. To download a 1345 primary/standby/tertiary group to the FIB, the 1346 nexthops that are resolved and have two highest 1347 preferences are selected."; 1348 type uint8 { 1349 range "1..99"; 1350 } 1351 } 1352 typedef nhop-lb-weight-def { 1353 description 1354 "Nhop-lb-weight is a number between 1 and 99."; 1355 type uint8 { 1356 range "1..99"; 1357 } 1358 } 1360 identity mpls-action { 1361 description 1362 "The mpls-action. "; 1363 } 1365 identity push { 1366 base "mpls-action"; 1367 } 1369 identity pop { 1370 base "mpls-action"; 1371 } 1373 identity swap { 1374 base "mpls-action"; 1375 } 1376 typedef mpls-action-def { 1377 type identityref { 1378 base "mpls-action"; 1379 } 1380 } 1382 identity special-nexthop { 1383 description 1384 "special-nexthop. "; 1385 } 1387 identity discard { 1388 base "special-nexthop"; 1389 } 1391 identity discard-with-error { 1392 base "special-nexthop"; 1393 } 1395 identity receive { 1396 base "special-nexthop"; 1397 } 1399 identity cos-value { 1400 base "special-nexthop"; 1401 } 1403 typedef special-nexthop-def { 1404 type identityref { 1405 base "special-nexthop"; 1406 } 1407 } 1409 identity ip-route-type { 1410 description 1411 "The ip route type. "; 1412 } 1414 identity src { 1415 base "ip-route-type"; 1416 } 1418 identity dest { 1419 base "ip-route-type"; 1420 } 1422 identity dest-src { 1423 base "ip-route-type"; 1425 } 1427 typedef ip-route-type-def { 1428 type identityref { 1429 base "ip-route-type"; 1430 } 1431 } 1433 identity rib-family { 1434 description 1435 "The rib-family."; 1436 } 1438 identity ipv4-rib-family { 1439 base "rib-family"; 1440 } 1442 identity ipv6-rib-family { 1443 base "rib-family"; 1444 } 1446 identity mpls-rib-family { 1447 base "rib-family"; 1448 } 1450 identity ieee-mac-rib-family { 1451 base "rib-family"; 1452 } 1454 typedef rib-family-def { 1455 type identityref { 1456 base "rib-family"; 1457 } 1458 } 1460 identity route-type { 1461 description "The route type. "; 1462 } 1464 identity ipv4-route { 1465 base "route-type"; 1466 } 1468 identity ipv6-route { 1469 base "route-type"; 1470 } 1472 identity mpls-route { 1473 base "route-type"; 1474 } 1476 identity ieee-mac { 1477 base "route-type"; 1478 } 1480 identity interface { 1481 base "route-type"; 1482 } 1484 typedef route-type-def { 1485 type identityref { 1486 base "route-type"; 1487 } 1488 } 1490 identity tunnel-type { 1491 description 1492 "The tunnel type."; 1493 } 1495 identity ipv4-tunnel { 1496 base "tunnel-type"; 1497 description 1498 "IPv4 tunnel type"; 1499 } 1501 identity ipv6-tunnel { 1502 base "tunnel-type"; 1503 description 1504 "IPv6 Tunnel type"; 1505 } 1507 identity mpls-tunnel { 1508 base "tunnel-type"; 1509 description 1510 "MPLS tunnel type"; 1511 } 1513 identity gre-tunnel { 1514 base "tunnel-type"; 1515 description 1516 "GRE tunnel type"; 1517 } 1519 identity vxlan-tunnel { 1520 base "tunnel-type"; 1521 description 1522 "VxLAN tunnel type"; 1523 } 1525 identity nvgre-tunnel { 1526 base "tunnel-type"; 1527 description 1528 "NVGRE tunnel type"; 1529 } 1531 typedef tunnel-type-def { 1532 type identityref { 1533 base "tunnel-type"; 1534 } 1535 } 1537 identity route-state { 1538 description 1539 "The route state."; 1540 } 1542 identity active { 1543 base "route-state"; 1544 } 1546 identity inactive { 1547 base "route-state"; 1548 } 1550 typedef route-state-def { 1551 type identityref { 1552 base "route-state"; 1553 } 1554 } 1556 identity nexthop-state { 1557 description 1558 "The nexthop state."; 1559 } 1561 identity resolved { 1562 base "nexthop-state"; 1563 } 1565 identity unresolved { 1566 base "nexthop-state"; 1567 } 1568 typedef nexthop-state-def { 1569 type identityref { 1570 base "nexthop-state"; 1571 } 1572 } 1574 identity route-installed-state { 1575 description 1576 "The route installed state. "; 1577 } 1579 identity uninstalled { 1580 base "route-installed-state"; 1581 } 1583 identity Installed { 1584 base "route-installed-state"; 1585 } 1587 typedef route-installed-state-def { 1588 type identityref { 1589 base "route-installed-state"; 1590 } 1591 } 1593 identity route-reason { 1594 description 1595 "The reason of invalid route. "; 1596 } 1598 identity low-preference { 1599 base "route-reason"; 1600 description 1601 "Low preference"; 1602 } 1604 identity unresolved-nexthop { 1605 base "route-reason"; 1606 description 1607 "Unresolved nexthop"; 1608 } 1610 identity higher-metric { 1611 base "route-reason"; 1612 description 1613 "Higher metric"; 1614 } 1615 typedef route-reason-def { 1616 type identityref { 1617 base "route-reason"; 1618 } 1619 } 1621 notification nexthop-resolution-status-change { 1622 description 1623 "Nexthop resolution status (resolved/unresolved) 1624 notification."; 1625 container nexthop{ 1626 uses nexthop; 1627 } 1628 leaf nexthop-state { 1629 description 1630 "Nexthop resolution status (resolved/unresolved) 1631 notification."; 1632 type nexthop-state-def; 1633 mandatory true; 1634 } 1635 } 1637 notification route-change { 1638 description 1639 "Route change notification."; 1640 leaf instance-name { 1641 description 1642 "A routing instance is identified by its name, 1643 INSTANCE_name. This MUST be unique across all 1644 routing instances in a given network device."; 1645 type string ; 1646 mandatory true; 1647 } 1648 leaf rib-name { 1649 description 1650 "A reference to The name of a rib."; 1651 type string; 1652 mandatory true; 1653 } 1654 leaf rib-family { 1655 type rib-family-def; 1656 mandatory true; 1657 } 1658 uses route-prefix; 1659 leaf route-installed-state { 1660 description 1661 "Indicates whether the route got installed in the FIB."; 1663 type route-installed-state-def; 1664 mandatory true; 1665 } 1666 leaf route-state { 1667 description 1668 "Indicates whether a route is fully resolved and 1669 is a candidate for selection."; 1670 type route-state-def; 1671 mandatory true; 1672 } 1673 leaf route-reason { 1674 description 1675 "Need to be added."; 1676 type route-reason-def; 1677 mandatory true; 1678 } 1679 } 1680 } 1681 // 1683 4. IANA Considerations 1685 This draft includes no request to IANA. 1687 5. Security Considerations 1689 This document introduces no new security threat and SHOULD follow the 1690 security requirements as stated in [I-D.ietf-i2rs-architecture]. 1692 6. References 1694 6.1. Normative References 1696 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1697 Requirement Levels", BCP 14, RFC 2119, March 1997. 1699 6.2. Informative References 1701 [I-D.ietf-i2rs-architecture] 1702 Atlas, A., Halpern, J., Hares, S., Ward, D., and T. 1703 Nadeau, "An Architecture for the Interface to the Routing 1704 System", draft-ietf-i2rs-architecture-09 (work in 1705 progress), March 2015. 1707 [I-D.ietf-i2rs-rib-info-model] 1708 Bahadur, N., Folkes, R., Kini, S., and J. Medved, "Routing 1709 Information Base Info Model", draft-ietf-i2rs-rib-info- 1710 model-06 (work in progress), March 2015. 1712 [I-D.ietf-i2rs-usecase-reqs-summary] 1713 Hares, S. and M. Chen, "Summary of I2RS Use Case 1714 Requirements", draft-ietf-i2rs-usecase-reqs-summary-00 1715 (work in progress), November 2014. 1717 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1718 Network Configuration Protocol (NETCONF)", RFC 6020, 1719 October 2010. 1721 [RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021, 1722 October 2010. 1724 Authors' Addresses 1726 Lixing Wang 1727 Huawei 1729 Email: wang_little_star@sina.com 1731 Hariharan Ananthakrishnan 1732 Packet Design 1734 Email: hari@packetdesign.com 1736 Mach(Guoyi) Chen 1737 Huawei 1739 Email: mach.chen@huawei.com 1741 Amit Dass 1742 Ericsson 1743 Torshamnsgatan 48. 1744 Stockholm 16480 1745 Sweden 1747 Email: amit.dass@ericsson.com 1749 Sriganesh Kini 1750 Ericsson 1752 Email: sriganesh.kini@ericsson.com 1753 Nitin Bahadur 1754 Bracket Computing 1756 Email: nitin_bahadur@yahoo.com