Subject: RE: [Entmib] State, Status and URL info

From: "Sharon Chisholm" <[email-masked]>
Date: Thu, 4 Jul 2002 07:41:00 -0400

hi

I agree with Dave that the entity MIB needs state/status information.

When we discussed this last summer in London, I believe we
were thinking of a separate MIB with state extensions. Now
I'm beginning to think we might be more successful if we can
put a couple simple state objects in the existing MIB, especially
since it is currently being edited. By successful, I mean that 
the objects actually get implemented by managed elements and that
management tools are developed or enhanced to take advantage of
these objects - not that we define the perfect state MIB.

A minimalist approach would be to add an oper and admin state,
although a computed state based on the alarm state of the given
object and all of its subcomponents would be rather useful.

For those unfamiliar with the ITU model, here's a MIB I quickly
threw together last summer. It's rough, but it compiles.

-- Draft Version

ENTITY-STATE-MIB 

DEFINITIONS ::= BEGIN

   IMPORTS
       MODULE-IDENTITY, Unsigned32
           FROM SNMPv2-SMI
       TEXTUAL-CONVENTION, DisplayString, TruthValue
           FROM SNMPv2-TC;

   entityStateMIB MODULE-IDENTITY
       LAST-UPDATED "000004260000Z"
       ORGANIZATION "IETF Entity MIB Working Group"
       CONTACT-INFO
               "  "

       DESCRIPTION
               "This MIB defines a state extension to the entity MIB " 
       REVISION    "200103250000Z"
       DESCRIPTION
           ""     
       ::= { mib-2 XX } 
  -- Textual conventions

   ItuAdminState  ::=  TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
             " Represents the various possible administrative states 
               (ITU-T X.731)."
     SYNTAX         INTEGER
                       {
                        locked(1),
                        shuttingDown(2),
                        unlocked(3)
                       }

   ItuOperState  ::=  TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
             " Represents the possible values of operational states 
               (ITU-T X.731)."
     SYNTAX         INTEGER
                       {
                        disabled(1),
                        enabled(2)
                       }

   ItuUnknownStatusValue  ::=  TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
             " Represents the unknown status value to be true / false (ITU-T
X.731). 
               This indicates whether the  management system is able to
               maintain OAM communications with the managed entity or not."
     SYNTAX         TruthValue 
                    --  INTEGER {true(1), false(2)} 

   ItuUsageState  ::=  TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
             " Represents the possible values of usage states
               (ITU-T X.731)."
     SYNTAX         INTEGER
                       {
                        idle(1),
                        active(2),
                        busy(3)
                       }

  ItuAlarmStatus  ::=  TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
             " Represents the possible values of alarm status
               (ITU-T X.731)."
           SYNTAX         INTEGER
                          {
                           under-repair(1),
                           critical(2),
                           major(3),
                           minor(4),
                           alarm-outstanding(5)
                          }

  ItuProcStatus  ::=  TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
             " Represents the possible values of procedural status
               (ITU-T X.731)."

           SYNTAX         INTEGER
                          {
                           initialization-required(1),
                           not-initialized(2),
                           initializing(3),
                           reporting(4),
                           terminating(5)
                          }

  ItuAvailStatus  ::=  TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
             " Represents the possible values of availability status
               (ITU-T X.731)."

           SYNTAX         INTEGER
                          {
                           in-test(1),
                           failed(2),
                           power-off(3),
                           off-line(4),
                           off-duty(5),
                           dependency(6),
                           degraded(7),
                           not-installed(8),
                           log-full(9)
                          }

  ItuControlStatus  ::=  TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
             " Represents the possible values of control status
               (ITU-T X.731)."

           SYNTAX         INTEGER
                          {
                           subject-to-test(1),
                           part-of-services-locked(2),
                           reserved-for-test(3),
                           suspended(4)
                          }

   ItuStandbyStatus  ::=  TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
             " Represents the possible values of standby status
               (IU-T X.731)."

           SYNTAX         INTEGER
                          {
                           hot-standby(1),
                           cold-standby(2),
                           providing-service(3)
                          }      

   entityStateTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF EntityStateEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of information about state/status of entities.
         "
    ::= { entityState 1 }

     entityStateEntry OBJECT-TYPE
        SYNTAX      EntityStateEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION ""
        AUGMENTS       { entityPhysicaEntry }
        ::= { entityStateTable 1 }

     EntityStateEntry ::= SEQUENCE {
         entityStateAdmin 	ItuAdminState,
         entityStateOper    ItuOperState,
         entityStateUnknownValue  ItuUnknownStatusValue,
         entityStateUsage  	ItuUsageState,
         entityStateAlarm	ItuAlarmStatus,
         entityStateProc    ItuProcStatus,
         entityStateAvail 	ItuAvailStatus, 
         entityStateControl ItuControlStatus,
         entityStateStandby ItuStandbyStatus,
         entityStateComputed INTEGER
        }                      
        
 entityStateAdmin OBJECT-TYPE
        SYNTAX      ItuAdminState
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION ""
        ::= { entityStateEntry 1 }     
        
  entityStateOper OBJECT-TYPE
        SYNTAX      ItuOperState
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION ""
        ::= { entityStateEntry 2 }  
 
  entityStateUnknownValue OBJECT-TYPE
        SYNTAX      ItuUnknownStatusValue
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION ""
        ::= { entityStateEntry 3 }     
        
  entityStateUsage OBJECT-TYPE
        SYNTAX      ItuUsageState
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION ""
        ::= { entityStateEntry 4 } 
        
  entityStateAlarm OBJECT-TYPE
        SYNTAX      ItuAlarmStatus
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION ""
        ::= { entityStateEntry 5 }     
        
  entityStateProc OBJECT-TYPE
        SYNTAX      ItuProcStatus
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION ""
        ::= { entityStateEntry 6 } 
        
 entityStateAvail OBJECT-TYPE
        SYNTAX      ItuAvailStatus
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION ""
        ::= { entityStateEntry 7 }     
        
 entityStateControl OBJECT-TYPE
        SYNTAX      ItuControlStatus
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION ""
        ::= { entityStateEntry 8 }         
                
 entityStateStandby OBJECT-TYPE
   		SYNTAX ItuStandbyStatus
   		MAX-ACCESS read-only
   		STATUS current
   		DESCRIPTION ""
   ::= { entityStateEntry 9 }         
        
 entityStateComputed OBJECT-TYPE
 		SYNTAX INTEGER    {   
 		  other (1),
 		  clear (2),
 		  warning (3),
 		  minor (4),
 		  major (5),
 		  critical (6)
 		}
 		MAX-ACCESS read-only
 		STATUS current
 		DESCRIPTION
 		"The state of this physical entity computed from its
 		raw states and the raw state of its child entities"
 ::= { entityStateEntry 10 }     

END              

Sharon

-----Original Message-----
From: David T. Perkins [mailto:[email-masked]]
Sent: Tuesday, April 09, 2002 2:22 PM
To: Keith McCloghrie; [email-masked]
Cc: [email-masked]; [email-masked]; [email-masked];
[email-masked]
Subject: Re: [Entmib] State, Status and URL info

HI,

The entity MIB for a long time has needed state and status info.
There are very complex models for this, and very simple models.
The below two objects seem a little too simple to me.

The third object looks like a "scratch pad object". It seems
very problematic when you consider how it would be used when
there are multiple managers.

Probably the best resources on this issue are the following
documents:
1)  Telcordia's GR-1093 - Generic State Requirements for Network Elements
    Issue 2, June 2000

2)  ISO/IEC 10164-2 (and ITU-T X.731) - State Management Functions
    August 1991

3)  ITU-T M.3100 - Generic Network Information Model 
    Version 2, 1995

Dave Sidor from the ITU-T community has made available the ITU-T documents
to the IETF community for no fee. But I do not know if Telcordia has
made available any of their documents, which have a fee, to the IETF
community for no fee.

In general, the IETF has a loosely defined generic model for state/status
that was (I believe) first used in the IF table based on admin state
and oper state. This model has been loosely copied to other MIB modules.

The ITU-T and Telcordia models are rigorously defined, and are different
from the IETF model in one important aspect. That is, in the IETF model,
the oper state "follows" (if possible) the the admin state; where in
the ITU-T model, the oper state is independent of the admin state.
The ITU-T model is richer than the IETF model. For example, it
supports redundancy. 

_______________________________________________
Entmib mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/entmib

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Fri, 5 Jul 2002 14:26:18 +0200

>>>>> Sharon Chisholm writes:

Sharon> I agree with Dave that the entity MIB needs state/status
Sharon> information.

[...]

Sharon> For those unfamiliar with the ITU model, here's a MIB I
Sharon> quickly threw together last summer. It's rough, but it
Sharon> compiles.

             " Represents the unknown status value to be true / false 
	       (ITU-T X.731). 

Not sure I understand how this can be useful or implementable with the
average ENTITY-MIB implementation I have seen. But perhaps I just do
not understand the description at all.

I also believe that in the case of many interrelated state variables,
we need to be specific how the various values relate to each other.
For example, if a physical entity is cold-standby(2), can it also be
initializing(3) and busy(3)? (Since these are all different variables,
one can imagine such an entry in the state table.)

On a the more editorial side, I would suggest to replace the prefix
"entityState" with "entPhysicalState" since the ENTITY-MIB
distinguishes between physical and logical entities.

/js

-- 
Juergen Schoenwaelder    <http://www.informatik.uni-osnabrueck.de/schoenw/>

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Fri, 5 Jul 2002 14:26:18 +0200

[...]

/js