3 namespace "urn:opendaylight:params:xml:ns:yang:bgp-flowspec";
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 bmp-monitor { prefix bmp-mon; revision-date 2015-05-12; }
14 organization "Cisco Systems, Inc.";
15 contact "Dana Kutenicsova <dkutenic@cisco.com>";
18 "This module contains the base data model of a BGP flow specification.
19 It rolls up the definitions contained in RFC5575.
21 Copyright (c)2015 Cisco Systems, Inc. All rights reserved.
23 This program and the accompanying materials are made available
24 under the terms of the Eclipse Public License v1.0 which
25 accompanies this distribution, and is available at
26 http://www.eclipse.org/legal/epl-v10.html";
28 revision "2015-08-07" {
31 reference "https://tools.ietf.org/html/draft-ietf-idr-flow-spec-v6-06";
34 revision "2015-01-14" {
37 reference "http://tools.ietf.org/html/rfc5575";
40 identity flowspec-subsequent-address-family {
41 description "SAFI 133 for dissemination of unicast flow specification rules.";
42 reference "http://tools.ietf.org/html/rfc5575#section-11";
44 base bgp-t:subsequent-address-family;
47 identity flowspec-l3vpn-subsequent-address-family {
48 description "SAFI 134 for dissemination of L3VPN flow specification rules";
49 reference "http://tools.ietf.org/html/rfc5575#section-11";
51 base bgp-t:subsequent-address-family;
55 reference "http://tools.ietf.org/html/rfc5575#section-4";
73 reference "https://tools.ietf.org/html/rfc2474#section-3";
79 typedef numeric-operand {
80 reference "http://tools.ietf.org/html/rfc5575#section-4";
100 typedef bitmask-operand {
101 reference "http://tools.ietf.org/html/rfc5575#section-4";
118 grouping numeric-two-byte-value {
119 reference "http://tools.ietf.org/html/rfc5575#section-4";
121 type numeric-operand;
128 grouping numeric-one-byte-value {
129 reference "http://tools.ietf.org/html/rfc5575#section-4";
131 type numeric-operand;
138 grouping bitmask-two-byte-value {
139 reference "http://tools.ietf.org/html/rfc5575#section-4";
141 type bitmask-operand;
148 grouping dscp-value {
149 reference "http://tools.ietf.org/html/rfc5575#section-4";
151 type numeric-operand;
158 grouping fragment-value {
159 reference "http://tools.ietf.org/html/rfc5575#section-4";
161 type bitmask-operand;
168 grouping flowspec-destination {
169 reference "http://tools.ietf.org/html/rfc5575#section-4";
171 choice flowspec-type {
174 uses numeric-two-byte-value;
177 case destination-port-case {
178 list destination-ports {
179 uses numeric-two-byte-value;
182 case source-port-case {
184 uses numeric-two-byte-value;
187 case icmp-type-case {
189 uses numeric-one-byte-value;
192 case icmp-code-case {
194 uses numeric-one-byte-value;
197 case tcp-flags-case {
199 uses bitmask-two-byte-value;
202 case packet-length-case {
203 list packet-lengths {
204 uses numeric-two-byte-value;
219 uses bgp-msg:path-id-grouping;
222 grouping flowspec-destination-group-ipv4 {
223 reference "http://tools.ietf.org/html/rfc5575#section-4";
224 uses flowspec-destination {
225 augment "flowspec/flowspec-type" {
226 case destination-prefix-case {
227 leaf destination-prefix {
228 type inet:ipv4-prefix;
231 case source-prefix-case {
233 type inet:ipv4-prefix;
236 case protocol-ip-case {
238 uses numeric-one-byte-value;
245 grouping flow-label-value {
246 reference "https://tools.ietf.org/html/draft-ietf-idr-flow-spec-v6-06#section-3";
248 type numeric-operand;
255 grouping flowspec-destination-group-ipv6 {
256 reference "https://tools.ietf.org/html/draft-ietf-idr-flow-spec-v6-06#section-3.1";
257 uses flowspec-destination {
258 augment "flowspec/flowspec-type" {
259 case destination-ipv6-prefix-case {
260 leaf destination-prefix {
261 type inet:ipv6-prefix;
264 case source-ipv6-prefix-case {
266 type inet:ipv6-prefix;
269 case next-header-case {
271 uses numeric-one-byte-value;
274 case flow-label-case {
276 uses flow-label-value;
283 grouping flowspec-destination-ipv4 {
284 container destination-flowspec {
285 uses flowspec-destination-group-ipv4;
289 grouping flowspec-destination-ipv6 {
290 container destination-flowspec {
291 uses flowspec-destination-group-ipv6;
295 grouping flowspec-l3vpn-rd {
296 reference "https://tools.ietf.org/html/rfc5575#section-8";
297 leaf route-distinguisher {
298 type bgp-t:route-distinguisher;
302 grouping flowspec-l3vpn-destination-ipv4 {
303 container destination-flowspec-l3vpn-ipv4 {
304 uses flowspec-l3vpn-rd;
305 uses flowspec-destination-group-ipv4;
309 grouping flowspec-l3vpn-destination-ipv6 {
310 container destination-flowspec-l3vpn-ipv6 {
311 uses flowspec-l3vpn-rd;
312 uses flowspec-destination-group-ipv6;
316 augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-reach-nlri/bgp-mp:advertized-routes/bgp-mp:destination-type" {
317 case destination-flowspec-case {
318 uses flowspec-destination-ipv4;
320 case destination-flowspec-ipv6-case {
321 uses flowspec-destination-ipv6;
323 case destination-flowspec-l3vpn-ipv4-case {
324 uses flowspec-l3vpn-destination-ipv4;
326 case destination-flowspec-l3vpn-ipv6-case {
327 uses flowspec-l3vpn-destination-ipv6;
331 augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-unreach-nlri/bgp-mp:withdrawn-routes/bgp-mp:destination-type" {
332 case destination-flowspec-case {
333 uses flowspec-destination-ipv4;
335 case destination-flowspec-ipv6-case {
336 uses flowspec-destination-ipv6;
338 case destination-flowspec-l3vpn-ipv4-case {
339 uses flowspec-l3vpn-destination-ipv4;
341 case destination-flowspec-l3vpn-ipv6-case {
342 uses flowspec-l3vpn-destination-ipv6;
346 grouping traffic-rate-extended-community {
347 container traffic-rate-extended-community {
348 leaf informative-as {
349 type bgp-t:short-as-number;
351 leaf local-administrator {
357 grouping traffic-action-extended-community {
358 container traffic-action-extended-community {
363 leaf terminal-action {
370 grouping redirect-extended-community {
371 container redirect-extended-community {
372 leaf global-administrator {
373 type bgp-t:short-as-number;
375 leaf local-administrator {
383 grouping redirect-ipv4-extended-community {
384 reference "http://tools.ietf.org/html/rfc7674";
385 container redirect-ipv4 {
386 uses bgp-t:route-ipv4-extended-community;
390 grouping redirect-ipv6-extended-community {
391 container redirect-ipv6 {
392 leaf global-administrator {
393 type inet:ipv6-address;
395 leaf local-administrator {
401 grouping redirect-as4-extended-community {
402 reference "http://tools.ietf.org/html/rfc7674";
403 container redirect-as4 {
404 leaf global-administrator {
407 leaf local-administrator {
413 grouping traffic-marking-extended-community {
414 container traffic-marking-extended-community {
415 leaf global-administrator {
421 grouping redirect-ip-nh-extended-community {
422 reference "https://tools.ietf.org/html/draft-ietf-idr-flowspec-redirect-ip-02";
423 container redirect-ip-nh-extended-community {
424 leaf next-hop-address {
425 type inet:ip-address;
433 grouping bgp-rib-route {
435 augment "attributes/extended-communities/extended-community" {
436 case traffic-rate-extended-community-case {
437 uses traffic-rate-extended-community;
439 case traffic-action-extended-community-case {
440 uses traffic-action-extended-community;
442 case redirect-extended-community-case {
443 uses redirect-extended-community;
445 case traffic-marking-extended-community-case {
446 uses traffic-marking-extended-community;
448 case redirect-ipv4-extended-community-case {
449 uses redirect-ipv4-extended-community;
451 case redirect-ipv6-extended-community-case {
452 uses redirect-ipv6-extended-community;
454 case redirect-as4-extended-community-case {
455 uses redirect-as4-extended-community;
457 case redirect-ip-nh-extended-community-case {
458 uses redirect-ip-nh-extended-community;
464 grouping flowspec-ipv4-route {
465 list flowspec-route {
468 "The sole function of this leaf
469 to act as the key in the list.
470 Its format does not form the
471 API contract of this model.";
474 key "route-key path-id";
476 uses flowspec-destination-group-ipv4;
482 grouping flowspec-ipv6-route {
483 list flowspec-route {
486 "The sole function of this leaf
487 to act as the key in the list.
488 Its format does not form the
489 API contract of this model.";
492 key "route-key path-id";
494 uses flowspec-destination-group-ipv6;
500 grouping flowspec-routes {
501 container flowspec-routes {
502 uses flowspec-ipv4-route;
506 grouping flowspec-ipv6-routes {
507 container flowspec-ipv6-routes {
508 uses flowspec-ipv6-route;
512 grouping flowspec-l3vpn-ipv4-routes {
513 container flowspec-l3vpn-ipv4-routes {
514 uses flowspec-ipv4-route {
515 augment "flowspec-route" {
516 uses flowspec-l3vpn-rd;
522 grouping flowspec-l3vpn-ipv6-routes {
523 container flowspec-l3vpn-ipv6-routes {
524 uses flowspec-ipv6-route {
525 augment "flowspec-route" {
526 uses flowspec-l3vpn-rd;
532 augment "/bgp-msg:update/bgp-msg:attributes/bgp-msg:extended-communities/bgp-msg:extended-community" {
533 reference "https://tools.ietf.org/html/rfc5575#section-7";
534 case traffic-rate-extended-community-case {
535 uses traffic-rate-extended-community;
537 case traffic-action-extended-community-case {
538 uses traffic-action-extended-community;
540 case redirect-extended-community-case {
541 uses redirect-extended-community;
543 case traffic-marking-extended-community-case {
544 uses traffic-marking-extended-community;
546 case redirect-ipv4-extended-community-case {
547 uses redirect-ipv4-extended-community;
549 case redirect-ipv6-extended-community-case {
550 uses redirect-ipv6-extended-community;
552 case redirect-as4-extended-community-case {
553 uses redirect-as4-extended-community;
555 case redirect-ip-nh-extended-community-case {
556 uses redirect-ip-nh-extended-community;
560 augment "/bgp-rib:application-rib/bgp-rib:tables/bgp-rib:routes" {
561 case flowspec-routes-case {
562 uses flowspec-routes;
564 case flowspec-ipv6-routes-case {
565 uses flowspec-ipv6-routes;
567 case flowspec-l3vpn-ipv4-routes-case {
568 uses flowspec-l3vpn-ipv4-routes;
570 case flowspec-l3vpn-ipv6-routes-case {
571 uses flowspec-l3vpn-ipv6-routes;
575 augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:loc-rib/bgp-rib:tables/bgp-rib:routes" {
576 case flowspec-routes-case {
577 uses flowspec-routes;
579 case flowspec-ipv6-routes-case {
580 uses flowspec-ipv6-routes;
582 case flowspec-l3vpn-ipv4-routes-case {
583 uses flowspec-l3vpn-ipv4-routes;
585 case flowspec-l3vpn-ipv6-routes-case {
586 uses flowspec-l3vpn-ipv6-routes;
590 augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-in/bgp-rib:tables/bgp-rib:routes" {
591 case flowspec-routes-case {
592 uses flowspec-routes;
594 case flowspec-ipv6-routes-case {
595 uses flowspec-ipv6-routes;
597 case flowspec-l3vpn-ipv4-routes-case {
598 uses flowspec-l3vpn-ipv4-routes;
600 case flowspec-l3vpn-ipv6-routes-case {
601 uses flowspec-l3vpn-ipv6-routes;
605 augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:effective-rib-in/bgp-rib:tables/bgp-rib:routes" {
606 case flowspec-routes-case {
607 uses flowspec-routes;
609 case flowspec-ipv6-routes-case {
610 uses flowspec-ipv6-routes;
612 case flowspec-l3vpn-ipv4-routes-case {
613 uses flowspec-l3vpn-ipv4-routes;
615 case flowspec-l3vpn-ipv6-routes-case {
616 uses flowspec-l3vpn-ipv6-routes;
620 augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-out/bgp-rib:tables/bgp-rib:routes" {
621 case flowspec-routes-case {
622 uses flowspec-routes;
624 case flowspec-ipv6-routes-case {
625 uses flowspec-ipv6-routes;
627 case flowspec-l3vpn-ipv4-routes-case {
628 uses flowspec-l3vpn-ipv4-routes;
630 case flowspec-l3vpn-ipv6-routes-case {
631 uses flowspec-l3vpn-ipv6-routes;
635 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" {
636 case flowspec-routes-case {
637 uses flowspec-routes;
639 case flowspec-ipv6-routes-case {
640 uses flowspec-ipv6-routes;
642 case flowspec-l3vpn-ipv4-routes-case {
643 uses flowspec-l3vpn-ipv4-routes;
645 case flowspec-l3vpn-ipv6-routes-case {
646 uses flowspec-l3vpn-ipv6-routes;
650 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" {
651 case flowspec-routes-case {
652 uses flowspec-routes;
654 case flowspec-ipv6-routes-case {
655 uses flowspec-ipv6-routes;
657 case flowspec-l3vpn-ipv4-routes-case {
658 uses flowspec-l3vpn-ipv4-routes;
660 case flowspec-l3vpn-ipv6-routes-case {
661 uses flowspec-l3vpn-ipv6-routes;