Several of the MPLS MIB tables support a nextObjectIndex counter (this was introduced in Chapter 3, "The Network Management Problem"). This provides a convenient means of learning the next available free entry in the table. A manager simply has to poll the value of this object to learn the next free index. An important aspect of this is synchronization when more than one user may attempt to use the same free index. This could occur if two clients simultaneously attempted to use the same value. The result of this would be that one of the two clients would inadvertently cause an SNMP bad value exception to occur. One solution to this would be for the clients to channel their requests for this object value through the NMS. The latter could then implement a synchronization procedure to ensure that multiple requests are queued. In this way, the clients are guaranteed that the index value they receive is unique. Alternatively, the intelligence can be put in the MIB so that when the object is retrieved, it is also automatically incremented. This is perhaps slightly less desirable because it means that a read of the object value results in a change. Another approach is to use the TestAndIncr type. In this, an object (let's call it indexSpinLock ) of type TestAndIncr is used to store the current next available free index. The NMS reads the value of indexSpinLock and creates a new table row. At the same time, we also set the retrieved value of indexSpinLock (into the object indexSpinLock ). If the current value of indexSpinLock and the value we set it to do not match, then the SNMP request will fail. |