This table contains one entry per line. It
defines objects which allow a network manager to
instruct an agent to test a line for various
faults. Tests for a line are defined in the
media-specific MIB for that line. After invoking
a test, the object bbSeltTestResult can be read to
determine the outcome. If an agent can not perform
the test, bbSeltTestResult is set to so indicate. The
object bbSeltTestCode can be used to provide further
test-specific or line-specific (or even
enterprise-specific) information concerning the
outcome of the test. Only one test can be in progress
on each line at any one time. If one test is in
progress when another test is invoked, the second test
is rejected. Some agents may reject a test when a
prior test is active on another line.
Before starting a test, a manager-station must first
obtain 'ownership' of the entry in the bbSeltTestTable for
the line to be tested. This is accomplished with
the bbSeltTestId and bbSeltTestStatus objects as follows:
try_again:
get (bbSeltTestId, bbSeltTestStatus)
while (bbSeltTestStatus != notInUse)
/*
* Loop while a test is running or some other
* manager is configuring a test.
*/
short delay
get (bbSeltTestId, bbSeltTestStatus)
}
/*
* Is not being used right now -- let's compete
* to see who gets it.
*/
lock_value = bbSeltTestId
if ( set(bbSeltTestId = lock_value, bbSeltTestStatus = inUse,
bbSeltTestOwner = 'my-IP-address') == FAILURE)
/*
* Another manager got the bbSeltTestEntry -- go
* try again
*/
goto try_again;
/*
* I have the lock
*/
set up any test parameters.
/*
* This starts the test
*/
set(bbSeltTestType = test_to_run);
wait for test completion by polling bbSeltTestResult
when test completes, agent sets bbSeltTestResult
agent also sets bbSeltTestStatus = 'notInUse'
retrieve any additional test results, and bbSeltTestId
if (bbSeltTestId == lock_value+1) results are valid
A manager station first retrieves the value of the
appropriate bbSeltTestId and bbSeltTestStatus objects,
periodically repeating the retrieval if necessary,
until the value of bbSeltTestStatus is 'notInUse'. The
manager station then tries to set the same bbSeltTestId
object to the value it just retrieved, the same
bbSeltTestStatus object to 'inUse', and the corresponding
bbSeltTestOwner object to a value indicating itself. If
the set operation succeeds then the manager has
obtained ownership of the bbSeltTestEntry, and the value of
the bbSeltTestId object is incremented by the agent (per
the semantics of TestAndIncr). Failure of the set
operation indicates that some other manager has
obtained ownership of the bbSeltTestEntry.
Once ownership is obtained, any test parameters can be
setup, and then the test is initiated by setting
bbSeltTestType. On completion of the test, the agent sets
bbSeltTestStatus to 'notInUse'. Once this occurs, the
manager can retrieve the results. In the (rare) event
that the invocation of tests by two network managers
were to overlap, then there would be a possibility that
the first test's results might be overwritten by the
second test's results prior to the first results being
read. This unlikely circumstance can be detected by a
network manager retrieving bbSeltTestId at the same time as
retrieving the test results, and ensuring that the
results are for the desired request.
If bbSeltTestType is not set within an abnormally long
period of time after ownership is obtained, the agent
should time-out the manager, and reset the value of the
bbSeltTestStatus object back to 'notInUse'. It is
suggested that this time-out period be 5 minutes.
In general, a management station must not retransmit a
request to invoke a test for which it does not receive
a response; instead, it properly inspects an agent's
MIB to determine if the invocation was successful.
Only if the invocation was unsuccessful, is the
invocation request retransmitted.
Some tests may require the line to be taken off-
line in order to execute them, or may even require the
agent to reboot after completion of the test. In these
circumstances, communication with the management
station invoking the test may be lost until after
completion of the test. An agent is not required to
support such tests. However, if such tests are
supported, then the agent should make every effort to
transmit a response to the request which invoked the
test prior to losing communication. When the agent is
restored to normal service, the results of the test are
properly made available in the appropriate objects.
Note that this requires that the lineIndex value assigned
to a line must be unchanged even if the test
causes a reboot. An agent must reject any test for
which it cannot, perhaps due to resource constraints,
make available at least the minimum amount of
information after that test completes. |