├── models ├── bgp │ ├── filters │ │ ├── filter-bgp.xml │ │ ├── filter-bgp.json │ │ ├── filter-bgp-global.xml │ │ ├── filter-bgp-neighbors.xml │ │ ├── filter-bgp-peer-groups.xml │ │ ├── filter-bgp-global.json │ │ ├── filter-bgp-neighbors.json │ │ └── filter-bgp-peer-groups.json │ ├── netconf │ │ ├── nc-get-filter-bgp.xml │ │ ├── nc-get-filter-bgp-global.xml │ │ ├── nc-get-filter-bgp-neighbors.xml │ │ ├── nc-get-filter-bgp-peer-groups.xml │ │ ├── nc-get-config-filter-bgp.xml │ │ ├── nc-get-config-filter-bgp-global.xml │ │ ├── nc-get-config-filter-bgp-neighbors.xml │ │ ├── nc-get-config-filter-bgp-peer-groups.xml │ │ ├── nc-edit-config-basic-ebgp-bgp.xml │ │ └── nc-edit-config-basic-ibgp-bgp.xml │ ├── config │ │ ├── config-basic-ibgp-bgp.txt │ │ ├── config-basic-ebgp-bgp.txt │ │ ├── config-basic-ebgp-bgp.json │ │ ├── config-basic-ibgp-bgp.json │ │ ├── config-basic-ebgp-bgp.xml │ │ └── config-basic-ibgp-bgp.xml │ ├── oper │ │ ├── oper-basic-ibgp-bgp.json │ │ └── oper-config-basic-ibgp-bgp.xml │ ├── README.md │ └── tree │ │ └── bgp-2015-05-15-cisco-xr-devs-tree.txt └── policy │ ├── filters │ ├── filter-routing-policy.xml │ ├── filter-routing-policy.json │ ├── filter-routing-policy-defined-sets.xml │ ├── filter-routing-policy-policy-definitions.xml │ ├── filter-routing-policy-defined-sets.json │ └── filter-routing-policy-policy-definitions.json │ ├── config │ ├── config-routing-policy-policy1.txt │ ├── config-routing-policy-policy4.txt │ ├── config-routing-policy-policy3.txt │ ├── config-routing-policy-policy1.json │ ├── config-routing-policy-policy1.xml │ ├── config-routing-policy-policy4.json │ ├── config-routing-policy-policy2.txt │ ├── config-routing-policy-policy4.xml │ ├── config-routing-policy-policy3.json │ ├── config-routing-policy-policy2.json │ ├── config-routing-policy-policy3.xml │ └── config-routing-policy-policy2.xml │ ├── netconf │ ├── nc-get-config-filter-routing-policy.xml │ ├── nc-get-config-filter-routing-policy-defined-sets.xml │ ├── nc-get-config-filter-routing-policy-policy-definitions.xml │ ├── nc-edit-config-routing-policy-policy1.xml │ ├── nc-edit-config-routing-policy-policy4.xml │ ├── nc-edit-config-routing-policy-policy3.xml │ └── nc-edit-config-routing-policy-policy2.xml │ ├── tree │ └── routing-policy-2015-05-15-cisco-xr-devs-tree.txt │ └── README.md ├── LICENSE └── README.md /models/bgp/filters/filter-bgp.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /models/bgp/filters/filter-bgp.json: -------------------------------------------------------------------------------- 1 | { 2 | "bgp:bgp": [ 3 | null 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /models/bgp/filters/filter-bgp-global.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /models/bgp/filters/filter-bgp-neighbors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /models/policy/filters/filter-routing-policy.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /models/bgp/filters/filter-bgp-peer-groups.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /models/policy/filters/filter-routing-policy.json: -------------------------------------------------------------------------------- 1 | { 2 | "routing-policy:routing-policy": [ 3 | null 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /models/bgp/filters/filter-bgp-global.json: -------------------------------------------------------------------------------- 1 | { 2 | "bgp:bgp": { 3 | "global": [ 4 | null 5 | ] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /models/policy/config/config-routing-policy-policy1.txt: -------------------------------------------------------------------------------- 1 | route-policy POLICY1 2 | #statement-name accept route 3 | done 4 | end-policy 5 | ! 6 | -------------------------------------------------------------------------------- /models/bgp/filters/filter-bgp-neighbors.json: -------------------------------------------------------------------------------- 1 | { 2 | "bgp:bgp": { 3 | "neighbors": [ 4 | null 5 | ] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /models/bgp/filters/filter-bgp-peer-groups.json: -------------------------------------------------------------------------------- 1 | { 2 | "bgp:bgp": { 3 | "peer-groups": [ 4 | null 5 | ] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /models/policy/config/config-routing-policy-policy4.txt: -------------------------------------------------------------------------------- 1 | route-policy POLICY4 2 | #statement-name next-hop-self 3 | set next-hop self 4 | done 5 | end-policy 6 | ! 7 | -------------------------------------------------------------------------------- /models/policy/filters/filter-routing-policy-defined-sets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /models/policy/filters/filter-routing-policy-policy-definitions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /models/policy/filters/filter-routing-policy-defined-sets.json: -------------------------------------------------------------------------------- 1 | { 2 | "routing-policy:routing-policy": { 3 | "defined-sets": [ 4 | null 5 | ] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /models/policy/filters/filter-routing-policy-policy-definitions.json: -------------------------------------------------------------------------------- 1 | { 2 | "routing-policy:routing-policy": { 3 | "policy-definitions": [ 4 | null 5 | ] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /models/bgp/netconf/nc-get-filter-bgp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /models/bgp/netconf/nc-get-filter-bgp-global.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /models/bgp/config/config-basic-ibgp-bgp.txt: -------------------------------------------------------------------------------- 1 | router bgp 65001 2 | address-family ipv4 unicast 3 | ! 4 | neighbor-group IBGP 5 | remote-as 65001 6 | update-source Loopback0 7 | address-family ipv4 unicast 8 | route-policy POLICY2 out 9 | ! 10 | ! 11 | neighbor 172.16.255.3 12 | use neighbor-group IBGP 13 | ! 14 | ! 15 | -------------------------------------------------------------------------------- /models/bgp/config/config-basic-ebgp-bgp.txt: -------------------------------------------------------------------------------- 1 | router bgp 65001 2 | address-family ipv4 unicast 3 | ! 4 | neighbor-group EBGP 5 | remote-as 65002 6 | address-family ipv4 unicast 7 | route-policy POLICY3 in 8 | route-policy POLICY1 out 9 | ! 10 | ! 11 | neighbor 192.168.1.1 12 | use neighbor-group EBGP 13 | ! 14 | ! 15 | 16 | -------------------------------------------------------------------------------- /models/bgp/netconf/nc-get-filter-bgp-neighbors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /models/bgp/netconf/nc-get-filter-bgp-peer-groups.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /models/bgp/netconf/nc-get-config-filter-bgp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /models/policy/netconf/nc-get-config-filter-routing-policy.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /models/bgp/netconf/nc-get-config-filter-bgp-global.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /models/bgp/netconf/nc-get-config-filter-bgp-neighbors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /models/bgp/netconf/nc-get-config-filter-bgp-peer-groups.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /models/policy/netconf/nc-get-config-filter-routing-policy-defined-sets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /models/policy/netconf/nc-get-config-filter-routing-policy-policy-definitions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /models/policy/config/config-routing-policy-policy3.txt: -------------------------------------------------------------------------------- 1 | prefix-set PREFIX-SET1 2 | 10.0.0.0/16 ge 24 le 32, 3 | 172.0.0.0/8 ge 16 le 32 4 | end-set 5 | ! 6 | community-set COMMUNITY-SET2 7 | 65172:17001 8 | end-set 9 | ! 10 | route-policy POLICY3 11 | #statement-name prefix-set1 12 | if destination in PREFIX-SET1 then 13 | set local-preference 1000 14 | set community COMMUNITY-SET2 15 | done 16 | endif 17 | #statement-name reject 18 | drop 19 | end-policy 20 | ! 21 | 22 | -------------------------------------------------------------------------------- /models/policy/config/config-routing-policy-policy1.json: -------------------------------------------------------------------------------- 1 | { 2 | "routing-policy:routing-policy": { 3 | "policy-definitions": { 4 | "policy-definition": [ 5 | { 6 | "name": "POLICY1", 7 | "statements": { 8 | "statement": [ 9 | { 10 | "name": "accept route", 11 | "actions": { 12 | "accept-route": [ 13 | null 14 | ] 15 | } 16 | } 17 | ] 18 | } 19 | } 20 | ] 21 | } 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /models/policy/config/config-routing-policy-policy1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | POLICY1 6 | 7 | 8 | accept 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /models/policy/config/config-routing-policy-policy4.json: -------------------------------------------------------------------------------- 1 | { 2 | "routing-policy:routing-policy": { 3 | "policy-definitions": { 4 | "policy-definition": [ 5 | { 6 | "name": "POLICY4", 7 | "statements": { 8 | "statement": [ 9 | { 10 | "name": "next-hop-self", 11 | "actions": { 12 | "bgp-policy:bgp-actions": { 13 | "set-next-hop": "SELF" 14 | }, 15 | "accept-route": [ 16 | null 17 | ] 18 | } 19 | } 20 | ] 21 | } 22 | } 23 | ] 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /models/policy/config/config-routing-policy-policy2.txt: -------------------------------------------------------------------------------- 1 | as-path-set AS-PATH-SET1 2 | ios-regex '^65172' 3 | end-set 4 | ! 5 | community-set COMMUNITY-SET1 6 | ios-regex '^65172:17...$', 7 | 65172:16001 8 | end-set 9 | ! 10 | route-policy POLICY2 11 | #statement-name community-set1 12 | if community matches-every COMMUNITY-SET1 then 13 | done 14 | endif 15 | #statement-name as-path-set1 16 | if as-path in AS-PATH-SET1 then 17 | set local-preference 50 18 | done 19 | endif 20 | #statement-name reject route 21 | drop 22 | end-policy 23 | ! 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2016 cisco Systems Inc. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /models/policy/config/config-routing-policy-policy4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | POLICY4 6 | 7 | 8 | next-hop-self 9 | 10 | 11 | SELF 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Getting Started With OpenConfig in Cisco IOS XR 2 | This repository includes guides to get started with [OpenConfig](http://www.openconfig.net/) models on Cisco IOS XR devices. OpenConfig is a group of network operators that are developing common data models for network configuration and management in cooperation with vendors. Cisco IOS XR started introducing support for OpenConfig models in release 5.3.2. Each model directory in this repository includes a guide to get started using the model, along with configuration and operational examples. You can use NETCONF or [gRPC](http://www.grpc.io/) to use OpenConfig models with a Cisco IOS XR device. 3 | 4 | ## Additional Resources 5 | * [Getting started with gRPC in Cisco IOS XR](https://github.com/CiscoDevNet/grpc-getting-started) 6 | * [Cisco supported YANG models](https://github.com/YangModels/yang/tree/master/vendor/cisco) 7 | -------------------------------------------------------------------------------- /models/policy/netconf/nc-edit-config-routing-policy-policy1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | rollback-on-error 8 | 9 | 10 | 11 | 12 | POLICY1 13 | 14 | 15 | accept 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /models/policy/netconf/nc-edit-config-routing-policy-policy4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | rollback-on-error 8 | 9 | 10 | 11 | 12 | POLICY4 13 | 14 | 15 | next-hop-self 16 | 17 | 18 | SELF 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /models/bgp/config/config-basic-ebgp-bgp.json: -------------------------------------------------------------------------------- 1 | { 2 | "bgp:bgp": { 3 | "global": { 4 | "config": { 5 | "as": 65001 6 | }, 7 | "afi-safis": { 8 | "afi-safi": [ 9 | { 10 | "afi-safi-name": "ipv4-unicast", 11 | "config": { 12 | "afi-safi-name": "ipv4-unicast", 13 | "enabled": true 14 | } 15 | } 16 | ] 17 | } 18 | }, 19 | "peer-groups": { 20 | "peer-group": [ 21 | { 22 | "peer-group-name": "EBGP", 23 | "config": { 24 | "peer-group-name": "EBGP", 25 | "peer-as": 65002 26 | }, 27 | "afi-safis": { 28 | "afi-safi": [ 29 | { 30 | "afi-safi-name": "ipv4-unicast", 31 | "config": { 32 | "afi-safi-name": "ipv4-unicast", 33 | "enabled": true 34 | }, 35 | "apply-policy": { 36 | "config": { 37 | "import-policy": [ 38 | "POLICY3" 39 | ], 40 | "export-policy": [ 41 | "POLICY1" 42 | ] 43 | } 44 | } 45 | } 46 | ] 47 | } 48 | } 49 | ] 50 | }, 51 | "neighbors": { 52 | "neighbor": [ 53 | { 54 | "neighbor-address": "192.168.1.1", 55 | "config": { 56 | "neighbor-address": "192.168.1.1", 57 | "peer-group": "EBGP" 58 | } 59 | } 60 | ] 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /models/bgp/config/config-basic-ibgp-bgp.json: -------------------------------------------------------------------------------- 1 | { 2 | "bgp:bgp": { 3 | "global": { 4 | "config": { 5 | "as": 65001 6 | }, 7 | "afi-safis": { 8 | "afi-safi": [ 9 | { 10 | "afi-safi-name": "ipv4-unicast", 11 | "config": { 12 | "afi-safi-name": "ipv4-unicast", 13 | "enabled": true 14 | } 15 | } 16 | ] 17 | } 18 | }, 19 | "peer-groups": { 20 | "peer-group": [ 21 | { 22 | "peer-group-name": "IBGP", 23 | "config": { 24 | "peer-group-name": "IBGP", 25 | "peer-as": 65001 26 | }, 27 | "transport": { 28 | "config": { 29 | "local-address": "Loopback0" 30 | } 31 | }, 32 | "afi-safis": { 33 | "afi-safi": [ 34 | { 35 | "afi-safi-name": "ipv4-unicast", 36 | "config": { 37 | "afi-safi-name": "ipv4-unicast", 38 | "enabled": true 39 | }, 40 | "apply-policy": { 41 | "config": { 42 | "export-policy": [ 43 | "POLICY2" 44 | ] 45 | } 46 | } 47 | } 48 | ] 49 | } 50 | } 51 | ] 52 | }, 53 | "neighbors": { 54 | "neighbor": [ 55 | { 56 | "neighbor-address": "172.16.255.3", 57 | "config": { 58 | "neighbor-address": "172.16.255.3", 59 | "peer-group": "IBGP" 60 | } 61 | } 62 | ] 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /models/bgp/config/config-basic-ebgp-bgp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 65001 6 | 7 | 8 | 9 | ipv4-unicast 10 | 11 | ipv4-unicast 12 | true 13 | 14 | 15 | 16 | 17 | 18 | 19 | EBGP 20 | 21 | EBGP 22 | 65002 23 | 24 | 25 | 26 | ipv4-unicast 27 | 28 | ipv4-unicast 29 | true 30 | 31 | 32 | 33 | POLICY3 34 | POLICY1 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 192.168.1.1 44 | 45 | 192.168.1.1 46 | EBGP 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /models/bgp/config/config-basic-ibgp-bgp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 65001 6 | 7 | 8 | 9 | ipv4-unicast 10 | 11 | ipv4-unicast 12 | true 13 | 14 | 15 | 16 | 17 | 18 | 19 | IBGP 20 | 21 | IBGP 22 | 65001 23 | 24 | 25 | 26 | Loopback0 27 | 28 | 29 | 30 | 31 | ipv4-unicast 32 | 33 | ipv4-unicast 34 | true 35 | 36 | 37 | 38 | POLICY2 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 172.16.255.3 48 | 49 | 172.16.255.3 50 | IBGP 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /models/policy/config/config-routing-policy-policy3.json: -------------------------------------------------------------------------------- 1 | { 2 | "routing-policy:routing-policy": { 3 | "defined-sets": { 4 | "prefix-sets": { 5 | "prefix-set": [ 6 | { 7 | "prefix-set-name": "PREFIX-SET1", 8 | "prefix": [ 9 | { 10 | "ip-prefix": "10.0.0.0/16", 11 | "masklength-range": "24..32" 12 | }, 13 | { 14 | "ip-prefix": "172.0.0.0/8", 15 | "masklength-range": "16..32" 16 | } 17 | ] 18 | } 19 | ] 20 | }, 21 | "bgp-policy:bgp-defined-sets": { 22 | "community-sets": { 23 | "community-set": [ 24 | { 25 | "community-set-name": "COMMUNITY-SET2", 26 | "community-member": [ 27 | "65172:17001" 28 | ] 29 | } 30 | ] 31 | } 32 | } 33 | }, 34 | "policy-definitions": { 35 | "policy-definition": [ 36 | { 37 | "name": "POLICY3", 38 | "statements": { 39 | "statement": [ 40 | { 41 | "name": "prefix-set1", 42 | "conditions": { 43 | "match-prefix-set": { 44 | "prefix-set": "PREFIX-SET1", 45 | "match-set-options": "ANY" 46 | } 47 | }, 48 | "actions": { 49 | "bgp-policy:bgp-actions": { 50 | "set-local-pref": 1000, 51 | "set-community": { 52 | "community-set-ref": "COMMUNITY-SET2" 53 | } 54 | }, 55 | "accept-route": [ 56 | null 57 | ] 58 | } 59 | }, 60 | { 61 | "name": "reject", 62 | "actions": { 63 | "reject-route": [ 64 | null 65 | ] 66 | } 67 | } 68 | ] 69 | } 70 | } 71 | ] 72 | } 73 | } 74 | } 75 | 76 | -------------------------------------------------------------------------------- /models/policy/config/config-routing-policy-policy2.json: -------------------------------------------------------------------------------- 1 | { 2 | "routing-policy:routing-policy": { 3 | "defined-sets": { 4 | "bgp-policy:bgp-defined-sets": { 5 | "as-path-sets": { 6 | "as-path-set": [ 7 | { 8 | "as-path-set-name": "AS-PATH-SET1", 9 | "as-path-set-member": [ 10 | "^65172" 11 | ] 12 | } 13 | ] 14 | }, 15 | "community-sets": { 16 | "community-set": [ 17 | { 18 | "community-set-name": "COMMUNITY-SET1", 19 | "community-member": [ 20 | "ios-regex '^65172:17...$'", 21 | "65172:16001" 22 | ] 23 | } 24 | ] 25 | } 26 | } 27 | }, 28 | "policy-definitions": { 29 | "policy-definition": [ 30 | { 31 | "name": "POLICY2", 32 | "statements": { 33 | "statement": [ 34 | { 35 | "name": "community-set1", 36 | "conditions": { 37 | "bgp-policy:bgp-conditions": { 38 | "match-community-set": { 39 | "community-set": "COMMUNITY-SET1", 40 | "match-set-options": "ALL" 41 | } 42 | } 43 | }, 44 | "actions": { 45 | "accept-route": [ 46 | null 47 | ] 48 | } 49 | }, 50 | { 51 | "name": "as-path-set1", 52 | "conditions": { 53 | "bgp-policy:bgp-conditions": { 54 | "match-as-path-set": { 55 | "as-path-set": "AS-PATH-SET1", 56 | "match-set-options": "ANY" 57 | } 58 | } 59 | }, 60 | "actions": { 61 | "bgp-policy:bgp-actions": { 62 | "set-local-pref": 50 63 | }, 64 | "accept-route": [ 65 | null 66 | ] 67 | } 68 | }, 69 | { 70 | "name": "reject route", 71 | "actions": { 72 | "reject-route": [ 73 | null 74 | ] 75 | } 76 | } 77 | ] 78 | } 79 | } 80 | ] 81 | } 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /models/policy/config/config-routing-policy-policy3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | PREFIX-SET1 7 | 8 | 10.0.0.0/16 9 | 24..32 10 | 11 | 12 | 172.0.0.0/8 13 | 16..32 14 | 15 | 16 | 17 | 18 | 19 | 20 | COMMUNITY-SET2 21 | 65172:17001 22 | 23 | 24 | 25 | 26 | 27 | 28 | POLICY3 29 | 30 | 31 | prefix-set1 32 | 33 | 34 | PREFIX-SET1 35 | ANY 36 | 37 | 38 | 39 | 40 | 1000 41 | 42 | COMMUNITY-SET2 43 | 44 | 45 | 46 | 47 | 48 | 49 | reject 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /models/bgp/netconf/nc-edit-config-basic-ebgp-bgp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | rollback-on-error 8 | 9 | 10 | 11 | 12 | 65001 13 | 14 | 15 | 16 | ipv4-unicast 17 | 18 | ipv4-unicast 19 | true 20 | 21 | 22 | 23 | 24 | 25 | 26 | EBGP 27 | 28 | EBGP 29 | 65002 30 | 31 | 32 | 33 | ipv4-unicast 34 | 35 | ipv4-unicast 36 | true 37 | 38 | 39 | 40 | POLICY3 41 | POLICY1 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 192.168.1.1 51 | 52 | 192.168.1.1 53 | EBGP 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /models/bgp/netconf/nc-edit-config-basic-ibgp-bgp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | rollback-on-error 8 | 9 | 10 | 11 | 12 | 65001 13 | 14 | 15 | 16 | ipv4-unicast 17 | 18 | ipv4-unicast 19 | true 20 | 21 | 22 | 23 | 24 | 25 | 26 | IBGP 27 | 28 | IBGP 29 | 65001 30 | 31 | 32 | 33 | Loopback0 34 | 35 | 36 | 37 | 38 | ipv4-unicast 39 | 40 | ipv4-unicast 41 | true 42 | 43 | 44 | 45 | POLICY2 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 172.16.255.3 55 | 56 | 172.16.255.3 57 | IBGP 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /models/policy/config/config-routing-policy-policy2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | AS-PATH-SET1 8 | ^65172 9 | 10 | 11 | 12 | 13 | COMMUNITY-SET1 14 | ios-regex '^65172:17...$' 15 | 65172:16001 16 | 17 | 18 | 19 | 20 | 21 | 22 | POLICY2 23 | 24 | 25 | community-set1 26 | 27 | 28 | 29 | COMMUNITY-SET1 30 | ALL 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | as-path-set1 40 | 41 | 42 | 43 | AS-PATH-SET1 44 | ANY 45 | 46 | 47 | 48 | 49 | 50 | 50 51 | 52 | 53 | 54 | 55 | 56 | reject 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /models/policy/netconf/nc-edit-config-routing-policy-policy3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | rollback-on-error 8 | 9 | 10 | 11 | 12 | 13 | PREFIX-SET1 14 | 15 | 10.0.0.0/16 16 | 24..32 17 | 18 | 19 | 10.1.0.0/19 20 | 30..32 21 | 22 | 23 | 24 | 25 | 26 | 27 | COMMUNITY-SET2 28 | 65172:17001 29 | 30 | 31 | 32 | 33 | 34 | 35 | POLICY3 36 | 37 | 38 | prefix-set1 39 | 40 | 41 | PREFIX-SET1 42 | ANY 43 | 44 | 45 | 46 | 47 | 1000 48 | 49 | COMMUNITY-SET2 50 | 51 | 52 | 53 | 54 | 55 | 56 | reject 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /models/bgp/oper/oper-basic-ibgp-bgp.json: -------------------------------------------------------------------------------- 1 | { 2 | "bgp:bgp": { 3 | "global": { 4 | "state": { 5 | "as": 65001, 6 | "total-paths": 2, 7 | "total-prefixes": 2 8 | }, 9 | "afi-safis": { 10 | "afi-safi": [ 11 | { 12 | "afi-safi-name": "ipv4-unicast", 13 | "state": { 14 | "afi-safi-name": "ipv4-unicast", 15 | "enabled": true, 16 | "total-paths": 2, 17 | "total-prefixes": 2 18 | } 19 | } 20 | ] 21 | } 22 | }, 23 | "peer-groups": { 24 | "peer-group": [ 25 | { 26 | "peer-group-name": "IBGP", 27 | "state": { 28 | "peer-group-name": "IBGP", 29 | "peer-as": 65001 30 | }, 31 | "transport": { 32 | "state": { 33 | "local-address": "Loopback0" 34 | } 35 | }, 36 | "afi-safis": { 37 | "afi-safi": [ 38 | { 39 | "afi-safi-name": "ipv4-unicast", 40 | "state": { 41 | "afi-safi-name": "ipv4-unicast", 42 | "enabled": true 43 | }, 44 | "apply-policy": { 45 | "state": { 46 | "export-policy": [ 47 | "POLICY2" 48 | ] 49 | } 50 | } 51 | } 52 | ] 53 | } 54 | } 55 | ] 56 | }, 57 | "neighbors": { 58 | "neighbor": [ 59 | { 60 | "neighbor-address": "172.16.255.3", 61 | "state": { 62 | "neighbor-address": "172.16.255.3", 63 | "peer-group": "IBGP", 64 | "queues": { 65 | "input": 0, 66 | "output": 0 67 | }, 68 | "session-state": "bgp-st-estab", 69 | "supported-capabilities": [ 70 | "MPBGP" 71 | ], 72 | "messages": { 73 | "sent": { 74 | "NOTIFICATION": 0, 75 | "UPDATE": 1 76 | }, 77 | "received": { 78 | "NOTIFICATION": 0, 79 | "UPDATE": 3 80 | } 81 | } 82 | }, 83 | "transport": { 84 | "state": { 85 | "local-port": 21344, 86 | "remote-address": "172.16.255.3", 87 | "remote-port": 179 88 | } 89 | }, 90 | "timers": { 91 | "state": { 92 | "negotiated-hold-time": 180 93 | } 94 | }, 95 | "afi-safis": { 96 | "afi-safi": [ 97 | { 98 | "afi-safi-name": "ipv4-unicast", 99 | "state": { 100 | "active": true, 101 | "prefixes": { 102 | "received": 2, 103 | "sent": 0 104 | } 105 | } 106 | } 107 | ] 108 | }, 109 | "graceful-restart": { 110 | "state": { 111 | "peer-restart-time": 120 112 | } 113 | } 114 | } 115 | ] 116 | } 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /models/policy/netconf/nc-edit-config-routing-policy-policy2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | rollback-on-error 8 | 9 | 10 | 11 | 12 | 13 | 14 | AS-PATH-SET1 15 | ^65172 16 | 17 | 18 | 19 | 20 | COMMUNITY-SET1 21 | ios-regex '^65172:17...$' 22 | 65172:16001 23 | 24 | 25 | 26 | 27 | 28 | 29 | POLICY2 30 | 31 | 32 | community-set1 33 | 34 | 35 | 36 | COMMUNITY-SET1 37 | ALL 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | as-path-set1 47 | 48 | 49 | 50 | AS-PATH-SET1 51 | ANY 52 | 53 | 54 | 55 | 56 | 57 | 50 58 | 59 | 60 | 61 | 62 | 63 | reject 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /models/bgp/oper/oper-config-basic-ibgp-bgp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 65001 6 | 7 | 8 | 65001 9 | 2 10 | 2 11 | 12 | 13 | 14 | ipv4-unicast 15 | 16 | ipv4-unicast 17 | true 18 | 19 | 20 | ipv4-unicast 21 | true 22 | 2 23 | 2 24 | 25 | 26 | 27 | 28 | 29 | 30 | IBGP 31 | 32 | IBGP 33 | 65001 34 | 35 | 36 | IBGP 37 | 65001 38 | 39 | 40 | 41 | Loopback0 42 | 43 | 44 | Loopback0 45 | 46 | 47 | 48 | 49 | ipv4-unicast 50 | 51 | ipv4-unicast 52 | true 53 | 54 | 55 | ipv4-unicast 56 | true 57 | 58 | 59 | 60 | POLICY2 61 | 62 | 63 | POLICY2 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 172.16.255.3 73 | 74 | 172.16.255.3 75 | IBGP 76 | 77 | 78 | 172.16.255.3 79 | IBGP 80 | 81 | 0 82 | 0 83 | 84 | bgp-st-estab 85 | MPBGP 86 | 87 | 88 | 0 89 | 1 90 | 91 | 92 | 0 93 | 3 94 | 95 | 96 | 97 | 98 | 99 | 21344 100 | 172.16.255.3 101 | 179 102 | 103 | 104 | 105 | 106 | 180 107 | 108 | 109 | 110 | 111 | ipv4-unicast 112 | 113 | true 114 | 115 | 2 116 | 0 117 | 118 | 119 | 120 | 121 | 122 | 123 | 120 124 | 125 | 126 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /models/policy/tree/routing-policy-2015-05-15-cisco-xr-devs-tree.txt: -------------------------------------------------------------------------------- 1 | module: routing-policy 2 | +--rw routing-policy 3 | +--rw defined-sets 4 | | +--rw prefix-sets 5 | | | +--rw prefix-set* [prefix-set-name] 6 | | | +--rw prefix-set-name string 7 | | | +--rw prefix* [ip-prefix masklength-range] 8 | | | +--rw ip-prefix inet:ip-prefix 9 | | | +--rw masklength-range string 10 | | +--rw tag-sets 11 | | | +--rw tag-set* [tag-set-name] 12 | | | +--rw tag-set-name string 13 | | | +--rw tag* [value] 14 | | | +--rw value pt:tag-type 15 | | +--rw bgp-pol:bgp-defined-sets 16 | | +--rw bgp-pol:community-sets 17 | | | +--rw bgp-pol:community-set* [community-set-name] 18 | | | +--rw bgp-pol:community-set-name string 19 | | | +--rw bgp-pol:community-member* union 20 | | +--rw bgp-pol:ext-community-sets 21 | | +--rw bgp-pol:as-path-sets 22 | | +--rw bgp-pol:as-path-set* [as-path-set-name] 23 | | +--rw bgp-pol:as-path-set-name string 24 | | +--rw bgp-pol:as-path-set-member* string 25 | +--rw policy-definitions 26 | +--rw policy-definition* [name] 27 | +--rw name string 28 | +--rw statements 29 | +--rw statement* [name] 30 | +--rw name string 31 | +--rw conditions 32 | | +--rw call-policy? -> /routing-policy/policy-definitions/policy-definition/name 33 | | +--rw match-prefix-set! 34 | | | +--rw prefix-set? -> /routing-policy/defined-sets/prefix-sets/prefix-set/prefix-set-name 35 | | | +--rw match-set-options? pt:match-set-options-restricted-type 36 | | +--rw match-tag-set! 37 | | | +--rw tag-set? -> /routing-policy/defined-sets/tag-sets/tag-set/tag-set-name 38 | | | +--rw match-set-options? pt:match-set-options-restricted-type 39 | | +--rw install-protocol-eq? identityref 40 | | +--rw bgp-pol:bgp-conditions 41 | | +--rw bgp-pol:match-community-set! 42 | | | +--rw bgp-pol:community-set? -> /rpol:routing-policy/defined-sets/bgp-pol:bgp-defined-sets/community-sets/community-set/community-set-name 43 | | | +--rw bgp-pol:match-set-options? pt:match-set-options-type 44 | | +--rw bgp-pol:match-as-path-set! 45 | | | +--rw bgp-pol:as-path-set? -> /rpol:routing-policy/defined-sets/bgp-pol:bgp-defined-sets/as-path-sets/as-path-set/as-path-set-name 46 | | | +--rw bgp-pol:match-set-options? pt:match-set-options-type 47 | | +--rw bgp-pol:med-eq? uint32 48 | | +--rw bgp-pol:origin-eq? bgp-types:bgp-origin-attr-type 49 | | +--rw bgp-pol:next-hop-in* inet:ip-address 50 | | +--rw bgp-pol:local-pref-eq? uint32 51 | | +--rw bgp-pol:as-path-length! 52 | | +--rw bgp-pol:operator? identityref 53 | | +--rw bgp-pol:value? uint32 54 | +--rw actions 55 | +--rw (route-disposition)? 56 | | +--:(accept-route) 57 | | | +--rw accept-route? empty 58 | | +--:(reject-route) 59 | | +--rw reject-route? empty 60 | +--rw bgp-pol:bgp-actions 61 | +--rw bgp-pol:set-as-path-prepend! 62 | | +--rw bgp-pol:repeat-n? uint8 63 | +--rw bgp-pol:set-community! 64 | | +--rw (set-community-method)? 65 | | | +--:(inline) 66 | | | | +--rw bgp-pol:communities* union 67 | | | +--:(reference) 68 | | | +--rw bgp-pol:community-set-ref? -> /rpol:routing-policy/defined-sets/bgp-pol:bgp-defined-sets/community-sets/community-set/community-set-name 69 | | +--rw bgp-pol:options? bgp-set-community-option-type 70 | +--rw bgp-pol:set-route-origin? bgp-types:bgp-origin-attr-type 71 | +--rw bgp-pol:set-local-pref? uint32 72 | +--rw bgp-pol:set-next-hop? bgp-next-hop-type 73 | +--rw bgp-pol:set-med? bgp-set-med-type 74 | -------------------------------------------------------------------------------- /models/policy/README.md: -------------------------------------------------------------------------------- 1 | # Getting Started With OpenConfig Routing Policy in Cisco IOS XR 2 | The OpenConfig routing policy (OC-RPOL) model is an alternative to configure and operate routing policy in recent Cisco IOS XR releases. This model provides coverage for a subset of the routing policy functionality in Cisco IOS XR. Configuration outside its scope can be implemented using the native XR models or using the CLI. Similarly, some portions of the OC-RPOL model are not supported in Cisco IOS XR. Those gaps are documented as model deviations. The model is closely related to the OpenConfig BGP (OC-BGP) model which can be used to manage the BGP protocol on Cisco IOS XR. While the OC-RPOL and the OC-BGP models are expected to be used simultaneously in most cases, it is possible to configure routing policies and BGP using different models (OpenConfig or native models). 3 | 4 | ## Files Accompanying This Document 5 | ``` 6 | config/ - Configuration examples (JSON and XML) 7 | oper/ - Examples of operational data (JSON and XML) 8 | filters/ - Examples of model filters 9 | netconf/ - Examples of NETCONF RPCs using this model 10 | tree/ - Tree representation of the model after deviations 11 | ``` 12 | 13 | ## Model Support 14 | Initial support for the OC-RPOL model was introduced in release 5.3.2. The examples in this document use the extended model support introduced in release 6.0.0 which is based on model revision 2015-05-15. These are the modules supported: 15 | ``` 16 | policy-types.yang 17 | routing-policy.yang 18 | ``` 19 | The portions of the OC-RPOL model that are not supported are documented in the following deviations: 20 | ``` 21 | cisco-xr-routing-policy-deviations.yang 22 | ``` 23 | The entire list of models supported in IOS XR is available in the [GitHub repository](https://github.com/YangModels/yang/tree/master/vendor/cisco). The model files can also be retrieved from a Cisco IOS XR device using the NETCONF get-schema operation. 24 | 25 | The tree representations of the OC-RPOL models after applying the Cisco IOS XR deviations can be found at: 26 | ``` 27 | tree/routing-policy-2015-05-15-cisco-xr-devs-tree.txt 28 | ``` 29 | 30 | ## Data Examples in this Guide 31 | All examples in this guide are presented in JSON and XML format. As of release 6.0.0, YANG models can be exercised using NETCONF and gRPC. You can use JSON examples with a gRPC client and the XML examples with a NETCONF client. The configuration examples in this guide are applied in the [OC-BGP guide](../bgp). 32 | 33 | --- 34 | ## Filtering OC-RPOL Data 35 | You can specify filters when retrieving configuration and operational data. An empty filter may be used when retrieving configuration. It results on data for all device models (Openconfig and non-OpenConfig) being retrieved. An empty filter is rejected when retrieving operational data. 36 | 37 | The OC-RPOL model has two top-level components: `defined-sets` and `policy-definitions`. The most general filter you can define includes the entire data tree for the model (both set and policy definitions): 38 | 39 | XML 40 | ```xml 41 | 42 | ``` 43 | JSON 44 | ```json 45 | { 46 | "routing-policy:routing-policy": [ 47 | null 48 | ] 49 | } 50 | ``` 51 | The following filter retrieves all OC-RPOL data for `defined-sets`: 52 | 53 | XML 54 | ```xml 55 | 56 | 57 | 58 | ``` 59 | JSON 60 | ```json 61 | { 62 | "routing-policy:routing-policy": { 63 | "defined-sets": [ 64 | null 65 | ] 66 | } 67 | } 68 | ``` 69 | Similarly, the following model path retrieves all OC-RPOL data for `policy-definitions`: 70 | 71 | XML 72 | ```xml 73 | 74 | 75 | 76 | ``` 77 | JSON 78 | ```json 79 | { 80 | "routing-policy:routing-policy": { 81 | "policy-definitions": [ 82 | null 83 | ] 84 | } 85 | } 86 | ``` 87 | 88 | --- 89 | ## Getting Started with OC-RPOL Configuration 90 | The OC-RPOL model specifies set and policy definitions. Set definitions may include prefix, neighbor, tag or AS-path sets. Policy definitions specify a list of policies where each policy contains a list of statement with optional conditions and a mandatory action. The following configuration example defines a routing policy that accepts all prefixes: 91 | 92 | XML 93 | ```xml 94 | 95 | 96 | 97 | 98 | POLICY1 99 | 100 | 101 | accept 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | ``` 111 | JSON 112 | ```json 113 | { 114 | "routing-policy:routing-policy": { 115 | "policy-definitions": { 116 | "policy-definition": [ 117 | { 118 | "name": "POLICY1", 119 | "statements": { 120 | "statement": [ 121 | { 122 | "name": "accept route", 123 | "actions": { 124 | "accept-route": [ 125 | null 126 | ] 127 | } 128 | } 129 | ] 130 | } 131 | } 132 | ] 133 | } 134 | } 135 | } 136 | ``` 137 | The OC-RPOL configuration above results in the following CLI configuration: 138 | ``` 139 | route-policy POLICY1 140 | #statement-name accept route 141 | done 142 | end-policy 143 | ! 144 | ``` 145 | The following configuration example defines an AS-path set, a community set and a policy. The latter accepts the prefixes matching the community set or the AS-path set. All other prefixes are dropped. The prefixes matching the AS-path also have their BGP local preference set to a value of 50: 146 | 147 | XML 148 | ```xml 149 | 150 | 151 | 152 | 153 | 154 | 155 | AS-PATH-SET1 156 | ^65172 157 | 158 | 159 | 160 | 161 | COMMUNITY-SET1 162 | ios-regex '^65172:17...$' 163 | 65172:16001 164 | 165 | 166 | 167 | 168 | 169 | 170 | POLICY2 171 | 172 | 173 | community-set1 174 | 175 | 176 | 177 | COMMUNITY-SET1 178 | ALL 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | as-path-set1 188 | 189 | 190 | 191 | AS-PATH-SET1 192 | ANY 193 | 194 | 195 | 196 | 197 | 198 | 50 199 | 200 | 201 | 202 | 203 | 204 | reject 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | ``` 214 | JSON 215 | ```json 216 | { 217 | "routing-policy:routing-policy": { 218 | "defined-sets": { 219 | "bgp-policy:bgp-defined-sets": { 220 | "as-path-sets": { 221 | "as-path-set": [ 222 | { 223 | "as-path-set-name": "AS-PATH-SET1", 224 | "as-path-set-member": [ 225 | "^65172" 226 | ] 227 | } 228 | ] 229 | }, 230 | "community-sets": { 231 | "community-set": [ 232 | { 233 | "community-set-name": "COMMUNITY-SET1", 234 | "community-member": [ 235 | "ios-regex '^65172:17...$'", 236 | "65172:16001" 237 | ] 238 | } 239 | ] 240 | } 241 | } 242 | }, 243 | "policy-definitions": { 244 | "policy-definition": [ 245 | { 246 | "name": "POLICY2", 247 | "statements": { 248 | "statement": [ 249 | { 250 | "name": "community-set1", 251 | "conditions": { 252 | "bgp-policy:bgp-conditions": { 253 | "match-community-set": { 254 | "community-set": "COMMUNITY-SET1", 255 | "match-set-options": "ALL" 256 | } 257 | } 258 | }, 259 | "actions": { 260 | "accept-route": [ 261 | null 262 | ] 263 | } 264 | }, 265 | { 266 | "name": "as-path-set1", 267 | "conditions": { 268 | "bgp-policy:bgp-conditions": { 269 | "match-as-path-set": { 270 | "as-path-set": "AS-PATH-SET1", 271 | "match-set-options": "ANY" 272 | } 273 | } 274 | }, 275 | "actions": { 276 | "bgp-policy:bgp-actions": { 277 | "set-local-pref": 50 278 | }, 279 | "accept-route": [ 280 | null 281 | ] 282 | } 283 | }, 284 | { 285 | "name": "reject route", 286 | "actions": { 287 | "reject-route": [ 288 | null 289 | ] 290 | } 291 | } 292 | ] 293 | } 294 | } 295 | ] 296 | } 297 | } 298 | } 299 | ``` 300 | The previous OC-RPOL configuration results in the following CLI configuration: 301 | ``` 302 | as-path-set AS-PATH-SET1 303 | ios-regex '^65172' 304 | end-set 305 | ! 306 | community-set COMMUNITY-SET1 307 | ios-regex '^65172:17...$', 308 | 65172:16001 309 | end-set 310 | ! 311 | route-policy POLICY2 312 | #statement-name community-set1 313 | if community matches-every COMMUNITY-SET1 then 314 | done 315 | endif 316 | #statement-name as-path-set1 317 | if as-path in AS-PATH-SET1 then 318 | set local-preference 50 319 | done 320 | endif 321 | #statement-name reject route 322 | drop 323 | end-policy 324 | ! 325 | ``` 326 | The following configuration example defines a prefix set, a community set and a policy. The latter accepts the prefixes matching the prefix set and drops all other prefixes. The prefixes matching the prefix set also have their BGP local preference and a community set: 327 | 328 | XML 329 | ```xml 330 | 331 | 332 | 333 | 334 | 335 | PREFIX-SET1 336 | 337 | 10.0.0.0/16 338 | 24..32 339 | 340 | 341 | 172.0.0.0/8 342 | 16..32 343 | 344 | 345 | 346 | 347 | 348 | 349 | COMMUNITY-SET2 350 | 65172:17001 351 | 352 | 353 | 354 | 355 | 356 | 357 | POLICY3 358 | 359 | 360 | prefix-set1 361 | 362 | 363 | PREFIX-SET1 364 | ANY 365 | 366 | 367 | 368 | 369 | 1000 370 | 371 | COMMUNITY-SET2 372 | 373 | 374 | 375 | 376 | 377 | 378 | reject 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | ``` 388 | JSON 389 | ```json 390 | { 391 | "routing-policy:routing-policy": { 392 | "defined-sets": { 393 | "prefix-sets": { 394 | "prefix-set": [ 395 | { 396 | "prefix-set-name": "PREFIX-SET1", 397 | "prefix": [ 398 | { 399 | "ip-prefix": "10.0.0.0/16", 400 | "masklength-range": "24..32" 401 | }, 402 | { 403 | "ip-prefix": "10.1.0.0/19", 404 | "masklength-range": "30..32" 405 | } 406 | ] 407 | } 408 | ] 409 | }, 410 | "bgp-policy:bgp-defined-sets": { 411 | "community-sets": { 412 | "community-set": [ 413 | { 414 | "community-set-name": "COMMUNITY-SET2", 415 | "community-member": [ 416 | "65172:17001" 417 | ] 418 | } 419 | ] 420 | } 421 | } 422 | }, 423 | "policy-definitions": { 424 | "policy-definition": [ 425 | { 426 | "name": "POLICY3", 427 | "statements": { 428 | "statement": [ 429 | { 430 | "name": "prefix-set1", 431 | "conditions": { 432 | "match-prefix-set": { 433 | "prefix-set": "PREFIX-SET1", 434 | "match-set-options": "ANY" 435 | } 436 | }, 437 | "actions": { 438 | "bgp-policy:bgp-actions": { 439 | "set-local-pref": 1000, 440 | "set-community": { 441 | "community-set-ref": "COMMUNITY-SET2" 442 | } 443 | }, 444 | "accept-route": [ 445 | null 446 | ] 447 | } 448 | }, 449 | { 450 | "name": "reject", 451 | "actions": { 452 | "reject-route": [ 453 | null 454 | ] 455 | } 456 | } 457 | ] 458 | } 459 | } 460 | ] 461 | } 462 | } 463 | } 464 | ``` 465 | The OC-RPOL configuration above results in the following CLI configuration: 466 | ``` 467 | prefix-set PREFIX-SET1 468 | 10.0.0.0/16 ge 24 le 32, 469 | 172.0.0.0/8 ge 16 le 32 470 | end-set 471 | ! 472 | community-set COMMUNITY-SET2 473 | 65172:17001 474 | end-set 475 | ! 476 | route-policy POLICY3 477 | #statement-name prefix-set1 478 | if destination in PREFIX-SET1 then 479 | set local-preference 1000 480 | set community COMMUNITY-SET2 481 | done 482 | endif 483 | #statement-name reject 484 | drop 485 | end-policy 486 | ! 487 | ``` 488 | 489 | ### Caveats 490 | * When a route policy is defined or modified via the OC-RPOL model, the entire policy must be specified. 491 | * The BGP implementation in Cisco IOS XR only accepts a single policy at a given attachment point. If a configuration specifies a list of policies, the last entry in the list is applied and the other policies are ignored. In order to apply multiple policies, the configuration must use a parent policy that groups the other policies. That parent policy can then be attached at the desired attachment point. 492 | * OpenConfig models are not compatible with FlexCLI (apply groups). 493 | 494 | --- 495 | -------------------------------------------------------------------------------- /models/bgp/README.md: -------------------------------------------------------------------------------- 1 | # Getting Started With OpenConfig BGP in Cisco IOS XR 2 | The OpenConfig BGP (OC-BGP) model is an alternative to configure and operate BGP in recent Cisco IOS XR releases. This model provides coverage for a subset of the BGP functionality in Cisco IOS XR. Configuration outside its scope can be implemented using the native XR models or using the CLI. Similarly, some portions of the OC-BGP model are not supported in Cisco IOS XR. Those gaps are documented as model deviations. The OC-BGP model is closely related to the OpenConfig routing policy (OC-RPOL). The latter model can be used to implement the policy component of the BGP protocol. While the OC-BGP and the OC-RPOL models are expected to be used simultaneously in most cases, it is possible to configure BGP and routing policies and using different models (OpenConfig or native models). 3 | 4 | ## Files Accompanying This Document 5 | ``` 6 | config/ - Configuration examples (JSON and XML) 7 | oper/ - Examples of operational data (JSON and XML) 8 | filters/ - Examples of model filters 9 | netconf/ - Examples of NETCONF RPCs using this model 10 | tree/ - Tree representation of the model after deviations 11 | ``` 12 | 13 | ## Model Support 14 | Initial support for the OC-BGP model was introduced in release 5.3.2. The examples in this document use the extended model support introduced in release 6.0.0 which is based on model revision 2015-05-15. These are the modules supported: 15 | ``` 16 | bgp-multiprotocol.yang 17 | bgp-operational.yang 18 | bgp-policy.yang 19 | bgp-types.yang 20 | bgp.yang 21 | ``` 22 | The portions of the OC-BGP model that are not supported are documented in the following deviations: 23 | ``` 24 | cisco-xr-bgp-deviations.yang 25 | cisco-xr-bgp-policy-deviations.yang 26 | ``` 27 | The entire list of models supported in IOS XR is available in the [GitHub repository](https://github.com/YangModels/yang/tree/master/vendor/cisco). The model files can also be retrieved from a Cisco IOS XR device using the NETCONF get-schema operation. 28 | 29 | The tree representations of the OC-BGP models after applying the Cisco IOS XR deviations can be found at: 30 | ``` 31 | tree/bgp-2015-05-15-cisco-xr-devs-tree.txt 32 | ``` 33 | 34 | ## Data Examples in this Guide 35 | All examples in this guide are presented in JSON and XML format. As of release 6.0.0, YANG models can be exercised using NETCONF and gRPC. You can use JSON examples with a gRPC client and the XML examples with a NETCONF client. The configuration examples in this guide use the policy examples in the [OC-RPOL guide](../policy). 36 | 37 | --- 38 | ## Filtering OC-BGP Data 39 | You can specify filters when retrieving configuration and operational data. The OC-BGP model defines both configuration and operational (state) data. Therefore, the type of data retrieved when using a filter depends on the operation invoked. An empty filter may be used when retrieving configuration. It results on configuration data for all device models (Openconfig and non-OpenConfig) being retrieved. An empty filter is rejected when retrieving operational data. 40 | 41 | The OC-BGP model has three top-level components: `global`, `peer-groups` and `neighbors`. The most general filter you can define includes the entire data tree for the model (all three top-level components): 42 | 43 | XML 44 | ```xml 45 | 46 | ``` 47 | JSON 48 | ```json 49 | { 50 | "bgp:bgp": [ 51 | null 52 | ] 53 | } 54 | ``` 55 | The following filter retrieves all OC-BGP `global` data: 56 | 57 | XML 58 | ```xml 59 | 60 | 61 | 62 | ``` 63 | JSON 64 | ```json 65 | { 66 | "bgp:bgp": { 67 | "global": [ 68 | null 69 | ] 70 | } 71 | } 72 | ``` 73 | Similarly, the following filter retrieves all OC-BGP data for `neighbors`: 74 | 75 | XML 76 | ```xml 77 | 78 | 79 | 80 | ``` 81 | JSON 82 | ```json 83 | { 84 | "bgp:bgp": { 85 | "neighbors": [ 86 | null 87 | ] 88 | } 89 | } 90 | ``` 91 | Finally, the following filter retrieves all OC-BGP data for `peer-groups`: 92 | 93 | XML 94 | ```xml 95 | 96 | 97 | 98 | ``` 99 | JSON 100 | ```json 101 | { 102 | "bgp:bgp": { 103 | "peer-groups": [ 104 | null 105 | ] 106 | } 107 | } 108 | ``` 109 | 110 | --- 111 | ## Getting Started with OC-BGP Configuration 112 | ### Basic iBGP configuration 113 | The following configuration example defines an IBGP peer group and associates that group with a BGP neighbor. The group enables IPv4 routing, sets the address of interface Loopback0 as the source address and applies an output policy: 114 | 115 | XML 116 | ```xml 117 | 118 | 119 | 120 | 121 | 65001 122 | 123 | 124 | 125 | ipv4-unicast 126 | 127 | ipv4-unicast 128 | true 129 | 130 | 131 | 132 | 133 | 134 | 135 | IBGP 136 | 137 | IBGP 138 | 65001 139 | 140 | 141 | 142 | Loopback0 143 | 144 | 145 | 146 | 147 | ipv4-unicast 148 | 149 | ipv4-unicast 150 | true 151 | 152 | 153 | 154 | POLICY2 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 172.16.255.3 164 | 165 | 172.16.255.3 166 | IBGP 167 | 168 | 169 | 170 | 171 | ``` 172 | JSON 173 | ```json 174 | { 175 | "bgp:bgp": { 176 | "global": { 177 | "config": { 178 | "as": 65001 179 | }, 180 | "afi-safis": { 181 | "afi-safi": [ 182 | { 183 | "afi-safi-name": "ipv4-unicast", 184 | "config": { 185 | "afi-safi-name": "ipv4-unicast", 186 | "enabled": true 187 | } 188 | } 189 | ] 190 | } 191 | }, 192 | "peer-groups": { 193 | "peer-group": [ 194 | { 195 | "peer-group-name": "IBGP", 196 | "config": { 197 | "peer-group-name": "IBGP", 198 | "peer-as": 65001 199 | }, 200 | "transport": { 201 | "config": { 202 | "local-address": "Loopback0" 203 | } 204 | }, 205 | "afi-safis": { 206 | "afi-safi": [ 207 | { 208 | "afi-safi-name": "ipv4-unicast", 209 | "config": { 210 | "afi-safi-name": "ipv4-unicast", 211 | "enabled": true 212 | }, 213 | "apply-policy": { 214 | "config": { 215 | "export-policy": [ 216 | "POLICY2" 217 | ] 218 | } 219 | } 220 | } 221 | ] 222 | } 223 | } 224 | ] 225 | }, 226 | "neighbors": { 227 | "neighbor": [ 228 | { 229 | "neighbor-address": "172.16.255.3", 230 | "config": { 231 | "neighbor-address": "172.16.255.3", 232 | "peer-group": "IBGP" 233 | } 234 | } 235 | ] 236 | } 237 | } 238 | } 239 | ``` 240 | The previous OC-BGP configuration results in the following CLI configuration: 241 | ``` 242 | router bgp 65001 243 | address-family ipv4 unicast 244 | ! 245 | neighbor-group IBGP 246 | remote-as 65001 247 | update-source Loopback0 248 | address-family ipv4 unicast 249 | route-policy POLICY2 out 250 | ! 251 | ! 252 | neighbor 172.16.255.3 253 | use neighbor-group IBGP 254 | ! 255 | ! 256 | ``` 257 | 258 | In this particular case, the session is established with the iBGP neighbor and two prefixes are received. The following sample output illustrates the entire operational state associated with this particular iBGP neighbor. Note that the XML output includes configuration data while the JSON output does not. The difference in behavior is the result of the difference in semantics between the NETCONF GET RPC and the GET-OPER RPC in Cisco IDL for gRPC: 259 | 260 | XML 261 | ```xml 262 | 263 | 264 | 265 | 266 | 65001 267 | 268 | 269 | 65001 270 | 2 271 | 2 272 | 273 | 274 | 275 | ipv4-unicast 276 | 277 | ipv4-unicast 278 | true 279 | 280 | 281 | ipv4-unicast 282 | true 283 | 2 284 | 2 285 | 286 | 287 | 288 | 289 | 290 | 291 | IBGP 292 | 293 | IBGP 294 | 65001 295 | 296 | 297 | IBGP 298 | 65001 299 | 300 | 301 | 302 | Loopback0 303 | 304 | 305 | Loopback0 306 | 307 | 308 | 309 | 310 | ipv4-unicast 311 | 312 | ipv4-unicast 313 | true 314 | 315 | 316 | ipv4-unicast 317 | true 318 | 319 | 320 | 321 | POLICY2 322 | 323 | 324 | POLICY2 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 172.16.255.3 334 | 335 | 172.16.255.3 336 | IBGP 337 | 338 | 339 | 172.16.255.3 340 | IBGP 341 | 342 | 0 343 | 0 344 | 345 | bgp-st-estab 346 | MPBGP 347 | 348 | 349 | 0 350 | 1 351 | 352 | 353 | 0 354 | 3 355 | 356 | 357 | 358 | 359 | 360 | 21344 361 | 172.16.255.3 362 | 179 363 | 364 | 365 | 366 | 367 | 180 368 | 369 | 370 | 371 | 372 | ipv4-unicast 373 | 374 | true 375 | 376 | 2 377 | 0 378 | 379 | 380 | 381 | 382 | 383 | 384 | 120 385 | 386 | 387 | 388 | 389 | 390 | ``` 391 | JSON 392 | ```json 393 | { 394 | "bgp:bgp": { 395 | "global": { 396 | "state": { 397 | "as": 65001, 398 | "total-paths": 2, 399 | "total-prefixes": 2 400 | }, 401 | "afi-safis": { 402 | "afi-safi": [ 403 | { 404 | "afi-safi-name": "ipv4-unicast", 405 | "state": { 406 | "afi-safi-name": "ipv4-unicast", 407 | "enabled": true, 408 | "total-paths": 2, 409 | "total-prefixes": 2 410 | } 411 | } 412 | ] 413 | } 414 | }, 415 | "peer-groups": { 416 | "peer-group": [ 417 | { 418 | "peer-group-name": "IBGP", 419 | "state": { 420 | "peer-group-name": "IBGP", 421 | "peer-as": 65001 422 | }, 423 | "transport": { 424 | "state": { 425 | "local-address": "Loopback0" 426 | } 427 | }, 428 | "afi-safis": { 429 | "afi-safi": [ 430 | { 431 | "afi-safi-name": "ipv4-unicast", 432 | "state": { 433 | "afi-safi-name": "ipv4-unicast", 434 | "enabled": true 435 | }, 436 | "apply-policy": { 437 | "state": { 438 | "export-policy": [ 439 | "POLICY2" 440 | ] 441 | } 442 | } 443 | } 444 | ] 445 | } 446 | } 447 | ] 448 | }, 449 | "neighbors": { 450 | "neighbor": [ 451 | { 452 | "neighbor-address": "172.16.255.3", 453 | "state": { 454 | "neighbor-address": "172.16.255.3", 455 | "peer-group": "IBGP", 456 | "queues": { 457 | "input": 0, 458 | "output": 0 459 | }, 460 | "session-state": "bgp-st-estab", 461 | "supported-capabilities": [ 462 | "MPBGP" 463 | ], 464 | "messages": { 465 | "sent": { 466 | "NOTIFICATION": 0, 467 | "UPDATE": 1 468 | }, 469 | "received": { 470 | "NOTIFICATION": 0, 471 | "UPDATE": 3 472 | } 473 | } 474 | }, 475 | "transport": { 476 | "state": { 477 | "local-port": 21344, 478 | "remote-address": "172.16.255.3", 479 | "remote-port": 179 480 | } 481 | }, 482 | "timers": { 483 | "state": { 484 | "negotiated-hold-time": 180 485 | } 486 | }, 487 | "afi-safis": { 488 | "afi-safi": [ 489 | { 490 | "afi-safi-name": "ipv4-unicast", 491 | "state": { 492 | "active": true, 493 | "prefixes": { 494 | "received": 2, 495 | "sent": 0 496 | } 497 | } 498 | } 499 | ] 500 | }, 501 | "graceful-restart": { 502 | "state": { 503 | "peer-restart-time": 120 504 | } 505 | } 506 | } 507 | ] 508 | } 509 | } 510 | } 511 | ``` 512 | ### Basic eBGP Configuration 513 | The following configuration example defines an EBGP peer group and associates that group with a BGP neighbor. The group enables IPv4 routing and applies a routing policy in both directions: 514 | 515 | XML 516 | ```xml 517 | 518 | 519 | 520 | 521 | 65001 522 | 523 | 524 | 525 | ipv4-unicast 526 | 527 | ipv4-unicast 528 | true 529 | 530 | 531 | 532 | 533 | 534 | 535 | EBGP 536 | 537 | EBGP 538 | 65002 539 | 540 | 541 | 542 | ipv4-unicast 543 | 544 | ipv4-unicast 545 | true 546 | 547 | 548 | 549 | POLICY3 550 | POLICY1 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 192.168.1.1 560 | 561 | 192.168.1.1 562 | EBGP 563 | 564 | 565 | 566 | 567 | ``` 568 | JSON 569 | ```json 570 | { 571 | "bgp:bgp": { 572 | "global": { 573 | "config": { 574 | "as": 65001 575 | }, 576 | "afi-safis": { 577 | "afi-safi": [ 578 | { 579 | "afi-safi-name": "ipv4-unicast", 580 | "config": { 581 | "afi-safi-name": "ipv4-unicast", 582 | "enabled": true 583 | } 584 | } 585 | ] 586 | } 587 | }, 588 | "peer-groups": { 589 | "peer-group": [ 590 | { 591 | "peer-group-name": "EBGP", 592 | "config": { 593 | "peer-group-name": "EBGP", 594 | "peer-as": 65002 595 | }, 596 | "afi-safis": { 597 | "afi-safi": [ 598 | { 599 | "afi-safi-name": "ipv4-unicast", 600 | "config": { 601 | "afi-safi-name": "ipv4-unicast", 602 | "enabled": true 603 | }, 604 | "apply-policy": { 605 | "config": { 606 | "import-policy": [ 607 | "POLICY3" 608 | ], 609 | "export-policy": [ 610 | "POLICY1" 611 | ] 612 | } 613 | } 614 | } 615 | ] 616 | } 617 | } 618 | ] 619 | }, 620 | "neighbors": { 621 | "neighbor": [ 622 | { 623 | "neighbor-address": "192.168.1.1", 624 | "config": { 625 | "neighbor-address": "192.168.1.1", 626 | "peer-group": "EBGP" 627 | } 628 | } 629 | ] 630 | } 631 | } 632 | } 633 | ``` 634 | The OC-BGP configuration above results in the following CLI configuration: 635 | ``` 636 | router bgp 65001 637 | address-family ipv4 unicast 638 | ! 639 | neighbor-group EBGP 640 | remote-as 65002 641 | address-family ipv4 unicast 642 | route-policy POLICY3 in 643 | route-policy POLICY1 out 644 | ! 645 | ! 646 | neighbor 192.168.1.1 647 | use neighbor-group EBGP 648 | ! 649 | ! 650 | ``` 651 | ## Configuring BGP Functionality Outside OC-BGP 652 | Some of the BGP functionality in Cisco IOS XR is not configurable using OC-BGP. This situation can occur because the OC-BGP model does not define the functionality, defines it at a different granularity and cannot be mapped, or defines it using a completely different configuration approach (e.g. a routing policy). In these cases, the functionality can be configured using native models or the CLI. The same two mechanism are available for any BGP operational data not included in the OC-BGP model. The CLI commands and their data can be exchanged using gRPC or the interactive command line interpreter. 653 | 654 | As an example, granular control for the storage of received BGP updates cannot be configured in Cisco IOS XR using the OC-BGP model. Such control allows users to configure different behaviors depending on the capability of the neighbor to refresh routes and the user preference for memory consumption. The following CLI enables the local storage of updates received from a neighbor regardless of its capability to refresh routes: 655 | ``` 656 | router bgp 65001 657 | neighbor-group IBGP 658 | address-family ipv4 unicast 659 | soft-reconfiguration inbound always 660 | ! 661 | ! 662 | ! 663 | ``` 664 | Such configuration can be realized using the native BGP model in Cisco IOS XR: 665 | XML 666 | ```xml 667 | 668 | 669 | 670 | default 671 | 672 | 0 673 | 674 | 65001 675 | 676 | 677 | 678 | 679 | 680 | IBGP 681 | 682 | 683 | 684 | ipv4-unicast 685 | 686 | 687 | true 688 | true 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | ``` 701 | JSON 702 | ```json 703 | { 704 | "Cisco-IOS-XR-ipv4-bgp-cfg:bgp": { 705 | "instance": [ 706 | { 707 | "instance-name": "default", 708 | "instance-as": [ 709 | { 710 | "as": 0, 711 | "four-byte-as": [ 712 | { 713 | "as": 65001, 714 | "bgp-running": [ 715 | null 716 | ], 717 | "default-vrf": { 718 | "bgp-entity": { 719 | "neighbor-groups": { 720 | "neighbor-group": [ 721 | { 722 | "neighbor-group-name": "IBGP", 723 | "create": [ 724 | null 725 | ], 726 | "neighbor-group-afs": { 727 | "neighbor-group-af": [ 728 | { 729 | "af-name": "ipv4-unicast", 730 | "activate": [ 731 | null 732 | ], 733 | "soft-reconfiguration": { 734 | "inbound-soft": true, 735 | "soft-always": true 736 | } 737 | } 738 | ] 739 | } 740 | } 741 | ] 742 | } 743 | } 744 | } 745 | } 746 | ] 747 | } 748 | ] 749 | } 750 | ] 751 | } 752 | } 753 | ``` 754 | Setting the next-hop attribute to the local router address is an example of BGP functionality that cannot be configured excusively with the OC-BGP model and requires policy configuration. Cisco IOS XR allows you to set the next hop to the local address for a neighbor group using the following CLI configuration: 755 | ``` 756 | router bgp 65001 757 | neighbor-group IBGP 758 | address-family ipv4 unicast 759 | next-hop-self 760 | ! 761 | ! 762 | ! 763 | ``` 764 | Similar functionality can be achieved using an OC-RPOL policy and associating it with a peer group using the OC-BGP model. 765 | 766 | XML 767 | ```xml 768 | 769 | 770 | 771 | 772 | POLICY4 773 | 774 | 775 | next-hop-self 776 | 777 | 778 | SELF 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 65001 792 | 793 | 794 | 795 | 796 | IBGP 797 | 798 | IBGP 799 | 800 | 801 | 802 | ipv4-unicast 803 | 804 | ipv4-unicast 805 | true 806 | 807 | 808 | 809 | POLICY4 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | ``` 818 | JSON 819 | ```json 820 | { 821 | "routing-policy:routing-policy": { 822 | "policy-definitions": { 823 | "policy-definition": [ 824 | { 825 | "name": "POLICY4", 826 | "statements": { 827 | "statement": [ 828 | { 829 | "name": "next-hop-self", 830 | "actions": { 831 | "bgp-policy:bgp-actions": { 832 | "set-next-hop": "SELF" 833 | }, 834 | "accept-route": [ 835 | null 836 | ] 837 | } 838 | } 839 | ] 840 | } 841 | } 842 | ] 843 | } 844 | }, 845 | "bgp:bgp": { 846 | "global": { 847 | "config": { 848 | "as": 65001 849 | } 850 | }, 851 | "peer-groups": { 852 | "peer-group": [ 853 | { 854 | "peer-group-name": "IBGP", 855 | "config": { 856 | "peer-group-name": "IBGP" 857 | }, 858 | "afi-safis": { 859 | "afi-safi": [ 860 | { 861 | "afi-safi-name": "ipv4-unicast", 862 | "config": { 863 | "afi-safi-name": "ipv4-unicast", 864 | "enabled": true 865 | }, 866 | "apply-policy": { 867 | "config": { 868 | "export-policy": [ 869 | "POLICY4" 870 | ] 871 | } 872 | } 873 | } 874 | ] 875 | } 876 | } 877 | ] 878 | } 879 | } 880 | } 881 | ``` 882 | The configuration above results in the following CLI configuration which is equivalent to the previous CLI example: 883 | ``` 884 | route-policy POLICY4 885 | #statement-name next-hop-self 886 | set next-hop self 887 | done 888 | end-policy 889 | ! 890 | router bgp 65001 891 | neighbor-group IBGP 892 | address-family ipv4 unicast 893 | route-policy POLICY4 out 894 | ! 895 | ! 896 | ! 897 | ``` 898 | 899 | ### Caveats 900 | OpenConfig models are not compatible with FlexCLI (apply groups). 901 | 902 | --- 903 | -------------------------------------------------------------------------------- /models/bgp/tree/bgp-2015-05-15-cisco-xr-devs-tree.txt: -------------------------------------------------------------------------------- 1 | module: bgp 2 | +--rw bgp! 3 | +--rw global 4 | | +--rw config 5 | | | +--rw as inet:as-number 6 | | | +--rw router-id? inet:ipv4-address 7 | | +--ro state 8 | | | +--ro as inet:as-number 9 | | | +--ro router-id? inet:ipv4-address 10 | | | +--ro total-paths? uint32 11 | | | +--ro total-prefixes? uint32 12 | | +--rw route-selection-options 13 | | | +--rw config 14 | | | | +--rw always-compare-med? boolean 15 | | | | +--rw ignore-as-path-length? boolean 16 | | | | +--rw external-compare-router-id? boolean 17 | | | | +--rw enable-aigp? boolean 18 | | | +--ro state 19 | | | +--ro always-compare-med? boolean 20 | | | +--ro ignore-as-path-length? boolean 21 | | | +--ro external-compare-router-id? boolean 22 | | | +--ro enable-aigp? boolean 23 | | +--rw default-route-distance 24 | | | +--rw config 25 | | | | +--rw external-route-distance? uint8 26 | | | | +--rw internal-route-distance? uint8 27 | | | +--ro state 28 | | | +--ro external-route-distance? uint8 29 | | | +--ro internal-route-distance? uint8 30 | | +--rw confederation 31 | | | +--rw config 32 | | | | +--rw identifier? inet:as-number 33 | | | | +--rw member-as* inet:as-number 34 | | | +--ro state 35 | | | +--ro enabled? boolean 36 | | | +--ro identifier? inet:as-number 37 | | | +--ro member-as* inet:as-number 38 | | +--rw use-multiple-paths 39 | | | +--rw config 40 | | | +--rw state 41 | | | | +--rw enabled? boolean 42 | | | +--rw ebgp 43 | | | | +--rw config 44 | | | | | +--rw maximum-paths? uint32 45 | | | | +--ro state 46 | | | | +--ro maximum-paths? uint32 47 | | | +--rw ibgp 48 | | | +--rw config 49 | | | | +--rw maximum-paths? uint32 50 | | | +--ro state 51 | | | +--ro maximum-paths? uint32 52 | | +--rw graceful-restart 53 | | | +--rw config 54 | | | | +--rw enabled? boolean 55 | | | | +--rw restart-time? uint16 56 | | | | +--rw stale-routes-time? decimal64 57 | | | +--ro state 58 | | | +--ro enabled? boolean 59 | | | +--ro restart-time? uint16 60 | | | +--ro stale-routes-time? decimal64 61 | | +--rw afi-safis 62 | | +--rw afi-safi* [afi-safi-name] 63 | | +--rw afi-safi-name -> ../config/afi-safi-name 64 | | +--rw graceful-restart 65 | | | +--rw config 66 | | | +--ro state 67 | | +--rw config 68 | | | +--rw afi-safi-name? identityref 69 | | | +--rw enabled? boolean 70 | | +--ro state 71 | | | +--ro afi-safi-name? identityref 72 | | | +--ro enabled? boolean 73 | | | +--ro total-paths? uint32 74 | | | +--ro total-prefixes? uint32 75 | | +--rw ipv4-unicast 76 | | | +--rw prefix-limit 77 | | | | +--rw config 78 | | | | | +--rw max-prefixes? uint32 79 | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 80 | | | | | +--rw restart-timer? decimal64 81 | | | | +--ro state 82 | | | | +--ro max-prefixes? uint32 83 | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 84 | | | | +--ro restart-timer? decimal64 85 | | | +--rw config 86 | | | | +--rw send-default-route? boolean 87 | | | +--ro state 88 | | | +--ro send-default-route? boolean 89 | | +--rw ipv6-unicast 90 | | | +--rw prefix-limit 91 | | | | +--rw config 92 | | | | | +--rw max-prefixes? uint32 93 | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 94 | | | | | +--rw restart-timer? decimal64 95 | | | | +--ro state 96 | | | | +--ro max-prefixes? uint32 97 | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 98 | | | | +--ro restart-timer? decimal64 99 | | | +--rw config 100 | | | | +--rw send-default-route? boolean 101 | | | +--ro state 102 | | | +--ro send-default-route? boolean 103 | | +--rw ipv4-labelled-unicast 104 | | | +--rw prefix-limit 105 | | | +--rw config 106 | | | | +--rw max-prefixes? uint32 107 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 108 | | | | +--rw restart-timer? decimal64 109 | | | +--ro state 110 | | | +--ro max-prefixes? uint32 111 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 112 | | | +--ro restart-timer? decimal64 113 | | +--rw ipv6-labelled-unicast 114 | | | +--rw prefix-limit 115 | | | +--rw config 116 | | | | +--rw max-prefixes? uint32 117 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 118 | | | | +--rw restart-timer? decimal64 119 | | | +--ro state 120 | | | +--ro max-prefixes? uint32 121 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 122 | | | +--ro restart-timer? decimal64 123 | | +--rw l3vpn-ipv4-unicast 124 | | | +--rw prefix-limit 125 | | | +--rw config 126 | | | | +--rw max-prefixes? uint32 127 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 128 | | | | +--rw restart-timer? decimal64 129 | | | +--ro state 130 | | | +--ro max-prefixes? uint32 131 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 132 | | | +--ro restart-timer? decimal64 133 | | +--rw l3vpn-ipv6-unicast 134 | | | +--rw prefix-limit 135 | | | +--rw config 136 | | | | +--rw max-prefixes? uint32 137 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 138 | | | | +--rw restart-timer? decimal64 139 | | | +--ro state 140 | | | +--ro max-prefixes? uint32 141 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 142 | | | +--ro restart-timer? decimal64 143 | | +--rw l3vpn-ipv4-multicast 144 | | | +--rw prefix-limit 145 | | | +--rw config 146 | | | | +--rw max-prefixes? uint32 147 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 148 | | | | +--rw restart-timer? decimal64 149 | | | +--ro state 150 | | | +--ro max-prefixes? uint32 151 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 152 | | | +--ro restart-timer? decimal64 153 | | +--rw l3vpn-ipv6-multicast 154 | | | +--rw prefix-limit 155 | | | +--rw config 156 | | | | +--rw max-prefixes? uint32 157 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 158 | | | | +--rw restart-timer? decimal64 159 | | | +--ro state 160 | | | +--ro max-prefixes? uint32 161 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 162 | | | +--ro restart-timer? decimal64 163 | | +--rw l2vpn-vpls 164 | | | +--rw prefix-limit 165 | | | +--rw config 166 | | | | +--rw max-prefixes? uint32 167 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 168 | | | | +--rw restart-timer? decimal64 169 | | | +--ro state 170 | | | +--ro max-prefixes? uint32 171 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 172 | | | +--ro restart-timer? decimal64 173 | | +--rw l2vpn-evpn 174 | | | +--rw prefix-limit 175 | | | +--rw config 176 | | | | +--rw max-prefixes? uint32 177 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 178 | | | | +--rw restart-timer? decimal64 179 | | | +--ro state 180 | | | +--ro max-prefixes? uint32 181 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 182 | | | +--ro restart-timer? decimal64 183 | | +--rw route-selection-options 184 | | | +--rw config 185 | | | | +--rw always-compare-med? boolean 186 | | | | +--rw ignore-as-path-length? boolean 187 | | | | +--rw external-compare-router-id? boolean 188 | | | | +--rw enable-aigp? boolean 189 | | | +--ro state 190 | | | +--ro always-compare-med? boolean 191 | | | +--ro ignore-as-path-length? boolean 192 | | | +--ro external-compare-router-id? boolean 193 | | | +--ro enable-aigp? boolean 194 | | +--rw use-multiple-paths 195 | | +--rw config 196 | | +--rw state 197 | | | +--rw enabled? boolean 198 | | +--rw ebgp 199 | | | +--rw config 200 | | | | +--rw maximum-paths? uint32 201 | | | +--ro state 202 | | | +--ro maximum-paths? uint32 203 | | +--rw ibgp 204 | | +--rw config 205 | | | +--rw maximum-paths? uint32 206 | | +--ro state 207 | | +--ro maximum-paths? uint32 208 | +--rw neighbors 209 | | +--rw neighbor* [neighbor-address] 210 | | +--rw neighbor-address -> ../config/neighbor-address 211 | | +--rw config 212 | | | +--rw peer-as? inet:as-number 213 | | | +--rw local-as? inet:as-number 214 | | | +--rw auth-password? string 215 | | | +--rw remove-private-as? bgp-types:remove-private-as-option 216 | | | +--rw send-community? bgp-types:community-type 217 | | | +--rw description? string 218 | | | +--rw peer-group? -> /bgp/peer-groups/peer-group/peer-group-name 219 | | | +--rw neighbor-address? inet:ip-address 220 | | +--ro state 221 | | | +--ro peer-as? inet:as-number 222 | | | +--ro local-as? inet:as-number 223 | | | +--ro auth-password? string 224 | | | +--ro remove-private-as? bgp-types:remove-private-as-option 225 | | | +--ro send-community? bgp-types:community-type 226 | | | +--ro description? string 227 | | | +--ro peer-group? -> /bgp/peer-groups/peer-group/peer-group-name 228 | | | +--ro neighbor-address? inet:ip-address 229 | | | +--ro session-state? enumeration 230 | | | +--ro supported-capabilities* identityref 231 | | | +--ro messages 232 | | | | +--ro sent 233 | | | | | +--ro UPDATE? uint64 234 | | | | | +--ro NOTIFICATION? uint64 235 | | | | +--ro received 236 | | | | +--ro UPDATE? uint64 237 | | | | +--ro NOTIFICATION? uint64 238 | | | +--ro queues 239 | | | +--ro input? uint32 240 | | | +--ro output? uint32 241 | | +--rw timers 242 | | | +--rw config 243 | | | | +--rw hold-time? decimal64 244 | | | | +--rw keepalive-interval? decimal64 245 | | | | +--rw minimum-advertisement-interval? decimal64 246 | | | +--ro state 247 | | | +--ro hold-time? decimal64 248 | | | +--ro keepalive-interval? decimal64 249 | | | +--ro minimum-advertisement-interval? decimal64 250 | | | +--ro negotiated-hold-time? decimal64 251 | | +--rw transport 252 | | | +--rw config 253 | | | | +--rw tcp-mss? uint16 254 | | | | +--rw passive-mode? boolean 255 | | | | +--rw local-address? union 256 | | | +--ro state 257 | | | +--ro tcp-mss? uint16 258 | | | +--ro passive-mode? boolean 259 | | | +--ro local-address? union 260 | | | +--ro local-port? inet:port-number 261 | | | +--ro remote-address? inet:ip-address 262 | | | +--ro remote-port? inet:port-number 263 | | +--rw ebgp-multihop 264 | | | +--rw config 265 | | | | +--rw enabled? boolean 266 | | | | +--rw multihop-ttl? uint8 267 | | | +--ro state 268 | | | +--ro enabled? boolean 269 | | | +--ro multihop-ttl? uint8 270 | | +--rw route-reflector 271 | | | +--rw config 272 | | | | +--rw route-reflector-cluster-id? bgp-types:rr-cluster-id-type 273 | | | | +--rw route-reflector-client? boolean 274 | | | +--ro state 275 | | | +--ro route-reflector-cluster-id? bgp-types:rr-cluster-id-type 276 | | | +--ro route-reflector-client? boolean 277 | | +--rw as-path-options 278 | | | +--rw config 279 | | | +--ro state 280 | | +--rw add-paths 281 | | | +--rw config 282 | | | +--ro state 283 | | +--rw afi-safis 284 | | | +--rw afi-safi* [afi-safi-name] 285 | | | +--rw afi-safi-name -> ../config/afi-safi-name 286 | | | +--rw graceful-restart 287 | | | | +--rw config 288 | | | | +--ro state 289 | | | +--rw config 290 | | | | +--rw afi-safi-name? identityref 291 | | | | +--rw enabled? boolean 292 | | | +--ro state 293 | | | | +--ro afi-safi-name? identityref 294 | | | | +--ro enabled? boolean 295 | | | | +--ro active? boolean 296 | | | | +--ro prefixes 297 | | | | +--ro received? uint32 298 | | | | +--ro sent? uint32 299 | | | +--rw ipv4-unicast 300 | | | | +--rw prefix-limit 301 | | | | | +--rw config 302 | | | | | | +--rw max-prefixes? uint32 303 | | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 304 | | | | | | +--rw restart-timer? decimal64 305 | | | | | +--ro state 306 | | | | | +--ro max-prefixes? uint32 307 | | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 308 | | | | | +--ro restart-timer? decimal64 309 | | | | +--rw config 310 | | | | | +--rw send-default-route? boolean 311 | | | | +--ro state 312 | | | | +--ro send-default-route? boolean 313 | | | +--rw ipv6-unicast 314 | | | | +--rw prefix-limit 315 | | | | | +--rw config 316 | | | | | | +--rw max-prefixes? uint32 317 | | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 318 | | | | | | +--rw restart-timer? decimal64 319 | | | | | +--ro state 320 | | | | | +--ro max-prefixes? uint32 321 | | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 322 | | | | | +--ro restart-timer? decimal64 323 | | | | +--rw config 324 | | | | | +--rw send-default-route? boolean 325 | | | | +--ro state 326 | | | | +--ro send-default-route? boolean 327 | | | +--rw ipv4-labelled-unicast 328 | | | | +--rw prefix-limit 329 | | | | +--rw config 330 | | | | | +--rw max-prefixes? uint32 331 | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 332 | | | | | +--rw restart-timer? decimal64 333 | | | | +--ro state 334 | | | | +--ro max-prefixes? uint32 335 | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 336 | | | | +--ro restart-timer? decimal64 337 | | | +--rw ipv6-labelled-unicast 338 | | | | +--rw prefix-limit 339 | | | | +--rw config 340 | | | | | +--rw max-prefixes? uint32 341 | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 342 | | | | | +--rw restart-timer? decimal64 343 | | | | +--ro state 344 | | | | +--ro max-prefixes? uint32 345 | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 346 | | | | +--ro restart-timer? decimal64 347 | | | +--rw l3vpn-ipv4-unicast 348 | | | | +--rw prefix-limit 349 | | | | +--rw config 350 | | | | | +--rw max-prefixes? uint32 351 | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 352 | | | | | +--rw restart-timer? decimal64 353 | | | | +--ro state 354 | | | | +--ro max-prefixes? uint32 355 | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 356 | | | | +--ro restart-timer? decimal64 357 | | | +--rw l3vpn-ipv6-unicast 358 | | | | +--rw prefix-limit 359 | | | | +--rw config 360 | | | | | +--rw max-prefixes? uint32 361 | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 362 | | | | | +--rw restart-timer? decimal64 363 | | | | +--ro state 364 | | | | +--ro max-prefixes? uint32 365 | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 366 | | | | +--ro restart-timer? decimal64 367 | | | +--rw l3vpn-ipv4-multicast 368 | | | | +--rw prefix-limit 369 | | | | +--rw config 370 | | | | | +--rw max-prefixes? uint32 371 | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 372 | | | | | +--rw restart-timer? decimal64 373 | | | | +--ro state 374 | | | | +--ro max-prefixes? uint32 375 | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 376 | | | | +--ro restart-timer? decimal64 377 | | | +--rw l3vpn-ipv6-multicast 378 | | | | +--rw prefix-limit 379 | | | | +--rw config 380 | | | | | +--rw max-prefixes? uint32 381 | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 382 | | | | | +--rw restart-timer? decimal64 383 | | | | +--ro state 384 | | | | +--ro max-prefixes? uint32 385 | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 386 | | | | +--ro restart-timer? decimal64 387 | | | +--rw l2vpn-vpls 388 | | | | +--rw prefix-limit 389 | | | | +--rw config 390 | | | | | +--rw max-prefixes? uint32 391 | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 392 | | | | | +--rw restart-timer? decimal64 393 | | | | +--ro state 394 | | | | +--ro max-prefixes? uint32 395 | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 396 | | | | +--ro restart-timer? decimal64 397 | | | +--rw l2vpn-evpn 398 | | | | +--rw prefix-limit 399 | | | | +--rw config 400 | | | | | +--rw max-prefixes? uint32 401 | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 402 | | | | | +--rw restart-timer? decimal64 403 | | | | +--ro state 404 | | | | +--ro max-prefixes? uint32 405 | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 406 | | | | +--ro restart-timer? decimal64 407 | | | +--rw use-multiple-paths 408 | | | +--rw config 409 | | | | +--rw enabled? boolean 410 | | | +--rw state 411 | | | +--rw enabled? boolean 412 | | +--rw graceful-restart 413 | | +--rw config 414 | | | +--rw enabled? boolean 415 | | | +--rw restart-time? uint16 416 | | | +--rw stale-routes-time? decimal64 417 | | +--ro state 418 | | +--ro enabled? boolean 419 | | +--ro restart-time? uint16 420 | | +--ro stale-routes-time? decimal64 421 | | +--ro peer-restart-time? uint16 422 | +--rw peer-groups 423 | +--rw peer-group* [peer-group-name] 424 | +--rw peer-group-name -> ../config/peer-group-name 425 | +--rw config 426 | | +--rw peer-as? inet:as-number 427 | | +--rw local-as? inet:as-number 428 | | +--rw auth-password? string 429 | | +--rw remove-private-as? bgp-types:remove-private-as-option 430 | | +--rw send-community? bgp-types:community-type 431 | | +--rw description? string 432 | | +--rw peer-group-name? string 433 | +--ro state 434 | | +--ro peer-as? inet:as-number 435 | | +--ro local-as? inet:as-number 436 | | +--ro auth-password? string 437 | | +--ro remove-private-as? bgp-types:remove-private-as-option 438 | | +--ro send-community? bgp-types:community-type 439 | | +--ro description? string 440 | | +--ro peer-group-name? string 441 | +--rw timers 442 | | +--rw config 443 | | | +--rw hold-time? decimal64 444 | | | +--rw keepalive-interval? decimal64 445 | | | +--rw minimum-advertisement-interval? decimal64 446 | | +--ro state 447 | | +--ro hold-time? decimal64 448 | | +--ro keepalive-interval? decimal64 449 | | +--ro minimum-advertisement-interval? decimal64 450 | +--rw transport 451 | | +--rw config 452 | | | +--rw tcp-mss? uint16 453 | | | +--rw passive-mode? boolean 454 | | | +--rw local-address? union 455 | | +--ro state 456 | | +--ro tcp-mss? uint16 457 | | +--ro passive-mode? boolean 458 | | +--ro local-address? union 459 | +--rw error-handling 460 | | +--rw config 461 | | +--ro state 462 | +--rw logging-options 463 | | +--rw config 464 | | +--ro state 465 | +--rw ebgp-multihop 466 | | +--rw config 467 | | | +--rw enabled? boolean 468 | | | +--rw multihop-ttl? uint8 469 | | +--ro state 470 | | +--ro enabled? boolean 471 | | +--ro multihop-ttl? uint8 472 | +--rw route-reflector 473 | | +--rw config 474 | | | +--rw route-reflector-cluster-id? bgp-types:rr-cluster-id-type 475 | | | +--rw route-reflector-client? boolean 476 | | +--ro state 477 | | +--ro route-reflector-cluster-id? bgp-types:rr-cluster-id-type 478 | | +--ro route-reflector-client? boolean 479 | +--rw as-path-options 480 | | +--rw config 481 | | +--ro state 482 | +--rw add-paths 483 | | +--rw config 484 | | +--ro state 485 | +--rw afi-safis 486 | | +--rw afi-safi* [afi-safi-name] 487 | | +--rw afi-safi-name -> ../config/afi-safi-name 488 | | +--rw graceful-restart 489 | | | +--rw config 490 | | | +--ro state 491 | | +--rw config 492 | | | +--rw afi-safi-name? identityref 493 | | | +--rw enabled? boolean 494 | | +--ro state 495 | | | +--ro afi-safi-name? identityref 496 | | | +--ro enabled? boolean 497 | | +--rw apply-policy 498 | | | +--rw config 499 | | | | +--rw import-policy* -> /rpol:routing-policy/policy-definitions/policy-definition/name 500 | | | | +--rw export-policy* -> /rpol:routing-policy/policy-definitions/policy-definition/name 501 | | | +--ro state 502 | | | +--ro import-policy* -> /rpol:routing-policy/policy-definitions/policy-definition/name 503 | | | +--ro export-policy* -> /rpol:routing-policy/policy-definitions/policy-definition/name 504 | | +--rw ipv4-unicast 505 | | | +--rw prefix-limit 506 | | | | +--rw config 507 | | | | | +--rw max-prefixes? uint32 508 | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 509 | | | | | +--rw restart-timer? decimal64 510 | | | | +--ro state 511 | | | | +--ro max-prefixes? uint32 512 | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 513 | | | | +--ro restart-timer? decimal64 514 | | | +--rw config 515 | | | | +--rw send-default-route? boolean 516 | | | +--ro state 517 | | | +--ro send-default-route? boolean 518 | | +--rw ipv6-unicast 519 | | | +--rw prefix-limit 520 | | | | +--rw config 521 | | | | | +--rw max-prefixes? uint32 522 | | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 523 | | | | | +--rw restart-timer? decimal64 524 | | | | +--ro state 525 | | | | +--ro max-prefixes? uint32 526 | | | | +--ro shutdown-threshold-pct? bgp-types:percentage 527 | | | | +--ro restart-timer? decimal64 528 | | | +--rw config 529 | | | | +--rw send-default-route? boolean 530 | | | +--ro state 531 | | | +--ro send-default-route? boolean 532 | | +--rw ipv4-labelled-unicast 533 | | | +--rw prefix-limit 534 | | | +--rw config 535 | | | | +--rw max-prefixes? uint32 536 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 537 | | | | +--rw restart-timer? decimal64 538 | | | +--ro state 539 | | | +--ro max-prefixes? uint32 540 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 541 | | | +--ro restart-timer? decimal64 542 | | +--rw ipv6-labelled-unicast 543 | | | +--rw prefix-limit 544 | | | +--rw config 545 | | | | +--rw max-prefixes? uint32 546 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 547 | | | | +--rw restart-timer? decimal64 548 | | | +--ro state 549 | | | +--ro max-prefixes? uint32 550 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 551 | | | +--ro restart-timer? decimal64 552 | | +--rw l3vpn-ipv4-unicast 553 | | | +--rw prefix-limit 554 | | | +--rw config 555 | | | | +--rw max-prefixes? uint32 556 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 557 | | | | +--rw restart-timer? decimal64 558 | | | +--ro state 559 | | | +--ro max-prefixes? uint32 560 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 561 | | | +--ro restart-timer? decimal64 562 | | +--rw l3vpn-ipv6-unicast 563 | | | +--rw prefix-limit 564 | | | +--rw config 565 | | | | +--rw max-prefixes? uint32 566 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 567 | | | | +--rw restart-timer? decimal64 568 | | | +--ro state 569 | | | +--ro max-prefixes? uint32 570 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 571 | | | +--ro restart-timer? decimal64 572 | | +--rw l3vpn-ipv4-multicast 573 | | | +--rw prefix-limit 574 | | | +--rw config 575 | | | | +--rw max-prefixes? uint32 576 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 577 | | | | +--rw restart-timer? decimal64 578 | | | +--ro state 579 | | | +--ro max-prefixes? uint32 580 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 581 | | | +--ro restart-timer? decimal64 582 | | +--rw l3vpn-ipv6-multicast 583 | | | +--rw prefix-limit 584 | | | +--rw config 585 | | | | +--rw max-prefixes? uint32 586 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 587 | | | | +--rw restart-timer? decimal64 588 | | | +--ro state 589 | | | +--ro max-prefixes? uint32 590 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 591 | | | +--ro restart-timer? decimal64 592 | | +--rw l2vpn-vpls 593 | | | +--rw prefix-limit 594 | | | +--rw config 595 | | | | +--rw max-prefixes? uint32 596 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 597 | | | | +--rw restart-timer? decimal64 598 | | | +--ro state 599 | | | +--ro max-prefixes? uint32 600 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 601 | | | +--ro restart-timer? decimal64 602 | | +--rw l2vpn-evpn 603 | | | +--rw prefix-limit 604 | | | +--rw config 605 | | | | +--rw max-prefixes? uint32 606 | | | | +--rw shutdown-threshold-pct? bgp-types:percentage 607 | | | | +--rw restart-timer? decimal64 608 | | | +--ro state 609 | | | +--ro max-prefixes? uint32 610 | | | +--ro shutdown-threshold-pct? bgp-types:percentage 611 | | | +--ro restart-timer? decimal64 612 | | +--rw use-multiple-paths 613 | | | +--rw config 614 | | | | +--rw enabled? boolean 615 | | | +--rw state 616 | | | +--rw enabled? boolean 617 | | +--rw route-selection-options 618 | | +--rw config 619 | | | +--rw always-compare-med? boolean 620 | | | +--rw ignore-as-path-length? boolean 621 | | | +--rw external-compare-router-id? boolean 622 | | | +--rw enable-aigp? boolean 623 | | +--ro state 624 | | +--ro always-compare-med? boolean 625 | | +--ro ignore-as-path-length? boolean 626 | | +--ro external-compare-router-id? boolean 627 | | +--ro enable-aigp? boolean 628 | +--rw graceful-restart 629 | +--rw config 630 | | +--rw enabled? boolean 631 | | +--rw restart-time? uint16 632 | | +--rw stale-routes-time? decimal64 633 | +--ro state 634 | +--ro enabled? boolean 635 | +--ro restart-time? uint16 636 | +--ro stale-routes-time? decimal64 637 | --------------------------------------------------------------------------------