| < draft-ietf-rtgwg-policy-model-13.txt | draft-ietf-rtgwg-policy-model-14.txt > | |||
|---|---|---|---|---|
| RTGWG Y. Qu | RTGWG Y. Qu | |||
| Internet-Draft Futurewei | Internet-Draft Futurewei | |||
| Intended status: Standards Track J. Tantsura | Intended status: Standards Track J. Tantsura | |||
| Expires: December 1, 2020 Apstra | Expires: December 3, 2020 Apstra | |||
| A. Lindem | A. Lindem | |||
| Cisco | Cisco | |||
| X. Liu | X. Liu | |||
| Volta Networks | Volta Networks | |||
| May 30, 2020 | June 1, 2020 | |||
| A YANG Data Model for Routing Policy Management | A YANG Data Model for Routing Policy Management | |||
| draft-ietf-rtgwg-policy-model-13 | draft-ietf-rtgwg-policy-model-14 | |||
| Abstract | Abstract | |||
| This document defines a YANG data model for configuring and managing | This document defines a YANG data model for configuring and managing | |||
| routing policies in a vendor-neutral way and based on actual | routing policies in a vendor-neutral way and based on actual | |||
| operational practice. The model provides a generic policy framework | operational practice. The model provides a generic policy framework | |||
| which can be augmented with protocol-specific policy configuration. | which can be augmented with protocol-specific policy configuration. | |||
| Status of This Memo | Status of This Memo | |||
| skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on December 1, 2020. | This Internet-Draft will expire on December 3, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 27 ¶ | skipping to change at page 2, line 27 ¶ | |||
| 4. Route policy expression . . . . . . . . . . . . . . . . . . . 5 | 4. Route policy expression . . . . . . . . . . . . . . . . . . . 5 | |||
| 4.1. Defined sets for policy matching . . . . . . . . . . . . 6 | 4.1. Defined sets for policy matching . . . . . . . . . . . . 6 | |||
| 4.2. Policy conditions . . . . . . . . . . . . . . . . . . . . 7 | 4.2. Policy conditions . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.3. Policy actions . . . . . . . . . . . . . . . . . . . . . 8 | 4.3. Policy actions . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4.4. Policy subroutines . . . . . . . . . . . . . . . . . . . 9 | 4.4. Policy subroutines . . . . . . . . . . . . . . . . . . . 9 | |||
| 5. Policy evaluation . . . . . . . . . . . . . . . . . . . . . . 10 | 5. Policy evaluation . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 6. Applying routing policy . . . . . . . . . . . . . . . . . . . 10 | 6. Applying routing policy . . . . . . . . . . . . . . . . . . . 10 | |||
| 7. Routing protocol-specific policies . . . . . . . . . . . . . 11 | 7. Routing protocol-specific policies . . . . . . . . . . . . . 11 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 10. YANG modules . . . . . . . . . . . . . . . . . . . . . . . . 14 | 10. YANG module . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 10.1. Routing policy model . . . . . . . . . . . . . . . . . . 15 | 10.1. Routing policy model . . . . . . . . . . . . . . . . . . 15 | |||
| 11. Policy examples . . . . . . . . . . . . . . . . . . . . . . . 35 | 11. Policy examples . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 36 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 37 | |||
| 12.1. Normative references . . . . . . . . . . . . . . . . . . 36 | 12.1. Normative references . . . . . . . . . . . . . . . . . . 37 | |||
| 12.2. Informative references . . . . . . . . . . . . . . . . . 38 | 12.2. Informative references . . . . . . . . . . . . . . . . . 39 | |||
| Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 38 | Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 39 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| 1. Introduction | 1. Introduction | |||
| This document describes a YANG [RFC7950] data model for routing | This document describes a YANG [RFC7950] data model for routing | |||
| policy configuration based on operational usage and best practices in | policy configuration based on operational usage and best practices in | |||
| a variety of service provider networks. The model is intended to be | a variety of service provider networks. The model is intended to be | |||
| vendor-neutral, in order to allow operators to manage policy | vendor-neutral, in order to allow operators to manage policy | |||
| configuration in a consistent, intuitive way in heterogeneous | configuration in a consistent, intuitive way in heterogeneous | |||
| environments with routers supplied by multiple vendors. | environments with routers supplied by multiple vendors. | |||
| skipping to change at page 6, line 28 ¶ | skipping to change at page 6, line 28 ¶ | |||
| 4.1. Defined sets for policy matching | 4.1. Defined sets for policy matching | |||
| The models provides a set of generic sets that can be used for | The models provides a set of generic sets that can be used for | |||
| matching in policy conditions. These sets are applicable for route | matching in policy conditions. These sets are applicable for route | |||
| selection across multiple routing protocols. They may be further | selection across multiple routing protocols. They may be further | |||
| augmented by protocol-specific models which have their own defined | augmented by protocol-specific models which have their own defined | |||
| sets. The supported defined sets include: | sets. The supported defined sets include: | |||
| o prefix sets - define a set of IP prefixes, each with an associated | o prefix sets - define a set of IP prefixes, each with an associated | |||
| CIDR netmask range (or exact length) | IP prefix and netmask range (or exact length) | |||
| o neighbor sets - define a set of neighboring nodes by their IP | o neighbor sets - define a set of neighboring nodes by their IP | |||
| addresses. These sets are used for selecting routes based on the | addresses. These sets are used for selecting routes based on the | |||
| neighbors advertising the routes. | neighbors advertising the routes. | |||
| o tag set - define a set of generic tag values that can be used in | o tag set - define a set of generic tag values that can be used in | |||
| matches for filtering routes | matches for filtering routes | |||
| The model structure for defined sets is shown below. | The model structure for defined sets is shown below. | |||
| skipping to change at page 8, line 35 ¶ | skipping to change at page 8, line 35 ¶ | |||
| | | +--rw interface? | | | +--rw interface? | |||
| | | +--rw subinterface? | | | +--rw subinterface? | |||
| | +--rw match-prefix-set | | +--rw match-prefix-set | |||
| | | +--rw prefix-set? | | | +--rw prefix-set? | |||
| | | +--rw match-set-options? | | | +--rw match-set-options? | |||
| | +--rw match-neighbor-set | | +--rw match-neighbor-set | |||
| | | +--rw neighbor-set? | | | +--rw neighbor-set? | |||
| | +--rw match-tag-set | | +--rw match-tag-set | |||
| | | +--rw tag-set? | | | +--rw tag-set? | |||
| | | +--rw match-set-options? | | | +--rw match-set-options? | |||
| | +--rw match-proto-route-type* identityref | | +--rw match-route-type* identityref | |||
| 4.3. Policy actions | 4.3. Policy actions | |||
| When policy conditions are satisfied, policy actions are used to set | When policy conditions are satisfied, policy actions are used to set | |||
| various attributes of the route being processed, or to indicate the | various attributes of the route being processed, or to indicate the | |||
| final disposition of the route, i.e., accept or reject. | final disposition of the route, i.e., accept or reject. | |||
| Similar to policy conditions, the routing policy model includes | Similar to policy conditions, the routing policy model includes | |||
| generic actions in addition to the basic route disposition actions. | generic actions in addition to the basic route disposition actions. | |||
| These are shown below. | These are shown below. | |||
| skipping to change at page 12, line 27 ¶ | skipping to change at page 12, line 27 ¶ | |||
| | | +--rw interface? | | | +--rw interface? | |||
| | | +--rw subinterface? | | | +--rw subinterface? | |||
| | +--rw match-prefix-set | | +--rw match-prefix-set | |||
| | | +--rw prefix-set? prefix-set/name | | | +--rw prefix-set? prefix-set/name | |||
| | | +--rw match-set-options? match-set-options-type | | | +--rw match-set-options? match-set-options-type | |||
| | +--rw match-neighbor-set | | +--rw match-neighbor-set | |||
| | | +--rw neighbor-set? | | | +--rw neighbor-set? | |||
| | +--rw match-tag-set | | +--rw match-tag-set | |||
| | | +--rw tag-set? | | | +--rw tag-set? | |||
| | | +--rw match-set-options? match-set-options-type | | | +--rw match-set-options? match-set-options-type | |||
| | +--rw match-proto-route-type* identityref | | +--rw match-route-type* identityref | |||
| | +--rw bp:bgp-conditions | | +--rw bp:bgp-conditions | |||
| | +--rw bp:med-eq? uint32 | | +--rw bp:med-eq? uint32 | |||
| | +--rw bp:origin-eq? bt:bgp-origin-attr-type | | +--rw bp:origin-eq? bt:bgp-origin-attr-type | |||
| | +--rw bp:next-hop-in* inet:ip-address-no-zone | | +--rw bp:next-hop-in* inet:ip-address-no-zone | |||
| | +--rw bp:afi-safi-in* identityref | | +--rw bp:afi-safi-in* identityref | |||
| | +--rw bp:local-pref-eq? uint32 | | +--rw bp:local-pref-eq? uint32 | |||
| | +--rw bp:route-type? enumeration | | +--rw bp:route-type? enumeration | |||
| | +--rw bp:community-count | | +--rw bp:community-count | |||
| | +--rw bp:as-path-length | | +--rw bp:as-path-length | |||
| | +--rw bp:match-community-set | | +--rw bp:match-community-set | |||
| skipping to change at page 14, line 43 ¶ | skipping to change at page 14, line 43 ¶ | |||
| XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
| This document registers a YANG module in the YANG Module Names | This document registers a YANG module in the YANG Module Names | |||
| registry [RFC6020]. | registry [RFC6020]. | |||
| name: ietf-routing-policy | name: ietf-routing-policy | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-routing-policy | namespace: urn:ietf:params:xml:ns:yang:ietf-routing-policy | |||
| prefix: rt-pol | prefix: rt-pol | |||
| reference: RFC XXXX | reference: RFC XXXX | |||
| 10. YANG modules | 10. YANG module | |||
| The routing policy model is described by the YANG modules in the | The routing policy model is described by the YANG modules in the | |||
| sections below. | sections below. [RFC2328], [RFC3101], [RFC5130], and [RFC5302] are | |||
| referenced here since they are referenced in the YANG model but not | ||||
| elsewhere in the draft. | ||||
| 10.1. Routing policy model | 10.1. Routing policy model | |||
| <CODE BEGINS> file "ietf-routing-policy@2020-05-26.yang" | <CODE BEGINS> file "ietf-routing-policy@2020-06-01.yang" | |||
| module ietf-routing-policy { | module ietf-routing-policy { | |||
| yang-version "1.1"; | yang-version "1.1"; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-routing-policy"; | namespace "urn:ietf:params:xml:ns:yang:ietf-routing-policy"; | |||
| prefix rt-pol; | prefix rt-pol; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| reference "RFC 6991: Common YANG Data Types"; | reference "RFC 6991: Common YANG Data Types"; | |||
| skipping to change at page 15, line 47 ¶ | skipping to change at page 15, line 47 ¶ | |||
| import ietf-if-extensions { | import ietf-if-extensions { | |||
| prefix "if-ext"; | prefix "if-ext"; | |||
| reference "RFC YYYY: Common Interface Extension YANG | reference "RFC YYYY: Common Interface Extension YANG | |||
| Data Models. Please replace YYYY with | Data Models. Please replace YYYY with | |||
| published RFC number for | published RFC number for | |||
| draft-ietf-netmod-intf-ext-yang."; | draft-ietf-netmod-intf-ext-yang."; | |||
| } | } | |||
| import ietf-if-l3-vlan { | import ietf-if-l3-vlan { | |||
| prefix "if-l3-vlan"; | prefix "if-l3-vlan"; | |||
| reference "RFC XXXX: Sub-interface VLAN YANG Data Models. | reference "RFC ZZZZ: Sub-interface VLAN YANG Data Models. | |||
| Please replace XXXX with published RFC number | Please replace ZZZZ with published RFC number | |||
| for draft-ietf-netmod-sub-intf-vlan-model."; | for draft-ietf-netmod-sub-intf-vlan-model."; | |||
| } | } | |||
| organization | organization | |||
| "IETF RTGWG - Routing Area Working Group"; | "IETF RTGWG - Routing Area Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/rtgwg/> | "WG Web: <http://tools.ietf.org/wg/rtgwg/> | |||
| WG List: <Email: rtgwg@ietf.org> | WG List: <Email: rtgwg@ietf.org> | |||
| Editor: Yingzhen Qu | Editor: Yingzhen Qu | |||
| skipping to change at page 18, line 5 ¶ | skipping to change at page 18, line 5 ¶ | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT | |||
| RECOMMENDED', 'MAY', and 'OPTIONAL' in this document are to be | RECOMMENDED', 'MAY', and 'OPTIONAL' in this document are to be | |||
| interpreted as described in BCP 14 (RFC 2119) (RFC 8174) when, | interpreted as described in BCP 14 (RFC 2119) (RFC 8174) when, | |||
| and only when, they appear in all capitals, as shown here. | and only when, they appear in all capitals, as shown here. | |||
| This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC XXXX; | |||
| see the RFC itself for full legal notices."; | see the RFC itself for full legal notices."; | |||
| revision "2020-05-26" { | revision "2020-06-01" { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: Routing Policy Configuration Model for Service | "RFC XXXX: Routing Policy Configuration Model for Service | |||
| Provider Networks"; | Provider Networks"; | |||
| } | } | |||
| /* Identities */ | /* Identities */ | |||
| identity metric-type { | identity metric-type { | |||
| description | description | |||
| "Base identity for route metric types."; | "Base identity for route metric types."; | |||
| } | } | |||
| identity ospf-type-1-metric { | identity ospf-type-1-metric { | |||
| base metric-type; | base metric-type; | |||
| description | description | |||
| "Identity for the OSPF type 1 external metric types. It | "Identity for the OSPF type 1 external metric types. It | |||
| is only applicable to OSPF routes."; | is only applicable to OSPF routes."; | |||
| reference | ||||
| "RFC 2328 - OSPF Version 2"; | ||||
| } | } | |||
| identity ospf-type-2-metric { | identity ospf-type-2-metric { | |||
| base metric-type; | base metric-type; | |||
| description | description | |||
| "Identity for the OSPF type 2 external metric types. It | "Identity for the OSPF type 2 external metric types. It | |||
| is only applicable to OSPF routes."; | is only applicable to OSPF routes."; | |||
| reference | ||||
| "RFC 2328 - OSPF Version 2"; | ||||
| } | } | |||
| identity isis-internal-metric { | identity isis-internal-metric { | |||
| base metric-type; | base metric-type; | |||
| description | description | |||
| "Identity for the IS-IS internal metric types. It is only | "Identity for the IS-IS internal metric types. It is only | |||
| applicable to IS-IS routes."; | applicable to IS-IS routes."; | |||
| reference | ||||
| "RFC 5302 - Domain-Wide Prefix Distributino with | ||||
| Two-Level IS-IS"; | ||||
| } | } | |||
| identity isis-external-metric { | identity isis-external-metric { | |||
| base metric-type; | base metric-type; | |||
| description | description | |||
| "Identity for the IS-IS external metric types. It is only | "Identity for the IS-IS external metric types. It is only | |||
| applicable to IS-IS routes."; | applicable to IS-IS routes."; | |||
| reference | ||||
| "RFC 5302 - Domain-Wide Prefix Distributino with | ||||
| Two-Level IS-IS"; | ||||
| } | } | |||
| identity import-level { | identity import-level { | |||
| description | description | |||
| "Base identity for route import level."; | "Base identity for route import level."; | |||
| } | } | |||
| identity ospf-normal { | identity ospf-normal { | |||
| base import-level; | base import-level; | |||
| description | description | |||
| "Identity for OSPF importation into normal areas | "Identity for OSPF importation into normal areas | |||
| It is only applicable to routes imported | It is only applicable to routes imported | |||
| into the OSPF protocol."; | into the OSPF protocol."; | |||
| reference | ||||
| "RFC 2328 - OSPF Version 2"; | ||||
| } | } | |||
| identity ospf-nssa-only { | identity ospf-nssa-only { | |||
| base import-level; | base import-level; | |||
| description | description | |||
| "Identity for the OSPF NSSA area importation. It is only | "Identity for the OSPF Not-So-Stubby Area (NSSA) area | |||
| applicable to routes imported into the OSPF protocol."; | importation. It is only applicable to routes imported | |||
| into the OSPF protocol."; | ||||
| reference | ||||
| "RFC 3101: The OSPF Not-So-Stubby Area (NSSA) Option"; | ||||
| } | } | |||
| identity ospf-normal-nssa { | identity ospf-normal-nssa { | |||
| base import-level; | base import-level; | |||
| description | description | |||
| "Identity for OSPF importation into both normal and NSSA | "Identity for OSPF importation into both normal and NSSA | |||
| areas, it is only applicable to routes imported into | areas, it is only applicable to routes imported into | |||
| the OSPF protocol."; | the OSPF protocol."; | |||
| reference | ||||
| "RFC 3101: The OSPF Not-So-Stubby Area (NSSA) Option"; | ||||
| } | } | |||
| identity isis-level-1 { | identity isis-level-1 { | |||
| base import-level; | base import-level; | |||
| description | description | |||
| "Identity for IS-IS Level 1 area importation. It is only | "Identity for IS-IS Level 1 area importation. It is only | |||
| applicable to routes imported into the IS-IS protocol."; | applicable to routes imported into the IS-IS protocol."; | |||
| reference | ||||
| "RFC 5302 - Domain-Wide Prefix Distributino with | ||||
| Two-Level IS-IS"; | ||||
| } | } | |||
| identity isis-level-2 { | identity isis-level-2 { | |||
| base import-level; | base import-level; | |||
| description | description | |||
| "Identity for IS-IS Level 2 area importation. It is only | "Identity for IS-IS Level 2 area importation. It is only | |||
| applicable to routes imported into the IS-IS protocol."; | applicable to routes imported into the IS-IS protocol."; | |||
| reference | ||||
| "RFC 5302 - Domain-Wide Prefix Distributino with | ||||
| Two-Level IS-IS"; | ||||
| } | } | |||
| identity isis-level-1-2 { | identity isis-level-1-2 { | |||
| base import-level; | base import-level; | |||
| description | description | |||
| "Identity for IS-IS Level 1 and Level 2 area importation. It | "Identity for IS-IS Level 1 and Level 2 area importation. It | |||
| is only applicable to routes imported into the IS-IS | is only applicable to routes imported into the IS-IS | |||
| protocol."; | protocol."; | |||
| reference | ||||
| "RFC 5302 - Domain-Wide Prefix Distributino with | ||||
| Two-Level IS-IS"; | ||||
| } | } | |||
| identity proto-route-type { | identity proto-route-type { | |||
| description | description | |||
| "Base identity for route type within a protocol."; | "Base identity for route type within a protocol."; | |||
| } | } | |||
| identity isis-level-1-type { | identity isis-level-1-type { | |||
| base proto-route-type; | base proto-route-type; | |||
| description | description | |||
| "Identity for IS-IS Level 1 route type. It is only | "Identity for IS-IS Level 1 route type. It is only | |||
| applicable to IS-IS routes."; | applicable to IS-IS routes."; | |||
| reference | ||||
| "RFC 5302 - Domain-Wide Prefix Distributino with | ||||
| Two-Level IS-IS"; | ||||
| } | } | |||
| identity isis-level-2-type { | identity isis-level-2-type { | |||
| base proto-route-type; | base proto-route-type; | |||
| description | description | |||
| "Identity for IS-IS Level 2 route type. It is only | "Identity for IS-IS Level 2 route type. It is only | |||
| applicable to IS-IS routes."; | applicable to IS-IS routes."; | |||
| reference | ||||
| "RFC 5302 - Domain-Wide Prefix Distributino with | ||||
| Two-Level IS-IS"; | ||||
| } | } | |||
| identity ospf-internal-type { | identity ospf-internal-type { | |||
| base proto-route-type; | base proto-route-type; | |||
| description | description | |||
| "Identity for OSPF intra-area or inter-area route type. | "Identity for OSPF intra-area or inter-area route type. | |||
| It is only applicable to OSPF routes."; | It is only applicable to OSPF routes."; | |||
| reference | ||||
| "RFC 2328 - OSPF Version 2"; | ||||
| } | } | |||
| identity ospf-external-type { | identity ospf-external-type { | |||
| base proto-route-type; | base proto-route-type; | |||
| description | description | |||
| "Identity for OSPF external type 1/2 route type. | "Identity for OSPF external type 1/2 route type. | |||
| It is only applicable to OSPF routes."; | It is only applicable to OSPF routes."; | |||
| reference | ||||
| "RFC 2328 - OSPF Version 2"; | ||||
| } | } | |||
| identity ospf-external-t1 { | identity ospf-external-t1 { | |||
| base ospf-external-type; | base ospf-external-type; | |||
| description | description | |||
| "Identity for OSPF external type 1 route type. | "Identity for OSPF external type 1 route type. | |||
| It is only applicable to OSPF routes."; | It is only applicable to OSPF routes."; | |||
| reference | ||||
| "RFC 2328 - OSPF Version 2"; | ||||
| } | } | |||
| identity ospf-external-t2-type { | identity ospf-external-t2-type { | |||
| base ospf-external-type; | base ospf-external-type; | |||
| description | description | |||
| "Identity for OSPF external type 2 route type. | "Identity for OSPF external type 2 route type. | |||
| It is only applicable to OSPF routes."; | It is only applicable to OSPF routes."; | |||
| reference | ||||
| "RFC 2328 - OSPF Version 2"; | ||||
| } | } | |||
| identity ospf-nssa-type { | identity ospf-nssa-type { | |||
| base proto-route-type; | base proto-route-type; | |||
| description | description | |||
| "Identity for OSPF NSSA type 1/2 route type. | "Identity for OSPF NSSA type 1/2 route type. | |||
| It is only applicable to OSPF routes."; | It is only applicable to OSPF routes."; | |||
| reference | ||||
| "RFC 3101: The OSPF Not-So-Stubby Area (NSSA) Option"; | ||||
| } | } | |||
| identity ospf-nssa-t1 { | identity ospf-nssa-t1 { | |||
| base ospf-nssa-type; | base ospf-nssa-type; | |||
| description | description | |||
| "Identity for OSPF NSSA type 1 route type. | "Identity for OSPF NSSA type 1 route type. | |||
| It is only applicable to OSPF routes."; | It is only applicable to OSPF routes."; | |||
| reference | ||||
| "RFC 3101: The OSPF Not-So-Stubby Area (NSSA) Option"; | ||||
| } | } | |||
| identity ospf-nssa-t2 { | identity ospf-nssa-t2 { | |||
| base ospf-nssa-type; | base ospf-nssa-type; | |||
| description | description | |||
| "Identity for OSPF NSSA type 2 route type. | "Identity for OSPF NSSA type 2 route type. | |||
| It is only applicable to OSPF routes."; | It is only applicable to OSPF routes."; | |||
| reference | ||||
| "RFC 3101: The OSPF Not-So-Stubby Area (NSSA) Option"; | ||||
| } | } | |||
| identity bgp-local { | identity bgp-local { | |||
| base proto-route-type; | base proto-route-type; | |||
| description | description | |||
| "Identity for BGP local route type. | "Identity for BGP local route type. | |||
| It is only applicable to BGP routes."; | It is only applicable to BGP routes."; | |||
| reference | ||||
| "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | ||||
| } | } | |||
| identity bgp-external { | identity bgp-external { | |||
| base proto-route-type; | base proto-route-type; | |||
| description | description | |||
| "Identity for BGP external route type. | "Identity for BGP external route type. | |||
| It is only applicable to BGP routes."; | It is only applicable to BGP routes."; | |||
| reference | ||||
| "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; | ||||
| } | } | |||
| /* Type Definitions */ | /* Type Definitions */ | |||
| typedef default-policy-type { | typedef default-policy-type { | |||
| type enumeration { | type enumeration { | |||
| enum accept-route { | enum accept-route { | |||
| description | description | |||
| "Default policy to accept the route."; | "Default policy to accept the route."; | |||
| } | } | |||
| skipping to change at page 22, line 33 ¶ | skipping to change at page 23, line 35 ¶ | |||
| typedef tag-type { | typedef tag-type { | |||
| type union { | type union { | |||
| type uint32; | type uint32; | |||
| type yang:hex-string; | type yang:hex-string; | |||
| } | } | |||
| description | description | |||
| "Type for expressing route tags on a local system, | "Type for expressing route tags on a local system, | |||
| including IS-IS and OSPF; may be expressed as either decimal | including IS-IS and OSPF; may be expressed as either decimal | |||
| or hexadecimal integer."; | or hexadecimal integer."; | |||
| reference | reference | |||
| "RFC 2178 - OSPF Version 2 | "RFC 2328 - OSPF Version 2 | |||
| RFC 5130 - A Policy Control Mechanism in IS-IS Using | RFC 5130 - A Policy Control Mechanism in IS-IS Using | |||
| Administrative Tags"; | Administrative Tags"; | |||
| } | } | |||
| typedef match-set-options-type { | typedef match-set-options-type { | |||
| type enumeration { | type enumeration { | |||
| enum any { | enum any { | |||
| description | description | |||
| "Match is true if given value matches any member | "Match is true if given value matches any member | |||
| of the defined set."; | of the defined set."; | |||
| skipping to change at page 23, line 24 ¶ | skipping to change at page 24, line 26 ¶ | |||
| typedef metric-modification-type { | typedef metric-modification-type { | |||
| type enumeration { | type enumeration { | |||
| enum set-metric { | enum set-metric { | |||
| description | description | |||
| "Set the metric to the specified value."; | "Set the metric to the specified value."; | |||
| } | } | |||
| enum add-metric { | enum add-metric { | |||
| description | description | |||
| "Add the specified value to the existing metric. | "Add the specified value to the existing metric. | |||
| If the result would exceed the maximum metric | If the result would overflow the maximum metric | |||
| (0xffffffff), set the metric to the maximum."; | (0xffffffff), set the metric to the maximum."; | |||
| } | } | |||
| enum subtract-metric { | enum subtract-metric { | |||
| description | description | |||
| "Subtract the specified value to the existing metric. If | "Subtract the specified value to the existing metric. If | |||
| the result would be less than 0, set the metric to 0."; | the result would be less than 0, set the metric to 0."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Type used to specify how to set the metric given the | "Type used to specify how to set the metric given the | |||
| skipping to change at page 23, line 48 ¶ | skipping to change at page 24, line 50 ¶ | |||
| /* Groupings */ | /* Groupings */ | |||
| grouping prefix { | grouping prefix { | |||
| description | description | |||
| "Configuration data for a prefix definition."; | "Configuration data for a prefix definition."; | |||
| leaf ip-prefix { | leaf ip-prefix { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The prefix member in CIDR notation -- while the | "The IP prefix represented as an IPv6 or IPv4 network | |||
| prefix may be either IPv4 or IPv6, most | number followed prefix length with an intervening slash | |||
| implementations require all members of the prefix set | character a delimiter -- while the prefix may be either | |||
| to be the same address family. Mixing address types in | IPv4 or IPv6, most implementations require all members | |||
| the same prefix set is likely to cause an error."; | of the prefix set to be the same address family. Mixing | |||
| address types in the same prefix set is likely to cause | ||||
| an error."; | ||||
| } | } | |||
| leaf mask-length-lower { | leaf mask-length-lower { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Mask length range lower bound."; | "Mask length range lower bound."; | |||
| } | } | |||
| leaf mask-length-upper { | leaf mask-length-upper { | |||
| type uint8 { | type uint8 { | |||
| range "1..128"; | range "1..128"; | |||
| skipping to change at page 26, line 14 ¶ | skipping to change at page 27, line 19 ¶ | |||
| interface to be specified using the interface leaf in | interface to be specified using the interface leaf in | |||
| this container. If only a reference to a base interface | this container. If only a reference to a base interface | |||
| is required, this leaf should not be set."; | is required, this leaf should not be set."; | |||
| } | } | |||
| description | description | |||
| "Container for interface match conditions"; | "Container for interface match conditions"; | |||
| } | } | |||
| } | } | |||
| grouping match-proto-route-type-condition { | grouping match-route-type-condition { | |||
| description | description | |||
| "This grouping provides route-type match condition"; | "This grouping provides route-type match condition"; | |||
| leaf-list match-proto-route-type { | leaf-list match-route-type { | |||
| type identityref { | type identityref { | |||
| base proto-route-type; | base proto-route-type; | |||
| } | } | |||
| description | description | |||
| "Condition to check the protocol specific type | "Condition to check the protocol specific type | |||
| of route. This is normally used during route | of route. This is normally used during route | |||
| importation to select routes or to set protocol | importation to select routes or to set protocol | |||
| specific attributes based on the route type."; | specific attributes based on the route type."; | |||
| } | } | |||
| } | } | |||
| skipping to change at page 33, line 27 ¶ | skipping to change at page 34, line 34 ¶ | |||
| } | } | |||
| description | description | |||
| "Condition to check the protocol / method used to | "Condition to check the protocol / method used to | |||
| install the route into the local routing table."; | install the route into the local routing table."; | |||
| } | } | |||
| uses match-interface-condition; | uses match-interface-condition; | |||
| uses prefix-set-condition; | uses prefix-set-condition; | |||
| uses neighbor-set-condition; | uses neighbor-set-condition; | |||
| uses tag-set-condition; | uses tag-set-condition; | |||
| uses match-proto-route-type-condition; | uses match-route-type-condition; | |||
| } | } | |||
| container actions { | container actions { | |||
| description | description | |||
| "Top-level container for policy action | "Top-level container for policy action | |||
| statements."; | statements."; | |||
| leaf policy-result { | leaf policy-result { | |||
| type policy-result-type; | type policy-result-type; | |||
| description | description | |||
| "Select the final disposition for the route, | "Select the final disposition for the route, | |||
| skipping to change at page 36, line 30 ¶ | skipping to change at page 37, line 39 ¶ | |||
| Wilton, R., Ball, D., tapsingh@cisco.com, t., and S. | Wilton, R., Ball, D., tapsingh@cisco.com, t., and S. | |||
| Sivaraj,, "Common Interface Extension YANG Data Models", | Sivaraj,, "Common Interface Extension YANG Data Models", | |||
| 2019, <https://datatracker.ietf.org/doc/ | 2019, <https://datatracker.ietf.org/doc/ | |||
| draft-ietf-netmod-intf-ext-yang/>. | draft-ietf-netmod-intf-ext-yang/>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, | ||||
| DOI 10.17487/RFC2328, April 1998, | ||||
| <https://www.rfc-editor.org/info/rfc2328>. | ||||
| [RFC3101] Murphy, P., "The OSPF Not-So-Stubby Area (NSSA) Option", | ||||
| RFC 3101, DOI 10.17487/RFC3101, January 2003, | ||||
| <https://www.rfc-editor.org/info/rfc3101>. | ||||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
| <https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | |||
| Border Gateway Protocol 4 (BGP-4)", RFC 4271, | Border Gateway Protocol 4 (BGP-4)", RFC 4271, | |||
| DOI 10.17487/RFC4271, January 2006, | DOI 10.17487/RFC4271, January 2006, | |||
| <https://www.rfc-editor.org/info/rfc4271>. | <https://www.rfc-editor.org/info/rfc4271>. | |||
| [RFC5130] Previdi, S., Shand, M., Ed., and C. Martin, "A Policy | ||||
| Control Mechanism in IS-IS Using Administrative Tags", | ||||
| RFC 5130, DOI 10.17487/RFC5130, February 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5130>. | ||||
| [RFC5302] Li, T., Smit, H., and T. Przygienda, "Domain-Wide Prefix | ||||
| Distribution with Two-Level IS-IS", RFC 5302, | ||||
| DOI 10.17487/RFC5302, October 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5302>. | ||||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| DOI 10.17487/RFC6020, October 2010, | DOI 10.17487/RFC6020, October 2010, | |||
| <https://www.rfc-editor.org/info/rfc6020>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
| and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
| skipping to change at page 38, line 31 ¶ | skipping to change at page 40, line 5 ¶ | |||
| OpenConfig route policy model. The authors would like to thank to | OpenConfig route policy model. The authors would like to thank to | |||
| OpenConfig for their contributions, especially Anees Shaikh, Rob | OpenConfig for their contributions, especially Anees Shaikh, Rob | |||
| Shakir, Kevin D'Souza, and Chris Chase. | Shakir, Kevin D'Souza, and Chris Chase. | |||
| The authors are grateful for valuable contributions to this document | The authors are grateful for valuable contributions to this document | |||
| and the associated models from: Ebben Aires, Luyuan Fang, Josh | and the associated models from: Ebben Aires, Luyuan Fang, Josh | |||
| George, Stephane Litkowski, Ina Minei, Carl Moberg, Eric Osborne, | George, Stephane Litkowski, Ina Minei, Carl Moberg, Eric Osborne, | |||
| Steve Padgett, Juergen Schoenwaelder, Jim Uttaro, Russ White, and | Steve Padgett, Juergen Schoenwaelder, Jim Uttaro, Russ White, and | |||
| John Heasley. | John Heasley. | |||
| Thanks to Mahesh Jethanandani for valuable comments. | Thanks to Mahesh Jethanandani and Tom Petch for their review and | |||
| comments. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Yingzhen Qu | Yingzhen Qu | |||
| Futurewei | Futurewei | |||
| 2330 Central Expressway | 2330 Central Expressway | |||
| Santa Clara CA 95050 | Santa Clara CA 95050 | |||
| USA | USA | |||
| Email: yingzhen.qu@futurewei.com | Email: yingzhen.qu@futurewei.com | |||
| End of changes. 48 change blocks. | ||||
| 36 lines changed or deleted | 109 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||