Ethereal-dev: RE: [Ethereal-dev] COPS-PR extension patch for packet-cops.c
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: <kari.tiirikainen@xxxxxxxxx>
Date: Tue, 26 Feb 2002 12:40:41 +0200
KTi> -----Original Message----- KTi> From: ext Guy Harris [mailto:gharris@xxxxxxxxx] KTi> Sent: 22. February 2002 13:19 KTi> Subject: Re: [Ethereal-dev] COPS-PR extension patch for KTi> packet-cops.c KTi> KTi> KTi> You don't prevent it, you make the dissector handle it. Duh, my bad. Coding all day long makes Kari a dull boy... KTi> Ethereal supports reassembling packets that require more KTi> than one TCP KTi> segment; I've added code to the COPS dissector to handle that. Thanks a million. Here is another enhancement for the COPS-PR dissector, it's relative to packet-cops.c,v 1.21 2002/02/22 21:52:09 This enchancement is able to use SNMP library (I used UCD) to print the textual names of the PIBs OIDs, if available. One of course needs to convert the PIB to MIB first (according to rules given in RFC 3159). I included a somewhat working version of DiffServ-PIB converted to MIB, for testing purposes. I also cleaned my earlier code a bit. Best Regards, Kari
Index: packet-cops.c
===================================================================
RCS file: /cvsroot/ethereal/packet-cops.c,v
retrieving revision 1.22
diff -u -r1.22 packet-cops.c
--- packet-cops.c 2002/02/26 11:15:01 1.22
+++ packet-cops.c 2002/02/26 11:31:33
@@ -4,7 +4,7 @@
*
* Copyright 2000, Heikki Vatiainen <hessu@xxxxxxxxx>
*
- * $Id: packet-cops.c,v 1.22 2002/02/26 11:15:01 kari Exp $
+ * $Id: packet-cops.c,v 1.21 2002/02/22 21:52:09 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@xxxxxxxxxxxx>
@@ -38,6 +38,147 @@
#include <epan/packet.h>
#include "packet-ipv6.h"
#include "packet-frame.h"
+
+#if defined(HAVE_UCD_SNMP_SNMP_H) || defined(HAVE_SNMP_SNMP_H)
+ /*
+ * UCD or CMU SNMP?
+ */
+
+#define MAX_STRING_LEN 2048 /* TBC */
+
+# if defined(HAVE_UCD_SNMP_SNMP_H)
+ /*
+ * UCD SNMP.
+ */
+# include <ucd-snmp/asn1.h>
+# include <ucd-snmp/snmp_api.h>
+# include <ucd-snmp/snmp_impl.h>
+# include <ucd-snmp/mib.h>
+
+ /*
+ * Sigh. UCD SNMP 4.1.1 makes "snmp_set_suffix_only()" a macro
+ * that calls "ds_set_int()" with the first two arguments
+ * being DS_LIBRARY_ID and DS_LIB_PRINT_SUFFIX_ONLY; this means that,
+ * when building with 4.1.1, we need to arrange that
+ * <ucd-snmp/default_store.h> is included, to define those two values
+ * and to declare "ds_int()".
+ *
+ * However:
+ *
+ * 1) we can't include it on earlier versions (at least not 3.6.2),
+ * as it doesn't exist in those versions;
+ *
+ * 2) we don't want to include <ucd-snmp/ucd-snmp-includes.h>,
+ * as that includes <ucd-snmp/snmp.h>, and that defines a whole
+ * bunch of values that we also define ourselves.
+ *
+ * So we only include it if "snmp_set_suffix_only" is defined as
+ * a macro.
+ */
+# ifdef snmp_set_suffix_only
+# include <ucd-snmp/default_store.h>
+# endif
+
+ /*
+ * XXX - for now, we assume all versions of UCD SNMP have it.
+ */
+# define HAVE_SPRINT_VALUE
+
+ /*
+ * Define values "sprint_value()" expects.
+ */
+# define VALTYPE_INTEGER ASN_INTEGER
+# define VALTYPE_COUNTER ASN_COUNTER
+# define VALTYPE_GAUGE ASN_GAUGE
+# define VALTYPE_TIMETICKS ASN_TIMETICKS
+# define VALTYPE_STRING ASN_OCTET_STR
+# define VALTYPE_IPADDR ASN_IPADDRESS
+# define VALTYPE_OPAQUE ASN_OPAQUE
+# define VALTYPE_NSAP ASN_NSAP
+# define VALTYPE_OBJECTID ASN_OBJECT_ID
+# define VALTYPE_BITSTR ASN_BIT_STR
+# define VALTYPE_COUNTER64 ASN_COUNTER64
+
+# ifdef RED_HAT_MODIFIED_UCD_SNMP
+# include <ucd-snmp/parse.h>
+# endif
+
+
+# elif defined(HAVE_SNMP_SNMP_H)
+ /*
+ * CMU SNMP.
+ */
+# include <snmp/snmp.h>
+
+ /*
+ * Some older versions of CMU SNMP may lack these values (e.g., the
+ * "libsnmp3.6" package for Debian, which is based on some old
+ * CMU SNMP, perhaps 1.0); for now, we assume they also lack
+ * "sprint_value()".
+ */
+# ifdef SMI_INTEGER
+# define HAVE_SPRINT_VALUE
+ /*
+ * Define values "sprint_value()" expects.
+ */
+# define VALTYPE_INTEGER SMI_INTEGER
+# define VALTYPE_COUNTER SMI_COUNTER32
+# define VALTYPE_GAUGE SMI_GAUGE32
+# define VALTYPE_TIMETICKS SMI_TIMETICKS
+# define VALTYPE_STRING SMI_STRING
+# define VALTYPE_IPADDR SMI_IPADDRESS
+# define VALTYPE_OPAQUE SMI_OPAQUE
+# define VALTYPE_NSAP SMI_STRING
+# define VALTYPE_OBJECTID SMI_OBJID
+# define VALTYPE_BITSTR ASN_BIT_STR
+# define VALTYPE_COUNTER64 SMI_COUNTER64
+# endif
+ /*
+ * Now undo all the definitions they "helpfully" gave us, so we don't get
+ * complaints about redefining them.
+ *
+ * Why, oh why, is there no library that provides code to
+ *
+ * 1) read MIB files;
+ *
+ * 2) translate object IDs into names;
+ *
+ * 3) let you find out, for a given object ID, what the type, enum
+ * values, display hint, etc. are;
+ *
+ * in a *simple* fashion, without assuming that your code is part of an
+ * SNMP agent or client that wants a pile of definitions of PDU types,
+ * etc.? Is it just that 99 44/100% of the code that uses an SNMP library
+ * *is* part of an agent or client, and really *does* need that stuff,
+ * and *doesn't* need the interfaces we want?
+ */
+# undef SNMP_ERR_NOERROR
+# undef SNMP_ERR_TOOBIG
+# undef SNMP_ERR_NOSUCHNAME
+# undef SNMP_ERR_BADVALUE
+# undef SNMP_ERR_READONLY
+# undef SNMP_ERR_NOACCESS
+# undef SNMP_ERR_WRONGTYPE
+# undef SNMP_ERR_WRONGLENGTH
+# undef SNMP_ERR_WRONGENCODING
+# undef SNMP_ERR_WRONGVALUE
+# undef SNMP_ERR_NOCREATION
+# undef SNMP_ERR_INCONSISTENTVALUE
+# undef SNMP_ERR_RESOURCEUNAVAILABLE
+# undef SNMP_ERR_COMMITFAILED
+# undef SNMP_ERR_UNDOFAILED
+# undef SNMP_ERR_AUTHORIZATIONERROR
+# undef SNMP_ERR_NOTWRITABLE
+# undef SNMP_ERR_INCONSISTENTNAME
+# undef SNMP_TRAP_COLDSTART
+# undef SNMP_TRAP_WARMSTART
+# undef SNMP_TRAP_LINKDOWN
+# undef SNMP_TRAP_LINKUP
+# undef SNMP_TRAP_EGPNEIGHBORLOSS
+# undef SNMP_TRAP_ENTERPRISESPECIFIC
+# endif
+#endif
+
#include "asn1.h"
#include "prefs.h"
@@ -1017,6 +1158,12 @@
gchar *vb_display_string;
+ guint variable_length;
+
+#if defined(HAVE_UCD_SNMP_SNMP_H) || defined(HAVE_SNMP_SNMP_H)
+ gchar vb_oid_string[MAX_STRING_LEN]; /* TBC */
+#endif
+
unsigned int i;
gchar *buf;
int len;
@@ -1058,24 +1205,6 @@
return ret;
length = asn1.offset - start;
if (tree) {
-#ifdef HAVE_SPRINT_VALUE
- if (!unsafe) {
-#if defined(HAVE_UCD_SNMP_SNMP_H)
- value = vb_integer_value;
- variable.val.integer = &value;
-#elif defined(HAVE_SNMP_SNMP_H)
- variable.val.integer = &vb_integer_value;
-#endif
- vb_display_string = format_var(&variable,
- variable_oid, variable_oid_length, vb_type,
- vb_length);
- proto_tree_add_text(tree, asn1.tvb, offset,
- length,
- "Value: %s", vb_display_string);
- g_free(vb_display_string);
- break; /* we added formatted version to the tree */
- }
-#endif /* HAVE_SPRINT_VALUE */
proto_tree_add_text(tree, asn1.tvb, offset, length,
"Value: %s: %d (%#x)", vb_type_name,
vb_integer_value, vb_integer_value);
@@ -1091,24 +1220,6 @@
return ret;
length = asn1.offset - start;
if (tree) {
-#ifdef HAVE_SPRINT_VALUE
- if (!unsafe) {
-#if defined(HAVE_UCD_SNMP_SNMP_H)
- value = vb_uinteger_value;
- variable.val.integer = &value;
-#elif defined(HAVE_SNMP_SNMP_H)
- variable.val.integer = &vb_uinteger_value;
-#endif
- vb_display_string = format_var(&variable,
- variable_oid, variable_oid_length, vb_type,
- vb_length);
- proto_tree_add_text(tree, asn1->tvb, offset,
- length,
- "Value: %s", vb_display_string);
- g_free(vb_display_string);
- break; /* we added formatted version to the tree */
- }
-#endif /* HAVE_SPRINT_VALUE */
proto_tree_add_text(tree, asn1.tvb, offset, length,
"Value: %s: %u (%#x)", vb_type_name,
vb_uinteger_value, vb_uinteger_value);
@@ -1126,19 +1237,6 @@
return ret;
length = asn1.offset - start;
if (tree) {
-#ifdef HAVE_SPRINT_VALUE
- if (!unsafe) {
- variable.val.string = vb_octet_string;
- vb_display_string = format_var(&variable,
- variable_oid, variable_oid_length, vb_type,
- vb_length);
- proto_tree_add_text(tree, asn1.tvb, offset,
- length,
- "Value: %s", vb_display_string);
- g_free(vb_display_string);
- break; /* we added formatted version to the tree */
- }
-#endif /* HAVE_SPRINT_VALUE */
/*
* If some characters are not printable, display
* the string as bytes.
@@ -1194,9 +1292,46 @@
if (ret != ASN1_ERR_NOERROR)
return ret;
length = asn1.offset - start;
+
+ if (tree) {
+ vb_display_string = format_oid(vb_oid,
+ vb_oid_length);
+
+#if defined(HAVE_UCD_SNMP_SNMP_H) || defined(HAVE_SNMP_SNMP_H)
+# ifdef RED_HAT_MODIFIED_UCD_SNMP
+ sprint_objid(binit(NULL, vb_oid_string, sizeof(vb_oid_string)),
+ vb_oid, vb_oid_length);
+# else
+ sprint_objid(vb_oid_string, vb_oid,
+ vb_oid_length);
+# endif
+ proto_tree_add_text(tree, asn1.tvb, offset, length,
+ "Value: %s: %s (%s)", vb_type_name,
+ vb_display_string, vb_oid_string);
+
+ break;
+
+#else /* defined(HAVE_UCD_SNMP_SNMP_H) || defined(HAVE_SNMP_SNMP_H) */
+ proto_tree_add_text(tree, asn1.tvb, offset, length,
+ "Value: : %s: %s",vb_type_name, vb_display_string);
+ break;
+
+#endif /* defined(HAVE_UCD_SNMP_SNMP_H) || defined(HAVE_SNMP_SNMP_H) */
+
+ proto_tree_add_text(tree, asn1.tvb, offset, length,
+ "Value: %s: %s", vb_type_name, vb_display_string);
+ g_free(vb_display_string);
+ }
+
+
+
+#ifdef OLD
+
if (tree) {
#ifdef HAVE_SPRINT_VALUE
if (!unsafe) {
+
+
variable.val.objid = vb_oid;
vb_display_string = format_var(&variable,
variable_oid, variable_oid_length, vb_type,
@@ -1207,11 +1342,15 @@
break; /* we added formatted version to the tree */
}
#endif /* HAVE_SPRINT_VALUE */
+
vb_display_string = format_oid(vb_oid, vb_oid_length);
proto_tree_add_text(tree, asn1.tvb, offset, length,
"Value: %s: %s", vb_type_name, vb_display_string);
g_free(vb_display_string);
}
+#endif
+
+
g_free(vb_oid);
break;
DIFFSERV-PIB DEFINITIONS ::= BEGIN
qosPolicyPib OBJECT IDENTIFIER ::= { 1 }
-- textual conventions
Unsigned32 ::= INTEGER
PolicyInstanceId ::= INTEGER
PolicyReferenceId ::= INTEGER
TruthValue ::= INTEGER
RoleCombination ::= OCTET STRING
BurstSize ::= TEXTUAL-CONVENTION
DISPLAY-HINT "d"
STATUS current
DESCRIPTION
"The number of octets of IP Data, including IP Headers, that a stream may send without concern for policing."
SYNTAX INTEGER (0..'7FFFFFFF'h)
SnmpAdminString ::= TEXTUAL-CONVENTION
DISPLAY-HINT "255a"
STATUS current
DESCRIPTION "An octet string containing administrative information, preferably in human-readable form. To facilitate
internationalization, this information is represented using the ISO/IEC IS 10646-1 character set, encoded as an octet string using
the UTF-8 transformation format described in [RFC2279]. Since additional code points are added by amendments to the 10646 standard
from time to time, implementations must be prepared to encounter any code point from 0x00000000 to 0x7fffffff. Byte sequences that
do not correspond to the valid UTF-8 encoding of a code point or are outside this range are prohibited. The use of control codes
should be avoided. When it is necessary to represent a newline, the control code sequence CR LF should be used. The use of leading
or trailing white space should be avoided. For code points not directly supported by user interface hardware or software, an
alternative means of entry and display, such as hexadecimal, may be provided. For information encoded in 7-bit US-ASCII, the UTF-8
encoding is identical to the US-ASCII encoding. UTF-8 may require multiple bytes to represent a single character / code point; thus
the length of this object in octets may be different from the number of characters encoded. Similarly, size constraints refer to the
number of encoded octets, not the number of characters represented by an encoding. Note that when this TC is used for an object that
is used or envisioned to be used as an index, then a SIZE restriction MUST be specified so that the number of sub-identifiers for
any object instance does not exceed the limit of 128, as defined by [RFC1905]. Note that the size of an SnmpAdminString object is
measured in octets, not characters."
SYNTAX OCTET STRING (SIZE (0..255))
Prid ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"Represents a pointer to a PRI, i.e,. to an instance of a PRC. The value is the OID name of the PRC's row definition, appended with
one sub-identifier containing the value of the InstanceId value for the referenced instance. The definition of an attribute with
this syntax can permit the attribute to have a value of 0.0 to indicate that it is not currently pointing to a PRI."
SYNTAX OBJECT IDENTIFIER
TagId ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"Represents a tag value, such that all instances of a particular PRC having the same tag value form a tag list. A tag list is
identified by the tag value shared by all instances in that tag list."
SYNTAX Unsigned32 (1..4294967295)
TagReferenceId ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"Represents a reference to a tag list of instances of a particular PRC. The particular PRC must have an attribute with the syntax of
TagId. The tag list consists of all instances which have the same value of the TagId attribute. Reference to the tag list is via the
attribute with the syntax of TagReferenceId containing the tag value which identifies the tag list. The definition of an attribute
with this syntax can permit the attribute to have a value of 0 to indicate that it is not currently referencing a tag list."
SYNTAX Unsigned32
Integer32 ::= INTEGER (-2147483648..2147483647)
InstanceId ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"The textual convention for use by an attribute which is used as the instance-identifying index of a PRC, i.e., an attribute named
in a PIB-INDEX clause. The value of an attribute with this syntax is always greater than zero. PRIs of the same PRC need not have
contiguous values for their instance-identifying attribute."
SYNTAX Unsigned32 (1..4294967295)
PrcIdentifier ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"An OID that identifies a PRC. The value MUST be an OID assigned to a PRC's row definition. An attribute with this syntax can have
the value 0.0 (zeroDotZero) to indicate that it currently does not identify a PRC."
SYNTAX OBJECT IDENTIFIER
Dscp ::= TEXTUAL-CONVENTION
DISPLAY-HINT "d"
STATUS current
DESCRIPTION
"A Differentiated Services Code-Point that may be used for marking a traffic stream."
REFERENCE
"RFC 2474, RFC 2780"
SYNTAX Integer32 (0..63)
IfDirection ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"IfDirection specifies a direction of data travel on an interface. 'inbound' traffic is operated on during reception from the
interface, while 'outbound' traffic is operated on prior to transmission on the interface."
SYNTAX INTEGER {
inbound(1), -- ingress interface
outbound(2) -- egress interface
}
AttrIdentifier ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"A Unsigned32 value that identifies an attribute in a PRC. A AttrIdentifier value is always interpreted within the context of a
PrcIdentifier value. The PrcIdentifier object which defines the context must be registered immediately before the object which uses
the AttrIdentifier textual convention. An attribute with this syntax can have the value 0 to indicate that it currently does not
identify a PRC attribute."
SYNTAX Unsigned32
qosCapabilityClasses OBJECT IDENTIFIER ::= { qosPolicyPib 1 }
qosPolicyClasses OBJECT IDENTIFIER ::= { qosPolicyPib 2 }
qosPolicyParameters OBJECT IDENTIFIER ::= { qosPolicyPib 3 }
qosPolicyPibConformance OBJECT IDENTIFIER ::= { qosPolicyPib 4 }
qosBaseIfCapsTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosBaseIfCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The Base Interface Capability class. This class represents a generic capability supported by a device in the ingress, egress
or both directions."
::= { qosCapabilityClasses 1 }
qosBaseIfCapsEntry OBJECT-TYPE
SYNTAX QosBaseIfCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An instance of this class describes the qosBaseIfCaps class."
INDEX { qosBaseIfCapsPrid }
::= { qosBaseIfCapsTable 1 }
QosBaseIfCapsEntry ::= SEQUENCE {
qosBaseIfCapsPrid InstanceId,
qosBaseIfCapsDirection Integer32
}
qosBaseIfCapsPrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosBaseIfCapsEntry 1 }
qosBaseIfCapsDirection OBJECT-TYPE
SYNTAX Integer32 {
inbound(1),
outbound(2),
inAndOut(3)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object specifies the direction(s) for which the capability applies. A value of 'inbound(1)' means the capability applies
only to the ingress direction. A value of 'outbound(2)' means the capability applies only to the egress direction. A value of
'inAndOut(3)' means the capability applies to both directions."
::= { qosBaseIfCapsEntry 2 }
qosIfClassificationCapsTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosIfClassificationCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table specifies the classification capabilities of an interface type"
::= { qosCapabilityClasses 2 }
qosIfClassificationCapsEntry OBJECT-TYPE
SYNTAX QosIfClassificationCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An instance of this class describes the classification capabilities of an interface."
::= { qosIfClassificationCapsTable 1 }
QosIfClassificationCapsEntry ::= SEQUENCE {
qosIfClassificationCapsSpec BITS
}
qosIfClassificationCapsSpec OBJECT-TYPE
SYNTAX BITS {
ipSrcAddrClassification(1),
ipDstAddrClassification(2),
ipProtoClassification(3),
ipDscpClassification(4),
ipL4Classification(5),
ipV6FlowID(6)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Bit set of supported classification capabilities. In addition to these capabilities, other PIBs may define other capabilities
that can then be specified in addition to the ones specified here (or instead of the ones specified here if none of these are
specified)."
::= { qosIfClassificationCapsEntry 1 }
qosIfMeteringCapsTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosIfMeteringCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table specifies the metering capabilities of an interface type"
::= { qosCapabilityClasses 3 }
qosIfMeteringCapsEntry OBJECT-TYPE
SYNTAX QosIfMeteringCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An instance of this class describes the classification capabilities of an interface."
::= { qosIfMeteringCapsTable 1 }
QosIfMeteringCapsEntry ::= SEQUENCE {
qosIfMeteringCapsSpec INTEGER
}
qosIfMeteringCapsSpec OBJECT-TYPE
SYNTAX BITS
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Bit set of supported metering capabilities. As with classification capabilities, these metering capabilities may be augmented
by capabilities specified in other PRCs (in other PIBs)."
::= { qosIfMeteringCapsEntry 1 }
qosIfAlgDropCapsTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosIfAlgDropCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table specifies the algorithmic dropper capabilities of an interface type"
::= { qosCapabilityClasses 4 }
qosIfAlgDropCapsEntry OBJECT-TYPE
SYNTAX QosIfAlgDropCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An instance of this class describes the algorithm dropper capabilities of an interface."
::= { qosIfAlgDropCapsTable 1 }
QosIfAlgDropCapsEntry ::= SEQUENCE {
qosIfAlgDropCapsType BITS,
qosIfAlgDropCapsMQCount Unsigned32
}
qosIfAlgDropCapsType OBJECT-TYPE
SYNTAX BITS {
tailDrop(2),
headDrop(3),
randomDrop(4),
alwaysDrop(5),
mQDrop(6) }
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The type of algorithm that droppers associated with queues may use. The tailDrop(2) algorithm means that packets are dropped
from the tail of the queue when the associated queue's MaxQueueSize is exceeded. The headDrop(3) algorithm means that packets
are dropped from the head of the queue when the associated queue's MaxQueueSize is exceeded. The randomDrop(4) algorithm means
that an algorithm is executed which may randomly drop the packet, or drop other packet(s) from the queue in its place. The
specifics of the algorithm may be proprietary. However, parameters would be specified in the qosRandomDropTable. The
alwaysDrop(5) will drop every packet presented to it. The mQDrop(6) algorithm will drop packets based on measurement from
multiple queues."
::= { qosIfAlgDropCapsEntry 1 }
qosIfAlgDropCapsMQCount OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Indicates the number of queues measured for the drop algorithm. This attribute is ignored when alwaysDrop(5) algorithm is used.
This attribute contains the value of 1 for all drop algorithm types except for mQDrop(6), where this attribute is used to
indicate the maximum number of qosMQAlgDropEntry that can be chained together."
DEFVAL { 1 }
::= { qosIfAlgDropCapsEntry 2 }
qosIfQueueCapsTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosIfQueueCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table specifies the scheduling capabilities of an interface type"
::= { qosCapabilityClasses 5 }
qosIfQueueCapsEntry OBJECT-TYPE
SYNTAX QosIfQueueCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An instance of this class describes the queue capabilities of an interface type."
::= { qosIfQueueCapsTable 1 }
QosIfQueueCapsEntry ::= SEQUENCE {
qosIfQueueCapsMinQueueSize Unsigned32,
qosIfQueueCapsMaxQueueSize Unsigned32,
qosIfQueueCapsTotalQueueSize Unsigned32
}
qosIfQueueCapsMinQueueSize OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Some interfaces may allow the size of a queue to be configured. This attribute specifies the minimum size that can be configured
for a queue, specified in bytes."
::= { qosIfQueueCapsEntry 1 }
qosIfQueueCapsMaxQueueSize OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Some interfaces may allow the size of a queue to be configured. This attribute specifies the maximum size that can be configured
for a queue, specified in bytes."
::= { qosIfQueueCapsEntry 2 }
qosIfQueueCapsTotalQueueSize OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Some interfaces may have a limited buffer space to be shared amongst all queues of that interface while also allowing the size
of each queue to be configurable. To prevent the situation where the PDP configures the sizes of the queues in excess of the
total buffer available to the interface, the PEP can report the total buffer space in bytes available with this capability."
::= { qosIfQueueCapsEntry 3 }
qosIfSchedulerCapsTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosIfSchedulerCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table specifies the scheduler capabilities of an interface type"
::= { qosCapabilityClasses 6 }
qosIfSchedulerCapsEntry OBJECT-TYPE
SYNTAX QosIfSchedulerCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An instance of this class describes the scheduler capabilities of an interface type."
::= { qosIfSchedulerCapsTable 1 }
QosIfSchedulerCapsEntry ::= SEQUENCE {
qosIfSchedulerCapsServiceDisc OBJECT IDENTIFIER,
qosIfSchedulerCapsMaxInputs Unsigned32,
qosIfSchedulerCapsMinMaxRate BITS
}
qosIfSchedulerCapsServiceDisc OBJECT-TYPE
SYNTAX OBJECT IDENTIFIER
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The scheduling discipline for which the set of capabilities specified in this object apply. Object identifiers for several
general purpose and well-known scheduling disciplines are defined in the Scheduler Method Parameters section of this PIB. These
include Priority, WRR, WFQ."
::= { qosIfSchedulerCapsEntry 1 }
qosIfSchedulerCapsMaxInputs OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum number of queues and/or schedulers that can feed into a scheduler indicated by this capability entry for this
interface type. A value of zero means there is no maximum."
::= { qosIfSchedulerCapsEntry 2 }
qosIfSchedulerCapsMinMaxRate OBJECT-TYPE
SYNTAX BITS
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Scheduler capability indicating ability to handle inputs with minimum rate, maximum rate, or both."
::= { qosIfSchedulerCapsEntry 3 }
qosIfMaxRateCapsTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosIfMaxRateCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table specifies the maximum rate capabilities of an interface type"
::= { qosCapabilityClasses 7 }
qosIfMaxRateCapsEntry OBJECT-TYPE
SYNTAX QosIfMaxRateCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An instance of this class describes the maximum rate capabilities of an interface type."
::= { qosIfMaxRateCapsTable 1 }
QosIfMaxRateCapsEntry ::= SEQUENCE {
qosIfMaxRateCapsMaxLevels Unsigned32
}
qosIfMaxRateCapsMaxLevels OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum number of levels a maximum rate specification may have for this interface type and flow direction."
::= { qosIfMaxRateCapsEntry 1 }
qosIfElmDepthCapsTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosIfElmDepthCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table specifies the number of elements of the same type that can be cascaded together in a data path."
::= { qosCapabilityClasses 8 }
qosIfElmDepthCapsEntry OBJECT-TYPE
SYNTAX QosIfElmDepthCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An instance of this class describes the cascade depth for a particular functional datapath element PRC. A functional datapath
element not represented in this table can be assumed to have no specific maximum depth."
::= { qosIfElmDepthCapsTable 1 }
QosIfElmDepthCapsEntry ::= SEQUENCE {
qosIfElmDepthCapsPrc PrcIdentifier,
qosIfElmDepthCapsCascadeMax Unsigned32
}
qosIfElmDepthCapsPrc OBJECT-TYPE
SYNTAX PrcIdentifier
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The object identifier of a PRC that represents a functional datapath element. This may be one of: qosClfrElementEntry,
qosMeterEntry, qosActionEntry, qosAlgDropEntry, qosQEntry, or qosSchedulerEntry. The value is the OID of the table entry. There
may not be more than one instance of this class with the same value of qosIfElmDepthCapsPrc."
::= { qosIfElmDepthCapsEntry 1 }
qosIfElmDepthCapsCascadeMax OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum number of elements of type qosIfElmDepthCapsPrc that can be linked consecutively in a data path. A value of zero
indicates there is no specific maximum."
::= { qosIfElmDepthCapsEntry 2 }
qosIfElmLinkCapsTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosIfElmLinkCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table specifies what types of datapath functional elements may be used as the next downstream element for a specific type
of functional element."
::= { qosCapabilityClasses 9 }
qosIfElmLinkCapsEntry OBJECT-TYPE
SYNTAX QosIfElmLinkCapsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An instance of this class specifies a PRC that may be used as the next functional element after a specific type of element in a
data path."
::= { qosIfElmLinkCapsTable 1 }
QosIfElmLinkCapsEntry ::= SEQUENCE {
qosIfElmLinkCapsPrc PrcIdentifier,
qosIfElmLinkCapsAttr AttrIdentifier,
qosIfElmLinkCapsNextPrc PrcIdentifier
}
qosIfElmLinkCapsPrc OBJECT-TYPE
SYNTAX PrcIdentifier
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The value is the OID of a PRC that represents a functional datapath element. This OID must not have the value zeroDotZero."
::= { qosIfElmLinkCapsEntry 1 }
qosIfElmLinkCapsAttr OBJECT-TYPE
SYNTAX AttrIdentifier
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The value represents the attribute in the PRC indicated by qosIfElmLinkCapsPrc that is used to specify the next functional
element in the datapath. The attribute value corresponds to the order in which the attribute appears in the definition of the
PRC. A value of 1 indicates the first attribute of the PRC, a value of 2 indicates the second attribute of the PRC, and so
forth."
::= { qosIfElmLinkCapsEntry 2 }
qosIfElmLinkCapsNextPrc OBJECT-TYPE
SYNTAX PrcIdentifier
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The value is the OID of a PRC table entry from which instances can be referenced by the attribute indicated by
qosIfElmLinkCapsPrc and qosIfElmLinkAttr. For example, suppose a meter's success output can be an action or another meter, and
the fail output can only be an action. This can be expressed as follows:
Prid Prc Attr NextPrc
1 qosMeterEntry qosMeterSucceedNext qosActionEntry
2 qosMeterEntry qosMeterSucceedNext qosMeterEntry
3 qosMeterEntry qosMeterFailNext qosActionEntry.
zeroDotZero is a valid value for this attribute to specify that the PRC specified in qosIfElmLinkCapsPrc is the last functional
data path element."
::= { qosIfElmLinkCapsEntry 3 }
qosDataPathTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosDataPathEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The data path table indicates the start of functional data paths in this device."
::= { qosPolicyClasses 1 }
qosDataPathEntry OBJECT-TYPE
SYNTAX QosDataPathEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Each entry in this table indicates the start of a single functional data path, defined by its interface name, role combination
and traffic direction. The first functional datapath element to handle traffic for each data path is defined by the
qosDataPathStart attribute of each table entry. Notice for each entry:
1. qosDataPathIfName must reference an existing interface capability name in frwkIfCapSetTable [FR-PIB].
2. qosDataPathRoles must reference existing Role Combination in frwkIfRoleComboTable [FR-PIB].
3. qosDataPathStart must reference an existing entry in a functional data path element table.
If any one or more of these three requirements is not satisfied, the qosDataPathEntry will not be installed."
INDEX { qosDataPathPrid }
::= { qosDataPathTable 1 }
QosDataPathEntry ::= SEQUENCE {
qosDataPathPrid InstanceId,
qosDataPathIfName SnmpAdminString,
qosDataPathRoles RoleCombination,
qosDataPathIfDirection IfDirection,
qosDataPathStart Prid
}
qosDataPathPrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosDataPathEntry 1 }
qosDataPathIfName OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The interface capability set to which this data path entry applies. The interface capability name specified by this attribute
must exist in the frwkIfCapSetTable [FR-PIB] prior to association with an instance of this class."
::= { qosDataPathEntry 2 }
qosDataPathRoles OBJECT-TYPE
SYNTAX RoleCombination
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The interfaces to which this data path entry applies, specified in terms of roles. There must exist an entry in the
frwkIfRoleComboTable [FR-PIB] specifying this role combination, together with the interface capability set specified by
qosDataPathIfName, prior to association with an instance of this class."
::= { qosDataPathEntry 3 }
qosDataPathIfDirection OBJECT-TYPE
SYNTAX IfDirection
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Specifies the direction for which this data path entry applies on this interface."
::= { qosDataPathEntry 4 }
qosDataPathStart OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This selects the first functional datapath element to handle traffic for this data path. This Prid should point to an instance
of one of:
qosClfrEntry
qosMeterEntry
qosActionEntry
qosAlgDropEntry
qosQEntry
The PRI pointed to must exist prior to the installation of this datapath start element."
::= { qosDataPathEntry 5 }
qosClfrTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosClfrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table enumerates all the Diffserv classifier functional data path elements of this device. The actual classification
definitions are detailed in qosClfrElementTable entries belonging to each classifer. An entry in this table, referenced by an
upstream functional data path element or a datapath table entry, is the entry point to the classifier functional data path
element. The qosClfrId of each entry is used to organize all classifier elements belonging to the same classifier."
REFERENCE
"[MODEL] section 4.1"
::= { qosPolicyClasses 2 }
qosClfrEntry OBJECT-TYPE
SYNTAX QosClfrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the classifier table describes a single classifier. Each classifier element belonging to this classifier must have
its qosClfrElementClfrId attribute equal to qosClfrId."
INDEX { qosClfrPrid }
::= { qosClfrTable 1 }
QosClfrEntry ::= SEQUENCE {
qosClfrPrid InstanceId,
qosClfrId TagReferenceId
}
qosClfrPrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosClfrEntry 1 }
qosClfrId OBJECT-TYPE
SYNTAX TagReferenceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Identifies a Classifier. A Classifier must be complete, this means all traffic handled by a Classifier must match at least one
Classifier Element within the Classifier."
::= { qosClfrEntry 2 }
qosClfrElementTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosClfrElementEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The classifier element table enumerates the relationship between classification patterns and subsequent downstream diffserv
functional data path elements. Classification parameters are defined by entries of filter tables pointed to by
qosClfrElementSpecific. There can be filter tables of different types, and they can be inter-mixed and used within a classifier.
An example of a filter table is the frwkIpFilterTable, defined in [FR-PIB], for IP Multi-Field Classifiers (MFCs)."
REFERENCE
"[MODEL] section 4.1"
::= { qosPolicyClasses 3 }
qosClfrElementEntry OBJECT-TYPE
SYNTAX QosClfrElementEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the classifier element table describes a single element of the classifier."
INDEX { qosClfrElementPrid }
::= { qosClfrElementTable 1 }
QosClfrElementEntry ::= SEQUENCE {
qosClfrElementPrid InstanceId,
qosClfrElementClfrId TagId,
qosClfrElementPrecedence Unsigned32,
qosClfrElementNext Prid,
qosClfrElementSpecific Prid
}
qosClfrElementPrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosClfrElementEntry 1 }
qosClfrElementClfrId OBJECT-TYPE
SYNTAX TagId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"A classifier is composed of one or more classifier elements. Each classifier element belonging to the same classifier uses the
same classifier ID. Hence, A classifier Id identifies which classifier this classifier element is a part of. This needs to be the
value of qosClfrId attribute for an existing instance of qosClfrEntry."
::= { qosClfrElementEntry 2 }
qosClfrElementPrecedence OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The relative order in which classifier elements are applied: higher numbers represent classifier elements with higher
precedence. Classifier elements with the same precedence must be unambiguous i.e. they must define non-overlapping patterns, and
are considered to be applied simultaneously to the traffic stream. Classifier elements with different precedence may overlap in
their filters: the classifier element with the highest precedence that matches is taken. On a given interface, there must be a
complete classifier in place at all times in the ingress direction. This means that there will always be one or more filters that
match every possible pattern that could be presented in an incoming packet. There is no such requirement in the egress
direction."
DEFVAL { 0 }
::= { qosClfrElementEntry 3 }
qosClfrElementNext OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This attribute provides one branch of the fan-out functionality of a classifier described in [MODEL] section 4.1. This selects
the next diffserv functional datapath element to handle traffic for this data path. A value of zeroDotZero marks the end of
DiffServ processing for this data path. Any other value must point to a valid (pre-existing) instance of one of:
qosClfrEntry
qosMeterEntry
qosActionEntry
qosAlgDropEntry
qosQEntry."
DEFVAL { zeroDotZero }
::= { qosClfrElementEntry 4 }
qosClfrElementSpecific OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"A pointer to a valid entry in another table that describes the applicable classification filter, e.g. an entry in
frwkIpFilterTable [FR-PIB]. The PRI pointed to must exist prior to the installation of this classifier element. The value
zeroDotZero is interpreted to match anything not matched by another classifier element - only one such entry may exist for each
classifier."
DEFVAL { zeroDotZero }
::= { qosClfrElementEntry 5 }
qosMeterTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosMeterEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table enumerates specific meters that a system may use to police a stream of traffic. The traffic stream to be metered is
determined by the element(s) upstream of the meter i.e. by the object(s) that point to each entry in this table. This may
include all traffic on an interface. Specific meter details are to be found in table entry referenced by qosMeterSpecific."
REFERENCE "[MODEL] section 5.1"
::= { qosPolicyClasses 4 }
qosMeterEntry OBJECT-TYPE
SYNTAX QosMeterEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the meter table describes a single conformance level of a meter."
INDEX { qosMeterPrid }
::= { qosMeterTable 1 }
QosMeterEntry ::= SEQUENCE {
qosMeterPrid InstanceId,
qosMeterSucceedNext Prid,
qosMeterFailNext Prid,
qosMeterSpecific Prid
}
qosMeterPrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosMeterEntry 1 }
qosMeterSucceedNext OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"If the traffic does conform, this selects the next diffserv functional datapath element to handle traffic for this data path.
The value zeroDotZero in this variable indicates no further Diffserv treatment is performed on traffic of this datapath. Any
other value must point to a valid (pre-existing) instance of one of:
qosClfrEntry
qosMeterEntry
qosActionEntry
qosAlgDropEntry
qosQEntry."
DEFVAL { zeroDotZero }
::= { qosMeterEntry 2 }
qosMeterFailNext OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"If the traffic does not conform, this selects the next diffserv functional datapath element to handle traffic for this data
path. The value zeroDotZero in this variable indicates no further Diffserv treatment is performed on traffic of this datapath.
Any other value must point to a valid (pre-existing) instance of one of:
qosClfrEntry
qosMeterEntry
qosActionEntry
qosAlgDropEntry
qosQEntry."
DEFVAL { zeroDotZero }
::= { qosMeterEntry 3 }
qosMeterSpecific OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This indicates the behaviour of the meter by pointing to an entry containing detailed parameters. Note that entries in that
specific table must be managed explicitly. For example, qosMeterSpecific may point to an entry in qosTBMeterTable, which
contains an instance of a single set of Token Bucket parameters. The PRI pointed to must exist prior to installing this Meter
datapath element."
::= { qosMeterEntry 4 }
qosTBParamTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosTBParamEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table enumerates token-bucket meter parameter sets that a system may use to police a stream of traffic. Such parameter
sets are modelled here as each having a single rate and a single burst size. Multiple entries are used when multiple rates/burst
sizes are needed."
REFERENCE
"[MODEL] section 5.1"
::= { qosPolicyClasses 5 }
qosTBParamEntry OBJECT-TYPE
SYNTAX QosTBParamEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry that describes a single token-bucket parameter set."
INDEX { qosTBParamPrid }
::= { qosTBParamTable 1 }
QosTBParamEntry ::= SEQUENCE {
qosTBParamPrid InstanceId,
qosTBParamType OBJECT IDENTIFIER,
qosTBParamRate Unsigned32,
qosTBParamBurstSize BurstSize,
qosTBParamInterval Unsigned32
}
qosTBParamPrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosTBParamEntry 1 }
qosTBParamType OBJECT-TYPE
SYNTAX OBJECT IDENTIFIER
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The Metering algorithm associated with the Token-Bucket parameters. zeroDotZero indicates this is unknown. Standard values for
generic algorithms are as follows: qosTBParamSimpleTokenBucket, qosTBParamAvgRate, qosTBParamSrTCMBlind, qosTBParamSrTCMAware,
qosTBParamTrTCMBlind, qosTBParamTrTCMAware, qosTBParamTswTCM. These are specified in this PIB as OBJECT-IDENTITYs under
qosPolicyParameters; additional values may be further specified in other PIBs."
REFERENCE
"[MODEL] section 5"
::= { qosTBParamEntry 2 }
qosTBParamRate OBJECT-TYPE
SYNTAX Unsigned32
UNITS "kilobits per second"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The token-bucket rate, in kilobits per second (kbps). This attribute is used for:
1. CIR in RFC 2697 for srTCM
2. CIR and PIR in RFC 2698 for trTCM
3. CTR and PTR in RFC 2859 for TSWTCM
4. AverageRate in [MODEL] section 5."
::= { qosTBParamEntry 3 }
qosTBParamBurstSize OBJECT-TYPE
SYNTAX BurstSize
UNITS "Bytes"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum number of bytes in a single transmission burst. This attribute is used for:
1. CBS and EBS in RFC 2697 for srTCM
2. CBS and PBS in FRC 2698 for trTCM
3. Burst Size in [MODEL] section 5."
::= { qosTBParamEntry 4 }
qosTBParamInterval OBJECT-TYPE
SYNTAX Unsigned32
UNITS "microseconds"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The time interval used with the token bucket. For:
1. Average Rate Meter, [MODEL] section 5.2.1, - Delta.
2. Simple Token Bucket Meter, [MODEL] section 5.1, - time interval t.
3. RFC 2859 TSWTCM, - AVG_INTERVAL.
4. RFC 2697 srTCM, RFC 2698 trTCM, - token bucket update time interval."
::= { qosTBParamEntry 5 }
qosActionTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosActionEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The Action Table enumerates actions that can be performed to a stream of traffic. Multiple actions can be concatenated. For
example, after marking a stream of traffic exiting from a meter, a device can then perform a mark action of the conforming or
non-conforming traffic. Specific actions are indicated by qosAction-Specific which points to an entry of a specific action type
parameterizing the action in detail."
REFERENCE
"[MODEL] section 6."
::= { qosPolicyClasses 6 }
qosActionEntry OBJECT-TYPE
SYNTAX QosActionEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Each entry in the action table allows description of one specific action to be applied to traffic."
INDEX { qosActionPrid }
::= { qosActionTable 1 }
QosActionEntry ::= SEQUENCE {
qosActionPrid InstanceId,
qosActionNext Prid,
qosActionSpecific Prid
}
qosActionPrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosActionEntry 1 }
qosActionNext OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This selects the next diffserv functional datapath element to handle traffic for this data path. The value zeroDotZero in this
variable indicates no further Diffserv treatment is performed on traffic of this datapath. Any other value must point to a valid
(pre-existing) instance of one of:
qosClfrEntry
qosMeterEntry
qosActionEntry
qosAlgDropEntry
qosQEntry."
DEFVAL { zeroDotZero }
::= { qosActionEntry 2 }
qosActionSpecific OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"A pointer to an object instance providing additional information for the type of action indicated by this action table entry.
For the standard actions defined by this PIB module, this should point to an instance of qosDscpMarkActEntry. For other actions,
it may point to an instance of a PRC defined in some other PIB. The PRI pointed to must exist prior to installing this action
datapath entry."
::= { qosActionEntry 3 }
qosDscpMarkActTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosDscpMarkActEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table enumerates specific DSCPs used for marking or remarking the DSCP field of IP packets. The entries of this table may
be referenced by a qosActionSpecific attribute."
REFERENCE
"[MODEL] section 6.1"
::= { qosPolicyClasses 7 }
qosDscpMarkActEntry OBJECT-TYPE
SYNTAX QosDscpMarkActEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the DSCP mark action table that describes a single DSCP used for marking."
INDEX { qosDscpMarkActPrid }
::= { qosDscpMarkActTable 1 }
QosDscpMarkActEntry ::= SEQUENCE {
qosDscpMarkActPrid InstanceId,
qosDscpMarkActDscp Dscp
}
qosDscpMarkActPrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosDscpMarkActEntry 1 }
qosDscpMarkActDscp OBJECT-TYPE
SYNTAX Dscp
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The DSCP that this Action uses for marking/remarking traffic. Note that a DSCP value of -1 is not permitted in this table. It is
quite possible that the only packets subject to this Action are already marked with this DSCP. Note also that Diffserv may result
in packet remarking both on ingress to a network and on egress from it and it is quite possible that ingress and egress would
occur in the same router."
::= { qosDscpMarkActEntry 2 }
qosAlgDropTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosAlgDropEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The algorithmic drop table contains entries describing a functional data path element that drops packets according to some
algorithm."
REFERENCE
"[MODEL] section 7.1.3"
::= { qosPolicyClasses 9 }
qosAlgDropEntry OBJECT-TYPE
SYNTAX QosAlgDropEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry describes a process that drops packets according to some algorithm. Further details of the algorithm type are to be
found in qosAlgDropType and with more detail parameter entry pointed to by qosAlgDropSpecific when necessary."
INDEX { qosAlgDropPrid }
::= { qosAlgDropTable 1 }
QosAlgDropEntry ::= SEQUENCE {
qosAlgDropPrid InstanceId,
qosAlgDropType INTEGER,
qosAlgDropNext Prid,
qosAlgDropQMeasure Prid,
qosAlgDropQThreshold Unsigned32,
qosAlgDropSpecific Prid
}
qosAlgDropPrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosAlgDropEntry 1 }
qosAlgDropType OBJECT-TYPE
SYNTAX INTEGER {
other(1),
tailDrop(2),
headDrop(3),
randomDrop(4),
alwaysDrop(5),
mQDrop(6)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The type of algorithm used by this dropper. A value of tailDrop(2), headDrop(3), or alwaysDrop(5) represents an algorithm that
is completely specified by this PIB. A value of other(1) indicates that the specifics of the drop algorithm are specified in some
other PIB module, and that the qosAlgDropSpecific attribute points to an instance of a PRC in that PIB that specifies the
information necessary to implement the algorithm. The tailDrop(2) algorithm is described as follows: qosAlgDropQThreshold
represents the depth of the queue, pointed to by qosAlgDropQMeasure, at which all newly arriving packets will be dropped. The
headDrop(3) algorithm is described as follows: if a packet arrives when the current depth of the queue, pointed to by
qosAlgDropQMeasure, is at qosAlgDropQThreshold, packets currently at the head of the queue are dropped to make room for the new
packet to be enqueued at the tail of the queue. The randomDrop(4) algorithm is described as follows: on packet arrival, an
algorithm is executed which may randomly drop the packet, or drop other packet(s) from the queue in its place. The specifics of
the algorithm may be proprietary. For this algorithm, qosAlgDropSpecific points to a qosRandomDropEntry that describes the
algorithm. For this algorithm, qosAlgQThreshold is understood to be the absolute maximum size of the queue and additional
parameters are described in qosRandomDropTable. The alwaysDrop(5) algorithm always drops packets. In this case, the other
configuration values in this Entry are not meaningful; The queue is not used, therefore, qosAlgDropNext, qosAlgDropQMeasure, and
qosAlgDropSpecific should be all set to zeroDotZero. The mQDrop(6) algorithm measures multiple queues for the drop algorithm. The
queues measured are represented by having qosAlgDropQMeasure referencing a qosMQAlgDropEntry. Each of the chained
qosMQAlgDropEntry is used to describe the drop algorithm for one of the measured queues."
::= { qosAlgDropEntry 2 }
qosAlgDropNext OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This selects the next diffserv functional datapath element to handle traffic for this data path. The value zeroDotZero in this
attribute indicates no further Diffserv treatment is performed on traffic of this datapath. Any other value must point to a valid
(pre-existing) instance of one of:
qosClfrEntry
qosMeterEntry
qosActionEntry
qosAlgDropEntry
qosQEntry.
When qosAlgDropType is alwaysDrop(5), this attribute is Ignored."
DEFVAL { zeroDotZero }
::= { qosAlgDropEntry 3 }
qosAlgDropQMeasure OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Points to a PRI to indicate the queues that a drop algorithm is to monitor when deciding whether to drop a packet. For
alwaysDrop(5), this attribute should be zeroDotZero. For tailDrop(2), headDrop(3), randomDrop(4), this should point to an entry
in the qosQTable. For mQDrop(6), this should point to a qosMQAlgDropEntry that Describe one of the queues being measured for
multiple queue dropper. The PRI pointed to must exist prior to installing this dropper element."
::= { qosAlgDropEntry 4 }
qosAlgDropQThreshold OBJECT-TYPE
SYNTAX Unsigned32
UNITS "Bytes"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"A threshold on the depth in bytes of the queue being measured at which a trigger is generated to the dropping algorithm, unless
qosAlgDropType is alwaysDrop(5) where this attribute is ignored. For the tailDrop(2) or headDrop(3) algorithms, this represents
the depth of the queue, pointed to by qosAlgDropQMeasure, at which the drop action will take place. Other algorithms will need to
define their own semantics for this threshold."
::= { qosAlgDropEntry 5 }
qosAlgDropSpecific OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Points to a table entry that provides further detail regarding a drop algorithm. The PRI pointed to must exist prior to
installing this dropper element. Entries with qosAlgDropType equal to other(1) must have this point to an instance of a PRC
defined in another PIB module. Entries with qosAlgDropType equal to randomDrop(4) must have this point to an entry in
qosRandomDropTable. Entries with qosAlgDropType equal to mQDrop(6) can use this attribute to reference parameters that is used by
all the queues of the multiple queues being measured. For all other algorithms, this should take the value zeroDotZero."
::= { qosAlgDropEntry 6 }
qosMQAlgDropTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosMQAlgDropEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The multiple queue algorithmic drop table contains entries describing each queue being measured for the multiple queue
algorithmic dropper."
::= { qosPolicyClasses 10 }
qosMQAlgDropEntry OBJECT-TYPE
SYNTAX QosMQAlgDropEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry describes a process that drops packets according to some algorithm. Each entry is used for each of the multiple queues
being measured. Each entry extends the basic qosAlgDropEntry with adding of a qosMQAlgDropExceedNext attribute. Further details
of the algorithm type are to be found in qosAlgDropType and with more detail parameter entry pointed to by qosMQAlgDropSpecific
when necessary."
::= { qosMQAlgDropTable 1 }
QosMQAlgDropEntry ::= SEQUENCE {
qosMQAlgDropExceedNext Prid
}
qosMQAlgDropExceedNext OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Used for linking of multiple qosMQAlgDropEntry for mQDrop. A value of zeroDotZero indicates this is the last of a chain of
qosMQAlgDropEntry."
DEFVAL { zeroDotZero }
::= { qosMQAlgDropEntry 1 }
qosRandomDropTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosRandomDropEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The random drop table contains entries describing a process that drops packets randomly. Entries in this table is intended to be
pointed to by qosAlgDropSpecific."
REFERENCE
"[MODEL] section 7.1.3"
::= { qosPolicyClasses 11 }
qosRandomDropEntry OBJECT-TYPE
SYNTAX QosRandomDropEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry describes a process that drops packets according to a random algorithm."
INDEX { qosRandomDropPrid }
::= { qosRandomDropTable 1 }
QosRandomDropEntry ::= SEQUENCE {
qosRandomDropPrid InstanceId,
qosRandomDropMinThreshBytes Unsigned32,
qosRandomDropMinThreshPkts Unsigned32,
qosRandomDropMaxThreshBytes Unsigned32,
qosRandomDropMaxThreshPkts Unsigned32,
qosRandomDropProbMax Unsigned32,
qosRandomDropWeight Unsigned32,
qosRandomDropSamplingRate Unsigned32
}
qosRandomDropPrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosRandomDropEntry 1 }
qosRandomDropMinThreshBytes OBJECT-TYPE
SYNTAX Unsigned32
UNITS "bytes"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The average queue depth in bytes, beyond which traffic has a non-zero probability of being dropped."
::= { qosRandomDropEntry 2 }
qosRandomDropMinThreshPkts OBJECT-TYPE
SYNTAX Unsigned32
UNITS "packets"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The average queue depth in packets, beyond which traffic has a non-zero probability of being dropped."
::= { qosRandomDropEntry 3 }
qosRandomDropMaxThreshBytes OBJECT-TYPE
SYNTAX Unsigned32
UNITS "bytes"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The average queue depth beyond which traffic has a probability indicated by qosRandomDropProbMax of being dropped or marked.
Note that this differs from the physical queue limit, which is stored in qosAlgDropQThreshold."
::= { qosRandomDropEntry 4 }
qosRandomDropMaxThreshPkts OBJECT-TYPE
SYNTAX Unsigned32
UNITS "packets"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The average queue depth beyond which traffic has a probability indicated by qosRandomDropProbMax of being dropped or marked.
Note that this differs from the physical queue limit, which is stored in qosAlgDropQThreshold."
::= { qosRandomDropEntry 5 }
qosRandomDropProbMax OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The worst case random drop probability, expressed in drops per thousand packets. For example, if every packet may be dropped in
the worst case (100%), this has the value 1000. Alternatively, if in the worst case one percent (1%) of traffic may be dropped,
it has the value 10."
::= { qosRandomDropEntry 6 }
qosRandomDropWeight OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The weighting of past history in affecting the Exponentially Weighted Moving Average function which calculates the current
average queue depth. The equation uses qosRandomDropWeight/MaxValue as the coefficient for the new sample in the equation, and
(MaxValue - qosRandomDropWeight)/MaxValue as the coefficient of the old value, where, MaxValue is determined via capability
reported by the PEP. Implementations may further limit the values of qosRandomDropWeight via the capability tables."
::= { qosRandomDropEntry 7 }
qosRandomDropSamplingRate OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The number of times per second the queue is sampled for queue average calculation. A value of zero means the queue is sample
approximately each time a packet is enqueued (or dequeued)."
::= { qosRandomDropEntry 8 }
qosQTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosQEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The Queue Table enumerates the queues."
::= { qosPolicyClasses 12 }
qosQEntry OBJECT-TYPE
SYNTAX QosQEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the Queue Table describes a single queue as a functional data path element."
INDEX { qosQPrid }
::= { qosQTable 1 }
QosQEntry ::= SEQUENCE {
qosQPrid InstanceId,
qosQNext Prid,
qosQMinRate Prid,
qosQMaxRate Prid
}
qosQPrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosQEntry 1 }
qosQNext OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This selects the next diffserv scheduler. This must point to a qosSchedulerEntry. A value of zeroDotZero in this attribute
indicates an incomplete qosQEntry instance. In such a case, the entry has no operational effect, since it has no parameters to
give it meaning."
::= { qosQEntry 2 }
qosQMinRate OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This Prid indicates the entry in qosMinRateTable the scheduler, pointed to by qosQNext, should use to service this queue. If
this value is zeroDotZero, then minimum rate and priority is unspecified. If this value is not zeroDotZero then the instance
pointed to must exist prior to installing this entry."
::= { qosQEntry 3 }
qosQMaxRate OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This Prid indicates the entry in qosMaxRateTable the scheduler, pointed to by qosQNext, should use to service this queue. If
this value is zeroDotZero, then the maximum rate is the line speed of the interface. If this value is not zeroDotZero then the
instance pointed to must exist prior to installing this entry."
::= { qosQEntry 4 }
qosSchedulerTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosSchedulerEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The Scheduler Table enumerates packet schedulers. Multiple scheduling algorithms can be used on a given datapath, with each
algorithm described by one qosSchedulerEntry."
REFERENCE
"[MODEL] section 7.1.2"
::= { qosPolicyClasses 13 }
qosSchedulerEntry OBJECT-TYPE
SYNTAX QosSchedulerEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the Scheduler Table describing a single instance of a scheduling algorithm."
INDEX { qosSchedulerPrid }
::= { qosSchedulerTable 1 }
QosSchedulerEntry ::= SEQUENCE {
qosSchedulerPrid InstanceId,
qosSchedulerNext Prid,
qosSchedulerMethod OBJECT IDENTIFIER,
qosSchedulerMinRate Prid,
qosSchedulerMaxRate Prid
}
qosSchedulerPrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosSchedulerEntry 1 }
qosSchedulerNext OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This selects the next diffserv functional datapath element to handle traffic for this data path. This attribute normally have a
value of zeroDotZero to indicate no further Diffserv treatment is performed on traffic of this datapath. The use of zeroDotZero
is the normal usage for the last functional datapath element. Any value other than zeroDotZero must point to a valid
(pre-existing) instance of one of:
qosSchedulerEntry
qosQEntry,
or: qosClfrEntry
qosMeterEntry
qosActionEntry
qosAlgDropEntry
This points to another qosSchedulerEntry for implementation of multiple scheduler methods for the same data path, and for
implementation of hierarchical schedulers."
DEFVAL { zeroDotZero }
::= { qosSchedulerEntry 2 }
qosSchedulerMethod OBJECT-TYPE
SYNTAX OBJECT IDENTIFIER
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The scheduling algorithm used by this Scheduler. Standard values for generic algorithms: qosSchedulerPriority, qosSchedulerWRR,
qosSchedulerWFQ are specified in this PIB. Additional values may be further specified in other PIBs. A value of zeroDotZero
indicates this is unknown."
REFERENCE
"[MODEL] section 7.1.2"
::= { qosSchedulerEntry 3 }
qosSchedulerMinRate OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This Prid indicates the entry in qosMinRateTable which indicates the priority or minimum output rate from this scheduler. This
attribute is used only when there is more than one level of scheduler. When it has the value zeroDotZero, it indicates that no
Minimum rate or priority is imposed."
DEFVAL { zeroDotZero }
::= { qosSchedulerEntry 4 }
qosSchedulerMaxRate OBJECT-TYPE
SYNTAX Prid
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This Prid indicates the entry in qosMaxRateTable which indicates the maximum output rate from this scheduler. When more than one
maximum rate applies (e.g. a multi-rate shaper is used), it points to the first of the rate entries. This attribute is only used
when there is more than one level of scheduler. When it has the value zeroDotZero, it indicates that no Maximum rate is imposed."
DEFVAL { zeroDotZero }
::= { qosSchedulerEntry 5 }
qosMinRateTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosMinRateEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The Minimum Rate Table enumerates individual sets of scheduling parameter that can be used/reused by Queues and Schedulers."
::= { qosPolicyClasses 14 }
qosMinRateEntry OBJECT-TYPE
SYNTAX QosMinRateEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the Minimum Rate Table describes a single set of scheduling parameter for use by queues and schedulers."
INDEX { qosMinRatePrid }
::= { qosMinRateTable 1 }
QosMinRateEntry ::= SEQUENCE {
qosMinRatePrid InstanceId,
qosMinRatePriority Unsigned32,
qosMinRateAbsolute Unsigned32,
qosMinRateRelative Unsigned32
}
qosMinRatePrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosMinRateEntry 1 }
qosMinRatePriority OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The priority of this input to the associated scheduler, relative to the scheduler's other inputs. Higher Priority value
indicates the associated queue/scheduler will get service first before others with lower Priority values."
::= { qosMinRateEntry 2 }
qosMinRateAbsolute OBJECT-TYPE
SYNTAX Unsigned32
UNITS "kilobits per second"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The minimum absolute rate, in kilobits/sec, that a downstream scheduler element should allocate to this queue. If the value is
zero, then there is effectively no minimum rate guarantee. If the value is non-zero, the scheduler will assure the servicing of
this queue to at least this rate. Note that this attribute's value is coupled to that of qosMinRateRelative: changes to one will
affect the value of the other. [IFMIB] defines ifSpeed as Gauge32 in units of bits per second, and ifHighSpeed as Gauge32 in
units of 1,000,000 bits per second. This yields the following equations:
RateRelative = [ (RateAbsolute * 1000) / ifSpeed ] * 1,000
Where, 1000 is for converting kbps used by RateAbsolute to bps used by ifSpeed, 1,000 is for 'in units of 1/1,000 of 1' for
RateRelative. or, if appropriate:
RateRelative =
{ [ (RateAbsolute * 1000) / 1,000,000 ] / ifHIghSpeed } * 1,000
Where, 1000 and 1,000,000 is for converting kbps used by RateAbsolute to 1 million bps used by ifHighSpeed, 1,000 is for 'in
units of 1/1,000 of 1' for RateRelative."
REFERENCE
"ifSpeed, ifHighSpeed from [IFMIB]"
::= { qosMinRateEntry 3 }
qosMinRateRelative OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The minimum rate that a downstream scheduler element should allocate to this queue, relative to the maximum rate of the
interface as reported by ifSpeed or ifHighSpeed, in units of 1/1,000 of 1. If the value is zero, then there is effectively no
minimum rate guarantee. If the value is non-zero, the scheduler will assure the servicing of this queue to at least this rate.
Note that this attribute's value is coupled to that of qosMinRateAbsolute: changes to one will affect the value of the other.
[IFMIB] defines ifSpeed as Gauge32 in units of bits per second, and ifHighSpeed as Gauge32 in units of 1,000,000 bits per second.
This yields the following equations:
RateRelative = [ (RateAbsolute * 1000) / ifSpeed ] * 1,000
Where, 1000 is for converting kbps used by RateAbsolute to bps used by ifSpeed, 1,000 is for 'in units of 1/1,000 of 1' for
RateRelative. or, if appropriate:
RateRelative =
{ [ (RateAbsolute * 1000) / 1,000,000 ] / ifHIghSpeed } * 1,000
Where, 1000 and 1,000,000 is for converting kbps used by RateAbsolute to 1 million bps used by ifHighSpeed, 1,000 is for 'in
units of 1/1,000 of 1' for RateRelative."
REFERENCE
"ifSpeed, ifHighSpeed from [IFMIB]"
::= { qosMinRateEntry 4 }
qosMaxRateTable OBJECT-TYPE
SYNTAX SEQUENCE OF QosMaxRateEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The Maximum Rate Table enumerates individual sets of scheduling parameter that can be used/reused by Queues and Schedulers."
::= { qosPolicyClasses 15 }
qosMaxRateEntry OBJECT-TYPE
SYNTAX QosMaxRateEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the Maximum Rate Table describes a single set of scheduling parameter for use by queues and schedulers."
INDEX { qosMaxRatePrid }
::= { qosMaxRateTable 1 }
QosMaxRateEntry ::= SEQUENCE {
qosMaxRatePrid InstanceId,
qosMaxRateId Unsigned32,
qosMaxRateLevel Unsigned32,
qosMaxRateAbsolute Unsigned32,
qosMaxRateRelative Unsigned32,
qosMaxRateThreshold BurstSize
}
qosMaxRatePrid OBJECT-TYPE
SYNTAX InstanceId
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An arbitrary integer index that uniquely identifies an instance of the class."
::= { qosMaxRateEntry 1 }
qosMaxRateId OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An index used together with qosMaxRateId for representing a multi-rate shaper. This attribute is used for associating all the
rate attributes of a multi-rate shaper. Each qosMaxRateEntry of a multi-rate shaper must have the same value in this attribute.
The different rates of a multi-rate shaper is identified using qosMaxRateLevel. This attribute uses the value of zero to
indicate this attribute is not used, for single rate shaper."
DEFVAL { 0 }
::= { qosMaxRateEntry 2 }
qosMaxRateLevel OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"An index that indicates which level of a multi-rate shaper is being given its parameters. A multi-rate shaper has some number
of rate levels. Frame Relay's dual rate specification refers to a 'committed' and an 'excess' rate; ATM's dual rate
specification refers to a 'mean' and a 'peak' rate. This table is generalized to support an arbitrary number of rates. The
committed or mean rate is level 1, the peak rate (if any) is the highest level rate configured, and if there are other rates
they are distributed in monotonically increasing order between them. When the entry is used for a single rate shaper, this
attribute contains a value of zero."
DEFVAL { 0 }
::= { qosMaxRateEntry 3 }
qosMaxRateAbsolute OBJECT-TYPE
SYNTAX Unsigned32
UNITS "kilobits per second"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum rate in kilobits/sec that a downstream scheduler element should allocate to this queue. If the value is zero, then
there is effectively no maximum rate limit and that the scheduler should attempt to be work-conserving for this queue. If the
value is non-zero, the scheduler will limit the servicing of this queue to, at most, this rate in a non-work-conserving manner.
Note that this attribute's value is coupled to that of qosMaxRateRelative: changes to one will affect the value of the other.
[IFMIB] defines ifSpeed as Gauge32 in units of bits per second, and ifHighSpeed as Gauge32 in units of 1,000,000 bits per
second. This yields the following equations:
RateRelative = [ (RateAbsolute * 1000) / ifSpeed ] * 1,000
Where, 1000 is for converting kbps used by RateAbsolute to bps used by ifSpeed, 1,000 is for 'in units of 1/1,000 of 1' for
RateRelative. or, if appropriate:
RateRelative =
{ [ (RateAbsolute * 1000) / 1,000,000 ] / ifHIghSpeed } * 1,000
Where, 1000 and 1,000,000 is for converting kbps used by RateAbsolute to 1 million bps used by ifHighSpeed, 1,000 is for 'in
units of 1/1,000 of 1' for RateRelative."
::= { qosMaxRateEntry 4 }
qosMaxRateRelative OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum rate that a downstream scheduler element should allocate to this queue, relative to the maximum rate of the
interface as reported by ifSpeed or ifHighSpeed, in units of 1/1,000 of 1. If the value is zero, then there is effectively no
maximum rate limit and the scheduler should attempt to be work-conserving for this queue. If the value is non-zero, the
scheduler will limit the servicing of this queue to, at most, this rate in a non-work-conserving manner. Note that this
attribute's value is coupled to that of qosMaxRateAbsolute: changes to one will affect the value of the other. [IFMIB] defines
ifSpeed as Gauge32 in units of bits per second, and ifHighSpeed as Gauge32 in units of 1,000,000 bits per second. This yields
the following equations:
RateRelative = [ (RateAbsolute * 1000) / ifSpeed ] * 1,000
Where, 1000 is for converting kbps used by RateAbsolute to bps used by ifSpeed, 1,000 is for 'in units of 1/1,000 of 1' for
RateRelative. or, if appropriate:
RateRelative =
{ [ (RateAbsolute * 1000) / 1,000,000 ] / ifHIghSpeed } * 1,000
Where, 1000 and 1,000,000 is for converting kbps used by RateAbsolute to 1 million bps used by ifHighSpeed, 1,000 is for 'in
units of 1/1,000 of 1' for RateRelative."
REFERENCE
"ifSpeed, ifHighSpeed from [IFMIB]"
::= { qosMaxRateEntry 5 }
qosMaxRateThreshold OBJECT-TYPE
SYNTAX BurstSize
UNITS "Bytes"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The number of bytes of queue depth at which the rate of a multi-rate scheduler will increase to the next output rate. In the
last PRI for such a shaper, this threshold is ignored and by convention is zero."
REFERENCE
"Adaptive Rate Shaper, RFC 2963"
::= { qosMaxRateEntry 6 }
qosTBParameters OBJECT IDENTIFIER ::= { qosPolicyParameters 1 }
qosSchedulerParameters OBJECT IDENTIFIER ::= { qosPolicyParameters 2 }
qosTBParamSimpleTokenBucket OBJECT-IDENTITY
STATUS current
DESCRIPTION
"This value indicates the use of a Two Parameter Token Bucket as described in [MODEL] section 5.2.3."
REFERENCE
"[MODEL] sections 5 and 7.1.2"
::= { qosTBParameters 1 }
qosTBParamAvgRate OBJECT-IDENTITY
STATUS current
DESCRIPTION
"This value indicates the use of an Average Rate Meter as described in [MODEL] section 5.2.1."
REFERENCE
"[MODEL] sections 5 and 7.1.2"
::= { qosTBParameters 2 }
qosTBParamSrTCMBlind OBJECT-IDENTITY
STATUS current
DESCRIPTION
"This value indicates the use of Single Rate Three Color Marker Metering as defined by RFC 2697, with `Color Blind' mode as
described by the RFC."
REFERENCE
"[MODEL] sections 5 and 7.1.2"
::= { qosTBParameters 3 }
qosTBParamSrTCMAware OBJECT-IDENTITY
STATUS current
DESCRIPTION
"This value indicates the use of Single Rate Three Color Marker Metering as defined by RFC 2697, with `Color Aware' mode as
described by the RFC."
REFERENCE
"[MODEL] sections 5 and 7.1.2"
::= { qosTBParameters 4 }
qosTBParamTrTCMBlind OBJECT-IDENTITY
STATUS current
DESCRIPTION
"This value indicates the use of Two Rate Three Color Marker Metering as defined by RFC 2698, with `Color Blind' mode as
described by the RFC."
REFERENCE
"[MODEL] sections 5 and 7.1.2"
::= { qosTBParameters 5 }
qosTBParamTrTCMAware OBJECT-IDENTITY
STATUS current
DESCRIPTION
"This value indicates the use of Two Rate Three Color Marker Metering as defined by RFC 2698, with `Color Aware' mode as
described by the RFC."
REFERENCE
"[MODEL] sections 5 and 7.1.2"
::= { qosTBParameters 6 }
qosTBParamTswTCM OBJECT-IDENTITY
STATUS current
DESCRIPTION
"This value indicates the use of Time Sliding Window Three Color Marker Metering as defined by RFC 2859."
REFERENCE
"[MODEL] sections 5 and 7.1.2"
::= { qosTBParameters 7 }
qosSchedulerPriority OBJECT-IDENTITY
STATUS current
DESCRIPTION
"For use with qosSchedulerMethod and qosIfSchedulingCapsServiceDisc to indicate Priority scheduling method, defined as an
algorithm in which the presence of data in a queue or set of queues absolutely precludes dequeue from another queue or set of
queues. Notice attributes from qosMinRateEntry of the queues/schedulers feeding this scheduler are used when determining the
next packet to schedule."
REFERENCE
"[MODEL] section 7.1.2"
::= { qosSchedulerParameters 1 }
qosSchedulerWRR OBJECT-IDENTITY
STATUS current
DESCRIPTION
"For use with qosSchedulerMethod and qosIfSchedulingCapsServiceDisc to indicate Weighted Round Robin scheduling method, defined
as any algorithm in which a set of queues are visited in a fixed order, and varying amounts of traffic are removed from each
queue in turn to implement an average output rate by class. Notice attributes from qosMinRateEntry of the queues/schedulers
feeding this scheduler are used when determining the next packet to schedule."
REFERENCE
"[MODEL] section 7.1.2"
::= { qosSchedulerParameters 2 }
qosSchedulerWFQ OBJECT-IDENTITY
STATUS current
DESCRIPTION
"For use with qosSchedulerMethod and qosIfSchedulingCapsServiceDisc to indicate Weighted Fair Queueing scheduling method, defined
as any algorithm in which a set of queues are conceptually visited in some order, to implement an average output rate by class.
Notice attributes from qosMinRateEntry of the queues/schedulers feeding this scheduler are used when determining the next packet
to schedule."
REFERENCE
"[MODEL] section 7.1.2"
::= { qosSchedulerParameters 3 }
qosPolicyPibCompliances OBJECT IDENTIFIER ::= { qosPolicyPibConformance 1 }
qosPolicyPibGroups OBJECT IDENTIFIER ::= { qosPolicyPibConformance 2 }
qosPolicyPibCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Describes the requirements for conformance to the QoS Policy PIB."
MODULE
MANDATORY-GROUPS {
qosPibDataPathGroup,
qosPibClfrGroup,
qosPibClfrElementGroup,
qosPibActionGroup,
qosPibAlgDropGroup,
qosPibQGroup,
qosPibSchedulerGroup,
qosPibMinRateGroup,
qosPibMaxRateGroup }
GROUP qosPibMeterGroup
DESCRIPTION
"This group is mandatory for devices that implement metering functions."
GROUP qosPibTBParamGroup
DESCRIPTION
"This group is mandatory for devices that implement token-bucket metering functions."
GROUP qosPibDscpMarkActGroup
DESCRIPTION
"This group is mandatory for devices that implement DSCP-Marking functions."
GROUP qosPibMQAlgDropGroup
DESCRIPTION
"This group is mandatory for devices that implement Multiple Queue Measured Algorithmic Drop functions."
GROUP qosPibRandomDropGroup
DESCRIPTION
"This group is mandatory for devices that implement Random Drop functions."
OBJECT qosClfrId
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosClfrElementClfrId
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosClfrElementPrecedence
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosClfrElementNext
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosClfrElementSpecific
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosMeterSucceedNext
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosMeterFailNext
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosMeterSpecific
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosTBParamType
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosTBParamRate
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosTBParamBurstSize
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosTBParamInterval
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosActionNext
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosActionSpecific
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosAlgDropType
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosAlgDropNext
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosAlgDropQMeasure
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosAlgDropQThreshold
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosAlgDropSpecific
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosRandomDropMinThreshBytes
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosRandomDropMinThreshPkts
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosRandomDropMaxThreshBytes
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosRandomDropMaxThreshPkts
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosRandomDropProbMax
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosRandomDropWeight
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosRandomDropSamplingRate
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosQNext
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosQMinRate
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosQMaxRate
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosSchedulerNext
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosSchedulerMethod
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosSchedulerMinRate
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosSchedulerMaxRate
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosMinRatePriority
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosMinRateAbsolute
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosMinRateRelative
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosMaxRateLevel
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosMaxRateAbsolute
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosMaxRateRelative
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
OBJECT qosMaxRateThreshold
MIN-ACCESS read-only
DESCRIPTION
"Install support is not required."
::= { qosPibCompliances 1 }
qosPibDataPathGroup OBJECT-GROUP
OBJECTS {
qosDataPathIfName,
qosDataPathRoles,
qosDataPathDirection,
qosDataPathStart
}
STATUS current
DESCRIPTION
"The Data Path Group defines the PIB Objects that describe a data path."
::= { qosPolicyPibGroups 1 }
qosPibClfrGroup OBJECT-GROUP
OBJECTS {
qosClfrId
}
STATUS current
DESCRIPTION
"The Classifier Group defines the PIB Objects that describe a generic classifier."
::= { qosPolicyPibGroups 2 }
qosPibClfrElementGroup OBJECT-GROUP
OBJECTS {
qosClfrElementClfrId,
qosClfrElementPrecedence,
qosClfrElementNext,
qosClfrElementSpecific
}
STATUS current
DESCRIPTION
"The Classifier Group defines the PIB Objects that describe a generic classifier."
::= { qosPolicyPibGroups 3 }
qosPibMeterGroup OBJECT-GROUP
OBJECTS {
qosMeterSucceedNext,
qosMeterFailNext,
qosMeterSpecific
}
STATUS current
DESCRIPTION
"The Meter Group defines the objects used in describing a generic meter element."
::= { qosPolicyPibGroups 4 }
qosPibTBParamGroup OBJECT-GROUP
OBJECTS {
qosTBParamType,
qosTBParamRate,
qosTBParamBurstSize,
qosTBParamInterval
}
STATUS current
DESCRIPTION
"The Token-Bucket Parameter Group defines the objects used in describing a single-rate token bucket meter element."
::= { qosPolicyPibGroups 5 }
qosPibActionGroup OBJECT-GROUP
OBJECTS {
qosActionNext,
qosActionSpecific
}
STATUS current
DESCRIPTION
"The Action Group defines the objects used in describing a generic action element."
::= { qosPolicyPibGroups 6 }
qosPibDscpMarkActGroup OBJECT-GROUP
OBJECTS {
qosDscpMarkActDscp
}
STATUS current
DESCRIPTION
"The DSCP Mark Action Group defines the objects used in describing a DSCP Marking Action element."
::= { qosPolicyPibGroups 7 }
qosPibAlgDropGroup OBJECT-GROUP
OBJECTS {
qosAlgDropType,
qosAlgDropNext,
qosAlgDropQMeasure,
qosAlgDropQThreshold,
qosAlgDropSpecific
}
STATUS current
DESCRIPTION
"The Algorithmic Drop Group contains the objects that describe algorithmic dropper operation and configuration."
::= { qosPolicyPibGroups 8 }
qosPibMQAlgDropGroup OBJECT-GROUP
OBJECTS {
qosMQAlgDropExceedNext
}
STATUS current
DESCRIPTION
"The Multiple Queue Measured Algorithmic Drop Group contains the objects that describe multiple queue measured algorithmic
dropper operation and configuration."
::= { qosPolicyPibGroups 9 }
qosPibRandomDropGroup OBJECT-GROUP
OBJECTS {
qosRandomDropMinThreshBytes,
qosRandomDropMinThreshPkts,
qosRandomDropMaxThreshBytes,
qosRandomDropMaxThreshPkts,
qosRandomDropProbMax,
qosRandomDropWeight,
qosRandomDropSamplingRate
}
STATUS current
DESCRIPTION
"The Random Drop Group augments the Algorithmic Drop Group for random dropper operation and configuration."
::= { qosPolicyPibGroups 10 }
qosPibQGroup OBJECT-GROUP
OBJECTS {
qosQNext,
qosQMinRate,
qosQMaxRate
}
STATUS current
DESCRIPTION
"The Queue Group contains the objects that describe an interface type's queues."
::= { qosPolicyPibGroups 11 }
qosPibSchedulerGroup OBJECT-GROUP
OBJECTS {
qosSchedulerNext,
qosSchedulerMethod,
qosSchedulerMinRate,
qosSchedulerMaxRate
}
STATUS current
DESCRIPTION
"The Scheduler Group contains the objects that describe packet schedulers on interface types."
::= { qosPolicyPibGroups 12 }
qosPibMinRateGroup OBJECT-GROUP
OBJECTS {
qosMinRatePriority,
qosMinRateAbsolute,
qosMinRateRelative
}
STATUS current
DESCRIPTION
"The Minimum Rate Group contains the objects that describe packet schedulers' parameters on interface types."
::= { qosPolicyPibGroups 13 }
qosPibMaxRateGroup OBJECT-GROUP
OBJECTS {
qosMaxRateLevel,
qosMaxRateAbsolute,
qosMaxRateRelative,
qosMaxRateThreshold
}
STATUS current
DESCRIPTION
"The Maximum Rate Group contains the objects that describe packet schedulers' parameters on interface types."
::= { qosPolicyPibGroups 14 }
END
- Follow-Ups:
- Re: [Ethereal-dev] COPS-PR extension patch for packet-cops.c
- From: Guy Harris
- Re: [Ethereal-dev] COPS-PR extension patch for packet-cops.c
- Prev by Date: Re: [Ethereal-dev] [Bug report] SAMR dissector ?
- Next by Date: RE: [Ethereal-dev] COPS-PR extension patch for packet-cops.c
- Previous by thread: Re: [Ethereal-dev] COPS-PR extension patch for packet-cops.c
- Next by thread: Re: [Ethereal-dev] COPS-PR extension patch for packet-cops.c
- Index(es):





