source: docs/overview.rst @ 212:cc42b0c9300a

Revision 212:cc42b0c9300a, 3.1 KB checked in by Keith Hubbard <keith@…>, 21 months ago (diff)

Minor documentation updates; unhide doc's template and static dirs.

Canner Overview

The canner provides a framework to talk to devices from different vendors running a variety of operating systems. Arbitrary commands can be issued to the device and the raw output is saved in files in a can or snapshot. The canner extracts specific targeted information in a device-dependent manor to highlight the details of the network that is of interest to the operators. New commands can be added to the canner and new details can be extracted as needed by the operator. Additional details can also be extracted from historic snapshots provided the necessary commands were issued when the snapshot was taken.

Tags

The details or properties of the device are identified as snapshot tags. Each tag has a kind to allow it to be compared with similar tags on the same device or on different devices. Not all devices will have the same set of tags but many will have common tags. For instance, most devices will have a tag whose kind is dns server but only certain routers will have a tag whose kind is BGP peer. If a tag is created based on a dependency, a dependency relationship ("implies" or "implied by") should be referenced when the tag is created. This allows analysis tools to display related information to tags. As an example, once an interface IP address and subnet mask are learned, the interface subnet can be calculated. The interface subnet tag is dependent on the interface address. While the interface address tag will likely only be used by a single device (its an error otherwise), the subnet tag will probably be used by several devices. The relationship is used to show all of the interface addresses learned for a particular subnet.

Taggers

Once the output of the issued commands are saved, the taggers are invoked to generate the snapshot tags. Taggers are arbitrary scripts or programs written in any language that process the input file and send tag lines to standard output. They can be written in your favorite language, but high level scripting languages such as Python, Ruby, or Perl work well. We provide several taggers for you written in Python as well as some Python classes you can use to generate tags.

Cans

Each canner snapshot is saved in a directory structure we call a Can. The package directory uses a .netcan extension for identification and because these are Mac OS document packages, Mac OS X knows how to open these and run the appropriate viewer application. Other viewers on different operating systems could do the same. Inside the directory, the raw configuration and command output files are stored. In the Contents subdirectory, a JSON formatted file contains all of the tags generated by the taggers. Also in the Contents directory is a Resources subdirectory that contains HTML versions of the files. The HTML files are generated in advance so that all of the logic that has to understand the format of vendor specific output is located in the taggers in a single place. Programs like the netCannery viewer application for Mac OS X can just display HTML and remain vendor and file format agnostic.

Note: See TracBrowser for help on using the repository browser.