summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8049.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc8049.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc8049.txt')
-rw-r--r--doc/rfc/rfc8049.txt8795
1 files changed, 8795 insertions, 0 deletions
diff --git a/doc/rfc/rfc8049.txt b/doc/rfc/rfc8049.txt
new file mode 100644
index 0000000..0271878
--- /dev/null
+++ b/doc/rfc/rfc8049.txt
@@ -0,0 +1,8795 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) S. Litkowski
+Request for Comments: 8049 Orange Business Services
+Category: Standards Track L. Tomotaki
+ISSN: 2070-1721 Verizon
+ K. Ogaki
+ KDDI Corporation
+ February 2017
+
+
+ YANG Data Model for L3VPN Service Delivery
+
+Abstract
+
+ This document defines a YANG data model that can be used for
+ communication between customers and network operators and to deliver
+ a Layer 3 provider-provisioned VPN service. This document is limited
+ to BGP PE-based VPNs as described in RFCs 4026, 4110, and 4364. This
+ model is intended to be instantiated at the management system to
+ deliver the overall service. It is not a configuration model to be
+ used directly on network elements. This model provides an abstracted
+ view of the Layer 3 IP VPN service configuration components. It will
+ be up to the management system to take this model as input and use
+ specific configuration models to configure the different network
+ elements to deliver the service. How the configuration of network
+ elements is done is out of scope for this document.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ http://www.rfc-editor.org/info/rfc8049.
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 1]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+Copyright Notice
+
+ Copyright (c) 2017 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+Table of Contents
+
+ 1. Introduction ....................................................4
+ 1.1. Terminology ................................................4
+ 1.2. Requirements Language ......................................5
+ 1.3. Tree Diagrams ..............................................5
+ 2. Acronyms ........................................................5
+ 3. Definitions .....................................................7
+ 4. Layer 3 IP VPN Service Model ....................................8
+ 5. Service Data Model Usage ........................................9
+ 6. Design of the Data Model .......................................10
+ 6.1. Features and Augmentation .................................18
+ 6.2. VPN Service Overview ......................................18
+ 6.2.1. VPN Service Topology ...............................18
+ 6.2.1.1. Route Target Allocation ...................19
+ 6.2.1.2. Any-to-Any ................................20
+ 6.2.1.3. Hub and Spoke .............................20
+ 6.2.1.4. Hub and Spoke Disjoint ....................21
+ 6.2.2. Cloud Access .......................................22
+ 6.2.3. Multicast Service ..................................24
+ 6.2.4. Extranet VPNs ......................................26
+ 6.3. Site Overview .............................................27
+ 6.3.1. Devices and Locations ..............................29
+ 6.3.2. Site Network Accesses ..............................30
+ 6.3.2.1. Bearer ....................................30
+ 6.3.2.2. Connection ................................31
+ 6.3.2.3. Inheritance of Parameters Defined at
+ Site Level and Site Network Access Level ..32
+ 6.4. Site Role .................................................32
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 2]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ 6.5. Site Belonging to Multiple VPNs ...........................33
+ 6.5.1. Site VPN Flavor ....................................33
+ 6.5.1.1. Single VPN Attachment:
+ site-vpn-flavor-single ....................33
+ 6.5.1.2. MultiVPN Attachment:
+ site-vpn-flavor-multi .....................33
+ 6.5.1.3. SubVPN Attachment: site-vpn-flavor-sub ....34
+ 6.5.1.4. NNI: site-vpn-flavor-nni ..................36
+ 6.5.2. Attaching a Site to a VPN ..........................37
+ 6.5.2.1. Referencing a VPN .........................37
+ 6.5.2.2. VPN Policy ................................38
+ 6.6. Deciding Where to Connect the Site ........................40
+ 6.6.1. Constraint: Device .................................41
+ 6.6.2. Constraint/Parameter: Site Location ................41
+ 6.6.3. Constraint/Parameter: Access Type ..................42
+ 6.6.4. Constraint: Access Diversity .......................43
+ 6.6.5. Infeasible Access Placement ........................49
+ 6.6.6. Examples of Access Placement .......................50
+ 6.6.6.1. Multihoming ...............................50
+ 6.6.6.2. Site Offload ..............................53
+ 6.6.6.3. Parallel Links ............................59
+ 6.6.6.4. SubVPN with Multihoming ...................60
+ 6.6.7. Route Distinguisher and VRF Allocation .............64
+ 6.7. Site Network Access Availability ..........................64
+ 6.8. Traffic Protection ........................................66
+ 6.9. Security ..................................................66
+ 6.9.1. Authentication .....................................67
+ 6.9.2. Encryption .........................................67
+ 6.10. Management ...............................................68
+ 6.11. Routing Protocols ........................................68
+ 6.11.1. Handling of Dual Stack ............................69
+ 6.11.2. LAN Directly Connected to SP Network ..............70
+ 6.11.3. LAN Directly Connected to SP Network with
+ Redundancy ........................................70
+ 6.11.4. Static Routing ....................................70
+ 6.11.5. RIP Routing .......................................71
+ 6.11.6. OSPF Routing ......................................71
+ 6.11.7. BGP Routing .......................................73
+ 6.12. Service ..................................................75
+ 6.12.1. Bandwidth .........................................75
+ 6.12.2. QoS ...............................................75
+ 6.12.2.1. QoS Classification .......................75
+ 6.12.2.2. QoS Profile ..............................78
+ 6.12.3. Multicast .........................................81
+ 6.13. Enhanced VPN Features ....................................82
+ 6.13.1. Carriers' Carriers ................................82
+ 6.14. External ID References ...................................83
+
+
+
+
+Litkowski, et al. Standards Track [Page 3]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ 6.15. Defining NNIs ............................................83
+ 6.15.1. Defining an NNI with the Option A Flavor ..........85
+ 6.15.2. Defining an NNI with the Option B Flavor ..........88
+ 6.15.3. Defining an NNI with the Option C Flavor ..........91
+ 7. Service Model Usage Example ....................................92
+ 8. Interaction with Other YANG Modules ............................98
+ 9. YANG Module ...................................................102
+ 10. Security Considerations ......................................154
+ 11. IANA Considerations ..........................................155
+ 12. References ...................................................155
+ 12.1. Normative References ....................................155
+ 12.2. Informative References ..................................157
+ Acknowledgements .................................................157
+ Contributors .....................................................157
+ Authors' Addresses ...............................................157
+
+1. Introduction
+
+ This document defines a Layer 3 VPN service data model written in
+ YANG. The model defines service configuration elements that can be
+ used in communication protocols between customers and network
+ operators. Those elements can also be used as input to automated
+ control and configuration applications.
+
+1.1. Terminology
+
+ The following terms are defined in [RFC6241] and are not redefined
+ here:
+
+ o client
+
+ o configuration data
+
+ o server
+
+ o state data
+
+ The following terms are defined in [RFC7950] and are not redefined
+ here:
+
+ o augment
+
+ o data model
+
+ o data node
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 4]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ The terminology for describing YANG data models is found in
+ [RFC7950].
+
+ This document presents some configuration examples using XML
+ representation.
+
+1.2. Requirements Language
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in [RFC2119].
+
+1.3. Tree Diagrams
+
+ A simplified graphical representation of the data model is presented
+ in Section 6.
+
+ The meanings of the symbols in these diagrams are as follows:
+
+ o Brackets "[" and "]" enclose list keys.
+
+ o Curly braces "{" and "}" contain names of optional features that
+ make the corresponding node conditional.
+
+ o Abbreviations before data node names: "rw" means configuration
+ data (read-write), and "ro" means state data (read-only).
+
+ o Symbols after data node names: "?" means an optional node, and "*"
+ denotes a "list" or "leaf-list".
+
+ o Parentheses enclose choice and case nodes, and case nodes are also
+ marked with a colon (":").
+
+ o Ellipsis ("...") stands for contents of subtrees that are not
+ shown.
+
+2. Acronyms
+
+ AAA: Authentication, Authorization, and Accounting.
+
+ ACL: Access Control List.
+
+ ADSL: Asymmetric DSL.
+
+ AH: Authentication Header.
+
+ AS: Autonomous System.
+
+
+
+
+Litkowski, et al. Standards Track [Page 5]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ ASBR: Autonomous System Border Router.
+
+ ASM: Any-Source Multicast.
+
+ BAS: Broadband Access Switch.
+
+ BFD: Bidirectional Forwarding Detection.
+
+ BGP: Border Gateway Protocol.
+
+ BSR: Bootstrap Router.
+
+ CE: Customer Edge.
+
+ CLI: Command Line Interface.
+
+ CsC: Carriers' Carriers.
+
+ CSP: Cloud Service Provider.
+
+ DHCP: Dynamic Host Configuration Protocol.
+
+ DSLAM: Digital Subscriber Line Access Multiplexer.
+
+ ESP: Encapsulating Security Payload.
+
+ GRE: Generic Routing Encapsulation.
+
+ IGMP: Internet Group Management Protocol.
+
+ LAN: Local Area Network.
+
+ MLD: Multicast Listener Discovery.
+
+ MTU: Maximum Transmission Unit.
+
+ NAT: Network Address Translation.
+
+ NETCONF: Network Configuration Protocol.
+
+ NNI: Network-to-Network Interface.
+
+ OAM: Operations, Administration, and Maintenance.
+
+ OSPF: Open Shortest Path First.
+
+ OSS: Operations Support System.
+
+
+
+
+Litkowski, et al. Standards Track [Page 6]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ PE: Provider Edge.
+
+ PIM: Protocol Independent Multicast.
+
+ POP: Point of Presence.
+
+ QoS: Quality of Service.
+
+ RD: Route Distinguisher.
+
+ RIP: Routing Information Protocol.
+
+ RP: Rendezvous Point.
+
+ RT: Route Target.
+
+ SFTP: Secure FTP.
+
+ SLA: Service Level Agreement.
+
+ SLAAC: Stateless Address Autoconfiguration.
+
+ SP: Service Provider.
+
+ SPT: Shortest Path Tree.
+
+ SSM: Source-Specific Multicast.
+
+ VM: Virtual Machine.
+
+ VPN: Virtual Private Network.
+
+ VRF: VPN Routing and Forwarding.
+
+ VRRP: Virtual Router Redundancy Protocol.
+
+3. Definitions
+
+ Customer Edge (CE) Device: A CE is equipment dedicated to a
+ particular customer; it is directly connected (at Layer 3) to one or
+ more PE devices via attachment circuits. A CE is usually located at
+ the customer premises and is usually dedicated to a single VPN,
+ although it may support multiple VPNs if each one has separate
+ attachment circuits.
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 7]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ Provider Edge (PE) Device: A PE is equipment managed by the SP; it
+ can support multiple VPNs for different customers and is directly
+ connected (at Layer 3) to one or more CE devices via attachment
+ circuits. A PE is usually located at an SP point of presence (POP)
+ and is managed by the SP.
+
+ PE-Based VPNs: The PE devices know that certain traffic is VPN
+ traffic. They forward the traffic (through tunnels) based on the
+ destination IP address of the packet and, optionally, based on other
+ information in the IP header of the packet. The PE devices are
+ themselves the tunnel endpoints. The tunnels may make use of various
+ encapsulations to send traffic over the SP network (such as, but not
+ restricted to, GRE, IP-in-IP, IPsec, or MPLS tunnels).
+
+4. Layer 3 IP VPN Service Model
+
+ A Layer 3 IP VPN service is a collection of sites that are authorized
+ to exchange traffic between each other over a shared IP
+ infrastructure. This Layer 3 VPN service model aims at providing a
+ common understanding of how the corresponding IP VPN service is to be
+ deployed over the shared infrastructure. This service model is
+ limited to BGP PE-based VPNs as described in [RFC4026], [RFC4110],
+ and [RFC4364].
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 8]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+5. Service Data Model Usage
+
+ l3vpn-svc |
+ Model |
+ |
+ +------------------+ +-----+
+ | Orchestration | < --- > | OSS |
+ +------------------+ +-----+
+ | |
+ +----------------+ |
+ | Config manager | |
+ +----------------+ |
+ | |
+ | NETCONF/CLI ...
+ | |
+ +------------------------------------------------+
+ Network
+
+ +++++++
+ + AAA +
+ +++++++
+
+ ++++++++ Bearer ++++++++ ++++++++ ++++++++
+ + CE A + ----------- + PE A + + PE B + ---- + CE B +
+ ++++++++ Connection ++++++++ ++++++++ ++++++++
+
+ Site A Site B
+
+ The idea of the L3 IP VPN service model is to propose an abstracted
+ interface between customers and network operators to manage
+ configuration of components of an L3VPN service. A typical scenario
+ would be to use this model as an input for an orchestration layer
+ that will be responsible for translating it to an orchestrated
+ configuration of network elements that will be part of the service.
+ The network elements can be routers but can also be servers (like
+ AAA); the network's configuration is not limited to these examples.
+ The configuration of network elements can be done via the CLI,
+ NETCONF/RESTCONF [RFC6241] [RFC8040] coupled with YANG data models of
+ a specific configuration (BGP, VRF, BFD, etc.), or some other
+ technique, as preferred by the operator.
+
+ The usage of this service model is not limited to this example; it
+ can be used by any component of the management system but not
+ directly by network elements.
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 9]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6. Design of the Data Model
+
+ The YANG module is divided into two main containers: "vpn-services"
+ and "sites".
+
+ The "vpn-service" list under the vpn-services container defines
+ global parameters for the VPN service for a specific customer.
+
+ A "site" is composed of at least one "site-network-access" and, in
+ the case of multihoming, may have multiple site-network-access
+ points. The site-network-access attachment is done through a
+ "bearer" with an "ip-connection" on top. The bearer refers to
+ properties of the attachment that are below Layer 3, while the
+ connection refers to properties oriented to the Layer 3 protocol.
+ The bearer may be allocated dynamically by the SP, and the customer
+ may provide some constraints or parameters to drive the placement of
+ the access.
+
+ Authorization of traffic exchange is done through what we call a VPN
+ policy or VPN service topology defining routing exchange rules
+ between sites.
+
+ The figure below describes the overall structure of the YANG module:
+
+ module: ietf-l3vpn-svc
+ +--rw l3vpn-svc
+ +--rw vpn-services
+ | +--rw vpn-service* [vpn-id]
+ | +--rw vpn-id svc-id
+ | +--rw customer-name? string
+ | +--rw vpn-service-topology? identityref
+ | +--rw cloud-accesses {cloud-access}?
+ | | +--rw cloud-access* [cloud-identifier]
+ | | +--rw cloud-identifier string
+ | | +--rw (list-flavor)?
+ | | | +--:(permit-any)
+ | | | | +--rw permit-any? empty
+ | | | +--:(deny-any-except)
+ | | | | +--rw permit-site* leafref
+ | | | +--:(permit-any-except)
+ | | | +--rw deny-site* leafref
+ | | +--rw authorized-sites
+ | | | +--rw authorized-site* [site-id]
+ | | | +--rw site-id leafref
+ | | +--rw denied-sites
+ | | | +--rw denied-site* [site-id]
+ | | | +--rw site-id leafref
+ | | +--rw address-translation
+
+
+
+Litkowski, et al. Standards Track [Page 10]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ | | +--rw nat44
+ | | +--rw enabled? boolean
+ | | +--rw nat44-customer-address? inet:ipv4-address
+ | +--rw multicast {multicast}?
+ | | +--rw enabled? boolean
+ | | +--rw customer-tree-flavors
+ | | | +--rw tree-flavor* identityref
+ | | +--rw rp
+ | | +--rw rp-group-mappings
+ | | | +--rw rp-group-mapping* [id]
+ | | | +--rw id uint16
+ | | | +--rw provider-managed
+ | | | | +--rw enabled? boolean
+ | | | | +--rw rp-redundancy? boolean
+ | | | | +--rw optimal-traffic-delivery? boolean
+ | | | +--rw rp-address? inet:ip-address
+ | | | +--rw groups
+ | | | +--rw group* [id]
+ | | | +--rw id uint16
+ | | | +--rw (group-format)?
+ | | | +--:(startend)
+ | | | | +--rw group-start? inet:ip-address
+ | | | | +--rw group-end? inet:ip-address
+ | | | +--:(singleaddress)
+ | | | +--rw group-address? inet:ip-address
+ | | +--rw rp-discovery
+ | | +--rw rp-discovery-type? identityref
+ | | +--rw bsr-candidates
+ | | +--rw bsr-candidate-address* inet:ip-address
+ | +--rw carrierscarrier? boolean {carrierscarrier}?
+ | +--rw extranet-vpns {extranet-vpn}?
+ | +--rw extranet-vpn* [vpn-id]
+ | +--rw vpn-id svc-id
+ | +--rw local-sites-role? identityref
+ +--rw sites
+ +--rw site* [site-id]
+ +--rw site-id svc-id
+ +--rw requested-site-start? yang:date-and-time
+ +--rw requested-site-stop? yang:date-and-time
+ +--rw locations
+ | +--rw location* [location-id]
+ | +--rw location-id svc-id
+ | +--rw address? string
+ | +--rw postal-code? string
+ | +--rw state? string
+ | +--rw city? string
+ | +--rw country-code? string
+
+
+
+
+Litkowski, et al. Standards Track [Page 11]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ +--rw devices
+ | +--rw device* [device-id]
+ | +--rw device-id svc-id
+ | +--rw location? leafref
+ | +--rw management
+ | +--rw address-family? address-family
+ | +--rw address? inet:ip-address
+ +--rw site-diversity {site-diversity}?
+ | +--rw groups
+ | +--rw group* [group-id]
+ | +--rw group-id string
+ +--rw management
+ | +--rw type? identityref
+ +--rw vpn-policies
+ | +--rw vpn-policy* [vpn-policy-id]
+ | +--rw vpn-policy-id svc-id
+ | +--rw entries* [id]
+ | +--rw id svc-id
+ | +--rw filter
+ | | +--rw (lan)?
+ | | +--:(prefixes)
+ | | | +--rw ipv4-lan-prefix* inet:ipv4-prefix {ipv4}?
+ | | | +--rw ipv6-lan-prefix* inet:ipv6-prefix {ipv6}?
+ | | +--:(lan-tag)
+ | | +--rw lan-tag* string
+ | +--rw vpn
+ | +--rw vpn-id leafref
+ | +--rw site-role? identityref
+ +--rw site-vpn-flavor? identityref
+ +--rw maximum-routes
+ | +--rw address-family* [af]
+ | +--rw af address-family
+ | +--rw maximum-routes? uint32
+ +--rw security
+ | +--rw authentication
+ | +--rw encryption {encryption}?
+ | +--rw enabled? boolean
+ | +--rw layer enumeration
+ | +--rw encryption-profile
+ | +--rw (profile)?
+ | +--:(provider-profile)
+ | | +--rw profile-name? string
+ | +--:(customer-profile)
+ | +--rw algorithm? string
+ | +--rw (key-type)?
+ | +--:(psk)
+ | | +--rw preshared-key? string
+ | +--:(pki)
+
+
+
+Litkowski, et al. Standards Track [Page 12]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ +--rw service
+ | +--rw qos {qos}?
+ | | +--rw qos-classification-policy
+ | | | +--rw rule* [id]
+ | | | +--rw id uint16
+ | | | +--rw (match-type)?
+ | | | | +--:(match-flow)
+ | | | | | +--rw match-flow
+ | | | | | +--rw dscp? inet:dscp
+ | | | | | +--rw dot1p? uint8
+ | | | | | +--rw ipv4-src-prefix? inet:ipv4-prefix
+ | | | | | +--rw ipv6-src-prefix? inet:ipv6-prefix
+ | | | | | +--rw ipv4-dst-prefix? inet:ipv4-prefix
+ | | | | | +--rw ipv6-dst-prefix? inet:ipv6-prefix
+ | | | | | +--rw l4-src-port? inet:port-number
+ | | | | | +--rw target-sites* svc-id
+ | | | | | +--rw l4-src-port-range
+ | | | | | | +--rw lower-port? inet:port-number
+ | | | | | | +--rw upper-port? inet:port-number
+ | | | | | +--rw l4-dst-port? inet:port-number
+ | | | | | +--rw l4-dst-port-range
+ | | | | | | +--rw lower-port? inet:port-number
+ | | | | | | +--rw upper-port? inet:port-number
+ | | | | | +--rw protocol-field? union
+ | | | | +--:(match-application)
+ | | | | +--rw match-application? identityref
+ | | | +--rw target-class-id? string
+ | | +--rw qos-profile
+ | | +--rw (qos-profile)?
+ | | +--:(standard)
+ | | | +--rw profile? string
+ | | +--:(custom)
+ | | +--rw classes {qos-custom}?
+ | | +--rw class* [class-id]
+ | | +--rw class-id string
+ | | +--rw rate-limit? uint8
+ | | +--rw latency
+ | | | +--rw (flavor)?
+ | | | ...
+ | | +--rw jitter
+ | | | +--rw (flavor)?
+ | | | ...
+ | | +--rw bandwidth
+ | | +--rw guaranteed-bw-percent? uint8
+ | | +--rw end-to-end? empty
+ | +--rw carrierscarrier {carrierscarrier}?
+ | | +--rw signalling-type? enumeration
+
+
+
+
+Litkowski, et al. Standards Track [Page 13]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ | +--rw multicast {multicast}?
+ | +--rw multicast-site-type? enumeration
+ | +--rw multicast-address-family
+ | | +--rw ipv4? boolean {ipv4}?
+ | | +--rw ipv6? boolean {ipv6}?
+ | +--rw protocol-type? enumeration
+ +--rw traffic-protection {fast-reroute}?
+ | +--rw enabled? boolean
+ +--rw routing-protocols
+ | +--rw routing-protocol* [type]
+ | +--rw type identityref
+ | +--rw ospf {rtg-ospf}?
+ | | +--rw address-family* address-family
+ | | +--rw area-address? yang:dotted-quad
+ | | +--rw metric? uint16
+ | | +--rw sham-links {rtg-ospf-sham-link}?
+ | | +--rw sham-link* [target-site]
+ | | +--rw target-site svc-id
+ | | +--rw metric? uint16
+ | +--rw bgp {rtg-bgp}?
+ | | +--rw autonomous-system? uint32
+ | | +--rw address-family* address-family
+ | +--rw static
+ | | +--rw cascaded-lan-prefixes
+ | | +--rw ipv4-lan-prefixes* [lan next-hop] {ipv4}?
+ | | | +--rw lan inet:ipv4-prefix
+ | | | +--rw lan-tag? string
+ | | | +--rw next-hop inet:ipv4-address
+ | | +--rw ipv6-lan-prefixes* [lan next-hop] {ipv6}?
+ | | +--rw lan inet:ipv6-prefix
+ | | +--rw lan-tag? string
+ | | +--rw next-hop inet:ipv6-address
+ | +--rw rip {rtg-rip}?
+ | | +--rw address-family* address-family
+ | +--rw vrrp {rtg-vrrp}?
+ | +--rw address-family* address-family
+ +--ro actual-site-start? yang:date-and-time
+ +--ro actual-site-stop? yang:date-and-time
+ +--rw site-network-accesses
+ +--rw site-network-access* [site-network-access-id]
+ +--rw site-network-access-id svc-id
+ +--rw site-network-access-type? identityref
+ +--rw (location-flavor)
+ | +--:(location)
+ | | +--rw location-reference? leafref
+ | +--:(device)
+ | +--rw device-reference? leafref
+
+
+
+
+Litkowski, et al. Standards Track [Page 14]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ +--rw access-diversity {site-diversity}?
+ | +--rw groups
+ | | +--rw group* [group-id]
+ | | +--rw group-id string
+ | +--rw constraints
+ | +--rw constraint* [constraint-type]
+ | +--rw constraint-type identityref
+ | +--rw target
+ | +--rw (target-flavor)?
+ | +--:(id)
+ | | +--rw group* [group-id]
+ | | ...
+ | +--:(all-accesses)
+ | | +--rw all-other-accesses? empty
+ | +--:(all-groups)
+ | +--rw all-other-groups? empty
+ +--rw bearer
+ | +--rw requested-type {requested-type}?
+ | | +--rw requested-type? string
+ | | +--rw strict? boolean
+ | +--rw always-on? boolean {always-on}?
+ | +--rw bearer-reference? string {bearer-reference}?
+ +--rw ip-connection
+ | +--rw ipv4 {ipv4}?
+ | | +--rw address-allocation-type? identityref
+ | | +--rw number-of-dynamic-address? uint8
+ | | +--rw dhcp-relay
+ | | | +--rw customer-dhcp-servers
+ | | | +--rw server-ip-address* inet:ipv4-address
+ | | +--rw addresses
+ | | +--rw provider-address? inet:ipv4-address
+ | | +--rw customer-address? inet:ipv4-address
+ | | +--rw mask? uint8
+ | +--rw ipv6 {ipv6}?
+ | | +--rw address-allocation-type? identityref
+ | | +--rw number-of-dynamic-address? uint8
+ | | +--rw dhcp-relay
+ | | | +--rw customer-dhcp-servers
+ | | | +--rw server-ip-address* inet:ipv6-address
+ | | +--rw addresses
+ | | +--rw provider-address? inet:ipv6-address
+ | | +--rw customer-address? inet:ipv6-address
+ | | +--rw mask? uint8
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 15]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ | +--rw oam
+ | +--rw bfd {bfd}?
+ | +--rw enabled? boolean
+ | +--rw (holdtime)?
+ | +--:(profile)
+ | | +--rw profile-name? string
+ | +--:(fixed)
+ | +--rw fixed-value? uint32
+ +--rw security
+ | +--rw authentication
+ | +--rw encryption {encryption}?
+ | +--rw enabled? boolean
+ | +--rw layer enumeration
+ | +--rw encryption-profile
+ | +--rw (profile)?
+ | +--:(provider-profile)
+ | | +--rw profile-name? string
+ | +--:(customer-profile)
+ | +--rw algorithm? string
+ | +--rw (key-type)?
+ | +--:(psk)
+ | | ...
+ | +--:(pki)
+ +--rw service
+ | +--rw svc-input-bandwidth? uint32
+ | +--rw svc-output-bandwidth? uint32
+ | +--rw svc-mtu? uint16
+ | +--rw qos {qos}?
+ | | +--rw qos-classification-policy
+ | | | +--rw rule* [id]
+ | | | +--rw id uint16
+ | | | +--rw (match-type)?
+ | | | | +--:(match-flow)
+ | | | | | +--rw match-flow
+ | | | | | ...
+ | | | | +--:(match-application)
+ | | | | +--rw match-application? identityref
+ | | | +--rw target-class-id? string
+ | | +--rw qos-profile
+ | | +--rw (qos-profile)?
+ | | +--:(standard)
+ | | | +--rw profile? string
+ | | +--:(custom)
+ | | +--rw classes {qos-custom}?
+ | | +--rw class* [class-id]
+ | | ...
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 16]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ | +--rw carrierscarrier {carrierscarrier}?
+ | | +--rw signalling-type? enumeration
+ | +--rw multicast {multicast}?
+ | +--rw multicast-site-type? enumeration
+ | +--rw multicast-address-family
+ | | +--rw ipv4? boolean {ipv4}?
+ | | +--rw ipv6? boolean {ipv6}?
+ | +--rw protocol-type? enumeration
+ +--rw routing-protocols
+ | +--rw routing-protocol* [type]
+ | +--rw type identityref
+ | +--rw ospf {rtg-ospf}?
+ | | +--rw address-family* address-family
+ | | +--rw area-address? yang:dotted-quad
+ | | +--rw metric? uint16
+ | | +--rw sham-links {rtg-ospf-sham-link}?
+ | | +--rw sham-link* [target-site]
+ | | +--rw target-site svc-id
+ | | +--rw metric? uint16
+ | +--rw bgp {rtg-bgp}?
+ | | +--rw autonomous-system? uint32
+ | | +--rw address-family* address-family
+ | +--rw static
+ | | +--rw cascaded-lan-prefixes
+ | | +--rw ipv4-lan-prefixes* [lan next-hop] {ipv4}?
+ | | | +--rw lan inet:ipv4-prefix
+ | | | +--rw lan-tag? string
+ | | | +--rw next-hop inet:ipv4-address
+ | | +--rw ipv6-lan-prefixes* [lan next-hop] {ipv6}?
+ | | +--rw lan inet:ipv6-prefix
+ | | +--rw lan-tag? string
+ | | +--rw next-hop inet:ipv6-address
+ | +--rw rip {rtg-rip}?
+ | | +--rw address-family* address-family
+ | +--rw vrrp {rtg-vrrp}?
+ | +--rw address-family* address-family
+ +--rw availability
+ | +--rw access-priority? uint32
+ +--rw vpn-attachment
+ +--rw (attachment-flavor)
+ +--:(vpn-policy-id)
+ | +--rw vpn-policy-id? leafref
+ +--:(vpn-id)
+ +--rw vpn-id? leafref
+ +--rw site-role? identityref
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 17]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.1. Features and Augmentation
+
+ The model defined in this document implements many features that
+ allow implementations to be modular. As an example, an
+ implementation may support only IPv4 VPNs (IPv4 feature), IPv6 VPNs
+ (IPv6 feature), or both (by advertising both features). The routing
+ protocols proposed to the customer may also be enabled through
+ features. This model also proposes some features for options that
+ are more advanced, such as support for extranet VPNs (Section 6.2.4),
+ site diversity (Section 6.6), and QoS (Section 6.12.2).
+
+ In addition, as for any YANG model, this service model can be
+ augmented to implement new behaviors or specific features. For
+ example, this model proposes different options for IP address
+ assignments; if those options do not fulfill all requirements, new
+ options can be added through augmentation.
+
+6.2. VPN Service Overview
+
+ A vpn-service list item contains generic information about the VPN
+ service. The "vpn-id" provided in the vpn-service list refers to an
+ internal reference for this VPN service, while the customer name
+ refers to a more-explicit reference to the customer. This identifier
+ is purely internal to the organization responsible for the VPN
+ service.
+
+6.2.1. VPN Service Topology
+
+ The type of VPN service topology is required for configuration. Our
+ proposed model supports any-to-any, Hub and Spoke (where Hubs can
+ exchange traffic), and "Hub and Spoke disjoint" (where Hubs cannot
+ exchange traffic). New topologies could be added via augmentation.
+ By default, the any-to-any VPN service topology is used.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 18]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.2.1.1. Route Target Allocation
+
+ A Layer 3 PE-based VPN is built using route targets (RTs) as
+ described in [RFC4364]. The management system is expected to
+ automatically allocate a set of RTs upon receiving a VPN service
+ creation request. How the management system allocates RTs is out of
+ scope for this document, but multiple ways could be envisaged, as
+ described below.
+
+ Management system
+ <------------------------------------------------->
+ Request RT
+ +-----------------------+ Topo a2a +----------+
+ RESTCONF | | -----> | |
+ User ------------- | Service Orchestration | | Network |
+ l3vpn-svc | | <----- | OSS |
+ Model +-----------------------+ Response +----------+
+ RT1, RT2
+
+ In the example above, a service orchestration, owning the
+ instantiation of this service model, requests RTs to the network OSS.
+ Based on the requested VPN service topology, the network OSS replies
+ with one or multiple RTs. The interface between this service
+ orchestration and the network OSS is out of scope for this document.
+
+ +---------------------------+
+ RESTCONF | |
+ User ------------- | Service Orchestration |
+ l3vpn-svc | |
+ Model | |
+ | RT pool: 10:1->10:10000 |
+ | RT pool: 20:50->20:5000 |
+ +---------------------------+
+
+ In the example above, a service orchestration, owning the
+ instantiation of this service model, owns one or more pools of RTs
+ (specified by the SP) that can be allocated. Based on the requested
+ VPN service topology, it will allocate one or multiple RTs from the
+ pool.
+
+ The mechanisms shown above are just examples and should not be
+ considered an exhaustive list of solutions.
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 19]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.2.1.2. Any-to-Any
+
+ +------------------------------------------------------------+
+ | VPN1_Site1 ------ PE1 PE2 ------ VPN1_Site2 |
+ | |
+ | VPN1_Site3 ------ PE3 PE4 ------ VPN1_Site4 |
+ +------------------------------------------------------------+
+
+ Any-to-Any VPN Service Topology
+
+ In the any-to-any VPN service topology, all VPN sites can communicate
+ with each other without any restrictions. The management system that
+ receives an any-to-any IP VPN service request through this model is
+ expected to assign and then configure the VRF and RTs on the
+ appropriate PEs. In the any-to-any case, a single RT is generally
+ required, and every VRF imports and exports this RT.
+
+6.2.1.3. Hub and Spoke
+
+ +-------------------------------------------------------------+
+ | Hub_Site1 ------ PE1 PE2 ------ Spoke_Site1 |
+ | +----------------------------------+
+ | |
+ | +----------------------------------+
+ | Hub_Site2 ------ PE3 PE4 ------ Spoke_Site2 |
+ +-------------------------------------------------------------+
+
+ Hub-and-Spoke VPN Service Topology
+
+ In the Hub-and-Spoke VPN service topology, all Spoke sites can
+ communicate only with Hub sites but not with each other, and Hubs can
+ also communicate with each other. The management system that owns an
+ any-to-any IP VPN service request through this model is expected to
+ assign and then configure the VRF and RTs on the appropriate PEs. In
+ the Hub-and-Spoke case, two RTs are generally required (one RT for
+ Hub routes and one RT for Spoke routes). A Hub VRF that connects Hub
+ sites will export Hub routes with the Hub RT and will import Spoke
+ routes through the Spoke RT. It will also import the Hub RT to allow
+ Hub-to-Hub communication. A Spoke VRF that connects Spoke sites will
+ export Spoke routes with the Spoke RT and will import Hub routes
+ through the Hub RT.
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 20]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ The management system MUST take into account constraints on Hub-and-
+ Spoke connections. For example, if a management system decides to
+ mesh a Spoke site and a Hub site on the same PE, it needs to mesh
+ connections in different VRFs, as shown in the figure below.
+
+ Hub_Site ------- (VRF_Hub) PE1
+ (VRF_Spoke)
+ / |
+ Spoke_Site1 -------------------+ |
+ |
+ Spoke_Site2 -----------------------+
+
+6.2.1.4. Hub and Spoke Disjoint
+
+ +-------------------------------------------------------------+
+ | Hub_Site1 ------ PE1 PE2 ------ Spoke_Site1 |
+ +--------------------------+ +-------------------------------+
+ | |
+ +--------------------------+ +-------------------------------+
+ | Hub_Site2 ------ PE3 PE4 ------ Spoke_Site2 |
+ +-------------------------------------------------------------+
+
+ Hub and Spoke Disjoint VPN Service Topology
+
+ In the Hub and Spoke disjoint VPN service topology, all Spoke sites
+ can communicate only with Hub sites but not with each other, and Hubs
+ cannot communicate with each other. The management system that owns
+ an any-to-any IP VPN service request through this model is expected
+ to assign and then configure the VRF and RTs on the appropriate PEs.
+ In the Hub-and-Spoke case, two RTs are required (one RT for Hub
+ routes and one RT for Spoke routes). A Hub VRF that connects Hub
+ sites will export Hub routes with the Hub RT and will import Spoke
+ routes through the Spoke RT. A Spoke VRF that connects Spoke sites
+ will export Spoke routes with the Spoke RT and will import Hub routes
+ through the Hub RT.
+
+ The management system MUST take into account constraints on Hub-and-
+ Spoke connections, as in the previous case.
+
+ Hub and Spoke disjoint can also be seen as multiple Hub-and-Spoke
+ VPNs (one per Hub) that share a common set of Spoke sites.
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 21]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.2.2. Cloud Access
+
+ The proposed model provides cloud access configuration via the
+ "cloud-accesses" container. The usage of cloud-access is targeted
+ for the public cloud. An Internet access can also be considered a
+ public cloud access service. The cloud-accesses container provides
+ parameters for network address translation and authorization rules.
+
+ A private cloud access may be addressed through NNIs, as described in
+ Section 6.15.
+
+ A cloud identifier is used to reference the target service. This
+ identifier is local to each administration.
+
+ The model allows for source address translation before accessing the
+ cloud. IPv4-to-IPv4 address translation (NAT44) is the only
+ supported option, but other options can be added through
+ augmentation. If IP source address translation is required to access
+ the cloud, the "enabled" leaf MUST be set to true in the "nat44"
+ container. An IP address may be provided in the "customer-address"
+ leaf if the customer is providing the IP address to be used for the
+ cloud access. If the SP is providing this address,
+ "customer-address" is not necessary, as it can be picked from a pool
+ of SPs.
+
+ By default, all sites in the IP VPN MUST be authorized to access the
+ cloud. If restrictions are required, a user MAY configure the
+ "permit-site" or "deny-site" leaf-list. The permit-site leaf-list
+ defines the list of sites authorized for cloud access. The deny-site
+ leaf-list defines the list of sites denied for cloud access. The
+ model supports both "deny-any-except" and "permit-any-except"
+ authorization.
+
+ How the restrictions will be configured on network elements is out of
+ scope for this document.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 22]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ IP VPN
+ ++++++++++++++++++++++++++++++++ ++++++++++++
+ + Site 3 + --- + Cloud 1 +
+ + Site 1 + ++++++++++++
+ + +
+ + Site 2 + --- ++++++++++++
+ + + + Internet +
+ + Site 4 + ++++++++++++
+ ++++++++++++++++++++++++++++++++
+ |
+ +++++++++++
+ + Cloud 2 +
+ +++++++++++
+
+ In the example above, we configure the global VPN to access the
+ Internet by creating a cloud-access pointing to the cloud identifier
+ for the Internet service. No authorized sites will be configured, as
+ all sites are required to access the Internet. The
+ "address-translation/nat44/enabled" leaf will be set to true.
+
+ <vpn-service>
+ <vpn-id>123456487</vpn-id>
+ <cloud-accesses>
+ <cloud-access>
+ <cloud-identifier>INTERNET</cloud-identifier>
+ <address-translation>
+ <nat44>
+ <enabled>true</enabled>
+ </nat44>
+ </address-translation>
+ </cloud-access>
+ </cloud-accesses>
+ </vpn-service>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 23]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ If Site 1 and Site 2 require access to Cloud 1, a new cloud-access
+ pointing to the cloud identifier of Cloud 1 will be created. The
+ permit-site leaf-list will be filled with a reference to Site 1 and
+ Site 2.
+
+ <vpn-service>
+ <vpn-id>123456487</vpn-id>
+ <cloud-accesses>
+ <cloud-access>
+ <cloud-identifier>Cloud1</cloud-identifier>
+ <permit-site>site1</permit-site>
+ <permit-site>site2</permit-site>
+ </cloud-access>
+ </cloud-accesses>
+ </vpn-service>
+
+ If all sites except Site 1 require access to Cloud 2, a new
+ cloud-access pointing to the cloud identifier of Cloud 2 will be
+ created. The deny-site leaf-list will be filled with a reference to
+ Site 1.
+
+ <vpn-service>
+ <vpn-id>123456487</vpn-id>
+ <cloud-accesses>
+ <cloud-access>
+ <cloud-identifier>Cloud2</cloud-identifier>
+ <deny-site>site1</deny-site>
+ </cloud-access>
+ </cloud-accesses>
+ </vpn-service>
+
+6.2.3. Multicast Service
+
+ Multicast in IP VPNs is described in [RFC6513].
+
+ If multicast support is required for an IP VPN, some global multicast
+ parameters are required as input for the service request.
+
+ Users of this model will need to provide the flavors of trees that
+ will be used by customers within the IP VPN (customer tree). The
+ proposed model supports bidirectional, shared, and source-based trees
+ (and can be augmented). Multiple flavors of trees can be supported
+ simultaneously.
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 24]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ Operator network
+ ______________
+ / \
+ | |
+ (SSM tree) |
+ Recv (IGMPv3) -- Site2 ------- PE2 |
+ | PE1 --- Site1 --- Source1
+ | | \
+ | | -- Source2
+ | |
+ (ASM tree) |
+ Recv (IGMPv2) -- Site3 ------- PE3 |
+ | |
+ (SSM tree) |
+ Recv (IGMPv3) -- Site4 ------- PE4 |
+ | / |
+ Recv (IGMPv2) -- Site5 -------- |
+ (ASM tree) |
+ | |
+ \_______________/
+
+ When an ASM flavor is requested, this model requires that the "rp"
+ and "rp-discovery" parameters be filled. Multiple RP-to-group
+ mappings can be created using the "rp-group-mappings" container. For
+ each mapping, the SP can manage the RP service by setting the
+ "provider-managed/enabled" leaf to true. In the case of a provider-
+ managed RP, the user can request RP redundancy and/or optimal traffic
+ delivery. Those parameters will help the SP select the appropriate
+ technology or architecture to fulfill the customer service
+ requirement: for instance, in the case of a request for optimal
+ traffic delivery, an SP may use Anycast-RP or RP-tree-to-SPT
+ switchover architectures.
+
+ In the case of a customer-managed RP, the RP address must be filled
+ in the RP-to-group mappings using the "rp-address" leaf. This leaf
+ is not needed for a provider-managed RP.
+
+ Users can define a specific mechanism for RP discovery, such as the
+ "auto-rp", "static-rp", or "bsr-rp" modes. By default, the model
+ uses "static-rp" if ASM is requested. A single rp-discovery
+ mechanism is allowed for the VPN. The "rp-discovery" container can
+ be used for both provider-managed and customer-managed RPs. In the
+ case of a provider-managed RP, if the user wants to use "bsr-rp" as a
+ discovery protocol, an SP should consider the provider-managed
+ "rp-group-mappings" for the "bsr-rp" configuration. The SP will then
+ configure its selected RPs to be "bsr-rp-candidates". In the case of
+ a customer-managed RP and a "bsr-rp" discovery mechanism, the
+ "rp-address" provided will be the bsr-rp candidate.
+
+
+
+Litkowski, et al. Standards Track [Page 25]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.2.4. Extranet VPNs
+
+ There are some cases where a particular VPN needs access to resources
+ (servers, hosts, etc.) that are external. Those resources may be
+ located in another VPN.
+
+ +-----------+ +-----------+
+ / \ / \
+ Site A -- | VPN A | --- | VPN B | --- Site B
+ \ / \ / (Shared
+ +-----------+ +-----------+ resources)
+
+ In the figure above, VPN B has some resources on Site B that need to
+ be available to some customers/partners. VPN A must be able to
+ access those VPN B resources.
+
+ Such a VPN connection scenario can be achieved via a VPN policy as
+ defined in Section 6.5.2.2. But there are some simple cases where a
+ particular VPN (VPN A) needs access to all resources in another VPN
+ (VPN B). The model provides an easy way to set up this connection
+ using the "extranet-vpns" container.
+
+ The extranet-vpns container defines a list of VPNs a particular VPN
+ wants to access. The extranet-vpns container must be used on
+ customer VPNs accessing extranet resources in another VPN. In the
+ figure above, in order to provide VPN A with access to VPN B, the
+ extranet-vpns container needs to be configured under VPN A with an
+ entry corresponding to VPN B. There is no service configuration
+ requirement on VPN B.
+
+ Readers should note that even if there is no configuration
+ requirement on VPN B, if VPN A lists VPN B as an extranet, all sites
+ in VPN B will gain access to all sites in VPN A.
+
+ The "site-role" leaf defines the role of the local VPN sites in the
+ target extranet VPN service topology. Site roles are defined in
+ Section 6.4. Based on this, the requirements described in
+ Section 6.4 regarding the site-role leaf are also applicable here.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 26]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ In the example below, VPN A accesses VPN B resources through an
+ extranet connection. A Spoke role is required for VPN A sites, as
+ sites from VPN A must not be able to communicate with each other
+ through the extranet VPN connection.
+
+ <vpn-service>
+ <vpn-id>VPNB</vpn-id>
+ <vpn-service-topology>hub-spoke</vpn-service-topology>
+ </vpn-service>
+ <vpn-service>
+ <vpn-id>VPNA</vpn-id>
+ <vpn-service-topology>any-to-any</vpn-service-topology>
+ <extranet-vpns>
+ <extranet-vpn>
+ <vpn-id>VPNB</vpn-id>
+ <site-role>spoke-role</site-role>
+ </extranet-vpn>
+ </extranet-vpns>
+ </vpn-service>
+
+ This model does not define how the extranet configuration will be
+ achieved.
+
+ Any VPN interconnection scenario that is more complex (e.g., only
+ certain parts of sites on VPN A accessing only certain parts of sites
+ on VPN B) needs to be achieved using a VPN attachment as defined in
+ Section 6.5.2, and especially a VPN policy as defined in
+ Section 6.5.2.2.
+
+6.3. Site Overview
+
+ A site represents a connection of a customer office to one or more
+ VPN services.
+
+ +-------------+
+ / \
+ +------------------+ +-----| VPN1 |
+ | | | \ /
+ | New York Office |------ (site) -----+ +-------------+
+ | | | +-------------+
+ +------------------+ | / \
+ +-----| VPN2 |
+ \ /
+ +-------------+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 27]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ A site has several characteristics:
+
+ o Unique identifier (site-id): uniquely identifies the site within
+ the overall network infrastructure. The identifier is a string
+ that allows any encoding for the local administration of the VPN
+ service.
+
+ o Locations (locations): site location information that allows easy
+ retrieval of information from the nearest available resources. A
+ site may be composed of multiple locations.
+
+ o Devices (devices): allows the customer to request one or more
+ customer premises equipment entities from the SP for a particular
+ site.
+
+ o Management (management): defines the type of management for the
+ site -- for example, co-managed, customer-managed, or provider-
+ managed. See Section 6.10.
+
+ o Site network accesses (site-network-accesses): defines the list of
+ network accesses associated with the sites, and their properties
+ -- especially bearer, connection, and service parameters.
+
+ A site-network-access represents an IP logical connection of a site.
+ A site may have multiple site-network-accesses.
+
+ +------------------+ Site
+ | |-----------------------------------
+ | |****** (site-network-access#1) ******
+ | New York Office |
+ | |****** (site-network-access#2) ******
+ | |-----------------------------------
+ +------------------+
+
+ Multiple site-network-accesses are used, for instance, in the case of
+ multihoming. Some other meshing cases may also include multiple
+ site-network-accesses.
+
+ The site configuration is viewed as a global entity; we assume that
+ it is mostly the management system's role to split the parameters
+ between the different elements within the network. For example, in
+ the case of the site-network-access configuration, the management
+ system needs to split the overall parameters between the PE
+ configuration and the CE configuration.
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 28]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.3.1. Devices and Locations
+
+ A site may be composed of multiple locations. All the locations will
+ need to be configured as part of the "locations" container and list.
+ A typical example of a multi-location site is a headquarters office
+ in a city composed of multiple buildings. Those buildings may be
+ located in different parts of the city and may be linked by
+ intra-city fibers (customer metropolitan area network). In such a
+ case, when connecting to a VPN service, the customer may ask for
+ multihoming based on its distributed locations.
+
+ New York Site
+
+ +------------------+ Site
+ | +--------------+ |-----------------------------------
+ | | Manhattan | |****** (site-network-access#1) ******
+ | +--------------+ |
+ | +--------------+ |
+ | | Brooklyn | |****** (site-network-access#2) ******
+ | +--------------+ |
+ | |-----------------------------------
+ +------------------+
+
+ A customer may also request some premises equipment entities (CEs)
+ from the SP via the "devices" container. Requesting a CE implies a
+ provider-managed or co-managed model. A particular device must be
+ ordered to a particular already-configured location. This would help
+ the SP send the device to the appropriate postal address. In a
+ multi-location site, a customer may, for example, request a CE for
+ each location on the site where multihoming must be implemented. In
+ the figure above, one device may be requested for the Manhattan
+ location and one other for the Brooklyn location.
+
+ By using devices and locations, the user can influence the
+ multihoming scenario he wants to implement: single CE, dual CE, etc.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 29]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.3.2. Site Network Accesses
+
+ As mentioned earlier, a site may be multihomed. Each IP network
+ access for a site is defined in the "site-network-accesses"
+ container. The site-network-access parameter defines how the site is
+ connected on the network and is split into three main classes of
+ parameters:
+
+ o bearer: defines requirements of the attachment (below Layer 3).
+
+ o connection: defines Layer 3 protocol parameters of the attachment.
+
+ o availability: defines the site's availability policy. The
+ availability parameters are defined in Section 6.7.
+
+ The site-network-access has a specific type
+ (site-network-access-type). This document defines two types:
+
+ o point-to-point: describes a point-to-point connection between the
+ SP and the customer.
+
+ o multipoint: describes a multipoint connection between the SP and
+ the customer.
+
+ The type of site-network-access may have an impact on the parameters
+ offered to the customer, e.g., an SP may not offer encryption for
+ multipoint accesses. It is up to the provider to decide what
+ parameter is supported for point-to-point and/or multipoint accesses;
+ this topic is out of scope for this document. Some containers
+ proposed in the model may require extensions in order to work
+ properly for multipoint accesses.
+
+6.3.2.1. Bearer
+
+ The bearer container defines the requirements for the site attachment
+ to the provider network that are below Layer 3.
+
+ The bearer parameters will help determine the access media to be
+ used. This is further described in Section 6.6.3.
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 30]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.3.2.2. Connection
+
+ The "ip-connection" container defines the protocol parameters of the
+ attachment (IPv4 and IPv6). Depending on the management mode, it
+ refers to PE-CE addressing or CE-to-customer-LAN addressing. In any
+ case, it describes the responsibility boundary between the provider
+ and the customer. For a customer-managed site, it refers to the
+ PE-CE connection. For a provider-managed site, it refers to the
+ CE-to-LAN connection.
+
+6.3.2.2.1. IP Addressing
+
+ An IP subnet can be configured for either IPv4 or IPv6 Layer 3
+ protocols. For a dual-stack connection, two subnets will be
+ provided, one for each address family.
+
+ The "address-allocation-type" determines how the address allocation
+ needs to be done. The current model proposes five ways to perform IP
+ address allocation:
+
+ o provider-dhcp: The provider will provide DHCP service for customer
+ equipment; this is applicable to either the "IPv4" container or
+ the "IPv6" container.
+
+ o provider-dhcp-relay: The provider will provide DHCP relay service
+ for customer equipment; this is applicable to both IPv4 and IPv6
+ addressing. The customer needs to populate the DHCP server list
+ to be used.
+
+ o static-address: Addresses will be assigned manually; this is
+ applicable to both IPv4 and IPv6 addressing.
+
+ o slaac: This parameter enables stateless address autoconfiguration
+ [RFC4862]. This is applicable to IPv6 only.
+
+ o provider-dhcp-slaac: The provider will provide DHCP service for
+ customer equipment, as well as stateless address
+ autoconfiguration. This is applicable to IPv6 only.
+
+ In the dynamic addressing mechanism, the SP is expected to provide at
+ least the IP address, mask, and default gateway information.
+
+6.3.2.2.2. OAM
+
+ A customer may require a specific IP connectivity fault detection
+ mechanism on the IP connection. The model supports BFD as a fault
+ detection mechanism. This can be extended with other mechanisms via
+ augmentation. The provider can propose some profiles to the
+
+
+
+Litkowski, et al. Standards Track [Page 31]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ customer, depending on the service level the customer wants to
+ achieve. Profile names must be communicated to the customer. This
+ communication is out of scope for this document. Some fixed values
+ for the holdtime period may also be imposed by the customer if the
+ provider allows the customer this function.
+
+ The "oam" container can easily be augmented by other mechanisms; in
+ particular, work done by the LIME Working Group
+ (https://datatracker.ietf.org/wg/lime/charter/) may be reused in
+ applicable scenarios.
+
+6.3.2.3. Inheritance of Parameters Defined at Site Level and Site
+ Network Access Level
+
+ Some parameters can be configured at both the site level and the
+ site-network-access level, e.g., routing, services, security.
+ Inheritance applies when parameters are defined at the site level.
+ If a parameter is configured at both the site level and the access
+ level, the access-level parameter MUST override the site-level
+ parameter. Those parameters will be described later in this
+ document.
+
+ In terms of provisioning impact, it will be up to the implementation
+ to decide on the appropriate behavior when modifying existing
+ configurations. But the SP will need to communicate to the user
+ about the impact of using inheritance. For example, if we consider
+ that a site has already provisioned three site-network-accesses, what
+ will happen if a customer changes a service parameter at the site
+ level? An implementation of this model may update the service
+ parameters of all already-provisioned site-network-accesses (with
+ potential impact on live traffic), or it may take into account this
+ new parameter only for the new sites.
+
+6.4. Site Role
+
+ A VPN has a particular service topology, as described in
+ Section 6.2.1. As a consequence, each site belonging to a VPN is
+ assigned with a particular role in this topology. The site-role leaf
+ defines the role of the site in a particular VPN topology.
+
+ In the any-to-any VPN service topology, all sites MUST have the same
+ role, which will be "any-to-any-role".
+
+ In the Hub-and-Spoke VPN service topology or the Hub and Spoke
+ disjoint VPN service topology, sites MUST have a Hub role or a
+ Spoke role.
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 32]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.5. Site Belonging to Multiple VPNs
+
+6.5.1. Site VPN Flavor
+
+ A site may be part of one or multiple VPNs. The "site-vpn-flavor"
+ defines the way the VPN multiplexing is done. The current version of
+ the model supports four flavors:
+
+ o site-vpn-flavor-single: The site belongs to only one VPN.
+
+ o site-vpn-flavor-multi: The site belongs to multiple VPNs, and all
+ the logical accesses of the sites belong to the same set of VPNs.
+
+ o site-vpn-flavor-sub: The site belongs to multiple VPNs with
+ multiple logical accesses. Each logical access may map to
+ different VPNs (one or many).
+
+ o site-vpn-flavor-nni: The site represents an option A NNI.
+
+6.5.1.1. Single VPN Attachment: site-vpn-flavor-single
+
+ The figure below describes a single VPN attachment. The site
+ connects to only one VPN.
+
+ +--------+
+ +------------------+ Site / \
+ | |-----------------------------| |
+ | |***(site-network-access#1)***| VPN1 |
+ | New York Office | | |
+ | |***(site-network-access#2)***| |
+ | |-----------------------------| |
+ +------------------+ \ /
+ +--------+
+
+6.5.1.2. MultiVPN Attachment: site-vpn-flavor-multi
+
+ The figure below describes a site connected to multiple VPNs.
+
+ +---------+
+ +---/----+ \
+ +------------------+ Site / | \ |
+ | |--------------------------------- | |VPN B|
+ | |***(site-network-access#1)******* | | |
+ | New York Office | | | | |
+ | |***(site-network-access#2)******* \ | /
+ | |-----------------------------| VPN A+-----|---+
+ +------------------+ \ /
+ +--------+
+
+
+
+Litkowski, et al. Standards Track [Page 33]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ In the example above, the New York office is multihomed. Both
+ logical accesses are using the same VPN attachment rules, and both
+ are connected to VPN A and VPN B.
+
+ Reaching VPN A or VPN B from the New York office will be done via
+ destination-based routing. Having the same destination reachable
+ from the two VPNs may cause routing troubles. The customer
+ administration's role in this case would be to ensure the appropriate
+ mapping of its prefixes in each VPN.
+
+6.5.1.3. SubVPN Attachment: site-vpn-flavor-sub
+
+ The figure below describes a subVPN attachment. The site connects to
+ multiple VPNs, but each logical access is attached to a particular
+ set of VPNs. A typical use case for a subVPN is a customer site used
+ by multiple affiliates with private resources for each affiliate that
+ cannot be shared (communication between the affiliates is prevented).
+ It is similar to having separate sites, but in this case the customer
+ wants to share some physical components while maintaining strong
+ communication isolation between the affiliates. In this example,
+ site-network-access#1 is attached to VPN B, while
+ site-network-access#2 is attached to VPN A.
+
+ +------------------+ Site +--------+
+ | |----------------------------------/ \
+ | |****(site-network-access#1)******| VPN B |
+ | New York Office | \ /
+ | | +--------+
+ | | +--------+
+ | | / \
+ | |****(site-network-access#2)******| VPN A |
+ | | \ /
+ | | +--------+
+ | |-----------------------------------
+ +------------------+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 34]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ A multiVPN can be implemented in addition to a subVPN; as a
+ consequence, each site-network-access can access multiple VPNs. In
+ the example below, site-network-access#1 is mapped to VPN B and
+ VPN C, while site-network-access#2 is mapped to VPN A and VPN D.
+
+ +-----------------+ Site +------+
+ | |--------------------------------/ +-----+
+ | |****(site-network-access#1)****| VPN B / \
+ | New York Office | \ | VPN C |
+ | | +-----\ /
+ | | +-----+
+ | |
+ | | +-------+
+ | | / +-----+
+ | |****(site-network-access#2)****| VPN A / \
+ | | \ | VPN D |
+ | | +------\ /
+ | |--------------------------------- +-----+
+ +-----------------+
+
+ Multihoming is also possible with subVPNs; in this case,
+ site-network-accesses are grouped, and a particular group will have
+ access to the same set of VPNs. In the example below,
+ site-network-access#1 and site-network-access#2 are part of the same
+ group (multihomed together) and are mapped to VPN B and VPN C; in
+ addition, site-network-access#3 and site-network-access#4 are part of
+ the same group (multihomed together) and are mapped to VPN A and
+ VPN D.
+
+ +-----------------+ Site +------+
+ | |---------------------------------/ +-----+
+ | |****(site-network-access#1)*****| VPN B / \
+ | New York Office |****(site-network-access#2)***** \ | VPN C |
+ | | +-----\ /
+ | | +-----+
+ | |
+ | | +------+
+ | | / +-----+
+ | |****(site-network-access#3)*****| VPN A / \
+ | |****(site-network-access#4)***** \ | VPN D |
+ | | +-----\ /
+ | |---------------------------------- +-----+
+ +-----------------+
+
+ In terms of service configuration, a subVPN can be achieved by
+ requesting that the site-network-access use the same bearer (see
+ Sections 6.6.4 and 6.6.6.4 for more details).
+
+
+
+
+Litkowski, et al. Standards Track [Page 35]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.5.1.4. NNI: site-vpn-flavor-nni
+
+ A Network-to-Network Interface (NNI) scenario may be modeled using
+ the sites container (see Section 6.15.1). Using the sites container
+ to model an NNI is only one possible option for NNIs (see
+ Section 6.15). This option is called "option A" by reference to the
+ option A NNI defined in [RFC4364]. It is helpful for the SP to
+ indicate that the requested VPN connection is not a regular site but
+ rather is an NNI, as specific default device configuration parameters
+ may be applied in the case of NNIs (e.g., ACLs, routing policies).
+
+ SP A SP B
+ ------------------- -------------------
+ / \ / \
+ | | | |
+ | ++++++++ Inter-AS link ++++++++ |
+ | + +_______________+ + |
+ | + (VRF1)---(VPN1)----(VRF1) + |
+ | + ASBR + + ASBR + |
+ | + (VRF2)---(VPN2)----(VRF2) + |
+ | + +_______________+ + |
+ | ++++++++ ++++++++ |
+ | | | |
+ | | | |
+ | | | |
+ | ++++++++ Inter-AS link ++++++++ |
+ | + +_______________+ + |
+ | + (VRF1)---(VPN1)----(VRF1) + |
+ | + ASBR + + ASBR + |
+ | + (VRF2)---(VPN2)----(VRF2) + |
+ | + +_______________+ + |
+ | ++++++++ ++++++++ |
+ | | | |
+ | | | |
+ \ / \ /
+ ------------------- -------------------
+
+ The figure above describes an option A NNI scenario that can be
+ modeled using the sites container. In order to connect its customer
+ VPNs (VPN1 and VPN2) in SP B, SP A may request the creation of some
+ site-network-accesses to SP B. The site-vpn-flavor-nni will be used
+ to inform SP B that this is an NNI and not a regular customer site.
+ The site-vpn-flavor-nni may be multihomed and multiVPN as well.
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 36]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.5.2. Attaching a Site to a VPN
+
+ Due to the multiple site-vpn flavors, the attachment of a site to an
+ IP VPN is done at the site-network-access (logical access) level
+ through the "vpn-attachment" container. The vpn-attachment container
+ is mandatory. The model provides two ways to attach a site to a VPN:
+
+ o By referencing the target VPN directly.
+
+ o By referencing a VPN policy for attachments that are more complex.
+
+ A choice is implemented to allow the user to choose the flavor that
+ provides the best fit.
+
+6.5.2.1. Referencing a VPN
+
+ Referencing a vpn-id provides an easy way to attach a particular
+ logical access to a VPN. This is the best way in the case of a
+ single VPN attachment or subVPN with a single VPN attachment per
+ logical access. When referencing a vpn-id, the site-role setting
+ must be added to express the role of the site in the target VPN
+ service topology.
+
+ <site>
+ <site-id>SITE1</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>LA1</site-network-access-id>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ <site-network-access>
+ <site-network-access-id>LA2</site-network-access-id>
+ <vpn-attachment>
+ <vpn-id>VPNB</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+
+ The example above describes a subVPN case where a site (SITE1) has
+ two logical accesses (LA1 and LA2), with LA1 attached to VPNA and LA2
+ attached to VPNB.
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 37]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.5.2.2. VPN Policy
+
+ The "vpn-policy" list helps express a multiVPN scenario where a
+ logical access belongs to multiple VPNs. Multiple VPN policies can
+ be created to handle the subVPN case where each logical access is
+ part of a different set of VPNs.
+
+ As a site can belong to multiple VPNs, the vpn-policy list may be
+ composed of multiple entries. A filter can be applied to specify
+ that only some LANs of the site should be part of a particular VPN.
+ Each time a site (or LAN) is attached to a VPN, the user must
+ precisely describe its role (site-role) within the target VPN service
+ topology.
+
+ +--------------------------------------------------------------+
+ | Site1 ------ PE7 |
+ +-------------------------+ [VPN2] |
+ | |
+ +-------------------------+ |
+ | Site2 ------ PE3 PE4 ------ Site3 |
+ +----------------------------------+ |
+ | |
+ +------------------------------------------------------------+ |
+ | Site4 ------ PE5 | PE6 ------ Site5 | |
+ | | |
+ | [VPN3] | |
+ +------------------------------------------------------------+ |
+ | |
+ +---------------------------+
+
+ In the example above, Site5 is part of two VPNs: VPN3 and VPN2. It
+ will play a Hub role in VPN2 and an any-to-any role in VPN3. We can
+ express such a multiVPN scenario as follows:
+
+ <site>
+ <site-id>Site5</site-id>
+ <vpn-policies>
+ <vpn-policy>
+ <vpn-policy-id>POLICY1</vpn-policy-id>
+ <entries>
+ <id>ENTRY1</id>
+ <vpn>
+ <vpn-id>VPN2</vpn-id>
+ <site-role>hub-role</site-role>
+ </vpn>
+ </entries>
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 38]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <entries>
+ <id>ENTRY2</id>
+ <vpn>
+ <vpn-id>VPN3</vpn-id>
+ <site-role>any-to-any-role</site-role>
+ </vpn>
+ </entries>
+ </vpn-policy>
+ </vpn-policies>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>LA1</site-network-access-id>
+ <vpn-attachment>
+ <vpn-policy-id>POLICY1</vpn-policy-id>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+
+ Now, if a more-granular VPN attachment is necessary, filtering can be
+ used. For example, if LAN1 from Site5 must be attached to VPN2 as a
+ Hub and LAN2 must be attached to VPN3, the following configuration
+ can be used:
+
+ <site>
+ <site-id>Site5</site-id>
+ <vpn-policies>
+ <vpn-policy>
+ <vpn-policy-id>POLICY1</vpn-policy-id>
+ <entries>
+ <id>ENTRY1</id>
+ <filter>
+ <lan-tag>LAN1</lan-tag>
+ </filter>
+ <vpn>
+ <vpn-id>VPN2</vpn-id>
+ <site-role>hub-role</site-role>
+ </vpn>
+ </entries>
+ <entries>
+ <id>ENTRY2</id>
+ <filter>
+ <lan-tag>LAN2</lan-tag>
+ </filter>
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 39]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <vpn>
+ <vpn-id>VPN3</vpn-id>
+ <site-role>any-to-any-role</site-role>
+ </vpn>
+ </entries>
+ </vpn-policy>
+ </vpn-policies>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>LA1</site-network-access-id>
+ <vpn-attachment>
+ <vpn-policy-id>POLICY1</vpn-policy-id>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+
+6.6. Deciding Where to Connect the Site
+
+ The management system will have to determine where to connect each
+ site-network-access of a particular site to the provider network
+ (e.g., PE, aggregation switch).
+
+ The current model proposes parameters and constraints that can
+ influence the meshing of the site-network-access.
+
+ The management system SHOULD honor any customer constraints. If a
+ constraint is too strict and cannot be fulfilled, the management
+ system MUST NOT provision the site and SHOULD provide relevant
+ information to the user. How the information is provided is out of
+ scope for this document. Whether or not to relax the constraint
+ would then be left up to the user.
+
+ Parameters are just hints for the management system for service
+ placement.
+
+ In addition to parameters and constraints, the management system's
+ decision MAY be based on any other internal constraints that are left
+ up to the SP: least load, distance, etc.
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 40]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.6.1. Constraint: Device
+
+ In the case of provider management or co-management, one or more
+ devices have been ordered by the customer. The customer may force a
+ particular site-network-access to be connected on a particular device
+ that he ordered.
+
+ New York Site
+
+ +------------------+ Site
+ | +--------------+ |-----------------------------------
+ | | Manhattan | |
+ | | CE1********* (site-network-access#1) ******
+ | +--------------+ |
+ | +--------------+ |
+ | | Brooklyn CE2********* (site-network-access#2) ******
+ | +--------------+ |
+ | |-----------------------------------
+ +------------------+
+
+ In the figure above, site-network-access#1 is associated with CE1 in
+ the service request. The SP must ensure the provisioning of this
+ connection.
+
+6.6.2. Constraint/Parameter: Site Location
+
+ The location information provided in this model MAY be used by a
+ management system to determine the target PE to mesh the site
+ (SP side). A particular location must be associated with each site
+ network access when configuring it. The SP MUST honor the
+ termination of the access on the location associated with the site
+ network access (customer side). The "country-code" in the
+ site location SHOULD be expressed as an ISO ALPHA-2 code.
+
+ The site-network-access location is determined by the
+ "location-flavor". In the case of a provider-managed or co-managed
+ site, the user is expected to configure a "device-reference" (device
+ case) that will bind the site-network-access to a particular device
+ that the customer ordered. As each device is already associated with
+ a particular location, in such a case the location information is
+ retrieved from the device location. In the case of a customer-
+ managed site, the user is expected to configure a
+ "location-reference" (location case); this provides a reference to an
+ existing configured location and will help with placement.
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 41]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ POP#1 (New York)
+ +---------+
+ | PE1 |
+ Site #1 ---... | PE2 |
+ (Atlantic City) | PE3 |
+ +---------+
+
+ POP#2 (Washington)
+ +---------+
+ | PE4 |
+ | PE5 |
+ | PE6 |
+ +---------+
+
+ POP#3 (Philadelphia)
+ +---------+
+ | PE7 |
+ Site #2 CE#1---... | PE8 |
+ (Reston) | PE9 |
+ +---------+
+
+ In the example above, Site #1 is a customer-managed site with a
+ location L1, while Site #2 is a provider-managed site for which a CE
+ (CE#1) was ordered. Site #2 is configured with L2 as its location.
+ When configuring a site-network-access for Site #1, the user will
+ need to reference location L1 so that the management system will know
+ that the access will need to terminate on this location. Then, for
+ distance reasons, this management system may mesh Site #1 on a PE in
+ the Philadelphia POP. It may also take into account resources
+ available on PEs to determine the exact target PE (e.g., least
+ loaded). For Site #2, the user is expected to configure the
+ site-network-access with a device-reference to CE#1 so that the
+ management system will know that the access must terminate on the
+ location of CE#1 and must be connected to CE#1. For placement of the
+ SP side of the access connection, in the case of the nearest PE used,
+ it may mesh Site #2 on the Washington POP.
+
+6.6.3. Constraint/Parameter: Access Type
+
+ The management system needs to elect the access media to connect the
+ site to the customer (for example, xDSL, leased line, Ethernet
+ backhaul). The customer may provide some parameters/constraints that
+ will provide hints to the management system.
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 42]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ The bearer container information SHOULD be the first piece of
+ information considered when making this decision:
+
+ o The "requested-type" parameter provides information about the
+ media type that the customer would like to use. If the "strict"
+ leaf is equal to "true", this MUST be considered a strict
+ constraint so that the management system cannot connect the site
+ with another media type. If the "strict" leaf is equal to "false"
+ (default) and if the requested media type cannot be fulfilled, the
+ management system can select another media type. The supported
+ media types SHOULD be communicated by the SP to the customer via a
+ mechanism that is out of scope for this document.
+
+ o The "always-on" leaf defines a strict constraint: if set to true,
+ the management system MUST elect a media type that is "always-on"
+ (e.g., this means no dial access type).
+
+ o The "bearer-reference" parameter is used in cases where the
+ customer has already ordered a network connection to the SP apart
+ from the IP VPN site and wants to reuse this connection. The
+ string used is an internal reference from the SP and describes the
+ already-available connection. This is also a strict requirement
+ that cannot be relaxed. How the reference is given to the
+ customer is out of scope for this document, but as a pure example,
+ when the customer ordered the bearer (through a process that is
+ out of scope for this model), the SP may have provided the bearer
+ reference that can be used for provisioning services on top.
+
+ Any other internal parameters from the SP can also be used. The
+ management system MAY use other parameters, such as the requested
+ "svc-input-bandwidth" and "svc-output-bandwidth", to help decide
+ which access type to use.
+
+6.6.4. Constraint: Access Diversity
+
+ Each site-network-access may have one or more constraints that would
+ drive the placement of the access. By default, the model assumes
+ that there are no constraints, but allocation of a unique bearer per
+ site-network-access is expected.
+
+ In order to help with the different placement scenarios, a
+ site-network-access may be tagged using one or multiple group
+ identifiers. The group identifier is a string, so it can accommodate
+ both explicit naming of a group of sites (e.g., "multihomed-set1" or
+ "subVPN") and the use of a numbered identifier (e.g., 12345678). The
+ meaning of each group-id is local to each customer administrator, and
+ the management system MUST ensure that different customers can use
+ the same group-ids. One or more group-ids can also be defined at the
+
+
+
+Litkowski, et al. Standards Track [Page 43]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ site level; as a consequence, all site-network-accesses under the
+ site MUST inherit the group-ids of the site they belong to. When, in
+ addition to the site group-ids some group-ids are defined at the
+ site-network-access level, the management system MUST consider the
+ union of all groups (site level and site network access level) for
+ this particular site-network-access.
+
+ For an already-configured site-network-access, each constraint MUST
+ be expressed against a targeted set of site-network-accesses. This
+ site-network-access MUST never be taken into account in the targeted
+ set -- for example, "My site-network-access S must not be connected
+ on the same POP as the site-network-accesses that are part of
+ Group 10." The set of site-network-accesses against which the
+ constraint is evaluated can be expressed as a list of groups,
+ "all-other-accesses", or "all-other-groups". The all-other-accesses
+ option means that the current site-network-access constraint MUST be
+ evaluated against all the other site-network-accesses belonging to
+ the current site. The all-other-groups option means that the
+ constraint MUST be evaluated against all groups that the current
+ site-network-access does not belong to.
+
+ The current model proposes multiple constraint-types:
+
+ o pe-diverse: The current site-network-access MUST NOT be connected
+ to the same PE as the targeted site-network-accesses.
+
+ o pop-diverse: The current site-network-access MUST NOT be connected
+ to the same POP as the targeted site-network-accesses.
+
+ o linecard-diverse: The current site-network-access MUST NOT be
+ connected to the same linecard as the targeted
+ site-network-accesses.
+
+ o bearer-diverse: The current site-network-access MUST NOT use
+ common bearer components compared to bearers used by the targeted
+ site-network-accesses. "bearer-diverse" provides some level of
+ diversity at the access level. As an example, two bearer-diverse
+ site-network-accesses must not use the same DSLAM, BAS, or Layer 2
+ switch.
+
+ o same-pe: The current site-network-access MUST be connected to the
+ same PE as the targeted site-network-accesses.
+
+ o same-bearer: The current site-network-access MUST be connected
+ using the same bearer as the targeted site-network-accesses.
+
+ These constraint-types can be extended through augmentation.
+
+
+
+
+Litkowski, et al. Standards Track [Page 44]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ Each constraint is expressed as "The site-network-access S must be
+ <constraint-type> (e.g., pe-diverse, pop-diverse) from these <target>
+ site-network-accesses."
+
+ The group-id used to target some site-network-accesses may be the
+ same as the one used by the current site-network-access. This eases
+ the configuration of scenarios where a group of site-network-access
+ points has a constraint between the access points in the group. As
+ an example, if we want a set of sites (Site#1 to Site#5) to be
+ connected on different PEs, we can tag them with the same group-id
+ and express a pe-diverse constraint for this group-id.
+
+ <site>
+ <site-id>SITE1</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pe-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 45]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <site>
+ <site-id>SITE2</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pe-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+ ...
+ <site>
+ <site-id>SITE5</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pe-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>10</group-id>
+ </group>
+
+
+
+Litkowski, et al. Standards Track [Page 46]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+
+ The group-id used to target some site-network-accesses may also be
+ different than the one used by the current site-network-access. This
+ can be used to express that a group of sites has some constraints
+ against another group of sites, but there is no constraint within the
+ group. For example, we consider a set of six sites and two groups;
+ we want to ensure that a site in the first group must be pop-diverse
+ from a site in the second group:
+
+ <site>
+ <site-id>SITE1</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+
+
+
+Litkowski, et al. Standards Track [Page 47]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ </site>
+ <site>
+ <site-id>SITE2</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+ ...
+ <site>
+ <site-id>SITE5</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>10</group-id>
+
+
+
+Litkowski, et al. Standards Track [Page 48]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+ <site>
+ <site-id>SITE6</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+
+6.6.5. Infeasible Access Placement
+
+ Some infeasible access placement scenarios could be created via the
+ proposed configuration framework. Such infeasible access placement
+ scenarios could result from constraints that are too restrictive,
+ leading to infeasible access placement in the network or conflicting
+
+
+
+Litkowski, et al. Standards Track [Page 49]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ constraints that would also lead to infeasible access placement. An
+ example of conflicting rules would be to request that
+ site-network-access#1 be pe-diverse from site-network-access#2 and to
+ request at the same time that site-network-access#2 be on the same PE
+ as site-network-access#1. When the management system cannot
+ determine the placement of a site-network-access, it SHOULD return an
+ error message indicating that placement was not possible.
+
+6.6.6. Examples of Access Placement
+
+6.6.6.1. Multihoming
+
+ The customer wants to create a multihomed site. The site will be
+ composed of two site-network-accesses; for resiliency purposes, the
+ customer wants the two site-network-accesses to be meshed on
+ different POPs.
+
+ POP#1
+ +-------+ +---------+
+ | | | PE1 |
+ | |---site-network-access#1----| PE2 |
+ | | | PE3 |
+ | | +---------+
+ | Site#1|
+ | | POP#2
+ | | +---------+
+ | | | PE4 |
+ | |---site-network-access#2----| PE5 |
+ | | | PE6 |
+ | | +---------+
+ +-------+
+
+ This scenario can be expressed as follows:
+
+ <site>
+ <site-id>SITE1</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+
+
+
+Litkowski, et al. Standards Track [Page 50]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <target>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ <site-network-access>
+ <site-network-access-id>2</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 51]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ But it can also be expressed as follows:
+
+ <site>
+ <site-id>SITE1</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+ <target>
+ <all-other-accesses/>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ <site-network-access>
+ <site-network-access-id>2</site-network-access-id>
+ <access-diversity>
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+ <target>
+ <all-other-accesses/>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 52]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.6.6.2. Site Offload
+
+ The customer has six branch offices in a particular region, and he
+ wants to prevent having all branch offices connected on the same PE.
+
+ He wants to express that three branch offices cannot be connected on
+ the same linecard. Also, the other branch offices must be connected
+ on a different POP. Those other branch offices cannot also be
+ connected on the same linecard.
+
+ POP#1
+ +---------+
+ | PE1 |
+ Office#1 ---... | PE2 |
+ Office#2 ---... | PE3 |
+ Office#3 ---... | PE4 |
+ +---------+
+
+ POP#2
+ +---------+
+ Office#4 ---... | PE5 |
+ Office#5 ---... | PE6 |
+ Office#6 ---... | PE7 |
+ +---------+
+
+ This scenario can be expressed as follows:
+
+ o We need to create two groups of sites: Group#10, which is composed
+ of Office#1, Office#2, and Office#3; and Group#20, which is
+ composed of Office#4, Office#5, and Office#6.
+
+ o Sites within Group#10 must be pop-diverse from sites within
+ Group#20, and vice versa.
+
+ o Sites within Group#10 must be linecard-diverse from other sites in
+ Group#10 (same for Group#20).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 53]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <site>
+ <site-id>Office1</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </target>
+ </constraint>
+ <constraint>
+ <constraint-type>linecard-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+ <site>
+ <site-id>Office2</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </groups>
+
+
+
+Litkowski, et al. Standards Track [Page 54]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </target>
+ </constraint>
+ <constraint>
+ <constraint-type>linecard-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+ <site>
+ <site-id>Office3</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </target>
+ </constraint>
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 55]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <constraint>
+ <constraint-type>linecard-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+ <site>
+ <site-id>Office4</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </target>
+ </constraint>
+ <constraint>
+ <constraint-type>linecard-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+
+
+
+
+Litkowski, et al. Standards Track [Page 56]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+ <site>
+ <site-id>Office5</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </target>
+ </constraint>
+ <constraint>
+ <constraint-type>linecard-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 57]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <site>
+ <site-id>Office6</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pop-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </target>
+ </constraint>
+ <constraint>
+ <constraint-type>linecard-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNA</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 58]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.6.6.3. Parallel Links
+
+ To increase its site bandwidth at lower cost, a customer wants to
+ order two parallel site-network-accesses that will be connected to
+ the same PE.
+
+ *******site-network-access#1**********
+ Site 1 *******site-network-access#2********** PE1
+
+ This scenario can be expressed as follows:
+
+ <site>
+ <site-id>SITE1</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>PE-linkgrp-1</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>same-pe</constraint-type>
+ <target>
+ <group>
+ <group-id>PE-linkgrp-1</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNB</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ <site-network-access>
+ <site-network-access-id>2</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>PE-linkgrp-1</group-id>
+ </group>
+ </groups>
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 59]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <constraints>
+ <constraint>
+ <constraint-type>same-pe</constraint-type>
+ <target>
+ <group>
+ <group-id>PE-linkgrp-1</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNB</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+
+6.6.6.4. SubVPN with Multihoming
+
+ A customer has a site that is dual-homed. The dual-homing must be
+ done on two different PEs. The customer also wants to implement two
+ subVPNs on those multihomed accesses.
+
+ +-----------------+ Site +------+
+ | |---------------------------------/ +-----+
+ | |****(site-network-access#1)*****| VPN B / \
+ | New York Office |****(site-network-access#2)************| VPN C |
+ | | +-----\ /
+ | | +-----+
+ | |
+ | | +------+
+ | | / +-----+
+ | |****(site-network-access#3)*****| VPN B / \
+ | |****(site-network-access#4)************| VPN C |
+ | | +-----\ /
+ | |----------------------------------- +-----+
+ +-----------------+
+
+ This scenario can be expressed as follows:
+
+ o The site will have four site network accesses (two subVPNs coupled
+ via dual-homing).
+
+ o Site-network-access#1 and site-network-access#3 will correspond to
+ the multihoming of subVPN B. A PE-diverse constraint is required
+ between them.
+
+
+
+Litkowski, et al. Standards Track [Page 60]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ o Site-network-access#2 and site-network-access#4 will correspond to
+ the multihoming of subVPN C. A PE-diverse constraint is required
+ between them.
+
+ o To ensure proper usage of the same bearer for the subVPN,
+ site-network-access#1 and site-network-access#2 must share the
+ same bearer as site-network-access#3 and site-network-access#4.
+
+ <site>
+ <site-id>SITE1</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>dualhomed-1</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pe-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>dualhomed-2</group-id>
+ </group>
+ </target>
+ </constraint>
+ <constraint>
+ <constraint-type>same-bearer</constraint-type>
+ <target>
+ <group>
+ <group-id>dualhomed-1</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNB</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ <site-network-access>
+ <site-network-access-id>2</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+
+
+
+Litkowski, et al. Standards Track [Page 61]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <group-id>dualhomed-1</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pe-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>dualhomed-2</group-id>
+ </group>
+ </target>
+ </constraint>
+ <constraint>
+ <constraint-type>same-bearer</constraint-type>
+ <target>
+ <group>
+ <group-id>dualhomed-1</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNC</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ <site-network-access>
+ <site-network-access-id>3</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>dualhomed-2</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pe-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>dualhomed-1</group-id>
+ </group>
+ </target>
+ </constraint>
+ <constraint>
+ <constraint-type>same-bearer</constraint-type>
+ <target>
+ <group>
+
+
+
+Litkowski, et al. Standards Track [Page 62]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <group-id>dualhomed-2</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNB</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ <site-network-access>
+ <site-network-access-id>4</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>dualhomed-2</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pe-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>dualhomed-1</group-id>
+ </group>
+ </target>
+ </constraint>
+ <constraint>
+ <constraint-type>same-bearer</constraint-type>
+ <target>
+ <group>
+ <group-id>dualhomed-2</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <vpn-attachment>
+ <vpn-id>VPNC</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 63]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.6.7. Route Distinguisher and VRF Allocation
+
+ The route distinguisher (RD) is a critical parameter of PE-based
+ L3VPNs as described in [RFC4364] that provides the ability to
+ distinguish common addressing plans in different VPNs. As for route
+ targets (RTs), a management system is expected to allocate a VRF on
+ the target PE and an RD for this VRF.
+
+ If a VRF already exists on the target PE and the VRF fulfills the
+ connectivity constraints for the site, there is no need to recreate
+ another VRF, and the site MAY be meshed within this existing VRF.
+ How the management system checks that an existing VRF fulfills the
+ connectivity constraints for a site is out of scope for this
+ document.
+
+ If no such VRF exists on the target PE, the management system has to
+ initiate the creation of a new VRF on the target PE and has to
+ allocate a new RD for this new VRF.
+
+ The management system MAY apply a per-VPN or per-VRF allocation
+ policy for the RD, depending on the SP's policy. In a per-VPN
+ allocation policy, all VRFs (dispatched on multiple PEs) within a VPN
+ will share the same RD value. In a per-VRF model, all VRFs should
+ always have a unique RD value. Some other allocation policies are
+ also possible, and this document does not restrict the allocation
+ policies to be used.
+
+ The allocation of RDs MAY be done in the same way as RTs. The
+ examples provided in Section 6.2.1.1 could be reused in this
+ scenario.
+
+ Note that an SP MAY configure a target PE for an automated allocation
+ of RDs. In this case, there will be no need for any backend system
+ to allocate an RD value.
+
+6.7. Site Network Access Availability
+
+ A site may be multihomed, meaning that it has multiple
+ site-network-access points. Placement constraints defined in
+ previous sections will help ensure physical diversity.
+
+ When the site-network-accesses are placed on the network, a customer
+ may want to use a particular routing policy on those accesses.
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 64]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ The "site-network-access/availability" container defines parameters
+ for site redundancy. The "access-priority" leaf defines a preference
+ for a particular access. This preference is used to model
+ load-balancing or primary/backup scenarios. The higher the
+ access-priority value, the higher the preference will be.
+
+ The figure below describes how the access-priority attribute can be
+ used.
+
+ Hub#1 LAN (Primary/backup) Hub#2 LAN (Load-sharing)
+ | |
+ | access-priority 1 access-priority 1 |
+ |--- CE1 ------- PE1 PE3 --------- CE3 --- |
+ | |
+ | |
+ |--- CE2 ------- PE2 PE4 --------- CE4 --- |
+ | access-priority 2 access-priority 1 |
+
+ PE5
+ |
+ |
+ |
+ CE5
+ |
+ Spoke#1 site (Single-homed)
+
+ In the figure above, Hub#2 requires load-sharing, so all the
+ site-network-accesses must use the same access-priority value. On
+ the other hand, as Hub#1 requires a primary site-network-access and a
+ backup site-network-access, a higher access-priority setting will be
+ configured on the primary site-network-access.
+
+ Scenarios that are more complex can be modeled. Let's consider a Hub
+ site with five accesses to the network (A1,A2,A3,A4,A5). The
+ customer wants to load-share its traffic on A1,A2 in the nominal
+ situation. If A1 and A2 fail, the customer wants to load-share its
+ traffic on A3 and A4; finally, if A1 to A4 are down, he wants to
+ use A5. We can model this easily by configuring the following
+ access-priority values: A1=100, A2=100, A3=50, A4=50, A5=10.
+
+ The access-priority scenario has some limitations. An
+ access-priority scenario like the previous one with five accesses but
+ with the constraint of having traffic load-shared between A3 and A4
+ in the case where A1 OR A2 is down is not achievable. But the
+ authors believe that using the access-priority attribute will cover
+ most of the deployment use cases and that the model can still be
+ extended via augmentation to support additional use cases.
+
+
+
+
+Litkowski, et al. Standards Track [Page 65]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.8. Traffic Protection
+
+ The service model supports the ability to protect the traffic for a
+ site. Such protection provides a better level of availability in
+ multihoming scenarios by, for example, using local-repair techniques
+ in case of failures. The associated level of service guarantee would
+ be based on an agreement between the customer and the SP and is out
+ of scope for this document.
+
+ Site#1 Site#2
+ CE1 ----- PE1 -- P1 P3 -- PE3 ---- CE3
+ | | |
+ | | |
+ CE2 ----- PE2 -- P2 P4 -- PE4 ---- CE4
+ /
+ /
+ CE5 ----+
+ Site#3
+
+ In the figure above, we consider an IP VPN service with three sites,
+ including two dual-homed sites (Site#1 and Site#2). For dual-homed
+ sites, we consider PE1-CE1 and PE3-CE3 as primary and PE2-CE2,PE4-CE4
+ as backup for the example (even if protection also applies to
+ load-sharing scenarios).
+
+ In order to protect Site#2 against a failure, a user may set the
+ "traffic-protection/enabled" leaf to true for Site#2. How the
+ traffic protection will be implemented is out of scope for this
+ document. However, in such a case, we could consider traffic coming
+ from a remote site (Site#1 or Site#3), where the primary path would
+ use PE3 as the egress PE. PE3 may have preprogrammed a backup
+ forwarding entry pointing to the backup path (through PE4-CE4) for
+ all prefixes going through the PE3-CE3 link. How the backup path is
+ computed is out of scope for this document. When the PE3-CE3 link
+ fails, traffic is still received by PE3, but PE3 automatically
+ switches traffic to the backup entry; the path will therefore be
+ PE1-P1-(...)-P3-PE3-PE4-CE4 until the remote PEs reconverge and use
+ PE4 as the egress PE.
+
+6.9. Security
+
+ The "security" container defines customer-specific security
+ parameters for the site. The security options supported in the model
+ are limited but may be extended via augmentation.
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 66]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.9.1. Authentication
+
+ The current model does not support any authentication parameters for
+ the site connection, but such parameters may be added in the
+ "authentication" container through augmentation.
+
+6.9.2. Encryption
+
+ Traffic encryption can be requested on the connection. It may be
+ performed at Layer 2 or Layer 3 by selecting the appropriate
+ enumeration in the "layer" leaf. For example, an SP may use IPsec
+ when a customer requests Layer 3 encryption. The encryption profile
+ can be SP defined or customer specific.
+
+ When an SP profile is used and a key (e.g., a pre-shared key) is
+ allocated by the provider to be used by a customer, the SP should
+ provide a way to communicate the key in a secured way to the
+ customer.
+
+ When a customer profile is used, the model supports only a pre-shared
+ key for authentication, with the pre-shared key provided through the
+ NETCONF or RESTCONF request. A secure channel must be used to ensure
+ that the pre-shared key cannot be intercepted.
+
+ For security reasons, it may be necessary for the customer to change
+ the pre-shared key on a regular basis. To perform a key change, the
+ user can ask the SP to change the pre-shared key by submitting a new
+ pre-shared key for the site configuration (as shown below). This
+ mechanism might not be hitless.
+
+ <site>
+ <site-id>SITE1</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>1</site-network-access-id>
+ <security>
+ <encryption-profile>
+ <preshared-key>MY_NEW_KEY</preshared-key>
+ </encryption-profile>
+ </security>
+ </site-network-access>
+ </site-network-accesses>
+ </site>
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 67]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ A hitless key-change mechanism may be added through augmentation.
+
+ Other key-management methodologies may be added through augmentation.
+ A "pki" container, which is empty, has been created to help with
+ support of PKI through augmentation.
+
+6.10. Management
+
+ The model proposes three types of common management options:
+
+ o provider-managed: The CE router is managed only by the provider.
+ In this model, the responsibility boundary between the SP and the
+ customer is between the CE and the customer network.
+
+ o customer-managed: The CE router is managed only by the customer.
+ In this model, the responsibility boundary between the SP and the
+ customer is between the PE and the CE.
+
+ o co-managed: The CE router is primarily managed by the provider; in
+ addition, the SP allows customers to access the CE for
+ configuration/monitoring purposes. In the co-managed mode, the
+ responsibility boundary is the same as the responsibility boundary
+ for the provider-managed model.
+
+ Based on the management model, different security options MAY be
+ derived.
+
+ In the co-managed case, the model proposes some options to define the
+ management address family (IPv4 or IPv6) and the associated
+ management address.
+
+6.11. Routing Protocols
+
+ "routing-protocol" defines which routing protocol must be activated
+ between the provider and the customer router. The current model
+ supports the following settings: bgp, rip, ospf, static, direct,
+ and vrrp.
+
+ The routing protocol defined applies at the provider-to-customer
+ boundary. Depending on how the management model is administered, it
+ may apply to the PE-CE boundary or the CE-to-customer boundary. In
+ the case of a customer-managed site, the routing protocol defined
+ will be activated between the PE and the CE router managed by the
+ customer. In the case of a provider-managed site, the routing
+ protocol defined will be activated between the CE managed by the SP
+ and the router or LAN belonging to the customer. In this case, we
+ expect the PE-CE routing to be configured based on the SP's rules, as
+ both are managed by the same entity.
+
+
+
+Litkowski, et al. Standards Track [Page 68]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ Rtg protocol
+ 192.0.2.0/24 ----- CE ----------------- PE1
+
+ Customer-managed site
+
+ Rtg protocol
+ Customer router ----- CE ----------------- PE1
+
+ Provider-managed site
+
+ All the examples below will refer to a scenario for a customer-
+ managed site.
+
+6.11.1. Handling of Dual Stack
+
+ All routing protocol types support dual stack by using the
+ "address-family" leaf-list.
+
+ Example of dual stack using the same routing protocol:
+
+ <routing-protocols>
+ <routing-protocol>
+ <type>static</type>
+ <static>
+ <address-family>ipv4</address-family>
+ <address-family>ipv6</address-family>
+ </static>
+ </routing-protocol>
+ </routing-protocols>
+
+ Example of dual stack using two different routing protocols:
+
+ <routing-protocols>
+ <routing-protocol>
+ <type>rip</type>
+ <rip>
+ <address-family>ipv4</address-family>
+ </rip>
+ </routing-protocol>
+ <routing-protocol>
+ <type>ospf</type>
+ <ospf>
+ <address-family>ipv6</address-family>
+ </ospf>
+ </routing-protocol>
+ </routing-protocols>
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 69]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.11.2. LAN Directly Connected to SP Network
+
+ The routing protocol type "direct" SHOULD be used when a customer LAN
+ is directly connected to the provider network and must be advertised
+ in the IP VPN.
+
+ LAN attached directly to provider network:
+
+ 192.0.2.0/24 ----- PE1
+
+ In this case, the customer has a default route to the PE address.
+
+6.11.3. LAN Directly Connected to SP Network with Redundancy
+
+ The routing protocol type "vrrp" SHOULD be used and advertised in the
+ IP VPN when
+
+ o the customer LAN is directly connected to the provider network,
+ and
+
+ o LAN redundancy is expected.
+
+ LAN attached directly to provider network with LAN redundancy:
+
+ 192.0.2.0/24 ------ PE1
+ |
+ +--- PE2
+
+ In this case, the customer has a default route to the SP network.
+
+6.11.4. Static Routing
+
+ The routing protocol type "static" MAY be used when a customer LAN is
+ connected to the provider network through a CE router and must be
+ advertised in the IP VPN. In this case, the static routes give next
+ hops (nh) to the CE and to the PE. The customer has a default route
+ to the SP network.
+
+ Static rtg
+ 192.0.2.0/24 ------ CE -------------- PE
+ | |
+ | Static route 192.0.2.0/24 nh CE
+ Static route 0.0.0.0/0 nh PE
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 70]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.11.5. RIP Routing
+
+ The routing protocol type "rip" MAY be used when a customer LAN is
+ connected to the provider network through a CE router and must be
+ advertised in the IP VPN. For IPv4, the model assumes that RIP
+ version 2 is used.
+
+ In the case of dual-stack routing requested through this model, the
+ management system will be responsible for configuring RIP (including
+ the correct version number) and associated address families on
+ network elements.
+
+ RIP rtg
+ 192.0.2.0/24 ------ CE -------------- PE
+
+6.11.6. OSPF Routing
+
+ The routing protocol type "ospf" MAY be used when a customer LAN is
+ connected to the provider network through a CE router and must be
+ advertised in the IP VPN.
+
+ It can be used to extend an existing OSPF network and interconnect
+ different areas. See [RFC4577] for more details.
+
+ +---------------------+
+ | |
+ OSPF | | OSPF
+ area 1 | | area 2
+ (OSPF | | (OSPF
+ area 1) --- CE ---------- PE PE ----- CE --- area 2)
+ | |
+ +---------------------+
+
+ The model also proposes an option to create an OSPF sham link between
+ two sites sharing the same area and having a backdoor link. The
+ sham link is created by referencing the target site sharing the same
+ OSPF area. The management system will be responsible for checking to
+ see if there is already a sham link configured for this VPN and area
+ between the same pair of PEs. If there is no existing sham link, the
+ management system will provision one. This sham link MAY be reused
+ by other sites.
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 71]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ +------------------------+
+ | |
+ | |
+ | PE (--sham link--)PE |
+ | | | |
+ +----|----------------|--+
+ | OSPF area 1 | OSPF area 1
+ | |
+ CE1 CE2
+ | |
+ (OSPF area 1) (OSPF area 1)
+ | |
+ +----------------+
+
+ Regarding dual-stack support, the user MAY specify both IPv4 and IPv6
+ address families, if both protocols should be routed through OSPF.
+ As OSPF uses separate protocol instances for IPv4 and IPv6, the
+ management system will need to configure both OSPF version 2 and OSPF
+ version 3 on the PE-CE link.
+
+ Example of OSPF routing parameters in the service model:
+
+ <routing-protocols>
+ <routing-protocol>
+ <type>ospf</type>
+ <ospf>
+ <area-address>0.0.0.1</area-address>
+ <address-family>ipv4</address-family>
+ <address-family>ipv6</address-family>
+ </ospf>
+ </routing-protocol>
+ </routing-protocols>
+
+ Example of PE configuration done by the management system:
+
+ router ospf 10
+ area 0.0.0.1
+ interface Ethernet0/0
+ !
+ router ospfv3 10
+ area 0.0.0.1
+ interface Ethernet0/0
+ !
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 72]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.11.7. BGP Routing
+
+ The routing protocol type "bgp" MAY be used when a customer LAN is
+ connected to the provider network through a CE router and must be
+ advertised in the IP VPN.
+
+ BGP rtg
+ 192.0.2.0/24 ------ CE -------------- PE
+
+ The session addressing will be derived from connection parameters as
+ well as the SP's knowledge of the addressing plan that is in use.
+
+ In the case of dual-stack access, the user MAY request BGP routing
+ for both IPv4 and IPv6 by specifying both address families. It will
+ be up to the SP and management system to determine how to decline the
+ configuration (two BGP sessions, single, multi-session, etc.).
+
+ The service configuration below activates BGP on the PE-CE link for
+ both IPv4 and IPv6.
+
+ BGP activation requires the SP to know the address of the customer
+ peer. The "static-address" allocation type for the IP connection
+ MUST be used.
+
+ <routing-protocols>
+ <routing-protocol>
+ <type>bgp</type>
+ <bgp>
+ <autonomous-system>65000</autonomous-system>
+ <address-family>ipv4</address-family>
+ <address-family>ipv6</address-family>
+ </bgp>
+ </routing-protocol>
+ </routing-protocols>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 73]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ Depending on the SP flavor, a management system can divide this
+ service configuration into different flavors, as shown by the
+ following examples.
+
+ Example of PE configuration done by the management system
+ (single IPv4 transport session):
+
+ router bgp 100
+ neighbor 203.0.113.2 remote-as 65000
+ address-family ipv4 vrf Cust1
+ neighbor 203.0.113.2 activate
+ address-family ipv6 vrf Cust1
+ neighbor 203.0.113.2 activate
+ neighbor 203.0.113.2 route-map SET-NH-IPV6 out
+
+ Example of PE configuration done by the management system
+ (two sessions):
+
+ router bgp 100
+ neighbor 203.0.113.2 remote-as 65000
+ neighbor 2001::2 remote-as 65000
+ address-family ipv4 vrf Cust1
+ neighbor 203.0.113.2 activate
+ address-family ipv6 vrf Cust1
+ neighbor 2001::2 activate
+
+ Example of PE configuration done by the management system
+ (multi-session):
+
+ router bgp 100
+ neighbor 203.0.113.2 remote-as 65000
+ neighbor 203.0.113.2 multisession per-af
+ address-family ipv4 vrf Cust1
+ neighbor 203.0.113.2 activate
+ address-family ipv6 vrf Cust1
+ neighbor 203.0.113.2 activate
+ neighbor 203.0.113.2 route-map SET-NH-IPV6 out
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 74]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.12. Service
+
+ The service defines service parameters associated with the site.
+
+6.12.1. Bandwidth
+
+ The service bandwidth refers to the bandwidth requirement between the
+ PE and the CE (WAN link bandwidth). The requested bandwidth is
+ expressed as svc-input-bandwidth and svc-output-bandwidth in bits
+ per second. The input/output direction uses the customer site as a
+ reference: "input bandwidth" means download bandwidth for the site,
+ and "output bandwidth" means upload bandwidth for the site.
+
+ The service bandwidth is only configurable at the site-network-access
+ level.
+
+ Using a different input and output bandwidth will allow the SP to
+ determine if the customer allows for asymmetric bandwidth access,
+ such as ADSL. It can also be used to set rate-limiting in a
+ different way for uploading and downloading on a symmetric bandwidth
+ access.
+
+ The bandwidth is a service bandwidth expressed primarily as IP
+ bandwidth, but if the customer enables MPLS for Carriers' Carriers
+ (CsC), this becomes MPLS bandwidth.
+
+6.12.2. QoS
+
+ The model proposes to define QoS parameters in an abstracted way:
+
+ o qos-classification-policy: policy that defines a set of ordered
+ rules to classify customer traffic.
+
+ o qos-profile: QoS scheduling profile to be applied.
+
+6.12.2.1. QoS Classification
+
+ QoS classification rules are handled by the
+ "qos-classification-policy" container. The qos-classification-policy
+ container is an ordered list of rules that match a flow or
+ application and set the appropriate target class of service
+ (target-class-id). The user can define the match using an
+ application reference or a flow definition that is more specific
+ (e.g., based on Layer 3 source and destination addresses, Layer 4
+ ports, and Layer 4 protocol). When a flow definition is used, the
+ user can employ a "target-sites" leaf-list to identify the
+ destination of a flow rather than using destination IP addresses. In
+ such a case, an association between the site abstraction and the IP
+
+
+
+Litkowski, et al. Standards Track [Page 75]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ addresses used by this site must be done dynamically. How this
+ association is done is out of scope for this document; an
+ implementation might not support this criterion and should advertise
+ a deviation in this case. A rule that does not have a match
+ statement is considered a match-all rule. An SP may implement a
+ default terminal classification rule if the customer does not provide
+ it. It will be up to the SP to determine its default target class.
+ The current model defines some applications, but new application
+ identities may be added through augmentation. The exact meaning of
+ each application identity is up to the SP, so it will be necessary
+ for the SP to advise the customer on the usage of application
+ matching.
+
+ Where the classification is done depends on the SP's implementation
+ of the service, but classification concerns the flow coming from the
+ customer site and entering the network.
+
+ Provider network
+ +-----------------------+
+ 192.0.2.0/24
+ 198.51.100.0/24 ---- CE --------- PE
+
+ Traffic flow
+ ---------->
+
+ In the figure above, the management system should implement the
+ classification rule:
+
+ o in the ingress direction on the PE interface, if the CE is
+ customer-managed.
+
+ o in the ingress direction on the CE interface connected to the
+ customer LAN, if the CE is provider-managed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 76]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ The figure below describes a sample service description of QoS
+ classification for a site:
+
+ <service>
+ <qos>
+ <qos-classification-policy>
+ <rule>
+ <id>1</id>
+ <match-flow>
+ <ipv4-src-prefix>192.0.2.0/24</ipv4-src-prefix>
+ <ipv4-dst-prefix>203.0.113.1/32</ipv4-dst-prefix>
+ <l4-dst-port>80</l4-dst-port>
+ <l4-protocol>tcp</l4-protocol>
+ </match-flow>
+ <target-class-id>DATA2</target-class-id>
+ </rule>
+ <rule>
+ <id>2</id>
+ <match-flow>
+ <ipv4-src-prefix>192.0.2.0/24</ipv4-src-prefix>
+ <ipv4-dst-prefix>203.0.113.1/32</ipv4-dst-prefix>
+ <l4-dst-port>21</l4-dst-port>
+ <l4-protocol>tcp</l4-protocol>
+ </match-flow>
+ <target-class-id>DATA2</target-class-id>
+ </rule>
+ <rule>
+ <id>3</id>
+ <match-application>p2p</match-application>
+ <target-class-id>DATA3</target-class-id>
+ </rule>
+ <rule>
+ <id>4</id>
+ <target-class-id>DATA1</target-class-id>
+ </rule>
+ </qos-classification-policy>
+ </qos>
+ </service>
+
+ In the example above:
+
+ o HTTP traffic from the 192.0.2.0/24 LAN destined for 203.0.113.1/32
+ will be classified in DATA2.
+
+ o FTP traffic from the 192.0.2.0/24 LAN destined for 203.0.113.1/32
+ will be classified in DATA2.
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 77]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ o Peer-to-peer traffic will be classified in DATA3.
+
+ o All other traffic will be classified in DATA1.
+
+ The order of rules is very important. The management system
+ responsible for translating those rules in network element
+ configuration MUST keep the same processing order in network element
+ configuration. The order of rules is defined by the "id" leaf. The
+ lowest id MUST be processed first.
+
+6.12.2.2. QoS Profile
+
+ The user can choose either a standard profile provided by the
+ operator or a custom profile. The "qos-profile" container defines
+ the traffic-scheduling policy to be used by the SP.
+
+ Provider network
+ +-----------------------+
+ 192.0.2.0/24
+ 198.51.100.0/24 ---- CE --------- PE
+ \ /
+ qos-profile
+
+ In the case of a provider-managed or co-managed connection, the
+ provider should ensure scheduling according to the requested policy
+ in both traffic directions (SP to customer and customer to SP). As
+ an example, a device-scheduling policy may be implemented on both the
+ PE side and the CE side of the WAN link. In the case of a customer-
+ managed connection, the provider is only responsible for ensuring
+ scheduling from the SP network to the customer site. As an example,
+ a device-scheduling policy may be implemented only on the PE side of
+ the WAN link towards the customer.
+
+ A custom QoS profile is defined as a list of classes of services and
+ associated properties. The properties are:
+
+ o rate-limit: used to rate-limit the class of service. The value is
+ expressed as a percentage of the global service bandwidth. When
+ the qos-profile container is implemented on the CE side,
+ svc-output-bandwidth is taken into account as a reference. When
+ it is implemented on the PE side, svc-input-bandwidth is used.
+
+ o latency: used to define the latency constraint of the class. The
+ latency constraint can be expressed as the lowest possible latency
+ or a latency boundary expressed in milliseconds. How this latency
+ constraint will be fulfilled is up to the SP's implementation of
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 78]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ the service: a strict priority queuing may be used on the access
+ and in the core network, and/or a low-latency routing
+ configuration may be created for this traffic class.
+
+ o jitter: used to define the jitter constraint of the class. The
+ jitter constraint can be expressed as the lowest possible jitter
+ or a jitter boundary expressed in microseconds. How this jitter
+ constraint will be fulfilled is up to the SP's implementation of
+ the service: a strict priority queuing may be used on the access
+ and in the core network, and/or a jitter-aware routing
+ configuration may be created for this traffic class.
+
+ o bandwidth: used to define a guaranteed amount of bandwidth for the
+ class of service. It is expressed as a percentage. The
+ "guaranteed-bw-percent" parameter uses available bandwidth as a
+ reference. When the qos-profile container is implemented on the
+ CE side, svc-output-bandwidth is taken into account as a
+ reference. When it is implemented on the PE side,
+ svc-input-bandwidth is used. By default, the bandwidth
+ reservation is only guaranteed at the access level. The user can
+ use the "end-to-end" leaf to request an end-to-end bandwidth
+ reservation, including across the MPLS transport network. (In
+ other words, the SP will activate something in the MPLS core to
+ ensure that the bandwidth request from the customer will be
+ fulfilled by the MPLS core as well.) How this is done (e.g., RSVP
+ reservation, controller reservation) is out of scope for this
+ document.
+
+ Some constraints may not be offered by an SP; in this case, a
+ deviation should be advertised. In addition, due to network
+ conditions, some constraints may not be completely fulfilled by the
+ SP; in this case, the SP should advise the customer about the
+ limitations. How this communication is done is out of scope for this
+ document.
+
+ Example of service configuration using a standard QoS profile:
+
+ <site-network-access>
+ <site-network-access-id>1245HRTFGJGJ154654</site-network-access-id>
+ <service>
+ <svc-input-bandwidth>100000000</svc-input-bandwidth>
+ <svc-output-bandwidth>100000000</svc-output-bandwidth>
+ <qos>
+ <qos-profile>
+ <profile>PLATINUM</profile>
+ </qos-profile>
+ </qos>
+ </service>
+
+
+
+Litkowski, et al. Standards Track [Page 79]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ </site-network-access>
+ <site-network-access>
+ <site-network-access-id>555555AAAA2344</site-network-access-id>
+ <service>
+ <svc-input-bandwidth>2000000</svc-input-bandwidth>
+ <svc-output-bandwidth>2000000</svc-output-bandwidth>
+ <qos>
+ <qos-profile>
+ <profile>GOLD</profile>
+ </qos-profile>
+ </qos>
+ </service>
+ </site-network-access>
+
+ Example of service configuration using a custom QoS profile:
+
+ <site-network-access>
+ <site-network-access-id>Site1</site-network-access-id>
+ <service>
+ <svc-input-bandwidth>100000000</svc-input-bandwidth>
+ <svc-output-bandwidth>100000000</svc-output-bandwidth>
+ <qos>
+ <qos-profile>
+ <classes>
+ <class>
+ <class-id>REAL_TIME</class-id>
+ <rate-limit>10</rate-limit>
+ <latency>
+ <use-lowest-latency/>
+ </latency>
+ </class>
+ <class>
+ <class-id>DATA1</class-id>
+ <latency>
+ <latency-boundary>70</latency-boundary>
+ </latency>
+ <bandwidth>
+ <guaranteed-bw-percent>80</guaranteed-bw-percent>
+ </bandwidth>
+ </class>
+ <class>
+ <class-id>DATA2</class-id>
+ <latency>
+ <latency-boundary>200</latency-boundary>
+ </latency>
+ <bandwidth>
+ <guaranteed-bw-percent>5</guaranteed-bw-percent>
+ <end-to-end/>
+
+
+
+Litkowski, et al. Standards Track [Page 80]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ </bandwidth>
+ </class>
+ </classes>
+ </qos-profile>
+ </qos>
+ </service>
+ </site-network-access>
+
+ The custom QoS profile for Site1 defines a REAL_TIME class with a
+ latency constraint expressed as the lowest possible latency. It also
+ defines two data classes -- DATA1 and DATA2. The two classes express
+ a latency boundary constraint as well as a bandwidth reservation, as
+ the REAL_TIME class is rate-limited to 10% of the service bandwidth
+ (10% of 100 Mbps = 10 Mbps). In cases where congestion occurs, the
+ REAL_TIME traffic can go up to 10 Mbps (let's assume that only 5 Mbps
+ are consumed). DATA1 and DATA2 will share the remaining bandwidth
+ (95 Mbps) according to their percentage. So, the DATA1 class will be
+ served with at least 76 Mbps of bandwidth, while the DATA2 class will
+ be served with at least 4.75 Mbps. The latency boundary information
+ of the data class may help the SP define a specific buffer tuning or
+ a specific routing within the network. The maximum percentage to be
+ used is not limited by this model but MUST be limited by the
+ management system according to the policies authorized by the SP.
+
+6.12.3. Multicast
+
+ The "multicast" container defines the type of site in the customer
+ multicast service topology: source, receiver, or both. These
+ parameters will help the management system optimize the multicast
+ service. Users can also define the type of multicast relationship
+ with the customer: router (requires a protocol such as PIM), host
+ (IGMP or MLD), or both. An address family (IPv4, IPv6, or both) can
+ also be defined.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 81]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.13. Enhanced VPN Features
+
+6.13.1. Carriers' Carriers
+
+ In the case of CsC [RFC4364], a customer may want to build an MPLS
+ service using an IP VPN to carry its traffic.
+
+ LAN customer1
+ |
+ |
+ CE1
+ |
+ | -------------
+ (vrf_cust1)
+ CE1_ISP1
+ | ISP1 POP
+ | MPLS link
+ | -------------
+ |
+ (vrf ISP1)
+ PE1
+
+ (...) Provider backbone
+
+ PE2
+ (vrf ISP1)
+ |
+ | ------------
+ |
+ | MPLS link
+ | ISP1 POP
+ CE2_ISP1
+ (vrf_cust1)
+ | ------------
+ |
+ CE2
+ |
+ LAN customer1
+
+ In the figure above, ISP1 resells an IP VPN service but has no core
+ network infrastructure between its POPs. ISP1 uses an IP VPN as the
+ core network infrastructure (belonging to another provider) between
+ its POPs.
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 82]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ In order to support CsC, the VPN service must indicate MPLS support
+ by setting the "carrierscarrier" leaf to true in the vpn-service
+ list. The link between CE1_ISP1/PE1 and CE2_ISP1/PE2 must also run
+ an MPLS signalling protocol. This configuration is done at the site
+ level.
+
+ In the proposed model, LDP or BGP can be used as the MPLS signalling
+ protocol. In the case of LDP, an IGP routing protocol MUST also be
+ activated. In the case of BGP signalling, BGP MUST also be
+ configured as the routing protocol.
+
+ If CsC is enabled, the requested "svc-mtu" leaf will refer to the
+ MPLS MTU and not to the IP MTU.
+
+6.14. External ID References
+
+ The service model sometimes refers to external information through
+ identifiers. As an example, to order a cloud-access to a particular
+ cloud service provider (CSP), the model uses an identifier to refer
+ to the targeted CSP. If a customer is directly using this service
+ model as an API (through REST or NETCONF, for example) to order a
+ particular service, the SP should provide a list of authorized
+ identifiers. In the case of cloud-access, the SP will provide the
+ associated identifiers for each available CSP. The same applies to
+ other identifiers, such as std-qos-profile, OAM profile-name, and
+ provider-profile for encryption.
+
+ How an SP provides the meanings of those identifiers to the customer
+ is out of scope for this document.
+
+6.15. Defining NNIs
+
+ An autonomous system (AS) is a single network or group of networks
+ that is controlled by a common system administration group and that
+ uses a single, clearly defined routing protocol. In some cases, VPNs
+ need to span different ASes in different geographic areas or span
+ different SPs. The connection between ASes is established by the SPs
+ and is seamless to the customer. Examples include
+
+ o a partnership between SPs (e.g., carrier, cloud) to extend their
+ VPN service seamlessly.
+
+ o an internal administrative boundary within a single SP (e.g.,
+ backhaul versus core versus data center).
+
+ NNIs (network-to-network interfaces) have to be defined to extend the
+ VPNs across multiple ASes.
+
+
+
+
+Litkowski, et al. Standards Track [Page 83]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ [RFC4364] defines multiple flavors of VPN NNI implementations. Each
+ implementation has pros and cons; this topic is outside the scope of
+ this document. For example, in an Inter-AS option A, autonomous
+ system border router (ASBR) peers are connected by multiple
+ interfaces with at least one of those interfaces spanning the two
+ ASes while being present in the same VPN. In order for these ASBRs
+ to signal unlabeled IP prefixes, they associate each interface with a
+ VPN routing and forwarding (VRF) instance and a Border Gateway
+ Protocol (BGP) session. As a result, traffic between the
+ back-to-back VRFs is IP. In this scenario, the VPNs are isolated
+ from each other, and because the traffic is IP, QoS mechanisms that
+ operate on IP traffic can be applied to achieve customer service
+ level agreements (SLAs).
+
+ -------- -------------- -----------
+ / \ / \ / \
+ | Cloud | | | | |
+ | Provider |-----NNI-----| |----NNI---| Data Center |
+ | #1 | | | | |
+ \ / | | \ /
+ -------- | | -----------
+ | |
+ -------- | My network | -----------
+ / \ | | / \
+ | Cloud | | | | |
+ | Provider |-----NNI-----| |---NNI---| L3VPN |
+ | #2 | | | | Partner |
+ \ / | | | |
+ -------- | | | |
+ \ / | |
+ -------------- \ /
+ | -----------
+ |
+ NNI
+ |
+ |
+ -------------------
+ / \
+ | |
+ | |
+ | |
+ | L3VPN Partner |
+ | |
+ \ /
+ -------------------
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 84]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ The figure above describes an SP network called "My network" that has
+ several NNIs. This network uses NNIs to:
+
+ o increase its footprint by relying on L3VPN partners.
+
+ o connect its own data center services to the customer IP VPN.
+
+ o enable the customer to access its private resources located in a
+ private cloud owned by some CSPs.
+
+6.15.1. Defining an NNI with the Option A Flavor
+
+ AS A AS B
+ ------------------- -------------------
+ / \ / \
+ | | | |
+ | ++++++++ Inter-AS link ++++++++ |
+ | + +_______________+ + |
+ | + (VRF1)---(VPN1)----(VRF1) + |
+ | + ASBR + + ASBR + |
+ | + (VRF2)---(VPN2)----(VRF2) + |
+ | + +_______________+ + |
+ | ++++++++ ++++++++ |
+ | | | |
+ | | | |
+ | | | |
+ | ++++++++ Inter-AS link ++++++++ |
+ | + +_______________+ + |
+ | + (VRF1)---(VPN1)----(VRF1) + |
+ | + ASBR + + ASBR + |
+ | + (VRF2)---(VPN2)----(VRF2) + |
+ | + +_______________+ + |
+ | ++++++++ ++++++++ |
+ | | | |
+ | | | |
+ \ / \ /
+ ------------------- -------------------
+
+ In option A, the two ASes are connected to each other with physical
+ links on ASBRs. For resiliency purposes, there may be multiple
+ physical connections between the ASes. A VPN connection -- physical
+ or logical (on top of physical) -- is created for each VPN that needs
+ to cross the AS boundary, thus providing a back-to-back VRF model.
+
+ From a service model's perspective, this VPN connection can be seen
+ as a site. Let's say that AS B wants to extend some VPN connections
+ for VPN C on AS A. The administrator of AS B can use this service
+ model to order a site on AS A. All connection scenarios could be
+
+
+
+Litkowski, et al. Standards Track [Page 85]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ realized using the features of the current model. As an example, the
+ figure above shows two physical connections that have logical
+ connections per VPN overlaid on them. This could be seen as a
+ dual-homed subVPN scenario. Also, the administrator of AS B will be
+ able to choose the appropriate routing protocol (e.g., E-BGP) to
+ dynamically exchange routes between ASes.
+
+ This document assumes that the option A NNI flavor SHOULD reuse the
+ existing VPN site modeling.
+
+ Example: a customer wants its CSP A to attach its virtual network N
+ to an existing IP VPN (VPN1) that he has from L3VPN SP B.
+
+ CSP A L3VPN SP B
+
+ ----------------- -------------------
+ / \ / \
+ | | | | |
+ | VM --| ++++++++ NNI ++++++++ |--- VPN1
+ | | + +_________+ + | Site#1
+ | |--------(VRF1)---(VPN1)--(VRF1)+ |
+ | | + ASBR + + ASBR + |
+ | | + +_________+ + |
+ | | ++++++++ ++++++++ |
+ | VM --| | | |--- VPN1
+ | |Virtual | | | Site#2
+ | |Network | | |
+ | VM --| | | |--- VPN1
+ | | | | | Site#3
+ \ / \ /
+ ----------------- -------------------
+ |
+ |
+ VPN1
+ Site#4
+
+ To create the VPN connectivity, the CSP or the customer may use the
+ L3VPN service model that SP B exposes. We could consider that, as
+ the NNI is shared, the physical connection (bearer) between CSP A and
+ SP B already exists. CSP A may request through a service model the
+ creation of a new site with a single site-network-access
+ (single-homing is used in the figure). As a placement constraint,
+ CSP A may use the existing bearer reference it has from SP A to force
+ the placement of the VPN NNI on the existing link. The XML below
+ illustrates a possible configuration request to SP B:
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 86]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <site>
+ <site-id>CSP_A_attachment</site-id>
+ <location>
+ <city>NY</city>
+ <country-code>US</country-code>
+ </location>
+ <site-vpn-flavor>site-vpn-flavor-nni</site-vpn-flavor>
+ <routing-protocols>
+ <routing-protocol>
+ <type>bgp</type>
+ <bgp>
+ <autonomous-system>500</autonomous-system>
+ <address-family>ipv4</address-family>
+ </bgp>
+ </routing-protocol>
+ </routing-protocols>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>CSP_A_VN1</site-network-access-id>
+ <ip-connection>
+ <ipv4>
+ <address-allocation-type>
+ static-address
+ </address-allocation-type>
+ <addresses>
+ <provider-address>203.0.113.1</provider-address>
+ <customer-address>203.0.113.2</customer-address>
+ <mask>30</mask>
+ </addresses>
+ </ipv4>
+ </ip-connection>
+ <service>
+ <svc-input-bandwidth>450000000</svc-input-bandwidth>
+ <svc-output-bandwidth>450000000</svc-output-bandwidth>
+ </service>
+ <vpn-attachment>
+ <vpn-id>VPN1</vpn-id>
+ <site-role>any-to-any-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ <management>
+ <type>customer-managed</type>
+ </management>
+ </site>
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 87]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ The case described above is different from a scenario using the
+ cloud-accesses container, as the cloud-access provides a public cloud
+ access while this example enables access to private resources located
+ in a CSP network.
+
+6.15.2. Defining an NNI with the Option B Flavor
+
+ AS A AS B
+ ------------------- -------------------
+ / \ / \
+ | | | |
+ | ++++++++ Inter-AS link ++++++++ |
+ | + +_______________+ + |
+ | + + + + |
+ | + ASBR +<---MP-BGP---->+ ASBR + |
+ | + + + + |
+ | + +_______________+ + |
+ | ++++++++ ++++++++ |
+ | | | |
+ | | | |
+ | | | |
+ | ++++++++ Inter-AS link ++++++++ |
+ | + +_______________+ + |
+ | + + + + |
+ | + ASBR +<---MP-BGP---->+ ASBR + |
+ | + + + + |
+ | + +_______________+ + |
+ | ++++++++ ++++++++ |
+ | | | |
+ | | | |
+ \ / \ /
+ ------------------- -------------------
+
+ In option B, the two ASes are connected to each other with physical
+ links on ASBRs. For resiliency purposes, there may be multiple
+ physical connections between the ASes. The VPN "connection" between
+ ASes is done by exchanging VPN routes through MP-BGP [RFC4760].
+
+ There are multiple flavors of implementations of such an NNI. For
+ example:
+
+ 1. The NNI is internal to the provider and is situated between a
+ backbone and a data center. There is enough trust between the
+ domains to not filter the VPN routes. So, all the VPN routes are
+ exchanged. RT filtering may be implemented to save some
+ unnecessary route states.
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 88]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ 2. The NNI is used between providers that agreed to exchange VPN
+ routes for specific RTs only. Each provider is authorized to use
+ the RT values from the other provider.
+
+ 3. The NNI is used between providers that agreed to exchange VPN
+ routes for specific RTs only. Each provider has its own RT
+ scheme. So, a customer spanning the two networks will have
+ different RTs in each network for a particular VPN.
+
+ Case 1 does not require any service modeling, as the protocol enables
+ the dynamic exchange of necessary VPN routes.
+
+ Case 2 requires that an RT-filtering policy on ASBRs be maintained.
+ From a service modeling point of view, it is necessary to agree on
+ the list of RTs to authorize.
+
+ In Case 3, both ASes need to agree on the VPN RT to exchange, as well
+ as how to map a VPN RT from AS A to the corresponding RT in AS B (and
+ vice versa).
+
+ Those modelings are currently out of scope for this document.
+
+ CSP A L3VPN SP B
+
+ ----------------- ------------------
+ / \ / \
+ | | | | |
+ | VM --| ++++++++ NNI ++++++++ |--- VPN1
+ | | + +__________+ + | Site#1
+ | |-------+ + + + |
+ | | + ASBR +<-MP-BGP->+ ASBR + |
+ | | + +__________+ + |
+ | | ++++++++ ++++++++ |
+ | VM --| | | |--- VPN1
+ | |Virtual | | | Site#2
+ | |Network | | |
+ | VM --| | | |--- VPN1
+ | | | | | Site#3
+ \ / | |
+ ----------------- | |
+ \ /
+ ------------------
+ |
+ |
+ VPN1
+ Site#4
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 89]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ The example above describes an NNI connection between CSP A and SP
+ network B. Both SPs do not trust themselves and use a different RT
+ allocation policy. So, in terms of implementation, the customer VPN
+ has a different RT in each network (RT A in CSP A and RT B in SP
+ network B). In order to connect the customer virtual network in
+ CSP A to the customer IP VPN (VPN1) in SP network B, CSP A should
+ request that SP network B open the customer VPN on the NNI (accept
+ the appropriate RT). Who does the RT translation depends on the
+ agreement between the two SPs: SP B may permit CSP A to request VPN
+ (RT) translation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 90]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+6.15.3. Defining an NNI with the Option C Flavor
+
+ AS A AS B
+ ------------------- -------------------
+ / \ / \
+ | | | |
+ | | | |
+ | | | |
+ | ++++++++ Multihop E-BGP ++++++++ |
+ | + + + + |
+ | + + + + |
+ | + RGW +<----MP-BGP---->+ RGW + |
+ | + + + + |
+ | + + + + |
+ | ++++++++ ++++++++ |
+ | | | |
+ | | | |
+ | | | |
+ | | | |
+ | | | |
+ | ++++++++ Inter-AS link ++++++++ |
+ | + +_______________+ + |
+ | + + + + |
+ | + ASBR + + ASBR + |
+ | + + + + |
+ | + +_______________+ + |
+ | ++++++++ ++++++++ |
+ | | | |
+ | | | |
+ | | | |
+ | ++++++++ Inter-AS link ++++++++ |
+ | + +_______________+ + |
+ | + + + + |
+ | + ASBR + + ASBR + |
+ | + + + + |
+ | + +_______________+ + |
+ | ++++++++ ++++++++ |
+ | | | |
+ | | | |
+ \ / \ /
+ ------------------- -------------------
+
+ From a VPN service's perspective, the option C NNI is very similar to
+ option B, as an MP-BGP session is used to exchange VPN routes between
+ the ASes. The difference is that the forwarding plane and the
+ control plane are on different nodes, so the MP-BGP session is
+ multihop between routing gateway (RGW) nodes.
+
+
+
+
+Litkowski, et al. Standards Track [Page 91]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ From a VPN service's point of view, modeling options B and C will be
+ identical.
+
+7. Service Model Usage Example
+
+ As explained in Section 5, this service model is intended to be
+ instantiated at a management layer and is not intended to be used
+ directly on network elements. The management system serves as a
+ central point of configuration of the overall service.
+
+ This section provides an example of how a management system can use
+ this model to configure an IP VPN service on network elements.
+
+ In this example, we want to achieve the provisioning of a VPN service
+ for three sites using a Hub-and-Spoke VPN service topology. One of
+ the sites will be dual-homed, and load-sharing is expected.
+
+ +-------------------------------------------------------------+
+ | Hub_Site ------ PE1 PE2 ------ Spoke_Site1 |
+ | | +----------------------------------+
+ | | |
+ | | +----------------------------------+
+ | Hub_Site ------ PE3 PE4 ------ Spoke_Site2 |
+ +-------------------------------------------------------------+
+
+ The following XML describes the overall simplified service
+ configuration of this VPN.
+
+ <vpn-service>
+ <vpn-id>12456487</vpn-id>
+ <vpn-service-topology>hub-spoke</vpn-service-topology>
+ </vpn-service>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 92]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ When receiving the request for provisioning the VPN service, the
+ management system will internally (or through communication with
+ another OSS component) allocate VPN RTs. In this specific case, two
+ RTs will be allocated (100:1 for Hub and 100:2 for Spoke). The
+ output below describes the configuration of Spoke_Site1.
+
+ <site>
+ <site-id>Spoke_Site1</site-id>
+ <location>
+ <city>NY</city>
+ <country-code>US</country-code>
+ </location>
+ <routing-protocols>
+ <routing-protocol>
+ <type>bgp</type>
+ <bgp>
+ <autonomous-system>500</autonomous-system>
+ <address-family>ipv4</address-family>
+ <address-family>ipv6</address-family>
+ </bgp>
+ </routing-protocol>
+ </routing-protocols>
+ <site-network-accesses>
+ <site-network-access>
+ <site-network-access-id>Spoke_Site1</site-network-access-id>
+ <access-diversity>
+ <groups>
+ <group>
+ <group-id>20</group-id>
+ </group>
+ </groups>
+ <constraints>
+ <constraint>
+ <constraint-type>pe-diverse</constraint-type>
+ <target>
+ <group>
+ <group-id>10</group-id>
+ </group>
+ </target>
+ </constraint>
+ </constraints>
+ </access-diversity>
+ <ip-connection>
+ <ipv4>
+ <address-allocation-type>
+ static-address
+ </address-allocation-type>
+
+
+
+
+Litkowski, et al. Standards Track [Page 93]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <addresses>
+ <provider-address>203.0.113.254</provider-address>
+ <customer-address>203.0.113.2</customer-address>
+ <mask>24</mask>
+ </addresses>
+ </ipv4>
+ <ipv6>
+ <address-allocation-type>
+ static-address
+ </address-allocation-type>
+ <addresses>
+ <provider-address>2001:db8::1</provider-address>
+ <customer-address>2001:db8::2</customer-address>
+ <mask>64</mask>
+ </addresses>
+ </ipv6>
+ </ip-connection>
+ <service>
+ <svc-input-bandwidth>450000000</svc-input-bandwidth>
+ <svc-output-bandwidth>450000000</svc-output-bandwidth>
+ </service>
+ <vpn-attachment>
+ <vpn-id>12456487</vpn-id>
+ <site-role>spoke-role</site-role>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+ <management>
+ <type>provider-managed</type>
+ </management>
+ </site>
+
+ When receiving the request for provisioning Spoke_Site1, the
+ management system MUST allocate network resources for this site. It
+ MUST first determine the target network elements to provision the
+ access, particularly the PE router (and perhaps also an aggregation
+ switch). As described in Section 6.6, the management system SHOULD
+ use the location information and SHOULD use the access-diversity
+ constraint to find the appropriate PE. In this case, we consider
+ that Spoke_Site1 requires PE diversity with the Hub and that the
+ management system allocates PEs based on the least distance. Based
+ on the location information, the management system finds the
+ available PEs in the area nearest the customer and picks one that
+ fits the access-diversity constraint.
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 94]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ When the PE is chosen, the management system needs to allocate
+ interface resources on the node. One interface is selected from the
+ pool of available PEs. The management system can start provisioning
+ the chosen PE node via whatever means the management system prefers
+ (e.g., NETCONF, CLI). The management system will check to see if a
+ VRF that fits its needs is already present. If not, it will
+ provision the VRF: the RD will be derived from the internal
+ allocation policy model, and the RTs will be derived from the VPN
+ policy configuration of the site (the management system allocated
+ some RTs for the VPN). As the site is a Spoke site (site-role), the
+ management system knows which RTs must be imported and exported. As
+ the site is provider-managed, some management RTs may also be added
+ (100:5000). Standard provider VPN policies MAY also be added in the
+ configuration.
+
+ Example of generated PE configuration:
+
+ ip vrf Customer1
+ export-map STD-CUSTOMER-EXPORT <---- Standard SP configuration
+ route-distinguisher 100:3123234324
+ route-target import 100:1
+ route-target import 100:5000 <---- Standard SP configuration
+ route-target export 100:2 for provider-managed CE
+ !
+
+ When the VRF has been provisioned, the management system can start
+ configuring the access on the PE using the allocated interface
+ information. IP addressing is chosen by the management system. One
+ address will be picked from an allocated subnet for the PE, and
+ another will be used for the CE configuration. Routing protocols
+ will also be configured between the PE and CE; because this model is
+ provider-managed, the choices are left to the SP. BGP was chosen for
+ this example. This choice is independent of the routing protocol
+ chosen by the customer. BGP will be used to configure the CE-to-LAN
+ connection as requested in the service model. Peering addresses will
+ be derived from those of the connection. As the CE is provider-
+ managed, the CE's AS number can be automatically allocated by the
+ management system. Standard configuration templates provided by the
+ SP may also be added.
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 95]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ Example of generated PE configuration:
+
+ interface Ethernet1/1/0.10
+ encapsulation dot1q 10
+ ip vrf forwarding Customer1
+ ip address 198.51.100.1 255.255.255.252 <---- Comes from
+ automated allocation
+ ipv6 address 2001:db8::10:1/64
+ ip access-group STD-PROTECT-IN <---- Standard SP config
+ !
+ router bgp 100
+ address-family ipv4 vrf Customer1
+ neighbor 198.51.100.2 remote-as 65000 <---- Comes from
+ automated allocation
+ neighbor 198.51.100.2 route-map STD in <---- Standard SP config
+ neighbor 198.51.100.2 filter-list 10 in <---- Standard SP config
+ !
+ address-family ipv6 vrf Customer1
+ neighbor 2001:db8::0a10:2 remote-as 65000 <---- Comes from
+ automated allocation
+ neighbor 2001:db8::0a10:2 route-map STD in <---- Standard SP
+ config
+ neighbor 2001:db8::0a10:2 filter-list 10 in <---- Standard SP
+ config
+ !
+ ip route vrf Customer1 192.0.2.1 255.255.255.255 198.51.100.2
+ ! Static route for provider administration of CE
+ !
+
+ As the CE router is not reachable at this stage, the management
+ system can produce a complete CE configuration that can be manually
+ uploaded to the node before sending the CE configuration to the
+ customer premises. The CE configuration will be built in the same
+ way as the PE would be configured. Based on the CE type
+ (vendor/model) allocated to the customer as well as the bearer
+ information, the management system knows which interface must be
+ configured on the CE. PE-CE link configuration is expected to be
+ handled automatically using the SP OSS, as both resources are managed
+ internally. CE-to-LAN-interface parameters such as IP addressing are
+ derived from the ip-connection container, taking into account how the
+ management system distributes addresses between the PE and CE within
+ the subnet. This will allow a plug-and-play configuration for the CE
+ to be created.
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 96]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ Example of generated CE configuration:
+
+ interface Loopback10
+ description "Administration"
+ ip address 192.0.2.1 255.255.255.255
+ !
+ interface FastEthernet10
+ description "WAN"
+ ip address 198.51.100.2 255.255.255.252 <---- Comes from
+ automated allocation
+ ipv6 address 2001:db8::0a10:2/64
+ !
+ interface FastEthernet11
+ description "LAN"
+ ip address 203.0.113.254 255.255.255.0 <---- Comes from the
+ ip-connection container
+ ipv6 address 2001:db8::1/64
+ !
+ router bgp 65000
+ address-family ipv4
+ redistribute static route-map STATIC2BGP <---- Standard SP
+ configuration
+ neighbor 198.51.100.1 remote-as 100 <---- Comes from
+ automated allocation
+ neighbor 203.0.113.2 remote-as 500 <---- Comes from the
+ ip-connection container
+ address-family ipv6
+ redistribute static route-map STATIC2BGP <---- Standard SP
+ configuration
+ neighbor 2001:db8::0a10:1 remote-as 100 <---- Comes from
+ automated allocation
+ neighbor 2001:db8::2 remote-as 500 <---- Comes from the
+ ip-connection container
+ !
+ route-map STATIC2BGP permit 10
+ match tag 10
+ !
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 97]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+8. Interaction with Other YANG Modules
+
+ As expressed in Section 5, this service model is intended to be
+ instantiated in a management system and not directly on network
+ elements.
+
+ The management system's role will be to configure the network
+ elements. The management system may be modular, so the component
+ instantiating the service model (let's call it "service component")
+ and the component responsible for network element configuration
+ (let's call it "configuration component") may be different.
+
+ l3vpn-svc |
+ Model |
+ |
+ +---------------------+
+ | Service component | Service datastore
+ +---------------------+
+ |
+ |
+ +---------------------+
+ +----| Config component |------+
+ / +---------------------+ \ Network
+ / / \ \ Configuration
+ / / \ \ models
+ / / \ \
+ ++++++++ ++++++++ ++++++++ ++++++++
+ + CE A + ------- + PE A + + PE B + ----- + CE B + Config
+ ++++++++ ++++++++ ++++++++ ++++++++ datastore
+
+ Site A Site B
+
+ In the previous sections, we provided some examples of the
+ translation of service provisioning requests to router configuration
+ lines. In the NETCONF/YANG ecosystem, we expect NETCONF/YANG to be
+ used between the configuration component and network elements to
+ configure the requested services on those elements.
+
+ In this framework, specifications are expected to provide specific
+ YANG modeling of service components on network elements. There will
+ be a strong relationship between the abstracted view provided by this
+ service model and the detailed configuration view that will be
+ provided by specific configuration models for network elements.
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 98]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ The authors of this document anticipate definitions of YANG models
+ for the network elements listed below. Note that this list is not
+ exhaustive:
+
+ o VRF definition, including VPN policy expression.
+
+ o Physical interface.
+
+ o IP layer (IPv4, IPv6).
+
+ o QoS: classification, profiles, etc.
+
+ o Routing protocols: support of configuration of all protocols
+ listed in the document, as well as routing policies associated
+ with those protocols.
+
+ o Multicast VPN.
+
+ o Network address translation.
+
+ Example of a VPN site request at the service level, using this model:
+
+ <site>
+ <site-id>Site A</site-id>
+ <site-network-accesses>
+ <site-network-access>
+ <ip-connection>
+ <ipv4>
+ <address-allocation-type>
+ static-address
+ </address-allocation-type>
+ <addresses>
+ <provider-address>203.0.113.254</provider-address>
+ <customer-address>203.0.113.2</customer-address>
+ <mask>24</mask>
+ </addresses>
+ </ipv4>
+ </ip-connection>
+ <vpn-attachment>
+ <vpn-policy-id>VPNPOL1</vpn-policy-id>
+ </vpn-attachment>
+ </site-network-access>
+ </site-network-accesses>
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 99]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <routing-protocols>
+ <routing-protocol>
+ <type>static</type>
+ <static>
+ <cascaded-lan-prefixes>
+ <ipv4-lan-prefixes>
+ <lan>198.51.100.0/30</lan>
+ <next-hop>203.0.113.2</next-hop>
+ </ipv4-lan-prefixes>
+ </cascaded-lan-prefixes>
+ </static>
+ </routing-protocol>
+ </routing-protocols>
+ <management>
+ <type>customer-managed</type>
+ </management>
+ <vpn-policies>
+ <vpn-policy>
+ <vpn-policy-id>VPNPOL1</vpn-policy-id>
+ <entries>
+ <id>1</id>
+ <vpn>
+ <vpn-id>VPN1</vpn-id>
+ <site-role>any-to-any-role</site-role>
+ </vpn>
+ </entries>
+ </vpn-policy>
+ </vpn-policies>
+ </site>
+
+ In the service example above, the service component is expected to
+ request that the configuration component of the management system
+ provide the configuration of the service elements. If we consider
+ that the service component selected a PE (PE A) as the target PE for
+ the site, the configuration component will need to push the
+ configuration to PE A. The configuration component will use several
+ YANG data models to define the configuration to be applied to PE A.
+ The XML configuration of PE A might look like this:
+
+ <if:interfaces>
+ <if:interface>
+ <if:name>eth0</if:name>
+ <if:type>ianaift:ethernetCsmacd</if:type>
+ <if:description>
+ Link to CE A.
+ </if:description>
+ <ip:ipv4>
+ <ip:address>
+
+
+
+Litkowski, et al. Standards Track [Page 100]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ <ip:ip>203.0.113.254</ip:ip>
+ <ip:prefix-length>24</ip:prefix-length>
+ </ip:address>
+ <ip:forwarding>true</ip:forwarding>
+ </ip:ipv4>
+ </if:interface>
+ </if:interfaces>
+ <rt:routing>
+ <rt:routing-instance>
+ <rt:name>VRF_CustA</rt:name>
+ <rt:type>l3vpn-network:vrf</rt:type>
+ <rt:description>VRF for Customer A</rt:description>
+ <l3vpn-network:route-distinguisher>
+ 100:1546542343
+ </l3vpn-network:route-distinguisher>
+ <l3vpn-network:import-rt>100:1</l3vpn-network:import-rt>
+ <l3vpn-network:export-rt>100:1</l3vpn-network:export-rt>
+ <rt:interfaces>
+ <rt:interface>
+ <rt:name>eth0</rt:name>
+ </rt:interface>
+ </rt:interfaces>
+ <rt:routing-protocols>
+ <rt:routing-protocol>
+ <rt:type>rt:static</rt:type>
+ <rt:name>st0</rt:name>
+ <rt:static-routes>
+ <v4ur:ipv4>
+ <v4ur:route>
+ <v4ur:destination-prefix>
+ 198.51.100.0/30
+ </v4ur:destination-prefix>
+ <v4ur:next-hop>
+ <v4ur:next-hop-address>
+ 203.0.113.2
+ </v4ur:next-hop-address>
+ </v4ur:next-hop>
+ </v4ur:route>
+ </v4ur:ipv4>
+ </rt:static-routes>
+ </rt:routing-protocol>
+ </rt:routing-protocols>
+ </rt:routing-instance>
+ </rt:routing>
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 101]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+9. YANG Module
+
+ <CODE BEGINS>
+
+ file "ietf-l3vpn-svc@2017-01-27.yang"
+
+ module ietf-l3vpn-svc {
+ namespace "urn:ietf:params:xml:ns:yang:ietf-l3vpn-svc";
+
+ prefix l3vpn-svc;
+
+ import ietf-inet-types {
+ prefix inet;
+ }
+
+ import ietf-yang-types {
+ prefix yang;
+ }
+
+ organization
+ "IETF L3SM Working Group";
+
+ contact
+ "WG List: <mailto:l3sm@ietf.org>
+
+ Editor:
+ L3SM WG
+
+ Chairs:
+ Adrian Farrel, Qin Wu
+ ";
+
+ description
+ "This YANG module defines a generic service configuration
+ model for Layer 3 VPNs. This model is common across all
+ vendor implementations.";
+
+ revision 2017-01-27 {
+ description
+ "Initial document.";
+ reference
+ "RFC 8049.";
+ }
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 102]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ /* Features */
+
+ feature cloud-access {
+ description
+ "Allows the VPN to connect to a CSP.";
+ }
+ feature multicast {
+ description
+ "Enables multicast capabilities in a VPN.";
+ }
+ feature ipv4 {
+ description
+ "Enables IPv4 support in a VPN.";
+ }
+ feature ipv6 {
+ description
+ "Enables IPv6 support in a VPN.";
+ }
+ feature carrierscarrier {
+ description
+ "Enables support of CsC.";
+ }
+ feature extranet-vpn {
+ description
+ "Enables support of extranet VPNs.";
+ }
+ feature site-diversity {
+ description
+ "Enables support of site diversity constraints.";
+ }
+ feature encryption {
+ description
+ "Enables support of encryption.";
+ }
+ feature qos {
+ description
+ "Enables support of classes of services.";
+ }
+ feature qos-custom {
+ description
+ "Enables support of the custom QoS profile.";
+ }
+ feature rtg-bgp {
+ description
+ "Enables support of the BGP routing protocol.";
+ }
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 103]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ feature rtg-rip {
+ description
+ "Enables support of the RIP routing protocol.";
+ }
+ feature rtg-ospf {
+ description
+ "Enables support of the OSPF routing protocol.";
+ }
+ feature rtg-ospf-sham-link {
+ description
+ "Enables support of OSPF sham links.";
+ }
+ feature rtg-vrrp {
+ description
+ "Enables support of the VRRP routing protocol.";
+ }
+ feature fast-reroute {
+ description
+ "Enables support of Fast Reroute.";
+ }
+ feature bfd {
+ description
+ "Enables support of BFD.";
+ }
+ feature always-on {
+ description
+ "Enables support of the 'always-on' access constraint.";
+ }
+ feature requested-type {
+ description
+ "Enables support of the 'requested-type' access constraint.";
+ }
+ feature bearer-reference {
+ description
+ "Enables support of the 'bearer-reference' access constraint.";
+ }
+
+ /* Typedefs */
+
+ typedef svc-id {
+ type string;
+ description
+ "Defines a type of service component identifier.";
+ }
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 104]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ typedef template-id {
+ type string;
+ description
+ "Defines a type of service template identifier.";
+ }
+
+ typedef address-family {
+ type enumeration {
+ enum ipv4 {
+ description
+ "IPv4 address family.";
+ }
+ enum ipv6 {
+ description
+ "IPv6 address family.";
+ }
+ }
+ description
+ "Defines a type for the address family.";
+ }
+
+ /* Identities */
+
+ identity site-network-access-type {
+ description
+ "Base identity for site-network-access type.";
+ }
+ identity point-to-point {
+ base site-network-access-type;
+ description
+ "Identity for point-to-point connection.";
+ }
+ identity multipoint {
+ base site-network-access-type;
+ description
+ "Identity for multipoint connection.
+ Example: Ethernet broadcast segment.";
+ }
+ identity placement-diversity {
+ description
+ "Base identity for site placement constraints.";
+ }
+ identity bearer-diverse {
+ base placement-diversity;
+ description
+ "Identity for bearer diversity.
+ The bearers should not use common elements.";
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 105]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ identity pe-diverse {
+ base placement-diversity;
+ description
+ "Identity for PE diversity.";
+ }
+ identity pop-diverse {
+ base placement-diversity;
+ description
+ "Identity for POP diversity.";
+ }
+ identity linecard-diverse {
+ base placement-diversity;
+ description
+ "Identity for linecard diversity.";
+ }
+ identity same-pe {
+ base placement-diversity;
+ description
+ "Identity for having sites connected on the same PE.";
+ }
+ identity same-bearer {
+ base placement-diversity;
+ description
+ "Identity for having sites connected using the same bearer.";
+ }
+ identity customer-application {
+ description
+ "Base identity for customer application.";
+ }
+ identity web {
+ base customer-application;
+ description
+ "Identity for Web application (e.g., HTTP, HTTPS).";
+ }
+ identity mail {
+ base customer-application;
+ description
+ "Identity for mail application.";
+ }
+ identity file-transfer {
+ base customer-application;
+ description
+ "Identity for file transfer application (e.g., FTP, SFTP).";
+ }
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 106]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ identity database {
+ base customer-application;
+ description
+ "Identity for database application.";
+ }
+ identity social {
+ base customer-application;
+ description
+ "Identity for social-network application.";
+ }
+ identity games {
+ base customer-application;
+ description
+ "Identity for gaming application.";
+ }
+ identity p2p {
+ base customer-application;
+ description
+ "Identity for peer-to-peer application.";
+ }
+ identity network-management {
+ base customer-application;
+ description
+ "Identity for management application
+ (e.g., Telnet, syslog, SNMP).";
+ }
+ identity voice {
+ base customer-application;
+ description
+ "Identity for voice application.";
+ }
+ identity video {
+ base customer-application;
+ description
+ "Identity for video conference application.";
+ }
+ identity site-vpn-flavor {
+ description
+ "Base identity for the site VPN service flavor.";
+ }
+ identity site-vpn-flavor-single {
+ base site-vpn-flavor;
+ description
+ "Base identity for the site VPN service flavor.
+ Used when the site belongs to only one VPN.";
+ }
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 107]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ identity site-vpn-flavor-multi {
+ base site-vpn-flavor;
+ description
+ "Base identity for the site VPN service flavor.
+ Used when a logical connection of a site
+ belongs to multiple VPNs.";
+ }
+ identity site-vpn-flavor-sub {
+ base site-vpn-flavor;
+ description
+ "Base identity for the site VPN service flavor.
+ Used when a site has multiple logical connections.
+ Each connection may belong to different multiple VPNs.";
+ }
+ identity site-vpn-flavor-nni {
+ base site-vpn-flavor;
+ description
+ "Base identity for the site VPN service flavor.
+ Used to describe an NNI option A connection.";
+ }
+ identity management {
+ description
+ "Base identity for site management scheme.";
+ }
+ identity co-managed {
+ base management;
+ description
+ "Base identity for co-managed site.";
+ }
+ identity customer-managed {
+ base management;
+ description
+ "Base identity for customer-managed site.";
+ }
+ identity provider-managed {
+ base management;
+ description
+ "Base identity for provider-managed site.";
+ }
+ identity address-allocation-type {
+ description
+ "Base identity for address-allocation-type for PE-CE link.";
+ }
+ identity provider-dhcp {
+ base address-allocation-type;
+ description
+ "Provider network provides DHCP service to customer.";
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 108]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ identity provider-dhcp-relay {
+ base address-allocation-type;
+ description
+ "Provider network provides DHCP relay service to customer.";
+ }
+ identity provider-dhcp-slaac {
+ base address-allocation-type;
+ description
+ "Provider network provides DHCP service to customer,
+ as well as SLAAC.";
+ }
+ identity static-address {
+ base address-allocation-type;
+ description
+ "Provider-to-customer addressing is static.";
+ }
+ identity slaac {
+ base address-allocation-type;
+ description
+ "Use IPv6 SLAAC.";
+ }
+
+ identity site-role {
+ description
+ "Base identity for site type.";
+ }
+ identity any-to-any-role {
+ base site-role;
+ description
+ "Site in an any-to-any IP VPN.";
+ }
+ identity spoke-role {
+ base site-role;
+ description
+ "Spoke site in a Hub-and-Spoke IP VPN.";
+ }
+ identity hub-role {
+ base site-role;
+ description
+ "Hub site in a Hub-and-Spoke IP VPN.";
+ }
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 109]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ identity vpn-topology {
+ description
+ "Base identity for VPN topology.";
+ }
+ identity any-to-any {
+ base vpn-topology;
+ description
+ "Identity for any-to-any VPN topology.";
+ }
+ identity hub-spoke {
+ base vpn-topology;
+ description
+ "Identity for Hub-and-Spoke VPN topology.";
+ }
+ identity hub-spoke-disjoint {
+ base vpn-topology;
+ description
+ "Identity for Hub-and-Spoke VPN topology
+ where Hubs cannot communicate with each other.";
+ }
+
+ identity multicast-tree-type {
+ description
+ "Base identity for multicast tree type.";
+ }
+ identity ssm-tree-type {
+ base multicast-tree-type;
+ description
+ "Identity for SSM tree type.";
+ }
+ identity asm-tree-type {
+ base multicast-tree-type;
+ description
+ "Identity for ASM tree type.";
+ }
+ identity bidir-tree-type {
+ base multicast-tree-type;
+ description
+ "Identity for bidirectional tree type.";
+ }
+
+ identity multicast-rp-discovery-type {
+ description
+ "Base identity for RP discovery type.";
+ }
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 110]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ identity auto-rp {
+ base multicast-rp-discovery-type;
+ description
+ "Base identity for Auto-RP discovery type.";
+ }
+ identity static-rp {
+ base multicast-rp-discovery-type;
+ description
+ "Base identity for static type.";
+ }
+ identity bsr-rp {
+ base multicast-rp-discovery-type;
+ description
+ "Base identity for BSR discovery type.";
+ }
+
+ identity routing-protocol-type {
+ description
+ "Base identity for routing protocol type.";
+ }
+ identity ospf {
+ base routing-protocol-type;
+ description
+ "Identity for OSPF protocol type.";
+ }
+ identity bgp {
+ base routing-protocol-type;
+ description
+ "Identity for BGP protocol type.";
+ }
+ identity static {
+ base routing-protocol-type;
+ description
+ "Identity for static routing protocol type.";
+ }
+ identity rip {
+ base routing-protocol-type;
+ description
+ "Identity for RIP protocol type.";
+ }
+ identity vrrp {
+ base routing-protocol-type;
+ description
+ "Identity for VRRP protocol type.
+ This is to be used when LANs are directly connected
+ to PE routers.";
+ }
+
+
+
+
+Litkowski, et al. Standards Track [Page 111]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ identity direct {
+ base routing-protocol-type;
+ description
+ "Identity for direct protocol type.";
+ }
+
+ identity protocol-type {
+ description
+ "Base identity for protocol field type.";
+ }
+ identity tcp {
+ base protocol-type;
+ description
+ "TCP protocol type.";
+ }
+ identity udp {
+ base protocol-type;
+ description
+ "UDP protocol type.";
+ }
+ identity icmp {
+ base protocol-type;
+ description
+ "ICMP protocol type.";
+ }
+ identity icmp6 {
+ base protocol-type;
+ description
+ "ICMPv6 protocol type.";
+ }
+ identity gre {
+ base protocol-type;
+ description
+ "GRE protocol type.";
+ }
+ identity ipip {
+ base protocol-type;
+ description
+ "IP-in-IP protocol type.";
+ }
+ identity hop-by-hop {
+ base protocol-type;
+ description
+ "Hop-by-Hop IPv6 header type.";
+ }
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 112]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ identity routing {
+ base protocol-type;
+ description
+ "Routing IPv6 header type.";
+ }
+ identity esp {
+ base protocol-type;
+ description
+ "ESP header type.";
+ }
+ identity ah {
+ base protocol-type;
+ description
+ "AH header type.";
+ }
+
+ /* Groupings */
+
+ grouping vpn-service-cloud-access {
+ container cloud-accesses {
+ if-feature cloud-access;
+ list cloud-access {
+
+ key cloud-identifier;
+
+ leaf cloud-identifier {
+ type string;
+ description
+ "Identification of cloud service.
+ Local administration meaning.";
+ }
+ choice list-flavor {
+ case permit-any {
+ leaf permit-any {
+ type empty;
+ description
+ "Allows all sites.";
+ }
+ }
+ case deny-any-except {
+ leaf-list permit-site {
+ type leafref {
+ path "/l3vpn-svc/sites/site/site-id";
+ }
+ description
+ "Site ID to be authorized.";
+ }
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 113]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ case permit-any-except {
+ leaf-list deny-site {
+ type leafref {
+ path "/l3vpn-svc/sites/site/site-id";
+ }
+ description
+ "Site ID to be denied.";
+ }
+ }
+ description
+ "Choice for cloud access policy.";
+ }
+ container authorized-sites {
+ list authorized-site {
+ key site-id;
+
+ leaf site-id {
+ type leafref {
+ path "/l3vpn-svc/sites/site/site-id";
+ }
+ description
+ "Site ID.";
+ }
+ description
+ "List of authorized sites.";
+ }
+ description
+ "Configuration of authorized sites.";
+ }
+ container denied-sites {
+ list denied-site {
+ key site-id;
+
+ leaf site-id {
+ type leafref {
+ path "/l3vpn-svc/sites/site/site-id";
+ }
+ description
+ "Site ID.";
+ }
+ description
+ "List of denied sites.";
+ }
+ description
+ "Configuration of denied sites.";
+ }
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 114]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ container address-translation {
+ container nat44 {
+ leaf enabled {
+ type boolean;
+ default false;
+ description
+ "Controls whether or not address translation is required.";
+ }
+ leaf nat44-customer-address {
+ type inet:ipv4-address;
+ must "../enabled = 'true'" {
+ description
+ "Applicable only if address translation is enabled.";
+ }
+ description
+ "Address to be used for translation.
+ This is to be used if the customer is
+ providing the address.";
+ }
+ description
+ "IPv4-to-IPv4 translation.";
+ }
+ description
+ "Container for NAT.";
+ }
+ description
+ "Cloud access configuration.";
+ }
+ description
+ "Container for cloud access configurations.";
+ }
+ description
+ "Grouping for VPN cloud definition.";
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 115]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ grouping multicast-rp-group-cfg {
+ choice group-format {
+ case startend {
+ leaf group-start {
+ type inet:ip-address;
+ description
+ "First group address.";
+ }
+ leaf group-end {
+ type inet:ip-address;
+ description
+ "Last group address.";
+ }
+ }
+ case singleaddress {
+ leaf group-address {
+ type inet:ip-address;
+ description
+ "Group address.";
+ }
+ }
+ description
+ "Choice for group format.";
+ }
+ description
+ "Definition of groups for RP-to-group mapping.";
+ }
+
+ grouping vpn-service-multicast {
+ container multicast {
+ if-feature multicast;
+ leaf enabled {
+ type boolean;
+ default false;
+ description
+ "Enables multicast.";
+ }
+ container customer-tree-flavors {
+ leaf-list tree-flavor {
+ type identityref {
+ base multicast-tree-type;
+ }
+ description
+ "Type of tree to be used.";
+ }
+ description
+ "Type of trees used by customer.";
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 116]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ container rp {
+ container rp-group-mappings {
+ list rp-group-mapping {
+ key id;
+
+ leaf id {
+ type uint16;
+ description
+ "Unique identifier for the mapping.";
+ }
+ container provider-managed {
+ leaf enabled {
+ type boolean;
+ default false;
+ description
+ "Set to true if the RP must be a provider-managed node.
+ Set to false if it is a customer-managed node.";
+ }
+ leaf rp-redundancy {
+ when "../enabled = 'true'" {
+ description
+ "Relevant when the RP is provider-managed.";
+ }
+ type boolean;
+ default false;
+ description
+ "If true, a redundancy mechanism for the RP is required.";
+ }
+ leaf optimal-traffic-delivery {
+ when "../enabled = 'true'" {
+ description
+ "Relevant when the RP is provider-managed.";
+ }
+ type boolean;
+ default false;
+ description
+ "If true, the SP must ensure that
+ traffic uses an optimal path.";
+ }
+ description
+ "Parameters for a provider-managed RP.";
+ }
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 117]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ leaf rp-address {
+ when "../provider-managed/enabled = 'false'" {
+ description
+ "Relevant when the RP is provider-managed.";
+ }
+ type inet:ip-address;
+ description
+ "Defines the address of the RP.
+ Used if the RP is customer-managed.";
+ }
+
+ container groups {
+ list group {
+ key id;
+
+ leaf id {
+ type uint16;
+ description
+ "Identifier for the group.";
+ }
+ uses multicast-rp-group-cfg;
+ description
+ "List of groups.";
+ }
+
+ description
+ "Multicast groups associated with the RP.";
+ }
+
+ description
+ "List of RP-to-group mappings.";
+ }
+ description
+ "RP-to-group mappings.";
+ }
+ container rp-discovery {
+ leaf rp-discovery-type {
+ type identityref {
+ base multicast-rp-discovery-type;
+ }
+ default static-rp;
+ description
+ "Type of RP discovery used.";
+ }
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 118]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ container bsr-candidates {
+ when "../rp-discovery-type = 'bsr-rp'" {
+ description
+ "Only applicable if discovery type is BSR-RP.";
+ }
+ leaf-list bsr-candidate-address {
+ type inet:ip-address;
+ description
+ "Address of BSR candidate.";
+ }
+ description
+ "Customer BSR candidate's address.";
+ }
+ description
+ "RP discovery parameters.";
+ }
+
+ description
+ "RP parameters.";
+ }
+ description
+ "Multicast global parameters for the VPN service.";
+ }
+ description
+ "Grouping for multicast VPN definition.";
+ }
+
+ grouping vpn-service-mpls {
+ leaf carrierscarrier {
+ if-feature carrierscarrier;
+ type boolean;
+ default false;
+ description
+ "The VPN is using CsC, and so MPLS is required.";
+ }
+ description
+ "Grouping for MPLS CsC definition.";
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 119]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ grouping customer-location-info {
+ container locations {
+ list location {
+ key location-id;
+
+ leaf location-id {
+ type svc-id;
+ description
+ "Identifier for a particular location.";
+ }
+ leaf address {
+ type string;
+ description
+ "Address (number and street) of the site.";
+ }
+ leaf postal-code {
+ type string;
+ description
+ "Postal code of the site.";
+ }
+ leaf state {
+ type string;
+ description
+ "State of the site. This leaf can also be used to describe
+ a region for a country that does not have states.";
+ }
+ leaf city {
+ type string;
+ description
+ "City of the site.";
+ }
+ leaf country-code {
+ type string {
+ pattern '[A-Z]{2}';
+ }
+ description
+ "Country of the site.
+ Expressed as ISO ALPHA-2 code.";
+ }
+ description
+ "Location of the site.";
+ }
+ description
+ "List of locations for the site.";
+ }
+ description
+ "This grouping defines customer location parameters.";
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 120]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ grouping site-group {
+ container groups {
+ list group {
+ key group-id;
+
+ leaf group-id {
+ type string;
+ description
+ "Group-id the site belongs to.";
+ }
+ description
+ "List of group-ids.";
+ }
+ description
+ "Groups the site or site-network-access belongs to.";
+ }
+ description
+ "Grouping definition to assign
+ group-ids to site or site-network-access.";
+ }
+ grouping site-diversity {
+ container site-diversity {
+ if-feature site-diversity;
+
+ uses site-group;
+
+ description
+ "Diversity constraint type.
+ All site-network-accesses will inherit the group values
+ defined here.";
+ }
+ description
+ "This grouping defines site diversity parameters.";
+ }
+ grouping access-diversity {
+ container access-diversity {
+ if-feature site-diversity;
+
+ uses site-group;
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 121]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ container constraints {
+ list constraint {
+ key constraint-type;
+
+ leaf constraint-type {
+ type identityref {
+ base placement-diversity;
+ }
+ description
+ "Diversity constraint type.";
+ }
+ container target {
+ choice target-flavor {
+ case id {
+ list group {
+ key group-id;
+
+ leaf group-id {
+ type string;
+ description
+ "The constraint will be applied against
+ this particular group-id.";
+ }
+ description
+ "List of groups.";
+ }
+ }
+ case all-accesses {
+ leaf all-other-accesses {
+ type empty;
+ description
+ "The constraint will be applied against
+ all other site network accesses of this site.";
+ }
+ }
+ case all-groups {
+ leaf all-other-groups {
+ type empty;
+ description
+ "The constraint will be applied against
+ all other groups managed by the customer.";
+ }
+ }
+ description
+ "Choice for the group definition.";
+ }
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 122]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ description
+ "The constraint will be applied against
+ this list of groups.";
+ }
+ description
+ "List of constraints.";
+ }
+ description
+ "Placement constraints for this site network access.";
+ }
+
+ description
+ "Diversity parameters.";
+ }
+ description
+ "This grouping defines access diversity parameters.";
+ }
+
+ grouping operational-requirements {
+ leaf requested-site-start {
+ type yang:date-and-time;
+ description
+ "Optional leaf indicating requested date and time when the
+ service at a particular site is expected to start.";
+ }
+
+ leaf requested-site-stop {
+ type yang:date-and-time;
+ description
+ "Optional leaf indicating requested date and time when the
+ service at a particular site is expected to stop.";
+ }
+ description
+ "This grouping defines some operational parameters.";
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 123]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ grouping operational-requirements-ops {
+ leaf actual-site-start {
+ type yang:date-and-time;
+ config false;
+ description
+ "Optional leaf indicating actual date and time when the
+ service at a particular site actually started.";
+ }
+ leaf actual-site-stop {
+ type yang:date-and-time;
+ config false;
+ description
+ "Optional leaf indicating actual date and time when the
+ service at a particular site actually stopped.";
+ }
+ description
+ "This grouping defines some operational parameters.";
+ }
+
+ grouping flow-definition {
+ container match-flow {
+ leaf dscp {
+ type inet:dscp;
+ description
+ "DSCP value.";
+ }
+ leaf dot1p {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "802.1p matching.";
+ }
+ leaf ipv4-src-prefix {
+ type inet:ipv4-prefix;
+ description
+ "Match on IPv4 src address.";
+ }
+ leaf ipv6-src-prefix {
+ type inet:ipv6-prefix;
+ description
+ "Match on IPv6 src address.";
+ }
+ leaf ipv4-dst-prefix {
+ type inet:ipv4-prefix;
+ description
+ "Match on IPv4 dst address.";
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 124]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ leaf ipv6-dst-prefix {
+ type inet:ipv6-prefix;
+ description
+ "Match on IPv6 dst address.";
+ }
+ leaf l4-src-port {
+ type inet:port-number;
+ description
+ "Match on Layer 4 src port.";
+ }
+ leaf-list target-sites {
+ type svc-id;
+ description
+ "Identify a site as traffic destination.";
+ }
+ container l4-src-port-range {
+ leaf lower-port {
+ type inet:port-number;
+ description
+ "Lower boundary for port.";
+ }
+ leaf upper-port {
+ type inet:port-number;
+ must ". >= ../lower-port" {
+ description
+ "Upper boundary must be higher than lower boundary.";
+ }
+ description
+ "Upper boundary for port.";
+ }
+ description
+ "Match on Layer 4 src port range.";
+ }
+ leaf l4-dst-port {
+ type inet:port-number;
+ description
+ "Match on Layer 4 dst port.";
+ }
+ container l4-dst-port-range {
+ leaf lower-port {
+ type inet:port-number;
+ description
+ "Lower boundary for port.";
+ }
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 125]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ leaf upper-port {
+ type inet:port-number;
+ must ". >= ../lower-port" {
+ description
+ "Upper boundary must be higher than lower boundary.";
+ }
+ description
+ "Upper boundary for port.";
+ }
+ description
+ "Match on Layer 4 dst port range.";
+ }
+ leaf protocol-field {
+ type union {
+ type uint8;
+ type identityref {
+ base protocol-type;
+ }
+ }
+ description
+ "Match on IPv4 protocol or IPv6 Next Header field.";
+ }
+
+ description
+ "Describes flow-matching criteria.";
+ }
+ description
+ "Flow definition based on criteria.";
+ }
+ grouping site-service-basic {
+ leaf svc-input-bandwidth {
+ type uint32;
+ units bps;
+ description
+ "From the PE's perspective, the service input
+ bandwidth of the connection.";
+ }
+ leaf svc-output-bandwidth {
+ type uint32;
+ units bps;
+ description
+ "From the PE's perspective, the service output
+ bandwidth of the connection.";
+ }
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 126]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ leaf svc-mtu {
+ type uint16;
+ units bytes;
+ description
+ "MTU at service level. If the service is IP,
+ it refers to the IP MTU.";
+ }
+ description
+ "Defines basic service parameters for a site.";
+ }
+ grouping site-protection {
+ container traffic-protection {
+ if-feature fast-reroute;
+ leaf enabled {
+ type boolean;
+ default false;
+ description
+ "Enables traffic protection of access link.";
+ }
+ description
+ "Fast Reroute service parameters for the site.";
+ }
+ description
+ "Defines protection service parameters for a site.";
+ }
+ grouping site-service-mpls {
+ container carrierscarrier {
+ if-feature carrierscarrier;
+ leaf signalling-type {
+ type enumeration {
+ enum "ldp" {
+ description
+ "Use LDP as the signalling protocol
+ between the PE and the CE.";
+ }
+ enum "bgp" {
+ description
+ "Use BGP (as per RFC 3107) as the signalling protocol
+ between the PE and the CE.
+ In this case, BGP must also be configured as
+ the routing protocol.";
+ }
+ }
+ description
+ "MPLS signalling type.";
+ }
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 127]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ description
+ "This container is used when the customer provides
+ MPLS-based services. This is used in the case of CsC.";
+ }
+ description
+ "Defines MPLS service parameters for a site.";
+ }
+ grouping site-service-qos-profile {
+ container qos {
+ if-feature qos;
+ container qos-classification-policy {
+ list rule {
+ key id;
+ ordered-by user;
+
+ leaf id {
+ type uint16;
+ description
+ "ID of the rule.";
+ }
+
+ choice match-type {
+ case match-flow {
+ uses flow-definition;
+ }
+ case match-application {
+ leaf match-application {
+ type identityref {
+ base customer-application;
+ }
+ description
+ "Defines the application to match.";
+ }
+ }
+ description
+ "Choice for classification.";
+ }
+
+ leaf target-class-id {
+ type string;
+ description
+ "Identification of the class of service.
+ This identifier is internal to the administration.";
+ }
+
+ description
+ "List of marking rules.";
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 128]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ description
+ "Configuration of the traffic classification policy.";
+ }
+ container qos-profile {
+
+ choice qos-profile {
+ description
+ "Choice for QoS profile.
+ Can be standard profile or custom.";
+ case standard {
+ leaf profile {
+ type string;
+ description
+ "QoS profile to be used.";
+ }
+ }
+ case custom {
+ container classes {
+ if-feature qos-custom;
+ list class {
+ key class-id;
+
+ leaf class-id {
+ type string;
+ description
+ "Identification of the class of service.
+ This identifier is internal to the administration.";
+ }
+ leaf rate-limit {
+ type uint8;
+ units percent;
+ description
+ "To be used if the class must be rate-limited.
+ Expressed as percentage of the service bandwidth.";
+ }
+ container latency {
+ choice flavor {
+ case lowest {
+ leaf use-lowest-latency {
+ type empty;
+ description
+ "The traffic class should use the path with the
+ lowest latency.";
+ }
+ }
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 129]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ case boundary {
+ leaf latency-boundary {
+ type uint16;
+ units msec;
+ description
+ "The traffic class should use a path with a
+ defined maximum latency.";
+ }
+ }
+ description
+ "Latency constraint on the traffic class.";
+ }
+ description
+ "Latency constraint on the traffic class.";
+ }
+ container jitter {
+ choice flavor {
+ case lowest {
+ leaf use-lowest-jitter {
+ type empty;
+ description
+ "The traffic class should use the path with the
+ lowest jitter.";
+ }
+ }
+ case boundary {
+ leaf latency-boundary {
+ type uint32;
+ units usec;
+ description
+ "The traffic class should use a path with a
+ defined maximum jitter.";
+ }
+ }
+ description
+ "Jitter constraint on the traffic class.";
+ }
+ description
+ "Jitter constraint on the traffic class.";
+ }
+ container bandwidth {
+ leaf guaranteed-bw-percent {
+ type uint8;
+ units percent;
+ description
+ "To be used to define the guaranteed bandwidth
+ as a percentage of the available service bandwidth.";
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 130]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ leaf end-to-end {
+ type empty;
+ description
+ "Used if the bandwidth reservation
+ must be done on the MPLS network too.";
+ }
+ description
+ "Bandwidth constraint on the traffic class.";
+ }
+ description
+ "List of classes of services.";
+ }
+ description
+ "Container for list of classes of services.";
+ }
+
+ }
+
+ }
+ description
+ "QoS profile configuration.";
+ }
+ description
+ "QoS configuration.";
+ }
+ description
+ "This grouping defines QoS parameters for a site.";
+ }
+
+ grouping site-security-authentication {
+ container authentication {
+ description
+ "Authentication parameters.";
+ }
+ description
+ "This grouping defines authentication parameters for a site.";
+
+ }
+ grouping site-security-encryption {
+ container encryption {
+ if-feature encryption;
+ leaf enabled {
+ type boolean;
+ default false;
+ description
+ "If true, access encryption is required.";
+ }
+
+
+
+
+Litkowski, et al. Standards Track [Page 131]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ leaf layer {
+ type enumeration {
+ enum layer2 {
+ description
+ "Encryption will occur at Layer 2.";
+ }
+ enum layer3 {
+ description
+ "Encryption will occur at Layer 3.
+ For example, IPsec may be used.";
+ }
+ }
+ mandatory true;
+ description
+ "Layer on which encryption is applied.";
+ }
+ container encryption-profile {
+ choice profile {
+ case provider-profile {
+ leaf profile-name {
+ type string;
+ description
+ "Name of the SP profile to be applied.";
+ }
+ }
+ case customer-profile {
+ leaf algorithm {
+ type string;
+ description
+ "Encryption algorithm to be used.";
+ }
+ choice key-type {
+ case psk {
+ leaf preshared-key {
+ type string;
+ description
+ "Key coming from customer.";
+ }
+ }
+ case pki {
+
+ }
+ description
+ "Type of keys to be used.";
+ }
+ }
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 132]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ description
+ "Choice of profile.";
+ }
+ description
+ "Profile of encryption to be applied.";
+ }
+ description
+ "Encryption parameters.";
+ }
+ description
+ "This grouping defines encryption parameters for a site.";
+ }
+
+ grouping site-attachment-bearer {
+ container bearer {
+ container requested-type {
+ if-feature requested-type;
+ leaf requested-type {
+ type string;
+ description
+ "Type of requested bearer: Ethernet, DSL,
+ Wireless, etc. Operator specific.";
+ }
+ leaf strict {
+ type boolean;
+ default false;
+ description
+ "Defines whether requested-type is a preference
+ or a strict requirement.";
+ }
+ description
+ "Container for requested-type.";
+ }
+ leaf always-on {
+ if-feature always-on;
+ type boolean;
+ default true;
+ description
+ "Request for an always-on access type.
+ For example, this could mean no dial access type.";
+ }
+ leaf bearer-reference {
+ if-feature bearer-reference;
+ type string;
+ description
+ "This is an internal reference for the SP.";
+ }
+
+
+
+
+Litkowski, et al. Standards Track [Page 133]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ description
+ "Bearer-specific parameters.
+ To be augmented.";
+ }
+ description
+ "Defines physical properties of a site attachment.";
+ }
+
+ grouping site-routing {
+ container routing-protocols {
+ list routing-protocol {
+ key type;
+
+ leaf type {
+ type identityref {
+ base routing-protocol-type;
+ }
+ description
+ "Type of routing protocol.";
+ }
+
+ container ospf {
+ when "../type = 'ospf'" {
+ description
+ "Only applies when protocol is OSPF.";
+ }
+ if-feature rtg-ospf;
+ leaf-list address-family {
+ type address-family;
+
+ description
+ "Address family to be activated.";
+ }
+ leaf area-address {
+ type yang:dotted-quad;
+ description
+ "Area address.";
+ }
+ leaf metric {
+ type uint16;
+ description
+ "Metric of the PE-CE link.";
+ }
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 134]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ container sham-links {
+ if-feature rtg-ospf-sham-link;
+ list sham-link {
+ key target-site;
+
+ leaf target-site {
+ type svc-id;
+ description
+ "Target site for the sham link connection.
+ The site is referred to by its ID.";
+ }
+ leaf metric {
+ type uint16;
+ description
+ "Metric of the sham link.";
+ }
+ description
+ "Creates a sham link with another site.";
+ }
+ description
+ "List of sham links.";
+ }
+ description
+ "OSPF-specific configuration.";
+ }
+
+ container bgp {
+
+ when "../type = 'bgp'" {
+ description
+ "Only applies when protocol is BGP.";
+ }
+ if-feature rtg-bgp;
+ leaf autonomous-system {
+ type uint32;
+ description
+ "AS number.";
+ }
+ leaf-list address-family {
+ type address-family;
+
+ description
+ "Address family to be activated.";
+ }
+ description
+ "BGP-specific configuration.";
+ }
+
+
+
+
+Litkowski, et al. Standards Track [Page 135]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ container static {
+ when "../type = 'static'" {
+ description
+ "Only applies when protocol is static.";
+ }
+
+ container cascaded-lan-prefixes {
+ list ipv4-lan-prefixes {
+ if-feature ipv4;
+ key "lan next-hop";
+
+ leaf lan {
+ type inet:ipv4-prefix;
+ description
+ "LAN prefixes.";
+ }
+ leaf lan-tag {
+ type string;
+ description
+ "Internal tag to be used in VPN policies.";
+ }
+ leaf next-hop {
+ type inet:ipv4-address;
+ description
+ "Next-hop address to use on the customer side.";
+ }
+ description
+ "List of LAN prefixes for the site.";
+ }
+ list ipv6-lan-prefixes {
+ if-feature ipv6;
+ key "lan next-hop";
+
+ leaf lan {
+ type inet:ipv6-prefix;
+ description
+ "LAN prefixes.";
+ }
+ leaf lan-tag {
+ type string;
+ description
+ "Internal tag to be used in VPN policies.";
+ }
+ leaf next-hop {
+ type inet:ipv6-address;
+ description
+ "Next-hop address to use on the customer side.";
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 136]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ description
+ "List of LAN prefixes for the site.";
+ }
+ description
+ "LAN prefixes from the customer.";
+ }
+ description
+ "Configuration specific to static routing.";
+ }
+ container rip {
+
+ when "../type = 'rip'" {
+ description
+ "Only applies when protocol is RIP.";
+ }
+ if-feature rtg-rip;
+ leaf-list address-family {
+ type address-family;
+
+ description
+ "Address family to be activated.";
+ }
+
+ description
+ "Configuration specific to RIP routing.";
+ }
+
+ container vrrp {
+
+ when "../type = 'vrrp'" {
+ description
+ "Only applies when protocol is VRRP.";
+ }
+ if-feature rtg-vrrp;
+ leaf-list address-family {
+ type address-family;
+
+ description
+ "Address family to be activated.";
+ }
+ description
+ "Configuration specific to VRRP routing.";
+ }
+
+ description
+ "List of routing protocols used on
+ the site. This list can be augmented.";
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 137]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ description
+ "Defines routing protocols.";
+ }
+ description
+ "Grouping for routing protocols.";
+ }
+
+ grouping site-attachment-ip-connection {
+ container ip-connection {
+ container ipv4 {
+ if-feature ipv4;
+ leaf address-allocation-type {
+ type identityref {
+ base address-allocation-type;
+ }
+ default "static-address";
+ description
+ "Defines how addresses are allocated.";
+ }
+
+ leaf number-of-dynamic-address {
+ when "../address-allocation-type = 'provider-dhcp'" {
+ description
+ "Only applies when addresses are allocated by DHCP.";
+ }
+ type uint8;
+ default 1;
+ description
+ "Describes the number of IP addresses the customer requires.";
+ }
+ container dhcp-relay {
+ when "../address-allocation-type = 'provider-dhcp-relay'" {
+ description
+ "Only applies when provider is required to implement
+ DHCP relay function.";
+ }
+ container customer-dhcp-servers {
+ leaf-list server-ip-address {
+ type inet:ipv4-address;
+ description
+ "IP address of customer DHCP server.";
+ }
+ description
+ "Container for list of customer DHCP servers.";
+ }
+ description
+ "DHCP relay provided by operator.";
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 138]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ container addresses {
+ when "../address-allocation-type = 'static-address'" {
+ description
+ "Only applies when protocol allocation type is static.";
+ }
+ leaf provider-address {
+ type inet:ipv4-address;
+ description
+ "Address of provider side.";
+ }
+ leaf customer-address {
+ type inet:ipv4-address;
+ description
+ "Address of customer side.";
+ }
+ leaf mask {
+ type uint8 {
+ range "0..31";
+ }
+ description
+ "Subnet mask expressed in bits.";
+ }
+ description
+ "Describes IP addresses used.";
+ }
+
+ description
+ "IPv4-specific parameters.";
+
+ }
+ container ipv6 {
+ if-feature ipv6;
+ leaf address-allocation-type {
+ type identityref {
+ base address-allocation-type;
+ }
+ default "static-address";
+ description
+ "Defines how addresses are allocated.";
+ }
+ leaf number-of-dynamic-address {
+ when
+ "../address-allocation-type = 'provider-dhcp' "+
+ "or ../address-allocation-type "+
+ "= 'provider-dhcp-slaac'" {
+ description
+ "Only applies when addresses are allocated by DHCP.";
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 139]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ type uint8;
+ default 1;
+ description
+ "Describes the number of IP addresses the customer requires.";
+ }
+ container dhcp-relay {
+ when "../address-allocation-type = 'provider-dhcp-relay'" {
+ description
+ "Only applies when provider is required to implement
+ DHCP relay function.";
+ }
+ container customer-dhcp-servers {
+ leaf-list server-ip-address {
+ type inet:ipv6-address;
+ description
+ "IP address of customer DHCP server.";
+ }
+ description
+ "Container for list of customer DHCP servers.";
+ }
+ description
+ "DHCP relay provided by operator.";
+ }
+ container addresses {
+ when "../address-allocation-type = 'static-address'" {
+ description
+ "Only applies when protocol allocation type is static.";
+ }
+ leaf provider-address {
+ type inet:ipv6-address;
+ description
+ "Address of provider side.";
+ }
+ leaf customer-address {
+ type inet:ipv6-address;
+ description
+ "Address of customer side.";
+ }
+ leaf mask {
+ type uint8 {
+ range "0..127";
+ }
+ description
+ "Subnet mask expressed in bits.";
+ }
+ description
+ "Describes IP addresses used.";
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 140]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ description
+ "IPv6-specific parameters.";
+
+ }
+ container oam {
+ container bfd {
+ if-feature bfd;
+ leaf enabled {
+ type boolean;
+ default false;
+ description
+ "BFD activation.";
+ }
+
+ choice holdtime {
+ case profile {
+ leaf profile-name {
+ type string;
+ description
+ "Well-known SP profile.";
+ }
+ description
+ "Well-known SP profile.";
+ }
+ case fixed {
+ leaf fixed-value {
+ type uint32;
+ units msec;
+ description
+ "Expected holdtime expressed in msec.";
+ }
+ }
+ description
+ "Choice for holdtime flavor.";
+ }
+ description
+ "Container for BFD.";
+ }
+ description
+ "Defines the OAM mechanisms used on the connection.";
+ }
+ description
+ "Defines connection parameters.";
+ }
+ description
+ "This grouping defines IP connection parameters.";
+ }
+
+
+
+
+Litkowski, et al. Standards Track [Page 141]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ grouping site-service-multicast {
+ container multicast {
+ if-feature multicast;
+ leaf multicast-site-type {
+ type enumeration {
+ enum receiver-only {
+ description
+ "The site only has receivers.";
+ }
+ enum source-only {
+ description
+ "The site only has sources.";
+ }
+ enum source-receiver {
+ description
+ "The site has both sources and receivers.";
+ }
+ }
+ default "source-receiver";
+ description
+ "Type of multicast site.";
+ }
+ container multicast-address-family {
+ leaf ipv4 {
+ if-feature ipv4;
+ type boolean;
+ default true;
+ description
+ "Enables IPv4 multicast.";
+ }
+ leaf ipv6 {
+ if-feature ipv6;
+ type boolean;
+ default false;
+ description
+ "Enables IPv6 multicast.";
+ }
+ description
+ "Defines protocol to carry multicast.";
+ }
+ leaf protocol-type {
+ type enumeration {
+ enum host {
+ description
+ "Hosts are directly connected to the provider network.
+ Host protocols such as IGMP or MLD are required.";
+ }
+
+
+
+
+Litkowski, et al. Standards Track [Page 142]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ enum router {
+ description
+ "Hosts are behind a customer router.
+ PIM will be implemented.";
+ }
+ enum both {
+ description
+ "Some hosts are behind a customer router, and some others
+ are directly connected to the provider network.
+ Both host and routing protocols must be used.
+ Typically, IGMP and PIM will be implemented.";
+ }
+ }
+ default "both";
+ description
+ "Multicast protocol type to be used with the customer site.";
+ }
+
+ description
+ "Multicast parameters for the site.";
+ }
+ description
+ "Multicast parameters for the site.";
+ }
+
+ grouping site-management {
+ container management {
+ leaf type {
+ type identityref {
+ base management;
+ }
+ description
+ "Management type of the connection.";
+ }
+ description
+ "Management configuration.";
+ }
+ description
+ "Management parameters for the site.";
+ }
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 143]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ grouping site-devices {
+ container devices {
+ must "/l3vpn-svc/sites/site/management/type = "+
+ "'provider-managed' or "+
+ "/l3vpn-svc/sites/site/management/type = "+
+ "'co-managed'" {
+ description
+ "Applicable only for provider-managed or co-managed device.";
+ }
+ list device {
+ key device-id;
+
+ leaf device-id {
+ type svc-id;
+ description
+ "Identifier for the device.";
+ }
+ leaf location {
+ type leafref {
+ path "/l3vpn-svc/sites/site/locations/"+
+ "location/location-id";
+ }
+ description
+ "Location of the device.";
+ }
+ container management {
+ must "/l3vpn-svc/sites/site/management/type"+
+ "= 'co-managed'" {
+ description
+ "Applicable only for co-managed device.";
+ }
+ leaf address-family {
+ type address-family;
+
+ description
+ "Address family used for management.";
+ }
+ leaf address {
+ type inet:ip-address;
+ description
+ "Management address.";
+ }
+ description
+ "Management configuration. Applicable only for
+ co-managed device.";
+ }
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 144]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ description
+ "Device configuration.";
+ }
+ description
+ "List of devices requested by customer.";
+ }
+ description
+ "Grouping for device allocation.";
+ }
+ grouping site-vpn-flavor {
+ leaf site-vpn-flavor {
+ type identityref {
+ base site-vpn-flavor;
+ }
+ default site-vpn-flavor-single;
+ description
+ "Defines whether the site is, for example,
+ a single VPN site or a multiVPN.";
+ }
+ description
+ "Grouping for site VPN flavor.";
+ }
+
+ grouping site-vpn-policy {
+ container vpn-policies {
+ list vpn-policy {
+ key vpn-policy-id;
+
+ leaf vpn-policy-id {
+ type svc-id;
+ description
+ "Unique identifier for the VPN policy.";
+ }
+
+ list entries {
+ key id;
+
+ leaf id {
+ type svc-id;
+ description
+ "Unique identifier for the policy entry.";
+ }
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 145]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ container filter {
+ choice lan {
+ case prefixes {
+ leaf-list ipv4-lan-prefix {
+ if-feature ipv4;
+ type inet:ipv4-prefix;
+ description
+ "List of IPv4 prefixes to be matched.";
+ }
+ leaf-list ipv6-lan-prefix {
+ if-feature ipv6;
+ type inet:ipv6-prefix;
+ description
+ "List of IPv6 prefixes to be matched.";
+ }
+ }
+ case lan-tag {
+ leaf-list lan-tag {
+ type string;
+ description
+ "List of 'lan-tag' items to be matched.";
+ }
+ }
+ description
+ "Choice of ways to do LAN matching.";
+ }
+ description
+ "If used, it permits the splitting of
+ site LANs among multiple VPNs.
+ If no filter is used, all the LANs will be
+ part of the same VPNs with the same role.";
+ }
+ container vpn {
+ leaf vpn-id {
+ type leafref {
+ path "/l3vpn-svc/vpn-services/"+
+ "vpn-service/vpn-id";
+ }
+ mandatory true;
+ description
+ "Reference to an IP VPN.";
+ }
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 146]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ leaf site-role {
+ type identityref {
+ base site-role;
+ }
+ default any-to-any-role;
+ description
+ "Role of the site in the IP VPN.";
+ }
+ description
+ "List of VPNs the LAN is associated with.";
+ }
+ description
+ "List of entries for export policy.";
+ }
+ description
+ "List of VPN policies.";
+ }
+ description
+ "VPN policy.";
+ }
+ description
+ "VPN policy parameters for the site.";
+ }
+
+ grouping site-maximum-routes {
+ container maximum-routes {
+ list address-family {
+ key af;
+
+ leaf af {
+ type address-family;
+
+ description
+ "Address family.";
+ }
+ leaf maximum-routes {
+ type uint32;
+ description
+ "Maximum prefixes the VRF can accept for this address family.";
+ }
+ description
+ "List of address families.";
+ }
+
+ description
+ "Defines 'maximum-routes' for the VRF.";
+ }
+
+
+
+
+Litkowski, et al. Standards Track [Page 147]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ description
+ "Defines 'maximum-routes' for the site.";
+ }
+
+ grouping site-security {
+ container security {
+ uses site-security-authentication;
+ uses site-security-encryption;
+
+ description
+ "Site-specific security parameters.";
+ }
+ description
+ "Grouping for security parameters.";
+ }
+
+ grouping site-service {
+ container service {
+ uses site-service-qos-profile;
+ uses site-service-mpls;
+ uses site-service-multicast;
+
+ description
+ "Service parameters on the attachment.";
+ }
+ description
+ "Grouping for service parameters.";
+ }
+
+ grouping site-network-access-service {
+ container service {
+ uses site-service-basic;
+ uses site-service-qos-profile;
+ uses site-service-mpls;
+ uses site-service-multicast;
+
+ description
+ "Service parameters on the attachment.";
+ }
+ description
+ "Grouping for service parameters.";
+ }
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 148]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ grouping vpn-extranet {
+ container extranet-vpns {
+ if-feature extranet-vpn;
+ list extranet-vpn {
+ key vpn-id;
+
+ leaf vpn-id {
+ type svc-id;
+ description
+ "Identifies the target VPN.";
+ }
+ leaf local-sites-role {
+ type identityref {
+ base site-role;
+
+ }
+ default any-to-any-role;
+ description
+ "This describes the role of the
+ local sites in the target VPN topology.";
+ }
+ description
+ "List of extranet VPNs the local VPN is attached to.";
+ }
+ description
+ "Container for extranet VPN configuration.";
+ }
+ description
+ "Grouping for extranet VPN configuration.
+ This provides an easy way to interconnect
+ all sites from two VPNs.";
+ }
+
+ grouping site-attachment-availability {
+ container availability {
+ leaf access-priority {
+ type uint32;
+ default 1;
+ description
+ "Defines the priority for the access.
+ The higher the access-priority value,
+ the higher the preference of the access will be.";
+ }
+ description
+ "Availability parameters (used for multihoming).";
+ }
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 149]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ description
+ "Defines availability parameters for a site.";
+ }
+
+ grouping access-vpn-policy {
+ container vpn-attachment {
+
+ choice attachment-flavor {
+ case vpn-policy-id {
+ leaf vpn-policy-id {
+ type leafref {
+ path "/l3vpn-svc/sites/site/"+
+ "vpn-policies/vpn-policy/"+
+ "vpn-policy-id";
+ }
+ description
+ "Reference to a VPN policy.";
+ }
+ }
+ case vpn-id {
+ leaf vpn-id {
+ type leafref {
+ path "/l3vpn-svc/vpn-services"+
+ "/vpn-service/vpn-id";
+ }
+ description
+ "Reference to a VPN.";
+ }
+ leaf site-role {
+ type identityref {
+ base site-role;
+ }
+ default any-to-any-role;
+ description
+ "Role of the site in the IP VPN.";
+ }
+ }
+ mandatory true;
+ description
+ "Choice for VPN attachment flavor.";
+ }
+ description
+ "Defines VPN attachment of a site.";
+ }
+ description
+ "Defines the VPN attachment rules for a site's logical access.";
+ }
+
+
+
+
+Litkowski, et al. Standards Track [Page 150]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ grouping vpn-svc-cfg {
+ leaf vpn-id {
+ type svc-id;
+ description
+ "VPN identifier. Local administration meaning.";
+ }
+ leaf customer-name {
+ type string;
+ description
+ "Name of the customer.";
+ }
+ leaf vpn-service-topology {
+ type identityref {
+ base vpn-topology;
+ }
+ default "any-to-any";
+ description
+ "VPN service topology.";
+ }
+
+ uses vpn-service-cloud-access;
+ uses vpn-service-multicast;
+ uses vpn-service-mpls;
+ uses vpn-extranet;
+
+ description
+ "Grouping for VPN service configuration.";
+ }
+
+ grouping site-top-level-cfg {
+ uses operational-requirements;
+ uses customer-location-info;
+ uses site-devices;
+ uses site-diversity;
+ uses site-management;
+ uses site-vpn-policy;
+ uses site-vpn-flavor;
+ uses site-maximum-routes;
+ uses site-security;
+ uses site-service;
+ uses site-protection;
+ uses site-routing;
+
+ description
+ "Grouping for site top-level configuration.";
+ }
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 151]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ grouping site-network-access-top-level-cfg {
+ leaf site-network-access-type {
+ type identityref {
+ base site-network-access-type;
+ }
+ default "point-to-point";
+ description
+ "Describes the type of connection, e.g.,
+ point-to-point or multipoint.";
+ }
+
+ choice location-flavor {
+ case location {
+ when "/l3vpn-svc/sites/site/management/type = "+
+ "'customer-managed'" {
+ description
+ "Applicable only for customer-managed device.";
+ }
+ leaf location-reference {
+ type leafref {
+ path "/l3vpn-svc/sites/site/locations/"+
+ "location/location-id";
+ }
+ description
+ "Location of the site-network-access.";
+ }
+ }
+ case device {
+ when "/l3vpn-svc/sites/site/management/type = "+
+ "'provider-managed' or "+
+ "/l3vpn-svc/sites/site/management/type = "+
+ "'co-managed'" {
+ description
+ "Applicable only for provider-managed or co-managed device.";
+ }
+ leaf device-reference {
+ type leafref {
+ path "/l3vpn-svc/sites/site/devices/"+
+ "device/device-id";
+ }
+ description
+ "Identifier of CE to use.";
+ }
+ }
+ mandatory true;
+ description
+ "Choice of how to describe the site's location.";
+ }
+
+
+
+Litkowski, et al. Standards Track [Page 152]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ uses access-diversity;
+ uses site-attachment-bearer;
+ uses site-attachment-ip-connection;
+ uses site-security;
+ uses site-network-access-service;
+ uses site-routing;
+ uses site-attachment-availability;
+ uses access-vpn-policy;
+
+ description
+ "Grouping for site network access top-level configuration.";
+ }
+
+ /* Main blocks */
+
+ container l3vpn-svc {
+ container vpn-services {
+ list vpn-service {
+ key vpn-id;
+
+ uses vpn-svc-cfg;
+
+ description
+ "List of VPN services.";
+ }
+ description
+ "Top-level container for the VPN services.";
+ }
+
+ container sites {
+ list site {
+ key site-id;
+
+ leaf site-id {
+ type svc-id;
+ description
+ "Identifier of the site.";
+ }
+
+ uses site-top-level-cfg;
+ uses operational-requirements-ops;
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 153]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ container site-network-accesses {
+ list site-network-access {
+ key site-network-access-id;
+
+ leaf site-network-access-id {
+ type svc-id;
+ description
+ "Identifier for the access.";
+ }
+ uses site-network-access-top-level-cfg;
+
+ description
+ "List of accesses for a site.";
+ }
+ description
+ "List of accesses for a site.";
+ }
+
+ description
+ "List of sites.";
+ }
+ description
+ "Container for sites.";
+ }
+
+ description
+ "Main container for L3VPN service configuration.";
+ }
+
+ }
+ <CODE ENDS>
+
+10. Security Considerations
+
+ The YANG module defined in this document MAY be accessed via the
+ RESTCONF protocol [RFC8040] or the NETCONF protocol [RFC6241]. The
+ lowest RESTCONF or NETCONF layer requires that the transport-layer
+ protocol provide both data integrity and confidentiality; see
+ Section 2 in [RFC8040] and Section 2 in [RFC6241]. The client MUST
+ carefully examine the certificate presented by the server to
+ determine if it meets the client's expectations, and the server MUST
+ authenticate client access to any protected resource. The client
+ identity derived from the authentication mechanism used is subject to
+ the NETCONF Access Control Model (NACM) [RFC6536]. Other protocols
+ that are used to access this YANG module are also required to support
+ similar security mechanisms.
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 154]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ The data nodes defined in the "ietf-l3vpn-svc" YANG module MUST be
+ carefully created, read, updated, or deleted as appropriate. The
+ entries in the lists below include customer-proprietary or
+ confidential information; therefore, access to confidential
+ information MUST be limited to authorized clients, and other clients
+ MUST NOT be permitted to access the information.
+
+ o /l3vpn-svc/vpn-services/vpn-service
+
+ o /l3vpn-svc/sites/site
+
+ The data model proposes some security parameters than can be extended
+ via augmentation as part of the customer service request; those
+ parameters are described in Section 6.9.
+
+11. IANA Considerations
+
+ IANA has assigned a new URI from the "IETF XML Registry" [RFC3688].
+
+ URI: urn:ietf:params:xml:ns:yang:ietf-l3vpn-svc
+ Registrant Contact: The IESG
+ XML: N/A; the requested URI is an XML namespace.
+
+ This document adds a new YANG module name in the "YANG Module Names"
+ registry [RFC6020]:
+
+ Name: ietf-l3vpn-svc
+ Namespace: urn:ietf:params:xml:ns:yang:ietf-l3vpn-svc
+ Prefix: l3vpn-svc
+ Reference: RFC 8049
+
+12. References
+
+12.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <http://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
+ DOI 10.17487/RFC3688, January 2004,
+ <http://www.rfc-editor.org/info/rfc3688>.
+
+ [RFC4026] Andersson, L. and T. Madsen, "Provider Provisioned Virtual
+ Private Network (VPN) Terminology", RFC 4026,
+ DOI 10.17487/RFC4026, March 2005,
+ <http://www.rfc-editor.org/info/rfc4026>.
+
+
+
+Litkowski, et al. Standards Track [Page 155]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+ [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private
+ Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364,
+ February 2006, <http://www.rfc-editor.org/info/rfc4364>.
+
+ [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the
+ Provider/Customer Edge Protocol for BGP/MPLS IP Virtual
+ Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577,
+ June 2006, <http://www.rfc-editor.org/info/rfc4577>.
+
+ [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless
+ Address Autoconfiguration", RFC 4862,
+ DOI 10.17487/RFC4862, September 2007,
+ <http://www.rfc-editor.org/info/rfc4862>.
+
+ [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
+ the Network Configuration Protocol (NETCONF)", RFC 6020,
+ DOI 10.17487/RFC6020, October 2010,
+ <http://www.rfc-editor.org/info/rfc6020>.
+
+ [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
+ and A. Bierman, Ed., "Network Configuration Protocol
+ (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
+ <http://www.rfc-editor.org/info/rfc6241>.
+
+ [RFC6513] Rosen, E., Ed., and R. Aggarwal, Ed., "Multicast in
+ MPLS/BGP IP VPNs", RFC 6513, DOI 10.17487/RFC6513,
+ February 2012, <http://www.rfc-editor.org/info/rfc6513>.
+
+ [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
+ Protocol (NETCONF) Access Control Model", RFC 6536,
+ DOI 10.17487/RFC6536, March 2012,
+ <http://www.rfc-editor.org/info/rfc6536>.
+
+ [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
+ RFC 7950, DOI 10.17487/RFC7950, August 2016,
+ <http://www.rfc-editor.org/info/rfc7950>.
+
+ [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
+ Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
+ <http://www.rfc-editor.org/info/rfc8040>.
+
+
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 156]
+
+RFC 8049 YANG Data Model for L3VPN Service Delivery February 2017
+
+
+12.2. Informative References
+
+ [RFC4110] Callon, R. and M. Suzuki, "A Framework for Layer 3
+ Provider-Provisioned Virtual Private Networks (PPVPNs)",
+ RFC 4110, DOI 10.17487/RFC4110, July 2005,
+ <http://www.rfc-editor.org/info/rfc4110>.
+
+ [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter,
+ "Multiprotocol Extensions for BGP-4", RFC 4760,
+ DOI 10.17487/RFC4760, January 2007,
+ <http://www.rfc-editor.org/info/rfc4760>.
+
+Acknowledgements
+
+ Thanks to Qin Wu, Maxim Klyus, Luis Miguel Contreras, Gregory Mirsky,
+ Zitao Wang, Jing Zhao, Kireeti Kompella, Eric Rosen, Aijun Wang,
+ Michael Scharf, Xufeng Liu, David Ball, Lucy Yong, Jean-Philippe
+ Landry, and Andrew Leu for their contributions to this document.
+
+Contributors
+
+ The authors would like to thank Rob Shakir for his major
+ contributions to the initial modeling and use cases.
+
+Authors' Addresses
+
+ Stephane Litkowski
+ Orange Business Services
+
+ Email: stephane.litkowski@orange.com
+
+
+ Luis Tomotaki
+ Verizon
+
+ Email: luis.tomotaki@verizon.com
+
+
+ Kenichi Ogaki
+ KDDI Corporation
+
+ Email: ke-oogaki@kddi.com
+
+
+
+
+
+
+
+
+
+Litkowski, et al. Standards Track [Page 157]
+