diff options
Diffstat (limited to 'tools/yang/bgp-multiprotocol.yang')
-rw-r--r-- | tools/yang/bgp-multiprotocol.yang | 400 |
1 files changed, 0 insertions, 400 deletions
diff --git a/tools/yang/bgp-multiprotocol.yang b/tools/yang/bgp-multiprotocol.yang deleted file mode 100644 index 2b0a0b29..00000000 --- a/tools/yang/bgp-multiprotocol.yang +++ /dev/null @@ -1,400 +0,0 @@ - module bgp-multiprotocol {
-
- yang-version "1";
-
- // namespace
- // TODO: change to an ietf or other more generic namespace
- namespace "http://google.com/yang/google-bgp-multiprotocol-cfg";
-
- prefix "bgp-mp";
-
- // import some basic inet types
- import ietf-inet-types { prefix inet; }
- import bgp-policy { prefix bgp-pol; }
- import bgp-operational { prefix bgp-op; }
-
- // meta
- organization
- "Google, AT&T, BT, Microsoft";
-
- contact
- "Google, Inc.
- 1600 Amphitheatre Way
- Mountain View, CA 94043
-
- AT&T Labs
- 200 S. Laurel Avenue
- Middletown, NJ 07748
-
- BT
- pp. C3L, BT Centre
- 81, Newgate Street
- London EC1A 7AJ
- UK
-
- Microsoft
- 205 108th Ave. NE, Suite 400
- Bellevue, WA 98004";
-
- description
- "This module is part of a YANG model for BGP protocol
- configuration, focusing on configuration of multiprotocol
- BGP, in particular various relevant address families (AFI) and
- sub-address families (SAFI).
- Identities (rather than enumerated types) are used to identify
- each AFI / SAFI type to make it easier for users to extend to
- pre-standard or custom AFI/SAFI types. This module is only
- intended to capture the most";
-
- revision "2014-10-13" {
- description
- "Initial revision";
- reference "TBD";
- }
-
- // extension statements
-
- // feature statements
-
- // identity statements
-
- identity afi-type {
- description
- "base identity type for BGP address family identifiers (AFI)";
- reference "RFC 4760 - Multiprotocol Extensions for BGP-4";
- }
-
- identity safi-type {
- description
- "base identity type for BGP subsequent address family
- identifiers (SAFI)";
- reference "RFC 4760 - Multiprotocol Extensions for BGP-4";
- }
-
- identity ipv4-afi {
- base bgp-mp:afi-type;
- description
- "IPv4 AF identifier (AFI = 1)";
- }
-
- identity ipv6-afi {
- base bgp-mp:afi-type;
- description
- "IPv6 AF identifier (AFI = 2)";
- }
-
- identity unicast-safi {
- base bgp-mp:safi-type;
- description
- "unicast SAFI identifier (SAFI = 1)";
- }
- identity l3vpn-unicast-safi {
- base safi-type;
- description
- "L3 / MPLS virtual private networks SAFI (SAFI = 128/129)";
- reference "RFC 4364 - BGP/MPLS IP Virtual Private Networks
- (VPNs)";
- }
-
- identity labeled-unicast-safi {
- base safi-type;
- description
- "labeled unicast SAFI identifier (SAFI = 4)";
- reference "RFC 3107 - Carrying Label Information in BGP-4";
- }
-
- identity l2vpn-vpls-afi {
- base afi-type;
- description
- "AFI for BGP L2 VPN / VPLS (AFI = 25)";
- reference "RFC 4761 - Virtual Private LAN Service (VPLS)
- Using BGP for Auto-Discovery and Signaling";
- }
-
- identity l2vpn-vpls-safi {
- base safi-type;
- description
- "BGP L2 VPN / VPLS service SAFI (SAFI = 65)";
- }
-
- identity multicast-safi {
- base safi-type;
- description
- "multicast SAFI (SAFI = 2)";
- reference "RFC 4760 - Multiprotocol Extensions for BGP-4";
- }
-
- identity multicast-vpn-safi {
- base safi-type;
- description
- "Multicast VPN SAFI (SAFI = 5)";
- reference "RFC 6514 - BGP Encodings and Procedures for Multicast
- in MPLS/BGP IP VPNs";
- }
-
- // typedef statements
-
- // TODO: move this and other commonly types to a common bgp-types
- // module
- typedef percentage {
- type uint8 {
- range "0..100";
- }
- description
- "Integer indicating a percentage value";
- }
-
- // grouping statements
-
- grouping address-family-common {
- description
- "Configuration that is for the address family level,
- but applies across AFI/SAFI";
-
- container prefix-limit {
- description
- "Configure the maximum number of prefixes that will be
- accepted from a peer.";
-
- leaf max-prefixes {
- type uint32;
- description
- "Maximum number of prefixes that will be accepted from
- the neighbor.";
- }
-
- leaf shutdown-threshold-pct {
- type percentage;
- description
- "Threshold on number of prefixes that can be received
- from a neighbor before generation of warning messages
- or log entries. Expressed as a percentage of
- max-prefixes.";
- }
-
- leaf restart-timer {
- type decimal64 {
- fraction-digits 2;
- }
- units "seconds";
- description
- "Time interval in seconds after which the BGP session
- is reestablished after being torn down due to exceeding
- the max-prefixes limit.";
- }
- }
- // policies can be applied at a specific AF level
- uses bgp-pol:apply-policy-group;
-
- }
-
- grouping ipv4-ipv6-unicast-common {
- description
- "common configuration for base ipv4 and ipv6 unicast; may
- need to be split into separate containers for each of ipv4
- and ipv6";
-
- container ipv4-ipv6-unicast {
- // YANG uses XPath 1.0 expression syntax
- when "(../../afi-name = 'ipv4-afi' or " +
- "../../afi-name = 'ipv6-afi') " +
- "and ../safi-name = 'unicast-safi'" {
- description
- "Include this container for unicast ipv4 or ipv6
- AFI-specific configuration";
- }
- description "ipv4 unicast config items";
-
- leaf send-default-route {
- // TODO: consider moving this to policy
- type boolean;
- default "false";
- description "if set to true, send the default route, i.e.,
- 0.0.0.0/0 to the neighbor(s)";
- }
- }
- }
-
- grouping ipv4-l3vpn-unicast-group {
- description
- "configuration group for L3 VPN VRFs for IPv4";
-
- container ipv4-l3vpn-unicast {
- when "../../afi-name = 'bgp-mp:ipv4-afi' and " +
- "../safi-name = 'l3vpn-unicast-safi'" {
- description
- "Include this container when AFI = ipv4 and
- SAFI = l3vpn-unicast";
- }
- description "ipv4 l3vpn config items";
- list vrfs {
- key name;
- description "list of configured VRFs";
-
- leaf name {
- type string;
- description "name / identifier of the VRF";
- }
-
- leaf route-distinguisher {
- // TODO: consider expanding to a union type to make it more
- // convenient to express as AS:addr or other common formats
- type uint64;
- description
- "route distinguisher value assigned to this VRF";
- }
-
- uses bgp-pol:apply-policy-group;
-
- /* additional leafs to consider --- should these be in BGP?
- interface-name
- retain-local-label-size
- advertise-best-external
- no-synchronization
- */
-
- }
- }
- }
-
- grouping ipv6-l3vpn-unicast-group {
- description
- "configuration group for L3 VPN VRFs for IPv6";
-
- container ipv6-l3vpn-unicast {
- when "../../afi-name = 'bgp-mp:ipv6-afi' and " +
- "../safi-name = 'l3vpn-unicast-safi'" {
- description
- "Include this container only when AFI = ipv6 and
- SAFI = l3vpn-unicast";
- }
- description "ipv6 l3vpn config items";
- }
- }
-
- grouping ipv4-labeled-unicast-group {
- description
- "configuration group for IPv4 labeled unicast";
- container ipv4-labeled-unicast {
- when "../../afi-name = 'ipv4-afi' and " +
- "../safi-name = 'labeled-unicast-safi'" {
- description
- "Include this container when AFI = ipv4 and
- SAFI = labeled-unicast";
- }
- description "ipv4 labeled unicast config items";
- }
- }
-
- grouping l2vpn-group {
- description
- "configuration group for L2 VPN";
-
- container l2vpn {
- // TODO: confirm that both AFI/SAFI values are set
- // for L2 VPNs
- when "../../afi-name = 'l2vpn-vpls-afi' and " +
- "../safi-name = 'l2vpn-vpls-safi'" {
- description
- "Include this container when AFI = l2vpn-vpls and
- SAFI = l2vpn-vpls";
- }
- description "l2vpn config items";
- }
- }
-
- grouping ipv4-multicast-vpn-group {
- description
- "configuration group for IPv4 multicast VPNs";
-
- container ipv4-multicast-vpn {
- when "../../afi-name = 'ipv4-afi' and " +
- "../safi-name = 'multicast-vpn-safi'" {
- description
- "Include this container when AFI = ipv4 and
- SAFI = multicast-vpn";
- }
- description "ipv4 multicast vpn config items";
- }
- }
-
- grouping ipv6-multicast-vpn-group {
- description
- "configuration group for IPv6 multicast VPNs";
-
- container ipv6-multicast-vpn {
- when "../../afi-name = 'ipv6-afi' and " +
- "../safi-name = 'multicast-vpn-safi'" {
- description
- "Include this container when AFI = ipv6 and
- SAFI = multicast-vpn";
- }
- description "ipv6 multicast vpn config items";
- }
- }
-
- grouping address-family-configuration {
- description "Configuration options that are applied at the
- address family level.";
-
- list afi {
-
- key "afi-name";
- description
- "Per address-family configuration, uniquely identified by AF
- name.";
- leaf afi-name {
- type identityref {
- base "afi-type";
- }
- description
- "Address family names are drawn from the afi-type base
- identity, which has specific address family types as
- derived identities.";
- }
-
- list safi {
- key "safi-name";
- description
- "Per subsequent address family configuration, under a
- specific address family.";
-
- leaf safi-name {
- type identityref {
- base "safi-type";
- }
- description
- "Within each address family, subsequent address family
- names are drawn from the subsequent-address-family base
- identity.";
- }
-
- // these grouping references conditionally add config nodes
- // that are specific to each AFI / SAFI combination
- uses ipv4-ipv6-unicast-common;
- uses ipv4-l3vpn-unicast-group;
- uses ipv6-l3vpn-unicast-group;
- uses ipv4-labeled-unicast-group;
- uses l2vpn-group;
- uses ipv4-multicast-vpn-group;
- uses ipv6-multicast-vpn-group;
-
- // this grouping pulls in the config items common across
- // AF/SAFI combinations
- uses address-family-common;
-
- }
- // operational state common acrossr address families
- uses bgp-op:bgp-op-af-group;
- }
- }
-
- // data definition statements
-
- // augment statements
-
- // rpc statements
-
- // notification statements
-
- }
\ No newline at end of file |