Cisco Class-based QoS discovery and collection plugin

Introduction

DiffServ-based quality of service is being deployed in many networks these days, and the choice of management systems able to monitor QoS parameters is too narrow.

Cisco IOS provides QoS statistics in its CISCO-CLASS-BASED-QOS-MIB. This MIB is far too complex for a regular SNMP collector.

The cbqos Torrus plugin provides a complete solution for automated SNMP discovery and collection for QoS objects on Cisco routers. It is the first open source solution of this kind.

Other existing tools for QoS monitoring are:

Installation

Follow the Torrus installation guide for the main software installation.

Unpack the plugin distribution package in some directory:

  gzip -dc tp-cisco-cbqos-1.X.tar.gz | tar xvf -

Then run the Torrus plugin installation utility:

  torrus install_plugin tp-cisco-cbqos-1.X

Restart all Torrus processes, including Apache HTTP daemon.

Usage

Use your Torrus the usual way: devdiscover will automatically find QoS objects on your routers, compilexml will find the required templates, and collector will initialize all required tables and will start collecting data.

Note: QoS is a software feature, and there's no means to determine that the configuration has changed. You need to re-run devdiscover and compilexml whenever your QoS configuration changes. As usual, the collector will automatically detect the router reload or Torrus configuration change, and re-initialize its tables.

Tunable parameters

The following parameters may be specified in devdiscover input XML:

RFC2863_IF_MIB selector

The QoS discovery module extends the standard RFC2863_IF_MIB selectors by adding two new actions:

cbQoS selector

The selector type cbQoS can be used to select individual QoS objects (policy maps, class maps) and apply actions to them, such as dropping from configuration, or explicitly including them.

The following selector attributes are supported:

Actions supported:

The following example excludes class-default class maps from the configuration:

    <param name="selectors" value="qos"/>
    <param name="qos-selector-type" value="cbQoS"/>
    <param name="qos-selector-expr"  value="{CMName}"/>
    <param name="qos-CMName" value="^class-default"/>
    <param name="qos-selector-actions"  value="SkipObect"/>

Implementation details

CISCO-CLASS-BASED-QOS-MIB uses complex indexing for statistics objects:

  1. cbQosPolicyIndex in cbQosServicePolicyTable is found by matching 6 values: cbQosIfType, cbQosPolicyDirection, cbQosIfIndex, cbQosFrDLCI, cbQosAtmVPI, cbQosAtmVCI

  2. Use cbQosPolicyIndex to access the cbQosObjectsTable, and find the cbQosObjectsIndex and cbQosConfigIndex assigned to the QoS feature.

  3. Use cbQosConfigIndex to access configuration tables (cbQosxxxCfgTable) for information about the feature.

  4. Use cbQosPolicyIndex and cbQosObjectsIndex to access QoS statistics tables (cbQosxxxStatsTable) for information about the QoS feature.

The plugin introduces a special Torrus collector type, "cisco-cbqos".

Each Torrus datasource is identified by Service Policy, QoS Feature, and associated SNMP objects type.

The following parameters identify the Service Policy:

 cbqos-direction =>
   "input"
   "output"
 cbqos-interface-name (mapping to IF-MIB interface index)
 cbqos-interface-type =>
   "mainInterface"
   "subInterface"
   "frDLCI" =>
     cbqos-fr-dlci
   "atmPVC" =>
     cbqos-atm-vpi
     cbqos-atm-vci

The following parameters identify the QoS Feature:

 cbqos-object-type =>
   "policymap"
   "classmap" =>
     cbqos-class-map-name
   "matchStatement" =>
     cbqos-match-statement-name
   "queueing" =>
     cbqos-queueing-bandwidth
   "randomDetect"
   "trafficShaping" =>
     cbqos-shaping-rate
   "police" =>
     cbqos-police-rate

SNMP objects are defined in regular Torrus XML templates. Collector substitutes POL and OBJ strings in snmp-object parameter with the current values of policy and object index correspondingly.

Development of this plugin was sponsored by Cablecom GmbH.

Recommendations for Cisco ASR 9000

The following configuration commands are recommended for Cisco ASR9K in order to optimize the polling:

    snmp-server ifindex persist
    snmp mib persist cbqos

The following discovery parameters are recommended for corresponding DDX files:

    <param name="CiscoIOS::ifindex-persist" value="yes"/>
    <param name="CiscoIOS_cbQoS::persistent-indexing" value="yes"/>
    <param name="CiscoIOS_cbQoS::suppress-dropnobuf" value="yes"/>
    <param name="CiscoIOS_cbQoS::suppress-match-statements" value="yes"/>

cbQosCMNoBufDropPkt and match statement statistics are not supported in ASR9k, so it's better to disable them, otherwise the collector will issue warnings.


Author

Copyright (c) 2004-2015 Stanislav Sinyagin <ssinyagin@yahoo.com>