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:
genRtrConfig
by Francois Mikus (http://www.acktomic.com).
This tool is an add-on to Cricket (http://cricket.sourceforge.net). It provides discovery and statistics for non-hierarchical classmaps counters: pre-policy, post-policy, and drop counters.
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.
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.
The following parameters may be specified in devdiscover
input XML:
CiscoIOS_cbQoS::persistent-indexing
Set this to yes
if the router is configured with snmp mib persist
cbqos
. This will reduce the CPU load during the polling cycles, and
also will allow polling some types of objects that were unavailable with
dynamic indexing.
CiscoIOS_cbQoS::red-dscp-values
Optional. Comma-separated list of DSCP values to be used for WRED
statistics. Symbolic names like AF31
or EF
are recognized.
When specified, it overrides the default list defined in
@Torrus::DevDiscover::CiscoIOS_cbQoS::RedDscpValues
in cbqos-config.pl
or in devdiscover-siteconfig.pl.
CiscoIOS_cbQoS::classmaps-only
Optional. When set to yes
, only classmap statistics are set for collection.
Suppressed are statistics for match statements, queueing, RED, shaping,
and policying. This significantly reduces the size of datasource tree,
amount of SNMP queries, and collector execution time.
CiscoIOS_cbQoS::suppress-match-statements
Optional. When set to yes
, disables the match statement statistics.
These statistics usually don't bring much of additional information.
Besides, in some IOS versions they are almost always not updated (known
for: 12.2(15)T7, ...).
CiscoIOS_cbQoS::suppress-dropnobuf
Optional. When set to yes
, disables classmap Dropped No Buffer statistics.
CiscoIOS_cbQoS::default-skip-qos-stats
If this parameter is set to yes
, all QoS statistics are disabled for
all interfaces, except those that match a selector with QoSStats
action.
The QoS discovery module extends the standard RFC2863_IF_MIB
selectors by adding two new actions:
NoQoSStats
This action disables the QoS statistiics for an interface that matched the selector.
QoSStats
If CiscoIOS_cbQoS::default-skip-qos-stats
is set to yes
, this
action enables QoS statistics for those interfaces which match the
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:
NoQoSStats
This action disables the QoS statistics for interfaces where the matched policy map is attached.
QoSStats
If CiscoIOS_cbQoS::default-skip-qos-stats
is set to yes
, this
action enables QoS statistics for those interfaces where matched policy
maps are attached.
SkipObect
A matched class-map or policy-map is excluded from Torrus configuration.
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"/>
CISCO-CLASS-BASED-QOS-MIB uses complex indexing for statistics objects:
cbQosPolicyIndex
in cbQosServicePolicyTable
is found by matching
6 values: cbQosIfType
, cbQosPolicyDirection
, cbQosIfIndex
,
cbQosFrDLCI
, cbQosAtmVPI
, cbQosAtmVCI
Use cbQosPolicyIndex
to access the cbQosObjectsTable
, and find the
cbQosObjectsIndex
and cbQosConfigIndex
assigned to the QoS feature.
Use cbQosConfigIndex
to access configuration tables
(cbQosxxxCfgTable
) for information about the feature.
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.
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.
Copyright (c) 2004-2015 Stanislav Sinyagin <ssinyagin@yahoo.com>