ietf-ethernet-segment

This YANG module defines a model for Ethernet Segments. Copyright (c) 2022 IETF Trust and the persons identified as authors of ...

  • Version: 2022-09-20

    ietf-ethernet-segment@2022-09-20


    
      module ietf-ethernet-segment {
    
        yang-version 1.1;
    
        namespace
          "urn:ietf:params:xml:ns:yang:ietf-ethernet-segment";
    
        prefix l2vpn-es;
    
        import ietf-yang-types {
          prefix yang;
          reference
            "RFC 6991: Common YANG Data Types (see Section 3)";
    
    
        }
    
        organization
          "IETF OPSA (Operations and Management Area) Working Group";
    
        contact
          "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
    WG List:  <mailto:opsawg@ietf.org>
    
    Editor:    Mohamed Boucadair
    	  <mailto:mohamed.boucadair@orange.com>
    
    Editor:    Samier Barguil
    	  <mailto:samier.barguilgiraldo.ext@telefonica.com>
    
    Author:    Oscar Gonzalez de Dios
    	  <mailto:oscar.gonzalezdedios@telefonica.com>";
    
        description
          "This YANG module defines a model for Ethernet Segments.
    
    Copyright (c) 2022 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.
    
    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject
    to the license terms contained in, the Revised BSD License
    set forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents
    (https://trustee.ietf.org/license-info).
    
    This version of this YANG module is part of RFC 9291; see
    the RFC itself for full legal notices.";
    
        revision "2022-09-20" {
          description "Initial version.";
          reference
            "RFC 9291: A YANG Network Data Model for Layer 2 VPNs.";
    
        }
    
    
        typedef es-ref {
          type leafref {
            path "/l2vpn-es:ethernet-segments/l2vpn-es:ethernet-segment/l2vpn-es:name";
          }
          description
            "Defines a type for referencing an Ethernet segment in
    other modules.";
        }
    
        identity esi-type {
          description
            "T (Ethernet Segment Identifier (ESI) Type) is a 1-octet field
    (most significant octet) that specifies the format of the
    remaining 9 octets (ESI Value).";
          reference
            "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 5";
    
        }
    
        identity esi-type-0-operator {
          base esi-type;
          description
            "This type indicates an arbitrary 9-octet ESI value,
    which is managed and configured by the operator.";
        }
    
        identity esi-type-1-lacp {
          base esi-type;
          description
            "When the IEEE 802.1AX Link Aggregation Control Protocol (LACP)
    is used between the Provider Edge (PE) and Customer Edge (CE)
    devices, this ESI type indicates an auto-generated ESI value
    determined from LACP.";
          reference
            "IEEE Std 802.1AX: Link Aggregation";
    
        }
    
        identity esi-type-2-bridge {
          base esi-type;
          description
            "The ESI value is auto-generated and determined based
    on the Layer 2 bridge protocol.";
        }
    
        identity esi-type-3-mac {
          base esi-type;
          description
            "This type indicates a MAC-based ESI value that can be
    auto-generated or configured by the operator.";
        }
    
        identity esi-type-4-router-id {
          base esi-type;
          description
            "This type indicates a Router ID ESI value that can be
    auto-generated or configured by the operator.";
        }
    
        identity esi-type-5-asn {
          base esi-type;
          description
            "This type indicates an Autonomous System (AS)-based ESI value
    that can be auto-generated or configured by the operator.";
        }
    
        identity df-election-methods {
          description
            "Base Identity Designated Forwarder (DF) election method.";
        }
    
        identity default-7432 {
          base df-election-methods;
          description
            "The default DF election method.
    
    The default procedure for DF election at the granularity of
    <ES,VLAN> for VLAN-based service or <ES, VLAN bundle> for
    VLAN-(aware) bundle service is referred to as
    'service carving'.";
          reference
            "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 8.5";
    
        }
    
        identity highest-random-weight {
          base df-election-methods;
          description
            "The highest random weight (HRW) method.";
          reference
            "RFC 8584: Framework for Ethernet VPN Designated
            	  Forwarder Election Extensibility, Section 3";
    
        }
    
        identity preference {
          base df-election-methods;
          description
            "The preference-based method.  PEs are assigned with
    preferences to become the DF in the Ethernet Segment (ES).
    The exact preference-based algorithm (e.g., lowest-preference
    algorithm or highest-preference algorithm) to use is
    signaled at the control plane.";
        }
    
        identity es-redundancy-mode {
          description
            "Base identity for ES redundancy modes.";
        }
    
        identity single-active {
          base es-redundancy-mode;
          description
            "Indicates Single-Active redundancy mode for a given ES.";
          reference
            "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 14.1.1";
    
        }
    
        identity all-active {
          base es-redundancy-mode;
          description
            "Indicates All-Active redundancy mode for a given ES.";
          reference
            "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 14.1.2";
    
        }
    
        container ethernet-segments {
          description
            "Top container for the Ethernet Segment Identifier (ESI).";
          list ethernet-segment {
            key "name";
            description "Top list for ESIs.";
            leaf name {
              type string;
              description
                "Includes the name of the Ethernet Segment (ES) that
    is used to unambiguously identify an ES.";
            }
    
            leaf esi-type {
              type identityref {
                base esi-type;
              }
              default "esi-type-0-operator";
              description
                "T-(ESI Type) is a 1-octet field (most significant
    octet) that specifies the format of the remaining
    9 octets (ESI Value).";
              reference
                "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 5";
    
            }
    
            choice esi-choice {
              description
                "Ethernet segment choice between several types.
    For ESI Type 0: The esi is directly configured by the
    		operator.
    For ESI Type 1: The auto-mode must be used.
    For ESI Type 2: The auto-mode must be used.
    For ESI Type 3: The directly-assigned or auto-mode must
    		be used.
    For ESI Type 4: The directly-assigned or auto-mode must
    		be used.
    For ESI Type 5: The directly-assigned or auto-mode must
    		be used.";
              case directly-assigned {
                description
                  "Explicitly assign an ESI value.";
                leaf ethernet-segment-identifier {
                  type yang:hex-string {
                    length "29";
                  }
                  description "10-octet ESI.";
                }
              }  // case directly-assigned
    
              case auto-assigned {
                description
                  "The ESI is auto-assigned.";
                container esi-auto {
                  description
                    "The ESI is auto-assigned.";
                  choice auto-mode {
                    description
                      "Indicates the auto-assignment mode.  ESI can be
    automatically assigned either with or without
    indicating a pool from which the ESI should be
    taken.
    
    For both cases, the server will auto-assign an
    ESI value 'auto-assigned-ESI' and use that value
    operationally.";
                    leaf esi-pool-name {
                      type string;
                      description
                        "The auto-assignment will be made from the
    pool identified by the ESI-pool-name.";
                    }
                    leaf auto {
                      type empty;
                      description
                        "Indicates an ESI is fully auto-assigned.";
                    }
                  }  // choice auto-mode
    
                  leaf auto-ethernet-segment-identifier {
                    type yang:hex-string {
                      length "29";
                    }
                    config false;
                    description
                      "The value of the auto-assigned ESI.";
                  }
                }  // container esi-auto
              }  // case auto-assigned
            }  // choice esi-choice
    
            leaf esi-redundancy-mode {
              type identityref {
                base es-redundancy-mode;
              }
              description
                "Indicates the ES redundancy mode.";
              reference
                "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 14.1";
    
            }
    
            container df-election {
              description
                "Top container for the DF election method properties.";
              leaf df-election-method {
                type identityref {
                  base df-election-methods;
                }
                default "default-7432";
                description
                  "Specifies the DF election method.";
                reference
                  "RFC 8584: Framework for Ethernet VPN Designated
                  	  Forwarder Election Extensibility";
    
              }
    
              leaf revertive {
                when
                  "derived-from-or-self(../df-election-method, 'preference')" {
                  description
                    "The revertive value is only applicable
    to the preference method.";
                }
                type boolean;
                default "true";
                description
                  "The default behavior is that the DF election
    procedure is triggered upon PE failures following
    configured preference values.  Such a mode is called
    the 'revertive' mode.  This mode may not be suitable in
    some scenarios where, e.g., an operator may want to
    maintain the new DF even if the former DF recovers.
    Such a mode is called the 'non-revertive' mode.
    
    The non-revertive mode can be configured by
    setting 'revertive' leaf to 'false'.";
                reference
                  "RFC 8584: Framework for Ethernet VPN Designated
                  	  Forwarder Election Extensibility,
                  	  Section 1.3.2";
    
              }
    
              leaf election-wait-time {
                type uint32;
                units "seconds";
                default "3";
                description
                  "Designated Forwarder Wait timer.";
                reference
                  "RFC 8584: Framework for Ethernet VPN Designated
                  	  Forwarder Election Extensibility";
    
              }
            }  // container df-election
    
            leaf split-horizon-filtering {
              type boolean;
              description
                "Controls split-horizon filtering.  It is enabled
    when set to 'true'.
    
    In order to achieve split-horizon filtering, every
    Broadcast, Unknown Unicast, or Multicast (BUM)
    packet originating from a non-DF PE is encapsulated
    with an MPLS label that identifies the origin ES.";
              reference
                "RFC 7432: BGP MPLS-Based Ethernet VPN, Section 8.3";
    
            }
    
            container pbb {
              description
                "Provider Backbone Bridging (PBB) parameters .";
              reference
                "IEEE 802.1ah: Provider Backbone Bridges";
    
              leaf backbone-src-mac {
                type yang:mac-address;
                description
                  "The PEs connected to the same CE must share the
    same Provider Backbone (B-MAC) address in
    All-Active mode.";
                reference
                  "RFC 7623: Provider Backbone Bridging Combined with
                  	  Ethernet VPN (PBB-EVPN), Section 6.2.1.1";
    
              }
            }  // container pbb
    
            list member {
              key "ne-id interface-id";
              description
                "Includes a list of ES members.";
              leaf ne-id {
                type string;
                description
                  "An identifier of the network element where the ES
    is configured within a service provider network.";
              }
    
              leaf interface-id {
                type string;
                description
                  "Identifier of a node interface.";
              }
            }  // list member
          }  // list ethernet-segment
        }  // container ethernet-segments
      }  // module ietf-ethernet-segment
    

© 2023 YumaWorks, Inc. All rights reserved.