1 // vi: set smarttab et sw=4 tabstop=4:
4 namespace "urn:opendaylight:params:xml:ns:yang:bgp-evpn";
7 import bgp-types { prefix bgp-t; revision-date 2013-09-19; }
8 import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
9 import ietf-yang-types {prefix yang; revision-date "2010-09-24";}
10 import network-concepts { prefix netc; revision-date 2013-11-25; }
11 import bgp-rib { prefix bgp-rib; revision-date 2013-09-25; }
12 import bmp-monitor { prefix bmp-mon; revision-date 2015-05-12; }
14 organization "Cisco Systems, Inc.";
16 contact "Claudio D. Gasparini <cgaspari@cisco.com>";
19 "This module contains the base data model of a BGP flow specification.
20 It rolls up the definitions contained in RFC7432.
22 Copyright (c)2016 Cisco Systems, Inc. All rights reserved.
24 This program and the accompanying materials are made available
25 under the terms of the Eclipse Public License v1.0 which
26 accompanies this distribution, and is available at
27 http://www.eclipse.org/legal/epl-v10.html";
29 revision "2016-03-21" {
32 reference "https://tools.ietf.org/html/rfc7432";
35 identity l2vpn-address-family {
36 reference "https://tools.ietf.org/html/rfc7432#section-20";
37 base bgp-t:address-family;
40 identity evpn-subsequent-address-family {
41 reference "https://tools.ietf.org/html/rfc7432#section-20";
42 base bgp-t:subsequent-address-family;
46 reference "https://tools.ietf.org/html/rfc7432#section-7";
54 enum inc-mult-eth-tag {
64 reference "https://tools.ietf.org/html/rfc7432#section-5";
69 enum lacp-auto-generated {
72 enum lan-auto-generated {
75 enum mac-auto-generated {
78 enum router-id-generated {
89 range "0 .. 16777215";
92 "24-bit unsigned integer.";
95 grouping ethernet-tag-id {
96 reference "https://tools.ietf.org/html/rfc7432#section-7.1";
97 description "An Ethernet Tag ID is a 32-bit field containing either
98 a 12-bit or 24-bit identifier that identifies a particular
99 broadcast domain (e.g., a VLAN) in an EVPN instance";
101 container ethernet-tag-id {
109 grouping local-discriminator {
110 leaf local-discriminator {
117 reference "https://tools.ietf.org/html/rfc7432#section-5";
118 description "Ethernet segment (ES) are identified by a unique non-zero identifier
119 called an Ethernet Segment Identifier (ESI). An ESI is encoded as a 10-octet
120 integer in line format with the most significant octet sent first";
124 case arbitrary-case {
125 container arbitrary {
126 description "Type 0 indicates an arbitrary 9-octet ESI
127 value, which is managed and configured by the operator";
137 case lacp-auto-generated-case {
138 container lacp-auto-generated {
139 description "When IEEE 802.1AX LACP is used between the PEs and CEs,
140 ESI type 1 indicates an auto-generated ESI value determined from LACP";
142 leaf ce-lacp-mac-address {
143 type yang:mac-address;
146 leaf ce-lacp-port-key {
152 case lan-auto-generated-case {
153 container lan-auto-generated {
154 description "Type 2 is used in the case of indirectly connected hosts via a bridged
155 LAN between the CEs and the PEs. The ESI Value is auto-generated and determined
156 based on the Layer 2 bridge protocol";
158 leaf root-bridge-mac-address {
159 type yang:mac-address;
162 leaf root-bridge-priority {
168 case mac-auto-generated-case {
169 container mac-auto-generated {
170 description "Type 3 indicates a MAC-based ESI Value that
171 can be auto-generated or configured by the operator.";
173 leaf system-mac-address {
174 type yang:mac-address;
177 leaf local-discriminator {
183 case router-id-generated-case {
184 container router-id-generated {
185 description "Type 4 indicates a router-ID ESI Value that
186 can be auto-generated or configured by the operator";
189 type inet:ipv4-address;
192 uses local-discriminator;
195 case as-generated-case {
196 container as-generated {
197 description "Type 5 indicates an Autonomous System (AS)-based ESI
198 Value that can be auto-generated or configured by the operator";
204 uses local-discriminator;
210 grouping route-distinguisher {
211 leaf route-distinguisher {
212 type bgp-t:route-distinguisher;
217 grouping ethernet-a-d-route {
218 container ethernet-a-d-route {
219 reference "https://tools.ietf.org/html/rfc7432#section-7.1";
220 description "Ethernet Auto-Discovery (A-D) route";
223 uses ethernet-tag-id;
225 type netc:mpls-label;
231 grouping mac-ip-adv-route {
232 container mac-ip-adv-route {
233 reference "https://tools.ietf.org/html/rfc7432#section-7.2";
234 description "MAC/IP Advertisement route";
237 uses ethernet-tag-id;
239 type yang:mac-address;
243 type inet:ip-address;
246 type netc:mpls-label;
250 type netc:mpls-label;
255 grouping inc-multi-ethernet-tag-res {
256 container inc-multi-ethernet-tag-res {
257 reference "https://tools.ietf.org/html/rfc7432#section-7.3";
258 description "Inclusive Multicast Ethernet Tag route";
260 uses ethernet-tag-id;
262 type inet:ip-address;
269 reference "https://tools.ietf.org/html/rfc7432#section-7.4";
270 description "Ethernet Segment route";
274 type inet:ip-address;
280 grouping esi-label-extended-community {
281 container esi-label-extended-community {
282 reference "https://tools.ietf.org/html/rfc7432#section-7.5";
283 description "The ESI Label Extended Community is a transitive Extended
284 Community that may be advertised along with Ethernet Auto-discovery
285 routes, and it enables split-horizon procedures for multihomed sites";
287 leaf single-active-mode {
292 type netc:mpls-label;
298 grouping es-import-route-extended-community {
299 container es-import-route-extended-community {
300 reference "https://tools.ietf.org/html/rfc7432#section-7.6";
302 "New transitive Route Target extended community carried with
303 the Ethernet Segment route. When used, it enables all the PEs
304 connected to the same multihomed site to import the Ethernet Segment
308 type yang:mac-address;
314 grouping mac-mobility-extended-community {
315 container mac-mobility-extended-community {
316 reference "https://tools.ietf.org/html/rfc7432#section-7.7";
318 "The MAC Mobility Extended Community is a transitive Extended Community
319 that may be advertised along with MAC/IP Advertisement routes.";
332 grouping default-gateway-extended-community {
333 container default-gateway-extended-community {
335 "The Default Gateway community is an Extended Community of an
338 reference "https://tools.ietf.org/html/rfc7432#section-7.8";
341 "The Default Gateway community is an Extended Community of an
346 grouping layer-2-attributes-extended-community {
347 container layer-2-attributes-extended-community {
348 reference "https://tools.ietf.org/html/draft-ietf-bess-evpn-vpws-02#section-3.1";
350 "The EVPN Layer 2 attributes extended community is a extended community
351 to be included with Ethernet A-D per EVI route.
352 This attribute is mandatory if multihoming is enabled.";
373 grouping evpn-destination {
374 list evpn-destination {
379 grouping evpn-routes {
380 container evpn-routes {
388 augment "attributes/extended-communities/extended-community" {
389 case esi-label-extended-community-case {
390 uses esi-label-extended-community;
392 case es-import-route-extended-community-case {
393 uses es-import-route-extended-community;
395 case mac-mobility-extended-community-case {
396 uses mac-mobility-extended-community;
398 case default-gateway-extended-community-case {
399 uses default-gateway-extended-community;
401 case layer-2-attributes-extended-community-case {
402 uses layer-2-attributes-extended-community;
411 reference "https://tools.ietf.org/html/rfc7432#section-7";
412 description "The EVPN NLRI is carried in BGP [RFC4271] using BGP Multiprotocol
413 Extensions [RFC4760] with an Address Family Identifier (AFI) of 25 (L2VPN)
414 and a Subsequent Address Family Identifier (SAFI) of 70 (EVPN)";
417 case ethernet-a-d-route-case {
418 uses ethernet-a-d-route;
420 case mac-ip-adv-route-case {
421 uses mac-ip-adv-route;
423 case inc-multi-ethernet-tag-res-case {
424 uses inc-multi-ethernet-tag-res;
432 uses route-distinguisher;
435 augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-reach-nlri/bgp-mp:advertized-routes/bgp-mp:destination-type" {
436 case destination-evpn-case {
437 container destination-evpn {
438 uses evpn-destination;
443 augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-unreach-nlri/bgp-mp:withdrawn-routes/bgp-mp:destination-type" {
444 case destination-evpn-case {
445 container destination-evpn {
446 uses evpn-destination;
451 augment "/bgp-rib:application-rib/bgp-rib:tables/bgp-rib:routes" {
452 case evpn-routes-case {
457 augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:loc-rib/bgp-rib:tables/bgp-rib:routes" {
458 case evpn-routes-case {
463 augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-in/bgp-rib:tables/bgp-rib:routes" {
464 case evpn-routes-case {
469 augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:effective-rib-in/bgp-rib:tables/bgp-rib:routes" {
470 case evpn-routes-case {
475 augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-out/bgp-rib:tables/bgp-rib:routes" {
476 case evpn-routes-case {
481 augment "/bmp-mon:bmp-monitor/bmp-mon:monitor/bmp-mon:router/bmp-mon:peer/bmp-mon:pre-policy-rib/bmp-mon:tables/bmp-mon:routes" {
482 case evpn-routes-case {
487 augment "/bmp-mon:bmp-monitor/bmp-mon:monitor/bmp-mon:router/bmp-mon:peer/bmp-mon:post-policy-rib/bmp-mon:tables/bmp-mon:routes" {
488 case evpn-routes-case {
493 augment "/bgp-msg:update/bgp-msg:attributes/bgp-msg:extended-communities/bgp-msg:extended-community" {
494 case esi-label-extended-community-case {
495 uses esi-label-extended-community;
497 case es-import-route-extended-community-case {
498 uses es-import-route-extended-community;
500 case mac-mobility-extended-community-case {
501 uses mac-mobility-extended-community;
503 case default-gateway-extended-community-case {
504 uses default-gateway-extended-community;
506 case layer-2-attributes-extended-community-case {
507 uses layer-2-attributes-extended-community;