The SNMP PDU Scrambler is supported in SNMP Agent Simulator and
Network Simulator to customize the request/response SNMP PDU by
exposing it to the user for customization. For example, a request
SNMP PDU can be customized to validate that it contains multiple
varbinds before the agent performs SNMP operation in OIDs. The response
SNMP PDU can be customized, for example, to send garbled/invalid
responses to test the SNMP managers robustness in the event of receiving
bad packets. The level of customization varies depending on your
requirement.
Common test scenarios that can be setup using the SNMP PDU Scrambler
Some of the common test scenarios that can be setup using the
PDU scrambler functionality is given below:
Customize the SNMP PDU to send garbled/error responses
The PDU scrambler enables customizing the request/response PDU
to send error responses.The setErrorIndexAndErrorStatus() in the
PDU scrambler can be used to customize the SNMP PDU to send error
responses.
Validate the request before performing SNMP operations
A request SNMP PDU can be customized, for example, to validate
that it contains multiple varbinds before the agent performs SNMP
operation in OIDs. The level of customization varies depending
on your requirement. The method processRequestPDU( ) in the PDU
scrambler is used to customize the request PDU.
It is also possible to simulate that the SNMP response packet
is lost in the network, and the simulator does not process the
request. If the incoming request PDU is invalid, the updateErrStatAndTerminate()
is updated with the proper error status and error index values.
In this case, the simulator will resend the incoming PDU as 'responsePDU'
without modifying the MIB variables.
Drop PDU based on the incoming request
Updates the response PDU with proper error status and error
index values, if invalid and send a error response to the manager.
Achieve global latency
To achieve global delay in response for SNMP requests, the Thread.sleep()
method must be called inside the processResponsePDU() of the PDU
scrambler. When a query is send from the manager, the response
will be delayed with the specified time.
Achieve latency for a specific range of device
To achieve latency for a specific range of devices in the network,
the incoming IPv4 or IPv6 Address can be obtained by calling the snmpPdu.getIPAddress()
method. If the incoming IP Address is within the specified range,
the Thread.sleep() method can be called.