Every so often I have the opportunity to evaluate a software developers kit (SDK) targeted for use in network and services management applications.

I recently evaluated the SNMPv3 Advanced SNMP Agent SDK offered by DMH Software.   A product profile and evaluation synopsis follow.

Product Profile

DMH Software sells a software developers kit consisting of an SMIv2 MIB compiler and their portable, SNMPv3 capable Advanced SNMP Agent runtime libraries.

NetBurner sells a single board device running uc/OS on a Freescale Coldfire 68K processor that served as the embedded target environment.

Evaluation Approach

For this evaluation, the ALARM-MIB (RFC 3877) was implemented using the DMH Software SDK for the NetBurner embedded environment.  The ALARM-MIB was selected for reasons that include:

  • the OBJECT-TYPE definitions include every possible SMIv2 sytnax type.
  • the tables have multiple index components using OCTET STRING and INTEGER syntax types.
  • the two NOTIFICATION-TYPE definitions, alarmActiveState and alarmClearState, enable evaluation of APIs for sending notifications.
  • the design of the alarmActiveVariableTable allows each row to contain one of the variable bindings sent in a notification. As such, the alarmActiveVariableTable is a ‘sparse’ table containing rows with only three accessible object instances out of ten accessible OBJECT TYPE definitions.

To implement the ALARM-MIB, the following steps were taken:

  • the host environment was set up on a Windows XP laptop with the NetBurner supplied Eclipse based IDE and cross compiler, linker and debug utilities.  A NetBurner model 5234 board was used as the target environment.
  • the DMH Software SMIv2 MIB compiler was used to generate code from the ALARM-MIB.
  • custom code was added to the generated code to complete the functional implementation.
  • the NetBurner SDK was used to compile the generated and custom code and to link it with the DMH Software SNMPv3 agent and NetBurner runtime libraries.
  • the resulting executable was flashed onto the NetBurner board and tested using the Net-SNMP command line tools.

Evaluation Results – MIB compiler

The DMH Software SMIv2 MIB compiler is based upon and extends utilities that are part of the well known open-source libsmi distribution.  Thus, I experienced a familiar and comfortable feel with the DMH MIB compiler utilities.  Version 1.4.5.0.5 of the SMIv2 MIB compiler was used in the evaluation.

The code generated for the ALARM-MIB consisted of three source files, alarm-mib.c, alarm-mib.h and alarm-mib-sys.c.  The generated source code was modular, of good quality and well annotated with information from the ALARM-MIB as well as comments that clearly indicated where custom code was required to complete a functional implementation.

During the evaluation I encountered several minor issues with the source code generated from the DMH Software MIB compiler:

  • generated code contained erroneous range checking for the SMIv2 BITS construct.  NOTE: this issue was resolved within three days of reporting it to DMH Software.
  • some code was not generated for the alarmActiveDateAndTime nor alarmClearDateAndTime index components.  NOTE:  this issue was resolved within three days of reporting it to DMH Software.
  • generated code for enumerated values would be a welcome addition.
  • generated code could do a better job handling SMIv2 Textual-Conventions.  Most of the generated code and comments accurately reflect the underlying base syntax type, rather than the restrictions placed upon the base syntax by the Textual-Convention.  NOTE: support for the RowStatus and StorageType Textual-Conventions are built into the SNMPv3 SDK APIs.

Evaluation Results – SNMPv3 SDK

The DMH Software Advanced SNMP Agent was designed to produce a small executable with embedded and real-time applications in mind.  From tests run, I was pleased to find excellent support for version 3 of the SNMP that included the set of SNMPv3 MIBs for USM, VACM, and Notification targets.  Version 5.0.1.12-2 of the SNMPv3 SDK was used in the evaluation.

The provided developers’ documentation consisted of an integrated set of html pages.  It took a little time to get used to navigating the frames and tabs of the documentation to find the information I needed.  In a handful of instances I found information not available in the documentation by searching through the SNMPv3 SDK include files.

The provided API consisted of a small, concise and well thought out set of functions. From my perspective, a small and concise set of functions is beneficial, serving well the target audience of developers creating management applications.  In general, I found the API provided with the DMH SNMPv3 SDK easy to understand and use.

During the evaluation I encountered a couple of minor issues with the DMH SNMPv3 Agent API:

  • the agent cited an error when passed a variable binding tagged with a syntax of Opaque.  NOTE:  This issue was resolved within three days of reporting it to DMH Software.
  • while there are two API functions for sending notifications, neither provided a mechanism for the caller to provide the value for sysUpTime.0 for an outgoing notification.  While perceived as a hindrance upon implementing the ALARM-MIB for this evaluation, DMH did offer to resolve this issue in a future release.

Evaluation Results – Summary and Conclusion

Overall, I was pleased with the functionality, features and support offered by DMH Software in their Advanced SNMP Agent SDK product.

Additionaly, I am pleased to report that the SMIv2 MIB compiler generated modular code of good quality and that DMH Software’s response time on technical issues was superb.

If your software development project involves the NetBurner embedded target environment and has a need for an SNMPv3 agent then I recommend you consider using the DHM Software Advanced SNMP Agent for your software development project.

Please contact me if you need to identify applicable IETF published MIB modules. need to design a private enterprise MIB module, or require a quick and sure start with the DMH SDK.  Find out how easily my expertise and skills can support your development team and contribute to a successful design and realization of your software project.