NOTE: David Perkin's book on SNMP contains discussion of just
such a mirror table in order to give different access methods to the
same data.
As agreed in Savannah, there are three possible outcomes of the
jmp e-mail discussions:
1. The mirror table is not considered worth adding even as an OPTIONAL
table, since there are other techniques for getting good performance that
do not require any changes to the MIB.
2. The mirror table helps performance sufficiently for some applications,
that it should be added as an OPTIONAL table (as proposed in this mail
message).
3. The mirror table helps performance sufficiently for most applications,
and is not a burden to implementation (since only the pointers, not the
actual data occurs twice), that it should be made a MANDATORY table.
Hopefully the discussions on the mailing list will be sufficiently
conclusive
that we can finalized on one of the above three courses of action at the
upcoming JMP meeting, Tuesday morning, November 10.
Discussion
----------------
The 'jmMirrorAttrTable' is a proposed addition to the PWG Job Mon MIB.
It supports efficient access to selected job attributes (e.g., reading
'processingMessage' and 'jobStateReasons[2-4]' for all jobs in a job
set) via SNMPv1 GetNext or SNMPv2 GetBulk.
We have included updates for the MODULE-COMPLIANCE and OBJECT-GROUP
macros too.
- Ira McDonald
SS&A Globalisation Consulting Architect, XCMI Editor
906-494-2434 (work)
906-494-2697 (home)
- Tom Hastings
PWG Job Monitoring MIB editor
(310)333-6413 (work)
------------------------------------------------------------------------
-- The Mirror Attribute Group (OPTIONAL)
-- The jmMirrorAttrGroup consists entirely of the jmMirrorAttrTable.
-- -- Implementation of the objects in this group is OPTIONAL. -- See Section 3.1 entitled 'Conformance Considerations'. -- The jmMirrorAttrTable complements the MANDATORY jmAttributeTable. -- An agent which implements the jmMirrorAttrTable SHALL create a -- row in the jmMirrorAttrTable when each corresponding row is -- created in the jmAttributeTable.jmMirrorAttr OBJECT IDENTIFIER ::= { jobmonMIBObjects 5 }
jmMirrorAttrTable OBJECT-TYPE SYNTAX SEQUENCE OF JmAttributeEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The jmMirrorAttrTable is an OPTIONAL table which contains all of the same attributes for each job that are contained in the jmAttributeTable.
Each entry in jmMirrorAttrTable corresponds one-to-one to an entry in jmAttributeTable. See the analogous jmAttributeTable for further details.
The jmMirrorAttrTable supports efficient access to all of the attributes that an implementation supports, sorted by attribute type (traditional SNMP MIB access), rather than being sorted by job set and job index (modern object-oriented access) as in the analogous jmAttributeTable.
An agent which implements the jmMirrorAttrTable SHALL create a row in the jmMirrorAttrTable when each corresponding row is created in the jmAttributeTable.
An agent SHALL maintain each row in the jmMirrorAttrTable for the same time as the corresponding row in the jmAttributeTable.
See Section 3.3 entitled 'The Attribute Mechanism' for a description of the jmMirrorAttrTable." ::= { jmMirror 1 }
jmMirrorAttrEntry OBJECT-TYPE SYNTAX JmMirrorAttrEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The attributes that represent information about each job and documents or resources required and/or consumed.
Each entry in jmMirrorAttrTable corresponds one-to-one to an entry in jmAttributeTable. See the analogous jmAttributeEntry for further details.
Each entry in jmMirrorAttrTable is a per-attribute entry with a primary index for each type of attribute (jmMirrorAttrTypeIndex) that a job can have and secondary indices which specify job set (jmJobSetIndex), job instance (jmJobIndex), and attribute instance (jmMirrorAttrInstanceIndex).
An agent which implements the jmMirrorAttrTable SHALL create a row in the jmMirrorAttrTable when each corresponding row is created in the jmAttributeTable.
An agent SHALL maintain each row in the jmMirrorAttrTable for the same time as the corresponding row in the jmAttributeTable.
See Section 3.3 entitled 'The Attribute Mechanism' for a description of the jmMirrorAttrTable." INDEX { jmMirrorAttrTypeIndex, jmGeneralJobSetIndex, jmJobIndex, jmMirrorAttrInstanceIndex } ::= { jmMirrorAttrTable 1 }
JmMirrorAttrEntry ::= SEQUENCE { jmMirrorAttrTypeIndex JmAttributeTypeTC, jmMirrorAttrInstanceIndex Integer32 (1..32767), jmMirrorAttrValueAsInteger Integer32 (-2..2147483647), jmMirrorAttrValueAsOctets OCTET STRING(SIZE(0..63)) }
jmMirrorAttrTypeIndex OBJECT-TYPE SYNTAX JmAttributeTypeTC MAX-ACCESS not-accessible STATUS current DESCRIPTION "The type of attribute that this row entry represents.
See jmAttributeTypeIndex in jmAttributeTable for complete description." ::= { jmMirrorAttrEntry 1 }
jmMirrorAttrInstanceIndex OBJECT-TYPE SYNTAX Integer32 (1..32767) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The instance of attribute that this row entry represents.
See jmAttributeInstanceIndex in jmAttributeTable for complete description." ::= { jmMirrorAttrEntry 2 }
jmMirrorAttrValueAsInteger OBJECT-TYPE SYNTAX Integer32 (-2..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The integer value of the attribute.
See jmAttributeValueAsInteger in jmAttributeTable for complete description." DEFVAL { -2 } -- default value is unknown(-2) ::= { jmMirrorAttrEntry 3 }
jmMirrorAttrValueAsOctets OBJECT-TYPE SYNTAX OCTET STRING(SIZE(0..63)) MAX-ACCESS read-only STATUS current DESCRIPTION "The octet string value of the attribute.
See jmAttributeValueAsOctets in jmAttributeTable for complete description." DEFVAL { ''H } -- empty string ::= { jmMirrorAttrEntry 4 }
------------------------------------------------------------------------ [for placement in 'jmMIBCompliance' before the first OBJECT clause]
GROUP jmMirrorAttrGroup DESCRIPTION "The mirror attribute group (sorted by attribute type). Implementation of this group is OPTIONAL. An agent which implements the jmMirrorAttrTable SHALL create a row in the jmMirrorAttrTable when each corresponding row is created in the jmAttributeTable. An agent SHALL maintain each row in the jmMirrorAttrTable for the same time as the corresponding row in the jmAttributeTable."
------------------------------------------------------------------------ [for placement after the 'jmMIBCompliance' MODULE-COMPLIANCE macro]
jmMirrorAttrGroup OBJECT-GROUP OBJECTS { jmMirrorAttrValueAsInteger, jmMirrorAttrValueAsOctets } STATUS current DESCRIPTION "The mirror attribute group (sorted by attribute type). Implementation of this group is OPTIONAL. An agent which implements the jmMirrorAttrTable SHALL create a row in the jmMirrorAttrTable when each corresponding row is created in the jmAttributeTable. An agent SHALL maintain each row in the jmMirrorAttrTable for the same time as the corresponding row in the jmAttributeTable." ::= { jmMIBGroups 5 }
------------------------------------------------------------------------
Tom Hastings (310) 333-6413