draft-ietf-diffserv-mib-05.txt   draft-ietf-diffserv-mib-06.txt 
Internet Engineering Task Force F. Baker Internet Engineering Task Force F. Baker
Diffserv Working Group Cisco Systems Diffserv Working Group Cisco Systems
INTERNET-DRAFT K. Chan INTERNET-DRAFT K. Chan
Expires June 2001 Nortel Networks Expires May 2001 Nortel Networks
draft-ietf-diffserv-mib-05.txt A. Smith draft-ietf-diffserv-mib-06.txt A. Smith
<editor> Allegro Networks
November 2000 November 2000
Management Information Base for the Management Information Base for the
Differentiated Services Architecture Differentiated Services Architecture
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with all This document is an Internet-Draft and is in full conformance with all
provisions of Section 10 of RFC 2026. Internet-Drafts are working provisions of Section 10 of RFC 2026. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas, and documents of the Internet Engineering Task Force (IETF), its areas, and
its working groups. Note that other groups may also distribute working its working groups. Note that other groups may also distribute working
skipping to change at page 6, line 18 skipping to change at page 6, line 18
defined in [DSFIELD]. defined in [DSFIELD].
o Enqueue the traffic for output in the appropriate queue, whose o Enqueue the traffic for output in the appropriate queue, whose
scheduler may shape the traffic or simply forward it with some scheduler may shape the traffic or simply forward it with some
minimum rate or maximum latency. minimum rate or maximum latency.
The MIB therefore contains the following elements: The MIB therefore contains the following elements:
Data Path Table Data Path Table
A general extensible framework for describing the starting point of A general extensible framework for describing the starting point of
DiffServ datapaths within a single DiffServ device. This table DiffServ datapaths within a single DiffServ device. Data paths
descibes interface and interface direction specific data paths. defined by this table are interface and interface direction
specific.
Classifier and Filter Tables Classifier and Filter Tables
A general extensible framework and one example of a A general extensible framework and one example of a
parameterization table - filter table (an IP Six-Tuple Multi-Field parameterization table - filter table (an IP Six-Tuple Multi-Field
Classification Table). Classification Table).
Meter Tables Meter Tables
A general extensible framework and one example of a A general extensible framework and one example of a
parameterization table - TBMeter table, applicable for Simple Token parameterization table - TBMeter table, applicable for Simple Token
Bucket Meter, Average Rate Meter, Single Rate Three Color Meter, Bucket Meter, Average Rate Meter, Single Rate Three Color Meter,
skipping to change at page 6, line 51 skipping to change at page 7, line 4
scheduler systems. The queue measurement dependent algorithmic scheduler systems. The queue measurement dependent algorithmic
droppers are also described here. droppers are also described here.
3. Structure of this MIB 3. Structure of this MIB
This MIB is structured with separate tables for purpose of DiffServ data This MIB is structured with separate tables for purpose of DiffServ data
path description and DiffServ treatment parameterization of the DiffServ path description and DiffServ treatment parameterization of the DiffServ
device. The data path description and/or the treatment parameterization device. The data path description and/or the treatment parameterization
tables can each be reuse independently, allowing the flexibility to tables can each be reuse independently, allowing the flexibility to
maintain a common data construct for DiffServ device configuration and maintain a common data construct for DiffServ device configuration and
provisioning, independent of the configuration/provisioning method used.
provisioning, independent of the configuration/provisioning method used.
The definitions in this MIB are intented to be reused by the DiffServ The definitions in this MIB are intented to be reused by the DiffServ
PIB and SNMPCONF working group's DiffServ Policy MIB. The treatment PIB and SNMPCONF working group's DiffServ Policy MIB. The treatment
parameters can also be reused by other IP based technologies. For parameters can also be reused by other IP based technologies. For
example, IP packet filtering parameters most likely can be reused by example, IP packet filtering parameters most likely can be reused by
other IP based technologies. other IP based technologies.
3.1. DiffServ Data Paths 3.1. DiffServ Data Paths
This part of the MIB provide instrumentation for connecting the DiffServ This part of the MIB provide instrumentation for connecting the DiffServ
Functional Elements within a single DiffServ device. Please refer to Functional Elements within a single DiffServ device. Please refer to
the [MODEL] for discussions on the valid sequencing and grouping of the [MODEL] for discussions on the valid sequencing and grouping of
DiffServ Functional Elements. Given some basic information, e.g. DiffServ Functional Elements. Given some basic information, e.g.
ifIndex and interface direction, the first DiffServ Functional Element ifIndex and interface direction, the first DiffServ Functional Element
is determined. Subsequent DiffServ Functional Elements are provided by is determined. Subsequent DiffServ Functional Elements are provided by
the "Next" pointer attribute of each entry of data path tables. the "Next" pointer attribute of each entry of data path tables.
Description of how this "Next" pointer is used in each table is provided Description of how this "Next" pointer is used in each table is provided
in their respective section. in their respective DESCRIPTION clause.
The data path can be redefined to allow a different level of control The data path can be redefined to allow a different level of control
other than interface level control currently defined in this MIB. There other than interface level control currently defined in this MIB. There
is on-going work in this area, most notably the development of Policy is on-going work in this area, most notably the development of Policy
Information Base in DiffServ and RAP working groups, and DiffServ Policy Information Base in DiffServ and RAP working groups, and DiffServ Policy
MIB in SNMPCONF working group. MIB in SNMPCONF working group.
3.1.1. Data Path Table 3.1.1. Data Path Table
Entries in the Data Path Table provide the DiffServ treatment starting Entries in the Data Path Table provide the DiffServ treatment starting
points for all packets of this DiffServ device. Each entry in this table points for all packets of DiffServ interfaces on this device. Notice
is indexed by ifIndex and the direction of the packet flow. There not all interfaces on this device need to be DiffServ interfaces, hence
should be at most two entries for each interface, one for ingress and not all entries in the ifTable need to have corresponding entries in the
one for egress. Each entry provides the first DiffServ Functional Data Path Table. Each entry in this table is indexed by ifIndex and the
Element each packet at a specific interface traveling a specific direction of the packet flow. There should be at most two entries for
relative direction should experience. Notice this table is interface each interface, one for ingress and one for egress. Each entry provides
specific, with the use of ifIndex. As indicated in section 2.2, with the first DiffServ Functional Element each packet at a specific
some modification/extension of the Data Path Table, most of the tables interface traveling a specific relative direction should experience.
and their entries are reusable by other Policy Management mechanisms. Notice this table is interface specific, with the use of ifIndex. As
For indication of none existence of DiffServ Treatments, entries can be indicated in section 2.2, with some modification/extension of the Data
created with zeroDotZero in the diffServDataPathStart attribute to Path Table, most of the tables and their entries are reusable by other
indicate this explicitly. The none existence of DiffServ Treatment can Policy Management mechanisms. For indication of none existence of
also be indicated implicitly by not having the entry at all. The DiffServ Treatments, entries can be created with zeroDotZero in the
explicit/implicit selection is up to the implementation. This means diffServDataPathStart attribute to indicate this explicitly. The none
allow normal IP device processing when zeroDotZero is used in the existence of DiffServ Treatment can also be indicated implicitly by not
diffServDataPathStart attribute, or when the entry does not exist. having the entry at all. The explicit/implicit selection is up to the
Normal IP device processing will depend on the device, for example, this implementation. This means allow normal IP device processing when
can be forwarding the packet. zeroDotZero is used in the diffServDataPathStart attribute, or when the
entry does not exist. Normal IP device processing will depend on the
device, for example, this can be forwarding the packet.
3.2. Classifiers 3.2. Classifiers
The classifier, classifier element, and filter tables determine how The classifier, classifier element, and filter tables determine how
traffic is sorted out. They identify separable classes of traffic, by traffic is sorted out. They identify separable classes of traffic, by
reference to an appropriate filter, which may select anything from an reference to an appropriate filter, which may select anything from an
individual micro-flow to aggregates identified by DSCP. individual micro-flow to aggregates identified by DSCP.
The classification is used to send these separate streams to appropriate The classification is used to send these separate streams to appropriate
Meter, Action, Queue, Scheduler and Algorithmic Dropper elements. For Meter, Action, Queue, Scheduler and Algorithmic Dropper elements. For
skipping to change at page 8, line 36 skipping to change at page 8, line 38
"precedence" in [MODEL]. Filter with higher values of order are "precedence" in [MODEL]. Filter with higher values of order are
compared first; the order of tests for entries of the same order is compared first; the order of tests for entries of the same order is
unimportant. unimportant.
A datapath may consist of more than one classifier. There may be A datapath may consist of more than one classifier. There may be
overlap of filter specification between filters of different overlap of filter specification between filters of different
classifiers. The first classifier functional datapath element classifiers. The first classifier functional datapath element
encountered, as determined by the sequencing of diffserv functional encountered, as determined by the sequencing of diffserv functional
datapath elements, will be used first. datapath elements, will be used first.
An important form of classifier is "everything else": the final stage of An important form of classification is "everything else": the final
the classifier i.e. the one with the lowest precedence, must be stage of the classifier i.e. the one with the lowest order, must be
"complete" since the result of an incomplete classifier is not "complete" since the result of an incomplete classifier is not
necessarily deterministic - see [MODEL] section 4.1.2. necessarily deterministic - see [MODEL] section 4.1.2.
The definition of the actual filter to be used by the classifier is The definition of the actual filter to be used by the classifier is
referenced via a RowPointer: this enables the use of any sort of filter referenced via a StaticRowPointer: this enables the use of any sort of
table that one might wish to design, standard or proprietary. The filter filter table that one might wish to design, standard or proprietary. The
table may be, but does not need to be, defined in this MIB module. filter table may be, but does not need to be, defined in this MIB
module.
The classifiers specified here are at the interface level, they may be The classifiers specified here are at the interface level, they may be
derived from some more general policies e.g. something based on derived from some more general policies e.g. something based on
interface roles, but such discussion is outside the scope of this interface roles, but such discussion is outside the scope of this
document. See e.g. [POLTERM] section 4 for a discussion of Roles. document. See e.g. [POLTERM] section 4 for a discussion of Roles.
3.2.1. Classifier Table 3.2.1. Classifier Table
Classifiers are organized by entries of the Classifier Table. With each Classifiers are organized by entries of the Classifier Table. With each
entry corresponds to a single Classifier. It is the entries in the entry corresponds to a single Classifier. It is the entries in the
Classifier Table that get linked from the upstream diffserv functional Classifier Table that get linked from the upstream diffserv functional
datapath element, i.e. an entry in diffServDataPathTable. A data path datapath element, i.e. an entry in diffServDataPathTable. A data path
may consist of more than one Classifier, the order the classification may consist of more than one Classifier, the order the classification
processes aplies to the traffic is the same as the order the classifier processes aplies to the traffic is the same as the order the classifier
skipping to change at page 9, line 28 skipping to change at page 9, line 30
Classifier, the Classifier Element Table enumerates each branch of the Classifier, the Classifier Element Table enumerates each branch of the
fan-out of a Classifier, associating each fan-out branch with a Filter fan-out of a Classifier, associating each fan-out branch with a Filter
for discriminating the traffic for that branch. Each Classifier Element for discriminating the traffic for that branch. Each Classifier Element
table entry is part of a Classifier, indicated by table entry is part of a Classifier, indicated by
diffServClfrElementClfrId. diffServClfrElementClfrId.
3.2.3. Filter Table - IP Six-Tuple Classifier Table 3.2.3. Filter Table - IP Six-Tuple Classifier Table
This MIB includes one Filter Table, a definition for an IP Six-Tuple This MIB includes one Filter Table, a definition for an IP Six-Tuple
Classifier, used for IP traffic classification. Entries in this filter Classifier, used for IP traffic classification. Entries in this filter
table are referenced from the RowPointer diffServClfrElementSpecific table are referenced from the StaticRowPointer
attributes of classifier element table entries. diffServClfrElementSpecific attributes of classifier element table
entries.
A Behavior Aggregate (BA) Classifier, acting only on DSCPs, is a simple For example, a Behavior Aggregate (BA) Classifier, acting only on DSCPs,
form of the IP Six-Tuple Classifier. It is represented by having the is a simple form of the IP Six-Tuple Classifier. It is represented by
diffServSixTupleClfrDscp attribute set to the desired DSCP and all other having the diffServSixTupleClfrDscp attribute set to the desired DSCP
classification attributes set to match-all, their default settings. The and all other classification attributes set to match-all, their default
alternative approach of providing a specific definition in this MIB for settings.
a BA Classifier was discussed and rejected.
Each entry in the IP Six-Tuple Classifier Table defines a single filter. Each entry in the IP Six-Tuple Classifier Table defines a single filter.
The textual convention of InetAddress [INETADDR] is used for both IPv4 The textual convention of InetAddress [INETADDR] is used for both IPv4
and IPv6 addressing. The use of IP Six-Tuple Classifiers is discussed and IPv6 addressing. The use of IP Six-Tuple Classifiers is discussed
in [DSARCH] and abstract examples of how they might be configured are in [DSARCH] and abstract examples of how they might be configured are
provided in [MODEL]. provided in [MODEL].
3.3. Meters 3.3. Meters
A meter, according to [MODEL] section 5, measures the rate at which A meter, according to [MODEL] section 5, measures the rate at which
packets making up a stream of traffic pass it, compares this rate to packets making up a stream of traffic pass it, compares this rate to
some set of thresholds and produces some number (two or more) of some set of thresholds and produces some number (two or more) of
potential results. A given packet is said to "conform" to the meter if, potential results. A given packet is said to "conform" to the meter if,
at the time that the packet is being looked at, the stream appears to be at the time that the packet is being looked at, the stream appears to be
within the meter's profile. MIB syntax makes it easiest to define this within the meter's profile. MIB syntax makes it easiest to define this
as a sequence of one or more cascaded pass/fail tests, modeled here as as a sequence of one or more cascaded pass/fail tests, modeled here as
if-then-else constructs. It is important to understand that this way of if-then-else constructs. It is important to understand that this way of
modelling does not imply anything about the implementation being modelling does not imply anything about the implementation being
"sequential": multi-rate/multi-profile meters e.g. those designed to "sequential": multi-rate/multi-profile meters e.g. those designed to
support [SRTCM] or [TRTCM], can still be modelled this way even if they, support [SRTCM], [TRTCM], or [TSWTCM] can still be modelled this way
of necessity, share information between the stages: the stages are even if they, of necessity, share information between the stages: the
introduced merely as a notational convenience in order to simplify the stages are introduced merely as a notational convenience in order to
MIB structure. simplify the MIB structure.
3.3.1. Meter Table 3.3.1. Meter Table
The generic meter table is used as a base for all more specific forms of The generic meter table is used as a base for all more specific forms of
meter. The definition of parameters specific to the type of meter used meter. The definition of parameters specific to the type of meter used
is referenced via a pointer to a table containing those specifics. This is referenced via a pointer to a table containing those specifics. This
enables the use of any sort of specific meter table that one might wish enables the use of any sort of specific meter table that one might wish
to design, standard or proprietary. The specific meter table may be, but to design, standard or proprietary. The specific meter table may be, but
does not need to be, defined in this MIB module. does not need to be, defined in this MIB module.
3.3.2. Token-Bucket Meter Table 3.3.2. Token-Bucket Meter Table
This is included as an example of a common type of meter. Entries in This is included as an example of a common type of meter. Entries in
this table are referenced from the RowPointer diffServMeterSpecific this table are referenced from the StaticRowPointer
attributes of meter table entries. The parameters are represented by a diffServMeterSpecific attributes of meter table entries. The parameters
rate diffServTBMeterRate, a burst size diffServTBMeterBurstSize, and an are represented by a rate diffServTBMeterRate, a burst size
interval diffServTBMeterInterval. How these parameters are used depends diffServTBMeterBurstSize, and an interval diffServTBMeterInterval. How
on the type of meter being parameterized, this is provided by the these parameters are used depends on the type of meter being
diffServTBMeterType attribute. Additional meter parameterization tables parameterized, this is provided by the diffServTBMeterType attribute.
can be defined in this or other MIB when necessary. Additional meter parameterization tables can be defined in other MIBs
when necessary.
3.4. Actions 3.4. Actions
Actions include "no action", "mark the traffic with a DSCP", "drop the Actions include "no action", "mark the traffic with a DSCP", "drop the
traffic" or "count it". Other tasks such as "shape the traffic" or "drop traffic" or "count it". Other tasks such as "shape the traffic" or "drop
based on some algorithm" are handled elsewhere as queueing mechanisms, based on some algorithm" are handled elsewhere as queueing mechanisms,
rather than actions, consistent with [MODEL]. The "multiplexer", rather than actions, consistent with [MODEL]. The "multiplexer",
"replicator" and "null" actions described in [MODEL] are accomplished "replicator" and "null" actions described in [MODEL] are accomplished
implicitly by means of the RowPointer structures of the other elements. implicitly by means of the RowPointer structures of the other elements.
This MIB uses the Action Table diffServActionTable to organize one This MIB uses the Action Table diffServActionTable to organize one
Action's relationship with the element(s) before and after it. It allows Action's relationship with the element(s) before and after it. It allows
Actions to be cascaded to enable multiple Actions be applied to a single Actions to be cascaded to enable multiple Actions be applied to a single
traffic stream by using each entry's diffServActionNext attribute. The traffic stream by using each entry's diffServActionNext attribute. The
diffServActionNext attribute of the last action entry in the chain diffServActionNext attribute of the last action entry in the chain
points to the next element in the TCB, if any, e.g. a Queueing element.
points to the next element in the TCB, if any, e.g. a Queueing element.
It may also point at a next TCB. It may also point at a next TCB.
The parameters needed for each Action element will depend on the type of The parameters needed for each Action element will depend on the type of
Action to be taken. Hence there are specific Action Tables for all the Action to be taken. Hence there are specific Action Tables for all the
different Action types. This flexibility allows additional Actions be different Action types. This flexibility allows additional Actions be
specified in future revisions of this MIB, or in other MIBs and also specified in future revisions of this MIB, or in other MIBs and also
allows for the use of proprietary Actions without impact on those allows for the use of proprietary Actions without impact on those
defined here. defined here.
3.4.1. DSCP Mark Action Table 3.4.1. DSCP Mark Action Table
skipping to change at page 11, line 31 skipping to change at page 11, line 32
3.4.2. Count Action Table 3.4.2. Count Action Table
Count Actions are used to count the traffic passing along a particular Count Actions are used to count the traffic passing along a particular
path through the model. If specified, they are likely to be placed path through the model. If specified, they are likely to be placed
first, before other types of Action. For example, when both a Count and first, before other types of Action. For example, when both a Count and
an Absolute Dropper Action are specified, the Count Action needs to an Absolute Dropper Action are specified, the Count Action needs to
count the traffic stream before any traffic gets dropped. Note that count the traffic stream before any traffic gets dropped. Note that
there are counters contained directly in Algorithmic Dropper elements to there are counters contained directly in Algorithmic Dropper elements to
indicate the amount of traffic dropped by those elements. indicate the amount of traffic dropped by those elements.
Notice counter support is implementation specific. Where within a data
path and for what purpose a counter exists can be different between
implementations. It is advisable to have at least one counter within a
data path and have different counts derived from DiffServ counters and
counters defined in other MIBs.
Counters are arranged in a single table but with separate conformance Counters are arranged in a single table but with separate conformance
statements for low-speed and high-speed interfaces, consistent with statements for low-speed and high-speed interfaces, consistent with
[IFMIB]. [IFMIB].
3.4.3. Absolute Drop Action 3.4.3. Absolute Drop Action
This action just silently discards all traffic presented to it, without This action just silently discards all traffic presented to it, without
counting it. This action has no additional parameters and so is counting it. This action has no additional parameters and so is
represented only within diffServActionType without its specific table. represented only within diffServActionType without its specific table.
skipping to change at page 13, line 26 skipping to change at page 13, line 29
defines the queue length at which all packets will be dropped. Notice defines the queue length at which all packets will be dropped. Notice
this is different from Tail Drop because this uses an averaged queue this is different from Tail Drop because this uses an averaged queue
length. although it is possible for Qclip = Qmax. In the MIB module, length. although it is possible for Qclip = Qmax. In the MIB module,
diffServRandomDropMinThreshBytes and diffServRandomDropMinThreshPkts diffServRandomDropMinThreshBytes and diffServRandomDropMinThreshPkts
represent Qmin. diffServRandomDropMaxThreshBytes and represent Qmin. diffServRandomDropMaxThreshBytes and
diffServRandomDropMaxThreshPkts represent Qmax. diffServRandomDropMaxThreshPkts represent Qmax.
diffServRandomDropInvProbMax represents Pmax. This MIB does not diffServRandomDropInvProbMax represents Pmax. This MIB does not
represent Pmin (assumed to be zero unless otherwise represented) or represent Pmin (assumed to be zero unless otherwise represented) or
Qclip (assumed to be Qmax unless otherwise represented). Qclip (assumed to be Qmax unless otherwise represented).
Each random dropper specification is associated with a queue. This
allows multiple drop processes (of same or different types) be
associated with the same queue, as different PHB implementations may
+-------------+ +-----------+ +-------------+ +-----------+
--->| Next --------+-->| Next ---------> to Scheduler --->| Next -----+--+-->| Next --+------> to Scheduler
| Thresh=100k | | | Min=none | | Thresh=100k | | | Min=none |
| Measure -------+ | Max=none | | Measure ----+--+ | Max=none |
| Type=random | | Pri=10 | | Type=random | | Pri=10 |
| Specific ------+ | Type=fifo | | Specific ---+--+ | Type=fifo |
+-------------+ | +-----------+ +-------------+ | +-----------+
AlgDrop.3 | Queue.4 AlgDrop.3 | Queue.4
| |
| +--------------+ | +--------------+
+-->| Minthresh=10k| +-->| Minthresh=10k|
| Maxthresh=80k| | Maxthresh=80k|
| Weight=1/16 | | Weight=1/16 |
| ProbMax= 0.5 | | ProbMax= 0.5 |
+--------------+ +--------------+
RandomDrop.3 RandomDrop.3
Figure 1: Example Use of the RandomDropTable for Random Droppers Figure 1: Example Use of the RandomDropTable for Random Droppers
Each random dropper specification is associated with a queue. This
allows multiple drop processes (of same or different types) be
associated with the same queue, as different PHB implementations may
require. This also allows for sequences of multiple droppers if require. This also allows for sequences of multiple droppers if
necessary. necessary.
The calculation of a smoothed queue length may also have an important The calculation of a smoothed queue length may also have an important
bearing on the behaviour of the dropper: parameters may include the bearing on the behaviour of the dropper: parameters may include the
sampling rate and the weight of each sample. The performance may be very sampling rate and the weight of each sample. The performance may be very
sensitive to the values of these parameters and a wide range of possible sensitive to the values of these parameters and a wide range of possible
values may be required due to a wide range of link speeds. Most values may be required due to a wide range of link speeds. Most
algorithms include a sample weight, represented here by algorithms include a sample weight, represented here by
diffServRandomDropInvWeight. The availability of diffServRandomDropInvWeight. The availability of
skipping to change at page 15, line 18 skipping to change at page 15, line 20
Queue Table entries specify the scheduler it wants service from by use Queue Table entries specify the scheduler it wants service from by use
of its Next pointer. of its Next pointer.
Each Scheduler Table entry represents the algorithm in use for servicing Each Scheduler Table entry represents the algorithm in use for servicing
the one or more queues that feed it. The [MODEL] section 7.1.2 describes the one or more queues that feed it. The [MODEL] section 7.1.2 describes
a scheduler with multiple inputs: this is represented in the MIB by a scheduler with multiple inputs: this is represented in the MIB by
having the scheduling parameters be associated with each input. In this having the scheduling parameters be associated with each input. In this
way, sets of Queues can be grouped together as inputs to the same way, sets of Queues can be grouped together as inputs to the same
Scheduler. This table serves to represent the example scheduler Scheduler. This table serves to represent the example scheduler
described in the [MODEL]: other more complex representations might be described in the [MODEL]. More complex queuing and scheduling
created outside of this MIB. structures are possible using the tables defined in this MIB. When
necessary, more complex constructs may be created outside of this MIB.
Scheduler Parameter Table entries are used to parameterized each input Scheduler Parameter Table entries are used to parameterized each input
that feeds into a scheduler. The inputs can be a mixture of Queue Table that feeds into a scheduler. The inputs can be a mixture of Queue Table
and Scheduler Table entries. Scheduler Parameter Table entries can be and Scheduler Table entries. Scheduler Parameter Table entries can be
used/reused by one or more Queue and/or Scheduler Table entries. used/reused by one or more Queue and/or Scheduler Table entries.
For representing a Strict Priority scheduler, each scheduler input is For representing a Strict Priority scheduler, each scheduler input is
assigned a priority with respect to all the other inputs feeding the assigned a priority with respect to all the other inputs feeding the
same scheduler, with default values for the other parameters. A same scheduler, with default values for the other parameters. A
higher-priority input will be serviced first over a lower-priority higher-priority input will be serviced first over a lower-priority
input, assuming that all guarantees have already been met. input, assuming that all guarantees have already been met.
For Weighted Queueing algorithms e.g. WFQ, WRR, the "weight" of a given For weighted scheduling method e.g. WFQ, WRR, the "weight" of a given
scheduler input is represented with a Minimum Service Rate leaky-bucket scheduler input is represented with a Minimum Service Rate leaky-bucket
profile which provides guaranteed bandwidth to that input, if required. profile which provides guaranteed bandwidth to that input, if required.
This is represented, as were token-bucket meters, by a rate This is represented, as were token-bucket meters, by a rate
diffServSchdParamMinRateAbs. The rate may, alternatively, be represented diffServSchdParamMinRateAbs and a burst size diffServSchdParamBurstSize.
by a relative value, as a fraction of the interface's current line rate, The rate may, alternatively, be represented by a relative value, as a
fraction of the interface's current line rate,
diffServSchdParamMinRateRel to assist in cases where line rates are diffServSchdParamMinRateRel to assist in cases where line rates are
variable or where a higher-level policy might be expressed in terms of variable or where a higher-level policy might be expressed in terms of
fractions of network resources. The two rate parameters are inter- fractions of network resources. The two rate parameters are inter-
related and changes in one may be reflected in the other. related and changes in one may be reflected in the other.
For weighted scheduling methods, one can say loosely, that WRR focuses
on meeting bandwidth sharing, without concern for relative delay amongst
the queues; where WFQ control both queue service order and amount of
traffic serviced, providing meeting bandwidth sharing and relative delay
ordering amongst the queues.
An input may also be capable of acting as a non-work-conserving [MODEL] An input may also be capable of acting as a non-work-conserving [MODEL]
traffic shaper: this is done by defining a Maximum Service Rate leaky- traffic shaper: this is done by defining a Maximum Service Rate leaky-
bucket profile in order to limit the scheduler bandwidth available to bucket profile in order to limit the scheduler bandwidth available to
that input. This is represented, similarly to the minimum rate, by a that input. This is represented, similarly to the minimum rate, by a
rate diffServSchdParamMaxRateAbs. The rate may, alternatively, be rate diffServSchdParamMaxRateAbs and a burst size
represented by a relative value, as a fraction of the interface's diffServSchdParamBurstSize. The rate may, alternatively, be represented
current line rate, diffServSchdParamMaxRateRel. by a relative value, as a fraction of the interface's current line rate,
diffServSchdParamMaxRateRel.
Other types of priority and weighted scheduling methods can be defined
using existing parameters in diffServSchdParamEntry. Notice
diffServSchedulerMethod uses OBJECT IDENTIFIER syntax, with the
different types of scheduling methods defined as OBJECT-IDENTITY. When
new scheduling methods need to be defined, and no new scheduling
parameters are needed, just need to add a new OBJECT-IDENTITY definition
in some other MIB, with description of how the existing scheduling
parameters will be used by the new scheduling method. If the existing
scheduling parameters are not sufficient, new scheduling parameter
tables can be defined in some other MIB.
Notice hierarchical schedulers can be parameterized using this MIB by Notice hierarchical schedulers can be parameterized using this MIB by
having Scheduler Table entries feeds into Scheduler Table entry. having Scheduler Table entries feeds into Scheduler Table entry.
3.5.4. Example of Algorithmic Droppers, Queues and Schedulers 4. MIB Usage Example
As an example, the hypothetical queue/scheduler configuration shown in This section provides some examples on how the different table entries
[MODEL] section 8.1 is shown in Table 1. of this MIB may be used together for a DiffServ Device, with the usage
of each individual attribute be defined within the MIB module itself.
For the figures, all the MIB table entry and attribute names assumes to
have "diffServ" as their first common initial part of name, with the
table entry name assumed to be their second common initial part of name.
"0.0" is being used to mean zeroDotZero. And for Scheduler Method "= X"
means "using the OID of diffServSchedulerX".
QId MinRate MaxRate Priority Scheduler 4.1. Model's Example
--- ---------------- ---------------- -------- ---------
1 100kbps/20kbyte none/none 20 Scheduler.1
2 none/none 100kbps/100kbyte 40 Scheduler.1
3 200kbps/20kbyte none/none 20 Scheduler.1
4 none/none none/none 10 Scheduler.1
SchedId Type As an example, when this MIB's structures are used for the hypothetical
------- ------------------ configuration in [MODEL] section 8.1, the result is shown in Figure 2,
1 weightedRoundRobin 3, and 4. The parameterization table entries' values are not specified
in detail here, they can be obtained from [MODEL] section 8.1. This
example has been explained in sufficient detail in [MODEL] section 8.1,
please use that as a reference.
Table 1: Example Queue and Scheduler Parameters +---------------------+ +------------------------> Q_EF
|DataPath | |
| ifIndex=1 | | +--------------+
| IfDirection=Ingress | +------+ | +--->|Action |
| Start --------------+--->|Clfr | | | | Id=EF2 |
+---------------------+ | Id=1 | | | | Next=0.0 |
+------+ | | | Specific=0.0 |
| | | Type=AbsDrop |
| | +--------------+
| |
| +-------------------+
| |
+------------+ +--------------+ | +-----------+ |
|ClfrElement | +-->|Meter | | +->|Action | |
| Id=EF | | | Id=EF | | | | Id=EF1 | |
| ClfrId=1 | | | SucceedNext -+-+ | | Next -----+----+
| Order=NA | | | FailNext ----+----+ | Specific -+--+
| Next ------+--+ | Specific -+ | | Type=Spcf | |
| Specific --+-+ +-----------+--+ +-----------+ |
+------------+ | | |
| | +-------+
| | |
| +--------+ | +---------+ | +--------------+
+-->|FilterEF| +-->|TBMeterEF| +->|CountActEFDrop|
+--------+ +---------+ +--------------+
Queues 1 and 3 are serviced for long enough to give them their promised +------------+ +----------+ +--------------+
bandwidths and burst sizes, if they need them. Queue 2 is then serviced |ClfrElement | +-->|Action | +-->|AlgDrop |
up to its maximum limit profile. Only then does Queue 4 get an | Id=AF11 | | | Id=AF11 | | | Id=AF11 |
opportunity to send its traffic. As an example of the use of the MIB | ClfrId=1 | | | Next ----+--+ | Type=tailDrop|
structures, Figure 2 shows how the example would be represented. | Order=NA | | | Specific +-+ | Next --------+--+-> Q_AF11
| Next ------+--+ | Type=Spcf| | | QMeasure ----+--+
| Specific --+-+ +----------+ | | QThreshold |
+------------+ | | | Specific=0.0 |
| | +--------------+
| |
| +----------+ | +------------+
+->|FilterAF11| +->|CountActAF11|
+----------+ +------------+
+-----------+ Figure 2: Example from Model Section 8.1 part 1
----------------------->| Next -----+ +------------+ +--------------+ +-------------+
| Min=Profl4| | |ClfrElement | +-->|Meter | +-->|Action |
| Max=none | | | Id=AF21 | | | Id=AF21 | | | Id=AF21S |
| Pri=20 | | | ClfrId=1 | | | SucceedNext -+--+ | Next -------+----> Q_AF21
| Type=fifo | | | Order=NA | | | FailNext + | | Specific -+ |
+-----------+ | | Next ------+--+ | Specific --+ | | Type=Spcf | |
Queue.1 | | Specific --+-+ +----------+-+-+ +-----------+-+
+------------+ | | | |
| | | +---+
| | | |
| +----------+ | | +-----------+ | +-------------+
+->|FilterAF21| | +->|TBMeterAF21| +->|CountActAF21S|
+----------+ | +-----------+ +-------------+
| |
+-----------+ +-----------+ | +--------------+
--->| Next -----+--->| Next ------+
| Thresh=1k | | | Min=none | |
| Measure -----+ | Max=Profl5| |
| Type=Tail | | Pri=40 | |
| Spec=none | | Type=fifo | | +----------+
+-----------+ +-----------+ +--->| Next -----> 0.0
Dropper.1 Queue.2 | | Algrm=wrr| or next TCB
| +----------+
+-----------+ +-----------+ | Scheduler.1
--->| Next -----+--->| Next -----+
| Thresh=2k | | | Min=Profl3| |
| Measure -----+ | Max=none | |
| Type=Tail | | Pri=20 | |
| Spec=none | | Type=fifo | |
+-----------+ +-----------+ |
Dropper.2 Queue.3 |
| |
+-----------+ +-----------+ | | +-----------+ +-----------+
--->| Next ------+--->| Next -----+ +-->|Action | +-->|Action |
| Thresh=4k | | | Min=none | | Id=AF21F1 | | | Id=AF21F2 |
| Measure -----+ | Max=none | | Next -----+--+ | Next -----+------> Q_BE
| Type=Tail | | Pri=10 | | Specific -+-+ | Specific -+-+
| Spec=none | | Type=fifo | | Type=Spcf | | | Type=Spcf | |
+-----------+ +-----------+ +-----------+ | +-----------+ |
Dropper.3 Queue.4 | |
| +-------------+ | +-------------+
+->|CountActAF21F| +->|DscpMarkActBE|
+-------------+ +-------------+
Figure 2: Example of the use of Queueing elements +------------+
|ClfrElement | +-----------------------------------------> Q_BE
| Id=WildCard| |
| ClfrId=1 | |
| Order=NA | |
| Next ------+--+ +--------------+
| Specific --+------>|FilterMatchAll|
+------------+ +--------------+
4. MIB Usage Example Figure 3: Example from Model Section 8.1 part 2
+-------------+
Q_EF--->|Q |
| Id=EF +--+--------------------------+
| Next ----+ | +-----------+ |
| SchdParam --+-->|SchdParamEF| |
+-------------+ +-----------+ |
|
+-------------+ +----------------+ | +----------------+
Q_AF11->|Q | +->|Scheduler | +->|Scheduler |
| Id=AF11 | | | Id=AF11Shaper | | | Id=DiffServ |
| Next -------+---+ | Next ----------+--+ | Next=0.0 |
| SchdParam --+-+ | Method=Shaping | | | Method=Priority|
+-------------+ | | SchdParam -+ | | | SchdParam=0.0 |
| +------------+---+ | +----------------+
+---------------+ | |
| +------------+ |
| +--------------+ | +-------------+ |
+->|SchdParamAF11S| +->|SchdParamAF11| |
+--------------+ +-------------+ |
|
+-------------+ |
Q_AF21->|Q | |
| Id=AF21 +--+--------------------------+
| Next ----+ | +-------------+ |
| SchdParam --+-->|SchdParamAF21| |
+-------------+ +-------------+ |
|
+-------------+ |
Q_BE--->|Q | |
| Id=BE +--+--------------------------+
| Next ----+ | +-----------+
| SchdParam --+-->|SchdParamBE|
+-------------+ +-----------+
This section provides some examples on how the different table entries Figure 4: Example from Model Section 8.1 part 3
of this MIB may be used to parameterize a DiffServ Device. For the
figures, all the MIB table entry and attribute names assumes to have 4.2. Additional Data Path Example
"diffServ" as their first common initial part of name, with the table
entry name assumed to be their second common initial part of name. 4.2.1. Data Path and Classifier Example Discussion
The example in Figure 5 shows a single DataPathTable entry feeding into
a single Classifier entry, with three ClfrElement and Filter Table entry
pairs belonging to this Classifier 1. Notice the three Filters used
here must completely classify all the traffic presented to this data
path.
+---------------------+ +---------------------+
|DataPath | |DataPath |
| ifIndex=1 | | ifIndex=1 |
| IfDirection=Ingress | +------+ | IfDirection=Ingress | +------+
| Start --------------+--->|Clfr | | Start --------------+--->|Clfr |
+---------------------+ | Id=1 | +---------------------+ | Id=1 |
+------+ +------+
+------------+ +--------------+ +-----------+ +------------+ +--------------+ +-----------+
|ClfrElement | +-->|Meter | +-->|Action | |ClfrElement | +-->|Meter | +-->|Action |
| Id=101 | | | Id=101 | | | Id=101 | | Id=101 | | | Id=101 | | | Id=101 |
| ClfrId=1 | | | SucceedNext -+--+ | Next -----+---->... | ClfrId=1 | | | SucceedNext -+--+ | Next -----+---->...
| Order=NA | | | FailNext ----+->... | Specific -+-+ | Order=NA | | | FailNext ----+->... | Specific -+-+
| Next ------+--+ | Specific -+ | | Type=Spcf | | | Next ------+--+ | Specific -+ | | Type=Spcf | |
| Specific --+-+ +-----------+--+ +-----------+ | | Specific --+-+ +-----------+--+ +-----------+ |
+------------+ | | +-------+ +------------+ | | +-------+
| +-------+ | +--------+ | +-----------+ | +-------+ | +--------+ | +---------+
+-->|Filter1| +-->|TBMeter1| +-->|CounterAct1| +-->|Filter1| +-->|TBMeter1| +-->|CountAct1|
+-------+ +--------+ +-----------+ +-------+ +--------+ +---------+
+------------+ +--------------+ +-----------+ +------------+ +--------------+ +-----------+
|ClfrElement | +-->|Meter | +-->|Action | |ClfrElement | +-->|Meter | +-->|Action |
| Id=102 | | | Id=102 | | | Id=102 | | Id=102 | | | Id=102 | | | Id=102 |
| ClfrId=1 | | | SucceedNext -+--+ | Next -----+---->... | ClfrId=1 | | | SucceedNext -+--+ | Next -----+---->...
| Order=NA | | | FailNext ----+->... | Specific -+-+ | Order=NA | | | FailNext ----+->... | Specific -+-+
| Next ------+--+ | Specific -+ | | Type=Spcf | | | Next ------+--+ | Specific -+ | | Type=Spcf | |
| Specific --+-+ +-----------+--+ +-----------+ | | Specific --+-+ +-----------+--+ +-----------+ |
+------------+ | | +-------+ +------------+ | | +-------+
| +-------+ | +--------+ | +-----------+ | +-------+ | +--------+ | +---------+
+-->|Filter2| +-->|TBMeter2| +-->|CounterAct2| +-->|Filter2| +-->|TBMeter2| +-->|CountAct2|
+-------+ +--------+ +-----------+ +-------+ +--------+ +---------+
+------------+ +--------------+ +-----------+ +------------+ +--------------+ +-----------+
|ClfrElement | +-->|Meter | +-->|Action | |ClfrElement | +-->|Meter | +-->|Action |
| Id=103 | | | Id=103 | | | Id=103 | | Id=103 | | | Id=103 | | | Id=103 |
| ClfrId=1 | | | SucceedNext -+--+ | Next -----+---->... | ClfrId=1 | | | SucceedNext -+--+ | Next -----+---->...
| Order=NA | | | FailNext ----+->... | Specific -+-+ | Order=NA | | | FailNext ----+->... | Specific -+-+
| Next ------+--+ | Specific -+ | | Type=Spcf | | | Next ------+--+ | Specific -+ | | Type=Spcf | |
| Specific --+-+ +-----------+--+ +-----------+ | | Specific --+-+ +-----------+--+ +-----------+ |
+------------+ | | +-------+ +------------+ | | +-------+
| +-------+ | +--------+ | +-----------+ | +-------+ | +--------+ | +---------+
+-->|Filter3| +-->|TBMeter3| +-->|CounterAct3| +-->|Filter3| +-->|TBMeter3| +-->|CountAct3|
+-------+ +--------+ +-----------+ +-------+ +--------+ +---------+
Figure 3: Data Path Example Part 1 Figure 5: Additional Data Path Example Part 1
+-------------+ +------------------+ +----------------------+ +-------------+ +-----------------+ +----------------+
---->|Q | +->|Scheduler | +->|Scheduler | ---->|Q | +->|Scheduler | +->|Scheduler |
| Id=EF | | | Id=DiffServ | | | Id=Shaping | | Id=EF | | | Id=DiffServ | | | Id=Shaping |
| Next -------+---+ | Next ------------+--+ | Next=zeroDotZero | | Next -------+---+ | Next -----------+--+ | Next=0.0 |
| SchdParam -+| | | Method=priorityq | | Method=priorityq | | SchdParam -+| | | Method=Priority | | Method=Shaping |
+------------++ | | SchdParam -+ | | SchdParam=zeroDotZero| +------------++ | | SchdParam -+ | | SchdParam=0.0 |
| | +------------+-----+ +----------------------+ | | +------------+----+ +----------------+
+------------+ | | +------------+ | |
| | +------------+ | | +------------+
| +-----------+ | | | +-----------+ | |
+->|SchdParamEF| | | +----------------+ +->|SchdParamEF| | | +----------------+
+-----------+ | +->|SchdParamShaping| +-----------+ | +->|SchdParamShaping|
| +----------------+ | +----------------+
| |
|
+-----------------------------------------+ +-----------------------------------------+
| |
|
+----------------+ +-------------+ | +----------------+ +-------------+ |
--->|AlgDrop | +->|Q | | --->|AlgDrop | +->|Q | |
| Id=AF11 | | | Id=AF1X | +-------------+ | | Id=AF11 | | | Id=AF1X | +-------------+ |
| Type=randomDrop| | | Next -------+--->|Scheduler | | | Type=randomDrop| | | Next -------+--->|Scheduler | |
| Next ----------+-+--+ | SchdParam -+| | Id=AF | | | Next ----------+-+--+ | SchdParam -+| | Id=AF | |
| QMeasure ------+-+ | +------------++ | Next -------+--+ | QMeasure ------+-+ | +------------++ | Next -------+--+
| QThreshold | | | | Method=wfq | | QThreshold | | | | Method=WFQ |
| Specific -+ | | +------------+ | SchdParam -+| | Specific -+ | | +------------+ | SchdParam --+--+
+-----------+----+ | | +------------++ +-----------+----+ | | +-------------+ |
| | | +-------------+ | | | | +-------------+ |
+-----------+ | +->|SchdParamAF1X| +------------+ +-----------+ | +->|SchdParamAF1X| +----------------+
| +--------------+ | +-------------+ | | +--------------+ | +-------------+ |
+->|RandomDropAF11| | | +-----------+ +->|RandomDropAF11| | | +-----------+
+--------------+ | +->|SchdParamAF| +--------------+ | +->|SchdParamAF|
| +-----------+ | +-----------+
+----------------+ | +----------------+ |
--->|AlgDrop | | --->|AlgDrop | |
| Id=AF12 | | | Id=AF12 | |
| Type=randomDrop| | | Type=randomDrop| |
| Next ----------+-+--+ | Next ----------+-+--+
| QMeasure ------+-+ | QMeasure ------+-+
| QThreshold | | QThreshold |
| Specific -+ | | Specific -+ |
+-----------+----+ +-----------+----+
| |
+-----------+ +-----------+
| +--------------+ | +--------------+
+->|RandomDropAF12| +->|RandomDropAF12|
+--------------+ +--------------+
Figure 4: Data Path Example Part 2 Figure 6: Additional Data Path Example Part 2
4.1. Data Path and Classifier Example Discussion
The example in Figure 4 shows a single DataPathTable entry feeding into
a single Classifier entry, with three ClfrElement and Filter Table entry
pairs belonging to this Classifier 1. Notice the three Filters used
here must completely classify all the traffic presented to this data
path.
Another level of classification can be defined that follows the Action Another level of classification can be defined that follows the Action
function datapath elements in Figure 3. This second level of functional datapath elements in Figure 5. This second level of
classifiers and their subsequent function datapath elements would be classifiers and their subsequent functional datapath elements would be
considered as in another TCB. considered as in another TCB.
This multi-level classification allow the construction of traffic This multi-level classification allow the construction of traffic
seperations like: seperations like:
if (dept1) if (dept1) then take dept1-action
{ {
if (appl1) then take dept1-appl1-action. if (appl1) then take dept1-appl1-action.
if (appl2) then take dept1-appl2-action. if (appl2) then take dept1-appl2-action.
if (appl3) then take dept1-appl3-action. if (appl3) then take dept1-appl3-action.
} }
if (dept2) if (dept2) then take dept2-action
{ {
if (appl1) then take dept2-appl1-action. if (appl1) then take dept2-appl1-action.
if (appl2) then take dept2-appl2-action. if (appl2) then take dept2-appl2-action.
if (appl3) then take dept2-appl3-action. if (appl3) then take dept2-appl3-action.
} }
if (dept3) if (dept3) then take dept3-action
{ {
if (appl1) then take dept3-appl1-action. if (appl1) then take dept3-appl1-action.
if (appl2) then take dept3-appl2-action. if (appl2) then take dept3-appl2-action.
if (appl3) then take dept3-appl3-action. if (appl3) then take dept3-appl3-action.
} }
The filters for appl1, appl2, appl3 may be reused for the above setup. Minimumly, the filters for appl1, appl2, appl3 may be reused for the
above setup.
4.2. Meter and Action Example Discussion 4.2.2. Meter and Action Example Discussion
A simple Meter that can be parameterized by a single TBMeter entry is A simple Meter that can be parameterized by a single TBMeter entry is
shown here. For Metering types that require mutliple TBMeter entries shown here. For Metering types that require mutliple TBMeter entries
for parameterization, a second level Meter and TBMeter table entries may for parameterization, a second level Meter and TBMeter table entries may
be used. For example, for trTCM, with the first level TBMeter entry be used. For example, for trTCM, with the first level TBMeter entry
used for Peak Information Token Bucket, the first level SucceedNext used for Peak Information Token Bucket, the first level SucceedNext
points to the second level Meter entry, with second level TBMeter entry points to the second level Meter entry, with second level TBMeter entry
used for Committed Information Token Bucket. used for Committed Information Token Bucket.
Notice the CountAct Action is shown in Figure 3. This is purposely done Notice the CountAct Action is shown in Figure 5. This is purposely done
to indicate all datapaths should have at least one CountAct Action. to indicate all datapaths should have at least one CountAct Action.
Other actions can be pointed to by the Next pointer of the CountAct Other actions can be pointed to by the Next pointer of the CountAct
action, like DscpMarkAct action.
action, like DSCPMarkAct action. 4.2.3. Queue and Scheduler Example Discussion
4.3. Queue and Scheduler Example Discussion
Example in Figure 4 shows three classified input traffic streams, EF, Example in Figure 6 shows three classified input traffic streams, EF,
AF11, and AF12, feeding into their respective queue and algorithmic AF11, and AF12, feeding into their respective queue and algorithmic
droppers. After their respective dropping process, the AF traffic droppers. After their respective dropping process, the AF traffic
streams feed into the same queue, QAF1X. streams feed into the same queue, QAF1X.
A Scheduler, AF, is shown in Figure 4, as the sink for AF1X queue A Scheduler, AF, is shown in Figure 6, as the sink for AF1X queue
traffic, servicing AF1X queue with scheduling parameters indicated by traffic, servicing AF1X queue with scheduling parameters indicated by
SchdParamAF1X. This scheduler is used to service traffic from AF1X, SchdParamAF1X. This scheduler is used to service traffic from AF1X,
AF2X, AF3X queues using weighted fair queueing method. The AF2X and AF2X, AF3X queues using weighted fair queueing method. The AF2X and
AF3X queues are not shown in Figure 4, they can be very much like AF1X AF3X queues are not shown in Figure 6, they can be very much like AF1X
queue setup. queue setup.
Another traffic stream, EF, is handled by the EF queue. Scheduler Another traffic stream, EF, is handled by the EF queue. Scheduler
DiffServ services output of EF queue using SchdParamEF, and output of AF DiffServ services output of EF queue using SchdParamEF, and output of AF
scheduler using SchdParamAF, with Weighted Fair Queueing method. scheduler using SchdParamAF, with Priority Queue scheduling method.
Notice all the diffserv traffic may go out on a link with traffic Notice all the diffserv traffic may go out on a link with traffic
shaping. The traffic shaping can be parameterize using the Shaping shaping. The traffic shaping can be parameterize using the Shaping
Scheduler in Figure 4. For shaping, the diffServSchdParamMaxRate Scheduler in Figure 6. For shaping, the diffServSchdParamMaxRate
attributes should be used. The output of the Shaping Scheduler is attributes should be used. The Shaping Scheduler is indicated as the
indicated using its Next pointer with value of zeroDotZero, the output last diffserv functional element of this data path by using its Next
port. pointer with value of zeroDotZero.
5. Conventions used in this MIB 5. Conventions used in this MIB
5.1. The use of RowPointer 5.1. The use of RowPointer
RowPointer is a textual convention used to identify a conceptual row in RowPointer is a textual convention used to identify a conceptual row in
an SNMP Table by pointing to one of its objects. In this MIB, it is used an SNMP Table by pointing to one of its objects. In this MIB, it is used
in two ways: to indicate indirection and to indicate succession. to indicate succession, for pointing to data path linkage table entries.
When used for indirection as in the diffServClassifierTable, the idea is
to allow other MIBs, including proprietary ones, to define new and
arcane classifiers - MAC headers, IPv4 and IPv6 headers, BGP Communities
and all sorts of other things - whilst still utilising the structures of
this MIB. This is a form of class inheritance (in "object oriented"
language): it allows base object definitions ("classes") to be extended
in proprietary or standard ways, in the future, by other documents.
When used for succession, it answers the question "what happens next?".
Rather than presume that the next table must be as specified in the
conceptual model [MODEL] and providing its index, the RowPointer takes For succession, it answers the question "what happens next?". Rather
you to the MIB row representing that thing. In the diffServMeterTable, than presume that the next table must be as specified in the conceptual
for example, the diffServMeterFailNext RowPointer might take you to model [MODEL] and providing its index, the RowPointer takes you to the
another meter, while the diffServMeterSucceedNext RowPointer would take MIB row representing that thing. In the diffServMeterTable, for example,
you to an action. the diffServMeterFailNext RowPointer might take you to another meter,
while the diffServMeterSucceedNext RowPointer would take you to an
action.
NOTE -- the RowPointer construct is used to build the TCBs NOTE -- the RowPointer construct is used to build the TCBs
described in [MODEL]: this MIB does not model TCBs directly - it described in [MODEL]: this MIB does not model TCBs directly - it
operates at a lower level of abstraction using only individual operates at a lower level of abstraction using only individual
elements, connected in succession by RowPointers. Therefore, the elements, connected in succession by RowPointers. Therefore, the
concept of TCBs enclosing individual functional datapath elements concept of TCBs enclosing individual functional datapath elements
is not applicable to this MIB, although such a concept may be is not applicable to this MIB, although such a concept may be
employed by management tools that use this MIB. employed by management tools that use this MIB.
It is possible that a path through a device following a set of It is possible that a path through a device following a set of
RowPointers is indeterminate i.e. it ends in a dangling RowPointer (or RowPointers is indeterminate i.e. it ends in a dangling RowPointer.
potentially does in the case of a Meter element) should be treated by Guidance is provided in the MIB module's DESCRIPTION-clause for each of
the agent as if it were operationally deactivated. For example, if an the linkage attribute. In general, for both zeroDotZero and dangling
Action element has a dangling diffServActionNext RowPointer that does RowPointer, it is assumed the data path ends and the traffic should be
not point to an existent table entry (and is not zeroDotZero), then none given to the none-diffserv part of the device. Any variation from this
of the subsequent elements in that particular chain should have any usage is indicated by the attribute affected.
effect on the traffic proceeding down this chain and the Classification
or Meter element which lead to this Action element is not considered to
be active. Other parts of the device configuration remain in effect, of
course, but this rule simply removes all ambiguity from the operational
system.
5.2. Conceptual row creation and deletion 5.2. The use of StaticRowPointer
StaticRowPointer, like RowPointer, is a textual convention used to
identify a conceptual row in an SNMP Table by pointing to one of its
objects. In this MIB, it is used to indicate parameterization, for
pointing to parameterization table entries.
For indirection as in the diffServClfrElementTable, the idea is to allow
other MIBs, including proprietary ones, to define new and arcane filters
- MAC headers, IPv4 and IPv6 headers, BGP Communities and all sorts of
other things - whilst still utilising the structures of this MIB. This
is a form of class inheritance (in "object oriented" language): it
allows base object definitions ("classes") to be extended in proprietary
or standard ways, in the future, by other documents.
StaticRowPointer also clearly indicate the identified conceptual row's
content does not change, hence they can be simultaneously used, pointed
to, by more than one data path linkage table entries. The
identification of StaticRowPointer allows higher level policy mechanisms
to take advantage of this characteristic.
5.3. Conceptual row creation and deletion
A number of conceptual tables defined in this MIB use as an index an A number of conceptual tables defined in this MIB use as an index an
arbitrary integer value, unique across the scope of the agent. In order arbitrary integer value, unique across the scope of the agent. In order
to help with multi-manager row-creation problems, a mechanism must be to help with multi-manager row-creation problems, a mechanism must be
provided to allow a manager to obtain unique values for such an index provided to allow a manager to obtain unique values for such an index
and to ensure that, when used, the manager knows whether it got what it and to ensure that, when used, the manager knows whether it got what it
wanted or not. wanted or not.
Typically, such a table has an associated NextFree variable e.g. Typically, such a table has an associated NextFree variable e.g.
diffServClassifierNextFree which provides a suitable value for the index diffServClfrNextFree which provides a suitable value for the index of
of the next row to be created e.g. diffServClassifierId. A special the next row to be created e.g. diffServClfrId. A special value, 0, is
value, 0, is used to indicate that no more entries can be created by the used to indicate that no more entries can be created by the agent. The
agent. The table also has a columnar Status attribute with RowStatus table also has a columnar Status attribute with RowStatus syntax [6].
syntax [6].
If a manager attempts to create a conceptual row in the table (by a SET If a manager attempts to create a conceptual row in the table (by a SET
operation that contains a varbind setting the Status to a value of operation that contains a varbind setting the Status to a value of
either createAndGo or createAndWait) and if the agent has sufficient either createAndGo or createAndWait) and if the agent has sufficient
resources and has no other conceptual row with the same indices, the resources and has no other conceptual row with the same indices, the
agent will create the row and return success. If the agent has agent will create the row and return success. If the agent has
insufficient resources or such a row is already existent then it returns insufficient resources or such a row is already existent then it returns
an error. A manager must be prepared to try again in such circumstances, an error. A manager must be prepared to try again in such circumstances,
probably by re-reading the NextFree to obtain a new index value in case probably by re-reading the NextFree to obtain a new index value in case
a second manager had got in between the first manager's read of the a second manager had got in between the first manager's read of the
NextFree value and the first manager's row-creation attempt. The use of NextFree value and the first manager's row-creation attempt. The use of
RowStatus is covered in more detail in [6]. RowStatus is covered in more detail in [6].
6. Editorial information 6. Extending this MIB
<this section will be removed before publication>
6.1. Open Issues resolved in previous drafts
(0) Terminology is more in line with [MODEL], [POLTERM] and [DSTERM].
Discarder -> "Algorithmic Dropper", "Monitor" -> "Counter"
"Classifier element" -> "Filter"
(1) Cascaded token-buckets is not equivalent to multi-rate token-
bucket: do we need to fix this by allowing a multi-rate TB in the
MIB? Or, by defining cascaded buckets to mean "multi-rate". (assume
the latter - see text in 2.3)
(2) Markers: model only describes DSCP-markers: do we need to be able
to extend this to other sorts (e.g. 802.1p), even if we do not
represent them in this MIB today? (yes). No MIB changes, just
words.
(3) Counters: should specific blocks include their own or is a "counter
action", as described in the Model, sufficient to count all paths
through a device? (as appropriate). Per-queue counters are
derivable from "action" ones. Per-classifier counters: may feed
through from clasifiers to distinct counter actions.
(4) Queue Sets: are these generally applicable? (no). The example in
section 2.5.1 is hard to follow: we should describe this example in
[MODEL] and then show how it maps to MIB in the MIB draft. - DONE
(5) Do we need scheduling units of "packets"? (NO) Should we use "kbps"
or just "bps" for rates? DONE - all rates are in kbps.
(6) Are "absolute" rates sufficient or should we include "relative to
line speed" ones as well? (yes) - DONE - explained that these are
interrelated.
(7) Scheduler weights vs. rates vs. priorities: this is confusing -
suggest we stick to rates and priorities (see Model draft 7.1.2) -
DONE.
(8) Queue Measure table:
o This allows for RIO - multiple averaging functions for the same
queue: is this needed? OUT OF SCOPE.
o mixes config with status objects - split these? N/A.
o do we need floating-point representation for "weight"? N/A.
o do we need MIB visibility for average queue depth? N/A.
o do we need MIB-configurable averaging functions (sample
weight/interval)? (maybe just "sample weight") - NO: averaging
functions will be left out although framework allows for their
inclusion separately.
(9) Counter compliance: paste text from IF-MIB re line-speeds. Do you
still have to do the low-speed counters for fast interfaces? YES.
DONE.
(10) Meters: are these mandatory for compliance? NO
(11) Discussion material: move most of this to Model draft e.g. most of
3.1, 3.3, "Dropper/discarder" part of 3.4, nearly all of 3.5. Just
leave the "how does the MIB map from the Model" parts in the MIB
draft, no general discussion. DONE.
(12) Counters: merged in 32-bit and 64-bit counters - conformance
statements sort out which ones must be implemented. This is
consistent with [IFMIB]. DONE.
(13) Droppers: we used to have a common "dropper" table that represented
all of: dropAlways, randomDrop, tailDrop with just some parameters
valid for the simpler ones. A simpler representation is to define
specific dropper tables for each type (e.g. a single OID to point
at for dropAlways since it is always the last action in a chain)
but this would mean a larger number of (simpler) MIB objects.
CHANGES: dropAlways is still an Action but the others are moved to
a diffServAlgDropTable. This table can handle tail/head/random drop
- others by extension.
(14) Should TBMeterTable just AUGMENT the MeterTable, should it use same
indices or are separate structures linked by RowPointers
preferable? (same indices without RowPointer).
(15) Do we need to model multiple queues feeding back into a single
dropper algorithm? (yes). If so, the current single-queue pointer
and threshold will not be adequate - should we leave them in? They
will be useful for many, but not all, dropper algorithms. (yes)
(17) We have concepts of "inbound" and "outbound" directions: but if we
have a series of multiple TCBs on a given interface for the same
direction (allowed by the model) then we do not have a way to
indicate "this is the 1st one". Moreover, it is a somewhat
convoluted process to then find the 2nd, 3rd etc. ones - you would
have to follow the RowPointers to get there: should we explicitly
have an index to enable/help these lookup operations? Note: this is
not the same issue as needing a "precedence" for each filter entry
of a classifier (yes - added another index to classifiers to
represent what TCB they operate at for a given
interface/direction).
6.2. Open Issues resolved in this draft
(13) Droppers: slight change to previous resolution. MIB can now handle
tail/head/random drop using diffServAlgDropTable and
diffServRandomDropTable.
(18) Should manager be allowed to create Queue elements or should agent
be in control of this? (the former)
(19) Should manager be allowed to create Scheduler elements or should
agent be in control of this? (the former)
(20) Related to (17) above, do we also need a "TCB index" for elements
other than classifiers? (no)
(21) Do we need diffServAlgDropType of both "headDrop" and "tailDrop" or
should we just represent the tail dropper by placing a dropper
after the queue instead of before the queue, as linked by the
diffServQNext and diffServAlgDropNext RowPointers? (the former -
dropper is always in front of the queue in this model).
(22) Do we need to support RED algorithms for algorithm parameter
configuration and monitoring? If so, what variables are needed?
(Added diffServRandomDropTable).
(24) diffServAlgDropQThreshold needs UNITS (Bytes).
(25) Dangling RowPointers: should we mandate that these are never
permitted? Or just define the behaviour if they do dangle? (We
define it such that elements that have dangling pointers, as well
as upstream elements that point to them, are considered "not
activated")
(26) Discontinuity times for MIB counters - is
ifCounterDiscontinuityTime adequate? (no: added
diffServCountActDiscontTime).
(27) How do we handle dropper algorithms that require additional
classification information in order to do their job? If a
Classifier is needed then create a new TCB for it at the point just
before the dropper: use ordinary Classifier elements in this TCB.
(28) Indexing of table entries and uniqueness hints: is TestAndIncr the
correct tool to use? (no: RowStatus is the right tool for ensuring
uniqueness; use a NextFree variable as a hint).
(32) Miscellaneous clarifications - thanks Bob.
6.3. Still Open Issues
(16) Should the creation of counter actions be under the control of
manager or agent: should a diffServActionEntry and
diffServCountActEntry appear by magic (does the agent know what
counters it can and cannot maintain on a given interface)? (no) If
no, should diffServCountActEntry appear magically when a
diffServAction element is created which points at the
diffServCountActTable (then would be no need for
diffServCountActStatus)? (no)
(23) Do daughter entries of derived table entries need to exist
independently of the parent? Examples are
diffServMeterEntry/diffServTBMeterEntry,
diffServActionEntry/diffServCountActEntry and
diffServAlgDropEntry/diffServRandomDropEntry (assume they must be
independent of the equivalent entry in diffServMeterTable which
points at the TB table - needs diffServTBMeterStatus: daughters
must be created explicitly by manager).
(30) Related to (17) - multi-manager creation of TCBs:
diffServClassifierId is unique across the agent, for all values of
diffServClassifierTcb but there is no "next free" variable to
report the next TCB to use. This can lead to a race condition when
2 managers are duelling to create entries with the same value of
diffServClassifierTcb. There are also legitimate reasons for
different managers to be "creating" the *same* TCB so a
conventional "next free" is not a good solution. Is this a rare
enough occurence given a suitable choice of diffServClassifierTcb
e.g. pseudo-random? (yes).
(31) When inheritance is needed and parent/daughter share indexing, the
parent often points to the daughter using a "Specific" attribute
e.g. diffServMeterSpecific, diffServActionSpecific,
diffServAlgDropSpecific. If this is a RowPointer and points to the
associated row in the daughter's table, there is redundant
information which gives scope for additional error cases. So,
wherever possible, should we remove this redundant information by
making the "Specific" attribute point only to the base of the
daughter table and make it an OBJECT IDENTIFIER? The con is that
this is an unusual use of MIB pointers (point at table base, not
individual entries).
7. MIB Outline
The authors think a MIB outline will assist the reader and can be used
as a quick reference.
diffServMIBObjects OBJECT IDENTIFIER ::= { diffServMib 1 }
diffServMIBConformance OBJECT IDENTIFIER ::= { diffServMib 2 }
diffServDataPath OBJECT IDENTIFIER ::= { diffServMIBObjects 1 }
diffServDataPathTable OBJECT-TYPE
::= { diffServDataPath 1 }
diffServDataPathEntry OBJECT-TYPE
INDEX { ifIndex, diffServDataPathIfDirection }
::= { diffServDataPathTable 1 }
DiffServDataPathEntry ::= SEQUENCE {
diffServDataPathIfDirection IfDirection,
diffServDataPathStart RowPointer,
diffServDataPathStatus RowStatus
}
diffServClassifier OBJECT IDENTIFIER ::= { diffServMIBObjects 2 }
diffServClfrNextFree OBJECT-TYPE
::= { diffServClassifier 1 }
diffServClfrTable OBJECT-TYPE
::= { diffServClassifier 2 }
diffServClfrEntry OBJECT-TYPE
INDEX { diffServClfrId }
::= { diffServClfrTable 1 }
DiffServClfrEntry ::= SEQUENCE {
diffServClfrId Unsigned32,
diffServClfrStatus RowStatus
}
diffServClfrElementNextFree OBJECT-TYPE
::= { diffServClassifier 3 }
diffServClfrElementTable OBJECT-TYPE
::= { diffServClassifier 4 }
diffServClfrElementEntry OBJECT-TYPE
INDEX { diffServClfrElementClfrId, diffServClfrElementId }
::= { diffServClfrElementTable 1 }
DiffServClfrElementEntry ::= SEQUENCE {
diffServClfrElementId Unsigned32,
diffServClfrElementClfrId Unsigned32,
diffServClfrElementOrder Unsigned32,
diffServClfrElementNext RowPointer,
diffServClfrElementSpecific RowPointer,
diffServClfrElementStatus RowStatus
}
diffServSixTupleClfrNextFree OBJECT-TYPE
::= { diffServClassifier 5 }
diffServSixTupleClfrTable OBJECT-TYPE
::= { diffServClassifier 6 }
diffServSixTupleClfrEntry OBJECT-TYPE
INDEX { diffServSixTupleClfrId }
::= { diffServSixTupleClfrTable 1 }
DiffServSixTupleClfrEntry ::= SEQUENCE {
diffServSixTupleClfrId Unsigned32,
diffServSixTupleClfrDstAddrType InetAddressType,
diffServSixTupleClfrDstAddr InetAddress,
diffServSixTupleClfrDstAddrMask Unsigned32,
diffServSixTupleClfrSrcAddrType InetAddressType,
diffServSixTupleClfrSrcAddr InetAddress,
diffServSixTupleClfrSrcAddrMask Unsigned32,
diffServSixTupleClfrDscp Dscp,
diffServSixTupleClfrProtocol Unsigned32,
diffServSixTupleClfrDstL4PortMin SixTupleClfrL4Port,
diffServSixTupleClfrDstL4PortMax SixTupleClfrL4Port,
diffServSixTupleClfrSrcL4PortMin SixTupleClfrL4Port,
diffServSixTupleClfrSrcL4PortMax SixTupleClfrL4Port,
diffServSixTupleClfrStatus RowStatus
}
diffServMeter OBJECT IDENTIFIER ::= { diffServMIBObjects 3 }
diffServMeterNextFree OBJECT-TYPE
::= { diffServMeter 1 }
diffServMeterTable OBJECT-TYPE
::= { diffServMeter 2 }
diffServMeterEntry OBJECT-TYPE
INDEX { diffServMeterId }
::= { diffServMeterTable 1 }
DiffServMeterEntry ::= SEQUENCE {
diffServMeterId Unsigned32,
diffServMeterSucceedNext RowPointer,
diffServMeterFailNext RowPointer,
diffServMeterSpecific RowPointer,
diffServMeterStatus RowStatus
}
diffServTBMeterNextFree OBJECT-TYPE
::= { diffServMeter 3 }
diffServTBMeterTable OBJECT-TYPE
::= { diffServMeter 4 }
diffServTBMeterEntry OBJECT-TYPE
INDEX { diffServTBMeterId }
::= { diffServTBMeterTable 1 }
DiffServTBMeterEntry ::= SEQUENCE {
diffServTBMeterId Unsigned32,
diffServTBMeterType INTEGER,
diffServTBMeterRate Unsigned32,
diffServTBMeterBurstSize BurstSize,
diffServTBMeterInterval Unsigned32,
diffServTBMeterStatus RowStatus
}
diffServAction OBJECT IDENTIFIER ::= { diffServMIBObjects 4 }
diffServActionNextFree OBJECT-TYPE
::= { diffServAction 1 }
diffServActionTable OBJECT-TYPE
::= { diffServAction 2 }
diffServActionEntry OBJECT-TYPE
INDEX { diffServActionId }
::= { diffServActionTable 1 }
DiffServActionEntry ::= SEQUENCE {
diffServActionId Unsigned32,
diffServActionNext RowPointer,
diffServActionSpecific RowPointer,
diffServActionType INTEGER,
diffServActionStatus RowStatus
}
diffServDscpMarkActNextFree OBJECT-TYPE
::= { diffServAction 3 }
diffServDscpMarkActTable OBJECT-TYPE
::= { diffServAction 4 }
diffServDscpMarkActEntry OBJECT-TYPE
INDEX { diffServDscpMarkActId }
::= { diffServDscpMarkActTable 1 }
DiffServDscpMarkActEntry ::= SEQUENCE {
diffServDscpMarkActId Unsigned32,
diffServDscpMarkActDscp Dscp,
diffServDscpMarkActStatus RowStatus
}
diffServCountActNextFree OBJECT-TYPE
::= { diffServAction 5 }
diffServCountActTable OBJECT-TYPE
::= { diffServAction 6 }
diffServCountActEntry OBJECT-TYPE
INDEX { diffServCountActId }
::= { diffServCountActTable 1 }
DiffServCountActEntry ::= SEQUENCE {
diffServCountActId Unsigned32,
diffServCountActOctets Counter32,
diffServCountActHCOctets Counter64,
diffServCountActPkts Counter32,
diffServCountActHCPkts Counter64,
diffServCountActDiscontTime TimeStamp,
diffServCountActStatus RowStatus
}
diffServAlgDrop OBJECT IDENTIFIER ::= { diffServMIBObjects 5 }
diffServAlgDropNextFree OBJECT-TYPE
::= { diffServAlgDrop 1 }
diffServAlgDropTable OBJECT-TYPE
::= { diffServAlgDrop 2 }
diffServAlgDropEntry OBJECT-TYPE
INDEX { diffServAlgDropId }
::= { diffServAlgDropTable 1 }
DiffServAlgDropEntry ::= SEQUENCE {
diffServAlgDropId Unsigned32,
diffServAlgDropType INTEGER,
diffServAlgDropNext RowPointer,
diffServAlgDropQMeasure RowPointer,
diffServAlgDropQThreshold Unsigned32,
diffServAlgDropSpecific RowPointer,
diffServAlgDropOctets Counter32,
diffServAlgDropHCOctets Counter64,
diffServAlgDropPkts Counter32,
diffServAlgDropHCPkts Counter64,
diffServAlgDropStatus RowStatus
}
diffServRandomDropNextFree OBJECT-TYPE
::= { diffServAlgDrop 3 }
diffServRandomDropTable OBJECT-TYPE
::= { diffServAlgDrop 4 }
diffServRandomDropEntry OBJECT-TYPE
INDEX { diffServRandomDropId }
::= { diffServRandomDropTable 1 }
DiffServRandomDropEntry ::= SEQUENCE {
diffServRandomDropId Unsigned32,
diffServRandomDropMinThreshBytes Unsigned32,
diffServRandomDropMinThreshPkts Unsigned32,
diffServRandomDropMaxThreshBytes Unsigned32,
diffServRandomDropMaxThreshPkts Unsigned32,
diffServRandomDropInvProbMax Unsigned32,
diffServRandomDropInvWeight Unsigned32,
diffServRandomDropSamplingRate Unsigned32,
diffServRandomDropStatus RowStatus
}
diffServQueue OBJECT IDENTIFIER ::= { diffServMIBObjects 6 }
diffServQNextFree OBJECT-TYPE
::= { diffServQueue 1 }
diffServQTable OBJECT-TYPE
::= { diffServQueue 2 }
diffServQEntry OBJECT-TYPE
INDEX { diffServQId }
::= { diffServQTable 1 }
DiffServQEntry ::= SEQUENCE {
diffServQId Unsigned32,
diffServQNext RowPointer,
diffServQSchdParam RowPointer,
diffServQStatus RowStatus
}
diffServScheduler OBJECT IDENTIFIER ::= { diffServMIBObjects 7 } With the structures of this MIB divided into data path linkage tables
and parameterization tables, and with the use of RowPointer and
StaticRowPointer, new data path linkage and parameterization tables can
be defined in other MIB modules, and used with tables defined in this
MIB. This MIB does not limit on the type of entries its RowPointer
attributes can point to, hence new functional data path elements can be
defined in other MIBs and integrated with functional data path elements
of this MIB. For example, new Action functional data path element can
be defined for Traffic Engineering and be integrated with DiffServ
functional data path elements, possibly used within the same data path
sharing the same classifiers and meters.
diffServSchedulerNextFree OBJECT-TYPE It is more likely that new parameterization tables will be created in
::= { diffServScheduler 1 } other MIBs as new methods or proprietary methods get deployed for
diffServSchedulerTable OBJECT-TYPE existing diffserv functional data path elements. For example, different
::= { diffServScheduler 2 } kinds of filters can be defined by using new filter parameterization
diffServSchedulerEntry OBJECT-TYPE tables. New scheduling methods can be deployed by defining new
INDEX { diffServSchedulerId } scheduling method OIDs and new scheduling parameter tables.
::= { diffServSchedulerTable 1 }
DiffServSchedulerEntry ::= SEQUENCE {
diffServSchedulerId Unsigned32,
diffServSchedulerNext RowPointer,
diffServSchedulerMethod INTEGER,
diffServSchedulerSchdParam RowPointer,
diffServSchedulerStatus RowStatus
}
diffServSchdParamNextFree OBJECT-TYPE Notice both new data path linkage tables and parameterization tables can
::= { diffServScheduler 3 } be added without needing to change this MIB document or affect existing
diffServSchdParamTable OBJECT-TYPE tables and their usage.
::= { diffServScheduler 4 }
diffServSchdParamEntry OBJECT-TYPE
INDEX { diffServSchdParamId }
::= { diffServSchdParamTable 1 }
DiffServSchdParamEntry ::= SEQUENCE {
diffServSchdParamId Unsigned32,
diffServSchdParamPriority Unsigned32,
diffServSchdParamMinRateAbs Unsigned32,
diffServSchdParamMinRateRel Unsigned32,
diffServSchdParamMaxRateAbs Unsigned32,
diffServSchdParamMaxRateRel Unsigned32,
diffServSchdParamStatus RowStatus
}
8. MIB Definition 7. MIB Definition
DIFF-SERV-MIB DEFINITIONS ::= BEGIN DIFF-SERV-MIB DEFINITIONS ::= BEGIN
IMPORTS IMPORTS
Integer32, Unsigned32, Counter32, Counter64, Integer32, Unsigned32, Counter32, Counter64,
MODULE-IDENTITY, OBJECT-TYPE, zeroDotZero, mib-2 MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY,
zeroDotZero, mib-2
FROM SNMPv2-SMI FROM SNMPv2-SMI
TEXTUAL-CONVENTION, RowStatus, RowPointer, TimeStamp TEXTUAL-CONVENTION, RowStatus, RowPointer, TimeStamp
FROM SNMPv2-TC FROM SNMPv2-TC
MODULE-COMPLIANCE, OBJECT-GROUP MODULE-COMPLIANCE, OBJECT-GROUP
FROM SNMPv2-CONF FROM SNMPv2-CONF
ifIndex ifIndex
FROM IF-MIB FROM IF-MIB
InetAddressType, InetAddress InetAddressType, InetAddress
FROM INET-ADDRESS-MIB FROM INET-ADDRESS-MIB
BurstSize BurstSize
FROM INTEGRATED-SERVICES-MIB; FROM INTEGRATED-SERVICES-MIB;
diffServMib MODULE-IDENTITY diffServMib MODULE-IDENTITY
LAST-UPDATED "200011030000Z" LAST-UPDATED "200011190000Z"
ORGANIZATION "IETF Diffserv WG" ORGANIZATION "IETF Diffserv WG"
CONTACT-INFO CONTACT-INFO
" Fred Baker " Fred Baker
Cisco Systems Cisco Systems
519 Lado Drive 519 Lado Drive
Santa Barbara, CA 93111, USA Santa Barbara, CA 93111, USA
E-mail: fred@cisco.com E-mail: fred@cisco.com
Kwok Ho Chan Kwok Ho Chan
Nortel Networks Nortel Networks
skipping to change at page 34, line 4 skipping to change at page 26, line 40
Cisco Systems Cisco Systems
519 Lado Drive 519 Lado Drive
Santa Barbara, CA 93111, USA Santa Barbara, CA 93111, USA
E-mail: fred@cisco.com E-mail: fred@cisco.com
Kwok Ho Chan Kwok Ho Chan
Nortel Networks Nortel Networks
600 Technology Park Drive 600 Technology Park Drive
Billerica, MA 01821, USA Billerica, MA 01821, USA
E-mail: khchan@nortelnetworks.com E-mail: khchan@nortelnetworks.com
Andrew Smith Andrew Smith
E-mail: ah_smith@pacbell.net" Allegro Networks
6399 San Ignacio Ave
San Jose, CA 95119, USA
E-mail: andrew@allegronetworks.com"
DESCRIPTION DESCRIPTION
"This MIB defines the objects necessary to manage a "This MIB defines the objects necessary to manage a
device that uses the Differentiated Services Archi- device that uses the Differentiated Services Archi-
tecture described in RFC 2475 and the Informal tecture described in RFC 2475 and the Informal
Management Model for DiffServ Routers in draft-ietf- Management Model for DiffServ Routers in draft-ietf-
diffserv-model-04.txt." diffserv-model-05.txt."
REVISION "200011030000Z" REVISION "200011190000Z"
DESCRIPTION DESCRIPTION
"Initial version, published as RFC xxxx." "Initial version, published as RFC xxxx."
::= { mib-2 12345 } -- anybody who uses this unassigned ::= { mib-2 12345 } -- anybody who uses this unassigned
-- number deserves the wrath of IANA -- number deserves the wrath of IANA
diffServMIBObjects OBJECT IDENTIFIER ::= { diffServMib 1 } diffServMIBObjects OBJECT IDENTIFIER ::= { diffServMib 1 }
diffServMIBConformance OBJECT IDENTIFIER ::= { diffServMib 2 } diffServMIBConformance OBJECT IDENTIFIER ::= { diffServMib 2 }
-- These textual conventions have no effect on either the syntax -- These textual conventions have no effect on either the syntax
-- nor the semantics of any managed object. Objects defined -- nor the semantics of any managed object. Objects defined
-- using this convention are always encoded by means of the -- using this convention are always encoded by means of the
-- rules that define their primitive type. -- rules that define their primitive type.
skipping to change at page 34, line 32 skipping to change at page 27, line 31
-- nor the semantics of any managed object. Objects defined -- nor the semantics of any managed object. Objects defined
-- using this convention are always encoded by means of the -- using this convention are always encoded by means of the
-- rules that define their primitive type. -- rules that define their primitive type.
Dscp ::= TEXTUAL-CONVENTION Dscp ::= TEXTUAL-CONVENTION
DISPLAY-HINT "d" DISPLAY-HINT "d"
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The IP header Diffserv Code-Point that may be used "The IP header Diffserv Code-Point that may be used
for discriminating or marking a traffic stream. The for discriminating or marking a traffic stream. The
value -1 is used to indicate a wildcard i.e. any value -1 ( 4294967295 for Integer32 ) is used to
value." indicate a wildcard i.e. any value."
SYNTAX Integer32 (-1 | 0..63) SYNTAX Integer32 (4294967295 | 0..63)
SixTupleClfrL4Port ::= TEXTUAL-CONVENTION SixTupleClfrL4Port ::= TEXTUAL-CONVENTION
DISPLAY-HINT "d" DISPLAY-HINT "d"
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A value indicating a Layer-4 protocol port number." "A value indicating a Layer-4 protocol port number."
SYNTAX Unsigned32 (0..65535) SYNTAX Unsigned32 (0..65535)
IfDirection ::= TEXTUAL-CONVENTION IfDirection ::= TEXTUAL-CONVENTION
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Specifies a direction of data travel on an inter- "Specifies a direction of data travel on an inter-
face. 'inbound' traffic is operated on during recep- face. 'inbound' traffic is operated on during recep-
tion from the interface, while 'outbound' traffic is tion from the interface, while 'outbound' traffic is
operated on prior to transmission on the interface." operated on prior to transmission on the interface."
SYNTAX INTEGER { SYNTAX INTEGER {
inbound(1), -- ingress interface inbound(1), -- ingress interface
outbound(2) -- egress interface outbound(2) -- egress interface
} }
-- The following textual convention, StaticRowPointer,
-- is similiar to the RowPointer textual convention,
-- but embody additional semantics to indicate whether
-- a single instance of the target object can be pointed
-- to by more than one parent objects.
-- This textual convention allows a clearer definition
-- of parameterization table entries, as compared to
-- datapath linking table entries.
-- Objects pointed to by StaticRowPointers, parameterization
-- table entries, can be reused by one or more data path
-- functional elements in one or more TCBs, belonging to one
-- or more data paths.
-- This textual convention also allow easier reuse of
-- data definitions in this MIB by higher level configuration
-- and provisioning mechanisms.
StaticRowPointer ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"Like a RowPointer, this textual convention
represents a pointer to a conceptual row. The value
is the name of the instance of the first accessible
columnar object in the conceptual row.
The additional semantics of this textual convention,
relative to RowPointer, are related to the object the
pointer is pointing to. The pointed-to object may
have more than one parent object pointing to it,
indicating the pointed-to object can be shared by one
or more parent objects.
This additional semantics facilitates the creation of
instance-specific objects by cloning, used by higher
level configuration/provisioning mechanisms. The
objects being cloned may either be special ones that
express configuration information at the
implementation-specific level, or simply instance-
specific ones that already exist at the time the
cloning is done. When an object with the syntax Sta-
ticRowPointer is cloned, the StaticRowPointer in the
newly cloned object is set to point to the same con-
ceptual row that the StaticRowPointer in the cloned-
from object pointed to. The cloning operations may be
accomplished either with the script-based technique
defined by SNMP Configuration, or by ordinary SNMP
Get and Set operations, or other mechanisms.
Support of this additional semantics and cloning
functionality is not required for conformance to this
MIB. When the additional semantics is not supported,
this textual convention behaves identically to the
RowPointer textual convention."
SYNTAX OBJECT IDENTIFIER
-- --
-- Data Path -- Data Path
-- --
diffServDataPath OBJECT IDENTIFIER ::= { diffServMIBObjects 1 } diffServDataPath OBJECT IDENTIFIER ::= { diffServMIBObjects 1 }
-- --
-- Data Path Table -- Data Path Table
-- --
-- The Data Path Table enumerates the Differentiated Services -- The Data Path Table enumerates the Differentiated Services
-- Data Paths within this device. Each entry in this table -- Data Paths within this device. Each entry in this table
-- is indexed by ifIndex and ifDirection. Each entry provides -- is indexed by ifIndex and ifDirection. Each entry provides
-- the first diffserv functional datapath element to process data -- the first diffserv functional datapath element to process data
-- flow for each specific datapath. This table should have at most
-- two entries for each DiffServ capable interface on this device;
-- ingress and egress.
-- --
-- Notice all diffserv functional datapath elements linked together -- Notice all diffserv functional datapath elements linked together
-- using their individual next pointers and anchored by an entry -- using their individual next pointers and anchored by an entry
-- of the diffServDataPathTable must belong to the same datapath. -- of the diffServDataPathTable must belong to the same datapath.
-- The use of next pointer to point to diffserv functional datapath -- The use of next pointer to point to diffserv functional datapath
-- element of a different datapath is not allowed. -- element of a different datapath is not allowed.
-- --
diffServDataPathTable OBJECT-TYPE diffServDataPathTable OBJECT-TYPE
SYNTAX SEQUENCE OF DiffServDataPathEntry SYNTAX SEQUENCE OF DiffServDataPathEntry
skipping to change at page 37, line 25 skipping to change at page 31, line 4
::= { diffServDataPathEntry 1 } ::= { diffServDataPathEntry 1 }
diffServDataPathStart OBJECT-TYPE diffServDataPathStart OBJECT-TYPE
SYNTAX RowPointer SYNTAX RowPointer
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"This selects the first diffserv functional datapath "This selects the first diffserv functional datapath
element to handle traffic for this data path. This element to handle traffic for this data path. This
RowPointer should point to an instance of one of: RowPointer should point to an instance of one of:
diffServClfrEntry diffServClfrEntry
diffServMeterEntry diffServMeterEntry
diffServActionEntry diffServActionEntry
diffServAlgDropEntry diffServAlgDropEntry
diffServQEntry diffServQEntry
A value of zeroDotZero in this attribute indicates no A value of zeroDotZero in this attribute indicates no
further Diffserv treatment is performed on traffic of further Diffserv treatment is performed on traffic of
this datapath. this datapath. The use of zeroDotZero is the normal
usage for the last functional datapath element of the
current data path.
If the row pointed to does not exist, this whole If the row pointed to does not exist, the treatment
diffserv datapath is ignored." is as if this attribute contains a value of zero-
DotZero."
::= { diffServDataPathEntry 2 } ::= { diffServDataPathEntry 2 }
diffServDataPathStatus OBJECT-TYPE diffServDataPathStatus OBJECT-TYPE
SYNTAX RowStatus SYNTAX RowStatus
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The RowStatus variable controls the activation, "The RowStatus variable controls the activation,
deactivation, or deletion of a row/entry. Any writ- deactivation, or deletion of a row/entry. Any writ-
able variable may be modified whether the row is able variable may be modified whether the row is
skipping to change at page 42, line 33 skipping to change at page 35, line 10
"An entry in the classifier element table describes a "An entry in the classifier element table describes a
single element of the classifier." single element of the classifier."
INDEX { diffServClfrElementClfrId, diffServClfrElementId } INDEX { diffServClfrElementClfrId, diffServClfrElementId }
::= { diffServClfrElementTable 1 } ::= { diffServClfrElementTable 1 }
DiffServClfrElementEntry ::= SEQUENCE { DiffServClfrElementEntry ::= SEQUENCE {
diffServClfrElementId Unsigned32, diffServClfrElementId Unsigned32,
diffServClfrElementClfrId Unsigned32, diffServClfrElementClfrId Unsigned32,
diffServClfrElementOrder Unsigned32, diffServClfrElementOrder Unsigned32,
diffServClfrElementNext RowPointer, diffServClfrElementNext RowPointer,
diffServClfrElementSpecific RowPointer, diffServClfrElementSpecific StaticRowPointer,
diffServClfrElementStatus RowStatus diffServClfrElementStatus RowStatus
} }
diffServClfrElementId OBJECT-TYPE diffServClfrElementId OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"An index that enumerates the Classifier Element "An index that enumerates the Classifier Element
entries. The set of such identifiers spans the whole entries. The set of such identifiers spans the whole
skipping to change at page 44, line 32 skipping to change at page 36, line 38
element to handle traffic for this data path. This element to handle traffic for this data path. This
RowPointer should point to an instance of one of: RowPointer should point to an instance of one of:
diffServClfrEntry diffServClfrEntry
diffServMeterEntry diffServMeterEntry
diffServActionEntry diffServActionEntry
diffServAlgDropEntry diffServAlgDropEntry
diffServQEntry diffServQEntry
A value of zeroDotZero in this attribute indicates no A value of zeroDotZero in this attribute indicates no
further Diffserv treatment is performed on traffic of further Diffserv treatment is performed on traffic of
this datapath. this datapath. The use of zeroDotZero is the normal
usage for the last functional datapath element of the
current data path.
If the row pointed to does not exist, the treatment If the row pointed to does not exist, the treatment
is as if this attribute contains a value of zero- is as if this attribute contains a value of zero-
DotZero." DotZero."
::= { diffServClfrElementEntry 4 } ::= { diffServClfrElementEntry 4 }
diffServClfrElementSpecific OBJECT-TYPE diffServClfrElementSpecific OBJECT-TYPE
SYNTAX RowPointer SYNTAX StaticRowPointer
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A pointer to a valid entry in another table, "A pointer to a valid entry in another table,
filter table, that describes the applicable classif- filter table, that describes the applicable classif-
ication parameters, e.g. an entry in diffServSixTu- ication parameters, e.g. an entry in diffServSixTu-
pleClfrTable. pleClfrTable.
If the row pointed to does not exist, the classifier If the row pointed to does not exist, the classifier
element is ignored. element is ignored.
The value zeroDotZero is interpreted to match any- The value zeroDotZero is interpreted to match
thing not matched by another classifier element - anything not matched by another classifier element -
only one such entry may exist for each classifier." only one such entry may exist for each classifier."
DEFVAL { zeroDotZero } DEFVAL { zeroDotZero }
::= { diffServClfrElementEntry 5 } ::= { diffServClfrElementEntry 5 }
diffServClfrElementStatus OBJECT-TYPE diffServClfrElementStatus OBJECT-TYPE
SYNTAX RowStatus SYNTAX RowStatus
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The RowStatus variable controls the activation, "The RowStatus variable controls the activation,
skipping to change at page 50, line 8 skipping to change at page 41, line 19
DSCP values are considered a match." DSCP values are considered a match."
DEFVAL {-1} DEFVAL {-1}
::= { diffServSixTupleClfrEntry 8 } ::= { diffServSixTupleClfrEntry 8 }
diffServSixTupleClfrProtocol OBJECT-TYPE diffServSixTupleClfrProtocol OBJECT-TYPE
SYNTAX Unsigned32 (0..255) SYNTAX Unsigned32 (0..255)
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The IP protocol to match against the IPv4 protocol "The IP protocol to match against the IPv4 protocol
number in the packet. A value of zero means match number or the IPv6 Next-Header number in the packet.
all." A value of 255 means match all. Note the protocol
DEFVAL {0} number of 255 is reserved by IANA, and Next-Header
number of 0 is used in IPv6."
DEFVAL {255}
::= { diffServSixTupleClfrEntry 9 } ::= { diffServSixTupleClfrEntry 9 }
diffServSixTupleClfrDstL4PortMin OBJECT-TYPE diffServSixTupleClfrDstL4PortMin OBJECT-TYPE
SYNTAX SixTupleClfrL4Port SYNTAX SixTupleClfrL4Port
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The minimum value that the layer-4 destination port "The minimum value that the layer-4 destination port
number in the packet must have in order to match this number in the packet must have in order to match this
classifier entry." classifier entry."
skipping to change at page 54, line 19 skipping to change at page 44, line 47
DESCRIPTION DESCRIPTION
"An entry in the meter table describes a single con- "An entry in the meter table describes a single con-
formance level of a meter." formance level of a meter."
INDEX { diffServMeterId } INDEX { diffServMeterId }
::= { diffServMeterTable 1 } ::= { diffServMeterTable 1 }
DiffServMeterEntry ::= SEQUENCE { DiffServMeterEntry ::= SEQUENCE {
diffServMeterId Unsigned32, diffServMeterId Unsigned32,
diffServMeterSucceedNext RowPointer, diffServMeterSucceedNext RowPointer,
diffServMeterFailNext RowPointer, diffServMeterFailNext RowPointer,
diffServMeterSpecific RowPointer, diffServMeterSpecific StaticRowPointer,
diffServMeterStatus RowStatus diffServMeterStatus RowStatus
} }
diffServMeterId OBJECT-TYPE diffServMeterId OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"An index that enumerates the Meter entries. The set "An index that enumerates the Meter entries. The set
of such identifiers spans the whole agent. Managers of such identifiers spans the whole agent. Managers
skipping to change at page 55, line 19 skipping to change at page 45, line 35
traffic for this data path. This RowPointer should traffic for this data path. This RowPointer should
point to an instance of one of: point to an instance of one of:
diffServClfrEntry diffServClfrEntry
diffServMeterEntry diffServMeterEntry
diffServActionEntry diffServActionEntry
diffServAlgDropEntry diffServAlgDropEntry
diffServQEntry diffServQEntry
A value of zeroDotZero in this attribute indicates no A value of zeroDotZero in this attribute indicates no
further Diffserv treatment is performed on traffic of further Diffserv treatment is performed on traffic of
this datapath. this datapath. The use of zeroDotZero is the normal
usage for the last functional datapath element of the
current data path.
If the row pointed to does not exist, the treatment If the row pointed to does not exist, the treatment
is as if this attribute contains a value of zero- is as if this attribute contains a value of zero-
DotZero." DotZero."
DEFVAL { zeroDotZero } DEFVAL { zeroDotZero }
::= { diffServMeterEntry 2 } ::= { diffServMeterEntry 2 }
diffServMeterFailNext OBJECT-TYPE diffServMeterFailNext OBJECT-TYPE
SYNTAX RowPointer SYNTAX RowPointer
MAX-ACCESS read-create MAX-ACCESS read-create
skipping to change at page 56, line 4 skipping to change at page 46, line 18
traffic for this data path. This RowPointer should traffic for this data path. This RowPointer should
point to an instance of one of: point to an instance of one of:
diffServClfrEntry diffServClfrEntry
diffServMeterEntry diffServMeterEntry
diffServActionEntry diffServActionEntry
diffServAlgDropEntry diffServAlgDropEntry
diffServQEntry diffServQEntry
A value of zeroDotZero in this attribute indicates no A value of zeroDotZero in this attribute indicates no
further Diffserv treatment is performed on traffic of further Diffserv treatment is performed on traffic of
this datapath. this datapath. The use of zeroDotZero is the normal
usage for the last functional datapath element of the
current data path.
If the row pointed to does not exist, the treatment If the row pointed to does not exist, the treatment
is as if this attribute contains a value of zero- is as if this attribute contains a value of zero-
DotZero." DotZero."
DEFVAL { zeroDotZero } DEFVAL { zeroDotZero }
::= { diffServMeterEntry 3 } ::= { diffServMeterEntry 3 }
diffServMeterSpecific OBJECT-TYPE diffServMeterSpecific OBJECT-TYPE
SYNTAX RowPointer SYNTAX StaticRowPointer
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"This indicates the behaviour of the meter by point- "This indicates the behaviour of the meter by point-
ing to an entry containing detailed parameters. Note ing to an entry containing detailed parameters. Note
that entries in that specific table must be managed that entries in that specific table must be managed
explicitly. explicitly.
For example, diffServMeterSpecific may point to an For example, diffServMeterSpecific may point to an
entry in diffServTBMeterTable, which contains an entry in diffServTBMeterTable, which contains an
skipping to change at page 60, line 8 skipping to change at page 49, line 39
::= { diffServTBMeterEntry 2 } ::= { diffServTBMeterEntry 2 }
diffServTBMeterRate OBJECT-TYPE diffServTBMeterRate OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
UNITS "kilobits per second" UNITS "kilobits per second"
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The token-bucket rate, in kilobits per second "The token-bucket rate, in kilobits per second
(kbps). This attribute is used for: 1. CIR in RFC (kbps). This attribute is used for: 1. CIR in RFC
2697 for srTCM 2. PIR and CIR in FRC 2698 for trTCM 2697 for srTCM 2. PIR and CIR in RFC 2698 for trTCM
3. CTR and PTR in RFC 2859 for TSWTCM 4. AverageRate 3. CTR and PTR in RFC 2859 for TSWTCM 4. AverageRate
used in [MODEL] section 5." used in [MODEL] section 5."
::= { diffServTBMeterEntry 3 } ::= { diffServTBMeterEntry 3 }
diffServTBMeterBurstSize OBJECT-TYPE diffServTBMeterBurstSize OBJECT-TYPE
SYNTAX BurstSize SYNTAX BurstSize
UNITS "Bytes" UNITS "Bytes"
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The maximum number of bytes in a single transmission "The maximum number of bytes in a single transmission
burst. This attribute is used for: 1. CBS and EBS in burst. This attribute is used for: 1. CBS and EBS in
RFC 2697 for srTCM 2. CBS and PBS in FRC 2698 for RFC 2697 for srTCM 2. CBS and PBS in RFC 2698 for
trTCM 3. Burst Size used in [MODEL] section 5." trTCM 3. Burst Size used in [MODEL] section 5."
::= { diffServTBMeterEntry 4 } ::= { diffServTBMeterEntry 4 }
diffServTBMeterInterval OBJECT-TYPE diffServTBMeterInterval OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
UNITS "microseconds" UNITS "microseconds"
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The time interval used with the token bucket. For: "The time interval used with the token bucket. For:
skipping to change at page 62, line 34 skipping to change at page 52, line 6
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Each entry in the action table allows description of "Each entry in the action table allows description of
one specific action to be applied to traffic." one specific action to be applied to traffic."
INDEX { diffServActionId } INDEX { diffServActionId }
::= { diffServActionTable 1 } ::= { diffServActionTable 1 }
DiffServActionEntry ::= SEQUENCE { DiffServActionEntry ::= SEQUENCE {
diffServActionId Unsigned32, diffServActionId Unsigned32,
diffServActionNext RowPointer, diffServActionNext RowPointer,
diffServActionSpecific RowPointer, diffServActionSpecific StaticRowPointer,
diffServActionType INTEGER, diffServActionType INTEGER,
diffServActionStatus RowStatus diffServActionStatus RowStatus
} }
diffServActionId OBJECT-TYPE diffServActionId OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"An index that enumerates the Action entries. The set "An index that enumerates the Action entries. The set
skipping to change at page 63, line 34 skipping to change at page 52, line 38
element to handle traffic for this data path. This element to handle traffic for this data path. This
RowPointer should point to an instance of one of: RowPointer should point to an instance of one of:
diffServClfrEntry diffServClfrEntry
diffServMeterEntry diffServMeterEntry
diffServActionEntry diffServActionEntry
diffServAlgDropEntry diffServAlgDropEntry
diffServQEntry diffServQEntry
A value of zeroDotZero in this attribute indicates no A value of zeroDotZero in this attribute indicates no
further Diffserv treatment is performed on traffic of further Diffserv treatment is performed on traffic of
this datapath. this datapath. The use of zeroDotZero is the normal
usage for the last functional datapath element of the
current data path.
If the row pointed to does not exist, the treatment If the row pointed to does not exist, the treatment
is as if this attribute contains a value of zero- is as if this attribute contains a value of zero-
DotZero." DotZero."
DEFVAL { zeroDotZero } DEFVAL { zeroDotZero }
::= { diffServActionEntry 2 } ::= { diffServActionEntry 2 }
diffServActionSpecific OBJECT-TYPE diffServActionSpecific OBJECT-TYPE
SYNTAX RowPointer SYNTAX StaticRowPointer
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A pointer to an object instance providing additional "A pointer to an object instance providing additional
information for the type of action indicated by this information for the type of action indicated by this
action table entry. action table entry.
For the standard actions defined by this MIB module, For the standard actions defined by this MIB module,
this should point to one of the following: a this should point to one of the following: a
diffServDscpMarkActEntry, a diffServCountActEntry. diffServDscpMarkActEntry, a diffServCountActEntry.
skipping to change at page 65, line 17 skipping to change at page 54, line 19
-- --
-- Rows of this table are pointed to by diffServActionSpecific -- Rows of this table are pointed to by diffServActionSpecific
-- to provide detailed parameters specific to the DSCP -- to provide detailed parameters specific to the DSCP
-- Mark action. -- Mark action.
-- --
-- A single entry in this table can be shared, pointed to, by -- A single entry in this table can be shared, pointed to, by
-- multiple diffServActionTable entries, of same or different -- multiple diffServActionTable entries, of same or different
-- datapaths. -- datapaths.
-- --
diffServDscpMarkActNextFree OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object yields a value when read that is currently unused
for a diffServDscpMarkActId instance.
If a configuring system attempts to create a new row
in the diffServDscpMarkActTable using this value, that operation
will fail if the value has, in the meantime, been used
to create another row that is currently valid."
::= { diffServAction 3 }
diffServDscpMarkActTable OBJECT-TYPE diffServDscpMarkActTable OBJECT-TYPE
SYNTAX SEQUENCE OF DiffServDscpMarkActEntry SYNTAX SEQUENCE OF DiffServDscpMarkActEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"This table enumerates specific DSCPs used for mark- "This table enumerates specific DSCPs used for mark-
ing or remarking the DSCP field of IP packets. The ing or remarking the DSCP field of IP packets. The
entries of this table may be referenced by a diffSer- entries of this table may be referenced by a diffSer-
vActionSpecific attribute." vActionSpecific attribute."
REFERENCE REFERENCE
"[MODEL] section 6.1" "[MODEL] section 6.1"
::= { diffServAction 4 } ::= { diffServAction 3 }
diffServDscpMarkActEntry OBJECT-TYPE diffServDscpMarkActEntry OBJECT-TYPE
SYNTAX DiffServDscpMarkActEntry SYNTAX DiffServDscpMarkActEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"An entry in the DSCP mark action table that "An entry in the DSCP mark action table that
describes a single DSCP used for marking." describes a single DSCP used for marking."
INDEX { diffServDscpMarkActId } INDEX { diffServDscpMarkActDscp }
::= { diffServDscpMarkActTable 1 } ::= { diffServDscpMarkActTable 1 }
DiffServDscpMarkActEntry ::= SEQUENCE { DiffServDscpMarkActEntry ::= SEQUENCE {
diffServDscpMarkActId Unsigned32, diffServDscpMarkActDscp Dscp
diffServDscpMarkActDscp Dscp,
diffServDscpMarkActStatus RowStatus
} }
diffServDscpMarkActId OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An index that enumerates the Mark Action entries.
The set of such identifiers spans the whole agent.
Managers should obtain new values for row creation in
this table by reading diffServDscpMarkActNextFree."
::= { diffServDscpMarkActEntry 1 }
diffServDscpMarkActDscp OBJECT-TYPE diffServDscpMarkActDscp OBJECT-TYPE
SYNTAX Dscp SYNTAX Dscp
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The DSCP that this Action uses for marking/remarking "The DSCP that this Action uses for marking/remarking
traffic. Note that a DSCP value of -1 is not permit- traffic. Note that a DSCP value of -1 is not permit-
ted in this table. It is quite possible that the ted in this table. It is quite possible that the
only packets subject to this Action are already only packets subject to this Action are already
marked with this DSCP. Note also that Diffserv may marked with this DSCP. Note also that Diffserv may
result in packet remarking both on ingress to a net- result in packet remarking both on ingress to a net-
work and on egress from it and it is quite possible work and on egress from it and it is quite possible
that ingress and egress would occur in the same that ingress and egress would occur in the same
router." router."
::= { diffServDscpMarkActEntry 2 } ::= { diffServDscpMarkActEntry 1 }
diffServDscpMarkActStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The RowStatus variable controls the activation,
deactivation, or deletion of this entry. Any writable
variable may be modified whether the row is active or
notInService."
::= { diffServDscpMarkActEntry 3 }
-- --
-- Count Action Table -- Count Action Table
-- --
-- Due to the fact that the MIB structure allows multiple -- Due to the fact that the MIB structure allows multiple
-- cascading diffServActionEntry be used to describe -- cascading diffServActionEntry be used to describe
-- multiple actions for a datapath, the counter became an -- multiple actions for a datapath, the counter became an
-- optional action type. In normal implementation, a -- optional action type. In normal implementation, a
-- datapath either have counters or it doesn't, it is not -- datapath either have counters or it doesn't, it is not
-- an element the management entity can add or remove. -- an element the management entity can add or remove.
skipping to change at page 68, line 20 skipping to change at page 55, line 48
SYNTAX Unsigned32 SYNTAX Unsigned32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"This object yields a value when read that is currently unused "This object yields a value when read that is currently unused
for a diffServCountActId instance. for a diffServCountActId instance.
If a configuring system attempts to create a new row If a configuring system attempts to create a new row
in the diffServCountActTable using this value, that operation in the diffServCountActTable using this value, that operation
will fail if the value has, in the meantime, been used will fail if the value has, in the meantime, been used
to create another row that is currently valid." to create another row that is currently valid."
::= { diffServAction 5 } ::= { diffServAction 4 }
diffServCountActTable OBJECT-TYPE diffServCountActTable OBJECT-TYPE
SYNTAX SEQUENCE OF DiffServCountActEntry SYNTAX SEQUENCE OF DiffServCountActEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"This table contains counters for all the traffic "This table contains counters for all the traffic
passing through an action element." passing through an action element."
REFERENCE REFERENCE
"[MODEL] section 6.4" "[MODEL] section 6.4"
::= { diffServAction 6 } ::= { diffServAction 5 }
diffServCountActEntry OBJECT-TYPE diffServCountActEntry OBJECT-TYPE
SYNTAX DiffServCountActEntry SYNTAX DiffServCountActEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"An entry in the count action table describes a sin- "An entry in the count action table describes a sin-
gle set of traffic counters." gle set of traffic counters."
INDEX { diffServCountActId } INDEX { diffServCountActId }
::= { diffServCountActTable 1 } ::= { diffServCountActTable 1 }
skipping to change at page 73, line 11 skipping to change at page 60, line 5
diffServAlgDropSpecific when necessary." diffServAlgDropSpecific when necessary."
INDEX { diffServAlgDropId } INDEX { diffServAlgDropId }
::= { diffServAlgDropTable 1 } ::= { diffServAlgDropTable 1 }
DiffServAlgDropEntry ::= SEQUENCE { DiffServAlgDropEntry ::= SEQUENCE {
diffServAlgDropId Unsigned32, diffServAlgDropId Unsigned32,
diffServAlgDropType INTEGER, diffServAlgDropType INTEGER,
diffServAlgDropNext RowPointer, diffServAlgDropNext RowPointer,
diffServAlgDropQMeasure RowPointer, diffServAlgDropQMeasure RowPointer,
diffServAlgDropQThreshold Unsigned32, diffServAlgDropQThreshold Unsigned32,
diffServAlgDropSpecific RowPointer, diffServAlgDropSpecific StaticRowPointer,
diffServAlgDropOctets Counter32, diffServAlgDropOctets Counter32,
diffServAlgDropHCOctets Counter64, diffServAlgDropHCOctets Counter64,
diffServAlgDropPkts Counter32, diffServAlgDropPkts Counter32,
diffServAlgDropHCPkts Counter64, diffServAlgDropHCPkts Counter64,
diffServAlgDropStatus RowStatus diffServAlgDropStatus RowStatus
} }
diffServAlgDropId OBJECT-TYPE diffServAlgDropId OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
skipping to change at page 75, line 21 skipping to change at page 61, line 36
element to handle traffic for this data path. This element to handle traffic for this data path. This
RowPointer should point to an instance of one of: RowPointer should point to an instance of one of:
diffServClfrEntry diffServClfrEntry
diffServMeterEntry diffServMeterEntry
diffServActionEntry diffServActionEntry
diffServAlgDropEntry diffServAlgDropEntry
diffServQEntry diffServQEntry
A value of zeroDotZero in this attribute indicates no A value of zeroDotZero in this attribute indicates no
further Diffserv treatment is performed on traffic of further Diffserv treatment is performed on traffic of
this datapath. this datapath. The use of zeroDotZero is the normal
usage for the last functional datapath element of the
current data path.
If the row pointed to does not exist, the treatment If the row pointed to does not exist, the treatment
is as if this attribute contains a value of zero- is as if this attribute contains a value of zero-
DotZero." DotZero."
::= { diffServAlgDropEntry 3 } ::= { diffServAlgDropEntry 3 }
diffServAlgDropQMeasure OBJECT-TYPE diffServAlgDropQMeasure OBJECT-TYPE
SYNTAX RowPointer SYNTAX RowPointer
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
skipping to change at page 76, line 18 skipping to change at page 62, line 30
ping algorithm. ping algorithm.
For the tailDrop(2) or headDrop(3) algorithms, this For the tailDrop(2) or headDrop(3) algorithms, this
represents the depth of the queue, pointed to by represents the depth of the queue, pointed to by
diffServAlgDropQMeasure, at which the drop action diffServAlgDropQMeasure, at which the drop action
will take place. Other algorithms will need to define will take place. Other algorithms will need to define
their own semantics for this threshold." their own semantics for this threshold."
::= { diffServAlgDropEntry 5 } ::= { diffServAlgDropEntry 5 }
diffServAlgDropSpecific OBJECT-TYPE diffServAlgDropSpecific OBJECT-TYPE
SYNTAX RowPointer SYNTAX StaticRowPointer
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Points to a table entry that provides further detail "Points to a table entry that provides further detail
regarding a drop algorithm. regarding a drop algorithm.
Entries with diffServAlgDropType equal to other(1) Entries with diffServAlgDropType equal to other(1)
may have this point to a table defined in another MIB may have this point to a table defined in another MIB
module. module.
skipping to change at page 85, line 24 skipping to change at page 70, line 13
DESCRIPTION DESCRIPTION
"An entry in the Queue Table describes a single "An entry in the Queue Table describes a single
queue. With each entry belonging to one and only one queue. With each entry belonging to one and only one
datapath." datapath."
INDEX { diffServQId } INDEX { diffServQId }
::= { diffServQTable 1 } ::= { diffServQTable 1 }
DiffServQEntry ::= SEQUENCE { DiffServQEntry ::= SEQUENCE {
diffServQId Unsigned32, diffServQId Unsigned32,
diffServQNext RowPointer, diffServQNext RowPointer,
diffServQSchdParam RowPointer, diffServQSchdParam StaticRowPointer,
diffServQStatus RowStatus diffServQStatus RowStatus
} }
diffServQId OBJECT-TYPE diffServQId OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"An index that enumerates the Queue entries. The set "An index that enumerates the Queue entries. The set
of such identifiers spans the whole agent. Managers of such identifiers spans the whole agent. Managers
skipping to change at page 86, line 26 skipping to change at page 71, line 6
A value of zeroDotZero in this attribute indicates an A value of zeroDotZero in this attribute indicates an
incomplete diffServQEntry instance. An illegal con- incomplete diffServQEntry instance. An illegal con-
figuration. figuration.
If the row pointed to does not exist, the treatment If the row pointed to does not exist, the treatment
is as if this attribute contains a value of zero- is as if this attribute contains a value of zero-
DotZero." DotZero."
::= { diffServQEntry 2 } ::= { diffServQEntry 2 }
diffServQSchdParam OBJECT-TYPE diffServQSchdParam OBJECT-TYPE
SYNTAX RowPointer SYNTAX StaticRowPointer
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"This RowPointer indicates the entry in "This StaticRowPointer indicates the entry in
diffServSchdParamTable the scheduler, pointed to by diffServSchdParamTable the scheduler, pointed to by
diffServQNext, should use to service this queue. diffServQNext, should use to service this queue.
A value of zeroDotZero in this attribute indicates an A value of zeroDotZero in this attribute indicates an
incomplete diffServQEntry instance. An illegal con- incomplete diffServQEntry instance. An illegal con-
figuration. figuration.
If the row pointed to does not exist, the treatment If the row pointed to does not exist, the treatment
is as if this attribute contains a value of zero- is as if this attribute contains a value of zero-
DotZero." DotZero."
skipping to change at page 87, line 38 skipping to change at page 72, line 4
-- --
-- The Scheduler Table is used for representing packet schedulers: -- The Scheduler Table is used for representing packet schedulers:
-- it provides flexibility for multiple scheduling algorithms, each -- it provides flexibility for multiple scheduling algorithms, each
-- servicing multiple queues, to be used on the same logical/physical -- servicing multiple queues, to be used on the same logical/physical
-- interface. -- interface.
-- Notice the servicing parameters the scheduler uses is -- Notice the servicing parameters the scheduler uses is
-- specified by each of its upstream functional datapath elements, -- specified by each of its upstream functional datapath elements,
-- most likely queues or schedulers. -- most likely queues or schedulers.
-- The coordination and coherency between the servicing parameters -- The coordination and coherency between the servicing parameters
-- of the scheduler's upstream functional datapath elements must -- of the scheduler's upstream functional datapath elements must
-- be maintained for the scheduler to function correctly. -- be maintained for the scheduler to function correctly.
-- --
-- The diffServSchedulerSchdParam attribute is used for specifying -- The diffServSchedulerSchdParam attribute is used for specifying
-- the servicing parameters for output of a scheduler when its -- the servicing parameters for output of a scheduler when its
-- downstream functional datapath element is another scheduler. -- downstream functional datapath element is another scheduler.
-- This is used for building hierarchical queue/scheduler. -- This is used for building hierarchical queue/scheduler.
-- --
-- More discussion of the scheduler functional datapath element -- More discussion of the scheduler functional datapath element
-- is in [MODEL] section 7.1.2. -- is in [MODEL] section 7.1.2.
-- --
diffServSchedulerPriority OBJECT-IDENTITY
STATUS current
DESCRIPTION
"For use with diffServSchedulerMethod 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
diffServSchdParamEntry of the queues/schedulers feed-
ing this scheduler are used when determining the next
packet to schedule."
REFERENCE
"[MODEL] section 7.1.2"
::= { diffServScheduler 1 }
diffServSchedulerWRR OBJECT-IDENTITY
STATUS current
DESCRIPTION
"For use with diffServSchedulerMethod 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 aver-
age output rate by class. Notice attributes from
diffServSchdParamEntry of the queues/schedulers feed-
ing this scheduler are used when determining the next
packet to schedule."
REFERENCE
"[MODEL] section 7.1.2"
::= { diffServScheduler 2 }
diffServSchedulerWFQ OBJECT-IDENTITY
STATUS current
DESCRIPTION
"For use with diffServSchedulerMethod to indicate
Weighted Fair Queueing scheduling method, defined as
any algorithm in which a set of queues are conceptu-
ally visited in some order, to implement an average
output rate by class. Notice attributes from
diffServSchdParamEntry of the queues/schedulers feed-
ing this scheduler are used when determining the next
packet to schedule."
REFERENCE
"[MODEL] section 7.1.2"
::= { diffServScheduler 3 }
diffServSchedulerShaping OBJECT-IDENTITY
STATUS current
DESCRIPTION
"For use with diffServSchedulerMethod to indicate the
scheduler is being used for shaping. Notice attri-
butes from diffServSchdParamEntry of the
queues/schedulers feeding this scheduler are used
when determining the next packet to schedule."
REFERENCE
"[MODEL] section 7.1.2"
::= { diffServScheduler 4 }
diffServSchedulerNextFree OBJECT-TYPE diffServSchedulerNextFree OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"This object yields a value when read that is "This object yields a value when read that is
currently unused for a diffServSchedulerId instance. currently unused for a diffServSchedulerId instance.
If a configuring system attempts to create a new row If a configuring system attempts to create a new row
in the diffServSchedulerTable using this value, that in the diffServSchedulerTable using this value, that
operation will fail if the value has, in the mean- operation will fail if the value has, in the mean-
time, been used to create another row that is time, been used to create another row that is
currently valid." currently valid."
::= { diffServScheduler 1 } ::= { diffServScheduler 5 }
diffServSchedulerTable OBJECT-TYPE diffServSchedulerTable OBJECT-TYPE
SYNTAX SEQUENCE OF DiffServSchedulerEntry SYNTAX SEQUENCE OF DiffServSchedulerEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The Scheduler Table enumerates packet schedulers. "The Scheduler Table enumerates packet schedulers.
Multiple scheduling algorithms can be used on a given Multiple scheduling algorithms can be used on a given
datapath, with each algorithm described by one datapath, with each algorithm described by one
diffServSchedulerEntry." diffServSchedulerEntry."
REFERENCE REFERENCE
"[MODEL] section 7.1.2" "[MODEL] section 7.1.2"
::= { diffServScheduler 2 } ::= { diffServScheduler 6 }
diffServSchedulerEntry OBJECT-TYPE diffServSchedulerEntry OBJECT-TYPE
SYNTAX DiffServSchedulerEntry SYNTAX DiffServSchedulerEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"An entry in the Scheduler Table describing a single "An entry in the Scheduler Table describing a single
instance of a scheduling algorithm." instance of a scheduling algorithm."
INDEX { diffServSchedulerId } INDEX { diffServSchedulerId }
::= { diffServSchedulerTable 1 } ::= { diffServSchedulerTable 1 }
DiffServSchedulerEntry ::= SEQUENCE { DiffServSchedulerEntry ::= SEQUENCE {
diffServSchedulerId Unsigned32, diffServSchedulerId Unsigned32,
diffServSchedulerNext RowPointer, diffServSchedulerNext RowPointer,
diffServSchedulerMethod INTEGER, diffServSchedulerMethod OBJECT IDENTIFIER,
diffServSchedulerSchdParam RowPointer, diffServSchedulerSchdParam StaticRowPointer,
diffServSchedulerStatus RowStatus diffServSchedulerStatus RowStatus
} }
diffServSchedulerId OBJECT-TYPE diffServSchedulerId OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"An index that enumerates the Scheduler entries. The "An index that enumerates the Scheduler entries. The
set of such identifiers spans the whole agent. set of such identifiers spans the whole agent.
skipping to change at page 89, line 33 skipping to change at page 75, line 10
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"This selects the next diffserv functional datapath "This selects the next diffserv functional datapath
element to handle traffic for this data path. This element to handle traffic for this data path. This
RowPointer should point to an instance of one of: RowPointer should point to an instance of one of:
diffServSchedulerEntry diffServSchedulerEntry
diffServQEntry As indicated by [MODEL] section diffServQEntry As indicated by [MODEL] section
7.1.4. 7.1.4.
But this RowPointer can also point to an instance of:
diffServClfrEntry
diffServMeterEntry
diffServActionEntry
diffServAlgDropEntry For building of multiple TCBs
for the same data path.
This should point to another diffServSchedulerEntry This should point to another diffServSchedulerEntry
for implementation of multiple scheduler methods for for implementation of multiple scheduler methods for
the same datapath, and for implementation of the same datapath, and for implementation of
hierarchical schedulers. hierarchical schedulers.
A value of zeroDotZero in this attribute indicates no A value of zeroDotZero in this attribute indicates no
further Diffserv treatment is performed on traffic of further Diffserv treatment is performed on traffic of
this datapath. The use of zeroDotZero is the normal this datapath. The use of zeroDotZero is the normal
usage for the last functional datapath element. usage for the last functional datapath element of the
current data path.
If the row pointed to does not exist, the treatment If the row pointed to does not exist, the treatment
is as if this attribute contains a value of zero- is as if this attribute contains a value of
DotZero." zeroDotZero."
DEFVAL { zeroDotZero } DEFVAL { zeroDotZero }
::= { diffServSchedulerEntry 2 } ::= { diffServSchedulerEntry 2 }
diffServSchedulerMethod OBJECT-TYPE diffServSchedulerMethod OBJECT-TYPE
SYNTAX INTEGER { SYNTAX OBJECT IDENTIFIER
other(1), -- not listed here
priorityq(2), -- Priority Queueing
wrr(3), -- Weighted Round Robin
wfq(4), -- Weighted Fair Queuing
wirr(5), -- Weighted Interleaved Round Robin
bsp(6) -- Bounded Strict Priority
}
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The scheduling algorithm used by this Scheduler. "The scheduling algorithm used by this Scheduler. {0
0} indicates this is unknown. Standard values for
A value of priorityq(2) is used to indicate strict generic algorithms: diffServSchedulerPriority,
priority queueing: only the diffServSchdParamPriority diffServSchedulerWRR, and diffServSchedulerWFQ are
attributes of the queues/schedulers feeding this specified in this MIB; additional values may be
scheduler are used when determining the next packet further specified in other MIBs."
to schedule.
A value of wrr(3) indicates weighted round-robin
scheduling. Packets are scheduled from each of the
queues/schedulers feeding this scheduler according to
all of the parameters of their respective
diffServSchdParamEntry.
A value of wfq(4) indicates weighted fair queueing
scheduling. Packets are scheduled from each of the
queues/schedulers feeding this scheduler according to
all of the parameters of their respective
diffServSchdParamEntry.
A value of wirr(5) indicates weighted interleaved
roundrobin queueing scheduling. Packets are
scheduled from each of the queues/schedulers feeding
this scheduler according to all the parameters of
their respective diffServSchdParamEntry.
A value of bsp(6) indicates bounded strict priority
scheduling. Packets are scheduled from each of the
queues/schedulers feeding this scheduler according to
all the parameters of their respective
diffServSchdParamEntry."
REFERENCE REFERENCE
"[MODEL] section 7.1.2" "[MODEL] section 7.1.2"
::= { diffServSchedulerEntry 3 } ::= { diffServSchedulerEntry 3 }
diffServSchedulerSchdParam OBJECT-TYPE diffServSchedulerSchdParam OBJECT-TYPE
SYNTAX RowPointer SYNTAX StaticRowPointer
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"This RowPointer indicates the entry in "This StaticRowPointer indicates the entry in
diffServSchdParamTable the higher level scheduler, diffServSchdParamTable the higher level scheduler,
pointed to by diffServSchedulerNext, should use to pointed to by diffServSchedulerNext, should use to
service the output of this scheduler. This attribute service the output of this scheduler. This attribute
is only used when there is more than one level of is only used when there is more than one level of
scheduler. And should have the value of zeroDotZero scheduler. And should have the value of zeroDotZero
when not used." when not used."
DEFVAL { zeroDotZero } DEFVAL { zeroDotZero }
::= { diffServSchedulerEntry 4 } ::= { diffServSchedulerEntry 4 }
diffServSchedulerStatus OBJECT-TYPE diffServSchedulerStatus OBJECT-TYPE
skipping to change at page 93, line 34 skipping to change at page 77, line 15
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"This object yields a value when read that is "This object yields a value when read that is
currently unused for a diffServSchdParamId instance. currently unused for a diffServSchdParamId instance.
If a configuring system attempts to create a new row If a configuring system attempts to create a new row
in the diffServSchdParamTable using this value, that in the diffServSchdParamTable using this value, that
operation will fail if the value has, in the mean- operation will fail if the value has, in the mean-
time, been used to create another row that is time, been used to create another row that is
currently valid." currently valid."
::= { diffServScheduler 3 } ::= { diffServScheduler 7 }
diffServSchdParamTable OBJECT-TYPE diffServSchdParamTable OBJECT-TYPE
SYNTAX SEQUENCE OF DiffServSchdParamEntry SYNTAX SEQUENCE OF DiffServSchdParamEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The Scheduling Parameter Table enumerates individual "The Scheduling Parameter Table enumerates individual
sets of scheduling parameter that can be used/reused sets of scheduling parameter that can be used/reused
by Queues and Schedulers." by Queues and Schedulers."
::= { diffServScheduler 4 } ::= { diffServScheduler 8 }
diffServSchdParamEntry OBJECT-TYPE diffServSchdParamEntry OBJECT-TYPE
SYNTAX DiffServSchdParamEntry SYNTAX DiffServSchdParamEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"An entry in the Scheduling Parameter Table describes "An entry in the Scheduling Parameter Table describes
a single set of scheduling parameter for use by a single set of scheduling parameter for use by
queues and schedulers. queues and schedulers.
Notice multiple inter-mixed of Queue and Scheduler Notice multiple inter-mixed of Queue and Scheduler
entries can use the same Scheduler Parameter entry." entries can use the same Scheduler Parameter entry."
INDEX { diffServSchdParamId } INDEX { diffServSchdParamId }
::= { diffServSchdParamTable 1 } ::= { diffServSchdParamTable 1 }
DiffServSchdParamEntry ::= SEQUENCE { DiffServSchdParamEntry ::= SEQUENCE {
diffServSchdParamId Unsigned32, diffServSchdParamId Unsigned32,
diffServSchdParamPriority Unsigned32, diffServSchdParamPriority Unsigned32,
diffServSchdParamMinRateAbs Unsigned32, diffServSchdParamMinRateAbs Unsigned32,
diffServSchdParamMinRateRel Unsigned32, diffServSchdParamMinRateRel Unsigned32,
skipping to change at page 94, line 33 skipping to change at page 78, line 4
INDEX { diffServSchdParamId } INDEX { diffServSchdParamId }
::= { diffServSchdParamTable 1 } ::= { diffServSchdParamTable 1 }
DiffServSchdParamEntry ::= SEQUENCE { DiffServSchdParamEntry ::= SEQUENCE {
diffServSchdParamId Unsigned32, diffServSchdParamId Unsigned32,
diffServSchdParamPriority Unsigned32, diffServSchdParamPriority Unsigned32,
diffServSchdParamMinRateAbs Unsigned32, diffServSchdParamMinRateAbs Unsigned32,
diffServSchdParamMinRateRel Unsigned32, diffServSchdParamMinRateRel Unsigned32,
diffServSchdParamMaxRateAbs Unsigned32, diffServSchdParamMaxRateAbs Unsigned32,
diffServSchdParamMaxRateRel Unsigned32, diffServSchdParamMaxRateRel Unsigned32,
diffServSchdParamBurstSize BurstSize,
diffServSchdParamStatus RowStatus diffServSchdParamStatus RowStatus
} }
diffServSchdParamId OBJECT-TYPE diffServSchdParamId OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"An index that enumerates the Scheduler Parameter "An index that enumerates the Scheduler Parameter
entries. The set of such identifiers spans the whole entries. The set of such identifiers spans the whole
skipping to change at page 95, line 24 skipping to change at page 78, line 27
NextFree." NextFree."
::= { diffServSchdParamEntry 1 } ::= { diffServSchdParamEntry 1 }
diffServSchdParamPriority OBJECT-TYPE diffServSchdParamPriority OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The priority of this queue, to be used as a parame- "The priority of this queue, to be used as a parame-
ter to the next scheduler element downstream from ter to the next scheduler element downstream from
this one." this one. A higher value means higher priority and
should be serviced first."
::= { diffServSchdParamEntry 2 } ::= { diffServSchdParamEntry 2 }
diffServSchdParamMinRateAbs OBJECT-TYPE diffServSchdParamMinRateAbs OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
UNITS "kilobits per second" UNITS "kilobits per second"
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The minimum absolute rate, in kilobits/sec, that a "The minimum absolute rate, in kilobits/sec, that a
downstream scheduler element should allocate to this downstream scheduler element should allocate to this
skipping to change at page 96, line 40 skipping to change at page 79, line 35
is zero, then there is effectively no minimum rate is zero, then there is effectively no minimum rate
guarantee. If the value is non-zero, the scheduler guarantee. If the value is non-zero, the scheduler
will assure the servicing of this queue to at least will assure the servicing of this queue to at least
this rate. this rate.
Note that this attribute's value is coupled to that Note that this attribute's value is coupled to that
of diffServSchdParamMinRateAbs: changes to one will of diffServSchdParamMinRateAbs: changes to one will
affect the value of the other. They are linked by the affect the value of the other. They are linked by the
following equation: following equation:
diffServSchdParamMinRateAbs = ifSpeed diffServSchdParamMinRateAbs = ifSpeed *
* diffServSchdParamMinRateRel/10,000,000 diffServSchdParamMinRateRel/10,000,000
or, if appropriate: or, if appropriate:
diffServSchdParamMinRateAbs = ifHighSpeed diffServSchdParamMinRateAbs = ifHighSpeed *
* diffServSchdParamMinRateRel / 10" diffServSchdParamMinRateRel / 10"
REFERENCE REFERENCE
"ifSpeed, ifHighSpeed from [IFMIB]" "ifSpeed, ifHighSpeed from [IFMIB]"
::= { diffServSchdParamEntry 4 } ::= { diffServSchdParamEntry 4 }
diffServSchdParamMaxRateAbs OBJECT-TYPE diffServSchdParamMaxRateAbs OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
UNITS "kilobits per second" UNITS "kilobits per second"
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The maximum rate in kilobits/sec that a downstream "The maximum rate in kilobits/sec that a downstream
scheduler element should allocate to this queue. If scheduler element should allocate to this queue. If
the value is zero, then there is effectively no the value is zero, then there is effectively no max-
maximum rate limit and that the scheduler should imum rate limit and that the scheduler should attempt
attempt to be work-conserving for this queue. If the to be work-conserving for this queue. If the value
value is non-zero, the scheduler will limit the ser- is non-zero, the scheduler will limit the servicing
vicing of this queue to, at most, this rate in a of this queue to, at most, this rate in a non-work-
non-work-conserving manner. conserving manner.
Note that this attribute's value is coupled to that Note that this attribute's value is coupled to that
of diffServSchdParamMaxRateRel: changes to one will of diffServSchdParamMaxRateRel: changes to one will
affect the value of the other. They are linked by the affect the value of the other. They are linked by the
following equation: following equation:
diffServSchdParamMaxRateRel = diffServSchdParamMaxRateAbs diffServSchdParamMaxRateRel = diffServSchdParamMaxRateAbs
* 10,000,000/ifSpeed * 10,000,000/ifSpeed
or, if appropriate: or, if appropriate:
skipping to change at page 98, line 18 skipping to change at page 81, line 6
conserving for this queue. If the value is non-zero, conserving for this queue. If the value is non-zero,
the scheduler will limit the servicing of this queue the scheduler will limit the servicing of this queue
to, at most, this rate in a non-work-conserving to, at most, this rate in a non-work-conserving
manner. manner.
Note that this attribute's value is coupled to that Note that this attribute's value is coupled to that
of diffServSchdParamMaxRateAbs: changes to one will of diffServSchdParamMaxRateAbs: changes to one will
affect the value of the other. They are linked by the affect the value of the other. They are linked by the
following equation: following equation:
diffServSchdParamMaxRateAbs = ifSpeed diffServSchdParamMaxRateAbs = ifSpeed *
* diffServSchdParamMaxRateRel/10,000,000 diffServSchdParamMaxRateRel/10,000,000
or, if appropriate: or, if appropriate:
diffServSchdParamMaxRateAbs = ifHighSpeed diffServSchdParamMaxRateAbs = ifHighSpeed *
* diffServSchdParamMaxRateRel / 10" diffServSchdParamMaxRateRel / 10"
REFERENCE REFERENCE
"ifSpeed, ifHighSpeed from [IFMIB]" "ifSpeed, ifHighSpeed from [IFMIB]"
::= { diffServSchdParamEntry 6 } ::= { diffServSchdParamEntry 6 }
diffServSchdParamBurstSize 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 when diffServSchedu-
lerMethod of a downstream Scheduler element is used
for shaping traffic exiting this queue/scheduler."
::= { diffServSchdParamEntry 7 }
diffServSchdParamStatus OBJECT-TYPE diffServSchdParamStatus OBJECT-TYPE
SYNTAX RowStatus SYNTAX RowStatus
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The RowStatus variable controls the activation, "The RowStatus variable controls the activation,
deactivation, or deletion of a queue. Any writable deactivation, or deletion of a queue. Any writable
variable may be modified whether the row is active or variable may be modified whether the row is active or
notInService." notInService."
::= { diffServSchdParamEntry 7 } ::= { diffServSchdParamEntry 8 }
-- --
-- MIB Compliance statements. -- MIB Compliance statements.
-- --
diffServMIBCompliances OBJECT IDENTIFIER ::= { diffServMIBConformance 1 } diffServMIBCompliances OBJECT IDENTIFIER ::= { diffServMIBConformance 1 }
diffServMIBGroups OBJECT IDENTIFIER ::= { diffServMIBConformance 2 } diffServMIBGroups OBJECT IDENTIFIER ::= { diffServMIBConformance 2 }
diffServMIBCompliance MODULE-COMPLIANCE diffServMIBCompliance MODULE-COMPLIANCE
STATUS current STATUS current
skipping to change at page 110, line 4 skipping to change at page 90, line 33
OBJECT diffServSchdParamPriority OBJECT diffServSchdParamPriority
MIN-ACCESS read-only MIN-ACCESS read-only
DESCRIPTION DESCRIPTION
"Write access is not required." "Write access is not required."
OBJECT diffServSchdParamMinRateAbs OBJECT diffServSchdParamMinRateAbs
MIN-ACCESS read-only MIN-ACCESS read-only
DESCRIPTION DESCRIPTION
"Write access is not required." "Write access is not required."
OBJECT diffServSchdParamMinRateRel OBJECT diffServSchdParamMinRateRel
MIN-ACCESS read-only MIN-ACCESS read-only
DESCRIPTION DESCRIPTION
"Write access is not required." "Write access is not required."
OBJECT diffServSchdParamMaxRateAbs OBJECT diffServSchdParamMaxRateAbs
MIN-ACCESS read-only MIN-ACCESS read-only
DESCRIPTION DESCRIPTION
"Write access is not required." "Write access is not required."
OBJECT diffServSchdParamMaxRateRel OBJECT diffServSchdParamMaxRateRel
MIN-ACCESS read-only MIN-ACCESS read-only
DESCRIPTION DESCRIPTION
"Write access is not required." "Write access is not required."
OBJECT diffServSchdParamBurstSize
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT diffServSchdParamStatus OBJECT diffServSchdParamStatus
MIN-ACCESS read-only MIN-ACCESS read-only
DESCRIPTION DESCRIPTION
"Write access is not required." "Write access is not required."
::= { diffServMIBCompliances 1 } ::= { diffServMIBCompliances 1 }
diffServMIBDataPathGroup OBJECT-GROUP diffServMIBDataPathGroup OBJECT-GROUP
OBJECTS { OBJECTS {
diffServDataPathStart, diffServDataPathStatus diffServDataPathStart, diffServDataPathStatus
skipping to change at page 113, line 30 skipping to change at page 93, line 25
diffServActionType, diffServActionStatus diffServActionType, diffServActionStatus
} }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The Action Group defines the objects used in "The Action Group defines the objects used in
describing a generic action element." describing a generic action element."
::= { diffServMIBGroups 7 } ::= { diffServMIBGroups 7 }
diffServMIBDscpMarkActGroup OBJECT-GROUP diffServMIBDscpMarkActGroup OBJECT-GROUP
OBJECTS { OBJECTS {
diffServDscpMarkActDscp, diffServDscpMarkActStatus diffServDscpMarkActDscp
} }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The DSCP Mark Action Group defines the objects used "The DSCP Mark Action Group defines the objects used
in describing a DSCP Marking Action element." in describing a DSCP Marking Action element."
::= { diffServMIBGroups 8 } ::= { diffServMIBGroups 8 }
diffServMIBCounterGroup OBJECT-GROUP diffServMIBCounterGroup OBJECT-GROUP
OBJECTS { OBJECTS {
diffServCountActOctets, diffServCountActOctets,
skipping to change at page 117, line 6 skipping to change at page 96, line 12
DESCRIPTION DESCRIPTION
"The Scheduler Group contains the objects that "The Scheduler Group contains the objects that
describe packet schedulers on interfaces." describe packet schedulers on interfaces."
::= { diffServMIBGroups 15 } ::= { diffServMIBGroups 15 }
diffServMIBSchdParamGroup OBJECT-GROUP diffServMIBSchdParamGroup OBJECT-GROUP
OBJECTS { OBJECTS {
diffServSchdParamPriority, diffServSchdParamPriority,
diffServSchdParamMinRateAbs, diffServSchdParamMinRateRel, diffServSchdParamMinRateAbs, diffServSchdParamMinRateRel,
diffServSchdParamMaxRateAbs, diffServSchdParamMaxRateRel, diffServSchdParamMaxRateAbs, diffServSchdParamMaxRateRel,
diffServSchdParamStatus diffServSchdParamBurstSize, diffServSchdParamStatus
} }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The Scheduler Parameter Group contains the objects "The Scheduler Parameter Group contains the objects
that describe packet schedulers' parameters on inter- that describe packet schedulers' parameters on inter-
faces." faces."
::= { diffServMIBGroups 16 } ::= { diffServMIBGroups 16 }
diffServMIBStaticGroup OBJECT-GROUP diffServMIBStaticGroup OBJECT-GROUP
OBJECTS { OBJECTS {
diffServClfrNextFree, diffServClfrElementNextFree, diffServClfrNextFree, diffServClfrElementNextFree,
diffServSixTupleClfrNextFree, diffServSixTupleClfrNextFree,
diffServMeterNextFree, diffServTBMeterNextFree, diffServMeterNextFree, diffServTBMeterNextFree,
diffServActionNextFree, diffServDscpMarkActNextFree, diffServActionNextFree, diffServCountActNextFree,
diffServCountActNextFree,
diffServAlgDropNextFree, diffServRandomDropNextFree, diffServAlgDropNextFree, diffServRandomDropNextFree,
diffServQNextFree, diffServSchedulerNextFree, diffServQNextFree, diffServSchedulerNextFree,
diffServSchdParamNextFree diffServSchdParamNextFree
} }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The Static Group contains readable scalar objects "The Static Group contains readable scalar objects
used in creating unique identifiers for classifiers, used in creating unique identifiers for classifiers,
meters, actions and queues. These are required when- meters, actions and queues. These are required when-
ever row creation operations on such tables are sup- ever row creation operations on such tables are sup-
ported." ported."
::= { diffServMIBGroups 17 } ::= { diffServMIBGroups 17 }
END END
9. Acknowledgments 8. Acknowledgments
This MIB builds on all the work that has gone into the Informal This MIB builds on all the work that has gone into the Informal
Management Model for Diffserv routers, DiffServ PIB, and DiffServ Policy Management Model for Diffserv routers, DiffServ PIB, and DiffServ Policy
MIB (SNMPCONF WG). It has been developed with the active involvement of MIB (SNMPCONF WG). It has been developed with the active involvement of
many people, but most notably Yoram Bernet, Steve Blake, Brian many people, but most notably Yoram Bernet, Steve Blake, Brian
Carpenter, Dave Durham, Jeremy Greene, Dan Grossman, Roch Guerin, Scott Carpenter, Dave Durham, Jeremy Greene, Dan Grossman, Roch Guerin, Scott
Hahn, Keith McCloghrie, Bob Moore, Kathleen Nichols, Ping Pan, Nabil Hahn, Keith McCloghrie, Bob Moore, Kathleen Nichols, Ping Pan, Nabil
Seddigh, Bert Wijnen, Victor Firoiu, John Seligson, Michael Fine, Walter Seddigh, Bert Wijnen, Victor Firoiu, John Seligson, Michael Fine, Walter
Weiss, Joel Halpern, and Harrie Hazewinkel. Weiss, Joel Halpern, and Harrie Hazewinkel.
10. Security Considerations 9. Security Considerations
It is clear that this MIB is potentially useful for configuration, and It is clear that this MIB is potentially useful for configuration, and
anything that can be configured can be misconfigured, with potentially anything that can be configured can be misconfigured, with potentially
disastrous effect. disastrous effect.
At this writing, no security holes have been identified beyond those At this writing, no security holes have been identified beyond those
that SNMP Security is itself intended to address. These relate primarily that SNMP Security is itself intended to address. These relate primarily
to controlled access to sensitive information and the ability to to controlled access to sensitive information and the ability to
configure a device - or which might result from operator error, which is configure a device - or which might result from operator error, which is
beyond the scope of any security architecture. beyond the scope of any security architecture.
skipping to change at page 119, line 22 skipping to change at page 98, line 22
It is recommended that the implementers consider the security features It is recommended that the implementers consider the security features
as provided by the SNMPv3 framework. Specifically, the use of the User- as provided by the SNMPv3 framework. Specifically, the use of the User-
based Security Model [12] and the View-based Access Control Model [15] based Security Model [12] and the View-based Access Control Model [15]
is recommended. is recommended.
It is then a customer/user responsibility to ensure that the SNMP entity It is then a customer/user responsibility to ensure that the SNMP entity
giving access to an instance of this MIB, is properly configured to give giving access to an instance of this MIB, is properly configured to give
access to the objects only to those principals (users) that have access to the objects only to those principals (users) that have
legitimate rights to indeed GET or SET (change/create/delete) them. legitimate rights to indeed GET or SET (change/create/delete) them.
11. References 10. References
[1] Harrington, D., Presuhn, R., and B. Wijnen, "An Architecture for [1] Harrington, D., Presuhn, R., and B. Wijnen, "An Architecture for
Describing SNMP Management Frameworks", RFC 2571, Cabletron Describing SNMP Management Frameworks", RFC 2571, Cabletron
Systems, Inc., BMC Software, Inc., IBM T. J. Watson Research, April Systems, Inc., BMC Software, Inc., IBM T. J. Watson Research, April
1999 1999
[2] Rose, M., and K. McCloghrie, "Structure and Identification of [2] Rose, M., and K. McCloghrie, "Structure and Identification of
Management Information for TCP/IP-based Internets", RFC 1155, STD Management Information for TCP/IP-based Internets", RFC 1155, STD
[3] Rose, M., and K. McCloghrie, "Concise MIB Definitions", RFC 1212, [3] Rose, M., and K. McCloghrie, "Concise MIB Definitions", RFC 1212,
skipping to change at page 122, line 27 skipping to change at page 101, line 27
F. Reichmeyer, D. Grossman, J. Strassner, M. Condell, "A Common F. Reichmeyer, D. Grossman, J. Strassner, M. Condell, "A Common
Terminology for Policy Management", Internet Draft <draft- Terminology for Policy Management", Internet Draft <draft-
[QUEUEMGMT] [QUEUEMGMT]
B. Braden et al., "Recommendations on Queue Management and B. Braden et al., "Recommendations on Queue Management and
Congestion Avoidance in the Internet", RFC 2309, April 1998. Congestion Avoidance in the Internet", RFC 2309, April 1998.
[RED93] [RED93]
"Random Early Detection", 1993. "Random Early Detection", 1993.
12. Authors' Addresses [SRTCM]
J. Heinanen, R. Guerin, "A Single Rate Three Color Marker", RFC
2697, September 1999.
[TRTCM]
J. Heinanen, R. Guerin, "A Two Rate Three Color Marker", RFC 2698,
September 1999.
[TSWTCM]
W. Fang, N. Seddigh, B. Nandy "A Time Sliding Window Three Colour
Marker", RFC 2859, June 2000.
11. Authors' Addresses
Fred Baker Fred Baker
Cisco Systems Cisco Systems
519 Lado Drive 519 Lado Drive
Santa Barbara, California 93111 Santa Barbara, California 93111
fred@cisco.com fred@cisco.com
Kwok Ho Chan Kwok Ho Chan
Nortel Networks Nortel Networks
600 Technology Park Drive 600 Technology Park Drive
Billerica, MA 01821 Billerica, MA 01821
khchan@nortelnetworks.com khchan@nortelnetworks.com
Andrew Smith Andrew Smith
ah_smith@pacbell.net Allegro Networks
6399 San Ignacio Ave
San Jose, CA 95119
andrew@allegronetworks.com
Table of Contents Table of Contents
1 The SNMP Management Framework ................................... 2 1 The SNMP Management Framework ................................... 2
2 Introduction .................................................... 4 2 Introduction .................................................... 4
2.1 Relationship to the Diffserv Informal Management Model ........ 4 2.1 Relationship to the Diffserv Informal Management Model ........ 4
2.2 Relationship to other MIBs and Policy Management .............. 5 2.2 Relationship to other MIBs and Policy Management .............. 5
2.3 MIB Overview .................................................. 5 2.3 MIB Overview .................................................. 5
3 Structure of this MIB ........................................... 6 3 Structure of this MIB ........................................... 6
3.1 DiffServ Data Paths ........................................... 7 3.1 DiffServ Data Paths ........................................... 7
skipping to change at page 123, line 27 skipping to change at page 102, line 38
3.2.2 Classifier Element Table .................................... 9 3.2.2 Classifier Element Table .................................... 9
3.2.3 Filter Table - IP Six-Tuple Classifier Table ................ 9 3.2.3 Filter Table - IP Six-Tuple Classifier Table ................ 9
3.3 Meters ........................................................ 9 3.3 Meters ........................................................ 9
3.3.1 Meter Table ................................................. 10 3.3.1 Meter Table ................................................. 10
3.3.2 Token-Bucket Meter Table .................................... 10 3.3.2 Token-Bucket Meter Table .................................... 10
3.4 Actions ....................................................... 10 3.4 Actions ....................................................... 10
3.4.1 DSCP Mark Action Table ...................................... 11 3.4.1 DSCP Mark Action Table ...................................... 11
3.4.2 Count Action Table .......................................... 11 3.4.2 Count Action Table .......................................... 11
3.4.3 Absolute Drop Action ........................................ 11 3.4.3 Absolute Drop Action ........................................ 11
3.5 Queueing Elements ............................................. 11 3.5 Queueing Elements ............................................. 11
3.5.1 Algorithmic Dropper Table ................................... 11 3.5.1 Algorithmic Dropper Table ................................... 12
3.5.2 Random Dropper Table ........................................ 13 3.5.2 Random Dropper Table ........................................ 13
3.5.3 Queues and Schedulers ....................................... 14 3.5.3 Queues and Schedulers ....................................... 14
3.5.4 Example of Algorithmic Droppers, Queues and Schedulers ...... 16
4 MIB Usage Example ............................................... 16 4 MIB Usage Example ............................................... 16
4.1 Data Path Example ............................................. 17 4.1 Model's Example ............................................... 16
4.2 Data Path and Classifier Example Discussion ................... 17 4.2 Additional Data Path Example .................................. 19
4.3 Meter and Action Example Discussion ........................... 20 4.2.1 Data Path and Classifier Example Discussion ................. 19
4.4 Queue and Scheduler Example Discussion ........................ 21 4.2.2 Meter and Action Example Discussion ......................... 22
5 Conventions used in this MIB .................................... 21 4.2.3 Queue and Scheduler Example Discussion ...................... 23
5.1 The use of RowPointer ......................................... 21
5.2 Conceptual row creation and deletion .......................... 22
6 Editorial information ........................................... 23
6.1 Open Issues resolved in previous drafts ....................... 23
6.2 Open Issues resolved in this draft ............................ 25
6.3 Still Open Issues ............................................. 26
7 MIB Outline ..................................................... 27
8 MIB Definition .................................................. 33
9 Acknowledgments ................................................. 118
10 Security Considerations ........................................ 118
11 References ..................................................... 119
12 Authors' Addresses ............................................. 122
13. Full Copyright 5 Conventions used in this MIB .................................... 23
5.1 The use of RowPointer ......................................... 23
5.2 The use of StaticRowPointer ................................... 24
5.3 Conceptual row creation and deletion .......................... 24
6 Extending this MIB .............................................. 25
7 MIB Definition .................................................. 26
8 Acknowledgments ................................................. 97
9 Security Considerations ......................................... 97
10 References ..................................................... 98
11 Authors' Addresses ............................................. 101
12. Full Copyright
Copyright (C) The Internet Society (2000). All Rights Reserved. Copyright (C) The Internet Society (2000). All Rights Reserved.
This document and translations of it may be copied and furnished to This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it others, and derivative works that comment on or otherwise explain it
or assist in its implmentation may be prepared, copied, published and or assist in its implmentation may be prepared, copied, published and
distributed, in whole or in part, without restriction of any kind, distributed, in whole or in part, without restriction of any kind,
provided that the above copyright notice and this paragraph are provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing document itself may not be modified in any way, such as by removing
 End of changes. 154 change blocks. 
820 lines changed or deleted 613 lines changed or added

This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/