This table contains one entry per interface. It
defines objects which allow a network manager to
instruct an agent to test an interface for various
faults. Tests for an interface are defined in the
media-specific MIB for that interface. After invoking
a test, the object adslIfTestResult can be read to
determine the outcome. If an agent can not perform
the test, adslIfTestResult is set to so indicate. The
object adslIfTestCode can be used to provide further
test-specific or interface-specific (or even
enterprise-specific) information concerning the
outcome of the test. Only one test can be in progress
on each interface 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 interface.
Before starting a test, a manager-station must first
obtain 'ownership' of the entry in the adslIfTestTable for
the interface to be tested. This is accomplished with
the adslIfTestId and adslIfTestStatus objects as follows:
try_again:
get (adslIfTestId, adslIfTestStatus)
while (adslIfTestStatus != notInUse)
/*
* Loop while a test is running or some other
* manager is configuring a test.
*/
short delay
get (adslIfTestId, adslIfTestStatus)
}
/*
* Is not being used right now -- let's compete
* to see who gets it.
*/
lock_value = adslIfTestId
if ( set(adslIfTestId = lock_value, adslIfTestStatus = inUse,
adslIfTestOwner = 'my-IP-address') == FAILURE)
/*
* Another manager got the adslIfTestEntry -- go
* try again
*/
goto try_again;
/*
* I have the lock
*/
set up any test parameters.
/*
* This starts the test
*/
set(adslIfTestType = test_to_run);
wait for test completion by polling adslIfTestResult
when test completes, agent sets adslIfTestResult
agent also sets adslIfTestStatus = 'notInUse'
retrieve any additional test results, and adslIfTestId
if (adslIfTestId == lock_value+1) results are valid
A manager station first retrieves the value of the
appropriate adslIfTestId and adslIfTestStatus objects,
periodically repeating the retrieval if necessary,
until the value of adslIfTestStatus is 'notInUse'. The
manager station then tries to set the same adslIfTestId
object to the value it just retrieved, the same
adslIfTestStatus object to 'inUse', and the corresponding
adslIfTestOwner object to a value indicating itself. If
the set operation succeeds then the manager has
obtained ownership of the adslIfTestEntry, and the value of
the adslIfTestId 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 adslIfTestEntry.
Once ownership is obtained, any test parameters can be
setup, and then the test is initiated by setting
adslIfTestType. On completion of the test, the agent sets
adslIfTestStatus 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 adslIfTestId at the same time as
retrieving the test results, and ensuring that the
results are for the desired request.
If adslIfTestType 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
adslIfTestStatus 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 interface 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 an interface 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. |