idnits 2.17.1 draft-ietf-diffserv-mib-04.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about 6 months document validity -- however, there's a paragraph with a matching beginning. Boilerplate error? == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 1 longer page, the longest (page 1) being 59 lines Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** There are 5 instances of too long lines in the document, the longest one being 5 characters in excess of 72. ** The abstract seems to contain references ([DSARCH], [MODEL]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == Line 538 has weird spacing: '...20kbyte none...' == Line 540 has weird spacing: '...20kbyte none...' -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (July 2000) is 8657 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'INETADDR' is mentioned on line 254, but not defined == Missing Reference: 'SRTCM' is mentioned on line 271, but not defined == Missing Reference: 'TRTCM' is mentioned on line 271, but not defined == Missing Reference: 'DSTERM' is mentioned on line 665, but not defined == Unused Reference: 'DSPIB' is defined on line 3189, but no explicit reference was found in the text == Unused Reference: 'DSTERMS' is defined on line 3194, but no explicit reference was found in the text == Unused Reference: 'EF-PHB' is defined on line 3198, but no explicit reference was found in the text == Unused Reference: 'INETADDRESS' is defined on line 3206, but no explicit reference was found in the text == Unused Reference: 'INTSERVMIB' is defined on line 3211, but no explicit reference was found in the text == Unused Reference: 'RED93' is defined on line 3229, but no explicit reference was found in the text ** Obsolete normative reference: RFC 2571 (ref. '1') (Obsoleted by RFC 3411) ** Downref: Normative reference to an Informational RFC: RFC 1215 (ref. '4') ** Downref: Normative reference to an Historic RFC: RFC 1157 (ref. '8') ** Downref: Normative reference to an Historic RFC: RFC 1901 (ref. '9') ** Obsolete normative reference: RFC 1906 (ref. '10') (Obsoleted by RFC 3417) ** Obsolete normative reference: RFC 2572 (ref. '11') (Obsoleted by RFC 3412) ** Obsolete normative reference: RFC 2574 (ref. '12') (Obsoleted by RFC 3414) ** Obsolete normative reference: RFC 1905 (ref. '13') (Obsoleted by RFC 3416) ** Obsolete normative reference: RFC 2573 (ref. '14') (Obsoleted by RFC 3413) ** Obsolete normative reference: RFC 2575 (ref. '15') (Obsoleted by RFC 3415) ** Obsolete normative reference: RFC 2570 (ref. '16') (Obsoleted by RFC 3410) -- Possible downref: Non-RFC (?) normative reference: ref. 'ACTQMGMT' ** Downref: Normative reference to an Informational RFC: RFC 2475 (ref. 'DSARCH') -- Possible downref: Non-RFC (?) normative reference: ref. 'DSPIB' -- Possible downref: Non-RFC (?) normative reference: ref. 'DSTERMS' ** Obsolete normative reference: RFC 2598 (ref. 'EF-PHB') (Obsoleted by RFC 3246) ** Obsolete normative reference: RFC 2233 (ref. 'IFMIB') (Obsoleted by RFC 2863) ** Obsolete normative reference: RFC 2851 (ref. 'INETADDRESS') (Obsoleted by RFC 3291) -- Possible downref: Non-RFC (?) normative reference: ref. 'MODEL' -- Possible downref: Non-RFC (?) normative reference: ref. 'POLTERM' ** Obsolete normative reference: RFC 2309 (ref. 'QUEUEMGMT') (Obsoleted by RFC 7567) -- Possible downref: Non-RFC (?) normative reference: ref. 'RED93' Summary: 23 errors (**), 0 flaws (~~), 15 warnings (==), 8 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet Engineering Task Force F. Baker 3 Diffserv Working Group Cisco Systems 4 INTERNET-DRAFT K. Chan 5 Expires January 2001 Nortel Networks 6 draft-ietf-diffserv-mib-04.txt A. Smith 7 8 July 2000 9 Management Information Base for the 10 Differentiated Services Architecture 12 Status of this Memo 14 This document is an Internet-Draft and is in full conformance with all 15 provisions of Section 10 of RFC 2026. Internet-Drafts are working 16 documents of the Internet Engineering Task Force (IETF), its areas, and 17 its working groups. Note that other groups may also distribute working 18 documents as Internet-Drafts. 20 Internet-Drafts are draft documents valid for a maximum of six months 21 and may be updated, replaced, or obsoleted by other documents at any 22 time. It is inappropriate to use Internet Drafts as reference material 23 or to cite them other than as "work in progress." 25 The list of current Internet-Drafts can be accessed at 26 http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft 27 Shadow Directories can be accessed at http://www.ietf.org/shadow.html. 29 This document is a product of the IETF's Differentiated Services Working 30 Group. Comments should be addressed to WG's mailing list at 31 diffserv@ietf.org. The charter for Differentiated Services may be found 32 at http://www.ietf.org/html.charters/diffserv-charter.html 34 Copyright (C) The Internet Society (2000). All Rights Reserved. 35 Distribution of this memo is unlimited. 37 Abstract 39 This memo describes a SMIv2 MIB for a device implementing the 40 Differentiated Services Architecture [DSARCH], described in detail by 41 the Differentiated Services Router Informal Management Model [MODEL]. 43 1. The SNMP Management Framework 45 The SNMP Management Framework presently consists of five major 46 components: 48 o An overall architecture, described in RFC 2571 [1]. 50 o Mechanisms for describing and naming objects and events for the 51 purpose of management. The first version of this Structure of 52 Management Information (SMI) is called SMIv1 and described in 53 RFC 1155 [2], RFC 1212 [3] and RFC 1215 [4]. The second version, 54 called SMIv2, is described in RFC 2578 [5], RFC 2579 [6] and RFC 55 2580 [7]. 57 o Message protocols for transferring management information. The 58 first version of the SNMP message protocol is called SNMPv1 and 59 described in RFC 1157 [8]. A second version of the SNMP message 60 protocol, which is not an Internet standards track protocol, is 61 called SNMPv2c and described in RFC 1901 [9] and RFC 1906 [10]. 62 The third version of the message protocol is called SNMPv3 and 63 described in RFC 1906 [10], RFC 2572 [11] and RFC 2574 [12]. 65 o Protocol operations for accessing management information. The 66 first set of protocol operations and associated PDU formats is 67 described in RFC 1157 [8]. A second set of protocol operations 68 and associated PDU formats is described in RFC 1905 [13]. 70 o A set of fundamental applications described in RFC 2573 [14] and 71 the view-based access control mechanism described in RFC 2575 72 [15]. 74 A more detailed introduction to the current SNMP Management Framework 75 can be found in RFC 2570 [16]. 77 Managed objects are accessed via a virtual information store, termed the 78 Management Information Base or MIB. Objects in the MIB are defined using 79 the mechanisms defined in the SMI. 81 This memo specifies a MIB module that is compliant to the SMIv2. A MIB 82 conforming to the SMIv1 can be produced through the appropriate 83 translations. The resulting translated MIB must be semantically 84 equivalent, except where objects or events are omitted because no 85 translation is possible (use of Counter64). Some machine-readable 86 information in SMIv2 will be converted into textual descriptions in 87 SMIv1 during the translation process. However, this loss of machine 88 readable information is not considered to change the semantics of the 89 MIB. 91 2. Introduction 93 2.1. Relationship to the Diffserv Informal Management Model 95 This MIB is designed according to the Differentiated Services Informal 96 Management Model documented in [MODEL]. The model describes the way that 97 ingress and egress interfaces of an 'n'-port router are modelled. It 98 describes the configuration and management of a Diffserv interface in 99 terms of a Transmission Control Block (TCB) which contains, by 100 definition, zero or more classifiers, meters, actions, algorithmic 101 droppers, queues and schedulers. These elements are arranged according 102 to the QoS policy being expressed, always in that order. Traffic may be 103 classified; classified traffic may be metered; each stream of traffic 104 identified by a combination of classifiers and meters may have some set 105 of actions performed on it; it may have dropping algorithms applied and 106 it may ultimately be stored into a queue before being scheduled out to 107 its next destination, either onto a link or to another TCB. When the 108 treatment for a given packet must have any of those elements repeated in 109 a way that breaks the permitted sequence {classifier, meter, action, 110 algorithmic dropper, queue, scheduler}, this must be modelled by 111 cascading multiple TCBs. 113 The MIB represents this cascade by following the "Next" attributes of 114 the various elements. They indicate what the next step in Diffserv 115 processing will be, whether it be a classifier, meter, action, 116 algorithmic dropper, queue, scheduler or a decision to now forward a 117 packet. 119 The MIB models the individual elements that make up the TCBs - it only 120 refers in passing to the higher-level concept of a TCB when it is 121 necessary to distinguish of which TCB, of several, a particular element 122 is a part. Literal TCBs are enumerated for Classifier elements: this is 123 necessary to distinguish different, but overlapping, classification 124 policies in different TCBs. However, TCBs are not enumerated for other 125 elements. When a TCB performs no classification the literal TCB of the 126 succeeding elements is not used in their instance (index) as there is no 127 need to distinguish them - each element is unique already. 129 2.2. Relationship to other MIBs and Policy Management 131 This MIB provides for direct reporting and manipulation of the most 132 detailed functional elements described by the Diffserv Informal 133 Management Model for management. These elements are instantiated in a 134 very detailed manner, typically indexed by interface, direction and 135 other indices. The concept of "interface" is as for the 136 InterfaceIndex/ifIndex of the IETF Interfaces MIB [IFMIB]. 138 Other MIBs and data structure definitions for policy management 139 mechanisms other than SNMP/SMIv2 are likely to exist in the future for 140 the purposes of abstracting the model in other ways. 142 In particular, abstractions in the direction of less detailed 143 definitions of Diffserv functionality are likely e.g. some form of "Per- 144 Hop Behaviour"-based definition involving a template of detailed object 145 values which is applied to specific instances of objects in this MIB 146 semi-automatically. 148 Another possible direction of abstraction is one using a concept of 149 "roles" (often, but not always, applied to interfaces). In this case, it 150 may be possible to re-use the object definitions in this MIB but with 151 different indexing variables e.g. by mechanically replacing ifIndex by 152 some sort of "roleIndex". Work is ongoing in this area. 154 2.3. MIB Overview 156 In this MIB, we model the ingress and egress portions of a router 157 identically, making the distinction between them an index variable. 158 Each interface then performs some or all of the following high-level 159 functions: 161 o Classify each packet according to some set of rules 163 o Determine whether the data stream the packet is part of is within 164 or outside its rate 166 o Perform a set of resulting actions, possibly including counting the 167 traffic, application of an appropriate drop policy and marking of 168 the traffic with a Differentiated Services Code Point (DSCP) as 169 defined in [DSFIELD]. 171 o Enqueue the traffic for output in the appropriate queue, whose 172 scheduler may shape the traffic or simply forward it with some 173 minimum rate or maximum latency. 175 The MIB therefore contains the following elements: 177 Classifier and Filter Tables 178 A general extensible framework and one example (an IP Six-Tuple 179 Multi-Field Classification Table). 181 Meter Tables 182 A general extensible framework and one example (an exponential 183 weighted moving average meter). 185 Action Tables 186 Absolute Drop, Mark and Count actions. The "multiplexer", 187 "replicator" and "null" actions described in [MODEL] are 188 accomplished implicitly by means of the RowPointer structures of 189 the other elements. 191 Queue, Scheduler and Algorithmic Dropper Tables 192 Queue, Scheduler and Algorithmic Dropper Tables. 194 3. Structure of this MIB 196 3.1. Classifiers 198 The classifier and filter tables determine how traffic is sorted out. 199 They identify separable classes of traffic, by reference to an 200 appropriate filter, which may select anything from an individual micro- 201 flow to aggregates identified by DSCP. 203 The classification is used to send these separate streams to appropriate 204 Meter, Action, Queue, Scheduler and Algorithmic Dropper elements. For 205 example, to indicate a multi-stage meter, sub-classes of traffic may be 206 sent to different meter stages: e.g. in an implementation of the Assured 207 Forwarding (AF) PHB [AF-PHB], AF11 traffic might be sent to the first 208 meter, AF12 traffic might be sent to the second and AF13 traffic sent to 209 the second meter stage's out-of-profile action. 211 3.1.1. Classifier Table 213 The structure of the classifier table, as described in [MODEL], is a 214 sequence of unambiguous tests. Within each stage in the sequence, it 215 must not be important in which order the tests are made. This is to 216 facilitate optimized implementations such as index trees. Order is 217 present only to resolve ambiguity: for that reason the stage in the 218 sequence is referred to here and in [MODEL] as the "precedence" of the 219 classifier stage: stages with higher values of precedence are compared 220 first; the order of tests for entries of the same precedence is 221 unimportant. 223 An important form of classifier is "everything else": the final stage of 224 the classifier i.e. the one with the lowest precedence, must be 225 "complete" since the result of an incomplete classifier is not 226 necessarily deterministic - see [MODEL] section 4.1.2. 228 The definition of the actual filter to be used by the classifier is 229 referenced via a RowPointer: this enables the use of any sort of filter 230 table that one might wish to design, standard or proprietary. The filter 231 table may be, but does not need to be, defined in this MIB module. 233 The classifiers specified here are at the interface level i.e. they are 234 indexed by ifIndex: they may be derived from some more general policies 235 e.g. something based on interface roles, but such discussion is outside 236 the scope of this document. See e.g. [POLTERM] section 4 for a 237 discussion of Roles. 239 3.1.2. IP Six-Tuple Classifier Table 241 This MIB includes a definition for an IP Six-Tuple Classifier, used for 242 IP traffic classification. Entries in this filter table are referenced 243 from the RowPointer diffServClassifierPattern attributes of classifier 244 table entries. 246 A Behavior Aggregate (BA) Classifier, acting only on DSCPs, is a simple 247 form of the IP Six-Tuple Classifier. It is represented by having the 248 diffServSixTupleClfrDscp attribute set to the desired DSCP and all other 249 classification attributes set to match-all, their default settings. The 250 alternative approach of providing a specific definition in this MIB for 251 a BA Classifier was discussed and rejected. 253 Each entry in the IP Six-Tuple Classifier Table defines a single filter. 254 The textual convention of InetAddress [INETADDR] is used for both IPv4 255 and IPv6 addressing. The use of IP Six-Tuple Classifiers is discussed 256 in [DSARCH] and abstract examples of how they might be configured are 257 provided in [MODEL]. 259 3.2. Meters 261 A meter, according to [MODEL] section 5, measures the rate at which 262 packets making up a stream of traffic pass it, compares this rate to 263 some set of thresholds and produces some number (two or more) of 264 potential results. A given packet is said to "conform" to the meter if, 265 at the time that the packet is being looked at, the stream appears to be 266 within the meter's profile. MIB syntax makes it easiest to define this 267 as a sequence of one or more cascaded pass/fail tests, modeled here as 268 if-then-else constructs. It is important to understand that this way of 269 modelling does not imply anything about the implementation being 270 "sequential": multi-rate/multi-profile meters e.g. those designed to 271 support [SRTCM] or [TRTCM], can still be modelled this way even if they, 272 of necessity, share information between the stages: the stages are 273 introduced merely as a notational convenience in order to simplify the 274 MIB structure. 276 3.2.1. Meter Table 278 The generic meter table is used as a base for all more specific forms of 279 meter. The definition of parameters specific to the type of meter used 280 is referenced via a pointer to a table containing those specifics with 281 the instance within that table identified by the same indices as for the 282 base meter table. This enables the use of any sort of specific meter 283 table that one might wish to design, standard or proprietary. The 284 specific meter table may be, but does not need to be, defined in this 285 MIB module. 287 3.2.2. Token-Bucket Meter Table 289 This is included as an example of a common type of meter. Entries in 290 this table are referenced from the RowPointer diffServMeterSpecific 291 attributes of meter table entries. The parameters are represented by a 292 rate diffServTBMeterRate and a burst size diffServTBMeterBurstSize. 294 3.3. Actions 296 Actions include "no action", "mark the traffic with a DSCP", "drop the 297 traffic" or "count it". Other tasks such as "shape the traffic" or "drop 298 based on some algorithm" are handled elsewhere as queueing mechanisms, 299 rather than actions, consistent with [MODEL]. The "multiplexer", 300 "replicator" and "null" actions described in [MODEL] are accomplished 301 implicitly by means of the RowPointer structures of the other elements. 303 This MIB uses the Action Table diffServActionTable to organize one 304 Action's relationship with the element(s) before and after it. It allows 305 Actions to be cascaded to enable multiple Actions be applied to a single 306 traffic stream by using each entry's diffServActionNext attribute. The 307 diffServActionNext attribute of the last action entry in the chain 308 points to the next element in the TCB, if any, e.g. a Queueing element. 309 It may also point at a next TCB. 311 The parameters needed for each Action element will depend on the type of 312 Action to be taken. Hence there are specific Action Tables for all the 313 different Action types. This flexibility allows additional Actions be 314 specified in future revisions of this MIB, or in other MIBs and also 315 allows for the use of proprietary Actions without impact on those 316 defined here. 318 3.3.1. DSCP Mark Action Table 320 This Action is applied to traffic in order to mark it with a Diffserv 321 Codepoint (DSCP) value, specified in the diffServDscpMarkActTable. 322 Other marking actions might be specified elsewhere - these are outside 323 the scope of this MIB. 325 3.3.2. Count Action Table 327 Count Actions are used to count the traffic passing along a particular 328 path through the model. If specified, they are likely to be placed 329 first, before other types of Action. For example, when both a Count and 330 an Absolute Dropper Action are specified, the Count Action needs to 331 count the traffic stream before any traffic gets dropped. Note that 332 there are counters contained directly in Algorithmic Dropper elements to 333 indicate the amount of traffic dropped by those elements. 335 Counters are arranged in a single table but with separate conformance 336 statements for low-speed and high-speed interfaces, consistent with 337 [IFMIB]. 339 3.3.3. Absolute Drop Action 341 This action just silently discards all traffic presented to it, without 342 counting it. This action has no additional parameters and so is 343 represented only as a diffServActionSpecific pointing to 344 diffServAbsoluteDropAction without any specific parameters. 346 3.4. Queueing Elements 348 These include Algorithmic Droppers, Queues and Schedulers which are all 349 inter-related in their use of queueing techniques. 351 3.4.1. Algorithmic Dropper Table 353 Algorithmic Droppers have a close relationship with queueing: they are 354 represented in this MIB by entries in an Algorithmic Dropper Table. 355 Entries contain a diffServAlgDropNext attribute which indicates to which 356 queue they sink their traffic. 358 An Algorithmic Dropper is assumed to operate indiscriminately on all 359 packets that are presented at its input. If it is necessary to perform 360 additional classification on the stream then a separate TCB must be 361 introduced at this point: Classifier elements here can then distinguish 362 the different types of traffic on which dropping is to act and the 363 treatment for each type is described by a separate diffServAlgDropEntry. 365 Algorithmic Droppers may also contain a pointer to specific detail of 366 the drop algorithm. This MIB defines the detail for three drop 367 algorithms: Tail Drop, Head Drop and Random Drop; other algorithms are 368 outside the scope of this MIB modele but the general framework is 369 intended to allow for their inclusion via other MIB modules. 371 One generally-applicable parameter of a dropper is the specification of 372 a queue-depth threshold at which some drop action is to start. This is 373 represented in this MIB, as a base attribute of the Algorithmic Dropper 374 entry, by pointing to the queue for which depth is to be compared and 375 the depth threshold to compare against. 377 o A Tail Dropper requires the specification of a maximum queue depth 378 threshold: when the queue pointed at by diffServAlgDropQMeasure 379 reaches that depth threshold, diffServAlgDropQThresh, any new 380 traffic arriving at the dropper is discarded. This algorithm uses 381 only parameters that are part of the diffServAlgDropEntry. 383 o A Head Dropper requires the specification of a maximum queue depth 384 threshold: when the queue pointed at by diffServAlgDropQMeasure 385 reaches that depth threshold, diffServAlgDropQThresh, traffic 386 currently at the head of the queue is discarded. This algorithm 387 uses only parameters that are part of the diffServAlgDropEntry. 389 o Random Droppers are recommended as a way to control congestion, in 390 [QUEUEMGMT] and called for in the [AF-PHB]. Various implementations 391 exist, which agree on marking or dropping just enough traffic to 392 communicate with TCP-like protocols about congestion avoidance, but 393 differ markedly on their specific parameters. This MIB attempts to 394 offer a minimal set of controls for any random dropper, but expects 395 that vendors will augment the table with additional controls and 396 status in accordance with their implementation. This algorithm 397 requires additional parameters on top of those in 398 diffServAlgDropEntry: these are discussed below. 400 3.4.2. Random Dropper Table 402 One example of a random dropper is a RED-like dropper. An example of 403 the representation chosen in this MIB for this element is shown in 404 Figure 1. 406 Random droppers often have their drop probability function described as 407 a plot of drop probability (P) against averaged queue length (Q). 408 (Qmin,Pmin) then defines the start of the characteristic plot. Normally 409 Pmin=0, meaning with average queue length below Qmin, there will be no 410 drops. (Qmax,Pmax) defines a "knee" on the plot, after which point the 411 drop probability become more progressive (greater slope). (Qclip,1) 412 defines the queue length at which all packets will be dropped. Notice 413 this is different from Tail Drop because this uses an averaged queue 414 length. although it is possible for Qclip = Qmax. In the MIB module, 415 diffServRandomDropMinThreshBytes and diffServRandomDropMinThreshPkts 416 represent Qmin. diffServRandomDropMaxThreshBytes and 417 diffServRandomDropMaxThreshPkts represent Qmax. 419 +-------------+ +-----------+ 420 --->| Next --------+-->| Next ---------> to Scheduler 421 | Thresh=100k | | | Min=none | 422 | Measure -------+ | Max=none | 423 | Type=random | | Pri=10 | 424 | Specif -------+ | Type=fifo | 425 +-------------+ | +-----------+ 426 AlgDrop.3 | Queue.ifIndex.4 427 | 428 | +--------------+ 429 +-->| Minthresh=10k| 430 | Maxthresh=80k| 431 | Weight=1/16 | 432 | ProbMax= 0.5 | 433 +--------------+ 434 RandomDrop.3 436 Figure 1: Example Use of the RandomDropTable for Random Droppers 438 diffServRandomDropProbMax represents Pmax. This MIB does not represent 439 Pmin (assumed to be zero unless otherwise represented) or Qclip (assumed 440 to be Qmax unless otherwise represented). 442 Each random dropper specification is associated with a queue. This 443 allows multiple drop processes (of same or different types) be 444 associated with the same queue, as different PHB implementations may 445 require. This also allows for sequences of multiple droppers if 446 necessary. 448 The calculation of a smoothed queue length may also have an important 449 bearing on the behaviour of the dropper: parameters may include the 450 sampling interval and the weight of each sample. The performance may be 451 very sensitive to the values of these parameters and a wide range of 452 possible values may be required due to a wide range of link speeds. Most 453 algorithms include a sample weight, represented here by 454 diffServRandomDropInvWeight. Note however that there is ongoing research 455 on this topic, see e.g. [ACTQMGMT]. 457 Additional parameters may be added in an enterprise MIB module, e.g. by 458 using AUGMENTS on this table, to handle aspects of random drop 459 algorithms that are not standardised here. 461 NOTE: Deterministic Droppers can be viewed as a special case of Random 462 Droppers with the drop probability restricted to 0 and 1. Hence 463 Deterministic Droppers might be described by a Random Dropper with Pmin 464 = 0, Pmax = 1, Qmin = Qmax = Qclip, the averaged queue length at which 465 dropping occurs. 467 3.4.3. Queues and Schedulers 469 The Queue Table models simple FIFO queues, as described in [MODEL] 470 section 7.1.1. The Scheduler Table allows flexibility in constructing 471 both simple and somewhat more complex queueing hierarchies from those 472 queues. Of course, since TCBs can be cascaded multiple times on an 473 interface, even more complex hierarchies can be constructed that way 474 also. 476 The entries in the Queue Table have attributes which include a 477 specification of the scheduler which services the queue. They are 478 pointed at by the "next" attributes of the upstream elements e.g. 479 diffServMeterSucceedNext. Note that multiple upstream elements may 480 direct their traffic to the same Queue Table entry. For example, the 481 Assured Forwarding PHB suggests that all traffic marked AF11, AF12 or 482 AF13 be placed in the same queue, after metering, without reordering. 483 This would be represented by having the diffServMeterSucceedNext of each 484 upstream meter point at the same entry in the Queue Table. 486 The Scheduler Table represented in this MIB module contains entries, 487 each of which represents the algorithm in use for servicing the one or 488 more queues that feed it. The [MODEL] section 7.1.2 describes a 489 scheduler with multiple inputs: this is represented in the MIB by 490 including the scheduling parameters associated with a scheduler input in 491 the Queue Table entry that feeds it and having that point at one 492 particular Scheduler Table entry. In this way, sets of Queues can be 493 grouped together as inputs to the same Scheduler. This table serves to 494 represent the example scheduler described in the [MODEL]: other more 495 complex representations might be created outside of this MIB. 497 Each scheduler input, as represented by a Queue Table entry, is assigned 498 a priority with respect to all the other inputs feeding the same 499 scheduler. A higher-priority input will be serviced first over a lower- 500 priority input, assuming that all guarantees have already been met. 501 This priority parameter, used on its own with default values for the 502 other parameters, serves to allow representation of a Strict Priority 503 scheduler. 505 For Weighted Queueing algorithms e.g. WFQ, WRR, the "weight" of a given 506 scheduler input is represented with a Minimum Service Rate leaky-bucket 507 profile which provides guaranteed bandwidth to that input, if required. 508 This is represented, as were token-bucket meters, by a rate 509 diffServQueueMinRateAbs and a burst size diffServQueueMinBurstSize. The 510 rate may, alternatively, be represented by a relative value, as a 511 fraction of the interface's current line rate, diffServQueueMinRateRel 512 to assist in cases where line rates are variable or where a higher-level 513 policy might be expressed in terms of fractions of network resources. 514 The two rate parameters are inter-related and changes in one may be 515 reflected in the other. 517 An input may also be capable of acting as a non-work-conserving [MODEL] 518 traffic shaper: this is done by defining a Maximum Service Rate leaky- 519 bucket profile in order to limit the scheduler bandwidth available to 520 that input. This is represented, similarly to the minimum rate, by a 521 rate diffServQueueMaxRateAbs and a burst size diffServQueueMaxBurstSize. 522 The rate may, alternatively, be represented by a relative value, as a 523 fraction of the interface's current line rate, diffServQueueMaxRateRel. 525 3.4.4. Example of Algorithmic Droppers, Queues and Schedulers 527 As an example, the hypothetical queue/scheduler configuration shown in 528 [MODEL] section 8.1 is shown in Table 1. 530 Queues 1 and 3 are serviced for long enough to give them their promised 531 bandwidths and burst sizes, if they need them. Queue 2 is then serviced 532 up to its maximum limit profile. Only then does Queue 4 get an 533 opportunity to send its traffic. As an example of the use of the MIB 534 structures, Figure 2 shows how the example would be represented. 536 QId MinRate MaxRate Priority Scheduler 537 --- ---------------- ---------------- -------- --------- 538 1 100kbps/20kbyte none/none 20 Scheduler.1 539 2 none/none 100kbps/100kbyte 40 Scheduler.1 540 3 200kbps/20kbyte none/none 20 Scheduler.1 541 4 none/none none/none 10 Scheduler.1 543 SchedId Type 544 ------- ------------------ 545 1 weightedRoundRobin 547 Table 1: Example Queue and Scheduler Parameters 548 +-----------+ 549 ----------------------->| Next -----+ 550 | Min=Profl4| | 551 | Max=none | | 552 | Pri=20 | | 553 | Type=fifo | | 554 +-----------+ | 555 Queue.ifIndex.1 | 556 | 557 +-----------+ +-----------+ | 558 --->| Next -----+--->| Next ------+ 559 | Thresh=1k | | | Min=none | | 560 | Measure -----+ | Max=Profl5| | 561 | Type=Tail | | Pri=40 | | 562 | Spec=none | | Type=fifo | | +----------+ 563 +-----------+ +-----------+ +--->| Next -----> 0.0 564 Dropper.1 Queue.ifIndex.2 | | Algrm=wrr| or next TCB 565 | +----------+ 566 +-----------+ +-----------+ | Scheduler.ifIndex.1 567 --->| Next -----+--->| Next -----+ 568 | Thresh=2k | | | Min=Profl3| | 569 | Measure -----+ | Max=none | | 570 | Type=Tail | | Pri=20 | | 571 | Spec=none | | Type=fifo | | 572 +-----------+ +-----------+ | 573 Dropper.2 Queue.ifIndex.3 | 574 | 575 +-----------+ +-----------+ | 576 --->| Next ------+--->| Next -----+ 577 | Thresh=4k | | | Min=none | 578 | Measure -----+ | Max=none | 579 | Type=Tail | | Pri=10 | 580 | Spec=none | | Type=fifo | 581 +-----------+ +-----------+ 582 Dropper.3 Queue.ifIndex.4 584 Figure 2: Example of the use of Queueing elements 586 4. Conventions used in this MIB 588 4.1. The use of RowPointer 590 RowPointer is a textual convention used to identify a conceptual row in 591 an SNMP Table by pointing to one of its objects. In this MIB, it is used 592 in two ways: to indicate indirection and to indicate succession. 594 When used for indirection as in the diffServClassifierTable, the idea is 595 to allow other MIBs, including proprietary ones, to define new and 596 arcane classifiers - MAC headers, IPv4 and IPv6 headers, BGP Communities 597 and all sorts of other things - whilst still utilising the structures of 598 this MIB. This is a form of class inheritance (in "object oriented" 599 language): it allows base object definitions ("classes") to be extended 600 in proprietary or standard ways, in the future, by other documents. 602 When used for succession, it answers the question "what happens next?". 603 Rather than presume that the next table must be as specified in the 604 conceptual model [MODEL] and providing its index, the RowPointer takes 605 you to the MIB row representing that thing. In the diffServMeterTable, 606 for example, the diffServMeterFailNext RowPointer might take you to 607 another meter, while the diffServMeterSucceedNext RowPointer would take 608 you to an action. 610 NOTE -- the RowPointer construct is used to build the TCBs 611 described in [MODEL]: this MIB does not model TCBs directly - it 612 operates at a lower level of abstraction using only individual 613 elements, connected in succession by RowPointers. Therefore, the 614 concept of TCBs enclosing individual functional datapath elements 615 is not applicable to this MIB, although such a concept may be 616 employed by management tools that use this MIB. 618 It is possible that a path through a device following a set of 619 RowPointers is indeterminate i.e. it ends in a dangling RowPointer (or 620 potentially does in the case of a Meter element) should be treated by 621 the agent as if it were operationally deactivated. For example, if an 622 Action element has a dangling diffServActionNext RowPointer that does 623 not point to an existent table entry (and is not zeroDotZero), then none 624 of the subsequent elements in that particular chain should have any 625 effect on the traffic proceeding down this chain and the Classification 626 or Meter element which lead to this Action element is not considered to 627 be active. Other parts of the device configuration remain in effect, of 628 course, but this rule simply removes all ambiguity from the operational 629 system. 631 4.2. Conceptual row creation and deletion 633 A number of conceptual tables defined in this MIB use as an index an 634 arbitrary integer value, unique across the scope of the agent. In order 635 to help with multi-manager row-creation problems, a mechanism must be 636 provided to allow a manager to obtain unique values for such an index 637 and to ensure that, when used, the manager knows whether it got what it 638 wanted or not. 640 Typically, such a table has an associated NextFree variable e.g. 641 diffServClassifierNextFree which provides a suitable value for the index 642 of the next row to be created e.g. diffServClassifierId. A special 643 value, 0, is used to indicate that no more entries can be created by the 644 agent. The table also has a columnar Status attribute with RowStatus 645 syntax [6]. 647 If a manager attempts to create a conceptual row in the table (by a SET 648 operation that contains a varbind setting the Status to a value of 649 either createAndGo or createAndWait) and if the agent has sufficient 650 resources and has no other conceptual row with the same indices, the 651 agent will create the row and return success. If the agent has 652 insufficient resources or such a row is already existent then it returns 653 an error. A manager must be prepared to try again in such circumstances, 654 probably by re-reading the NextFree to obtain a new index value in case 655 a second manager had got in between the first manager's read of the 656 NextFree value and the first manager's row-creation attempt. The use of 657 RowStatus is covered in more detail in [6]. 659 5. Editorial information 661 663 5.1. Open Issues resolved in previous drafts 665 (0) Terminology is more in line with [MODEL], [POLTERM] and [DSTERM]. 666 Discarder -> "Algorithmic Dropper", "Monitor" -> "Counter" 667 "Classifier element" -> "Filter" 669 (1) Cascaded token-buckets is not equivalent to multi-rate token- 670 bucket: do we need to fix this by allowing a multi-rate TB in the 671 MIB? Or, by defining cascaded buckets to mean "multi-rate". (assume 672 the latter - see text in 2.3) 674 (2) Markers: model only describes DSCP-markers: do we need to be able 675 to extend this to other sorts (e.g. 802.1p), even if we do not 676 represent them in this MIB today? (yes). No MIB changes, just 677 words. 679 (3) Counters: should specific blocks include their own or is a "counter 680 action", as described in the Model, sufficient to count all paths 681 through a device? (as appropriate). Per-queue counters are 682 derivable from "action" ones. Per-classifier counters: may feed 683 through from clasifiers to distinct counter actions. 685 (4) Queue Sets: are these generally applicable? (no). The example in 686 section 2.5.1 is hard to follow: we should describe this example in 687 [MODEL] and then show how it maps to MIB in the MIB draft. - DONE 689 (5) Do we need scheduling units of "packets"? (NO) Should we use "kbps" 690 or just "bps" for rates? DONE - all rates are in kbps. 692 (6) Are "absolute" rates sufficient or should we include "relative to 693 line speed" ones as well? (yes) - DONE - explained that these are 694 interrelated. 696 (7) Scheduler weights vs. rates vs. priorities: this is confusing - 697 suggest we stick to rates and priorities (see Model draft 7.1.2) - 698 DONE. 700 (8) Queue Measure table: 702 o This allows for RIO - multiple averaging functions for the same 703 queue: is this needed? OUT OF SCOPE. 705 o mixes config with status objects - split these? N/A. 707 o do we need floating-point representation for "weight"? N/A. 709 o do we need MIB visibility for average queue depth? N/A. 711 o do we need MIB-configurable averaging functions (sample 712 weight/interval)? (maybe just "sample weight") - NO: averaging 713 functions will be left out although framework allows for their 714 inclusion separately. 716 (9) Counter compliance: paste text from IF-MIB re line-speeds. Do you 717 still have to do the low-speed counters for fast interfaces? YES. 718 DONE. 720 (10) Meters: are these mandatory for compliance? NO 722 (11) Discussion material: move most of this to Model draft e.g. most of 723 3.1, 3.3, "Dropper/discarder" part of 3.4, nearly all of 3.5. Just 724 leave the "how does the MIB map from the Model" parts in the MIB 725 draft, no general discussion. DONE. 727 (12) Counters: merged in 32-bit and 64-bit counters - conformance 728 statements sort out which ones must be implemented. This is 729 consistent with [IFMIB]. DONE. 731 (13) Droppers: we used to have a common "dropper" table that represented 732 all of: dropAlways, randomDrop, tailDrop with just some parameters 733 valid for the simpler ones. A simpler representation is to define 734 specific dropper tables for each type (e.g. a single OID to point 735 at for dropAlways since it is always the last action in a chain) 736 but this would mean a larger number of (simpler) MIB objects. 737 CHANGES: dropAlways is still an Action but the others are moved to 738 a diffServAlgDropTable. This table can handle tail/head/random drop 739 - others by extension. 741 (14) Should TBMeterTable just AUGMENT the MeterTable, should it use same 742 indices or are separate structures linked by RowPointers 743 preferable? (same indices without RowPointer). 745 (15) Do we need to model multiple queues feeding back into a single 746 dropper algorithm? (yes). If so, the current single-queue pointer 747 and threshold will not be adequate - should we leave them in? They 748 will be useful for many, but not all, dropper algorithms. (yes) 750 (17) We have concepts of "inbound" and "outbound" directions: but if we 751 have a series of multiple TCBs on a given interface for the same 752 direction (allowed by the model) then we do not have a way to 753 indicate "this is the 1st one". Moreover, it is a somewhat 754 convoluted process to then find the 2nd, 3rd etc. ones - you would 755 have to follow the RowPointers to get there: should we explicitly 756 have an index to enable/help these lookup operations? Note: this is 757 not the same issue as needing a "precedence" for each filter entry 758 of a classifier (yes - added another index to classifiers to 759 represent what TCB they operate at for a given 760 interface/direction). 762 5.2. Open Issues resolved in this draft 764 (13) Droppers: slight change to previous resolution. MIB can now handle 765 tail/head/random drop using diffServAlgDropTable and 766 diffServRandomDropTable. 768 (18) Should manager be allowed to create Queue elements or should agent 769 be in control of this? (the former) 771 (19) Should manager be allowed to create Scheduler elements or should 772 agent be in control of this? (the former) 774 (20) Related to (17) above, do we also need a "TCB index" for elements 775 other than classifiers? (no) 777 (21) Do we need diffServAlgDropType of both "headDrop" and "tailDrop" or 778 should we just represent the tail dropper by placing a dropper 779 after the queue instead of before the queue, as linked by the 780 diffServQNext and diffServAlgDropNext RowPointers? (the former - 781 dropper is always in front of the queue in this model). 783 (22) Do we need to support RED algorithms for algorithm parameter 784 configuration and monitoring? If so, what variables are needed? 785 (Added diffServRandomDropTable). 787 (24) diffServAlgDropQThreshold needs UNITS (Bytes). 789 (25) Dangling RowPointers: should we mandate that these are never 790 permitted? Or just define the behaviour if they do dangle? (We 791 define it such that elements that have dangling pointers, as well 792 as upstream elements that point to them, are considered "not 793 activated") 795 (26) Discontinuity times for MIB counters - is 796 ifCounterDiscontinuityTime adequate? (no: added 797 diffServCountActDiscontTime). 799 (27) How do we handle dropper algorithms that require additional 800 classification information in order to do their job? If a 801 Classifier is needed then create a new TCB for it at the point just 802 before the dropper: use ordinary Classifier elements in this TCB. 804 (28) Indexing of table entries and uniqueness hints: is TestAndIncr the 805 correct tool to use? (no: RowStatus is the right tool for ensuring 806 uniqueness; use a NextFree variable as a hint). 808 (32) Miscellaneous clarifications - thanks Bob. 810 5.3. Still Open Issues 812 (16) Should the creation of counter actions be under the control of 813 manager or agent: should a diffServActionEntry and 814 diffServCountActEntry appear by magic (does the agent know what 815 counters it can and cannot maintain on a given interface)? (no) If 816 no, should diffServCountActEntry appear magically when a 817 diffServAction element is created which points at the 818 diffServCountActTable (then would be no need for 819 diffServCountActStatus)? (no) 821 (23) Do daughter entries of derived table entries need to exist 822 independently of the parent? Examples are 823 diffServMeterEntry/diffServTBMeterEntry, 824 diffServActionEntry/diffServCountActEntry and 825 diffServAlgDropEntry/diffServRandomDropEntry (assume they must be 826 independent of the equivalent entry in diffServMeterTable which 827 points at the TB table - needs diffServTBMeterStatus: daughters 828 must be created explicitly by manager). 830 (30) Related to (17) - multi-manager creation of TCBs: 831 diffServClassifierId is unique across the agent, for all values of 832 diffServClassifierTcb but there is no "next free" variable to 833 report the next TCB to use. This can lead to a race condition when 834 2 managers are duelling to create entries with the same value of 835 diffServClassifierTcb. There are also legitimate reasons for 836 different managers to be "creating" the *same* TCB so a 837 conventional "next free" is not a good solution. Is this a rare 838 enough occurence given a suitable choice of diffServClassifierTcb 839 e.g. pseudo-random? (yes). 841 (31) When inheritance is needed and parent/daughter share indexing, the 842 parent often points to the daughter using a "Specific" attribute 843 e.g. diffServMeterSpecific, diffServActionSpecific, 844 diffServAlgDropSpecific. If this is a RowPointer and points to the 845 associated row in the daughter's table, there is redundant 846 information which gives scope for additional error cases. So, 847 wherever possible, should we remove this redundant information by 848 making the "Specific" attribute point only to the base of the 849 daughter table and make it an OBJECT IDENTIFIER? The con is that 850 this is an unusual use of MIB pointers (point at table base, not 851 individual entries). 853 6. MIB Definition 855 DIFF-SERV-MIB DEFINITIONS ::= BEGIN 857 IMPORTS 858 Unsigned32, Counter32, Counter64, OBJECT-TYPE, 859 MODULE-IDENTITY, OBJECT-IDENTITY, zeroDotZero, mib-2 860 FROM SNMPv2-SMI 861 TEXTUAL-CONVENTION, RowStatus, RowPointer, TimeStamp 862 FROM SNMPv2-TC 863 MODULE-COMPLIANCE, OBJECT-GROUP 864 FROM SNMPv2-CONF 865 ifIndex 866 FROM IF-MIB 867 InetAddressType, InetAddress 868 FROM INET-ADDRESS-MIB 870 BurstSize 871 FROM INTEGRATED-SERVICES-MIB; 873 diffServMib MODULE-IDENTITY 874 LAST-UPDATED "200007130000Z" 875 ORGANIZATION "IETF Diffserv WG" 876 CONTACT-INFO 877 " Brian Carpenter (co-chair of Diffserv WG) 878 c/o iCAIR 879 1890 Maple Ave, #150 880 Evanston, IL 60201, USA 881 Phone: +1 847 467 7811 882 E-mail: brian@icair.org 884 Kathleen Nichols (co-chair of Diffserv WG) 885 Packet Design 886 E-mail: nichols@packetdesign.com 888 Fred Baker (author) 889 Cisco Systems 890 519 Lado Drive 891 Santa Barbara, CA 93111, USA 892 E-mail: fred@cisco.com 894 Kwok Ho Chan (author) 895 Nortel Networks 896 600 Technology Park Drive 897 Billerica, MA 01821, USA 898 E-mail: khchan@nortelnetworks.com 900 Andrew Smith (author) 901 E-mail: ah_smith@pacbell.net" 902 DESCRIPTION 903 "This MIB defines the objects necessary to manage a device that 904 uses the Differentiated Services Architecture described in RFC 905 2475 and the Informal Management Model for DiffServ Routers in 906 draft-ietf-diffserv-model-04.txt." 907 REVISION "200007130000Z" 908 DESCRIPTION 909 "Initial version, published as RFC xxxx." 910 ::= { mib-2 12345 } -- anybody who uses this unassigned 911 -- number deserves the wrath of IANA 913 diffServObjects OBJECT IDENTIFIER ::= { diffServMib 1 } 914 diffServTables OBJECT IDENTIFIER ::= { diffServMib 2 } 915 diffServMIBConformance OBJECT IDENTIFIER ::= { diffServMib 3 } 916 -- These textual conventions have no effect on either the syntax 917 -- nor the semantics of any managed object. Objects defined 918 -- using this convention are always encoded by means of the 919 -- rules that define their primitive type. 921 Dscp ::= TEXTUAL-CONVENTION 922 DISPLAY-HINT "d" 923 STATUS current 924 DESCRIPTION 925 "The IP header Diffserv Code-Point that may be used for 926 discriminating or marking a traffic stream. The value -1 is used 927 to indicate a wildcard i.e. any value." 928 SYNTAX INTEGER (-1 | 0..63) 930 SixTupleClfrL4Port ::= TEXTUAL-CONVENTION 931 DISPLAY-HINT "d" 932 STATUS current 933 DESCRIPTION 934 "A value indicating a Layer-4 protocol port number." 935 SYNTAX INTEGER (0..65535) 937 IfDirection ::= TEXTUAL-CONVENTION 938 STATUS current 939 DESCRIPTION 940 "Specifies a direction of data travel on an interface. 'inbound' 941 traffic is operated on during reception from the interface, while 942 'outbound' traffic is operated on prior to transmission on the 943 interface." 944 SYNTAX INTEGER { 945 inbound(1), -- ingress interface 946 outbound(2) -- egress interface 947 } 949 -- 950 -- Classifiers 951 -- 953 -- 954 -- Classifier Table 955 -- 957 -- The Classifier Table allows us to enumerate the relationship 958 -- between arbitrary classifiers and the subsequent downstream 959 -- Diffserv elements. 961 diffServClassifierTable OBJECT-TYPE 962 SYNTAX SEQUENCE OF DiffServClassifierEntry 963 MAX-ACCESS not-accessible 964 STATUS current 965 DESCRIPTION 966 "The classifier table defines the classifiers that are applied to 967 traffic arriving at this interface in a particular direction. 968 Specific classifiers are defined by RowPointers in the entries of 969 this table which identify entries in filter tables of specific 970 types, e.g. Multi-Field Classifiers (MFCs) for IP are defined in 971 the diffServSixTupleClfrTable. Other classifier types may be 972 defined elsewhere." 973 REFERENCE 974 "[MODEL] section 4.1" 975 ::= { diffServTables 1 } 977 diffServClassifierEntry OBJECT-TYPE 978 SYNTAX DiffServClassifierEntry 979 MAX-ACCESS not-accessible 980 STATUS current 981 DESCRIPTION 982 "An entry in the classifier table describes a single element of 983 the classifier." 984 INDEX { ifIndex, diffServClassifierIfDirection, 985 diffServClassifierTcb, diffServClassifierId } 986 ::= { diffServClassifierTable 1 } 988 DiffServClassifierEntry ::= SEQUENCE { 989 diffServClassifierIfDirection IfDirection, 990 diffServClassifierTcb Unsigned32, 991 diffServClassifierId Unsigned32, 992 diffServClassifierFilter RowPointer, 993 diffServClassifierNext RowPointer, 994 diffServClassifierPrecedence Unsigned32, 995 diffServClassifierStatus RowStatus 997 } 999 diffServClassifierIfDirection OBJECT-TYPE 1000 SYNTAX IfDirection 1001 MAX-ACCESS not-accessible 1002 STATUS current 1003 DESCRIPTION 1004 "Specifies the direction for which this classifier entry applies 1005 on this interface." 1006 ::= { diffServClassifierEntry 1 } 1008 diffServClassifierTcb OBJECT-TYPE 1009 SYNTAX Unsigned32 1010 MAX-ACCESS not-accessible 1011 STATUS current 1012 DESCRIPTION 1013 "Specifies the TCB of which this classifier element is a part. 1014 Lower numbers indicate an element that belongs to a classifier 1015 that is part of a TCB that is, at least conceptually, applied to 1016 traffic before those with higher numbers - this is necessary to 1017 resolve ambiguity in cases where different TCBs contain filters 1018 that overlap with each other. 1020 A manager wanting to create a new TCB should either first search 1021 this table for existing entries and pick a value for this 1022 variable that is not currently represented - some form of pseudo- 1023 random choice is likely to minimise collisions. After successful 1024 creation of a conceptual row using the chosen value, the manager 1025 should check again that there are no other rows with this value 1026 that have been created by a different manager that could, 1027 potentially, interfere with the classifier elements that are 1028 desired." 1029 ::= { diffServClassifierEntry 2 } 1031 diffServClassifierId OBJECT-TYPE 1032 SYNTAX Unsigned32 1033 MAX-ACCESS not-accessible 1034 STATUS current 1035 DESCRIPTION 1036 "A classifier ID that enumerates the classifier elements. The set 1037 of such identifiers spans the whole agent. Managers should obtain 1038 new values for row creation in this table by reading 1039 diffServClassifierNextFree." 1040 ::= { diffServClassifierEntry 3 } 1042 diffServClassifierFilter OBJECT-TYPE 1043 SYNTAX RowPointer 1044 MAX-ACCESS read-create 1045 STATUS current 1046 DESCRIPTION 1047 "A pointer to a valid entry in another table that describes the 1048 applicable classification filter, e.g. an entry in 1049 diffServSixTupleClfrTable. If the row pointed to does not exist, 1050 the classifier is ignored. 1052 The value zeroDotZero is interpreted to match anything not 1053 matched by another classifier - only one such entry may exist in 1054 this table." 1055 DEFVAL { zeroDotZero } 1056 ::= { diffServClassifierEntry 4 } 1058 diffServClassifierNext OBJECT-TYPE 1059 SYNTAX RowPointer 1060 MAX-ACCESS read-create 1061 STATUS current 1062 DESCRIPTION 1063 "This selects the next datapath element to handle packets 1064 matching the filter pattern. For example, this can point to an 1065 entry in a meter, action, algorithmic dropper or queue table. 1067 If the row pointed to does not exist, the classifier element is 1068 ignored." 1069 ::= { diffServClassifierEntry 5 } 1071 diffServClassifierPrecedence OBJECT-TYPE 1072 SYNTAX Unsigned32 1073 MAX-ACCESS read-create 1074 STATUS current 1075 DESCRIPTION 1076 "The relative precedence in which classifiers are applied: higher 1077 numbers represent classifiers with higher precedence. 1078 Classifiers with the same precedence must be unambiguous i.e. 1079 they must define non-overlapping patterns, and are considered to 1080 be applied simultaneously to the traffic stream. Classifiers with 1081 different precedence may overlap in their filters: the classifier 1082 with the highest precedence that matches is taken. 1084 On a given interface, there must be a complete classifier in 1085 place at all times for the first TCB (lowest value of 1086 diffServClassifierTcb) in the ingress direction. This means that 1087 there will always be one or more filters that match every 1088 possible pattern that could be presented in an incoming packet. 1089 There is no such requirement for subsequent TCBs in the ingress 1090 direction, nor for any TCB in the egress direction." 1092 DEFVAL { 0 } 1093 ::= { diffServClassifierEntry 6 } 1095 diffServClassifierStatus OBJECT-TYPE 1096 SYNTAX RowStatus 1097 MAX-ACCESS read-create 1098 STATUS current 1099 DESCRIPTION 1100 "The RowStatus variable controls the activation, deactivation, or 1101 deletion of a classifier. Any writable variable may be modified 1102 whether the row is active or notInService." 1103 ::= { diffServClassifierEntry 7 } 1105 diffServClassifierNextFree OBJECT-TYPE 1106 SYNTAX Unsigned32 1107 MAX-ACCESS read-only 1108 STATUS current 1109 DESCRIPTION 1110 "This object yields a value when read that is currently-unused 1111 for a diffServClassifierId instance. If a configuring system 1112 attempts to create a new row in the diffServClassifierTable using 1113 this value, that operation will fail if the value has, in the 1114 meantime, been used to create another row that is currently 1115 valid." 1116 ::= { diffServObjects 1 } 1118 -- 1119 -- IP Six-Tuple Classification Table 1120 -- 1121 -- Classification based on 6 different fields in the IP 1122 -- header. This is intended to be IP-version-independent. 1123 -- 1125 diffServSixTupleClfrTable OBJECT-TYPE 1126 SYNTAX SEQUENCE OF DiffServSixTupleClfrEntry 1127 MAX-ACCESS not-accessible 1128 STATUS current 1129 DESCRIPTION 1130 "A table of IP Six-Tuple Classifier filter entries that a system 1131 may use to identify IP traffic." 1132 REFERENCE 1133 "[MODEL] section 4.2.2" 1134 ::= { diffServTables 2 } 1136 diffServSixTupleClfrEntry OBJECT-TYPE 1137 SYNTAX DiffServSixTupleClfrEntry 1138 MAX-ACCESS not-accessible 1139 STATUS current 1140 DESCRIPTION 1141 "An IP Six-Tuple Classifier entry describes a single filter." 1142 INDEX { diffServSixTupleClfrId } 1143 ::= { diffServSixTupleClfrTable 1 } 1145 DiffServSixTupleClfrEntry ::= SEQUENCE { 1146 diffServSixTupleClfrId Unsigned32, 1147 diffServSixTupleClfrDstAddrType InetAddressType, 1148 diffServSixTupleClfrDstAddr InetAddress, 1149 diffServSixTupleClfrDstAddrMask Unsigned32, 1150 diffServSixTupleClfrSrcAddrType InetAddressType, 1151 diffServSixTupleClfrSrcAddr InetAddress, 1152 diffServSixTupleClfrSrcAddrMask Unsigned32, 1153 diffServSixTupleClfrDscp Dscp, 1154 diffServSixTupleClfrProtocol INTEGER, 1155 diffServSixTupleClfrDstL4PortMin SixTupleClfrL4Port, 1156 diffServSixTupleClfrDstL4PortMax SixTupleClfrL4Port, 1157 diffServSixTupleClfrSrcL4PortMin SixTupleClfrL4Port, 1158 diffServSixTupleClfrSrcL4PortMax SixTupleClfrL4Port, 1159 diffServSixTupleClfrStatus RowStatus 1160 } 1162 diffServSixTupleClfrId OBJECT-TYPE 1163 SYNTAX Unsigned32 1164 MAX-ACCESS not-accessible 1165 STATUS current 1166 DESCRIPTION 1167 "A unique identifier for the filter. Filters may be shared by 1168 multiple interfaces in the same system. Managers should obtain 1169 new values for row creation in this table by reading 1170 diffServSixTupleClfrNextFree." 1171 ::= { diffServSixTupleClfrEntry 1 } 1173 diffServSixTupleClfrDstAddrType OBJECT-TYPE 1174 SYNTAX InetAddressType 1175 MAX-ACCESS read-create 1176 STATUS current 1177 DESCRIPTION 1178 "The type of IP destination address used by this classifier 1179 entry." 1180 ::= { diffServSixTupleClfrEntry 2 } 1182 diffServSixTupleClfrDstAddr OBJECT-TYPE 1183 SYNTAX InetAddress 1184 MAX-ACCESS read-create 1185 STATUS current 1186 DESCRIPTION 1187 "The IP address to match against the packet's destination IP 1188 address." 1189 ::= { diffServSixTupleClfrEntry 3 } 1191 diffServSixTupleClfrDstAddrMask OBJECT-TYPE 1192 SYNTAX Unsigned32 1193 UNITS "bits" 1194 MAX-ACCESS read-create 1195 STATUS current 1196 DESCRIPTION 1197 "The length of a mask for the matching of the destination IP 1198 address. Masks are constructed by setting bits in sequence from 1199 the most-significant bit downwards for 1200 diffServSixTupleClfrDstAddrMask bits length. All other bits in 1201 the mask, up to the number needed to fill the length of the 1202 address diffServSixTupleClfrDstAddr are cleared to zero. A zero 1203 bit in the mask then means that the corresponding bit in the 1204 address always matches." 1205 DEFVAL {0} 1206 ::= { diffServSixTupleClfrEntry 4 } 1208 diffServSixTupleClfrSrcAddrType OBJECT-TYPE 1209 SYNTAX InetAddressType 1210 MAX-ACCESS read-create 1211 STATUS current 1212 DESCRIPTION 1213 "The type of IP source address used by this classifier entry." 1214 ::= { diffServSixTupleClfrEntry 5 } 1216 diffServSixTupleClfrSrcAddr OBJECT-TYPE 1217 SYNTAX InetAddress 1218 MAX-ACCESS read-create 1219 STATUS current 1220 DESCRIPTION 1221 "The IP address to match against the source IP address of each 1222 packet." 1223 ::= { diffServSixTupleClfrEntry 6 } 1225 diffServSixTupleClfrSrcAddrMask OBJECT-TYPE 1226 SYNTAX Unsigned32 1227 UNITS "bits" 1228 MAX-ACCESS read-create 1229 STATUS current 1230 DESCRIPTION 1231 "The length of a mask for the matching of the source IP address. 1232 Masks are constructed by setting bits in sequence from the most- 1233 significant bit downwards for diffServSixTupleClfrSrcAddrMask 1234 bits length. All other bits in the mask, up to the number needed 1235 to fill the length of the address diffServSixTupleClfrSrcAddr are 1236 cleared to zero. A zero bit in the mask then means that the 1237 corresponding bit in the address always matches." 1238 DEFVAL {0} 1239 ::= { diffServSixTupleClfrEntry 7 } 1241 diffServSixTupleClfrDscp OBJECT-TYPE 1242 SYNTAX Dscp 1243 MAX-ACCESS read-create 1244 STATUS current 1245 DESCRIPTION 1246 "The value that the DSCP in the packet must have to match this 1247 entry. A value of -1 indicates that a specific DSCP value has not 1248 been defined and thus all DSCP values are considered a match." 1249 DEFVAL {-1} 1250 ::= { diffServSixTupleClfrEntry 8 } 1252 diffServSixTupleClfrProtocol OBJECT-TYPE 1253 SYNTAX INTEGER (0..255) 1254 MAX-ACCESS read-create 1255 STATUS current 1256 DESCRIPTION 1257 "The IP protocol to match against the IPv4 protocol number in the 1258 packet. A value of zero means match all." 1259 DEFVAL {0} 1260 ::= { diffServSixTupleClfrEntry 9 } 1262 diffServSixTupleClfrDstL4PortMin OBJECT-TYPE 1263 SYNTAX SixTupleClfrL4Port 1264 MAX-ACCESS read-create 1265 STATUS current 1266 DESCRIPTION 1267 "The minimum value that the layer-4 destination port number in 1268 the packet must have in order to match this classifier entry." 1269 DEFVAL {0} 1270 ::= { diffServSixTupleClfrEntry 10 } 1272 diffServSixTupleClfrDstL4PortMax OBJECT-TYPE 1273 SYNTAX SixTupleClfrL4Port 1274 MAX-ACCESS read-create 1275 STATUS current 1276 DESCRIPTION 1277 "The maximum value that the layer-4 destination port number in 1278 the packet must have in order to match this classifier entry. 1279 This value must be equal to or greater that the value specified 1280 for this entry in diffServSixTupleClfrDstL4PortMin." 1281 DEFVAL {65535} 1282 ::= { diffServSixTupleClfrEntry 11 } 1284 diffServSixTupleClfrSrcL4PortMin OBJECT-TYPE 1285 SYNTAX SixTupleClfrL4Port 1286 MAX-ACCESS read-create 1287 STATUS current 1288 DESCRIPTION 1289 "The minimum value that the layer-4 source port number in the 1290 packet must have in order to match this classifier entry." 1291 DEFVAL {0} 1292 ::= { diffServSixTupleClfrEntry 12 } 1294 diffServSixTupleClfrSrcL4PortMax OBJECT-TYPE 1295 SYNTAX SixTupleClfrL4Port 1296 MAX-ACCESS read-create 1297 STATUS current 1298 DESCRIPTION 1299 "The maximum value that the layer-4 source port number in the 1300 packet must have in oder to match this classifier entry. This 1301 value must be equal to or greater that the value specified for 1302 this entry in dsSixTupleIpSrcL4PortMin." 1303 DEFVAL {65535} 1304 ::= { diffServSixTupleClfrEntry 13 } 1306 diffServSixTupleClfrStatus OBJECT-TYPE 1307 SYNTAX RowStatus 1308 MAX-ACCESS read-create 1309 STATUS current 1310 DESCRIPTION 1311 "The RowStatus variable controls the activation, deactivation, or 1312 deletion of a classifier. Any writable variable may be modified 1313 whether the row is active or notInService." 1314 ::= { diffServSixTupleClfrEntry 14 } 1316 diffServSixTupleClfrNextFree OBJECT-TYPE 1317 SYNTAX Unsigned32 1318 MAX-ACCESS read-only 1319 STATUS current 1320 DESCRIPTION 1321 "This object yields a value when read that is currently-unused 1322 for a diffServSixTupleClfrId instance. 1323 If a configuring system attempts to create a new row 1324 in the diffServSixTupleClfrTable using this value, that operation 1325 will fail if the value has, in the meantime, been used 1326 to create another row that is currently valid." 1328 ::= { diffServObjects 2 } 1330 -- 1331 -- Meters 1332 -- 1333 -- This MIB includes definitions for a generic Meter 1334 -- Table as well as specific definitions for Token- 1335 -- Bucket Meters, as one example of possible meters. 1336 -- 1338 diffServMeterTable OBJECT-TYPE 1339 SYNTAX SEQUENCE OF DiffServMeterEntry 1340 MAX-ACCESS not-accessible 1341 STATUS current 1342 DESCRIPTION 1343 "This table enumerates generic meters that a system may use to 1344 police a stream of traffic. The traffic stream to be metered is 1345 determined by the element(s) upstream of the meter i.e. by the 1346 object(s) that point to each entry in this table. This may 1347 include all traffic on an interface. 1349 Specific meter details are to be found in diffServMeterSpecific." 1350 REFERENCE 1351 "[MODEL] section 5.1" 1352 ::= { diffServTables 3 } 1354 diffServMeterEntry OBJECT-TYPE 1355 SYNTAX DiffServMeterEntry 1356 MAX-ACCESS not-accessible 1357 STATUS current 1358 DESCRIPTION 1359 "An entry in the meter table describing a single meter." 1360 INDEX { ifIndex, diffServMeterIfDirection, 1361 diffServMeterId } 1362 ::= { diffServMeterTable 1 } 1364 DiffServMeterEntry ::= SEQUENCE { 1365 diffServMeterIfDirection IfDirection, 1366 diffServMeterId Unsigned32, 1367 diffServMeterSucceedNext RowPointer, 1368 diffServMeterFailNext RowPointer, 1369 diffServMeterSpecific OBJECT IDENTIFIER, 1370 diffServMeterStatus RowStatus 1371 } 1373 diffServMeterIfDirection OBJECT-TYPE 1374 SYNTAX IfDirection 1375 MAX-ACCESS not-accessible 1376 STATUS current 1377 DESCRIPTION 1378 "Specifies the direction for which this meter entry applies on 1379 this interface." 1380 ::= { diffServMeterEntry 1 } 1382 diffServMeterId OBJECT-TYPE 1383 SYNTAX Unsigned32 1384 MAX-ACCESS not-accessible 1385 STATUS current 1386 DESCRIPTION 1387 "This identifies a meter entry. Managers should obtain new values 1388 for row creation in this table by reading diffServMeterNextFree." 1389 ::= { diffServMeterEntry 2 } 1391 diffServMeterSucceedNext OBJECT-TYPE 1392 SYNTAX RowPointer 1393 MAX-ACCESS read-create 1394 STATUS current 1395 DESCRIPTION 1396 "If the traffic does conform to the meter, this indicates the 1397 next datapath element to handle the traffic e.g. an Action or 1398 another Meter datapath element. 1400 The value zeroDotZero in this variable indicates no further 1401 Diffserv treatment is performed on this traffic by the current 1402 interface for this interface direction. If the row pointed to 1403 does not exist, the meter element is considered inactive." 1404 DEFVAL { zeroDotZero } 1405 ::= { diffServMeterEntry 3 } 1407 diffServMeterFailNext OBJECT-TYPE 1408 SYNTAX RowPointer 1409 MAX-ACCESS read-create 1410 STATUS current 1411 DESCRIPTION 1412 "If the traffic does not conform to the meter, this indicates the 1413 next datapath element to handle the traffic e.g. an Action or 1414 Meter datapath element. 1416 The value zeroDotZero in this variable indicates no further 1417 Diffserv treatment is performed on this traffic by the current 1418 interface for this interface direction. If the row pointed to 1419 does not exist, the meter element is considered inactive." 1420 DEFVAL { zeroDotZero } 1421 ::= { diffServMeterEntry 4 } 1423 diffServMeterSpecific OBJECT-TYPE 1424 SYNTAX OBJECT IDENTIFIER 1425 MAX-ACCESS read-create 1426 STATUS current 1427 DESCRIPTION 1428 "This indicates the behaviour of the meter by pointing to a table 1429 containing detailed parameters. Note that entries in that 1430 specific table must be managed explicitly. 1432 One example of a valid object would be diffServTBMeterTable, 1433 whose entries are indexed by the same variables as this table, 1434 for describing an instance of a token-bucket meter." 1435 ::= { diffServMeterEntry 5 } 1437 diffServMeterStatus OBJECT-TYPE 1438 SYNTAX RowStatus 1439 MAX-ACCESS read-create 1440 STATUS current 1441 DESCRIPTION 1442 "The RowStatus variable controls the activation, deactivation, or 1443 deletion of a meter. Any writable variable may be modified 1444 whether the row is active or notInService." 1445 ::= { diffServMeterEntry 6 } 1447 diffServMeterNextFree OBJECT-TYPE 1448 SYNTAX Unsigned32 1449 MAX-ACCESS read-only 1450 STATUS current 1451 DESCRIPTION 1452 "This object yields a value when read that is currently-unused 1453 for a diffServMeterId instance. If a configuring system attempts 1454 to create a new row in the diffServMeterTable using this value, 1455 that operation will fail if the value has, in the meantime, been 1456 used to create another row that is currently valid." 1457 ::= { diffServObjects 3 } 1459 -- 1460 -- Token-Bucket Meter Table 1461 -- 1463 diffServTBMeterTable OBJECT-TYPE 1464 SYNTAX SEQUENCE OF DiffServTBMeterEntry 1465 MAX-ACCESS not-accessible 1466 STATUS current 1467 DESCRIPTION 1468 "This table enumerates specific token-bucket meters that a system 1469 may use to police a stream of traffic. Such meters are modelled 1470 here as having a single rate and a burst size. 1472 Multiple meter elements may be logically cascaded using their 1473 diffServMeterSucceedNext pointers if a multi-rate token bucket is 1474 needed. One example of this might be for an AF PHB 1475 implementation that used two-rate meters. Such cascading of 1476 meter elements of specific type of token-bucket indicates 1477 forwarding behaviour that is functionally equivalent to a multi- 1478 rate meter: the sequential nature of the representation is merely 1479 a notational convenience for this MIB. 1481 Entries in this table share indexing with a parent 1482 diffServMeterEntry although they must be managed (e.g. 1483 created/deleted) by explicit management action, independently of 1484 the associated value of diffServMeterSpecific." 1485 REFERENCE 1486 "[MODEL] section 5.1.3" 1487 ::= { diffServTables 4 } 1489 diffServTBMeterEntry OBJECT-TYPE 1490 SYNTAX DiffServTBMeterEntry 1491 MAX-ACCESS not-accessible 1492 STATUS current 1493 DESCRIPTION 1494 "An entry that describes a single token-bucket meter, indexed by 1495 the same variables as a diffServMeterEntry." 1496 INDEX { ifIndex, diffServMeterIfDirection, 1497 diffServMeterId } 1498 ::= { diffServTBMeterTable 1 } 1500 DiffServTBMeterEntry ::= SEQUENCE { 1501 diffServTBMeterRate Unsigned32, 1502 diffServTBMeterBurstSize BurstSize 1503 diffServTBMeterStatus RowStatus 1504 } 1506 diffServTBMeterRate OBJECT-TYPE 1507 SYNTAX Unsigned32 1508 UNITS "kilobits per second" 1509 MAX-ACCESS read-create 1510 STATUS current 1511 DESCRIPTION 1512 "The token-bucket rate, in kilobits per second (kbps)." 1513 ::= { diffServTBMeterEntry 1 } 1515 diffServTBMeterBurstSize OBJECT-TYPE 1516 SYNTAX BurstSize 1517 UNITS "Bytes" 1518 MAX-ACCESS read-create 1519 STATUS current 1520 DESCRIPTION 1521 "The maximum number of bytes in a single transmission burst. The 1522 interval over which the burst is to be measured can be derived as 1523 diffServTBMeterBurstSize*8*1000/diffServTBMeterRate." 1524 ::= { diffServTBMeterEntry 2 } 1526 diffServTBMeterStatus OBJECT-TYPE 1527 SYNTAX RowStatus 1528 MAX-ACCESS read-create 1529 STATUS current 1530 DESCRIPTION 1531 "The RowStatus variable controls the activation, deactivation, or 1532 deletion of a meter. Any writable variable may be modified 1533 whether the row is active or notInService." 1534 ::= { diffServTBMeterEntry 3 } 1536 -- 1537 -- Actions 1538 -- 1540 -- 1541 -- The Action Table allows enumeration of the different 1542 -- types of actions to be applied to a traffic flow. 1543 -- 1545 diffServActionTable OBJECT-TYPE 1546 SYNTAX SEQUENCE OF DiffServActionEntry 1547 MAX-ACCESS not-accessible 1548 STATUS current 1549 DESCRIPTION 1550 "The Action Table enumerates actions that can be performed to a 1551 stream of traffic. Multiple actions can be concatenated. For 1552 example, after marking a stream of traffic exiting from a meter, 1553 a device can then perform a count action of the conforming or 1554 non-conforming traffic. 1556 Specific actions are indicated by diffServActionSpecific which 1557 points to another object which describes the action in further 1558 detail." 1559 REFERENCE 1560 "[MODEL] section 6." 1561 ::= { diffServTables 5 } 1563 diffServActionEntry OBJECT-TYPE 1564 SYNTAX DiffServActionEntry 1565 MAX-ACCESS not-accessible 1566 STATUS current 1567 DESCRIPTION 1568 "An entry in the action table describing the actions applied to 1569 traffic arriving at its input." 1570 INDEX { ifIndex, diffServActionIfDirection, 1571 diffServActionId } 1572 ::= { diffServActionTable 1 } 1574 DiffServActionEntry ::= SEQUENCE { 1575 diffServActionIfDirection IfDirection, 1576 diffServActionId Unsigned32, 1577 diffServActionNext RowPointer, 1578 diffServActionSpecific OBJECT IDENTIFIER, 1579 diffServActionStatus RowStatus 1580 } 1582 diffServActionIfDirection OBJECT-TYPE 1583 SYNTAX IfDirection 1584 MAX-ACCESS not-accessible 1585 STATUS current 1586 DESCRIPTION 1587 "Specifies the direction for which this action entry applies on 1588 this interface." 1589 ::= { diffServActionEntry 1 } 1591 diffServActionId OBJECT-TYPE 1592 SYNTAX Unsigned32 1593 MAX-ACCESS not-accessible 1594 STATUS current 1595 DESCRIPTION 1596 "This identifies the action entry. Managers should obtain new 1597 values for row creation in this table by reading 1598 diffServActionNextFree." 1599 ::= { diffServActionEntry 2 } 1601 diffServActionNext OBJECT-TYPE 1602 SYNTAX RowPointer 1603 MAX-ACCESS read-create 1604 STATUS current 1605 DESCRIPTION 1606 "The Next pointer indicates the next datapath element to handle 1607 the traffic. For example, a queue datapath element. 1609 The value zeroDotZero in this variable indicates no further 1610 DiffServ treatment is performed on this flow by the current 1611 interface for this interface direction. If the row pointed to 1612 does not exist, the action element is considered inactive." 1613 DEFVAL { zeroDotZero } 1614 ::= { diffServActionEntry 3 } 1616 diffServActionSpecific OBJECT-TYPE 1617 SYNTAX OBJECT IDENTIFIER 1618 MAX-ACCESS read-create 1619 STATUS current 1620 DESCRIPTION 1621 "A pointer to an object instance providing additional information 1622 for the type of action indicated by this action table entry. 1624 For the standard actions defined by this MIB module, this should 1625 point to one of the following: a diffServDscpMarkActEntry, a 1626 diffServCountActEntry, the diffServAbsoluteDropAction OID. For 1627 other actions, it may point to an object instance defined in some 1628 other MIB." 1629 ::= { diffServActionEntry 4 } 1631 diffServActionStatus OBJECT-TYPE 1632 SYNTAX RowStatus 1633 MAX-ACCESS read-create 1634 STATUS current 1635 DESCRIPTION 1636 "The RowStatus variable controls the activation, deactivation or 1637 deletion of an action element. Any writable variable may be 1638 modified whether the row is active or notInService." 1639 ::= { diffServActionEntry 5 } 1641 diffServActionNextFree OBJECT-TYPE 1642 SYNTAX Unsigned32 1643 MAX-ACCESS read-only 1644 STATUS current 1645 DESCRIPTION 1646 "This object yields a value when read that is currently-unused 1647 for a diffServActionId instance. If a configuring system 1648 attempts to create a new row in the diffServActionTable using 1649 this value, that operation will fail if the value has, in the 1650 meantime, been used to create another row that is currently 1651 valid." 1652 ::= { diffServObjects 4 } 1654 -- DSCP Mark Action Table 1655 -- 1656 -- Rows of this table are pointed to by diffServAction to 1657 -- provide detailed parameters specific to the DSCP 1658 -- Mark action. 1660 diffServDscpMarkActTable OBJECT-TYPE 1661 SYNTAX SEQUENCE OF DiffServDscpMarkActEntry 1662 MAX-ACCESS not-accessible 1663 STATUS current 1664 DESCRIPTION 1665 "This table enumerates specific DSCPs used for marking or 1666 remarking the DSCP field of IP packets. The entries of this 1667 table may be referenced by a diffServActionSpecific attribute 1668 that points to diffServDscpMarkActTable." 1669 REFERENCE 1670 "[MODEL] section 6.1" 1671 ::= { diffServTables 6 } 1673 diffServDscpMarkActEntry OBJECT-TYPE 1674 SYNTAX DiffServDscpMarkActEntry 1675 MAX-ACCESS not-accessible 1676 STATUS current 1677 DESCRIPTION 1678 "An entry in the DSCP mark action table that describes a single 1679 DSCP used for marking." 1680 INDEX { diffServDscpMarkActDscp } 1681 ::= { diffServDscpMarkActTable 1 } 1683 DiffServDscpMarkActEntry ::= SEQUENCE { 1684 diffServDscpMarkActDscp Dscp 1685 } 1687 diffServDscpMarkActDscp OBJECT-TYPE 1688 SYNTAX Dscp 1689 MAX-ACCESS read-only 1690 STATUS current 1691 DESCRIPTION 1692 "The DSCP that this Action uses for marking/remarking traffic. 1693 Note that a DSCP value of -1 is not permitted in this table. It 1694 is quite possible that the only packets subject to this Action 1695 are already marked with this DSCP. Note also that Diffserv may 1696 result in packet remarking both on ingress to a network and on 1697 egress from it and it is quite possible that ingress and egress 1698 would occur in the same router." 1699 ::= { diffServDscpMarkActEntry 1 } 1701 -- 1702 -- Count Action Table 1703 -- 1705 diffServCountActTable OBJECT-TYPE 1706 SYNTAX SEQUENCE OF DiffServCountActEntry 1707 MAX-ACCESS not-accessible 1708 STATUS current 1709 DESCRIPTION 1710 "This table contains counters for all the traffic passing through 1711 an action element." 1712 REFERENCE 1713 "[MODEL] section 6.5" 1714 ::= { diffServTables 7 } 1716 diffServCountActEntry OBJECT-TYPE 1717 SYNTAX DiffServCountActEntry 1718 MAX-ACCESS not-accessible 1719 STATUS current 1720 DESCRIPTION 1721 "An entry in the count action table that describes a single set 1722 of traffic counters. Entries in this table share indexing with 1723 those in the base diffServActionTable although they must be 1724 managed (e.g. created/deleted) by explicit management action, 1725 independently of the associated value of diffServActionSpecific." 1726 INDEX { ifIndex, diffServActionIfDirection, 1727 diffServActionId } 1728 ::= { diffServCountActTable 1 } 1730 DiffServCountActEntry ::= SEQUENCE { 1731 diffServCountActOctets Counter32, 1732 diffServCountActHCOctets Counter64, 1733 diffServCountActPkts Counter32, 1734 diffServCountActHCPkts Counter64, 1735 diffServCountActDiscontTime TimeStamp, 1736 diffServCountActStatus RowStatus 1737 } 1739 diffServCountActOctets OBJECT-TYPE 1740 SYNTAX Counter32 1741 MAX-ACCESS read-only 1742 STATUS current 1743 DESCRIPTION 1744 "The number of octets at the Action datapath element. On high 1745 speed devices, this object implements the least significant 32 1746 bits of diffServcountActHCOctets. 1748 Discontinuities in the value of this counter can occur at re- 1749 initialization of the management system and at other times as 1750 indicated by the value of diffServCountActDiscontTime for this 1751 entry." 1752 ::= { diffServCountActEntry 1 } 1754 diffServCountActHCOctets OBJECT-TYPE 1755 SYNTAX Counter64 1756 MAX-ACCESS read-only 1757 STATUS current 1758 DESCRIPTION 1759 "The number of octets at the Action datapath element. This 1760 object should be used on high speed interfaces. 1762 Discontinuities in the value of this counter can occur at re- 1763 initialization of the management system and at other times as 1764 indicated by the value of diffServCountActDiscontTime for this 1765 entry." 1766 ::= { diffServCountActEntry 2 } 1768 diffServCountActPkts OBJECT-TYPE 1769 SYNTAX Counter32 1770 MAX-ACCESS read-only 1771 STATUS current 1772 DESCRIPTION 1773 "The number of packets at the Action datapath element. On high 1774 speed devices, this object implements the least significant 32 1775 bits of diffServcountActHCPkts. 1777 Discontinuities in the value of this counter can occur at re- 1778 initialization of the management system and at other times as 1779 indicated by the value of diffServCountActDiscontTime for this 1780 entry." 1781 ::= { diffServCountActEntry 3 } 1783 diffServCountActHCPkts OBJECT-TYPE 1784 SYNTAX Counter64 1785 MAX-ACCESS read-only 1786 STATUS current 1787 DESCRIPTION 1788 "The number of packets at the Action datapath element. This 1789 object should be used on high speed interfaces. 1791 Discontinuities in the value of this counter can occur at re- 1792 initialization of the management system and at other times as 1793 indicated by the value of diffServCountActDiscontTime for this 1794 entry." 1795 ::= { diffServCountActEntry 4 } 1797 diffServCountActDiscontTime OBJECT-TYPE 1798 SYNTAX TimeStamp 1799 MAX-ACCESS read-only 1800 STATUS current 1801 DESCRIPTION 1802 "The value of sysUpTime on the most recent occasion at which any 1803 one or more of this entry's counters suffered a discontinuity. If 1804 no such discontinuities have occurred since the last re- 1805 initialization of the local management subsystem, then this 1806 object contains a zero value." 1807 ::= { diffServCountActEntry 5 } 1809 diffServCountActStatus OBJECT-TYPE 1810 SYNTAX RowStatus 1811 MAX-ACCESS read-create 1812 STATUS current 1813 DESCRIPTION 1814 "The RowStatus variable controls the activation, deactivation, or 1815 deletion of this entry. Any writable variable may be modified 1816 whether the row is active or notInService." 1818 ::= { diffServCountActEntry 6 } 1820 diffServAbsoluteDropAction OBJECT-IDENTITY 1821 STATUS current 1822 DESCRIPTION 1823 "This object identifier may be used as the value of a 1824 diffServActionSpecific pointer in order to indicate that all 1825 packets following this path are to be dropped unconditionally at 1826 this point. It is likely, but not required, that this action will 1827 be preceded by a counter action." 1828 ::= { diffServObjects 6 } 1830 -- 1831 -- Algorithmic Drop Table 1832 -- 1834 diffServAlgDropTable OBJECT-TYPE 1835 SYNTAX SEQUENCE OF DiffServAlgDropEntry 1836 MAX-ACCESS not-accessible 1837 STATUS current 1838 DESCRIPTION 1839 "The algorithmic drop table contains entries describing an 1840 element that drops packets according to some algorithm." 1841 REFERENCE 1842 "[MODEL] section 7.1.3" 1843 ::= { diffServTables 8 } 1845 diffServAlgDropEntry OBJECT-TYPE 1846 SYNTAX DiffServAlgDropEntry 1847 MAX-ACCESS not-accessible 1848 STATUS current 1849 DESCRIPTION 1850 "An entry describes a process that drops packets according to 1851 some algorithm. Further details of the algorithm type are to be 1852 found in diffServAlgDropType and may be pointed to by 1853 diffServAlgDropSpecific." 1854 INDEX { ifIndex, diffServAlgDropIfDirection, 1855 diffServAlgDropId } 1856 ::= { diffServAlgDropTable 1 } 1858 DiffServAlgDropEntry ::= SEQUENCE { 1859 diffServAlgDropIfDirection IfDirection, 1860 diffServAlgDropId Unsigned32, 1861 diffServAlgDropType INTEGER, 1862 diffServAlgDropNext RowPointer, 1863 diffServAlgDropQMeasure RowPointer, 1864 diffServAlgDropQThreshold Unsigned32, 1865 diffServAlgDropSpecific OBJECT IDENTIFIER, 1866 diffServAlgDropOctets Counter32, 1867 diffServAlgDropHCOctets Counter64, 1868 diffServAlgDropPkts Counter32, 1869 diffServAlgDropHCPkts Counter64, 1870 diffServAlgDropStatus RowStatus 1871 } 1873 diffServAlgDropIfDirection OBJECT-TYPE 1874 SYNTAX IfDirection 1875 MAX-ACCESS not-accessible 1876 STATUS current 1877 DESCRIPTION 1878 "Specifies the direction for which this algorithmic dropper entry 1879 applies on this interface." 1880 ::= { diffServAlgDropEntry 1 } 1882 diffServAlgDropId OBJECT-TYPE 1883 SYNTAX Unsigned32 1884 MAX-ACCESS not-accessible 1885 STATUS current 1886 DESCRIPTION 1887 "This identifies the drop action entry. Managers should obtain 1888 new values for row creation in this table by reading 1889 diffServAlgDropNextFree." 1890 ::= { diffServAlgDropEntry 2 } 1892 diffServAlgDropType OBJECT-TYPE 1893 SYNTAX INTEGER { other(1), tailDrop(2), 1894 headDrop(3), randomDrop(4) } 1895 MAX-ACCESS read-create 1896 STATUS current 1897 DESCRIPTION 1898 "The type of algorithm used by this dropper. A value of 1899 tailDrop(2) or headDrop(3) represents an algorithm that is 1900 completely specified by this MIB. A value of other(1) requires 1901 further specification in some other MIB module. 1903 The tailDrop(2) algorithm is described as follows: 1904 diffServAlgDropQThreshold represents the depth of the queue 1905 diffServAlgDropQMeasure at which all newly arriving packets will 1906 be dropped. 1908 The headDrop(3) algorithm is described as follows: if a packet 1909 arrives when the current depth of the queue 1910 diffServAlgDropQMeasure is at diffServAlgDropQThreshold, packets 1911 currently at the head of the queue are dropped to make room for 1912 the new packet to be enqueued at the tail of the queue. 1914 The randomDrop(4) algorithm is described as follows: on packet 1915 arrival, an algorithm is executed which may randomly drop the 1916 packet, or drop other packet(s) from the queue in its place. The 1917 specifics of the algorithm may be proprietary. For this 1918 algorithm, an associated diffServRandomDropEntry is indicated by 1919 pointing diffServAlgDropSpecific at the diffServRandomDropTable. 1920 The relevant entry in that table is selected by the common 1921 indexing of the two tables. For this algorithm, 1922 diffServAlgQThreshold is understood to be the absolute maximum 1923 size of the queue and additional parameters are described in 1924 diffServRandomDropTable." 1925 ::= { diffServAlgDropEntry 3 } 1927 diffServAlgDropNext OBJECT-TYPE 1928 SYNTAX RowPointer 1929 MAX-ACCESS read-create 1930 STATUS current 1931 DESCRIPTION 1932 "The Next pointer indicates the next datapath element to handle 1933 the traffic e.g. a queue datapath element. 1935 The value zeroDotZero in this variable indicates no further 1936 DiffServ treatment is performed on this flow by the current 1937 interface for this interface direction. If the row pointed to 1938 does not exist, the algorithmic dropper element is considered 1939 inactive." 1940 ::= { diffServAlgDropEntry 4 } 1942 diffServAlgDropQMeasure OBJECT-TYPE 1943 SYNTAX RowPointer 1944 MAX-ACCESS read-create 1945 STATUS current 1946 DESCRIPTION 1947 "Points to an entry in the diffServQueueTable to indicate the 1948 queue that a drop algorithm is to monitor when deciding whether 1949 to drop a packet. If the row pointed to does not exist, the 1950 algorithmic dropper element is considered inactive." 1951 ::= { diffServAlgDropEntry 5 } 1953 diffServAlgDropQThreshold OBJECT-TYPE 1954 SYNTAX Unsigned32 1955 UNITS "Bytes" 1956 MAX-ACCESS read-create 1957 STATUS current 1958 DESCRIPTION 1959 "A threshold on the depth in bytes of the queue being measured at 1960 which a trigger is generated to the dropping algorithm. 1962 For the tailDrop(2) or headDrop(3) algorithms, this represents 1963 the depth of the queue diffServAlgDropQMeasure at which the drop 1964 action will take place. Other algorithms will need to define 1965 their own semantics for this threshold." 1966 ::= { diffServAlgDropEntry 6 } 1968 diffServAlgDropSpecific OBJECT-TYPE 1969 SYNTAX OBJECT IDENTIFIER 1970 MAX-ACCESS read-create 1971 STATUS current 1972 DESCRIPTION 1973 "Points to a table (not an entry in the table) defined elsewhere 1974 that provides further detail regarding a drop algorithm. Entries 1975 in such a table are indexed by the same variables as this 1976 diffServAlgDropEntry but note that those entries must be managed 1977 independently of those in this table. 1979 Entries with diffServAlgDropType equal to other(1) may have this 1980 point to a table defined in another MIB module. Entries with 1981 diffServAlgDropType equal to randomDrop(4) must have this point 1982 to diffServRandomDropTable. 1984 For all other algorithms, this should take the value 1985 zeroDotzero." 1986 ::= { diffServAlgDropEntry 7 } 1988 diffServAlgDropOctets OBJECT-TYPE 1989 SYNTAX Counter32 1990 MAX-ACCESS read-only 1991 STATUS current 1992 DESCRIPTION 1993 "The number of octets that have been dropped by this drop 1994 process. On high speed devices, this object implements the least 1995 significant 32 bits of diffServAlgDropHCOctets. 1997 Discontinuities in the value of this counter can occur at re- 1998 initialization of the management system and at other times as 1999 indicated by the value of ifCounterDiscontinuityTime appropriate 2000 to this interface." 2001 ::= { diffServAlgDropEntry 8 } 2003 diffServAlgDropHCOctets OBJECT-TYPE 2004 SYNTAX Counter64 2005 MAX-ACCESS read-only 2006 STATUS current 2007 DESCRIPTION 2008 "The number of octets that have been dropped by this drop 2009 process. This object should be used on high speed interfaces. 2011 Discontinuities in the value of this counter can occur at re- 2012 initialization of the management system and at other times as 2013 indicated by the value of ifCounterDiscontinuityTime appropriate 2014 to this interface." 2015 ::= { diffServAlgDropEntry 9 } 2017 diffServAlgDropPkts OBJECT-TYPE 2018 SYNTAX Counter32 2019 MAX-ACCESS read-only 2020 STATUS current 2021 DESCRIPTION 2022 "The number of packets that have been dropped by this drop 2023 process. On high speed devices, this object implements the least 2024 significant 32 bits of diffServAlgDropHCPkts. 2026 Discontinuities in the value of this counter can occur at re- 2027 initialization of the management system and at other times as 2028 indicated by the value of ifCounterDiscontinuityTime appropriate 2029 to this interface." 2030 ::= { diffServAlgDropEntry 10 } 2032 diffServAlgDropHCPkts OBJECT-TYPE 2033 SYNTAX Counter64 2034 MAX-ACCESS read-only 2035 STATUS current 2036 DESCRIPTION 2037 "The number of packets that have been dropped by this drop 2038 process. This object should be used on high speed interfaces. 2040 Discontinuities in the value of this counter can occur at re- 2041 initialization of the management system and at other times as 2042 indicated by the value of ifCounterDiscontinuityTime appropriate 2043 to this interface." 2044 ::= { diffServAlgDropEntry 11 } 2046 diffServAlgDropStatus OBJECT-TYPE 2047 SYNTAX RowStatus 2048 MAX-ACCESS read-create 2049 STATUS current 2050 DESCRIPTION 2051 "The RowStatus variable controls the activation, deactivation, or 2052 deletion of this entry. Any writable variable may be modified 2053 whether the row is active or notInService." 2054 ::= { diffServAlgDropEntry 12 } 2056 diffServAlgDropNextFree OBJECT-TYPE 2057 SYNTAX Unsigned32 2058 MAX-ACCESS read-only 2059 STATUS current 2060 DESCRIPTION 2061 "This object yields a value when read that is currently-unused 2062 for a diffServAlgDropId instance. If a configuring system 2063 attempts to create a new row in the diffServAlgDropTable using 2064 this value, that operation will fail if the value has, in the 2065 meantime, been used to create another row that is currently 2066 valid." 2067 ::= { diffServObjects 7 } 2069 diffServRandomDropTable OBJECT-TYPE 2070 SYNTAX SEQUENCE OF DiffServRandomDropEntry 2071 MAX-ACCESS not-accessible 2072 STATUS current 2073 DESCRIPTION 2074 "The random drop table augments the algorithmic drop table. It 2075 contains entries describing a process that drops packets 2076 randomly. This table is intended to be pointed to by the 2077 associated diffServAlgDropSpecific in such cases." 2078 REFERENCE 2079 "[MODEL] section 7.1.3" 2080 ::= { diffServTables 9 } 2082 diffServRandomDropEntry OBJECT-TYPE 2083 SYNTAX DiffServRandomDropEntry 2084 MAX-ACCESS not-accessible 2085 STATUS current 2086 DESCRIPTION 2087 "An entry describes a process that drops packets according to a 2088 random algorithm. Entries in this table share indexing with a 2089 parent diffServAlgDropEntry although they must be managed (e.g. 2090 created/deleted) by explicit management action, independently of 2091 the associated value of diffServAlgDropSpecific." 2092 INDEX { ifIndex, diffServAlgDropIfDirection, 2093 diffServAlgDropId } 2094 ::= { diffServRandomDropTable 1 } 2096 DiffServRandomDropEntry ::= SEQUENCE { 2097 diffServRandomDropMinThreshBytes Unsigned32, 2098 diffServRandomDropMinThreshPkts Unsigned32, 2099 diffServRandomDropMaxThreshBytes Unsigned32, 2100 diffServRandomDropMaxThreshPkts Unsigned32, 2101 diffServRandomDropInvWeight Unsigned32, 2102 diffServRandomDropProbMax Unsigned32, 2103 diffServRandomDropStatus RowStatus 2104 } 2106 diffServRandomDropMinThreshBytes OBJECT-TYPE 2107 SYNTAX Unsigned32 2108 UNITS "bytes" 2109 MAX-ACCESS read-create 2110 STATUS current 2111 DESCRIPTION 2112 "The average queue depth in bytes, beyond which traffic has a 2113 non-zero probability of being dropped. Changes in this variable 2114 may or may not be reflected in the reported value of 2115 diffServRandomDropMinThreshPkts." 2116 ::= { diffServRandomDropEntry 1 } 2118 diffServRandomDropMinThreshPkts OBJECT-TYPE 2119 SYNTAX Unsigned32 2120 UNITS "packets" 2121 MAX-ACCESS read-create 2122 STATUS current 2123 DESCRIPTION 2124 "The average queue depth in packets, beyond which traffic has a 2125 non-zero probability of being dropped. Changes in this variable 2126 may or may not be reflected in the reported value of 2127 diffServRandomDropMinThreshBytes." 2128 ::= { diffServRandomDropEntry 2 } 2130 diffServRandomDropMaxThreshBytes OBJECT-TYPE 2131 SYNTAX Unsigned32 2132 UNITS "bytes" 2133 MAX-ACCESS read-create 2134 STATUS current 2135 DESCRIPTION 2136 "The average queue depth beyond which traffic has a probability 2137 indicated by diffServRandomDropInvMaxProb of being dropped or 2138 marked. Note that this differs from the physical queue limit, 2139 which is stored in diffServAlgDropQThreshold. Changes in this 2140 variable may or may not be reflected in the reported value of 2141 diffServRandomDropMaxThreshPkts." 2142 ::= { diffServRandomDropEntry 3 } 2144 diffServRandomDropMaxThreshPkts OBJECT-TYPE 2145 SYNTAX Unsigned32 2146 UNITS "packets" 2147 MAX-ACCESS read-create 2148 STATUS current 2149 DESCRIPTION 2150 "The average queue depth beyond which traffic has a probability 2151 indicated by diffServRandomDropInvMaxProb of being dropped or 2152 marked. Note that this differs from the physical queue limit, 2153 which is stored in diffServAlgDropQThreshold. Changes in this 2154 variable may or may not be reflected in the reported value of 2155 diffServRandomDropMaxThreshBytes." 2156 ::= { diffServRandomDropEntry 4 } 2158 diffServRandomDropInvWeight OBJECT-TYPE 2159 SYNTAX Unsigned32 2160 MAX-ACCESS read-create 2161 STATUS current 2162 DESCRIPTION 2163 "The weighting of past history in affecting the calculation of 2164 the current queue average. The moving average of the queue depth 2165 uses the inverse of this value as the factor for the new queue 2166 depth, and one minus that inverse as the factor for the 2167 historical average. 2169 Implementations may choose to limit the acceptable set of values 2170 to a specified set, such as powers of 2." 2171 ::= { diffServRandomDropEntry 5 } 2173 diffServRandomDropProbMax OBJECT-TYPE 2174 SYNTAX Unsigned32 2175 MAX-ACCESS read-create 2176 STATUS current 2177 DESCRIPTION 2178 "The worst case random drop probability, expressed in drops per 2179 thousand packets. 2181 For example, if every packet may be dropped in the worst case 2182 (100%), this has the value 1000. Alternatively, if in the worst 2183 case one percent (1%) of traffic may be dropped, it has the value 2184 10." 2185 ::= { diffServRandomDropEntry 6 } 2187 diffServRandomDropStatus OBJECT-TYPE 2188 SYNTAX RowStatus 2189 MAX-ACCESS read-create 2190 STATUS current 2191 DESCRIPTION 2192 "The RowStatus variable controls the activation, deactivation, or 2193 deletion of this entry. Any writable variable may be modified 2194 whether the row is active or notInService." 2195 ::= { diffServRandomDropEntry 7 } 2197 -- 2198 -- Queue Table 2199 -- 2201 diffServQTable OBJECT-TYPE 2202 SYNTAX SEQUENCE OF DiffServQEntry 2203 MAX-ACCESS not-accessible 2204 STATUS current 2205 DESCRIPTION 2206 "The Queue Table enumerates the individual queues on an 2207 interface." 2208 ::= { diffServTables 10 } 2210 diffServQEntry OBJECT-TYPE 2211 SYNTAX DiffServQEntry 2212 MAX-ACCESS not-accessible 2213 STATUS current 2214 DESCRIPTION 2215 "An entry in the Queue Table describes a single queue in one 2216 direction on an interface." 2217 INDEX { ifIndex, diffServQIfDirection, diffServQId } 2218 ::= { diffServQTable 1 } 2220 DiffServQEntry ::= SEQUENCE { 2221 diffServQIfDirection IfDirection, 2222 diffServQId Unsigned32, 2223 diffServQNext RowPointer, 2224 diffServQPriority Unsigned32, 2225 diffServQMinRateAbs Unsigned32, 2226 diffServQMinRateRel Unsigned32, 2227 diffServQMaxRateAbs Unsigned32, 2228 diffServQMaxRateRel Unsigned32, 2229 diffServQStatus RowStatus 2230 } 2232 diffServQIfDirection OBJECT-TYPE 2233 SYNTAX IfDirection 2234 MAX-ACCESS not-accessible 2235 STATUS current 2236 DESCRIPTION 2237 "Specifies the direction for which this queue entry applies on 2238 this interface." 2239 ::= { diffServQEntry 1 } 2241 diffServQId OBJECT-TYPE 2242 SYNTAX Unsigned32 2243 MAX-ACCESS not-accessible 2244 STATUS current 2245 DESCRIPTION 2246 "The Queue Id enumerates the Queue entry. Managers should obtain 2247 new values for row creation in this table by reading 2248 diffServQNextFree." 2249 ::= { diffServQEntry 2 } 2251 diffServQNext OBJECT-TYPE 2252 SYNTAX RowPointer 2253 MAX-ACCESS read-create 2254 STATUS current 2255 DESCRIPTION 2256 "The Next pointer indicates the next datapath element to handle 2257 the traffic e.g. a scheduler datapath element. If the row 2258 pointed to does not exist, the queue element is considered 2259 inactive." 2260 ::= { diffServQEntry 3 } 2262 diffServQPriority OBJECT-TYPE 2263 SYNTAX Unsigned32 2264 MAX-ACCESS read-create 2265 STATUS current 2266 DESCRIPTION 2267 "The priority of this queue, to be used as a parameter to the 2268 next scheduler element downstream from this one." 2269 ::= { diffServQEntry 4 } 2271 diffServQMinRateAbs OBJECT-TYPE 2272 SYNTAX Unsigned32 2273 UNITS "kilobits per second" 2274 MAX-ACCESS read-create 2275 STATUS current 2276 DESCRIPTION 2277 "The minimum absolute rate, in kilobits/sec, that a downstream 2278 scheduler element should allocate to this queue. If the value is 2279 zero, then there is effectively no minimum rate guarantee. If 2280 the value is non-zero, the scheduler will assure the servicing of 2281 this queue to at least this rate. 2283 Note that this attribute's value is coupled to that of 2284 diffServQMinRateRel: changes to one will affect the value of the 2285 other. They are linked by the following equation: 2287 diffServQMinRateRel = diffServQMinRateAbs * 10,000,000/ifSpeed 2289 or, if appropriate: 2291 diffServQMinRateRel = diffServQMinRateAbs * 10 / ifHighSpeed" 2292 REFERENCE 2293 "ifSpeed, ifHighSpeed from [IFMIB]" 2294 ::= { diffServQEntry 5 } 2296 diffServQMinRateRel OBJECT-TYPE 2297 SYNTAX Unsigned32 2298 MAX-ACCESS read-create 2299 STATUS current 2300 DESCRIPTION 2301 "The minimum rate that a downstream scheduler element should 2302 allocate to this queue, relative to the maximum rate of the 2303 interface as reported by ifSpeed or ifHighSpeed, in units of 2304 1/10,000 of 1. If the value is zero, then there is effectively 2305 no minimum rate guarantee. If the value is non-zero, the 2306 scheduler will assure the servicing of this queue to at least 2307 this rate. 2309 Note that this attribute's value is coupled to that of 2310 diffServQMinRateAbs: changes to one will affect the value of the 2311 other. They are linked by the following equation: 2313 diffServQMinRateAbs = ifSpeed * diffServQMinRateRel/10,000,000 2315 or, if appropriate: 2317 diffServQMinRateAbs = ifHighSpeed * diffServQMinRateRel / 10" 2318 REFERENCE 2319 "ifSpeed, ifHighSpeed from [IFMIB]" 2320 ::= { diffServQEntry 6 } 2322 diffServQMaxRateAbs OBJECT-TYPE 2323 SYNTAX Unsigned32 2324 UNITS "kilobits per second" 2325 MAX-ACCESS read-create 2326 STATUS current 2327 DESCRIPTION 2328 "The maximum rate in kilobits/sec that a downstream scheduler 2329 element should allocate to this queue. If the value is zero, then 2330 there is effectively no maximum rate limit and that the scheduler 2331 should attempt to be work-conserving for this queue. If the 2332 value is non-zero, the scheduler will limit the servicing of this 2333 queue to, at most, this rate in a non-work-conserving manner. 2335 Note that this attribute's value is coupled to that of 2336 diffServQMaxRateRel: changes to one will affect the value of the 2337 other. They are linked by the following equation: 2339 diffServQMaxRateRel = diffServQMaxRateAbs * 10,000,000/ifSpeed 2341 or, if appropriate: 2343 diffServQMaxRateRel = diffServQMaxRateAbs * 10 / ifHighSpeed" 2344 REFERENCE 2345 "ifSpeed, ifHighSpeed from [IFMIB]" 2346 ::= { diffServQEntry 7 } 2348 diffServQMaxRateRel OBJECT-TYPE 2349 SYNTAX Unsigned32 2350 MAX-ACCESS read-create 2351 STATUS current 2352 DESCRIPTION 2353 "The maximum rate that a downstream scheduler element should 2354 allocate to this queue, relative to the maximum rate of the 2355 interface as reported by ifSpeed or ifHighSpeed, in units of 2356 1/10,000 of 1. If the value is zero, then there is effectively 2357 no maximum rate limit and the scheduler should attempt to be 2358 work-conserving for this queue. If the value is non-zero, the 2359 scheduler will limit the servicing of this queue to, at most, 2360 this rate in a non-work-conserving manner. 2362 Note that this attribute's value is coupled to that of 2363 diffServQMaxRateAbs: changes to one will affect the value of the 2364 other. They are linked by the following equation: 2366 diffServQMaxRateAbs = ifSpeed * diffServQMaxRateRel/10,000,000 2368 or, if appropriate: 2370 diffServQMaxRateAbs = ifHighSpeed * diffServQMaxRateRel / 10" 2371 REFERENCE 2372 "ifSpeed, ifHighSpeed from [IFMIB]" 2373 ::= { diffServQEntry 8 } 2375 diffServQStatus OBJECT-TYPE 2376 SYNTAX RowStatus 2377 MAX-ACCESS read-create 2378 STATUS current 2379 DESCRIPTION 2380 "The RowStatus variable controls the activation, deactivation, or 2381 deletion of a queue. Any writable variable may be modified 2382 whether the row is active or notInService." 2383 ::= { diffServQEntry 9 } 2385 diffServQNextFree OBJECT-TYPE 2386 SYNTAX Unsigned32 2387 MAX-ACCESS read-only 2388 STATUS current 2389 DESCRIPTION 2390 "This object yields a value when read that is currently-unused 2391 for a diffServQId instance. If a configuring system attempts to 2392 create a new row in the diffServQTable using this value, that 2393 operation will fail if the value has, in the meantime, been used 2394 to create another row that is currently valid." 2395 ::= { diffServObjects 8 } 2397 -- 2398 -- Scheduler Table 2399 -- 2400 -- The Scheduler Table is used for representing packet schedulers: 2401 -- it provides flexibility for multiple scheduling algorithms, each 2402 -- servicing multiple queues, to be used on the same logical/physical 2403 -- interface. 2405 diffServSchedulerTable OBJECT-TYPE 2406 SYNTAX SEQUENCE OF DiffServSchedulerEntry 2407 MAX-ACCESS not-accessible 2408 STATUS current 2409 DESCRIPTION 2410 "The Scheduler Table enumerates packet schedulers. Multiple 2411 scheduling algorithms can be used on a given interface, with each 2412 algorithm described by one diffServSchedulerEntry." 2413 REFERENCE 2414 "[MODEL] section 7.1.2" 2415 ::= { diffServTables 11 } 2417 diffServSchedulerEntry OBJECT-TYPE 2418 SYNTAX DiffServSchedulerEntry 2419 MAX-ACCESS not-accessible 2420 STATUS current 2421 DESCRIPTION 2422 "An entry in the Scheduler Table describing a single instance of 2423 a scheduling algorithm." 2424 INDEX { ifIndex, diffServSchedulerIfDirection, 2425 diffServSchedulerId } 2426 ::= { diffServSchedulerTable 1 } 2428 DiffServSchedulerEntry ::= SEQUENCE { 2429 diffServSchedulerIfDirection IfDirection, 2430 diffServSchedulerId Unsigned32, 2431 diffServSchedulerMethod INTEGER, 2432 diffServSchedulerNext RowPointer, 2433 diffServSchedulerStatus RowStatus 2434 } 2436 diffServSchedulerIfDirection OBJECT-TYPE 2437 SYNTAX IfDirection 2438 MAX-ACCESS not-accessible 2439 STATUS current 2440 DESCRIPTION 2441 "Specifies the direction for which this scheduler entry applies 2442 on this interface." 2443 ::= { diffServSchedulerEntry 1 } 2445 diffServSchedulerId OBJECT-TYPE 2446 SYNTAX Unsigned32 2447 MAX-ACCESS not-accessible 2448 STATUS current 2449 DESCRIPTION 2450 "This identifies the scheduler entry. Managers should obtain new 2451 values for row creation in this table by reading 2452 diffServSchedulerNextFree." 2453 ::= { diffServSchedulerEntry 2 } 2455 diffServSchedulerMethod OBJECT-TYPE 2456 SYNTAX INTEGER { 2457 other(1), -- not listed here 2458 priorityq(2), -- Priority Queueing 2459 wrr(3) -- Weighed Round Robin 2460 } 2461 MAX-ACCESS read-create 2462 STATUS current 2463 DESCRIPTION 2464 "The scheduling algorithm used by this Scheduler. 2466 A value of priorityq(2) is used to indicate strict priority 2467 queueing: only the diffServQPriority attributes of the queues 2468 feeding this scheduler are used when determining the next packet 2469 to schedule. 2471 A value of wrr(3) indicates weighted round-robin scheduling. 2472 Packets are scheduled from each of the queues feeding this 2473 scheduler according to all of the parameters of the diffServQueue 2474 entry." 2475 REFERENCE 2476 "[MODEL] section 7.1.2" 2477 ::= { diffServSchedulerEntry 3 } 2479 diffServSchedulerNext OBJECT-TYPE 2480 SYNTAX RowPointer 2481 MAX-ACCESS read-create 2482 STATUS current 2483 DESCRIPTION 2484 "Selects the next data path component, which can be another 2485 scheduler or other TC elements. One usage of multiple scheduler 2486 elements in series is for Class Base Queueing (CBQ). 2488 The value zeroDotZero in this variable indicates no further 2489 DiffServ treatment is performed on this flow by the current 2490 interface for this interface direction. For example, for an 2491 inbound interface the value zeroDotZero indicates that the packet 2492 flow has now completed inbound DiffServ treatment and should be 2493 forwarded on to the appropriate outbound interface. If the row 2494 pointed to does not exist, the scheduler element is considered 2495 inactive." 2496 DEFVAL { zeroDotZero } 2497 ::= { diffServSchedulerEntry 4 } 2499 diffServSchedulerStatus OBJECT-TYPE 2500 SYNTAX RowStatus 2501 MAX-ACCESS read-create 2502 STATUS current 2503 DESCRIPTION 2504 "The RowStatus variable controls the activation, deactivation, or 2505 deletion of a queue. Any writable variable may be modified 2506 whether the row is active or notInService." 2507 ::= { diffServSchedulerEntry 5 } 2509 diffServSchedulerNextFree OBJECT-TYPE 2510 SYNTAX Unsigned32 2511 MAX-ACCESS read-only 2512 STATUS current 2513 DESCRIPTION 2514 "This object yields a value when read that is currently-unused 2515 for a diffServSchedulerId instance. If a configuring system 2516 attempts to create a new row in the diffServSchedulerTable using 2517 this value, that operation will fail if the value has, in the 2518 meantime, been used to create another row that is currently 2519 valid." 2520 ::= { diffServObjects 9 } 2522 -- 2523 -- MIB Compliance statements. 2524 -- 2526 diffServMIBCompliances OBJECT IDENTIFIER ::= { diffServMIBConformance 1 } 2527 diffServMIBGroups OBJECT IDENTIFIER ::= { diffServMIBConformance 2 } 2529 diffServMIBCompliance MODULE-COMPLIANCE 2530 STATUS current 2531 DESCRIPTION 2532 "This MIB may be implemented as a read-only or as a read-create 2533 MIB. As a result, it may be used for monitoring or for 2534 configuration." 2535 MODULE -- This Module 2536 MANDATORY-GROUPS { 2537 diffServMIBClassifierGroup, diffServMIBSixTupleClfrGroup, 2538 diffServMIBActionGroup, diffServMIBAlgDropGroup, 2539 diffServMIBQueueGroup, diffServMIBSchedulerGroup } 2541 -- The groups: 2542 -- diffServMIBCounterGroup 2543 -- diffServMIBHCCounterGroup 2544 -- diffServMIBVHCCounterGroup 2545 -- 2546 -- are mutually exclusive; at most one of these groups is implemented 2547 -- for a particular interface. When any of these groups is implemented 2548 -- for a particular interface, then ifCounterDiscontinuityGroup from 2549 -- [IFMIB] must also be implemented for that interface. 2551 -- note that the diffServMIBStaticGroup is 2552 -- mandatory for implementations that implement a 2553 -- read-write or read-create mode. 2555 GROUP diffServMIBCounterGroup 2556 DESCRIPTION 2557 "This group is mandatory for table objects indexed by ifIndex for 2558 which the value of the corresponding instance of ifSpeed is less 2559 than or equal to 20,000,000 bits/second." 2561 GROUP diffServMIBHCCounterGroup 2562 DESCRIPTION 2563 "This group is mandatory for table objects indexed by ifIndex for 2564 which the value of the corresponding instance of ifSpeed is 2565 greater than 20,000,000 bits/second." 2567 GROUP diffServMIBVHCCounterGroup 2568 DESCRIPTION 2569 "This group is mandatory for table objects indexed by ifIndex for 2570 which the value of the corresponding instance of ifSpeed is 2571 greater than 650,000,000 bits/second." 2573 GROUP diffServMIBMeterGroup 2574 DESCRIPTION 2575 "This group is mandatory for devices that implement metering 2576 functions." 2578 GROUP diffServMIBTokenBucketMeterGroup 2579 DESCRIPTION 2580 "This group is mandatory for devices that implement token-bucket 2581 metering functions." 2583 GROUP diffServMIBDscpMarkActionGroup 2584 DESCRIPTION 2585 "This group is mandatory for devices that implement DSCP-Marking 2586 functions." 2588 GROUP diffServMIBRandomDropGroup 2589 DESCRIPTION 2590 "This group is mandatory for devices that implement Random Drop 2591 functions." 2593 GROUP diffServMIBStaticGroup 2594 DESCRIPTION 2595 "This group is mandatory for devices that allow creation of rows 2596 in any of the writable tables of this MIB." 2598 OBJECT diffServClassifierFilter 2599 MIN-ACCESS read-only 2600 DESCRIPTION 2601 "Write access is not required." 2603 OBJECT diffServClassifierNext 2604 MIN-ACCESS read-only 2605 DESCRIPTION 2606 "Write access is not required." 2608 OBJECT diffServClassifierPrecedence 2609 MIN-ACCESS read-only 2610 DESCRIPTION 2611 "Write access is not required." 2613 OBJECT diffServClassifierStatus 2614 MIN-ACCESS read-only 2615 DESCRIPTION 2616 "Write access is not required." 2618 OBJECT diffServSixTupleClfrDstAddrType 2619 MIN-ACCESS read-only 2620 DESCRIPTION 2621 "Write access is not required." 2623 OBJECT diffServSixTupleClfrDstAddr 2624 MIN-ACCESS read-only 2625 DESCRIPTION 2626 "Write access is not required." 2628 OBJECT diffServSixTupleClfrDstAddrMask 2629 MIN-ACCESS read-only 2630 DESCRIPTION 2631 "Write access is not required." 2633 OBJECT diffServSixTupleClfrSrcAddrType 2634 MIN-ACCESS read-only 2635 DESCRIPTION 2636 "Write access is not required." 2638 OBJECT diffServSixTupleClfrSrcAddr 2639 MIN-ACCESS read-only 2640 DESCRIPTION 2641 "Write access is not required." 2643 OBJECT diffServSixTupleClfrSrcAddrMask 2644 MIN-ACCESS read-only 2645 DESCRIPTION 2646 "Write access is not required." 2648 OBJECT diffServSixTupleClfrDscp 2649 MIN-ACCESS read-only 2650 DESCRIPTION 2651 "Write access is not required." 2653 OBJECT diffServSixTupleClfrProtocol 2654 MIN-ACCESS read-only 2655 DESCRIPTION 2656 "Write access is not required." 2658 OBJECT diffServSixTupleClfrSrcL4PortMin 2659 MIN-ACCESS read-only 2660 DESCRIPTION 2661 "Write access is not required." 2663 OBJECT diffServSixTupleClfrSrcL4PortMax 2664 MIN-ACCESS read-only 2665 DESCRIPTION 2666 "Write access is not required." 2668 OBJECT diffServSixTupleClfrDstL4PortMin 2669 MIN-ACCESS read-only 2670 DESCRIPTION 2671 "Write access is not required." 2673 OBJECT diffServSixTupleClfrDstL4PortMax 2674 MIN-ACCESS read-only 2675 DESCRIPTION 2676 "Write access is not required." 2678 OBJECT diffServSixTupleClfrStatus 2679 MIN-ACCESS read-only 2680 DESCRIPTION 2681 "Write access is not required." 2683 OBJECT diffServMeterSucceedNext 2684 MIN-ACCESS read-only 2685 DESCRIPTION 2686 "Write access is not required." 2688 OBJECT diffServMeterFailNext 2689 MIN-ACCESS read-only 2690 DESCRIPTION 2691 "Write access is not required." 2693 OBJECT diffServMeterSpecific 2694 MIN-ACCESS read-only 2695 DESCRIPTION 2696 "Write access is not required." 2698 OBJECT diffServMeterStatus 2699 MIN-ACCESS read-only 2700 DESCRIPTION 2701 "Write access is not required." 2703 OBJECT diffServTBMeterRate 2704 MIN-ACCESS read-only 2705 DESCRIPTION 2706 "Write access is not required." 2708 OBJECT diffServTBMeterBurstSize 2709 MIN-ACCESS read-only 2710 DESCRIPTION 2711 "Write access is not required." 2713 OBJECT diffServTBMeterStatus 2714 MIN-ACCESS read-only 2715 DESCRIPTION 2716 "Write access is not required." 2718 OBJECT diffServActionNext 2719 MIN-ACCESS read-only 2720 DESCRIPTION 2721 "Write access is not required." 2723 OBJECT diffServActionSpecific 2724 MIN-ACCESS read-only 2725 DESCRIPTION 2726 "Write access is not required." 2728 OBJECT diffServActionStatus 2729 MIN-ACCESS read-only 2730 DESCRIPTION 2731 "Write access is not required." 2733 OBJECT diffServCountActStatus 2734 MIN-ACCESS read-only 2735 DESCRIPTION 2736 "Write access is not required." 2738 OBJECT diffServAlgDropType 2739 MIN-ACCESS read-only 2740 DESCRIPTION 2741 "Write access is not required." 2743 OBJECT diffServAlgDropNext 2744 MIN-ACCESS read-only 2745 DESCRIPTION 2746 "Write access is not required." 2748 OBJECT diffServAlgDropQMeasure 2749 MIN-ACCESS read-only 2750 DESCRIPTION 2751 "Write access is not required." 2753 OBJECT diffServAlgDropQThreshold 2754 MIN-ACCESS read-only 2755 DESCRIPTION 2756 "Write access is not required." 2758 OBJECT diffServAlgDropSpecific 2759 MIN-ACCESS read-only 2760 DESCRIPTION 2761 "Write access is not required." 2763 OBJECT diffServAlgDropStatus 2764 MIN-ACCESS read-only 2765 DESCRIPTION 2766 "Write access is not required." 2768 OBJECT diffServRandomDropMinThreshBytes 2769 MIN-ACCESS read-only 2770 DESCRIPTION 2771 "Write access is not required." 2773 OBJECT diffServRandomDropMaxThreshPkts 2774 MIN-ACCESS read-only 2775 DESCRIPTION 2776 "Write access is not required." 2778 OBJECT diffServRandomDropMinThreshBytes 2779 MIN-ACCESS read-only 2780 DESCRIPTION 2781 "Write access is not required." 2783 OBJECT diffServRandomDropMaxThreshPkts 2784 MIN-ACCESS read-only 2785 DESCRIPTION 2786 "Write access is not required." 2788 OBJECT diffServRandomDropInvWeight 2789 MIN-ACCESS read-only 2790 DESCRIPTION 2791 "Write access is not required." 2793 OBJECT diffServRandomDropProbMax 2794 MIN-ACCESS read-only 2795 DESCRIPTION 2796 "Write access is not required." 2798 OBJECT diffServRandomDropStatus 2799 MIN-ACCESS read-only 2800 DESCRIPTION 2801 "Write access is not required." 2803 OBJECT diffServQNext 2804 MIN-ACCESS read-only 2805 DESCRIPTION 2806 "Write access is not required." 2808 OBJECT diffServQPriority 2809 MIN-ACCESS read-only 2810 DESCRIPTION 2811 "Write access is not required." 2813 OBJECT diffServQMinRateAbs 2814 MIN-ACCESS read-only 2815 DESCRIPTION 2816 "Write access is not required." 2818 OBJECT diffServQMinRateRel 2819 MIN-ACCESS read-only 2820 DESCRIPTION 2821 "Write access is not required." 2823 OBJECT diffServQMaxRateAbs 2824 MIN-ACCESS read-only 2825 DESCRIPTION 2826 "Write access is not required." 2828 OBJECT diffServQMaxRateRel 2829 MIN-ACCESS read-only 2830 DESCRIPTION 2831 "Write access is not required." 2833 OBJECT diffServQueueStatus 2834 MIN-ACCESS read-only 2835 DESCRIPTION 2836 "Write access is not required." 2838 OBJECT diffServSchedulerMethod 2839 MIN-ACCESS read-only 2840 DESCRIPTION 2841 "Write access is not required." 2843 OBJECT diffServSchedulerNext 2844 MIN-ACCESS read-only 2845 DESCRIPTION 2846 "Write access is not required." 2848 OBJECT diffServSchedulerStatus 2849 MIN-ACCESS read-only 2850 DESCRIPTION 2851 "Write access is not required." 2853 ::= { diffServMIBCompliances 1 } 2855 diffServMIBClassifierGroup OBJECT-GROUP 2856 OBJECTS { 2857 diffServClassifierFilter, diffServClassifierNext, 2858 diffServClassifierPrecedence, diffServClassifierStatus 2859 } 2860 STATUS current 2861 DESCRIPTION 2862 "The Classifier Group defines the MIB Objects that describe a 2863 generic classifier element." 2864 ::= { diffServMIBGroups 1 } 2866 diffServMIBSixTupleClfrGroup OBJECT-GROUP 2867 OBJECTS { 2868 diffServSixTupleClfrDstAddrType, diffServSixTupleClfrDstAddr, 2869 diffServSixTupleClfrDstAddrMask, diffServSixTupleClfrDstAddrType, 2870 diffServSixTupleClfrSrcAddrType, diffServSixTupleClfrSrcAddrMask, 2871 diffServSixTupleClfrDscp, diffServSixTupleClfrProtocol, 2872 diffServSixTupleClfrDstL4PortMin, 2873 diffServSixTupleClfrDstL4PortMax, 2874 diffServSixTupleClfrSrcL4PortMin, 2875 diffServSixTupleClfrSrcL4PortMax, diffServSixTupleClfrStatus 2876 } 2877 STATUS current 2878 DESCRIPTION 2879 "The Six-tuple Classifier Group defines the MIB Objects that 2880 describe a classifier element for matching on 6 fields of an IP 2881 and upper-layer protocol header." 2882 ::= { diffServMIBGroups 2 } 2884 diffServMIBMeterGroup OBJECT-GROUP 2885 OBJECTS { 2886 diffServMeterSucceedNext, diffServMeterFailNext, 2887 diffServMeterSpecific, diffServMeterStatus 2888 } 2889 STATUS current 2890 DESCRIPTION 2891 "The Meter Group defines the objects used in describing a generic 2892 meter element." 2893 ::= { diffServMIBGroups 3 } 2895 diffServMIBTokenBucketMeterGroup OBJECT-GROUP 2896 OBJECTS { 2897 diffServTBMeterRate, diffServTBMeterBurstSize 2898 diffServTBMeterStatus 2899 } 2900 STATUS current 2901 DESCRIPTION 2902 "The Token-Bucket Meter Group defines the objects used in 2903 describing a single-rate token bucket meter element." 2904 ::= { diffServMIBGroups 4 } 2906 diffServMIBActionGroup OBJECT-GROUP 2907 OBJECTS { 2908 diffServActionNext, diffServActionSpecific, 2909 diffServActionStatus 2910 } 2911 STATUS current 2912 DESCRIPTION 2913 "The Action Group defines the objects used in describing a 2914 generic action element." 2915 ::= { diffServMIBGroups 5 } 2917 diffServMIBDscpMarkActionGroup OBJECT-GROUP 2918 OBJECTS { 2919 diffServDscpMarkActDscp 2920 } 2921 STATUS current 2922 DESCRIPTION 2923 "The DSCP Mark Action Group defines the objects used in 2924 describing a DSCP Marking Action element." 2925 ::= { diffServMIBGroups 6 } 2927 diffServMIBCounterGroup OBJECT-GROUP 2928 OBJECTS { 2929 diffServCountActOctets, diffServCountActPkts, 2930 diffServCountActStatus, 2931 diffServAlgDropOctets, diffServAlgDropPkts 2932 } 2933 STATUS current 2934 DESCRIPTION 2935 "A collection of objects providing information specific to non- 2936 high speed (non-high speed interfaces transmit and receive at 2937 speeds less than or equal to 20,000,000 bits/second) packet- 2938 oriented network interfaces." 2939 ::= { diffServMIBGroups 7 } 2941 diffServMIBHCCounterGroup OBJECT-GROUP 2942 OBJECTS { 2943 diffServCountActOctets, diffServCountActHCOctets, 2944 diffServCountActPkts, diffServCountActStatus, 2945 diffServAlgDropOctets, diffServAlgDropHCOctets, 2946 diffServAlgDropPkts 2947 } 2948 STATUS current 2949 DESCRIPTION 2950 "A collection of objects providing information specific to non- 2951 high speed (non-high speed interfaces transmit and receive at 2952 speeds less than or equal to 20,000,000 bits/second) packet- 2953 oriented network interfaces." 2954 ::= { diffServMIBGroups 8 } 2956 diffServMIBVHCCounterGroup OBJECT-GROUP 2957 OBJECTS { 2958 diffServCountActOctets, diffServCountActHCOctets, 2959 diffServCountActPkts, diffServCountActHCPkts, 2960 diffServCountActStatus, diffServAlgDropOctets, 2961 diffServAlgDropHCOctets, diffServAlgDropPkts, 2962 diffServAlgDropHCPkts 2963 } 2964 STATUS current 2965 DESCRIPTION 2966 "A collection of objects providing information specific to non- 2967 high speed (non-high speed interfaces transmit and receive at 2968 speeds less than or equal to 20,000,000 bits/second) packet- 2969 oriented network interfaces." 2970 ::= { diffServMIBGroups 9 } 2972 diffServMIBAlgDropGroup OBJECT-GROUP 2973 OBJECTS { 2974 diffServAlgDropType, diffServAlgDropNext, 2975 diffServAlgDropQMeasure, diffServAlgDropQThreshold, 2976 diffServAlgDropSpecific, diffServAlgDropStatus 2977 } 2978 STATUS current 2979 DESCRIPTION 2980 "The Algorithmic Drop Group contains the objects that describe 2981 algorithmic dropper operation and configuration." 2982 ::= { diffServMIBGroups 10 } 2984 diffServMIBRandomDropGroup OBJECT-GROUP 2985 OBJECTS { 2986 diffServRandomDropMinThreshBytes, 2987 diffServRandomDropMinThreshPkts, 2988 diffServRandomDropMaxThreshBytes, 2989 diffServRandomDropMaxThreshPkts, 2990 diffServRandomDropInvWeight, diffServRandomDropProbMax 2991 diffServRandomDropStatus 2992 } 2993 STATUS current 2994 DESCRIPTION 2995 "The Random Drop Group augments the Algorithmic Drop Group for 2996 random dropper operation and configuration." 2997 ::= { diffServMIBGroups 11 } 2999 diffServMIBQueueGroup OBJECT-GROUP 3000 OBJECTS { 3001 diffServQPriority, diffServQNext, diffServQMinRateAbs, 3002 diffServQMinRateRel, diffServQMaxRateAbs, 3003 diffServQMaxRateRel, diffServQStatus 3004 } 3005 STATUS current 3006 DESCRIPTION 3007 "The Queue Group contains the objects that describe an 3008 interface's queues." 3009 ::= { diffServMIBGroups 12 } 3011 diffServMIBSchedulerGroup OBJECT-GROUP 3012 OBJECTS { 3013 diffServSchedulerMethod, diffServSchedulerNext, 3014 diffServSchedulerStatus 3015 } 3016 STATUS current 3017 DESCRIPTION 3018 "The Scheduler Group contains the objects that describe packet 3019 schedulers on interfaces." 3020 ::= { diffServMIBGroups 13 } 3022 diffServMIBStaticGroup OBJECT-GROUP 3023 OBJECTS { 3024 diffServClassifierNextFree, diffServSixTupleClfrNextFree, 3025 diffServMeterNextFree, diffServActionNextFree, 3026 diffServAlgDropNextFree, diffServQNextFree, diffServSchedulerNextFree 3027 } 3028 STATUS current 3029 DESCRIPTION 3030 "The Static Group contains readable scalar objects used in 3031 creating unique identifiers for classifiers, meters, actions and 3032 queues. These are required whenever row creation operations on 3033 such tables are supported." 3034 ::= { diffServMIBGroups 14 } 3035 END 3036 7. Acknowledgments 3038 This MIB builds on all the work that has gone into the Informal 3039 Management Model for Diffserv routers. It has been developed with the 3040 active involvement of many people, but most notably Yoram Bernet, Steve 3041 Blake, Brian Carpenter, Dave Durham, Jeremy Greene, Dan Grossman, Roch 3042 Guerin, Scott Hahn, Keith McCloghrie, Bob Moore, Kathleen Nichols, Ping 3043 Pan, Nabil Seddigh and Bert Wijnen. 3045 8. Security Considerations 3047 It is clear that this MIB is potentially useful for configuration, and 3048 anything that can be configured can be misconfigured, with potentially 3049 disastrous effect. 3051 At this writing, no security holes have been identified beyond those 3052 that SNMP Security is itself intended to address. These relate primarily 3053 to controlled access to sensitive information and the ability to 3054 configure a device - or which might result from operator error, which is 3055 beyond the scope of any security architecture. 3057 There are a number of management objects defined in this MIB that have a 3058 MAX-ACCESS clause of read-write and/or read-create. Such objects may be 3059 considered sensitive or vulnerable in some network environments. The 3060 support for SET operations in a non-secure environment without proper 3061 protection can have a negative effect on network operations. The use of 3062 SNMP Version 3 is recommended over prior versions for configuration 3063 control as its security model is improved. 3065 There are a number of managed objects in this MIB that may contain 3066 information that may be sensitive from a business perspective, in that 3067 they may represent a customer's service contract or the filters that the 3068 service provider chooses to apply to a customer's ingress or egress 3069 traffic. There are no objects which are sensitive in their own right, 3070 such as passwords or monetary amounts. 3072 It may be important to control even GET access to these objects and 3073 possibly to even encrypt the values of these object when sending them 3074 over the network via SNMP. Not all versions of SNMP provide features for 3075 such a secure environment. 3077 SNMPv1 by itself is not a secure environment. Even if the network itself 3078 is secure (for example by using IPSec), even then, there is no control 3079 as to who on the secure network is allowed to access and GET/SET 3080 (read/change/create/delete) the objects in this MIB. 3082 It is recommended that the implementers consider the security features 3083 as provided by the SNMPv3 framework. Specifically, the use of the User- 3084 based Security Model [12] and the View-based Access Control Model [15] 3085 is recommended. 3087 It is then a customer/user responsibility to ensure that the SNMP entity 3088 giving access to an instance of this MIB, is properly configured to give 3089 access to the objects only to those principals (users) that have 3090 legitimate rights to indeed GET or SET (change/create/delete) them. 3092 9. References 3094 [1] Harrington, D., Presuhn, R., and B. Wijnen, "An Architecture for 3095 Describing SNMP Management Frameworks", RFC 2571, Cabletron 3096 Systems, Inc., BMC Software, Inc., IBM T. J. Watson Research, April 3097 1999 3099 [2] Rose, M., and K. McCloghrie, "Structure and Identification of 3100 Management Information for TCP/IP-based Internets", RFC 1155, STD 3101 16, Performance Systems International, Hughes LAN Systems, May 1990 3103 [3] Rose, M., and K. McCloghrie, "Concise MIB Definitions", RFC 1212, 3104 STD 16, Performance Systems International, Hughes LAN Systems, 3105 March 1991 3107 [4] M. Rose, "A Convention for Defining Traps for use with the SNMP", 3108 RFC 1215, Performance Systems International, March 1991 3110 [5] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., 3111 and S. Waldbusser, "Structure of Management Information Version 2 3112 (SMIv2)", RFC 2578, STD 58, Cisco Systems, SNMPinfo, TU 3113 Braunschweig, SNMP Research, First Virtual Holdings, International 3114 Network Services, April 1999 3116 [6] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., 3117 and S. Waldbusser, "Textual Conventions for SMIv2", RFC 2579, STD 3118 58, Cisco Systems, SNMPinfo, TU Braunschweig, SNMP Research, First 3119 Virtual Holdings, International Network Services, April 1999 3121 [7] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., 3122 and S. Waldbusser, "Conformance Statements for SMIv2", RFC 2580, 3123 STD 58, Cisco Systems, SNMPinfo, TU Braunschweig, SNMP Research, 3124 First Virtual Holdings, International Network Services, April 1999 3126 [8] Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple Network 3127 Management Protocol", RFC 1157, STD 15, SNMP Research, Performance 3128 Systems International, Performance Systems International, MIT 3129 Laboratory for Computer Science, May 1990. 3131 [9] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, 3132 "Introduction to Community-based SNMPv2", RFC 1901, SNMP Research, 3133 Inc., Cisco Systems, Inc., Dover Beach Consulting, Inc., 3134 International Network Services, January 1996. 3136 [10] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Transport 3137 Mappings for Version 2 of the Simple Network Management Protocol 3138 (SNMPv2)", RFC 1906, SNMP Research, Inc., Cisco Systems, Inc., 3139 Dover Beach Consulting, Inc., International Network Services, 3140 January 1996. 3142 [11] Case, J., Harrington D., Presuhn R., and B. Wijnen, "Message 3143 Processing and Dispatching for the Simple Network Management 3144 Protocol (SNMP)", RFC 2572, SNMP Research, Inc., Cabletron Systems, 3145 Inc., BMC Software, Inc., IBM T. J. Watson Research, April 1999 3147 [12] Blumenthal, U., and B. Wijnen, "User-based Security Model (USM) for 3148 version 3 of the Simple Network Management Protocol (SNMPv3)", RFC 3149 2574, IBM T. J. Watson Research, April 1999 3151 [13] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Protocol 3152 Operations for Version 2 of the Simple Network Management Protocol 3153 (SNMPv2)", RFC 1905, SNMP Research, Inc., Cisco Systems, Inc., 3154 Dover Beach Consulting, Inc., International Network Services, 3155 January 1996. 3157 [14] Levi, D., Meyer, P., and B. Stewart, "SNMPv3 Applications", RFC 3158 2573, SNMP Research, Inc., Secure Computing Corporation, Cisco 3159 Systems, April 1999 3161 [15] Wijnen, B., Presuhn, R., and K. McCloghrie, "View-based Access 3162 Control Model (VACM) for the Simple Network Management Protocol 3163 (SNMP)", RFC 2575, IBM T. J. Watson Research, BMC Software, Inc., 3164 Cisco Systems, Inc., April 1999 3166 [16] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction to 3167 Version 3 of the Internet-standard Network Management Framework", 3168 RFC 2570, SNMP Research, Inc., TIS Labs at Network Associates, 3169 Inc., Ericsson, Cisco Systems, April 1999 3171 [ACTQMGMT] 3172 V. Firoiu, M. Borden "A Study of Active Queue Management for 3173 Congestion Control", March 2000, In IEEE Infocom 2000, 3174 http://www.ieee-infocom.org/2000/papers/405.pdf 3176 [AF-PHB] 3177 J. Heinanen, F. Baker, W. Weiss, J. Wroclawski, "Assured Forwarding 3178 PHB Group.", RFC 2597, June 1999. 3180 [DSARCH] 3181 S. Blake, D. Black, M. Carlson, E. Davies, Z. Wang, W. Weiss, "An 3182 Architecture for Differentiated Service", RFC 2475, December 1998. 3184 [DSFIELD] 3185 K. Nichols, S. Blake, F. Baker, D. Black, "Definition of the 3186 Differentiated Services Field (DS Field) in the IPv4 and IPv6 3187 Headers", RFC 2474, December 1998. 3189 [DSPIB] 3190 M. Fine, K. McCloghrie, J. Seligson, K. Chan, S. Hahn, A. Smith, 3191 "Differentiated Services Policy Information Base", Internet Draft 3192 , March 2000 3194 [DSTERMS] 3195 D. Grossman, "New Terminology for Diffserv", Internet Draft , November 1999. 3198 [EF-PHB] 3199 V. Jacobson, K. Nichols, K. Poduri, "An Expedited Forwarding PHB." 3200 RFC 2598, June 1999. 3202 [IFMIB] 3203 K. McCloghrie, F. Kastenholz, "The Interfaces Group MIB using 3204 SMIv2", RFC 2233, November 1997. 3206 [INETADDRESS] 3207 Daniele, M., Haberman, B., Routhier, S., Schoenwaelder, J., 3208 "Textual Conventions for Internet Network Addresses.", RFC 2851, 3209 June 2000. 3211 [INTSERVMIB] 3212 F. Baker, J. Krawczyk, A. Sastry, "Integrated Services Management 3213 Information Base using SMIv2", RFC 2213, September 1997. 3215 [MODEL] 3216 Y. Bernet, S. Blake, A. Smith, D. Grossman, "An Informal Management 3217 Model for Diffserv Routers", Internet Draft , July 2000. 3220 [POLTERM] 3221 F. Reichmeyer, D. Grossman, J. Strassner, M. Condell, "A Common 3222 Terminology for Policy Management", Internet Draft , March 2000 3225 [QUEUEMGMT] 3226 B. Braden et al., "Recommendations on Queue Management and 3227 Congestion Avoidance in the Internet", RFC 2309, April 1998. 3229 [RED93] 3230 "Random Early Detection", 1993. 3232 10. Authors' Addresses 3234 Fred Baker 3235 Cisco Systems 3236 519 Lado Drive 3237 Santa Barbara, California 93111 3238 fred@cisco.com 3240 Kwok Ho Chan 3241 Nortel Networks 3242 600 Technology Park Drive 3243 Billerica, MA 01821 3244 khchan@nortelnetworks.com 3246 Andrew Smith 3247 ah_smith@pacbell.net 3249 Table of Contents 3251 1 The SNMP Management Framework ................................... 2 3252 2 Introduction .................................................... 3 3253 2.1 Relationship to the Diffserv Informal Management Model ........ 3 3254 2.2 Relationship to other MIBs and Policy Management .............. 3 3255 2.3 MIB Overview .................................................. 4 3256 3 Structure of this MIB ........................................... 5 3257 3.1 Classifiers ................................................... 5 3258 3.1.1 Classifier Table ............................................ 5 3259 3.1.2 IP Six-Tuple Classifier Table ............................... 6 3260 3.2 Meters ........................................................ 6 3261 3.2.1 Meter Table ................................................. 6 3262 3.2.2 Token-Bucket Meter Table .................................... 7 3263 3.3 Actions ....................................................... 7 3264 3.3.1 DSCP Mark Action Table ...................................... 7 3265 3.3.2 Count Action Table .......................................... 8 3266 3.3.3 Absolute Drop Action ........................................ 8 3267 3.4 Queueing Elements ............................................. 8 3268 3.4.1 Algorithmic Dropper Table ................................... 8 3269 3.4.2 Random Dropper Table ........................................ 9 3270 3.4.3 Queues and Schedulers ....................................... 11 3271 3.4.4 Example of Algorithmic Droppers, Queues and Schedulers ...... 12 3272 4 Conventions used in this MIB .................................... 13 3273 4.1 The use of RowPointer ......................................... 13 3274 4.2 Conceptual row creation and deletion .......................... 14 3275 5 Editorial information ........................................... 15 3276 5.1 Open Issues resolved in previous drafts ....................... 15 3277 5.2 Open Issues resolved in this draft ............................ 17 3278 5.3 Still Open Issues ............................................. 18 3279 6 MIB Definition .................................................. 19 3280 7 Acknowledgments ................................................. 70 3281 8 Security Considerations ......................................... 70 3282 9 References ...................................................... 71 3283 10 Authors' Addresses ............................................. 74 3284 11. Full Copyright 3286 Copyright (C) The Internet Society (2000). All Rights Reserved. 3288 This document and translations of it may be copied and furnished to 3289 others, and derivative works that comment on or otherwise explain it 3290 or assist in its implmentation may be prepared, copied, published and 3291 distributed, in whole or in part, without restriction of any kind, 3292 provided that the above copyright notice and this paragraph are 3293 included on all such copies and derivative works. However, this 3294 document itself may not be modified in any way, such as by removing 3295 the copyright notice or references to the Internet Society or other 3296 Internet organizations, except as needed for the purpose of 3297 developing Internet standards in which case the procedures for 3298 copyrights defined in the Internet Standards process must be 3299 followed, or as required to translate it into languages other than 3300 English. 3302 The limited permissions granted above are perpetual and will not be 3303 revoked by the Internet Society or its successors or assigns. 3305 This document and the information contained herein is provided on an 3306 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 3307 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 3308 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 3309 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 3310 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.