draft-ietf-bess-l3vpn-yang-01.txt   draft-ietf-bess-l3vpn-yang-02.txt 
BESS Working Group D. Jain BESS Working Group D. Jain
Internet-Draft K. Patel Internet-Draft K. Patel
Intended status: Standards Track P. Brissette Intended status: Standards Track P. Brissette
Expires: October 27, 2017 Cisco Expires: April 21, 2018 Cisco
Z. Li Z. Li
S. Zhuang S. Zhuang
Huawei Technologies Huawei Technologies
X. Liu X. Liu
Jabil Jabil
J. Haas J. Haas
S. Esale S. Esale
Juniper Networks Juniper Networks
B. Wen B. Wen
Comcast Comcast
April 25, 2017 October 18, 2017
Yang Data Model for BGP/MPLS L3 VPNs Yang Data Model for BGP/MPLS L3 VPNs
draft-ietf-bess-l3vpn-yang-01.txt draft-ietf-bess-l3vpn-yang-02.txt
Abstract Abstract
This document defines a YANG data model that can be used to configure This document defines a YANG data model that can be used to configure
and manage BGP Layer 3 VPNs. and manage BGP Layer 3 VPNs.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
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 http://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 October 27, 2017. This Internet-Draft will expire on April 21, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 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
(http://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
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
This document may contain material from IETF Documents or IETF This document may contain material from IETF Documents or IETF
Contributions published or made publicly available before November Contributions published or made publicly available before November
10, 2008. The person(s) controlling the copyright in some of this 10, 2008. The person(s) controlling the copyright in some of this
skipping to change at page 2, line 41 skipping to change at page 2, line 41
2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3 2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3
3. Design of BGP L3VPN Data Model . . . . . . . . . . . . . . . 4 3. Design of BGP L3VPN Data Model . . . . . . . . . . . . . . . 4
3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2. VRF Specific Configuration . . . . . . . . . . . . . . . 4 3.2. VRF Specific Configuration . . . . . . . . . . . . . . . 4
3.2.1. VRF interface . . . . . . . . . . . . . . . . . . . . 4 3.2.1. VRF interface . . . . . . . . . . . . . . . . . . . . 4
3.2.2. Route distinguisher . . . . . . . . . . . . . . . . . 4 3.2.2. Route distinguisher . . . . . . . . . . . . . . . . . 4
3.2.3. Import and export route targets . . . . . . . . . . . 5 3.2.3. Import and export route targets . . . . . . . . . . . 5
3.2.4. Forwarding mode . . . . . . . . . . . . . . . . . . . 5 3.2.4. Forwarding mode . . . . . . . . . . . . . . . . . . . 5
3.2.5. Label security . . . . . . . . . . . . . . . . . . . 5 3.2.5. Label security . . . . . . . . . . . . . . . . . . . 5
3.2.6. Yang tree . . . . . . . . . . . . . . . . . . . . . . 5 3.2.6. Yang tree . . . . . . . . . . . . . . . . . . . . . . 5
3.3. BGP Specific Configuration . . . . . . . . . . . . . . . 7 3.3. BGP Specific Configuration . . . . . . . . . . . . . . . 6
3.3.1. VPN peering . . . . . . . . . . . . . . . . . . . . . 7 3.3.1. VPN peering . . . . . . . . . . . . . . . . . . . . . 7
3.3.2. VPN prefix limits . . . . . . . . . . . . . . . . . . 7 3.3.2. VPN prefix limits . . . . . . . . . . . . . . . . . . 7
3.3.3. Label Mode . . . . . . . . . . . . . . . . . . . . . 8 3.3.3. Label Mode . . . . . . . . . . . . . . . . . . . . . 7
3.3.4. ASBR options . . . . . . . . . . . . . . . . . . . . 8 3.3.4. ASBR options . . . . . . . . . . . . . . . . . . . . 7
3.3.5. Yang tree . . . . . . . . . . . . . . . . . . . . . . 8 3.3.5. Yang tree . . . . . . . . . . . . . . . . . . . . . . 7
4. BGP Yang Module . . . . . . . . . . . . . . . . . . . . . . . 10 4. BGP Yang Module . . . . . . . . . . . . . . . . . . . . . . . 8
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19
6. Security Considerations . . . . . . . . . . . . . . . . . . . 25 6. Security Considerations . . . . . . . . . . . . . . . . . . . 19
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 19
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 26 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 19
8.1. Normative References . . . . . . . . . . . . . . . . . . 26 8.1. Normative References . . . . . . . . . . . . . . . . . . 19
8.2. Informative References . . . . . . . . . . . . . . . . . 27 8.2. Informative References . . . . . . . . . . . . . . . . . 20
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21
1. Introduction 1. Introduction
YANG [RFC6020] is a data definition language that was introduced to YANG [RFC6020] is a data definition language that was introduced to
define the contents of a conceptual data store that allows networked define the contents of a conceptual data store that allows networked
devices to be managed using NETCONF [RFC6241]. YANG is proving devices to be managed using NETCONF [RFC6241]. YANG is proving
relevant beyond its initial confines, as bindings to other interfaces relevant beyond its initial confines, as bindings to other interfaces
(e.g. ReST) and encodings other than XML (e.g. JSON) are being (e.g. ReST) and encodings other than XML (e.g. JSON) are being
defined. Furthermore, YANG data models can be used as the basis of defined. Furthermore, YANG data models can be used as the basis of
implementation for other interfaces, such as CLI and programmatic implementation for other interfaces, such as CLI and programmatic
skipping to change at page 4, line 28 skipping to change at page 4, line 28
There are two parts of the BGP L3VPN yang data model. The first part There are two parts of the BGP L3VPN yang data model. The first part
of the model defines VRF specific parameters for L3VPN by augmenting of the model defines VRF specific parameters for L3VPN by augmenting
the network-instance container defined in the network instance model the network-instance container defined in the network instance model
[I-D.ietf-rtgwg-ni-model] and the second part of the model defines [I-D.ietf-rtgwg-ni-model] and the second part of the model defines
BGP specific parameters for the L3VPN by augmenting the base BGP data BGP specific parameters for the L3VPN by augmenting the base BGP data
model defined in [I-D.ietf-idr-bgp-model]. model defined in [I-D.ietf-idr-bgp-model].
3.2. VRF Specific Configuration 3.2. VRF Specific Configuration
IETF network instance model defines a base identity for network IETF network instance model defines various ni-types, one of which is
instance type as L3-VRF. For L3VPN, the VRF specific parameters are l3vpn. This provides an anchor point to add a new container l3vpn.
defined by augmenting the network-instance container corresponding to Under this container per VPN parameters pertaining to L3VPN are
L3-VRF instance. A new container l3vpn is added for VPN parameters. added.
3.2.1. VRF interface 3.2.1. VRF interface
To associate a VRF instance with an interface, the interface should To associate a VRF instance with an interface, bind-network-instance
be defined in the context of network instance representing a L3-VRF. config should be used. This is covered in the base network instance
This is covered in base network instance model model [I-D.ietf-rtgwg-ni-model].
[I-D.ietf-rtgwg-ni-model].
3.2.2. Route distinguisher 3.2.2. Route distinguisher
Route distinguisher (RD) is an unique identifier used in VPN routes Route distinguisher (RD) is an unique identifier used in VPN routes
to distinguish prefixes across different VPNs. RD is 8 byte field as to distinguish prefixes across different VPNs. RD is 8 byte field as
defined in the [RFC4364]. Where the first two bytes refer to type defined in the [RFC4364]. Where the first two bytes refer to type
followed by 6 bytes of value. The format of the value is dependent followed by 6 bytes of value. The format of the value is dependent
on type. In the yang model, RDs are defined l3vpn container under on type. In the yang model, RDs are defined l3vpn container under
network-instance. network-instance.
skipping to change at page 5, line 41 skipping to change at page 6, line 4
directly connected BGP peers for inter-as option B peering. directly connected BGP peers for inter-as option B peering.
3.2.5. Label security 3.2.5. Label security
For inter-as option-B peering across ASs, under the ASBR facing For inter-as option-B peering across ASs, under the ASBR facing
interface, mpls label security enables the checks for RPF label on interface, mpls label security enables the checks for RPF label on
incoming packets. Ietf-interface container is augmented to add this incoming packets. Ietf-interface container is augmented to add this
config. config.
3.2.6. Yang tree 3.2.6. Yang tree
module: ietf-bgp-l3vpn
augment /ni:network-instances/ni:network-instance/ni:ni-type:
+--:(l3vpn)
+--rw l3vpn
+--rw rd? union
+--ro auto-rd? rt-types:route-distinguisher
+--rw ipv4
| +--rw unicast
| +--rw vpn-targets
| | +--rw vpn-target* [route-target]
| | | +--rw route-target rt-types:route-target
| | | +--rw route-target-type rt-types:route-target-type
| | +--rw route-policy? string
| +--rw import-from-global
| | +--rw enable? boolean
| | +--rw advertise-as-vpn? boolean
| | +--rw route-policy? string
| | +--rw bgp-valid-route? boolean
| | +--rw protocol? enumeration
| | +--rw instance? string
| +--rw export-to-global
| | +--rw enable? boolean
| +--rw routing-table-limit
| | +--rw routing-table-limit-number? uint32
| | +--rw (routing-table-limit-action)?
| | +--:(enable-alert-percent)
| | | +--rw alert-percent-value? rt-types:percentage
| | +--:(enable-simple-alert)
| | +--rw simple-alert? boolean
| +--rw tunnel-params
| +--rw tunnel-policy? string
module: ietf-bgp-l3vpn augment /if:interfaces/if:interface:
augment /ni:network-instances/ni:network-instance: +--rw forwarding-mode? enumeration
+--rw l3vpn +--rw mpls-label-security
+--rw route-distinguisher +--rw rpf? boolean
| +--rw config
| | +--rw rd? rt-types:route-distinguisher
| +--ro state
| +--ro rd? rt-types:route-distinguisher
+--rw ipv4
| +--rw unicast
| +--rw route-targets
| | +--rw config
| | | +--rw rts* [rt]
| | | | +--rw rt rt-types:route-target
| | | | +--rw rt-type? enumeration
| | | +--rw route-policy? string
| | +--ro state
| | +--ro rts* [rt]
| | | +--ro rt rt-types:route-target
| | | +--ro rt-type? enumeration
| | +--ro route-policy? string
| +--rw import-from-global
| | +--rw config
| | | +--rw enable? boolean
| | | +--rw advertise-as-vpn? boolean
| | | +--rw route-policy? string
| | | +--rw bgp-valid-route? boolean
| | | +--rw protocol? enumeration
| | | +--rw instance? string
| | +--ro state
| | +--ro enable? boolean
| | +--ro advertise-as-vpn? boolean
| | +--ro route-policy? string
| | +--ro bgp-valid-route? boolean
| | +--ro protocol? enumeration
| | +--ro instance? string
| +--rw export-to-global
| | +--rw config
| | | +--rw enable? boolean
| | +--ro state
| | +--ro enable? boolean
| +--rw routing-table-limit
| | +--rw config
| | | +--rw routing-table-limit-number? uint32
| | | +--rw (routing-table-limit-action)?
| | | +--:(enable-alert-percent)
| | | | +--rw alert-percent-value? uint8
| | | +--:(enable-simple-alert)
| | | +--rw simple-alert? boolean
| | +--ro state
| | +--ro routing-table-limit-number? uint32
| | +--ro (routing-table-limit-action)?
| | +--:(enable-alert-percent)
| | | +--ro alert-percent-value? uint8
| | +--:(enable-simple-alert)
| | +--ro simple-alert? boolean
| +--rw tunnel-params
| +--rw config
| | +--rw tunnel-policy? string
| +--ro state
| +--ro tunnel-policy? string
augment /if:interfaces/if:interface:
+--rw forwarding-mode
| +--rw config
| | +--rw forwarding-mode? fwd-mode-type
| +--ro state
| +--ro forwarding-mode? fwd-mode-type
+--rw mpls-label-security
+--rw config
| +--rw rpf? boolean
+--ro state
+--ro rpf? boolean
3.3. BGP Specific Configuration 3.3. BGP Specific Configuration
The BGP specific configuration for L3VPNs is defined by augmenting The BGP specific configuration for L3VPNs is defined by augmenting
base BGP model [I-D.ietf-idr-bgp-model]. In particular, specific base BGP model [I-D.ietf-idr-bgp-model]. In particular, specific
knobs are added under neighbor and address family containers to knobs are added under neighbor and address family containers to
handle VPN routes and ASBR peering. handle VPN routes and ASBR peering.
3.3.1. VPN peering 3.3.1. VPN peering
For Peering between PE routers, specific VPN address family needs to For Peering between PE routers, specific VPN address family needs to
be enabled under BGP container in the default routing-instance. Base be enabled under BGP container in the context of core instance. Base
BGP draft [I-D.ietf-idr-bgp-model] has l3vpn address family in the BGP draft [I-D.ietf-idr-bgp-model] has l3vpn address family in the
list of identity refs for AFs under global and neighbor modes. The list of identity refs for AFs under global and neighbor modes. The
same is augmented here for additional knobs. For peering with CE same is augmented here for additional knobs. For peering with CE
routers the VRF specific BGP configurations such as neighbors and routers the VRF specific BGP configurations such as neighbors and
address-family are covered in base BGP config, except that such address-family are covered in base BGP config, except that such
configuration will be in the context of a VRF. The instance of BGP configuration will be in the context of a VRF. The instance of BGP
in this case would be a separate instance in the context of routing in this case would be a separate instance in the context of vrf-root
instance realizing a VRF. as defined in [I-D.ietf-rtgwg-ni-model].
3.3.2. VPN prefix limits 3.3.2. VPN prefix limits
Limits for max number of VPN prefixes for a PE router is defined in Limits for max number of VPN prefixes for a PE router is defined in
the context of VPN address family under BGP. This would be the total the context of VPN address family under BGP. This would be the total
number of prefixes in VPN table per AF in the context of BGP number of prefixes in VPN table per AF in the context of BGP
protocol. Route table limit for ipv4 and ipv6 address family for protocol. Route table limit for ipv4 and ipv6 address family for
each VPN instance is also defined under BGP. The total prefix limit each VPN instance is also defined under BGP. The total prefix limit
per VPN, including all the protocols is defined in the context of VRF per VPN, including all the protocols is defined in the context of VRF
address family under routing instance. address family under routing instance.
skipping to change at page 8, line 17 skipping to change at page 7, line 38
3.3.3. Label Mode 3.3.3. Label Mode
Label mode knobs control the label allocation behavior for VRF Label mode knobs control the label allocation behavior for VRF
routes. Such as to specify Per-site, Per-vpn and Per-route label routes. Such as to specify Per-site, Per-vpn and Per-route label
allocation. These knobs augment BGP global AF containers in the allocation. These knobs augment BGP global AF containers in the
context of default routing instance. context of default routing instance.
3.3.4. ASBR options 3.3.4. ASBR options
This includes few specific knobs for ASBR peering methods illustrated This includes few specific knobs for ASBR peering methods illustrated
in [RFC4364]. Such as route target retention on ASBRs and rewrite in [RFC4364]. Such as route target retention on ASBRs for inter-as
next hop to self, for inter-as VPN peering across ASBRs with option-B VPN peering across ASBRs with option-B method. Appropriate address-
method. Similarly next hop unchanged on ASBRs for option-C peering. family containers under BGP base model are augmented for this.
Appropriate containers under BGP AF and NBR modes are augmented for
these parameters. As a note, when a knob is applicable for neighbor,
it is also defined under corresponding peer-group container.
3.3.5. Yang tree 3.3.5. Yang tree
module: ietf-bgp-l3vpn
augment /bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:l3vpn-ipv4-unicast:
+--rw retain-route-targets
| +--rw all? empty
| +--rw route-policy? string
+--rw vpn-prefix-limit
+--rw prefix-limit-number? uint32
+--rw (prefix-limit-action)?
+--:(enable-alert-percent)
| +--rw alert-percent-value? rt-types:percentage
| +--rw route-unchanged? boolean
+--:(enable-simple-alert)
+--rw simple-alert? boolean
module: ietf-bgp-l3vpn augment /bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv4-unicast:
augment /bgp:bgp/bgp:global/bgp:afi-safis +--rw label-mode? bgp-label-mode
/bgp:afi-safi/bgp:l3vpn-ipv4-unicast: +--rw routing-table-limit
+--rw retain-rts +--rw routing-table-limit-number? uint32
+--rw config +--rw (routing-table-limit-action)?
| +--rw all? empty +--:(enable-alert-percent)
| +--rw route-policy? string | +--rw alert-percent-value? rt-types:percentage
+--ro state +--:(enable-simple-alert)
+--ro all? empty +--rw simple-alert? boolean
+--ro route-policy? string
+--rw prefix-limit
+--rw config
| +--rw prefix-limit-number? uint32
| +--rw (prefix-limit-action)?
| +--:(enable-alert-percent)
| | +--rw alert-percent-value? uint8
| | +--rw route-unchanged? boolean
| +--:(enable-simple-alert)
| +--rw simple-alert? boolean
+--ro state
+--ro prefix-limit-number? uint32
+--ro (prefix-limit-action)?
+--:(enable-alert-percent)
| +--ro alert-percent-value? uint8
| +--ro route-unchanged? boolean
+--:(enable-simple-alert)
+--ro simple-alert? boolean ...
augment /bgp:bgp/bgp:global/bgp:afi-safis
/bgp:afi-safi/bgp:ipv4-unicast:
+--rw config
| +--rw label-mode? bgp-label-mode
+--ro state
+--ro label-mode? bgp-label-mode
+--rw routing-table-limit
+--rw config
| +--rw routing-table-limit-number? uint32
| +--rw (routing-table-limit-action)?
| +--:(enable-alert-percent)
| | +--rw alert-percent-value? uint8
| +--:(enable-simple-alert)
| +--rw simple-alert? boolean
+--ro state
+--ro routing-table-limit-number? uint32
+--ro (routing-table-limit-action)?
+--:(enable-alert-percent)
| +--ro alert-percent-value? uint8
+--:(enable-simple-alert)
+--ro simple-alert? boolean
...
augment /bgp:bgp/bgp:neighbors/bgp:neighbor:
+--rw nexthop-options
+--rw config
| +--rw next-hop-self? boolean
| +--rw next-hop-unchanged? boolean
+--rw state
+--rw next-hop-self? boolean
+--rw next-hop-unchanged? boolean
augment /bgp:bgp/bgp:peer-groups/bgp:peer-group:
+--rw nexthop-options
+--rw config
| +--rw next-hop-self? boolean
| +--rw next-hop-unchanged? boolean
+--rw state
+--rw next-hop-self? boolean
+--rw next-hop-unchanged? boolean
augment /bgp:bgp/bgp:neighbors/bgp:neighbor
/bgp:afi-safis/bgp:afi-safi:
+--rw nexthop-options
+--rw config
| +--rw next-hop-self? boolean
| +--rw next-hop-unchanged? boolean
+--rw state
+--rw next-hop-self? boolean
+--rw next-hop-unchanged? boolean
augment /bgp:bgp/bgp:peer-groups/bgp:peer-group
/bgp:afi-safis/bgp:afi-safi:
+--rw nexthop-options
+--rw config
| +--rw next-hop-self? boolean
| +--rw next-hop-unchanged? boolean
+--rw state
+--rw next-hop-self? boolean
+--rw next-hop-unchanged? boolean
4. BGP Yang Module 4. BGP Yang Module
<CODE BEGINS> file "ietf-bgp-l3vpn@2017-04-25.yang" <CODE BEGINS> file "ietf-bgp-l3vpn@2017-10-18.yang"
module ietf-bgp-l3vpn { module ietf-bgp-l3vpn {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-l3vpn"; namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-l3vpn";
// replace with IANA namespace when assigned // replace with IANA namespace when assigned
prefix l3vpn ; prefix l3vpn ;
import ietf-network-instance { import ietf-network-instance {
prefix ni; prefix ni;
//revision-date 2016-06-23; revision-date 2017-09-27;
} }
import ietf-routing-types { import ietf-routing-types {
prefix rt-types; prefix rt-types;
//revision-date 2017-02-27; revision-date 2017-10-13;
} }
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
} }
import ietf-bgp { import ietf-bgp {
prefix bgp; prefix bgp;
//revision-date 2016-06-21; revision-date 2016-06-21;
} }
organization organization
"IETF BGP Enabled Services WG"; "IETF BGP Enabled Services WG";
contact contact
"BESS working group - bess@ietf.org"; "BESS working group - bess@ietf.org";
description description
"This YANG module defines a YANG data model to configure and "This YANG module defines a YANG data model to configure and
skipping to change at page 11, line 42 skipping to change at page 10, line 4
L3VPN: Layer 3 VPN L3VPN: Layer 3 VPN
PE : Provider Edge PE : Provider Edge
RT : Route Target RT : Route Target
RD : Route Distinguisher RD : Route Distinguisher
VPN : Virtual Private Network VPN : Virtual Private Network
VRF : Virtual Routing and Forwarding VRF : Virtual Routing and Forwarding
"; ";
revision 2017-10-18 {
description
"Removed state containers per NMDA aligntment" +
"Changes for network instance ni-type alignment" +
"Other cleanups";
reference "";
}
revision 2017-04-25 { revision 2017-04-25 {
description description
"Reused ietf-roting-types.yang for vpn route-targets" + "Reused ietf-roting-types.yang for vpn route-targets" +
" and route distinguisher types"; " and route distinguisher types";
reference ""; reference "";
} }
revision 2016-09-09 { revision 2016-09-09 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for BGP L3VPN config management"; "RFC XXXX: A YANG Data Model for BGP L3VPN config management";
} }
//RD
grouping route-distinguisher-params {
description "BGP route distinguisher";
container route-distinguisher {
description "Route distinguisher value as per RFC4364";
container config {
description
"Configuration parameters for route distinguisher";
leaf rd {
type rt-types:route-distinguisher;
description "Route distinguisher value as per RFC4364";
}
}
container state {
config "false" ;
description
"State information for route distinguisher";
leaf rd {
type rt-types:route-distinguisher;
description "Route distinguisher value";
}
}
}
}
//Label mode //Label mode
typedef bgp-label-mode { typedef bgp-label-mode {
type enumeration { type enumeration {
enum per-ce { enum per-ce {
description "Allocate labels per CE"; description "Allocate labels per CE";
} }
enum per-route { enum per-route {
description "Allocate labels per prefix"; description "Allocate labels per prefix";
} }
enum per-vpn { enum per-vpn {
skipping to change at page 13, line 4 skipping to change at page 10, line 41
type enumeration { type enumeration {
enum per-ce { enum per-ce {
description "Allocate labels per CE"; description "Allocate labels per CE";
} }
enum per-route { enum per-route {
description "Allocate labels per prefix"; description "Allocate labels per prefix";
} }
enum per-vpn { enum per-vpn {
description "Allocate labels per VRF"; description "Allocate labels per VRF";
} }
} }
description "BGP label allocation mode"; description "BGP label allocation mode";
} }
//Fwding mode //RD
typedef fwd-mode-type { grouping route-distinguisher-params {
type enumeration { description "Route distinguisher value as per RFC4364";
enum mpls { leaf rd {
description "Forwarding mode mpls"; type union {
// Either RD value as per IETF routing types or AUTO assigned value
type rt-types:route-distinguisher;
type enumeration {
enum auto-assigned {
description "Assigned by system";
}
}
} }
description "Route distinguisher value as per RFC4364";
}
leaf auto-rd {
type rt-types:route-distinguisher;
config false;
description
"Automatically assigned RD value when rd AUTO is configured";
} }
description
"Enable forwarding mode under ASBR facing interface";
} }
//Fwding mode
grouping forwarding-mode { grouping forwarding-mode {
description "Forwarding mode of interface for ASBR scenario"; description "Forwarding mode of interface for ASBR scenario";
container forwarding-mode { leaf forwarding-mode {
description "Forwarding mode of interface for ASBR scenario"; type enumeration {
container config { enum mpls {
description "Configuration of Forwarding mode"; description "Forwarding mode mpls";
leaf forwarding-mode {
type fwd-mode-type;
description "Forwarding mode for this interface";
}
}
container state {
config "false";
description "State information of Forwarding mode";
leaf forwarding-mode {
type fwd-mode-type;
description "Forwarding mode for this interface";
} }
} }
description "Forwarding mode of interface for ASBR scenario";
} }
} }
grouping label-security { grouping label-security {
description "Mpls label security for ASBR option B scenario"; description "Mpls label security for ASBR option B scenario";
container mpls-label-security { container mpls-label-security {
description "MPLS label secruity"; description "MPLS label secruity";
container config { leaf rpf {
description "Configuration parameters"; type boolean;
leaf rpf { description "Enable MPLS label security rpf on interface";
type boolean;
description "Enable MPLS label security rpf on interface";
}
}
container state {
config "false";
description "State information";
leaf rpf {
type boolean;
description "MPLS label security rpf on interface";
}
} }
} }
} }
//per VPN instance table limit under BGP //per VPN instance table limit under BGP
grouping prefix-limit { grouping vpn-pfx-limit {
description description "Per VPN instance table limit under BGP";
"The prefix limit command sets a limit on the maximum container vpn-prefix-limit {
description
"The prefix limit config sets a limit on the maximum
number of prefixes supported in the existing VPN number of prefixes supported in the existing VPN
instance, preventing the PE from importing excessive instance, preventing the PE from importing excessive
VPN route prefixes. VPN route prefixes.
"; ";
leaf prefix-limit-number { leaf prefix-limit-number {
type uint32 { type uint32 {
range "1..4294967295"; range "1..4294967295";
} }
description description
"Specifies the maximum number of prefixes supported in the "Specifies the maximum number of prefixes supported in the
VPN instance IPv4 or IPv6 address family."; VPN instance IPv4 or IPv6 address family.";
} }
choice prefix-limit-action { choice prefix-limit-action {
description "."; description ".";
case enable-alert-percent { case enable-alert-percent {
leaf alert-percent-value { leaf alert-percent-value {
type uint8 { type rt-types:percentage;
range "1..100"; description
} "Specifies the proportion of the alarm threshold to the
description maximum number of prefixes.";
"Specifies the proportion of the alarm threshold to the }
maximum number of prefixes."; leaf route-unchanged {
} type boolean;
leaf route-unchanged { default "false";
type boolean; description
default "false";
description
"Indicates that the routing table remains unchanged. "Indicates that the routing table remains unchanged.
By default, route-unchanged is not configured. When By default, route-unchanged is not configured. When
the number of prefixes in the routing table is the number of prefixes in the routing table is
greater than the value of the parameter number, greater than the value of the parameter number,
routes are processed as follows: routes are processed as follows:
(1)If route-unchanged is configured, routes in the (1)If route-unchanged is configured, routes in the
routing table remain unchanged. routing table remain unchanged.
(2)If route-unchanged is not configured, all routes (2)If route-unchanged is not configured, all routes
in the routing table are deleted and then in the routing table are deleted and then
re-added."; re-added.";
}
} }
} case enable-simple-alert {
case enable-simple-alert { leaf simple-alert {
leaf simple-alert { type boolean;
type boolean; default "false";
default "false"; description
description
"Indicates that when the number of VPN route prefixes "Indicates that when the number of VPN route prefixes
exceeds number, prefixes can still join the VPN exceeds number, prefixes can still join the VPN
routing table and alarms are displayed."; routing table and alarms are displayed.";
}
} }
} }
} }
} }
grouping vpn-pfx-limit { grouping global-imports {
description "Per VPN instance table limit under BGP"; description "Grouping for imports from global routing table";
container vpn-prefix-limit { container import-from-global {
description "Prefix limit for this table"; description "Import from global routing table";
container config { leaf enable {
description "Config parameters"; type boolean;
uses prefix-limit; description "Enable";
} }
container state { leaf advertise-as-vpn {
config "false"; type boolean;
description "State parameters"; description
uses prefix-limit; "Advertise routes imported from global table as VPN routes";
}
leaf route-policy {
type string;
description "Route policy as filter for importing routes";
} }
}
}
grouping route-target-set {
description
"Extended community route-target set ";
list rts {
key "rt" ;
description
"List of route-targets" ;
leaf rt {
type rt-types:route-target;
description "Route target extended community as per RFC4360";
leaf bgp-valid-route {
type boolean;
description
"Enable all valid routes (including non-best paths) to be
candidate for import";
} }
leaf rt-type {
leaf protocol {
type enumeration { type enumeration {
enum import { enum ALL {
description "Route target is for import routes"; value "0";
description "ALL:";
} }
enum export { enum Direct {
description "Route target is for export routes"; value "1";
description "Direct:";
} }
enum both { enum OSPF {
description value "2";
"Route target is for both import and export routes"; description "OSPF:";
}
enum ISIS {
value "3";
description "ISIS:";
}
enum Static {
value "4";
description "Static:";
}
enum RIP {
value "5";
description "RIP:";
}
enum BGP {
value "6";
description "BGP:";
}
enum OSPFV3 {
value "7";
description "OSPFV3:";
}
enum RIPNG {
value "8";
description "RIPNG:";
} }
} }
description "Route target type"; description
} "Specifies the protocol from which routes are imported.
} At present, In the IPv4 unicast address family view,
leaf route-policy { the protocol can be IS-IS, static, direct and BGP.";
type string;
description
"Reference to the policy containing set of routes.
TBD: leafref to policy entry in IETF policy model";
}
}
grouping import-from-gbl {
description "Import from global routing table";
leaf enable {
type boolean;
description "Enable";
}
leaf advertise-as-vpn {
type boolean;
description
"Advertise routes imported from global table as VPN routes";
}
leaf route-policy {
type string;
description "Route policy as filter for importing routes";
}
leaf bgp-valid-route {
type boolean;
description
"Enable all valid routes (including non-best paths) to be
candidate for import";
}
leaf protocol {
type enumeration {
enum ALL {
value "0";
description "ALL:";
}
enum Direct {
value "1";
description "Direct:";
}
enum OSPF {
value "2";
description "OSPF:";
}
enum ISIS {
value "3";
description "ISIS:";
}
enum Static {
value "4";
description "Static:";
}
enum RIP {
value "5";
description "RIP:";
}
enum BGP {
value "6";
description "BGP:";
}
enum OSPFV3 {
value "7";
description "OSPFV3:";
}
enum RIPNG {
value "8";
description "RIPNG:";
}
}
description
"Specifies the protocol from which routes are imported.
At present, In the IPv4 unicast address family view,
the protocol can be IS-IS,static, direct and BGP.";
} }
leaf instance { leaf instance {
type string; type string;
description description
"Specifies the instance id of the protocol"; "Specifies the instance id of the protocol";
} }
}
grouping global-imports {
description "Grouping for imports from global routing table";
container import-from-global {
description "Import from global routing table";
container config {
description "Configuration";
uses import-from-gbl;
}
container state {
config "false";
description "State";
uses import-from-gbl;
}
}
}
grouping export-to-gbl {
description "Export routes to default VRF";
leaf enable {
type boolean;
description "Enable";
} }
} }
grouping global-exports { grouping global-exports {
description "Grouping for exports routes to global table"; description "Grouping for exports routes to global table";
container export-to-global { container export-to-global {
description "Export to global routing table"; description "Export to global routing table";
container config { leaf enable {
description "Configuration"; type boolean;
uses export-to-gbl; description "Enable";
}
container state {
config "false";
description "State";
uses export-to-gbl;
} }
} }
} }
grouping route-target-params { grouping route-target-params {
description "Grouping to specify rules for route import and export"; description "Grouping to specify rules for route import and export";
container route-targets { container vpn-targets {
description description
"Set of route-targets to match for import and export routes "Set of route-targets to match for import and export routes
to/from VRF"; to/from VRF";
container config { uses rt-types:vpn-route-targets;
description leaf route-policy {
"Configuration of route targets"; type string;
uses route-target-set ;
}
container state {
config "false" ;
description description
"State information for route targets"; "Reference to the route policy containing set of route-targets.
uses route-target-set ; TBD: leafref to policy xpath in IETF route policy model";
} }
} }
} }
grouping route-tbl-limit-params { grouping route-tbl-limit-params {
description "Grouping for VPN table prefix limit config"; description "Grouping for VPN table prefix limit config";
leaf routing-table-limit-number { leaf routing-table-limit-number {
type uint32 { type uint32 {
range "1..4294967295"; range "1..4294967295";
}
description
"Specifies the maximum number of routes supported by a
VPN instance. ";
}
choice routing-table-limit-action {
description ".";
case enable-alert-percent {
leaf alert-percent-value {
type rt-types:percentage;
description
"Specifies the percentage of the maximum number of
routes. When the maximum number of routes that join
the VPN instance is up to the value
(number*alert-percent)/100, the system prompts
alarms. The VPN routes can be still added to the
routing table, but after the number of routes
reaches number, the subsequent routes are
dropped.";
} }
description }
"Specifies the maximum number of routes supported by a case enable-simple-alert {
VPN instance. "; leaf simple-alert {
type boolean;
description
"Indicates that when VPN routes exceed number, routes
can still be added into the routing table, but the
system prompts alarms.
However, after the total number of VPN routes and
network public routes reaches the unicast route limit
specified in the License, the subsequent VPN routes
are dropped.";
} }
}
}
}
choice routing-table-limit-action { grouping routing-tbl-limit {
description "."; description ".";
case enable-alert-percent { container routing-table-limit {
leaf alert-percent-value { description
type uint8 { "The routing-table limit command sets a limit on the maximum
range "1..100"; number of routes that the IPv4 or IPv6 address family of a
} VPN instance can support.
description By default, there is no limit on the maximum number of
"Specifies the percentage of the maximum number of routes that the IPv4 or IPv6 address family of a VPN
routes. When the maximum number of routes that join instance can support, but the total number of private
the VPN instance is up to the value network and public network routes on a device cannot
(number*alert-percent)/100, the system prompts exceed the allowed maximum number of unicast routes.";
alarms. The VPN routes can be still added to the
routing table, but after the number of routes
reaches number, the subsequent routes are
dropped.";
}
}
case enable-simple-alert {
leaf simple-alert {
type boolean;
description
"Indicates that when VPN routes exceed number, routes
can still be added into the routing table, but the
system prompts alarms.
However, after the total number of VPN routes and
network public routes reaches the unicast route limit
specified in the License, the subsequent VPN routes
are dropped.";
}
}
}
}
grouping routing-tbl-limit { uses route-tbl-limit-params;
description "."; }
container routing-table-limit { }
description
"The routing-table limit command sets a limit on the maximum
number of routes that the IPv4 or IPv6 address family of a
VPN instance can support.
By default, there is no limit on the maximum number of
routes that the IPv4 or IPv6 address family of a VPN
instance can support, but the total number of private
network and public network routes on a device cannot
exceed the allowed maximum number of unicast routes.";
container config {
description "Config parameters";
uses route-tbl-limit-params;
}
container state {
config "false";
description "State parameters";
uses route-tbl-limit-params;
}
}
}
// Tunnel policy parameters // Tunnel policy parameters
grouping tunnel-params { grouping tunnel-params {
description "Tunnel parameters"; description "Tunnel parameters";
container tunnel-params { container tunnel-params {
description "Tunnel config parameters"; description "Tunnel config parameters";
container config { leaf tunnel-policy {
description "configuration parameters"; type string;
leaf tunnel-policy { description
type string; "Tunnel policy to steer the VPN traffic into specific tunnel";
description }
"Tunnel policy to steer the VPN traffic into specific tunnel"; }
}
}
container state {
config "false";
description "state parameters";
leaf tunnel-policy {
type string;
description
"Tunnel policy to steer the VPN traffic into specific tunnel";
}
}
}
} }
// Grouping for the L3vpn specific parameters under VRF // Grouping for the L3vpn specific parameters under VRF
// (network-instance) // (network-instance)
grouping l3vpn-vrf-params { grouping l3vpn-vrf-params {
description "Specify route filtering rules for import/export"; description "Specify route filtering rules for import/export";
container ipv4 { container ipv4 {
description description
"Specify route filtering rules for import/export"; "Specify route filtering rules for import/export";
container unicast { container unicast {
description description
"Specify route filtering rules for import/export"; "Specify route filtering rules for import/export";
uses route-target-params; uses route-target-params;
uses global-imports; uses global-imports;
uses global-exports; uses global-exports;
uses routing-tbl-limit; uses routing-tbl-limit;
uses tunnel-params; uses tunnel-params;
}
} }
container ipv6 { }
description container ipv6 {
"Ipv6 address family specific rules for import/export"; description
container unicast { "Ipv6 address family specific rules for import/export";
description "Ipv6 unicast address family"; container unicast {
uses route-target-params; description "Ipv6 unicast address family";
uses global-imports; uses route-target-params;
uses global-exports; uses global-imports;
uses routing-tbl-limit; uses global-exports;
uses tunnel-params; uses routing-tbl-limit;
} uses tunnel-params;
} }
}
} }
grouping bgp-label-mode { grouping bgp-label-mode {
description "MPLS/VPN label allocation mode"; description "MPLS/VPN label allocation mode";
container config { leaf label-mode {
description type bgp-label-mode;
"Configuration parameters for label allocation mode"; description "Label allocation mode";
leaf label-mode { }
type bgp-label-mode;
description "Label allocation mode";
}
}
container state {
config "false" ;
description "State information for label allocation mode";
leaf label-mode {
type bgp-label-mode;
description "Label allocation mode";
}
}
} }
grouping retain-route-targets { grouping retain-route-targets {
description "Grouping for route target accept"; description "Grouping for route target accept";
container retain-route-targets { container retain-route-targets {
description "Control route target acceptance behavior for ASBRs"; description "Control route target acceptance behavior for ASBRs";
container config { leaf all {
description type empty;
"Configuration parameters for retaining route targets"; description "Disable filtering of all route-targets";
leaf all {
type empty;
description "Disable filtering of all route-targets";
}
leaf route-policy {
type string;
description "Filter routes as per filter policy name
TBD: leafref to IETF routing policy model";
}
} }
container state { leaf route-policy {
config "false" ; type string;
description "State information for retaining route targets"; description "Filter routes as per filter policy name
leaf all { TBD: leafref to IETF routing policy model";
type empty;
description "Disable filtering of all route-targets";
}
leaf route-policy {
type string;
description "Filter routes as per filter policy name";
}
} }
} }
} }
grouping nexthop-opts {
description "Next hop control options for inter-as route exchange";
leaf next-hop-self {
type boolean;
description
"Set nexthop of the route to self when advertising routes";
}
leaf next-hop-unchanged {
type boolean;
description "Enforce no nexthop change when advertising routes";
}
}
grouping asbr-nexthop-options {
description "Nexthop parameters for inter-as VPN options ";
container nexthop-options {
description "Nexthop related options for inter-as options";
container config {
description "Configuration parameters for nexthop options";
uses nexthop-opts;
}
container state {
config "false";
description "State information for nexthop options" ;
uses nexthop-opts;
}
}
}
// //
// VRF specific parameters. // VRF specific parameters.
// RD and RTs and route import-export rules are added under // RD and RTs and route import-export rules are added under
// network instance container in network instance model, hence // network instance container in network instance model, hence
// per VRF scoped // per VRF scoped
augment "/ni:network-instances/ni:network-instance" { augment "/ni:network-instances/ni:network-instance/ni:ni-type" {
description description
"Augment network instance for per VRF L3vpn parameters"; "Augment network instance for per VRF L3vpn parameters";
container l3vpn { case l3vpn {
//Enable this check once network instance model has container l3vpn {
//identify defined for VRF type
//when "../type='rt:vrf-network-instance'" {
// description
// "This container is only valid for vrf routing instance.";
//}
description "Configuration of L3VPN specific parameters"; description "Configuration of L3VPN specific parameters";
uses route-distinguisher-params; uses route-distinguisher-params;
uses l3vpn-vrf-params ; uses l3vpn-vrf-params ;
}
} }
} }
// bgp mpls forwarding enable required for inter-as option AB. // bgp mpls forwarding enable required for inter-as option AB.
augment "/if:interfaces/if:interface" { augment "/if:interfaces/if:interface" {
description description
"BGP mpls forwarding mode configuration on interface for "BGP mpls forwarding mode configuration on interface for
ASBR scenario"; ASBR scenario";
uses forwarding-mode ; uses forwarding-mode ;
uses label-security; uses label-security;
} }
skipping to change at page 24, line 42 skipping to change at page 19, line 4
augment "/bgp:bgp/bgp:global/bgp:afi-safis/" + augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +
"bgp:afi-safi/bgp:l3vpn-ipv6-unicast" { "bgp:afi-safi/bgp:l3vpn-ipv6-unicast" {
description "Retain route targets for ASBR scenario"; description "Retain route targets for ASBR scenario";
uses retain-route-targets; uses retain-route-targets;
uses vpn-pfx-limit; uses vpn-pfx-limit;
} }
// Label allocation mode configuration. Certain AFs only. // Label allocation mode configuration. Certain AFs only.
augment "/bgp:bgp/bgp:global/bgp:afi-safis/" + augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +
"bgp:afi-safi/bgp:ipv4-unicast" { "bgp:afi-safi/bgp:ipv4-unicast" {
description
"Augment BGP global AF mode for label allocation mode description
configuration"; "Augment BGP global AF mode for label allocation mode
configuration";
uses bgp-label-mode ; uses bgp-label-mode ;
uses routing-tbl-limit; uses routing-tbl-limit;
} }
augment "/bgp:bgp/bgp:global/bgp:afi-safis/" + augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +
"bgp:afi-safi/bgp:ipv6-unicast" { "bgp:afi-safi/bgp:ipv6-unicast" {
description description
"Augment BGP global AF mode for label allocation mode "Augment BGP global AF mode for label allocation mode
configuration"; configuration";
uses bgp-label-mode ; uses bgp-label-mode ;
uses routing-tbl-limit; uses routing-tbl-limit;
} }
// Nexthop options for the inter-as ASBR peering.
augment "/bgp:bgp/bgp:neighbors/bgp:neighbor" {
description
"Augment BGP NBR mode with nexthop options for inter-as ASBRs";
uses asbr-nexthop-options;
}
augment "/bgp:bgp/bgp:peer-groups/bgp:peer-group" {
description
"Augment BGP peer-group mode with nexthop options for inter-as
ASBRs";
uses asbr-nexthop-options;
}
augment "/bgp:bgp/bgp:neighbors/bgp:neighbor/" +
"bgp:afi-safis/bgp:afi-safi" {
description
"Augment BGP NBR AF mode with nexthop options for inter-as
ASBRs";
uses asbr-nexthop-options;
}
augment "/bgp:bgp/bgp:peer-groups/bgp:peer-group/" +
"bgp:afi-safis/bgp:afi-safi" {
description
"Augment BGP peer-group AF mode with nexthop options for inter-as
ASBRs";
uses asbr-nexthop-options;
}
} }
<CODE ENDS> <CODE ENDS>
5. IANA Considerations 5. IANA Considerations
6. Security Considerations 6. Security Considerations
The transport protocol used for sending the BGP L3VPN data MUST The transport protocol used for sending the BGP L3VPN data MUST
support authentication and SHOULD support encryption. The data-model support authentication and SHOULD support encryption. The data-model
skipping to change at page 26, line 24 skipping to change at page 20, line 6
8.1. Normative References 8.1. Normative References
[I-D.ietf-idr-bgp-model] [I-D.ietf-idr-bgp-model]
Shaikh, A., Shakir, R., Patel, K., Hares, S., D'Souza, K., Shaikh, A., Shakir, R., Patel, K., Hares, S., D'Souza, K.,
Bansal, D., Clemm, A., Zhdankin, A., Jethanandani, M., and Bansal, D., Clemm, A., Zhdankin, A., Jethanandani, M., and
X. Liu, "BGP Model for Service Provider Networks", draft- X. Liu, "BGP Model for Service Provider Networks", draft-
ietf-idr-bgp-model-02 (work in progress), July 2016. ietf-idr-bgp-model-02 (work in progress), July 2016.
[I-D.ietf-rtgwg-ni-model] [I-D.ietf-rtgwg-ni-model]
Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic, Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X.
"Network Instance Model", draft-ietf-rtgwg-ni-model-00 Liu, "YANG Network Instances", draft-ietf-rtgwg-ni-
(work in progress), June 2016. model-04 (work in progress), September 2017.
[I-D.ietf-rtgwg-routing-types] [I-D.ietf-rtgwg-routing-types]
Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger,
"Routing Area Common YANG Data Types", draft-ietf-rtgwg- "Routing Area Common YANG Data Types", draft-ietf-rtgwg-
routing-types-02 (work in progress), March 2017. routing-types-17 (work in progress), October 2017.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private
Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February
2006, <http://www.rfc-editor.org/info/rfc4364>. 2006, <https://www.rfc-editor.org/info/rfc4364>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<http://www.rfc-editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<http://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
8.2. Informative References 8.2. Informative References
[RFC2547] Rosen, E. and Y. Rekhter, "BGP/MPLS VPNs", RFC 2547, [RFC2547] Rosen, E. and Y. Rekhter, "BGP/MPLS VPNs", RFC 2547,
DOI 10.17487/RFC2547, March 1999, DOI 10.17487/RFC2547, March 1999,
<http://www.rfc-editor.org/info/rfc2547>. <https://www.rfc-editor.org/info/rfc2547>.
[RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A
Border Gateway Protocol 4 (BGP-4)", RFC 4271, Border Gateway Protocol 4 (BGP-4)", RFC 4271,
DOI 10.17487/RFC4271, January 2006, DOI 10.17487/RFC4271, January 2006,
<http://www.rfc-editor.org/info/rfc4271>. <https://www.rfc-editor.org/info/rfc4271>.
[RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter,
"Multiprotocol Extensions for BGP-4", RFC 4760, "Multiprotocol Extensions for BGP-4", RFC 4760,
DOI 10.17487/RFC4760, January 2007, DOI 10.17487/RFC4760, January 2007,
<http://www.rfc-editor.org/info/rfc4760>. <https://www.rfc-editor.org/info/rfc4760>.
Authors' Addresses Authors' Addresses
Dhanendra Jain Dhanendra Jain
Cisco Cisco
170 W. Tasman Drive 170 W. Tasman Drive
San Jose, CA 95134 San Jose, CA 95134
USA USA
Email: dhjain@cisco.com Email: dhjain@cisco.com
 End of changes. 84 change blocks. 
681 lines changed or deleted 357 lines changed or added

This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/