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):