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";
422 typedef isis-area-identifier {
423 reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.2";
429 typedef ipv4-router-identifier {
430 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.4";
431 type inet:ipv4-address;
434 typedef ipv6-router-identifier {
435 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1.4";
436 type inet:ipv6-address;
439 grouping node-state {
440 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.1";
441 leaf-list topology-identifier {
442 type topology-identifier;
447 leaf-list isis-area-id {
448 type isis-area-identifier;
450 leaf dynamic-hostname {
453 leaf ipv4-router-id {
454 type ipv4-router-identifier;
456 leaf ipv6-router-id {
457 type ipv6-router-identifier;
459 container sr-sid-label {
460 uses bgp-sr:sid-label-binding;
462 container sr-capabilities {
463 uses bgp-sr:sr-capabilities;
465 container sr-algorithm {
466 uses bgp-sr:sr-algorithm;
470 typedef link-protection-type {
471 reference "http://tools.ietf.org/html/rfc5307#section-1.2";
482 enum dedicated-1to1 {
485 enum dedicated-1plus1 {
495 typedef mpls-protocol-mask {
496 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.2.2";
507 typedef administrative-group {
511 grouping unreserved-bandwidth {
522 grouping link-state {
523 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.2";
524 leaf local-ipv4-router-id {
525 type ipv4-router-identifier;
527 leaf local-ipv6-router-id {
528 type ipv6-router-identifier;
530 leaf remote-ipv4-router-id {
531 type ipv4-router-identifier;
533 leaf remote-ipv6-router-id {
534 type ipv6-router-identifier;
537 type mpls-protocol-mask;
545 leaf-list shared-risk-link-groups {
551 leaf max-link-bandwidth {
554 leaf max-reservable-bandwidth {
557 list unreserved-bandwidth {
559 uses unreserved-bandwidth;
561 leaf link-protection {
562 type link-protection-type;
565 type administrative-group;
567 container sr-adj-id {
568 uses bgp-sr:adjacency-segment-identifier;
570 container sr-lan-adj-id {
571 uses bgp-sr:lan-adjacency-segment-identifier;
574 description "The SID representing the peer of the BGP session.";
575 reference "https://tools.ietf.org/html/draft-ietf-idr-bgpls-segment-routing-epe-00#section-4.3";
576 uses bgp-sr:adjacency-segment-identifier;
578 container peer-set-sid {
579 description "The SID representing the group the peer is part of.";
580 reference "https://tools.ietf.org/html/draft-ietf-idr-bgpls-segment-routing-epe-00#section-4.3";
581 uses bgp-sr:adjacency-segment-identifier;
586 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.3.2";
592 typedef extended-route-tag {
593 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.3.3";
600 reference "http://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03#section-3.3.3.1";
610 grouping prefix-state {
614 leaf-list route-tags {
617 leaf-list extended-tags {
618 type extended-route-tag;
621 type netc:igp-metric;
623 leaf ospf-forwarding-address {
624 type inet:ip-address;
626 container sr-prefix {
627 uses bgp-sr:prefix-sid;
631 grouping linkstate-path-attribute {
632 choice link-state-attribute {
633 case node-attributes-case {
634 container node-attributes {
638 case link-attributes-case {
639 container link-attributes {
643 case prefix-attributes-case {
644 container prefix-attributes {
648 case te-lsp-attributes-case {
649 description "LSP Object";
650 reference "http://tools.ietf.org/html/draft-ietf-idr-te-lsp-distribution-03#section-2.2";
651 container te-lsp-attributes {
652 uses rsvp:tspec-object;
653 uses rsvp:flow-spec-object;
654 uses rsvp:session-attribute-object;
655 uses rsvp:explicit-route-object;
656 uses rsvp:secondary-explicit-route-object;
657 uses rsvp:record-route-object;
658 uses rsvp:secondary-record-route-object;
659 uses rsvp:fast-reroute-object;
660 uses rsvp:detour-object;
661 uses rsvp:exclude-route-object;
662 uses rsvp:lsp-attributes-object;
663 uses rsvp:lsp-required-attributes-object;
664 uses rsvp:protection-object;
665 uses rsvp:association-object;
666 uses rsvp:primary-path-route-object;
667 uses rsvp:admin-status-object;
668 uses rsvp:bandwidth-object;
669 uses rsvp:metric-object;
675 grouping linkstate-routes {
676 container linkstate-routes {
677 list linkstate-route {
679 "Link-state information entry. Due to
680 the complexity of link-state information
681 and YANG limitations this is the top-level
682 object from contract perspective. It is
683 keyed by route-key, whose format is
684 internal to the implementation exposing
685 this information. As an explicit example
686 it can rely on information stored in the
687 entry's subtree, so the subtree MUST NOT
688 be modified by outside entities.
689 Augmentations can attach data, but must
690 be explicitly aware that such data, unlike
691 the data modeled directly here, does not
692 have any effects on keys, especially they
693 must not impact equality tests.";
697 "The sole function of this leaf
698 to act as the key in the list.
699 Its format does not form the
700 API contract of this model.";
709 uses linkstate-path-attribute;
716 augment "/bgp-msg:update/bgp-msg:attributes" {
717 uses linkstate-path-attribute;
720 augment "/bgp-rib:application-rib/bgp-rib:tables/bgp-rib:routes" {
721 case linkstate-routes-case {
722 uses linkstate-routes;
726 augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:loc-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:peer/bgp-rib:adj-rib-in/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:effective-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:adj-rib-out/bgp-rib:tables/bgp-rib:routes" {
745 case linkstate-routes-case {
746 uses linkstate-routes;
750 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" {
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:post-policy-rib/bmp-mon:tables/bmp-mon:routes" {
757 case linkstate-routes-case {
758 uses linkstate-routes;