< draft-ietf-rtgwg-policy-model-02.txt   draft-ietf-rtgwg-policy-model-03.txt >
RTGWG Y. Qu RTGWG Y. Qu
Internet-Draft Huawei Internet-Draft Huawei
Intended status: Informational J. Tantsura Intended status: Informational J. Tantsura
Expires: September 4, 2018 Nuage Networks Expires: December 31, 2018 Nuage Networks
A. Lindem A. Lindem
Cisco Cisco
X. Liu X. Liu
Jabil Jabil
A. Shaikh A. Shaikh
Google Google
March 3, 2018 June 29, 2018
A YANG Data Model for Routing Policy Management A YANG Data Model for Routing Policy Management
draft-ietf-rtgwg-policy-model-02 draft-ietf-rtgwg-policy-model-03
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 40 skipping to change at page 1, line 40
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 September 4, 2018. This Internet-Draft will expire on December 31, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 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 24 skipping to change at page 2, line 24
1.1. Goals and approach . . . . . . . . . . . . . . . . . . . 3 1.1. Goals and approach . . . . . . . . . . . . . . . . . . . 3
2. Model overview . . . . . . . . . . . . . . . . . . . . . . . 3 2. Model overview . . . . . . . . . . . . . . . . . . . . . . . 3
3. Route policy expression . . . . . . . . . . . . . . . . . . . 4 3. Route policy expression . . . . . . . . . . . . . . . . . . . 4
3.1. Defined sets for policy matching . . . . . . . . . . . . 4 3.1. Defined sets for policy matching . . . . . . . . . . . . 4
3.2. Policy conditions . . . . . . . . . . . . . . . . . . . . 5 3.2. Policy conditions . . . . . . . . . . . . . . . . . . . . 5
3.3. Policy actions . . . . . . . . . . . . . . . . . . . . . 6 3.3. Policy actions . . . . . . . . . . . . . . . . . . . . . 6
3.4. Policy subroutines . . . . . . . . . . . . . . . . . . . 7 3.4. Policy subroutines . . . . . . . . . . . . . . . . . . . 7
4. Policy evaluation . . . . . . . . . . . . . . . . . . . . . . 7 4. Policy evaluation . . . . . . . . . . . . . . . . . . . . . . 7
5. Applying routing policy . . . . . . . . . . . . . . . . . . . 8 5. Applying routing policy . . . . . . . . . . . . . . . . . . . 8
6. Routing protocol-specific policies . . . . . . . . . . . . . 8 6. Routing protocol-specific policies . . . . . . . . . . . . . 8
7. Security Considerations . . . . . . . . . . . . . . . . . . . 9 7. Security Considerations . . . . . . . . . . . . . . . . . . . 11
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11
9. YANG modules . . . . . . . . . . . . . . . . . . . . . . . . 10 9. YANG modules . . . . . . . . . . . . . . . . . . . . . . . . 11
9.1. Routing policy model . . . . . . . . . . . . . . . . . . 10 9.1. Routing policy model . . . . . . . . . . . . . . . . . . 11
10. Policy examples . . . . . . . . . . . . . . . . . . . . . . . 26 10. Policy examples . . . . . . . . . . . . . . . . . . . . . . . 28
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 28
11.1. Normative references . . . . . . . . . . . . . . . . . . 27 11.1. Normative references . . . . . . . . . . . . . . . . . . 28
11.2. Informative references . . . . . . . . . . . . . . . . . 27 11.2. Informative references . . . . . . . . . . . . . . . . . 29
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 27 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 29
Appendix B. Change summary . . . . . . . . . . . . . . . . . . . 28 Appendix B. Change summary . . . . . . . . . . . . . . . . . . . 29
B.1. Changes between revisions -01 and -02 . . . . . . . . . . 28 B.1. Changes between revisions -01 and -02 . . . . . . . . . . 29
B.2. Changes between revisions -00 and -01 . . . . . . . . . . 28 B.2. Changes between revisions -00 and -01 . . . . . . . . . . 29
B.3. Changes between revisions draft-shaikh-rtgwg-policy-model B.3. Changes between revisions draft-shaikh-rtgwg-policy-model
and -00 . . . . . . . . . . . . . . . . . . . . . . . . . 28 and -00 . . . . . . . . . . . . . . . . . . . . . . . . . 29
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29
1. Introduction 1. Introduction
This document describes a YANG [RFC6020] [RFC7950] data model for This document describes a YANG [RFC6020] [RFC7950] data model for
routing policy configuration based on operational usage and best routing policy configuration based on operational usage and best
practices in a variety of service provider networks. The model is practices in a variety of service provider networks. The model is
intended to be vendor-neutral, in order to allow operators to manage intended to be vendor-neutral, in order to allow operators to manage
policy configuration in a consistent, intuitive way in heterogeneous policy 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 5, line 5 skipping to change at page 5, line 5
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.
+--rw routing-policy +--rw routing-policy
+--rw defined-sets +--rw defined-sets
| +--rw prefix-sets | +--rw prefix-sets
| | +--rw prefix-set* [name] | | +--rw prefix-set* [name]
| | +--rw name string | | +--rw name string
| | +--rw mode? enumeration | | +--rw mode? enumeration
| | +--rw prefixes | | +--rw prefixes
| | +--rw prefix* [ip-prefix masklength-range] | | +--rw prefix-list* [ip-prefix masklength-lower
| | masklength-upper]
| | +--rw ip-prefix inet:ip-prefix | | +--rw ip-prefix inet:ip-prefix
| | +--rw masklength-range string | | +--rw masklength-lower uint8
| | +--rw masklength-upper uint8
| +--rw neighbor-sets | +--rw neighbor-sets
| | +--rw neighbor-set* [name] | | +--rw neighbor-set* [name]
| | +--rw name string | | +--rw name string
| | +--rw address* inet:ip-address | | +--rw address* inet:ip-address
| +--rw tag-sets | +--rw tag-sets
| +--rw tag-set* [name] | +--rw tag-set* [name]
| +--rw name string | +--rw name string
| +--rw tag-value* tag-type | +--rw tag-value* tag-type
3.2. Policy conditions 3.2. Policy conditions
skipping to change at page 6, line 22 skipping to change at page 6, line 26
+--rw policy-definitions +--rw policy-definitions
+--rw policy-definition* [name] +--rw policy-definition* [name]
+--rw name string +--rw name string
+--rw statements +--rw statements
+--rw statement* [name] +--rw statement* [name]
+--rw conditions +--rw conditions
| +--rw call-policy? | +--rw call-policy?
| +--rw install-protocol-eq? | +--rw install-protocol-eq?
| +--rw match-interface | +--rw match-interface
| | +--rw interface? | | +--rw interface?
| | +--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-set-options?
| | match-set-options-restricted-type
| +--rw match-tag-set | +--rw match-tag-set
| +--rw tag-set? | +--rw tag-set?
| +--rw match-set-options? | +--rw match-set-options?
match-set-options-restricted-type
3.3. Policy actions 3.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.
+--rw routing-policy +--rw routing-policy
+--rw policy-definitions +--rw policy-definitions
+--rw policy-definition* [name] +--rw policy-definition* [name]
+--rw statements +--rw statements
+--rw statement* [name] +--rw statement* [name]
+--rw actions +--rw actions
+--rw policy-result? policy-result-type +--rw policy-result? policy-result-type
+--rw set-metric? uint16
+--rw set-preference? uint8
3.4. Policy subroutines 3.4. Policy subroutines
Policy 'subroutines' (or nested policies) are supported by allowing Policy 'subroutines' (or nested policies) are supported by allowing
policy statement conditions to reference other policy definitions policy statement conditions to reference other policy definitions
using the call-policy configuration. Called policies apply their using the call-policy configuration. Called policies apply their
conditions and actions before returning to the calling policy conditions and actions before returning to the calling policy
statement and resuming evaluation. The outcome of the called policy statement and resuming evaluation. The outcome of the called policy
affects the evaluation of the calling policy. If the called policy affects the evaluation of the calling policy. If the called policy
results in an accept-route (either explicit or by default), then the results in an accept-route (either explicit or by default), then the
skipping to change at page 9, line 5 skipping to change at page 8, line 51
policy configuration. The routing policy model assumes that policy configuration. The routing policy model assumes that
additional defined sets, conditions, and actions may all be added by additional defined sets, conditions, and actions may all be added by
other models. other models.
An example of this is shown below, in which the BGP configuration An example of this is shown below, in which the BGP configuration
model in [I-D.ietf-idr-bgp-model] adds new defined sets to match on model in [I-D.ietf-idr-bgp-model] adds new defined sets to match on
community values or AS paths. The model similarly augments BGP- community values or AS paths. The model similarly augments BGP-
specific conditions and actions in the corresponding sections of the specific conditions and actions in the corresponding sections of the
routing policy model. routing policy model.
+--rw routing-policy module: ietf-routing-policy
+--rw defined-sets +--rw routing-policy
+--rw prefix-sets +--rw defined-sets
| +--rw prefix-set* [prefix-set-name] | +--rw prefix-sets
| +--rw prefix-set-name | | +--rw prefix-set* [name]
| +--rw prefix* [ip-prefix masklength-range] | | +--rw name string
| +--rw ip-prefix | | +--rw mode? enumeration
| +--rw masklength-range | | +--rw prefixes
+--rw neighbor-sets | | +--rw prefix-list* [ip-prefix masklength-lower
| +--rw neighbor-set* [neighbor-set-name] | | masklength-upper]
| +--rw neighbor-set-name | | +--rw ip-prefix inet:ip-prefix
| +--rw neighbor* [address] | | +--rw masklength-lower uint8
| +--rw address | | +--rw masklength-upper uint8
+--rw tag-sets | +--rw neighbor-sets
| +--rw tag-set* [tag-set-name] | | +--rw neighbor-set* [name]
| +--rw tag-set-name | | +--rw name string
| +--rw tag* [value] | | +--rw address* inet:ip-address
| +--rw value | +--rw tag-sets
+--rw bgp-pol:bgp-defined-sets | | +--rw tag-set* [name]
+--rw bgp-pol:community-sets | | +--rw name string
| +--rw bgp-pol:community-set* [community-set-name] | | +--rw tag-value* tag-type
| +--rw bgp-pol:community-set-name | +--rw bgp-pol:bgp-defined-sets
| +--rw bgp-pol:community-member* | +--rw bgp-pol:community-sets
+--rw bgp-pol:ext-community-sets | | +--rw bgp-pol:community-set* [community-set-name]
| +--rw bgp-pol:ext-community-set* | | +--rw bgp-pol:community-set-name string
| [ext-community-set-name] | | +--rw bgp-pol:community-member* union
| +--rw bgp-pol:ext-community-set-name | +--rw bgp-pol:ext-community-sets
| +--rw bgp-pol:ext-community-member* | | +--rw bgp-pol:ext-community-set* [ext-community-set-name]
+--rw bgp-pol:as-path-sets | | +--rw bgp-pol:ext-community-set-name string
+--rw bgp-pol:as-path-set* [as-path-set-name] | | +--rw bgp-pol:ext-community-member* union
+--rw bgp-pol:as-path-set-name | +--rw bgp-pol:as-path-sets
+--rw bgp-pol:as-path-set-member* | +--rw bgp-pol:as-path-set* [as-path-set-name]
| +--rw bgp-pol:as-path-set-name string
| +--rw bgp-pol:as-path-set-member* string
+--rw policy-definitions
+--rw policy-definition* [name]
+--rw name string
+--rw statements
+--rw statement* [name]
+--rw name string
+--rw conditions
| +--rw call-policy?
| +--rw source-protocol? identityref
| +--rw match-interface
| | +--rw interface?
| | +--rw subinterface?
| +--rw match-prefix-set
| | +--rw prefix-set?
| | +--rw match-set-options? match-set-options-type
| +--rw match-neighbor-set
| | +--rw neighbor-set?
| +--rw match-tag-set
| | +--rw tag-set?
| | +--rw match-set-options? match-set-options-type
| +--rw bgp-pol:bgp-conditions
| +--rw bgp-pol:med-eq? uint32
| +--rw bgp-pol:origin-eq?
| bgp-types:bgp-origin-attr-type
| +--rw bgp-pol:next-hop-in*
| inet:ip-address-no-zone
| +--rw bgp-pol:afi-safi-in* identityref
| +--rw bgp-pol:local-pref-eq? uint32
| +--rw bgp-pol:route-type? enumeration
| +--rw bgp-pol:community-count
| +--rw bgp-pol:as-path-length
| +--rw bgp-pol:match-community-set
| | +--rw bgp-pol:community-set?
| | +--rw bgp-pol:match-set-options?
| match-set-options-type
| +--rw bgp-pol:match-ext-community-set
| | +--rw bgp-pol:ext-community-set?
| | +--rw bgp-pol:match-set-options?
| | match-set-options-type
| +--rw bgp-pol:match-as-path-set
| +--rw bgp-pol:as-path-set?
| +--rw bgp-pol:match-set-options?
| match-set-options-type
+--rw actions
+--rw policy-result? policy-result-type
+--rw set-metric? uint16
+--rw set-preference? uint8
+--rw bgp-pol:bgp-actions
+--rw bgp-pol:set-route-origin?
bgp-types:bgp-origin-attr-type
+--rw bgp-pol:set-local-pref? uint32
+--rw bgp-pol:set-next-hop? bgp-next-hop-type
+--rw bgp-pol:set-med? bgp-set-med-type
+--rw bgp-pol:set-as-path-prepend
| +--rw bgp-pol:repeat-n? uint8
+--rw bgp-pol:set-community
| +--rw bgp-pol:method? enumeration
| +--rw bgp-pol:options?
bgp-set-community-option-type
| +--rw bgp-pol:inline
| | +--rw bgp-pol:communities* union
| +--rw bgp-pol:reference
| +--rw bgp-pol:community-set-ref?
+--rw bgp-pol:set-ext-community
+--rw bgp-pol:method? enumeration
+--rw bgp-pol:options?
bgp-set-community-option-type
+--rw bgp-pol:inline
| +--rw bgp-pol:communities* union
+--rw bgp-pol:reference
+--rw bgp-pol:ext-community-set-ref?
7. Security Considerations 7. Security Considerations
Routing policy configuration has a significant impact on network Routing policy configuration has a significant impact on network
operations, and, as such, any related model carries potential operations, and, as such, any related model carries potential
security risks. security risks.
YANG data models are generally designed to be used with the NETCONF YANG data models are generally designed to be used with the NETCONF
protocol over an SSH transport. This provides an authenticated and protocol over an SSH transport. This provides an authenticated and
secure channel over which to transfer configuration and operational secure channel over which to transfer configuration and operational
skipping to change at page 10, line 25 skipping to change at page 11, line 46
YANG modules will be registered in the "YANG Module Names" registry YANG modules will be registered in the "YANG Module Names" registry
[RFC6020]. [RFC6020].
9. YANG modules 9. YANG modules
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.
9.1. Routing policy model 9.1. Routing policy model
<CODE BEGINS> file "ietf-routing-policy@2018-02-26.yang" <CODE BEGINS> file "ietf-routing-policy@2018-06-25.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";
} }
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix "yang";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
skipping to change at page 12, line 35 skipping to change at page 14, line 8
definition which applies conditions and actions from the definition which applies conditions and actions from the
referenced policy before returning to the calling policy referenced policy before returning to the calling policy
statement and resuming evaluation. If the called policy statement and resuming evaluation. If the called policy
results in an accept-route (either explicit or by default), then results in an accept-route (either explicit or by default), then
the subroutine returns an effective true value to the calling the subroutine returns an effective true value to the calling
policy. Similarly, a reject-route action returns false. If the policy. Similarly, a reject-route action returns false. If the
subroutine returns true, the calling policy continues to subroutine returns true, the calling policy continues to
evaluate the remaining conditions (using a modified route if the evaluate the remaining conditions (using a modified route if the
subroutine performed any changes to the route)."; subroutine performed any changes to the route).";
revision "2018-02-26" { revision "2018-06-25" {
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";
} }
// typedef statements // typedef statements
typedef default-policy-type { typedef default-policy-type {
skipping to change at page 15, line 31 skipping to change at page 17, line 4
list prefix-set { list prefix-set {
key "name"; key "name";
description description
"List of the defined prefix sets"; "List of the defined prefix sets";
uses prefix-set; uses prefix-set;
uses prefix-top; uses prefix-top;
} }
} }
} }
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 prefix member in CIDR notation -- while the
prefix may be either IPv4 or IPv6, most prefix may be either IPv4 or IPv6, most
implementations require all members of the prefix set implementations require all members of the prefix set
to be the same address family. Mixing address types in to be the same address family. Mixing address types in
the same prefix set is likely to cause an error."; the same prefix set is likely to cause an error.";
} }
leaf masklength-range { leaf masklength-lower {
type string { type uint8;
pattern '([0-9]{2}\.\.[0-9]{2})|([0-9]{2})'; description
"Masklength range lower bound.";
}
leaf masklength-upper {
type uint8 {
range "1..128";
}
must "../masklength-upper >= ../masklength-lower" {
error-message "The upper bound should not be less"
+ "than lower bound.";
} }
description description
"Defines a range for the masklength, or 'exact' if "Masklength range upper bound.
the prefix has an exact length.
The combination of masklength-lower and masklength-upper
define a range for the mask length, or single 'exact'
length if masklength-lower and masklenght-upper are equal.
Example: 10.3.192.0/21 through 10.3.192.0/24 would be Example: 10.3.192.0/21 through 10.3.192.0/24 would be
expressed as prefix: 10.3.192.0/21, expressed as prefix: 10.3.192.0/21,
masklength-range: 21..24. masklength-lower=21,
masklength-upper=24
Example: 10.3.192.0/21 would be expressed as Example: 10.3.192.0/21 (an exact match) would be
prefix: 10.3.192.0/21, expressed as prefix: 10.3.192.0/21,
masklength-range: exact"; masklength-lower=21,
masklength-upper=21";
} }
} }
grouping prefix-top { grouping prefix-top {
description description
"Top-level grouping for prefixes in a prefix list"; "Top-level grouping for prefixes in a prefix list";
container prefixes { container prefixes {
description description
"Enclosing container for the list of prefixes in a policy "Enclosing container for the list of prefixes in a policy
prefix list"; prefix list";
list prefix-list { list prefix-list {
key "ip-prefix masklength-range"; key "ip-prefix masklength-lower masklength-upper";
description description
"List of prefixes in the prefix set"; "List of prefixes in the prefix set";
uses prefix; uses prefix;
} }
} }
} }
grouping neighbor-set { grouping neighbor-set {
description description
skipping to change at page 21, line 4 skipping to change at page 22, line 36
"/name"; "/name";
require-instance true; require-instance true;
} }
description "References a defined tag set"; description "References a defined tag set";
} }
uses match-set-options-restricted-group; uses match-set-options-restricted-group;
description description
"Match a referenced tag set according to the logic defined "Match a referenced tag set according to the logic defined
in the match-options-set leaf"; in the match-options-set leaf";
} }
} }
grouping generic-conditions { grouping generic-conditions {
description "Condition statement definitions for checking description "Condition statement definitions for checking
membership in a generic defined set"; membership in a generic defined set";
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;
} }
grouping generic-actions {
description
"Definitions for common set of policy action statements that
manage the disposition or control flow of the policy";
leaf policy-result {
type policy-result-type;
description
"Select the final disposition for the route, either
accept or reject.";
}
}
grouping policy-conditions { grouping policy-conditions {
description description
"Data for general policy conditions, i.e., those "Data for general policy conditions, i.e., those
not related to match-sets"; not related to match-sets";
leaf call-policy { leaf call-policy {
type leafref { type leafref {
path "../../../../../../" + path "../../../../../../" +
"rt-pol:policy-definitions/" + "rt-pol:policy-definitions/" +
"rt-pol:policy-definition/rt-pol:name"; "rt-pol:policy-definition/rt-pol:name";
skipping to change at page 22, line 10 skipping to change at page 23, line 28
itself call other policies (subject to itself call other policies (subject to
implementation limitations). This is intended to implementation limitations). This is intended to
provide a policy 'subroutine' capability. The provide a policy 'subroutine' capability. The
called policy should contain an explicit or a called policy should contain an explicit or a
default route disposition that returns an default route disposition that returns an
effective true (accept-route) or false effective true (accept-route) or false
(reject-route), otherwise the behavior may be (reject-route), otherwise the behavior may be
ambiguous and implementation dependent"; ambiguous and implementation dependent";
} }
leaf install-protocol-eq { leaf source-protocol {
type identityref { type identityref {
base rt:control-plane-protocol; base rt:control-plane-protocol;
} }
description description
"Condition to check the protocol / method used to install "Condition to check the protocol / method used to install
the route into the local routing table"; the route into the local routing table";
} }
} }
grouping policy-conditions-top { grouping policy-conditions-top {
skipping to change at page 22, line 33 skipping to change at page 24, line 4
container conditions { container conditions {
description description
"Condition statements for the current policy statement"; "Condition statements for the current policy statement";
uses policy-conditions; uses policy-conditions;
uses generic-conditions; uses generic-conditions;
} }
} }
grouping policy-statements { grouping policy-statements {
description description
"Data for policy statements"; "Data for policy statements";
leaf name { leaf name {
type string; type string;
description description
"Name of the policy statement"; "Name of the policy statement";
} }
} }
grouping policy-actions { grouping policy-actions {
description description
"Grouping for policy actions";
uses generic-actions;
}
grouping policy-actions-top {
description
"Top-level grouping for policy actions"; "Top-level grouping for policy actions";
container actions { container actions {
description description
"Top-level container for policy action statements"; "Top-level container for policy action statements";
uses policy-actions; leaf policy-result {
type policy-result-type;
description
"Select the final disposition for the route, either
accept or reject.";
}
leaf set-metric {
type uint16;
description
"Set a new metric for the route.";
}
leaf set-preference {
type uint8;
description
"Set a new preference for the route.";
}
} }
} }
grouping policy-statements-top { grouping policy-statements-top {
description description
"Top-level grouping for the policy statements list"; "Top-level grouping for the policy statements list";
container statements { container statements {
description description
"Enclosing container for policy statements"; "Enclosing container for policy statements";
skipping to change at page 23, line 36 skipping to change at page 25, line 15
ordered-by user; ordered-by user;
description description
"Policy statements group conditions and actions "Policy statements group conditions and actions
within a policy definition. They are evaluated in within a policy definition. They are evaluated in
the order specified (see the description of policy the order specified (see the description of policy
evaluation at the top of this module."; evaluation at the top of this module.";
uses policy-statements; uses policy-statements;
uses policy-conditions-top; uses policy-conditions-top;
uses policy-actions-top; uses policy-actions;
} }
} }
} }
grouping policy-definitions { grouping policy-definitions {
description description
"This grouping provides policy definitions"; "This grouping provides policy definitions";
leaf name { leaf name {
type string; type string;
skipping to change at page 27, line 35 skipping to change at page 29, line 12
[RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991,
July 2013. July 2013.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016, RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/info/rfc7950>. <https://www.rfc-editor.org/info/rfc7950>.
11.2. Informative references 11.2. Informative references
[I-D.ietf-idr-bgp-model] [I-D.ietf-idr-bgp-model]
Shaikh, A., Shakir, R., Patel, K., Hares, S., D'Souza, K., Patel, K., Jethanandani, M., and S. Hares, "BGP Model for
Bansal, D., Clemm, A., Zhdankin, A., Jethanandani, M., and Service Provider Networks", draft-ietf-idr-bgp-model-03
X. Liu, "BGP Model for Service Provider Networks", draft- (work in progress), May 2018.
ietf-idr-bgp-model-02 (work in progress), July 2016.
Appendix A. Acknowledgements Appendix A. Acknowledgements
The routing policy module defined in this draft is based on the The routing policy module defined in this draft is based on the
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 Rob Shakir, Kevin OpenConfig for their contributions, especially Rob Shakir, Kevin
D'Souza, and Chris Chase. 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
 End of changes. 32 change blocks. 
99 lines changed or deleted 181 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/