3 namespace "urn:opendaylight:params:xml:ns:yang:bgp-linkstate";
6 import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
7 import bgp-message { prefix bgp-msg; revision-date 2013-09-19; }
8 import bgp-multiprotocol { prefix bgp-mp; revision-date 2013-09-19; }
9 import bgp-rib { prefix bgp-rib; revision-date 2013-09-25; }
10 import bgp-types { prefix bgp-t; revision-date 2013-09-19; }
11 import network-concepts { prefix netc; revision-date 2013-11-25; }
12 import rsvp { prefix rsvp; revision-date 2015-08-20; }
13 import bgp-segment-routing { prefix bgp-sr; revision-date 2015-02-06; }
14 import bgp-epe { prefix bgp-epe; revision-date 2015-06-22; }
15 import bmp-monitor { prefix bmp-mon; revision-date 2015-05-12; }
17 organization "Cisco Systems, Inc.";
18 contact "Dana Kutenicsova <dkutenic@cisco.com>";
21 "This module contains the base data model of a BGP message.
22 It rolls up the definitions contained in RFC4271
23 and draft-ietf-idr-ls-distribution-03.
25 Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
27 This program and the accompanying materials are made available
28 under the terms of the Eclipse Public License v1.0 which
29 accompanies this distribution, and is available at
30 http://www.eclipse.org/legal/epl-v10.html";
32 revision "2015-02-10" {
34 "Updated to include segment routing.";
37 revision "2013-11-25" {
39 "Updated to cover network-concepts.";
42 revision "2013-09-18" {
45 reference "draft-ietf-idr-ls-distribution-03";
48 identity linkstate-address-family {
49 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2";
51 base bgp-t:address-family;
54 identity linkstate-subsequent-address-family {
55 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2";
57 base bgp-t:subsequent-address-family;
61 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2";
76 reference "http://tools.ietf.org/html/draft-ietf-idr-te-lsp-distribution-03#section-4.1";
80 reference "http://tools.ietf.org/html/draft-ietf-idr-te-lsp-distribution-03#section-4.1";
87 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2";
108 reference "http://tools.ietf.org/html/draft-ietf-idr-te-lsp-distribution-03#section-2.1";
112 reference "https://tools.ietf.org/html/draft-ietf-idr-bgpls-segment-routing-epe-00#section-4";
115 enum segment-routing {
116 reference "http://tools.ietf.org/html/draft-ietf-idr-te-lsp-distribution-03#section-2.1";
117 value 8; // segment-routing protocol-id TBD by IANA
122 typedef ospf-route-type {
123 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.3.1";
146 typedef route-distinguisher {
154 typedef domain-identifier {
155 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
159 typedef area-identifier {
160 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
164 typedef ipv4-interface-identifier {
165 reference "http://tools.ietf.org/html/rfc5305#section-3.2";
166 type inet:ipv4-address;
169 typedef ipv6-interface-identifier {
170 reference "http://tools.ietf.org/html/rfc6119#section-4.2";
171 type inet:ipv6-address;
174 typedef ospf-interface-identifier {
175 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
179 typedef topology-identifier {
180 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.5";
187 grouping isis-router-identifier {
188 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
190 type netc:iso-system-identifier;
195 grouping isis-lan-identifier {
196 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
197 container is-is-router-identifier {
198 uses isis-router-identifier;
208 grouping ospf-router-identifier {
209 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
210 leaf ospf-router-id {
216 grouping ospf-v2-lan-identifier {
217 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
218 uses ospf-router-identifier;
220 type ipv4-interface-identifier;
225 grouping ospf-v3-lan-identifier {
226 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.2.1.4";
227 uses ospf-router-identifier;
229 type ospf-interface-identifier;
234 grouping node-identifier {
239 type area-identifier;
242 type domain-identifier;
244 choice c-router-identifier {
245 case isis-node-case {
246 container isis-node {
247 uses isis-router-identifier;
250 case isis-pseudonode-case {
251 container isis-pseudonode {
252 uses isis-lan-identifier;
255 case ospf-node-case {
256 container ospf-node {
257 uses ospf-router-identifier;
260 case ospf-pseudonode-case {
261 container ospf-pseudonode {
262 uses ospf-v3-lan-identifier;
268 grouping link-lr-identifiers {
269 reference "http://tools.ietf.org/html/rfc5307";
270 leaf link-local-identifier {
273 leaf link-remote-identifier {
278 grouping prefix-identifiers {
279 leaf multi-topology-id {
280 type topology-identifier;
282 leaf ospf-route-type {
283 when "../../protocol-id = 'ospf'";
284 type ospf-route-type;
286 leaf ip-reachability-information {
291 grouping link-identifier {
292 uses link-lr-identifiers;
293 leaf ipv4-interface-address {
294 type ipv4-interface-identifier;
296 leaf ipv6-interface-address {
297 type ipv6-interface-identifier;
299 leaf ipv4-neighbor-address {
300 type ipv4-interface-identifier;
302 leaf ipv6-neighbor-address {
303 type ipv6-interface-identifier;
305 leaf multi-topology-id {
306 type topology-identifier;
312 type route-distinguisher;
324 container node-descriptors {
325 uses node-identifier;
329 container local-node-descriptors {
330 uses node-identifier;
331 uses bgp-epe:epe-node-descriptors;
333 container remote-node-descriptors {
334 uses node-identifier;
335 uses bgp-epe:epe-node-descriptors;
337 container link-descriptors {
338 uses link-identifier;
342 container advertising-node-descriptors {
343 uses node-identifier;
345 container prefix-descriptors {
346 uses prefix-identifiers;
350 choice address-family {
352 leaf ipv4-tunnel-sender-address {
353 type inet:ipv4-address;
356 leaf ipv4-tunnel-endpoint-address {
357 type inet:ipv4-address;
362 leaf ipv6-tunnel-sender-address {
363 type inet:ipv6-address;
366 leaf ipv6-tunnel-endpoint-address {
367 type inet:ipv6-address;
382 grouping linkstate-destination {
383 list c-linkstate-destination {
388 augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-reach-nlri/bgp-mp:advertized-routes/bgp-mp:destination-type" {
389 case destination-linkstate-case {
390 container destination-linkstate {
391 uses linkstate-destination;
396 augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-unreach-nlri/bgp-mp:withdrawn-routes/bgp-mp:destination-type" {
397 case destination-linkstate-case {
398 container destination-linkstate {
399 uses linkstate-destination;
404 typedef node-flag-bits {
405 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.1";
428 typedef isis-area-identifier {
429 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.2";
435 typedef ipv4-router-identifier {
436 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.4";
437 type inet:ipv4-address;
440 typedef ipv6-router-identifier {
441 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.4";
442 type inet:ipv6-address;
445 grouping node-state {
446 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1";
447 leaf-list topology-identifier {
448 type topology-identifier;
453 leaf-list isis-area-id {
454 type isis-area-identifier;
456 leaf dynamic-hostname {
459 leaf ipv4-router-id {
460 type ipv4-router-identifier;
462 leaf ipv6-router-id {
463 type ipv6-router-identifier;
465 container sr-sid-label {
466 uses bgp-sr:sid-label-binding;
468 container sr-capabilities {
469 uses bgp-sr:sr-capabilities;
471 container sr-algorithm {
472 uses bgp-sr:sr-algorithm;
476 typedef link-protection-type {
477 reference "http://tools.ietf.org/html/rfc5307#section-1.2";
488 enum dedicated-1to1 {
491 enum dedicated-1plus1 {
501 typedef mpls-protocol-mask {
502 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.2.2";
513 typedef administrative-group {
517 grouping unreserved-bandwidth {
528 grouping link-state {
529 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.2";
530 leaf local-ipv4-router-id {
531 type ipv4-router-identifier;
533 leaf local-ipv6-router-id {
534 type ipv6-router-identifier;
536 leaf remote-ipv4-router-id {
537 type ipv4-router-identifier;
539 leaf remote-ipv6-router-id {
540 type ipv6-router-identifier;
543 type mpls-protocol-mask;
551 leaf-list shared-risk-link-groups {
557 leaf max-link-bandwidth {
560 leaf max-reservable-bandwidth {
563 list unreserved-bandwidth {
565 uses unreserved-bandwidth;
567 leaf link-protection {
568 type link-protection-type;
571 type administrative-group;
573 container sr-adj-id {
574 uses bgp-sr:adjacency-segment-identifier;
576 container sr-lan-adj-id {
577 uses bgp-sr:lan-adjacency-segment-identifier;
580 description "The SID representing the peer of the BGP session.";
581 reference "https://tools.ietf.org/html/draft-ietf-idr-bgpls-segment-routing-epe-00#section-4.3";
582 uses bgp-sr:adjacency-segment-identifier;
584 container peer-set-sid {
585 description "The SID representing the group the peer is part of.";
586 reference "https://tools.ietf.org/html/draft-ietf-idr-bgpls-segment-routing-epe-00#section-4.3";
587 uses bgp-sr:adjacency-segment-identifier;
592 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.3.2";
598 typedef extended-route-tag {
599 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.3.3";
606 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.3.1";
616 grouping prefix-state {
620 leaf-list route-tags {
623 leaf-list extended-tags {
624 type extended-route-tag;
627 type netc:igp-metric;
629 leaf ospf-forwarding-address {
630 type inet:ip-address;
632 container sr-prefix {
633 uses bgp-sr:prefix-sid;
637 grouping linkstate-path-attribute {
638 choice link-state-attribute {
639 case node-attributes-case {
640 container node-attributes {
644 case link-attributes-case {
645 container link-attributes {
649 case prefix-attributes-case {
650 container prefix-attributes {
654 case te-lsp-attributes-case {
655 description "LSP Object";
656 reference "http://tools.ietf.org/html/draft-ietf-idr-te-lsp-distribution-03#section-2.2";
657 container te-lsp-attributes {
658 uses rsvp:tspec-object;
659 uses rsvp:flow-spec-object;
660 uses rsvp:session-attribute-object;
661 uses rsvp:explicit-route-object;
662 uses rsvp:secondary-explicit-route-object;
663 uses rsvp:record-route-object;
664 uses rsvp:secondary-record-route-object;
665 uses rsvp:fast-reroute-object;
666 uses rsvp:detour-object;
667 uses rsvp:exclude-route-object;
668 uses rsvp:lsp-attributes-object;
669 uses rsvp:lsp-required-attributes-object;
670 uses rsvp:protection-object;
671 uses rsvp:association-object;
672 uses rsvp:primary-path-route-object;
673 uses rsvp:admin-status-object;
674 uses rsvp:bandwidth-object;
675 uses rsvp:metric-object;
681 grouping linkstate-routes {
682 container linkstate-routes {
683 list linkstate-route {
685 "Link-state information entry. Due to
686 the complexity of link-state information
687 and YANG limitations this is the top-level
688 object from contract perspective. It is
689 keyed by route-key, whose format is
690 internal to the implementation exposing
691 this information. As an explicit example
692 it can rely on information stored in the
693 entry's subtree, so the subtree MUST NOT
694 be modified by outside entities.
695 Augmentations can attach data, but must
696 be explicitly aware that such data, unlike
697 the data modeled directly here, does not
698 have any effects on keys, especially they
699 must not impact equality tests.";
703 "The sole function of this leaf
704 to act as the key in the list.
705 Its format does not form the
706 API contract of this model.";
715 uses linkstate-path-attribute;
722 augment "/bgp-msg:update/bgp-msg:attributes" {
723 uses linkstate-path-attribute;
726 augment "/bgp-rib:application-rib/bgp-rib:tables/bgp-rib:routes" {
727 case linkstate-routes-case {
728 uses linkstate-routes;
732 augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:loc-rib/bgp-rib:tables/bgp-rib:routes" {
733 case linkstate-routes-case {
734 uses linkstate-routes;
738 augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-in/bgp-rib:tables/bgp-rib:routes" {
739 case linkstate-routes-case {
740 uses linkstate-routes;
744 augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:effective-rib-in/bgp-rib:tables/bgp-rib:routes" {
745 case linkstate-routes-case {
746 uses linkstate-routes;
750 augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-out/bgp-rib:tables/bgp-rib:routes" {
751 case linkstate-routes-case {
752 uses linkstate-routes;
756 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" {
757 case linkstate-routes-case {
758 uses linkstate-routes;
762 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" {
763 case linkstate-routes-case {
764 uses linkstate-routes;