XML Mapping

The SMI and SNMP are low-level technologies for representing the structure of management information and for transfering management data. There are deficiencies when large chunks of data have to be transfered or stored. Some people regard Web-based management approaches as the way out of this dilemma.

Libsmi supports an smidump output driver that generates XML Schema definitions for given MIB modules, i.e., XML documents that conform to such an XML Schema definition represent management data portions of the MIBs in question.

To get some data to play with, Torsten Klie has implemented a standalone tool named mibdump that walks through a given MIB on a given SNMP agent and generates an according XML document that conforms to the XML Schema definition.

Jens Müller implemented an SNMP/XML gateway as a Java Servlet that allows to fetch such XML documents on the fly through HTTP. MIB portions can be addressed through XPath(-like) expressions encoded in the URLs to be retrieved. To get an impression how flexible this effort can be the example below shows how to retrieve an XML document from a gateway that contains the descriptions of the interfaces at talisker.ibr.cs.tu-bs.de that are currently in operation and transmitted or received at least one packet.

Mibdump is available via FTP (see the Download section). The gateway is available from Jens' web page on his thesis. If you want to play with these tools, please note that both of them are "proof-of-concept" prototypes.

$ lynx -dump 'http://www.ibr.cs.tu-bs.de/snmp-xml-gw?\
  get=/snmp-data/context[@hostname="talisker.ibr.cs.tu-bs.de"]\
  /ifEntry[ifOperStatus="up" and (ifOutOctets > 0 or ifInOctets > 0)]/ifDescr'

<?xml version="1.0" encoding="UTF-8"?>

<snmp-data xmlns:IF-MIB="http://www.ibr.cs.tu-bs.de/arbeiten/snmp-xml-gw/xsd/IF-MIB.xsd">
  <context ipaddr="134.169.35.130" hostname="134.169.35.130" port="161"
           caching="yes" community="public" time="2003-03-11T18:50:13">
    <IF-MIB:ifEntry ifIndex="1">
      <IF-MIB:ifDescr>AMD PCNetPCI</IF-MIB:ifDescr>
    </IF-MIB:ifEntry>
    <IF-MIB:ifEntry ifIndex="3">
      <IF-MIB:ifDescr>WaveLAN/IEEE</IF-MIB:ifDescr>
    </IF-MIB:ifEntry>
  </context>
</snmp-data>