-- ----------------------------------------------------------------------------
--
--  SIAE MICROELETTRONICA s.p.a.
--                 
--  Via Michelangelo Buonarroti, 21
--  20093 - Cologno Monzese
--  Milano 
--  ITALY
--
-- ----------------------------------------------------------------------------
-- ----------------------------------------------------------------------------

    SIAE-AGGRL1-MANAGEMENT-MIB  
        DEFINITIONS ::= BEGIN

        IMPORTS
             MODULE-IDENTITY, OBJECT-TYPE,
             Integer32, IpAddress
        FROM SNMPv2-SMI
             InterfaceIndexOrZero
        FROM IF-MIB
             RowStatus, StorageType,
             TEXTUAL-CONVENTION
        FROM SNMPv2-TC
             siaeMib
        FROM SIAE-TREE-MIB
             AlarmStatus, AlarmSeverityCode
        FROM SIAE-ALARM-MIB;

    aggregationL1 MODULE-IDENTITY
        LAST-UPDATED "201610180000Z"
        ORGANIZATION "SIAE MICROELETTRONICA spa"
        CONTACT-INFO
            "SIAE MICROELETTONICA s.p.a.
             Via Michelangelo Buonarroti, 21
             20093 - Cologno Monzese
             Milano - ITALY
             Phone :  +39-02-27325-1
             E-mail: tbd@siaemic.com
            "
        DESCRIPTION
            "Level 1 aggregations management for SIAE equipments.
            "
        REVISION "201610180000Z"
        DESCRIPTION 
            "MIB version 01.00.02.
             - Added aggrL1CarrierTable
            "
        REVISION "201409290000Z"
        DESCRIPTION 
            "MIB version 01.00.01.
             - Added table aggrL1ConnectionTable.
             - Added TEXTUAL-CONVENTION AggregableType
             - Revised document form.
            "
        REVISION "201405260000Z"
        DESCRIPTION 
            "Initial version 01.00.00.
            "
    ::= { siaeMib 83 }

------------------------------------------------------------------------------
--  Level 1 aggregation GROUP
------------------------------------------------------------------------------
--
--   Aggregators    HW aggregator       Aggregables (carrier)
--                                      Radios (or LAN connectors)
--
--   +--------+      +----------------+      +--------+
--   | if.A   | ---- |+ -+- + - - - ->| ---- | ODU.A  | (or LAN.A)
--   +--------+      | \  \  \        |      +--------+
--                   |  \  \  \       |
--   +--------+      |   \  \  \      |      +--------+
--   | if.B   | ---- |- - - - - + - ->| ---- | ODU.B  | (or LAN.B)
--   +--------+      |     \  \       |      +--------+
--                   |      \  \      |
--   +--------+      |       \  \     |      +--------+
--   | if.C   | ---- |- - - - - -+- ->| ---- | ODU.C  | (or LAN.C)
--   +--------+      | \       \      |      +--------+
--                   |  \       \     |
--   +--------+      |   \       \    |      +--------+
--   | if.D   | ---- |- - + - - - + ->| ---- | ODU.D  | (or LAN.D)
--   +--------+      |                |      +--------+
--                   +----------------+
--
--                    Figure 1
--
--   L1 aggregator combines (aggregates) multiple network connections in
--   parallel in order to increase throughput beyond what a single connection
--   could sustain.
--
--   HW aggregator block realize this function. In the example show in Figure 1
--   the HW aggregator block allows to realize up 2 aggregation:
--     - if.A can send traffic to all ODUs
--     - if.C can send traffic to ODU.C and ODU.D 
--
--   Table aggrL1CapabilityTable shows the capabilities of the HW aggregator
--   block:
--
--   Table aggrL1Table allows the managers to create aggregations compliant
--   with the capabilities explained in aggrL1CapabilityTable. Rows with equal
--   aggrL1AggregatorIndex make an aggregation.
--
--   Table aggrL1ConnectionTable shows which aggregator send traffic to the
--   specific Aggregable. This table take in account also radio configuration
--   1+1, for example, if ODU.A and ODU.B are combined in a 1+1 configuration,
--   this table shows that if.A sends (the same) traffic to both ODU.A and
--   ODU.B.
--
--   Table aggrL1CarrierTable shows information related to the agggregation 
--   carrier connected through a LAN connector.
--
--   Table aggrL1AlarmTable reports alarms for each aggregator used as a
--   traffic source of an aggregation.
--
------------------------------------------------------------------------------

------ Beginning -------------------------------------------------------------

    -- Textual Conventions

    AggregableType ::= TEXTUAL-CONVENTION
        STATUS          current
        DESCRIPTION
            "Type of aggregable interface"
        SYNTAX          INTEGER  {
                                   other  (1),
                                   radio  (2),
                                   lan    (3)
                                 }
    -- MIB objects

    aggrL1MibVersion OBJECT-TYPE
        SYNTAX      INTEGER
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Numerical version of this module.
             The string version of this MIB have the following format:
                XX.YY.ZZ
             so, for example, the value 1 should be interpreted as 00.00.01
             and the value 10001 should be interpreted as 01.00.01."
    ::= {aggregationL1 1}
    
-------  Begin of aggrL1CapabilityTable
--
    aggrL1CapabilityTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF  AggrL1CapabilityEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A list of capability entries to show the manager all the 
            possible L1 aggregations."
    ::= {aggregationL1 2}
    
    aggrL1CapabilityEntry OBJECT-TYPE
        SYNTAX      AggrL1CapabilityEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An entry showing the manager the aggregator and the aggregable
             interfaces that can be involved in L1 aggregations."
        INDEX       {aggrL1CapabilityAggregableIndex,
                     aggrL1CapabilityAggregableType,
                     aggrL1CapabilityAggregatorIndex
                    }
    ::= {aggrL1CapabilityTable 1}

    AggrL1CapabilityEntry  ::=
        SEQUENCE  {
            aggrL1CapabilityAggregableIndex  Integer32,
            aggrL1CapabilityAggregableType   AggregableType,
            aggrL1CapabilityAggregatorIndex  InterfaceIndexOrZero
            }
       
    aggrL1CapabilityAggregableIndex OBJECT-TYPE
        SYNTAX      Integer32
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
           "This object defines the aggregable physical interface that can be used 
            in a L1 aggregation. If the interface is a radio, this object matches 
            the index in radioTable, otherwise this object corresponds to the 
            ifIndex in ifTable."
    ::= {aggrL1CapabilityEntry 1}
    
    aggrL1CapabilityAggregableType  OBJECT-TYPE
        SYNTAX      AggregableType
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "L1 aggregable interface type. 
            "
    ::= {aggrL1CapabilityEntry 2}
    
    aggrL1CapabilityAggregatorIndex OBJECT-TYPE
        SYNTAX      InterfaceIndexOrZero
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
           "This object defines the ifIndex of each aggregator physical
            interface that can be used as source of a L1 aggregation."
    ::= {aggrL1CapabilityEntry 3}
     
--
-------  End of aggrL1CapabilityTable

-------  Begin of aggrL1Table
--
    aggrL1Table OBJECT-TYPE
        SYNTAX      SEQUENCE OF  AggrL1Entry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A list of L1 aggregation entries."
    ::= {aggregationL1 3}
    
    aggrL1Entry OBJECT-TYPE
        SYNTAX      AggrL1Entry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An entry containing management information applicable to a L1
             aggregation. Rows with the same aggrL1AggregatorIndex share 
             ethernet traffic and made up a L1 aggregation."
             
        INDEX       {aggrL1AggregableIndex,
                     aggrL1AggregableType
                    }
    ::= {aggrL1Table 1}

    AggrL1Entry  ::=
        SEQUENCE  {aggrL1AggregableIndex  Integer32,
                   aggrL1AggregableType   AggregableType,
                   aggrL1AggregatorIndex  InterfaceIndexOrZero,
                   aggrL1StorageType      StorageType,
                   aggrL1Rowstatus        RowStatus
                  }
            
    aggrL1AggregableIndex OBJECT-TYPE
        SYNTAX      Integer32
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
           "This object defines the aggregable physical interface used in a given 
            L1 aggregation. If the interface is a radio, this object matches 
            the index in radioTable, otherwise, this object corresponds to the 
            ifIndex in ifTable. It must correspond to a valid aggregable interface
            in aggrL1CapabilityTable."
    ::= {aggrL1Entry 1}
    
    aggrL1AggregableType    OBJECT-TYPE
        SYNTAX      AggregableType
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Interface type of the respective aggregable L1 interface."
    ::= {aggrL1Entry 2}
    
    aggrL1AggregatorIndex OBJECT-TYPE
        SYNTAX      InterfaceIndexOrZero
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
           "This object defines the ifIndex of the physical interface 
            used as source of a given L1 aggregation. It must correspond to a
            valid aggregator interface in aggrL1CapabilityTable."
    ::= {aggrL1Entry 3}
    
    aggrL1StorageType OBJECT-TYPE
    SYNTAX       StorageType
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The storage type for this conceptual row."
    ::= {aggrL1Entry 4}
    
    aggrL1Rowstatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
           "Status of this conceptual row in aggrL1Table."
    ::= {aggrL1Entry 5}
   
   -- 
   -------  End of aggrL1Table
   
   -------  Begin of aggrL1AlarmTable
   --
   aggrL1AlarmTable  OBJECT-TYPE
        SYNTAX      SEQUENCE OF AggrL1AlarmEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Table with alarms related to L1 aggregations. NE agent adds an entry 
             in this table when at least two aggregable interfaces (in aggrL1Table) are
             connected to the same aggregator interface. NE agent removes an entry in 
             this table when a L1 aggregation made up of more than one aggregable 
             interfaces is modified in a L1 aggregation composed by one or less 
             aggregable interfaces."
    ::= {aggregationL1 4}

    aggrL1AlarmEntry  OBJECT-TYPE
        SYNTAX      AggrL1AlarmEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "AggrL1Alarm entry."
        INDEX       {aggrL1AlarmAggregatorIndex}
    ::= {aggrL1AlarmTable 1}

   AggrL1AlarmEntry  ::=
        SEQUENCE {   
            aggrL1AlarmAggregatorIndex  InterfaceIndexOrZero, 
            aggrL1FailAlarm             AlarmStatus,
            aggrL1DegradeAlarm          AlarmStatus,
            aggrL1RealignmentAlarm      AlarmStatus            
        }
   
  aggrL1AlarmAggregatorIndex OBJECT-TYPE
        SYNTAX      InterfaceIndexOrZero
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
           "This object defines the ifIndex of the physical interface 
            used as source of a given L1 aggregation."
    ::= {aggrL1AlarmEntry 1}
        
   aggrL1FailAlarm  OBJECT-TYPE
        SYNTAX      AlarmStatus
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "L1 Aggregation Fail Alarm with associated severity."
    ::= {aggrL1AlarmEntry 2}
   
   aggrL1DegradeAlarm  OBJECT-TYPE
        SYNTAX      AlarmStatus
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "L1 Aggregation Degrade Alarm with associated severity."
    ::= {aggrL1AlarmEntry 3}
    
   aggrL1RealignmentAlarm  OBJECT-TYPE
        SYNTAX      AlarmStatus
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "L1 Aggregation Realignment Alarm with associated severity."
    ::= {aggrL1AlarmEntry 4}
    
   -- 
   -------  End of aggrL1AlarmTable
     
   aggrL1FailAlarmSeverityCode  OBJECT-TYPE
        SYNTAX      AlarmSeverityCode
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "Defines the severity associated to the L1 aggregation fail alarm
             and enables/disables the trap generation on status change event."
        DEFVAL {majorTrapEnable}
    ::= {aggregationL1 5}
    
    aggrL1DegradeAlarmSeverityCode  OBJECT-TYPE
        SYNTAX      AlarmSeverityCode
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "Defines the severity associated to the L1 aggregation degrade alarm
             and enables/disables the trap generation on status change event."
        DEFVAL {majorTrapEnable}
    ::= {aggregationL1 6}
    
      aggrL1RealignmentAlarmSeverityCode  OBJECT-TYPE
        SYNTAX      AlarmSeverityCode
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "Defines the severity associated to the L1 aggregation realignment alarm
             and enables/disables the trap generation on status change event."
        DEFVAL {majorTrapEnable}
    ::= {aggregationL1 7}

   -------  Begin of aggrL1ConnectionTable
   --
    aggrL1ConnectionTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF  AggrL1ConnectionEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A list of associations between aggregables and traffic source."
    ::= {aggregationL1 8}
    
    aggrL1ConnectionEntry OBJECT-TYPE
        SYNTAX      AggrL1ConnectionEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An entry containing an associations between aggregable radios and
             traffic source. Rows with the same aggrL1ConnAggregatorIndex
             identifies aggregable radios that are connected to the same traffic
             source. In the 1+1 radio configuration, traffic is the same on
             each aggregable radio, in other radio configurations, traffic is
             shared between each aggregable radio."
             
        INDEX       {aggrL1ConnAggregableIndex,
                     aggrL1ConnAggregableType
                    }
    ::= {aggrL1ConnectionTable 1}

    AggrL1ConnectionEntry  ::=
        SEQUENCE  {aggrL1ConnAggregableIndex  Integer32,
                   aggrL1ConnAggregableType   AggregableType,
                   aggrL1ConnAggregatorIndex  InterfaceIndexOrZero
                  }
            
    aggrL1ConnAggregableIndex OBJECT-TYPE
        SYNTAX      Integer32
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
           "This object defines the aggregable physical interface used in a
            given  L1 aggregation (or radio protection). If the interface is a
            radio, this object matches the index in radioTable, otherwise,
            this object corresponds to the  ifIndex in ifTable.
            It must correspond to a valid aggregable interface in
            aggrL1CapabilityTable."
    ::= {aggrL1ConnectionEntry 1}
    
    aggrL1ConnAggregableType    OBJECT-TYPE
        SYNTAX      AggregableType
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Interface type of the respective aggregable L1 interface."
    ::= {aggrL1ConnectionEntry 2}
    
    aggrL1ConnAggregatorIndex OBJECT-TYPE
        SYNTAX      InterfaceIndexOrZero
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
           "This object defines the ifIndex of the physical interface 
            used as source of a given L1 aggregation. It must correspond to a
            valid aggregator interface in aggrL1CapabilityTable."
    ::= {aggrL1ConnectionEntry 3}

   -- 
   -------  End of aggrL1ConnectionTable

   -------  Begin of aggrL1CarrierTable
   --
    aggrL1CarrierTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF  AggrL1CarrierEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "This table shows the information about the aggregation carrier 
             connected through a LAN connector. In this table every entry must
             have the index aggrL1ConnAggregableType equal to lan(3)"
    ::= {aggregationL1 9}
    
    aggrL1CarrierEntry OBJECT-TYPE
        SYNTAX      AggrL1CarrierEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An entry containing information about the IP adddress and the 
             throughput of the carrier connected by LAN.
            " 
        INDEX       {aggrL1ConnAggregableIndex,
                     aggrL1ConnAggregableType
                    }
    ::= {aggrL1CarrierTable 1}

    AggrL1CarrierEntry  ::=
        SEQUENCE  {aggrL1CarrierIpAddress    IpAddress,
                   aggrL1CarrierMinCapacity  Integer32,
                   aggrL1CarrierMaxCapacity  Integer32
                  }
    
    aggrL1CarrierIpAddress OBJECT-TYPE
        SYNTAX      IpAddress
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "This object shows the Ip address of the carrier (Network Element)
             connected with this LAN."
    ::= {aggrL1CarrierEntry 1}
   
    aggrL1CarrierMinCapacity OBJECT-TYPE
        SYNTAX      Integer32
        UNITS       "Kbps"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "This object shows the lower bound of the Ethernet capacity
             (in Kbit/sec) of the carrier (Network Element) connected
             with this LAN."
    ::= {aggrL1CarrierEntry 2}
   
    aggrL1CarrierMaxCapacity OBJECT-TYPE
        SYNTAX      Integer32
        UNITS       "Kbps"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "This object shows the upper bound of the Ethernet capacity
             (in Kbit/sec) of the carrier (Network Element) connected
             with this LAN."
    ::= {aggrL1CarrierEntry 3}
    
   -- 
   -------  End of aggrL1ConnectionTable

------ End group -----------------------------------------------------------------

---------------------------------- End  -------------------------------------


END



