9. Configuring ValuPoint as an SNMP Server

9.1       Creating Local SNMP MIB

The ValuPoint VP6-1460-WNMP starts out with no variables in its MIB just like it starts out with no local registers. When you do create local registers, you then have a choice of where to make them show up in the MIB. The ValuPoint VP6-1460-SNMP uses the same MIB as the Babel Buster BB3-6101-V3 gateway. There are five branches in the BB3 MIB, although only the Integer branch is guaranteed to be universally accessible to all other SNMP devices. It is up to you to select which branch of the MIB to place each local register in. You do not need to place all local registers in the MIB, only those that you want externally accessible via SNMP. You must also place local registers in the MIB in order to generate SNMP traps related to those local registers.

To add a local register to a MIB branch, simply enter the local register number at the next available OID which will always automatically be at the bottom of the list. When placing registers in the Integer branch, you also have the option of applying a scale factor. Scaled integer is the most universally recognized means of transmitting non-integer data.

In this example, we have selected a scale factor fo x100. That means that our local value of 5.19 will be transmitted (in a Get response) as integer 519 and it is up to the recipient to know that this is scaled x100.

After adding new members to the MIB, it is necessary to click Reload SNMP before they will become accessible to an external SNMP manager's Get request.

Local registers added to the Float 32-Bit MIB branch will be provided in IEEE 754 format per RFC 6340.

Local registers defined as character strings may be added to the Char String branch of the MIB. Registers in this branch will be provided as an Octet String.

The "Auto-fill" at the bottom of each MIB page can be used to very quickly create a long list of sequential MIB table entries. Enter the number of variables to fill, the starting MIB index, and the starting local register number. Then click the Auto-Fill button.

The example above will create the list illustrated below, assuming the first ten local registers are all 16-bit integer registers.

The example illustrated below is a little more complex. The first ten local registers are floating point, which means they are treated as register pairs. Then the next couple of local "registers" are character strings each 40 characters in length, and each occupying 20 consecutive Modbus registers. Note that the "auto-fill" automatically accounts for data size, and choses the next local register appropriately. In this example, although the registers are a mix of floating point and character string, they are assigned to the Integer 32-bit branch of the MIB and will be read via SNMP as Integer values. The numbers in the character string registers are ASCII string representations of numbers, but will be converted to integer. For example, MIB index 12, with the character string "5.678", will be returned as an integer value 6 in an SNMP Get (converted and rounded).

The Auto-Fill simply sets up the MIB mapping table. Before the variables can be accessed by SNMP, you need to click Reload SNMP. The Remove and Insert Before buttons also just set up the mapping table, and you need to click Reload SNMP to make the new assignments accessible.

To clear the mapping table displayed, click the Confirm box and then click the Clear button. This clears the mapping table, but as with Auto-Fill, no changes (from the perspective of SNMP as viewed from the outside) take place until you click Reload SNMP. The Clear button is mainly useful if you change your mind about the auto-fill you just did.

Due to SNMP's memory allocation scheme, you can always increase the size of the MIB by simply clicking Reload SNMP; however, to reduce the size of the MIB, you need to save your configuration on the File Manager page, and then restart the ValuPoint. If you reduce the number of entries in the mapping table, the original MIB variables at the end of the original list will simply return zero or empty strings until the ValuPoint is restarted.

9.2       Supported Data Formats, RFC 6340

SNMP does not have a universally accepted representation for floating point. The one universally known data type is INTEGER. A commonly recomended means of transmitting floating point data is either as a scaled integer or as an ASCII character string. There is an RFC 6340 for representation of floating point based on IEEE 754 encoding. The "Float 32-bit" and "Float 64-bit" data types in the ValuPoint refer to RFC 6340 encoding.

Specifically, the data types found in the ValuPoint MIB are encoded with ASN types as follows:

Integer 32-Bit INTEGER ASN_INTEGER
Unsigned 64-Bit COUNTER64 (ASN_APPLICATION | 6)
Float 32-bit OCTET STRING ASN_OCTET_STR (length 4)
Float 64-bit OCTET STRING ASN_OCTET_STR (length 8)
Char String OCTET STRING ASN_OCTET_STR (length variable)

9.3       SNMPv3 Users, Authentication, Privacy

SNMPv3 user authentication is established on this page. The only difference between SNMPv2 and SNMPv3 is the user authentication.

Enter the user name. Select authentication type and provide an authentication passphrase (password) if applicable. Select privacy type and provide a privacy passphrase (password) if applicable.

You may have an insecure user with no authentication or privacy. You may have a user with authentication but no privacy. You may have users with both authentication and privacy (encryption). However, you may not have privacy without authentication.

You may use this ValuPoint as an SNMPv2 agent. In this case, a default SNMPv3 user is automatically created for you, but will not appear on the above list.

Check Delete and then Update to remove the user from the list.

9.4       Agent ID

The name, location, and contact listed here may be retrieved by the remote SNMP client under the SNMP MIB-2 System branch starting at 1.3.6.1.2.1.1.

Browsing the MIB-2 System variables would return the following given the above example. Some of the System variables are either fixed or generated automatically.

9.5       SNMPv3 Engine Info

Engine ID currently in use is displayed. The default engine ID is created per RFC 3411 based on the IPv6 IP address (required since the device is operating in dual stack mode). If a static IPv6 address is configured, that will be used, otherwise the auto-configured IPv6 address (link-local) will be used. The auto-configured IPv6 address is derived from the device's MAC address.

Engine Boots is the number of times this device has booted up. You normally have no need to alter this count. However, if you are replacing an existing SNMPv3 device, you should set the boots count to whatever the count was in the device being replaced since part of SNMPv3 security is to see that engine boots is incrementally bigger than before if it changes at all. To change the boot count, enter the new count, check the Set New box, click Update and then (after the page finishes refreshing), restart this device.

Seconds since start is displayed for information only.

9.6       SNMPv2 Community

Check Allow if SNMP v1/v2c should be permitted to access the MIB in this device. The v1/v2c community must be used by the remote SNMP v1/v2c client to Get or Set this device. The name "public" is no longer accepted (unless you explicitly enter it here - not recommended). Changes to the allow/disallow status for v1/v2c will take effect upon the next restart.

9.7       Testing the SNMP Agent

A variety of tools are available for browsing an SNMP MIB and receiving SNMP Traps. The tool used in the following examples is the iReasoning MIB Browser. Refer to the Tools section under Support at csimn.com for more information about SNMP tools.

The MIB browser allows you to view the MIB variables in the ValuPoint. Before you can browse the MIB in a meaningful way, you need to load the MIB files that tell the browser what it needs to know about the BB3's MIB. There are one or more files that need to be loaded, and these are available under Documents and Links on the VP6-1460-WNMP product page at csimn.com. Once you have loaded these files as illustrated below, you can view the tree structure of the MIB in the browser.

Enter the IP address of the ValuPoint VP6-1460-WNMP in the Address window. In addition. click on Advanced... to set access parameters.

Click Advanced... to open the dialog that lets you enter the user name and password(s) required for accessing the MIB in the ValuPoint.

To read a MIB variable from the ValuPoint, start by selecting the register member of the data table. In this case, we are selecting the 32-Bit Integer branch of the MIB.

You will need to specify which row in the table you want to read. Do this by appending (by typing) a number to the OID that appeared in the OID window when you clicked on the table entry in the MIB tree view.

To cause the MIB browser to Get a value from the ValuPoint, select Get from the Operations menu. You can select Get from either menu, left or right, in the iReasoning browser. Once Get is selected on the right, you only need to click the Go button to repeat the Get.

Upon successfully Getting a value, the display will appear as illustrated below.

If you attempt to Get a variable that does not exist, you will get the error message illustrated below. This will also happen if the variable has been added to the MIB but you forgot to click Reload SNMP after adding the local register to the MIB. This will also happen if you did not select the right variable from the MIB tree shown, or forgot to add the index to the end of the OID in the Object ID window.

Getting our floating point value will appear as follows. The bytes "42 A4 83 12" translate to the floating point version of 82.255997. You can use Google to locate conversion tools to go from IEEE 754 hexadecimal representation (as shown in the browser) to decimal.

The SNMP Get of our character string is illustrated below. Although encoded generically as an Octet String, the MIB browser is kind enough to display it as an ASCII string since it found the string to be all printable characters.