Method and system for managing a directory service6052724Abstract A method and system for managing a distributed directory service. The method includes defining a plurality of objects operative to maintain information about a plurality of partitions in a MIB, implementing the MIB in an agent, loading the agent on a managed server, interfacing the agent with a directory service, and sending a management request from a management station to the agent to access one of the objects. The MIB maintains information about each partition on the managed server, and allows access to such information through conventional network management software. Claims What is claimed is: Description A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyrights whatsoever.
______________________________________
DS Partition Table
nwDSPartitionTable OBJECT-TYPE
SYNTAX SEQUENCE OF NwDSPartitionEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"A list of all partitions that reside on this server."
::= { nwDSPartition 2 }
nwDSPartitionEntry OBJECT-TYPE
SYNTAX nwDSPartitionEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"The description of a particular partition
in the partition table."
INDEX {nwDSPartitionID}
::= { nwDSPartitionTable 1 }
nwDSPartitionEntry ::= SEQUENCE {
nwDSPartitionID DsObjectID,
nwDSPartitionName ObjectFullDistinquishedName,
nwDSLastSuccessPartitionOperation
INTEGER,
nwDSLastSuccessPartOperStartDateTime DateAndTime,
nwDSLastSuccessPartOperStopDateTime DateAndTime,
nwDSCurrentOperation
INTEGER,
nwDSCurrentOperationStartDateTime
DateAndTime,
nwDSCollisionCount
INTEGER,
nwDSLastCollObjectName ObjectFullDistinquishedName,
nwDSLastColReName ObjectFullDistinquishedName,
nwDSLastCollisionDateTime DateAndTime,
nwDSObjectCount INTEGER,
nwDSReplicaPerPartitionCount INTEGER,
nwDSLastEntryModTime DateAndTime,
nwDSSapFederatedName DisplayString,
nwDSStartSapNameMode INTEGER,
nwDSPartReplicaNumber INTEGER
nwDSPartitionID OBJECT-TYPE
SYNTAX DsObjectID
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The object ID which uniquely identifies a partition
on this server and which maps as an index to
the partition table."
::= { nwDSPartitionEntry 1 }
nwDSPartitionName OBJECT-TYPE
SYNTAX ObjectFullDistinquishedName
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The Distinguished Name of this partition."
::= { nwDSPartitionEntry 2 }
nwDSLastSuccessPartitionOperation OBJECT-TYPE
SYNTAX INTEGER {
idle(1),
split(2),
splitChild(3),
joinUp(4),
joinDown(5),
moveSubTreeSource(6),
moveSubTreeDestination(7),
repairingTimeStamps(8),
changingReplicaType(9)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The last successful operation (such as delete, join,
split, move, etc.) that was performed on this partition.
Example: Deleted Partition1
The initial value is 0."
::= { nwDSPartitionEntry 3 }
nwDSLastSuccessPartOperStartDateTime OBJECT-TYPE
SYNTAX DateAndTime
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The date and time when the last successful
operation on this partition was initiated.
The initial value is 0."
::= { nwDSPartitionEntry 4 }
nwDSLastSuccessPartOperStopDateTime OBJECT-TYPE
SYNTAX DateAndTime
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The date and time when the last successful
operation on this partition was completed.
The initial value is 0."
::= { nwDSPartitionEntry 5 }
nwDSCurrentOperation OBJECT-TYPE
SYNTAX INTEGER {
idle(1),
split(2),
splitChild(3),
joinUp(4),
joinDown(5),
moveSubTreeSource(6),
moveSubTreeDestination(7),
repairingTimeStamps(8),
changingReplicaType(9)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The operation currently being performed on this partition
(delete, join, split, move, etc.)."
::= { nwDSPartitionEntry 6 }
nwDSCurrentOperationStartDateTime OBJECT-TYPE
SYNTAX DateAndTime
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The date and time when the current operation
was initiated."
::= { nwDSPartitionEntry 7 }
nwDSCollisionCount OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of collisions that have occurred
on this partition since NDSStats.NLM was loaded."
::= { nwDSPartitionEntry 8 }
nwDSLastCollObjectName OBJECT-TYPE
SYNTAX ObjectFullDistinquishedName
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The report (by object name) of the last name collision."
::= { nwDSPartitionEntry 9 }
nwDSLastColReName OBJECT-TYPE
SYNTAX ObjectFullDistinquishedName
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The report (by renamed object) of the last name collision."
::= { nwDSPartitionEntry 10 }
nwDSLastCollisionDateTime OBJECT-TYPE
SYNTAX DateAndTime
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The date and time when the last name collision occurred."
::= { nwDSPartitionEntry 11 }
nwDSObjectCount OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of objects in this partition."
::= { nwDSPartitionEntry 12 }
nwDSReplicaPerPartitionCount OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of replicas of this partition."
::= { nwDSPartitionEntry 13 }
nwDSLastEntryModTime OBJECT-TYPE
SYNTAX DateAndTime
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The date and time when an entry in the partition table
was last modified. Initial value is 0."
::= { nwDSPartitionEntry 14 }
nwDSSapFederatedName OBJECT-TYPE
SYNTAX DisplayString(SIZE(0..48))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"SAP and real federated names are the same."
::= { nwDSPartitionEntry 15 }
nwDSStartSapNameMode OBJECT-TYPE
SYNTAX INTEGER {
on(1),
off(2),
rootmost(3)
}
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The setting for Service Advertising (SAP)
on this federated partition (on, off, or
rootmost). When the setting is rootmost,
only the rootmost partition object advertises."
::= { nwDSPartitionEntry 16 }
nwDSPartReplicaNumber OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The replica number, which also maps as an index
to the partition's replica table."
::= { nwDSPartitionEntry 17 }
.COPYRGT. 1997 Novell Inc.
______________________________________
The partition objects referred to above provide access to detailed information within directory service 62 regarding each partition on managed server 58 from a standard network management station. Such detailed information typically is not obtainable from conventional directory service products via a network management station. Moreover, this information can be accessed by other programs by using standard SNMP requests, simplifying the development effort required to access the data. For example, a conventional management station can query the last successful partition operation object to determine what the last successful operation against that partition was, and the current operation object to determine what the current operation, if any, is being performed against the respective partition. The replica count object can be queried to determine the number of replicas for a particular partition, and the object count object can be queried to determine the number of objects in the partition. Referring to FIG. 6, replica table object 93 is a table which contains a plurality of rows, or sequences, of objects which relate to the replicas associated with the partitions identified in partition table object 92. This information includes not only replicas which exist on managed server 58, but also information regarding replicas on other network servers. Each row of replica table object 93 includes a partition replica ID object, a replica number object, a replica server ID object, a replica state object, a replica type object, a replica successful sync date time object, a successful inbound sync count object, a successful outbound sync count object, a replica fail sync date time object, a replica sync fail condition object, a replica fail sync count object, a replica server state object, an inbound object count object, an outbound object count object, an inbound sync time object, and an outbound sync time object. The formal ASN.1 syntax, according to one embodiment of this invention, for replica table object 93 is provided below:
______________________________________
DS Replica Table
nwDSReplicaTable OBJECT-TYPE
SYNTAX SEQUENCE OF NwDSReplicaEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"The list of all replicas of this partition
that reside on other servers."
::= { nwDSPartition 3 }
nwDSReplicaEntry OBJECT-TYPE
SYNTAX NwDSReplicaEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"The description of a particular replica
(in the replica table) that resides
on this partition."
INDEX {nwDSPartitionRepID,nwDSReplicaNumber}
::= { nwDSReplicaTable 1 }
NwDSReplicaEntry ::= SEQUENCE {
nwDSPartitionRepID
DsObjectID,
nwDSReplicaNumber INTEGER,
nwDSReplicaServerID INTEGER,
nwDSReplicaState INTEGER,
nwDSReplicaType INTEGER,
nwDSRepSuccessSyncDateTime
DateAndTime,
nwDSSuccessInBoundSyncCount Counter,
nwDSSuccessOutBoundSyncCount Counter,
nwDSReplicaFailSyncDateTime DateAndTime,
nwDSReplicaFailCondition
INTEGER,
nwDSReplicaFailSyncCount INTEGER,
nwDSReplicaServerState INTEGER,
nwDSInBoundObjectCount Counter,
nwDSOutBoundObjectCount Counter,
nwDSInBoundSyncTime Counter,
nwDSOutBoundSyncTime Counter
nwDSPartitionRepID OBJECT-TYPE
SYNTAX DsObjectID
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The object ID that uniquely identifies a particular
replica on this partition. This ID also maps as an
index to the partition's replica table."
::= { nwDSReplicaEntry 1 }
nwDSReplicaNumber OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The number that uniquely identifies a particular replica
on this partition. This number also maps as an index
to this server's replica table."
::= { nwDSReplicaEntry 2 }
nwDSReplicaServerID OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The object ID that identifies the server on which
this replica resides. This number also maps as an index
to the reference server table (nwDSRefServerID)."
::= { nwDSReplicaEntry 3 }
nwDSReplicaState OBJECT-TYPE
SYNTAX INTEGER {
on(0),
new(1),
dying(2),
locked(3),
changereplicatype0(4),
changereplicatype1(5),
transition(6),
split0(48),
split1(49),
join0(64),
join1(65),
join2(66),
move0(80)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The state of this replica (busy, on, join, etc.)."
::= { nwDSReplicaEntry 4 }
nwDSReplicaType OBJECT-TYPE
SYNTAX INTEGER {
master(0),
readWrite(1),
readOnly(2),
subref(3)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The type of this replica (master, read-write,
read-only, or subordinate reference)."
::= { nwDSReplicaEntry 5 }
nwDSRepSuccessSyncDateTime OBJECT-TYPE
SYNTAX DateAndTime
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The date and time when this replica was last
successfully synchronized."
::= { nwDSReplicaEntry 6 }
nwDSSuccessInBoundSyncCount OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of times that in-bound synchronization
was successful since NDSStats.NLM was loaded."
::= { nwDSReplicaEntry 7 }
nwDSSuccessOutBoundSyncCount OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of times that out-bound synchronization
was successful since NDSStats.NLM was loaded."
::= { nwDSReplicaEntry 8 }
nwDSReplicaFailSyncDateTime OBJECT-TYPE
SYNTAX DateAndTime
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The date and time when the last failure
of replica synchronization occurred."
::= { nwDSReplicaEntry 9 }
nwDSReplicaSyncFailCondition OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The reason (error condition) that the last failure
of replica synchronization occurred."
::= { nwDSReplicaEntry 10 }
nwDSReplicaFailSyncCount OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of times that synchronization
has failed since NDSStats.NLM was loaded."
::= { nwDSReplicaEntry 11 }
nwDSReplicaServerState OBJECT-TYPE
SYNTAX INTEGER {
unknown(0),
down(1),
up(2)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The state of the server (up, down, unknown)
on which this replica resides."
::= { nwDSReplicaEntry 12 }
nwDSInBoundObjectCount OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The count of all in-bound objects that have been
synchronized since NDSStats.NLM was loaded."
::= { nwDSReplicaEntry 13 }
nwDSOutBoundObjectCount OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The count of all out-bound objects that have been
synchronized since NDSStats.NLM was loaded."
::= { nwDSReplicaEntry 14 }
nwDSInBoundSyncTime OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total time (in seconds) required for
in-bound objects to synchronize."
::= { nwDSReplicaEntry 15 }
nwDSOutBoundSyncTime OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total time (in seconds) for out-bound objects
to synchronize."
::= { nwDSReplicaEntry 16 }
.COPYRGT. 1997 Novell Inc.
______________________________________
As with partition table object 92, the objects in the rows of replica table object 93 can be accessed from conventional management station software. For example, the replica state object can be queried to determine the current state of a particular replica, and the replica type object can be accessed to determine the type of the respective replica. The partition replica ID object identifies the partition associated with the respective replica, and the replica server status object can be queried to determine the status of the server on which the replica exists. Referring to FIG. 7, partition operations table object 95 contains a row, or sequence, of objects which maintain information about the operations performed against each partition on managed server 58. Each row of partition operations table 95 contains a partition operations index object, an anonymous binds object, a simple authenticated binds object, a strong authenticated binds object, a bind security errors object, an operation forward to this DSA object, a read operations object, a compare operations object, an add entry operations object, a remove entry operations object, a modify entry operations object, a modify RDN operations object, a list operations object, a search operation object, a one-level search operations object, a whole tree search operations object, a move entry operations object, a type referral return object, a transport referral return object, an alias referral returned object, an operations forwarded object, an operations forwarded no security object, and an operations not serviced due to error object. Thus, partition operations table 95 provides detailed directory service operations information for each partition on managed server 58. This information can be accessed by a conventional network management station and can be used to determine, for example, the total number of accesses to a public account, the number of read operations on a partition, and the total number of search operations performed on this partition. The formal ASN.1 syntax, according to one embodiment of this invention, for partition operations table object 95, is as follows:
______________________________________
Partition Operations Table
nwDSPartOperationsTable OBJECT-TYPE
SYNTAX SEQUENCE OF NwDSPartOperationsEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"A list of operations which have partition-level counters
to record the total number of times each operation has
been performed since NDSStats.NLM was loaded."
::= { nwDSPartition 5 }
nwDSPartOperationsEntry OBJECT-TYPE
SYNTAX NwDSPartOperationsEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"The description of an instance of a partition-level
operation which has been performed and which is also
indexed to this partition table entry."
INDEX {nwDSPartitionOperationsIndex}
::= { nwDSPartOperationsTable 1 }
NwDSPartOperationsEntry ::= SEQUENCE {
nwDSPartionOperationsIndex
DsObjectID,
nwDSAnonymousBinds Counter,
nwDSSimpleAuthenticatedBinds Counter,
nwDSStrongAuthenticatedBinds Counter,
nwDSBindSecurityErrors Counter,
nwDSOperationForwardToThisDs Counter,
nwDSReadOperations Counter,
nwDSCompareOperations Counter,
nwDSAddEntryOperations Counter,
nwDSRemoveEntryOperations Counter,
nwDSModifyEntryOperations Counter,
nwDSModifyRDNOperations Counter,
nwDSListOperations Counter,
nwDSSearchOperation Counter,
nwDSOneLevelSearchOperation Counter,
nwDSWholeTreeSearchOperation Counter,
nwDSMoveEntryOperations Counter,
nwDSTypeReferralReturned Counter,
nwDSTransportReferralReturn Counter,
nwDSAliasReferralReturned Counter,
nwDSOperationsForwarded Counter,
nwDSOperForwardNoSecurity Counter,
nwDSOperNotServDueToError Counter
nwDsPartitionOperationsIndex OBJECT-TYPE
SYNTAX DsObjectID
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The object ID that uniquely identifies this partition
and which also maps as an index to the partition table."
::= { nwDSPartOperationsEntry 1 }
nwDSAnonymousBinds OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Anonymous binds (the total number of binds to any account
that does not have a password)."
::= { nwDSPartOperationsEntry 2 }
nwDSSimpleAuthenticatedBinds OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of binds made with bindery authentication
since NDSStats.NLM was loaded."
::= { nwDSPartOperationsEntry 3 }
nwDSStrongAuthenticatedBinds OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of binds made
with NDS-authenticated connections
since NDSStats.NLM was loaded."
::= { nwDSPartOperationsEntry 4 }
nwDSBindSecurityErrors OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Any failed attempt to validate a connection.
Security errors include failures because of invalid
login name, bad password, or insufficient rights."
::= { nwDSPartOperationsEntry 5 }
nwDSOperationForwardToThisDSA OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"A request from the Directory User Agent (DUA) or client
[either/or serving as?]
or another Directory Service Agent (DSA)."
::= { nwDSPartOperationsEntry 6 }
nwDSReadOperations OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of read operations performed
in this partition since NDSStats.NLM was loaded."
::= { nwDSPartOperationsEntry 7 }
nwDSCompareOperations OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of compare operations performed
in this partition since NDSStats.NLM was loaded."
::= { nwDSPartOperationsEntry 8 }
nwDSAddEntryOperations OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of entries that were created (added)
in this partition since NDSStats.NLM was loaded."
::= { nwDSPartOperationsEntry 9 }
nwDSRemoveEntryOperations OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of entries that were deleted
in this partition since NDSStats.NLM was loaded."
::= { nwDSPartOperationsEntry 10 }
nwDSModifyEntryOperations OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of entries that were modified
in this partition since NDSStats.NLM was loaded."
::= { nwDSPartOperationsEntry 11 }
nwDSModifyRDNOperations OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Sum of modify RDN and Modify DN operations
(changing the name of an object or the name
of one of its parents) since NDSStats.NLM
was loaded."
::= { nwDSPartOperationsEntry 12 }
nwDSListOperations OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of list operations performed
in this container or partition since
NDSStats.NLM was loaded."
::= { nwDSPartOperationsEntry 13 }
nwDSSearchOperation OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Sum of search operations (subtree, one-level,
and object searches) that have been performed
in this container or partition since
NDSStats.NLM was loaded."
::= { nwDSPartOperationsEntry 14 }
nwDSOneLevelSearchOperation OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of one-level search operations
performed in this partition since NDSStats.NLM
was loaded."
::= { nwDSPartOperationsEntry 15 }
nwDSWholeTreeSearchOperation OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of subtree-level search operations
performed in this partition since NDSStats.NLM
was loaded."
::= { nwDSPartOperationsEntry 16 }
nwDSMoveEntryOperations OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of times the [operations?] entry
was moved since NDSStats.NLM was loaded."
::= { nwDSPartOperationsEntry 17 }
nwDSTypeReferralReturned OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of times a partition type [mixed - up]
(such as master, read-write, read-only)
referral was returned since NDSStats.NLM
was loaded. For example, a modify request
to a read-only partition could return
a referral to a writable copy."
::= { nwDSPartOperationsEntry 18 }
nwDSTransportReferralReturn OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of times a transport type
(such as ipx, ip, appletalk) referral was returned
since NDSStats.NLM was loaded."
::= { nwDSPartOperationsEntry 19 }
nwDSAliasReferralReturned OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of times an alias referral
was returned since NDSStats.NLM was loaded.
For example, a request for object `Bill`
(an alias for `William`) could return a referral
to `William's location."
::= { nwDSpartOperationsEntry 20 }
nwDSOperationsForwarded OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of operations forwarded
to another DSA (Directory Services Agent).
Not currently implemented."
::= { nwDSPartOperationsEntry 21 }
nwDSOperForwardNoSecurity OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of operations forwarded
to this DSA (Directory Services Agent)
that do not meet security requirements.
For example, operations fail without
sufficient object rights."
::= { nwDSPartOperationsEntry 22 }
nwDSOperNotServDueToError OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of operations that were not serviced
because of errors other than security. For example,
requesting information on an object that does not exist."
::= { nwDSPartOperationsEntry 23 }
Referring now to FIG. 8, server info object 90 contains an external reference object, a SAP socket number object, a server ID object, an NCP address object, a major DS version object, a minor DS version object, a DS revision object, a DS container usage object, and a container usage table object 97. Thus, server info object 90 is a group object which contains general information about directory service 62, as well as a table with information about container objects. Container usage table object 97 contains a row, or sequence, of objects for each container object in the partitions located on managed server 58. Each row in container usage table object 97 includes a container usage ID object, a container usage name object, a container write operations object, and a container read operations object. Such information can be accessed by either conventional network management software, or by any other software through conventional SNMP requests. The detailed information in container usage table object 97 regarding each container on managed server 58 enables an administrator to quickly determine which containers are most heavily utilized. Based on such usage, an administrator can determine the optimal partitioning and partition locations of the directory tree. The formal ASN.1 syntax for server info object 90, according to one embodiment of this invention, is as follows:
______________________________________
DS Server Info Group
nwDSExternRef OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of referenced objects
that are not located on this server
at the time the request was issued."
::= { nwDSServerInfo 1 }
nwDSSapSocketNum OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"SAP socket number (4-byte integer)."
::= { nwDSServerInfo 2 }
nwDSServerID OBJECT-TYPE
SYNTAX DsObjectID
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The object ID that uniquely identifies a server
in the server reference table and which also maps
as an index into this table."
::= { nwDSServerInfo 3 }
nwDSNcpAddress OBJECT-TYPE
SYNTAX IPXNetNumber
ACCESS read-only
STATUS mandatory
DESCRIPTION
"NDS NCP Address"
::= { nwDSServerInfo 4 }
nwMajorDSVersion OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"NDS major version. Example: 4."
::= { nwDSServerInfo 5 }
nwMinorDSVersion OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"NDS minor version. Example: .11."
::= { nwDSServerInfo 6 }
nwDSRevision OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"NDS revision number. Example: 397."
::= { nwDSServerInfo 7 }
nwDSContainerUsage OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
DESCRIPTION
"A 32-bit flag that controls the collection of data
according to the following constants:
DSS.sub.-- TRK.sub.-- PARTITIONS-0x00000001,
DSS.sub.-- TRK.sub.-- CONTAINERS-0x00000002,
DSS.sub.-- TRK.sub.-- ENTRIES-0x00000004,
DSS.sub.-- TRK.sub.-- XREFS-0x00000008,
DSS.sub.-- TRK.sub.-- CONDCODES-0x00000010,
DSS.sub.-- TRK.sub.-- LASTCCODES-0x00000020,
The default is set to monitor container usage,
which is all of the above bits. This value
can be set as to start monitoring container usage
or any
of the [other bits] can be set to monitor these types.
"
::= { nwDSServerInfo 9 }
DS Container Usage Table
nwDSContainerUsageTable OBJECT-TYPE
SYNTAX SEQUENCE OF NwDSContainerUsageEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"A list of containers on this server
that have been written to or read from
since NDSStats.NLM was loaded."
::= { nwDSServerInfo 10 }
nwDSContainerUsageEntry OBJECT-TYPE
SYNTAX NwDSContainerUsageEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"A container-level read or write operation
which has been performed and which is indexed
to nwDSContainerUsageEntry"
INDEX {nwContainerUsageID}
::= { nwDSContainerUsageTable 1 }
NwDSContainerUsageEntry ::= SEQUENCE {
nwContainerUsageID
DsObjectID,
nwContainerUsageName DisplayString,
nwContainerWriteOperations Counter,
nwContainerReadOperations Counter
nwContainerUsageID OBJECT-TYPE
SYNTAX DsObjectID
ACCESS read-only
STATUS mandatory
DESCRIPTION
"A object ID that uniquely identifies
this container in this [partition, server, tree?]."
::= { nwDSContainerUsageEntry 1 }
nwContainerUsageName OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The Relative Distinguished Name (RDN)
for container usage."
::= { nwDSContainerUsageEntry 2 }
nwContainerWriteOperations OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Container usage. The total number of write operations
performed on this container since NDSStats.NLM
was loaded."
::= { nwDSContainerUsageEntry 3 }
nwContainerReadOperations OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Container usage. The total number of read operations
performed on this container since NDSStats.NLM
was loaded."
::= { nwDSContainerUsageEntry 4 }
.COPYRGT. 1997 Novell Inc.
______________________________________
The formal ASN.1 syntax for other objects defined in MIB 71 are disclosed in the accompanying microfiche. Because MIB 71 provides access to internal information of directory service 62 through standard protocols, software can be rapidly developed which can access and display such information to help in administering directory service 62. Such software can be standalone software, or can be written as a `plug-in` to conventional management station software. FIG. 9 shows a user interface window 100 according to one embodiment of this invention. Selecting item 104 in folder 102 causes the information in window 101 to be displayed. Window 101 contains summary information about directory service 62 on managed server 58. The object names from which the information originates are provided after the description of each field. The description and formal ASN.1 syntax of the object names are reflected in the attached microfiche. Field 106 contains the version of directory service 62 which is currently running on managed server 58. This information can be obtained from the nwMajorDSVersion and nwMinorDSVersion objects. Field 108 contains the number of partitions on managed server 58. This information can be obtained from the nwDSPartitionCount object. Field 110 contains the size of the distributed directory tree maintained on managed server 58 (referred to in FIG. 9 as a database). This information can be obtained from the nwDSSizeOfNDSDataBase object. Field 112 contains the number of client connections on managed server 58. This information can be obtained from the nwDSAClientCount object. Field 114 contains a critical partition status, which reflects the most critical status of any partition on managed server 58. This information can be obtained by analyzing the nwDSCurrentOperation object of each partition on managed server 58. Field 116 contains a critical synchronization status, which reflects the most critical status of the synchronization of the replicas on managed server 58. This information can be obtained by analyzing the nwDSRepSuccessSyncDateTime and the nwDSReplicaFailSyncDateTime objects for each replica to determine if the replica has successfully synchronized. Field 118 contains the percentage of traffic on managed server 58 which relates to synchronization. This information can be obtained from the following calculation: (nwDSSyncReply+nwDSSyncRequest)/(nwDSSyncReply+nwDSSyncRequest+nwDSOtherRe quests+nwDSOtherReply)*100. Field 120 contains the percentage of traffic on managed server 58 which relates to reference traffic, which is any type of traffic not relating to synchronization. This information can be obtained from the following calculation: (nwOtherRequests+nwDSOtherReply)/(nwDSSyncReply+nwDSSyncRequest+nwDSOtherR equests+nwDSOtherReply)*100. Field 122 contains the percentage of read requests. This information can be obtained from the following calculation: nwDSReadReq/(nwDSReadReq+nwDSWriteReq)*100. Field 124 contains the percentage of write requests. This information can be obtained from the following calculation: nwDSWriteReq/(nwDSReadReq+nwDSWriteReq)*100. Field 128 contains a list of bindery contexts. This information can be obtained from the nwDSBinderyContextTable object. FIG. 10 shows a user interface window 129. Selecting item 132 of folder 130 results in the information in window 131 being displayed. Window 131 displays information about the partitions on managed server 58. The information in window 131 can be obtained from partition table object 92. Box 133 lists the names and other attributes of each of the partitions on managed server 58. This information can be obtained by accessing partition table object 92 and extracting from each row, or sequence, of objects relevant information about each partition. For example, the names of the partitions in column 134 can be obtained from the partition name object of each row in partition table object 92, and the number of objects in column 136 can be obtained from the object count object of each row of partition table object 92. The number of replicas in column 138 can be obtained from the replica per partition count object of each row of partition table object 92, and the current operation in column 140 can be obtained from the current operation object of each row of partition table object 92. Upon highlighting a particular partition name 135 in box 133, additional partition information relating to the selected partition can be provided, as shown in window 137. Field 142 contains the start time and date of the current operation being performed on the selected partition. This information can be obtained from the current operation start date time object from the row of partition table object 92 relating to the selected partition. Field 144 contains the last operation which was performed on the selected partition. This information can be obtained from the last successful partition operation object of partition table object 92. Field 146 contains the duration of the last partition operation. This information can be obtained from the last successful partition operation start date time object and the successful partition operation stop date time object. Field 148 contains the number of collisions which has occurred on the selected partition. This information comes from the collision count object of partition table object 92. The information in fields 142, 144, 146 and 148 will change as each respective partition listed in box 133 is selected. FIG. 11 shows a user interface window 150. Upon selection of item 152 of folder 130, window 151 displays information relating to the replicas associated with a particular partition. For example, box 153 contains a list of the replicas associated with the partition which was selected in FIG. 10. The replica information displayed in box 153 is obtained by traversing replica table object 93 and for each row, or sequence, in the replica table which relates to the selected partition, extracting information from the objects in that row. For example, the replica server name information shown in column 154 can be obtained by indexing the nwDSReferencedServerTable object with the Replica Server ID object obtained from the appropriate row of the Replica Table object, and extracting the server name from the nwDSServerName object. The replica state information shown in column 156 can be obtained from the replica state object in replica table 93. The replica type information shown in column 158 comes from the replica type object of replica table 93. The last sync time information shown in column 160 comes from the replica successful sync date time object in replica table 93. As a replica is highlighted in box 153, such as replica 155, additional information about that selected replica can be provided, such as shown in box 161. Field 162 contains the last inbound synchronization time. This information can be obtained from the inbound sync time object in the row of replica table object 93 associated with the selected replica. Field 164 contains the outbound sync time. This information can be obtained from the outbound sync object of replica table object 93. Field 166 contains the date and time of the last synchronization failure. This information can be obtained from the replica fail sync date time object. Field 168 contains the current server state of the selected replica. This information can be obtained from the replica server state object of replica table object 93. Field 170 contains the replica type of the selected replica. This information can be obtained from the replica type object of replica table object 93. An administrator can change the type of replica by selecting one of the radio buttons presented in box 170 and activating button 149. Upon doing so, the appropriate object in replica table object 93 will be changed to reflect the new type of replica, and directory service 62 will be prompted to take the appropriate action. FIG. 12 shows a user interface window 172. Window 172 contains three separate windows 175, 177 and 179. Window 177 contains a graphical display of icons which represent the various components in a network. Upon selecting a server icon, such as icon 176, window 175 displays one or more partition icons which represent each partition located on the selected server. This information can be obtained from partition table object 92. Upon selection of one of the displayed partitions, such as for example partition 174, window 179 displays a list of the containers on the selected partition. The container information shown in window 179 can be obtained from the container usage table object 97 of server info object 90. Directory service 62 offers an API which translates a container ID into the partition name in which the container is located. Column 178 contains the name of each container in the selected partition. This information can be obtained from container usage table object 97. Column 180 contains the number of times each container has been read since directory service 62 was initiated. This information can be obtained from the container read operations object from the row associated with that container. Column 182 contains the number of times a write operation has been performed against the selected container. This information can be obtained from the container write operations object of the row associated with that container. Container usage information can be used by an administrator for load balancing and determining which containers are most heavily accessed. FIG. 13 shows a user interface window 188. Upon selection of item 190 of folder 130, window 189 displays list box 192 with a plurality of partition operation selection items. Upon selection of a particular partition operation, such as item 196, window 197 displays the selected information on a partition basis. For example, column 198 displays the name of each partition on the managed server, and column 200 displays the statistics for the selected partition operation for each displayed partition name. This information can be obtained from partition operations table object 95. Thus, window 188 allows an administrator to monitor relevant directory service operations on a partition-by-partition basis. The method and system according to this invention allows individuals using standard network management software to view or set the internal variables of a complex distributed directory service product. Moreover, immediate feedback regarding changes made to the directory can be obtained. This can be accomplished without special purpose software which is written to a proprietary interface. Another relatively important aspect of directory service administration relates to the ability to determine what is dynamically occurring within the directory service. Some directory service products allow external software to register with the directory service and request that the external software be notified upon the occurrence of certain internal directory service events. To allow access to such events, conventional directory services usually define a proprietary event interface to which the external software must write to obtain access to such events. One problem with such proprietary interfaces is that the external software is then "tied" to that particular directory service and cannot be easily modified for use with other directory services. Referring again to FIG. 2, and as discussed above, the method and system according to this invention provides an event interface which uses the standard SNMP interface to provide event notification. Such events are implemented as SNMP traps. Access to internal events of directory service 62 via traps can be helpful in a variety of ways. For example, the occurrence of certain traps may indicate that problems are, or are about to, occur. Rapid administration of the directory service after notification of such traps may diminish the severity of the effects of the problem. Other traps may be useful for an external software program which, for example, needs to stay synchronized with the internal state of directory service 62. Traps associated with internal events can also be used by an administrator in monitoring the overall state of directory service 62. Referring again to FIG. 2, as is understood by those skilled in the art, spontaneous transmission of a trap from agent 70 to management station 80 is only one mechanism for communicating such information to management station 80. Another mechanism is for agent 70 to retain the trap information and await to be polled by management station 80. Upon being polled, agent 70 communicates the trap, such as trap 77, to management station 80. Upon reception of trap 77, management station 80 can indicate an alarm in a display window, or perform some action, such as initiating a program. Such programs might be used to further analyze and/or rectify the problem identified by trap 77. Agent 70 can also be configured to communicate trap 77 to other software programs, such as third party program 79 which may use trap 77 to synchronize its internal state with events occurring within directory service 62. Agent 70 can implement any suitable event occurring within directory server 62 as a trap. An example of such traps can include partition traps which provide management station 80 information relating to partition operations, such as a completed partition split trap which is operative to provide information relating to the completion of a split partition operation, and a completed partition join trap which is operative to provide information relating to the completion of a joined partition operation. Trap 77 could also comprise a variety of replica traps operative to provide the management station with information relating to replica operations, including an add replica trap operative to provide information relating to the addition of a new replica, and a remove replica trap operative to provide information relating to the removal of a replica. It is apparent that the use of such information could be very valuable to management station 80 and/or other software systems. The traps defined in MIB 71 according to one embodiment of this invention are disclosed in the attached microfiche. For the sake of illustration, certain traps defined in MIB 71 will be discussed herein in greater detail. Referring to FIG. 3, according to one embodiment of this invention, the traps implemented in trap module 74 can be located at trap node 87 at location 1.3.6.1.4.1.23.2.34 in the hierarchy of the MIB tree. Under this node, a plurality of objects having object identifiers in the form `1.3.6.1.4.1.23.2.34.n` are preferably defined for use with the various traps. Examples of such objects are:
______________________________________
TrapTime OBJECT-TYPE
SYNTAX INTEGER (0..4294967295)
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"The total number of seconds since midnight
(12 am) of 1 January 1970 GMT (UT)."
::= { TrapInfo 1 }
EventType OBJECT-TYPE
SYNTAX INTEGER (0..4294967295)
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"The event type that was reported by the NDS
Event system."
::= { TrapInfo 2 }
Result OBJECT-TYPE
SYNTAX INTEGER (0..4294967295)
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"The result code of a particular NDS operation.
The constant that is associated with this
integer is defined in nwdserr.h."
::= { TrapInfo 3 }
______________________________________
The traps each have an object identifier of 1.3.6.1.4.1.23.2.34 and are distinguished from each other by a specific trap number. It is apparent that the directory service objects could be implemented in a separate MIB from the trap objects. Thus, object module 72 could be implemented in one MIB, and trap module 74 implemented in a second MIB. When a remote directory service server is down, performance can be degraded and it would frequently be useful to be aware of this condition so the remote server can be fixed. Notification of such an event can be provided with a RemoteServerDown trap which can then be communicated to management station 80 notifying the administrator of the situation. The formal ASN.1 definition of a RemoteServerDown trap is as follows:
______________________________________
TRAP-TYPE
ENTERPRISE ndsTrap-MIB
VARIABLES
{
ndsTrapTime,
ndsEventType,
ndsResult,
ndsTransportAddressType,
ndsTransportAddress
DESCRIPTION
"Remote NDS server down"
::= 16
______________________________________
Communication between server computers and client computers in most network operating systems is accomplished through the use of packets transmitted over the network. When the number of packet retries exceeds a threshold limit, this is usually an indication that a problem exists either with the server or the client computer. Upon exceeding the threshold, a NCPRetryExpended trap can be communicated to management station 80 to notify an administrator that a network problem exists. The formal ASN.1 syntax is as follows:
______________________________________
TRAP-TYPE
ENTERPRISE ndsTrap-MIB
VARIABLES
{
ndsTrapTime,
ndsEventType,
ndsResult,
ndsTransportAddressType,
ndsTransportAddress
DESCRIPTION
"nds client NCP retries exceeding threshold"
::= 17
______________________________________
Each copy of a partition is referred to as a replica. Each partition must have at least one replica. Deleting all but the final copy of a replica results in a lack of redundancy, and may indicate an operator error. Upon deleting the second-to-last copy of a replica, a OneReplica trap can be sent to management station 80 to warn an administrator about such a lack of redundancy. The formal ASN.1 syntax for the OneReplica trap is as follows:
______________________________________
TRAP-TYPE
ENTERPRISE ndsTrap-MIB
VARIABLES
{
ndsTrapTime,
ndsEventType,
ndsResult,
ndsPerpetratorName,
ndsProcessID,
ndsConnID,
ndsVerbNumber,
ndsEntryName
DESCRIPTION
"Only one replica"
ndsEntryName = Partition name
::= 41
______________________________________
During the synchronization process, objects having identical names will cause a collision. Upon such a collision, a NameCollision trap can be sent to management station 80 to warn an administrator that a collision occurred, and one of the two objects was automatically renamed. The formal ASN.1 syntax for the NameCollision trap is as follows:
______________________________________
TRAP-TYPE
ENTERPRISE ndsTrap-MIB
VARIABLES
{
ndsTrapTime,
ndsEventType,
ndsResult,
ndsPerpetratorName,
ndsProcessID,
ndsConnID,
ndsVerbNumber,
ndsEntryName,
ndsEntryName2
DESCRIPTION
"NDS name collision"
ndsEntryName = Original entry name
ndsEntryName2 = Dulicate entry name
#TYPE "NDS: name collision"
#SUMMARY "Name collision %s and %s"
#ARGUMENTS {7,8}
#SEVERITY MAJOR
#TIMEINDEX 0
#HELP "ndstrap.hlp"
#HELPTAG 56
#STATE DEGRADED
::= 56
______________________________________
Important events occurring in directory service 62 may justify notification even though such events do not represent problems. For example, upon the merger of two directory trees, a MergeTree trap object can be sent to management station 80 to notify an administrator that two directory service trees are being merged. Upon a reload of directory service 62 a ReloadDS trap can be sent to management station 80 to notify an administrator that the directory service has reloaded. Upon a password change operation associated with a directory object, a ChangePassword trap can be sent to management station 80 to notify an administrator of such a password change. The formal ASN.1 syntax for these traps is as follows:
______________________________________
ndsMergeTree TRAP-TYPE
ENTERPRISE ndsTrap-MIB
VARIABLES
{
ndsTrapTime,
ndsEventType,
ndsResult,
ndsPerpetratorName,
ndsProcessID,
ndsConnID,
ndsVerbNumber,
ndsEntryName,
ndsEntryName2
}
DESCRIPTION
"Merge a tree ndsEntryName2) into another tree
(ndsEntryName2)"
#TYPE "NDS: Merge trees"
#SUMMARY "Merge trees %s and %s"
#ARGUMENTS {7, 8}
#SEVERITY MAJOR
#TIMEINDEX 0
#HELP "ndstrap.hlp"
#HELPTAG 97
#STATE DEGRADED
::= 97
ndsReloadDS
TRAP-TYPE
ENTERPRISE ndsTrap-MIB
VARIABLES
{
ndsTrapTime,
ndsEventType,
ndsResult,
ndsPerpetratorName,
ndsProcessID,
ndsConnID,
ndsVerbNumber,
ndsEntryName
}
DESCRIPTION
"Reload DS"
ndsEntryName = Tree root name
#TYPE "NDS: Reload DS"
#SUMMARY "%s reload DS"
#ARGUMENTS {3}
#SEVERITY MAJOR
#TIMEINDEX 0
#HELP "ndstrap.hlp"
#HELPTAG 116
#STATE OPERATIONAL
::= 116
ndschangePassword
TRAP-TYPE
ENTERPRISE ndsTrap-MIB
VARIABLES
{
ndsTrapTime,
ndsEventType,
ndsResult,
ndsPerpetratorName,
ndsProcessID,
ndsConnID,
ndsVerbNumber,
ndsEntryName
}
DESCRIPTION
"Changing Password"
#TYPE "NDS: Password changed"
#SUMMARY "%s change %s password"
#ARGUMENTS {3, 7}
#SEVERITY MINOR
#TIMEINDEX 0
#HELP "ndstrap.hlp"
#HELPTAG 67
#STATE OPERATIONAL
:= 67
______________________________________
The foregoing description of preferred embodiments of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the inventions to the precise fonn disclosed. Obvious modifications or variations are possible in light of the above teachings. The embodiments were chosen and described in order to best illustrate the principals of the invention and its practical application to thereby enable one of ordinary skill in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto.
|
Same subclass Same class Consider this |
||||||||||
