idnits 2.17.1 draft-ietf-diffserv-mib-05.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 38 longer pages, the longest (page 17) being 63 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 466 instances of weird spacing in the document. Is it really formatted ragged-right, rather than justified? ** There are 10 instances of too long lines in the document, the longest one being 3 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 181 has weird spacing: '... stream is co...' == Line 654 has weird spacing: '...20kbyte none...' == Line 656 has weird spacing: '...20kbyte none...' == Line 1438 has weird spacing: '...sary to manag...' == Line 1439 has weird spacing: '... device that ...' == (461 more instances...) -- 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 (November 2000) is 8563 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 358, but not defined == Missing Reference: 'SRTCM' is mentioned on line 375, but not defined == Missing Reference: 'TRTCM' is mentioned on line 375, but not defined == Missing Reference: 'DSTERM' is mentioned on line 968, but not defined == Unused Reference: 'DSPIB' is defined on line 4557, but no explicit reference was found in the text == Unused Reference: 'DSTERMS' is defined on line 4562, but no explicit reference was found in the text == Unused Reference: 'EF-PHB' is defined on line 4566, but no explicit reference was found in the text == Unused Reference: 'INETADDRESS' is defined on line 4574, but no explicit reference was found in the text == Unused Reference: 'INTSERVMIB' is defined on line 4579, but no explicit reference was found in the text == Unused Reference: 'RED93' is defined on line 4597, 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' -- Possible downref: Non-RFC (?) normative reference: ref. 'AQMROUTER' ** 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: 24 errors (**), 0 flaws (~~), 19 warnings (==), 9 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 June 2001 Nortel Networks 6 draft-ietf-diffserv-mib-05.txt A. Smith 7 8 November 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 Traffic Conditioning 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. The 120 higher level concept of a TCB is not required in the parameterization or 121 in the linking together of the individual elements, hence it is not used 122 in the MIB itself and only mentioned in the text for relating the MIB 123 with the [MODEL]. The actual distinguishing of which TCB a specific 124 element is a part of is not needed for the instructmentation of a device 125 to support the functionalities of DiffServ, but it is useful for 126 conceptual reasons. By not including TCB notion in its parameters, this 127 MIB allow any grouping of elements to construct TCBs, using rules 128 indicated by the [MODEL]. This will minimize changes to this MIB if 129 rules in [MODEL] changes. 131 The notion of a Data Path is used in this MIB to indicate the DiffServ 132 processing a packet may experience. This Data Path is distinguished 133 based on the Interface and the Direction of the flow the packet is part 134 of. A Data Path Table Entry indicates the first of possibly multiple 135 elements that will apply DiffServ treatment to the packet. 137 2.2. Relationship to other MIBs and Policy Management 139 This MIB provides for direct reporting and manipulation of the most 140 detailed functional elements described by the Diffserv Informal 141 Management Model for management. These elements are designed with their 142 parameterization tables separated from their data path linkage tables, 143 allowing reuse of each table as much as possible. The data path linkage 144 in this MIB is coupled with interface thru the use of 145 diffServDataPathTable. The concept of "interface" is as for the 146 InterfaceIndex/ifIndex of the IETF Interfaces MIB [IFMIB]. 148 Other MIBs and data structure definitions for policy management 149 mechanisms other than SNMP/SMIv2 are likely to exist in the future for 150 the purposes of abstracting the model in other ways. 152 In particular, abstractions in the direction of less detailed 153 definitions of Diffserv functionality are likely e.g. some form of 154 "Per-Hop Behaviour"-based definition involving a template of detailed 155 object values which is applied to specific instances of objects in this 156 MIB semi-automatically. 158 Another possible direction of abstraction is one using a concept of 159 "roles" (often, but not always, applied to interfaces). In this case, it 160 may be possible to re-use the object definitions in this MIB, especially 161 the parameterization tables. The Data Path table will help in the reuse 162 of the data path linkage tables by having the interface specific 163 information centralized, allowing easier mechanical replacement of 164 ifIndex by some sort of "roleIndex". Work is ongoing in this area. 166 2.3. MIB Overview 168 This MIB is structured based on the need to describe the sequential 169 DiffServ treatments being applied to a packet, and the parameterization 170 of these treatments. These two requirements are kept separate thru out 171 the design of this MIB, and are full-filled using separate tables and 172 data definitions. 174 In this MIB, we model the ingress and egress portions of a DiffServ 175 network device identically, making the distinction between them an index 176 variable. Each interface then performs some or all of the following 177 high-level functions: 179 o Classify each packet according to some set of rules 181 o Determine whether the packet's data stream is conforming or not 182 conforming to its permitted rates 184 o Perform a set of resulting actions, possibly including counting the 185 traffic, application of an appropriate drop policy and marking of 186 the traffic with a Differentiated Services Code Point (DSCP) as 187 defined in [DSFIELD]. 189 o Enqueue the traffic for output in the appropriate queue, whose 190 scheduler may shape the traffic or simply forward it with some 191 minimum rate or maximum latency. 193 The MIB therefore contains the following elements: 195 Data Path Table 196 A general extensible framework for describing the starting point of 197 DiffServ datapaths within a single DiffServ device. This table 198 descibes interface and interface direction specific data paths. 200 Classifier and Filter Tables 201 A general extensible framework and one example of a 202 parameterization table - filter table (an IP Six-Tuple Multi-Field 203 Classification Table). 205 Meter Tables 206 A general extensible framework and one example of a 207 parameterization table - TBMeter table, applicable for Simple Token 208 Bucket Meter, Average Rate Meter, Single Rate Three Color Meter, 209 Two Rate Three Color Meter, and Sliding Window Three Color Meter. 211 Action Tables 212 A general extensible framework and examples of parameterization 213 tables for Absolute Drop, Mark and Count actions. The 214 "multiplexer", "replicator" and "null" actions described in [MODEL] 215 are accomplished implicitly by means of the RowPointer structures 216 of the other elements. 218 Queue, Scheduler and Algorithmic Dropper Tables 219 A general extensible framework for parameterizing queuing and 220 scheduler systems. The queue measurement dependent algorithmic 221 droppers are also described here. 223 3. Structure of this MIB 225 This MIB is structured with separate tables for purpose of DiffServ data 226 path description and DiffServ treatment parameterization of the DiffServ 227 device. The data path description and/or the treatment parameterization 228 tables can each be reuse independently, allowing the flexibility to 229 maintain a common data construct for DiffServ device configuration and 230 provisioning, independent of the configuration/provisioning method used. 232 The definitions in this MIB are intented to be reused by the DiffServ 233 PIB and SNMPCONF working group's DiffServ Policy MIB. The treatment 234 parameters can also be reused by other IP based technologies. For 235 example, IP packet filtering parameters most likely can be reused by 236 other IP based technologies. 238 3.1. DiffServ Data Paths 240 This part of the MIB provide instrumentation for connecting the DiffServ 241 Functional Elements within a single DiffServ device. Please refer to 242 the [MODEL] for discussions on the valid sequencing and grouping of 243 DiffServ Functional Elements. Given some basic information, e.g. 244 ifIndex and interface direction, the first DiffServ Functional Element 245 is determined. Subsequent DiffServ Functional Elements are provided by 246 the "Next" pointer attribute of each entry of data path tables. 247 Description of how this "Next" pointer is used in each table is provided 248 in their respective section. 250 The data path can be redefined to allow a different level of control 251 other than interface level control currently defined in this MIB. There 252 is on-going work in this area, most notably the development of Policy 253 Information Base in DiffServ and RAP working groups, and DiffServ Policy 254 MIB in SNMPCONF working group. 256 3.1.1. Data Path Table 258 Entries in the Data Path Table provide the DiffServ treatment starting 259 points for all packets of this DiffServ device. Each entry in this table 260 is indexed by ifIndex and the direction of the packet flow. There 261 should be at most two entries for each interface, one for ingress and 262 one for egress. Each entry provides the first DiffServ Functional 263 Element each packet at a specific interface traveling a specific 264 relative direction should experience. Notice this table is interface 265 specific, with the use of ifIndex. As indicated in section 2.2, with 266 some modification/extension of the Data Path Table, most of the tables 267 and their entries are reusable by other Policy Management mechanisms. 268 For indication of none existence of DiffServ Treatments, entries can be 269 created with zeroDotZero in the diffServDataPathStart attribute to 270 indicate this explicitly. The none existence of DiffServ Treatment can 271 also be indicated implicitly by not having the entry at all. The 272 explicit/implicit selection is up to the implementation. This means 273 allow normal IP device processing when zeroDotZero is used in the 274 diffServDataPathStart attribute, or when the entry does not exist. 275 Normal IP device processing will depend on the device, for example, this 276 can be forwarding the packet. 278 3.2. Classifiers 280 The classifier, classifier element, and filter tables determine how 281 traffic is sorted out. They identify separable classes of traffic, by 282 reference to an appropriate filter, which may select anything from an 283 individual micro-flow to aggregates identified by DSCP. 285 The classification is used to send these separate streams to appropriate 286 Meter, Action, Queue, Scheduler and Algorithmic Dropper elements. For 287 example, to indicate a multi-stage meter, sub-classes of traffic may be 288 sent to different meter stages: e.g. in an implementation of the Assured 289 Forwarding (AF) PHB [AF-PHB], AF11 traffic might be sent to the first 290 meter, AF12 traffic might be sent to the second and AF13 traffic sent to 291 the second meter stage's out-of-profile action. 293 The concept of a classifier is the same as described in [MODEL]. The 294 structure of the classifier and classifier element tables, is the same 295 as the classifier described in [MODEL]. Within each classifier, it must 296 not be important in which order the tests are made. This is to 297 facilitate optimized implementations such as index trees. Order is 298 present only to resolve ambiguity, by use of "order" here and 299 "precedence" in [MODEL]. Filter with higher values of order are 300 compared first; the order of tests for entries of the same order is 301 unimportant. 303 A datapath may consist of more than one classifier. There may be 304 overlap of filter specification between filters of different 305 classifiers. The first classifier functional datapath element 306 encountered, as determined by the sequencing of diffserv functional 307 datapath elements, will be used first. 309 An important form of classifier is "everything else": the final stage of 310 the classifier i.e. the one with the lowest precedence, must be 311 "complete" since the result of an incomplete classifier is not 312 necessarily deterministic - see [MODEL] section 4.1.2. 314 The definition of the actual filter to be used by the classifier is 315 referenced via a RowPointer: this enables the use of any sort of filter 316 table that one might wish to design, standard or proprietary. The filter 317 table may be, but does not need to be, defined in this MIB module. 319 The classifiers specified here are at the interface level, they may be 320 derived from some more general policies e.g. something based on 321 interface roles, but such discussion is outside the scope of this 322 document. See e.g. [POLTERM] section 4 for a discussion of Roles. 324 3.2.1. Classifier Table 326 Classifiers are organized by entries of the Classifier Table. With each 327 entry corresponds to a single Classifier. It is the entries in the 328 Classifier Table that get linked from the upstream diffserv functional 329 datapath element, i.e. an entry in diffServDataPathTable. A data path 330 may consist of more than one Classifier, the order the classification 331 processes aplies to the traffic is the same as the order the classifier 332 table entries are linked in the data path. 334 3.2.2. Classifier Element Table 336 While the Classifier Table entries handles the input side of the 337 Classifier, the Classifier Element Table enumerates each branch of the 338 fan-out of a Classifier, associating each fan-out branch with a Filter 339 for discriminating the traffic for that branch. Each Classifier Element 340 table entry is part of a Classifier, indicated by 341 diffServClfrElementClfrId. 343 3.2.3. Filter Table - IP Six-Tuple Classifier Table 345 This MIB includes one Filter Table, a definition for an IP Six-Tuple 346 Classifier, used for IP traffic classification. Entries in this filter 347 table are referenced from the RowPointer diffServClfrElementSpecific 348 attributes of classifier element table entries. 350 A Behavior Aggregate (BA) Classifier, acting only on DSCPs, is a simple 351 form of the IP Six-Tuple Classifier. It is represented by having the 352 diffServSixTupleClfrDscp attribute set to the desired DSCP and all other 353 classification attributes set to match-all, their default settings. The 354 alternative approach of providing a specific definition in this MIB for 355 a BA Classifier was discussed and rejected. 357 Each entry in the IP Six-Tuple Classifier Table defines a single filter. 358 The textual convention of InetAddress [INETADDR] is used for both IPv4 359 and IPv6 addressing. The use of IP Six-Tuple Classifiers is discussed 360 in [DSARCH] and abstract examples of how they might be configured are 361 provided in [MODEL]. 363 3.3. Meters 365 A meter, according to [MODEL] section 5, measures the rate at which 366 packets making up a stream of traffic pass it, compares this rate to 367 some set of thresholds and produces some number (two or more) of 368 potential results. A given packet is said to "conform" to the meter if, 369 at the time that the packet is being looked at, the stream appears to be 370 within the meter's profile. MIB syntax makes it easiest to define this 371 as a sequence of one or more cascaded pass/fail tests, modeled here as 372 if-then-else constructs. It is important to understand that this way of 373 modelling does not imply anything about the implementation being 374 "sequential": multi-rate/multi-profile meters e.g. those designed to 375 support [SRTCM] or [TRTCM], can still be modelled this way even if they, 376 of necessity, share information between the stages: the stages are 377 introduced merely as a notational convenience in order to simplify the 378 MIB structure. 380 3.3.1. Meter Table 382 The generic meter table is used as a base for all more specific forms of 383 meter. The definition of parameters specific to the type of meter used 384 is referenced via a pointer to a table containing those specifics. This 385 enables the use of any sort of specific meter table that one might wish 386 to design, standard or proprietary. The specific meter table may be, but 387 does not need to be, defined in this MIB module. 389 3.3.2. Token-Bucket Meter Table 391 This is included as an example of a common type of meter. Entries in 392 this table are referenced from the RowPointer diffServMeterSpecific 393 attributes of meter table entries. The parameters are represented by a 394 rate diffServTBMeterRate, a burst size diffServTBMeterBurstSize, and an 395 interval diffServTBMeterInterval. How these parameters are used depends 396 on the type of meter being parameterized, this is provided by the 397 diffServTBMeterType attribute. Additional meter parameterization tables 398 can be defined in this or other MIB when necessary. 400 3.4. Actions 402 Actions include "no action", "mark the traffic with a DSCP", "drop the 403 traffic" or "count it". Other tasks such as "shape the traffic" or "drop 404 based on some algorithm" are handled elsewhere as queueing mechanisms, 405 rather than actions, consistent with [MODEL]. The "multiplexer", 406 "replicator" and "null" actions described in [MODEL] are accomplished 407 implicitly by means of the RowPointer structures of the other elements. 409 This MIB uses the Action Table diffServActionTable to organize one 410 Action's relationship with the element(s) before and after it. It allows 411 Actions to be cascaded to enable multiple Actions be applied to a single 412 traffic stream by using each entry's diffServActionNext attribute. The 413 diffServActionNext attribute of the last action entry in the chain 414 points to the next element in the TCB, if any, e.g. a Queueing element. 416 It may also point at a next TCB. 418 The parameters needed for each Action element will depend on the type of 419 Action to be taken. Hence there are specific Action Tables for all the 420 different Action types. This flexibility allows additional Actions be 421 specified in future revisions of this MIB, or in other MIBs and also 422 allows for the use of proprietary Actions without impact on those 423 defined here. 425 3.4.1. DSCP Mark Action Table 427 This Action is applied to traffic in order to mark it with a Diffserv 428 Codepoint (DSCP) value, specified in the diffServDscpMarkActTable. Other 429 marking actions might be specified elsewhere - these are outside the 430 scope of this MIB. 432 3.4.2. Count Action Table 434 Count Actions are used to count the traffic passing along a particular 435 path through the model. If specified, they are likely to be placed 436 first, before other types of Action. For example, when both a Count and 437 an Absolute Dropper Action are specified, the Count Action needs to 438 count the traffic stream before any traffic gets dropped. Note that 439 there are counters contained directly in Algorithmic Dropper elements to 440 indicate the amount of traffic dropped by those elements. 442 Counters are arranged in a single table but with separate conformance 443 statements for low-speed and high-speed interfaces, consistent with 444 [IFMIB]. 446 3.4.3. Absolute Drop Action 448 This action just silently discards all traffic presented to it, without 449 counting it. This action has no additional parameters and so is 450 represented only within diffServActionType without its specific table. 452 3.5. Queueing Elements 454 These include Algorithmic Droppers, Queues and Schedulers which are all 455 inter-related in their use of queueing techniques. 457 3.5.1. Algorithmic Dropper Table 459 Algorithmic Droppers have a close relationship with queueing: they are 460 represented in this MIB by entries in an Algorithmic Dropper Table. 461 Entries contain a diffServAlgDropNext attribute which indicates to which 462 queue they sink their traffic. 464 An Algorithmic Dropper is assumed to operate indiscriminately on all 465 packets that are presented at its input. If it is necessary to perform 466 additional classification on the stream then a separate TCB must be 467 introduced at this point: Classifier elements here can then distinguish 468 the different types of traffic on which dropping is to act and the 469 treatment for each type is described by a separate diffServAlgDropEntry. 471 Algorithmic Droppers may also contain a pointer to specific detail of 472 the drop algorithm, diffServAlgDropSpecific. This MIB defines the detail 473 for three drop algorithms: Tail Drop, Head Drop and Random Drop; other 474 algorithms are outside the scope of this MIB module but the general 475 framework is intended to allow for their inclusion via other MIB 476 modules. 478 One generally-applicable parameter of a dropper is the specification of 479 a queue-depth threshold at which some drop action is to start. This is 480 represented in this MIB, as a base attribute, diffServAlgDropQThreshold, 481 of the Algorithmic Dropper entry. The queue for which depth is to be 482 compared and the depth threshold to compare against, is specified with 483 diffServAlgDropQMeasure. 485 o A Tail Dropper requires the specification of a maximum queue depth 486 threshold: when the queue pointed at by diffServAlgDropQMeasure 487 reaches that depth threshold, diffServAlgDropQThresh, any new 488 traffic arriving at the dropper is discarded. This algorithm uses 489 only parameters that are part of the diffServAlgDropEntry. 491 o A Head Dropper requires the specification of a maximum queue depth 492 threshold: when the queue pointed at by diffServAlgDropQMeasure 493 reaches that depth threshold, diffServAlgDropQThresh, traffic 494 currently at the head of the queue is discarded. This algorithm 495 uses only parameters that are part of the diffServAlgDropEntry. 497 o Random Droppers are recommended as a way to control congestion, in 498 [QUEUEMGMT] and called for in the [AF-PHB]. Various implementations 499 exist, which agree on marking or dropping just enough traffic to 500 communicate with TCP-like protocols about congestion avoidance, but 501 differ markedly on their specific parameters. This MIB attempts to 502 offer a minimal set of controls for any random dropper, but expects 503 that vendors will augment the table with additional controls and 504 status in accordance with their implementation. This algorithm 505 requires additional parameters on top of those in 506 diffServAlgDropEntry: these are discussed below. 508 3.5.2. Random Dropper Table 510 One example of a random dropper is a RED-like dropper. An example of the 511 representation chosen in this MIB for this element is shown in Figure 1. 513 Random droppers often have their drop probability function described as 514 a plot of drop probability (P) against averaged queue length (Q). 515 (Qmin,Pmin) then defines the start of the characteristic plot. Normally 516 Pmin=0, meaning with average queue length below Qmin, there will be no 517 drops. (Qmax,Pmax) defines a "knee" on the plot, after which point the 518 drop probability become more progressive (greater slope). (Qclip,1) 519 defines the queue length at which all packets will be dropped. Notice 520 this is different from Tail Drop because this uses an averaged queue 521 length. although it is possible for Qclip = Qmax. In the MIB module, 522 diffServRandomDropMinThreshBytes and diffServRandomDropMinThreshPkts 523 represent Qmin. diffServRandomDropMaxThreshBytes and 524 diffServRandomDropMaxThreshPkts represent Qmax. 525 diffServRandomDropInvProbMax represents Pmax. This MIB does not 526 represent Pmin (assumed to be zero unless otherwise represented) or 527 Qclip (assumed to be Qmax unless otherwise represented). 529 Each random dropper specification is associated with a queue. This 530 allows multiple drop processes (of same or different types) be 531 associated with the same queue, as different PHB implementations may 533 +-------------+ +-----------+ 534 --->| Next --------+-->| Next ---------> to Scheduler 535 | Thresh=100k | | | Min=none | 536 | Measure -------+ | Max=none | 537 | Type=random | | Pri=10 | 538 | Specific ------+ | Type=fifo | 539 +-------------+ | +-----------+ 540 AlgDrop.3 | Queue.4 541 | 542 | +--------------+ 543 +-->| Minthresh=10k| 544 | Maxthresh=80k| 545 | Weight=1/16 | 546 | ProbMax= 0.5 | 547 +--------------+ 548 RandomDrop.3 550 Figure 1: Example Use of the RandomDropTable for Random Droppers 552 require. This also allows for sequences of multiple droppers if 553 necessary. 555 The calculation of a smoothed queue length may also have an important 556 bearing on the behaviour of the dropper: parameters may include the 557 sampling rate and the weight of each sample. The performance may be very 558 sensitive to the values of these parameters and a wide range of possible 559 values may be required due to a wide range of link speeds. Most 560 algorithms include a sample weight, represented here by 561 diffServRandomDropInvWeight. The availability of 562 diffServRandomDropSamplingRate as readable is important, the information 563 provided by Sampling Rate is essential to the configuration of 564 diffServRandomDropInvWeight. Having Sampling Rate be configurable is 565 also helpful, as line speed increases, the ability to have queue 566 sampling be less frequent than packet arrival is needed. Note however 567 that there is ongoing research on this topic, see e.g. [ACTQMGMT] and 568 [AQMROUTER]. 570 Additional parameters may be added in an enterprise MIB module, e.g. by 571 using AUGMENTS on this table, to handle aspects of random drop 572 algorithms that are not standardised here. 574 NOTE: Deterministic Droppers can be viewed as a special case of Random 575 Droppers with the drop probability restricted to 0 and 1. Hence 576 Deterministic Droppers might be described by a Random Dropper with Pmin 577 = 0, Pmax = 1, Qmin = Qmax = Qclip, the averaged queue length at which 578 dropping occurs. 580 3.5.3. Queues and Schedulers 582 The Queue Table models simple FIFO queues, as described in [MODEL] 583 section 7.1.1. The Scheduler Table allows flexibility in constructing 584 both simple and somewhat more complex queueing hierarchies from those 585 queues. Of course, since TCBs can be cascaded multiple times on an 586 interface, even more complex hierarchies can be constructed that way 587 also. 589 Queue Table entries are pointed at by the "next" attributes of the 590 upstream elements e.g. diffServMeterSucceedNext. Note that multiple 591 upstream elements may direct their traffic to the same Queue Table 592 entry. For example, the Assured Forwarding PHB suggests that all traffic 593 marked AF11, AF12 or AF13 be placed in the same queue, after metering, 594 without reordering. This would be represented by having the 595 diffServMeterSucceedNext of each upstream meter point at the same entry 596 in the Queue Table. 598 Notice Queue Table and Scheduler Table entries are for data path 599 description, they both uses Scheduler Parameterization Table entries for 600 diffserv treatment parameterization. 602 Queue Table entries specify the scheduler it wants service from by use 603 of its Next pointer. 605 Each Scheduler Table entry represents the algorithm in use for servicing 606 the one or more queues that feed it. The [MODEL] section 7.1.2 describes 607 a scheduler with multiple inputs: this is represented in the MIB by 608 having the scheduling parameters be associated with each input. In this 609 way, sets of Queues can be grouped together as inputs to the same 610 Scheduler. This table serves to represent the example scheduler 611 described in the [MODEL]: other more complex representations might be 612 created outside of this MIB. 614 Scheduler Parameter Table entries are used to parameterized each input 615 that feeds into a scheduler. The inputs can be a mixture of Queue Table 616 and Scheduler Table entries. Scheduler Parameter Table entries can be 617 used/reused by one or more Queue and/or Scheduler Table entries. 619 For representing a Strict Priority scheduler, each scheduler input is 620 assigned a priority with respect to all the other inputs feeding the 621 same scheduler, with default values for the other parameters. A 622 higher-priority input will be serviced first over a lower-priority 623 input, assuming that all guarantees have already been met. 625 For Weighted Queueing algorithms e.g. WFQ, WRR, the "weight" of a given 626 scheduler input is represented with a Minimum Service Rate leaky-bucket 627 profile which provides guaranteed bandwidth to that input, if required. 628 This is represented, as were token-bucket meters, by a rate 629 diffServSchdParamMinRateAbs. The rate may, alternatively, be represented 630 by a relative value, as a fraction of the interface's current line rate, 631 diffServSchdParamMinRateRel to assist in cases where line rates are 632 variable or where a higher-level policy might be expressed in terms of 633 fractions of network resources. The two rate parameters are inter- 634 related and changes in one may be reflected in the other. 636 An input may also be capable of acting as a non-work-conserving [MODEL] 637 traffic shaper: this is done by defining a Maximum Service Rate leaky- 638 bucket profile in order to limit the scheduler bandwidth available to 639 that input. This is represented, similarly to the minimum rate, by a 640 rate diffServSchdParamMaxRateAbs. The rate may, alternatively, be 641 represented by a relative value, as a fraction of the interface's 642 current line rate, diffServSchdParamMaxRateRel. 644 Notice hierarchical schedulers can be parameterized using this MIB by 645 having Scheduler Table entries feeds into Scheduler Table entry. 647 3.5.4. Example of Algorithmic Droppers, Queues and Schedulers 649 As an example, the hypothetical queue/scheduler configuration shown in 650 [MODEL] section 8.1 is shown in Table 1. 652 QId MinRate MaxRate Priority Scheduler 653 --- ---------------- ---------------- -------- --------- 654 1 100kbps/20kbyte none/none 20 Scheduler.1 655 2 none/none 100kbps/100kbyte 40 Scheduler.1 656 3 200kbps/20kbyte none/none 20 Scheduler.1 657 4 none/none none/none 10 Scheduler.1 659 SchedId Type 660 ------- ------------------ 661 1 weightedRoundRobin 663 Table 1: Example Queue and Scheduler Parameters 665 Queues 1 and 3 are serviced for long enough to give them their promised 666 bandwidths and burst sizes, if they need them. Queue 2 is then serviced 667 up to its maximum limit profile. Only then does Queue 4 get an 668 opportunity to send its traffic. As an example of the use of the MIB 669 structures, Figure 2 shows how the example would be represented. 671 +-----------+ 672 ----------------------->| Next -----+ 673 | Min=Profl4| | 674 | Max=none | | 675 | Pri=20 | | 676 | Type=fifo | | 677 +-----------+ | 678 Queue.1 | 679 | 680 +-----------+ +-----------+ | 681 --->| Next -----+--->| Next ------+ 682 | Thresh=1k | | | Min=none | | 683 | Measure -----+ | Max=Profl5| | 684 | Type=Tail | | Pri=40 | | 685 | Spec=none | | Type=fifo | | +----------+ 686 +-----------+ +-----------+ +--->| Next -----> 0.0 687 Dropper.1 Queue.2 | | Algrm=wrr| or next TCB 688 | +----------+ 689 +-----------+ +-----------+ | Scheduler.1 690 --->| Next -----+--->| Next -----+ 691 | Thresh=2k | | | Min=Profl3| | 692 | Measure -----+ | Max=none | | 693 | Type=Tail | | Pri=20 | | 694 | Spec=none | | Type=fifo | | 695 +-----------+ +-----------+ | 696 Dropper.2 Queue.3 | 697 | 698 +-----------+ +-----------+ | 699 --->| Next ------+--->| Next -----+ 700 | Thresh=4k | | | Min=none | 701 | Measure -----+ | Max=none | 702 | Type=Tail | | Pri=10 | 703 | Spec=none | | Type=fifo | 704 +-----------+ +-----------+ 705 Dropper.3 Queue.4 707 Figure 2: Example of the use of Queueing elements 709 4. MIB Usage Example 711 This section provides some examples on how the different table entries 712 of this MIB may be used to parameterize a DiffServ Device. For the 713 figures, all the MIB table entry and attribute names assumes to have 714 "diffServ" as their first common initial part of name, with the table 715 entry name assumed to be their second common initial part of name. 717 +---------------------+ 718 |DataPath | 719 | ifIndex=1 | 720 | IfDirection=Ingress | +------+ 721 | Start --------------+--->|Clfr | 722 +---------------------+ | Id=1 | 723 +------+ 725 +------------+ +--------------+ +-----------+ 726 |ClfrElement | +-->|Meter | +-->|Action | 727 | Id=101 | | | Id=101 | | | Id=101 | 728 | ClfrId=1 | | | SucceedNext -+--+ | Next -----+---->... 729 | Order=NA | | | FailNext ----+->... | Specific -+-+ 730 | Next ------+--+ | Specific -+ | | Type=Spcf | | 731 | Specific --+-+ +-----------+--+ +-----------+ | 732 +------------+ | | +-------+ 733 | +-------+ | +--------+ | +-----------+ 734 +-->|Filter1| +-->|TBMeter1| +-->|CounterAct1| 735 +-------+ +--------+ +-----------+ 737 +------------+ +--------------+ +-----------+ 738 |ClfrElement | +-->|Meter | +-->|Action | 739 | Id=102 | | | Id=102 | | | Id=102 | 740 | ClfrId=1 | | | SucceedNext -+--+ | Next -----+---->... 741 | Order=NA | | | FailNext ----+->... | Specific -+-+ 742 | Next ------+--+ | Specific -+ | | Type=Spcf | | 743 | Specific --+-+ +-----------+--+ +-----------+ | 744 +------------+ | | +-------+ 745 | +-------+ | +--------+ | +-----------+ 746 +-->|Filter2| +-->|TBMeter2| +-->|CounterAct2| 747 +-------+ +--------+ +-----------+ 749 +------------+ +--------------+ +-----------+ 750 |ClfrElement | +-->|Meter | +-->|Action | 751 | Id=103 | | | Id=103 | | | Id=103 | 752 | ClfrId=1 | | | SucceedNext -+--+ | Next -----+---->... 753 | Order=NA | | | FailNext ----+->... | Specific -+-+ 754 | Next ------+--+ | Specific -+ | | Type=Spcf | | 755 | Specific --+-+ +-----------+--+ +-----------+ | 756 +------------+ | | +-------+ 757 | +-------+ | +--------+ | +-----------+ 758 +-->|Filter3| +-->|TBMeter3| +-->|CounterAct3| 759 +-------+ +--------+ +-----------+ 761 Figure 3: Data Path Example Part 1 763 +-------------+ +------------------+ +----------------------+ 764 ---->|Q | +->|Scheduler | +->|Scheduler | 765 | Id=EF | | | Id=DiffServ | | | Id=Shaping | 766 | Next -------+---+ | Next ------------+--+ | Next=zeroDotZero | 767 | SchdParam -+| | | Method=priorityq | | Method=priorityq | 768 +------------++ | | SchdParam -+ | | SchdParam=zeroDotZero| 769 | | +------------+-----+ +----------------------+ 770 +------------+ | | 771 | | +------------+ 772 | +-----------+ | | 773 +->|SchdParamEF| | | +----------------+ 774 +-----------+ | +->|SchdParamShaping| 775 | +----------------+ 776 | 777 | 778 +-----------------------------------------+ 779 | 780 | 781 +----------------+ +-------------+ | 782 --->|AlgDrop | +->|Q | | 783 | Id=AF11 | | | Id=AF1X | +-------------+ | 784 | Type=randomDrop| | | Next -------+--->|Scheduler | | 785 | Next ----------+-+--+ | SchdParam -+| | Id=AF | | 786 | QMeasure ------+-+ | +------------++ | Next -------+--+ 787 | QThreshold | | | | Method=wfq | 788 | Specific -+ | | +------------+ | SchdParam -+| 789 +-----------+----+ | | +------------++ 790 | | | +-------------+ | 791 +-----------+ | +->|SchdParamAF1X| +------------+ 792 | +--------------+ | +-------------+ | 793 +->|RandomDropAF11| | | +-----------+ 794 +--------------+ | +->|SchdParamAF| 795 | +-----------+ 796 +----------------+ | 797 --->|AlgDrop | | 798 | Id=AF12 | | 799 | Type=randomDrop| | 800 | Next ----------+-+--+ 801 | QMeasure ------+-+ 802 | QThreshold | 803 | Specific -+ | 804 +-----------+----+ 805 | 806 +-----------+ 807 | +--------------+ 808 +->|RandomDropAF12| 809 +--------------+ 811 Figure 4: Data Path Example Part 2 813 4.1. Data Path and Classifier Example Discussion 815 The example in Figure 4 shows a single DataPathTable entry feeding into 816 a single Classifier entry, with three ClfrElement and Filter Table entry 817 pairs belonging to this Classifier 1. Notice the three Filters used 818 here must completely classify all the traffic presented to this data 819 path. 821 Another level of classification can be defined that follows the Action 822 function datapath elements in Figure 3. This second level of 823 classifiers and their subsequent function datapath elements would be 824 considered as in another TCB. 826 This multi-level classification allow the construction of traffic 827 seperations like: 828 if (dept1) 829 { 830 if (appl1) then take dept1-appl1-action. 831 if (appl2) then take dept1-appl2-action. 832 if (appl3) then take dept1-appl3-action. 833 } 834 if (dept2) 835 { 836 if (appl1) then take dept2-appl1-action. 837 if (appl2) then take dept2-appl2-action. 838 if (appl3) then take dept2-appl3-action. 839 } 840 if (dept3) 841 { 842 if (appl1) then take dept3-appl1-action. 843 if (appl2) then take dept3-appl2-action. 844 if (appl3) then take dept3-appl3-action. 845 } 847 The filters for appl1, appl2, appl3 may be reused for the above setup. 849 4.2. Meter and Action Example Discussion 851 A simple Meter that can be parameterized by a single TBMeter entry is 852 shown here. For Metering types that require mutliple TBMeter entries 853 for parameterization, a second level Meter and TBMeter table entries may 854 be used. For example, for trTCM, with the first level TBMeter entry 855 used for Peak Information Token Bucket, the first level SucceedNext 856 points to the second level Meter entry, with second level TBMeter entry 857 used for Committed Information Token Bucket. 859 Notice the CountAct Action is shown in Figure 3. This is purposely done 860 to indicate all datapaths should have at least one CountAct Action. 861 Other actions can be pointed to by the Next pointer of the CountAct 862 action, like DSCPMarkAct action. 864 4.3. Queue and Scheduler Example Discussion 866 Example in Figure 4 shows three classified input traffic streams, EF, 867 AF11, and AF12, feeding into their respective queue and algorithmic 868 droppers. After their respective dropping process, the AF traffic 869 streams feed into the same queue, QAF1X. 871 A Scheduler, AF, is shown in Figure 4, as the sink for AF1X queue 872 traffic, servicing AF1X queue with scheduling parameters indicated by 873 SchdParamAF1X. This scheduler is used to service traffic from AF1X, 874 AF2X, AF3X queues using weighted fair queueing method. The AF2X and 875 AF3X queues are not shown in Figure 4, they can be very much like AF1X 876 queue setup. 878 Another traffic stream, EF, is handled by the EF queue. Scheduler 879 DiffServ services output of EF queue using SchdParamEF, and output of AF 880 scheduler using SchdParamAF, with Weighted Fair Queueing method. 882 Notice all the diffserv traffic may go out on a link with traffic 883 shaping. The traffic shaping can be parameterize using the Shaping 884 Scheduler in Figure 4. For shaping, the diffServSchdParamMaxRate 885 attributes should be used. The output of the Shaping Scheduler is 886 indicated using its Next pointer with value of zeroDotZero, the output 887 port. 889 5. Conventions used in this MIB 891 5.1. The use of RowPointer 893 RowPointer is a textual convention used to identify a conceptual row in 894 an SNMP Table by pointing to one of its objects. In this MIB, it is used 895 in two ways: to indicate indirection and to indicate succession. 897 When used for indirection as in the diffServClassifierTable, the idea is 898 to allow other MIBs, including proprietary ones, to define new and 899 arcane classifiers - MAC headers, IPv4 and IPv6 headers, BGP Communities 900 and all sorts of other things - whilst still utilising the structures of 901 this MIB. This is a form of class inheritance (in "object oriented" 902 language): it allows base object definitions ("classes") to be extended 903 in proprietary or standard ways, in the future, by other documents. 905 When used for succession, it answers the question "what happens next?". 906 Rather than presume that the next table must be as specified in the 907 conceptual model [MODEL] and providing its index, the RowPointer takes 908 you to the MIB row representing that thing. In the diffServMeterTable, 909 for example, the diffServMeterFailNext RowPointer might take you to 910 another meter, while the diffServMeterSucceedNext RowPointer would take 911 you to an action. 913 NOTE -- the RowPointer construct is used to build the TCBs 914 described in [MODEL]: this MIB does not model TCBs directly - it 915 operates at a lower level of abstraction using only individual 916 elements, connected in succession by RowPointers. Therefore, the 917 concept of TCBs enclosing individual functional datapath elements 918 is not applicable to this MIB, although such a concept may be 919 employed by management tools that use this MIB. 921 It is possible that a path through a device following a set of 922 RowPointers is indeterminate i.e. it ends in a dangling RowPointer (or 923 potentially does in the case of a Meter element) should be treated by 924 the agent as if it were operationally deactivated. For example, if an 925 Action element has a dangling diffServActionNext RowPointer that does 926 not point to an existent table entry (and is not zeroDotZero), then none 927 of the subsequent elements in that particular chain should have any 928 effect on the traffic proceeding down this chain and the Classification 929 or Meter element which lead to this Action element is not considered to 930 be active. Other parts of the device configuration remain in effect, of 931 course, but this rule simply removes all ambiguity from the operational 932 system. 934 5.2. Conceptual row creation and deletion 936 A number of conceptual tables defined in this MIB use as an index an 937 arbitrary integer value, unique across the scope of the agent. In order 938 to help with multi-manager row-creation problems, a mechanism must be 939 provided to allow a manager to obtain unique values for such an index 940 and to ensure that, when used, the manager knows whether it got what it 941 wanted or not. 943 Typically, such a table has an associated NextFree variable e.g. 944 diffServClassifierNextFree which provides a suitable value for the index 945 of the next row to be created e.g. diffServClassifierId. A special 946 value, 0, is used to indicate that no more entries can be created by the 947 agent. The table also has a columnar Status attribute with RowStatus 948 syntax [6]. 950 If a manager attempts to create a conceptual row in the table (by a SET 951 operation that contains a varbind setting the Status to a value of 952 either createAndGo or createAndWait) and if the agent has sufficient 953 resources and has no other conceptual row with the same indices, the 954 agent will create the row and return success. If the agent has 955 insufficient resources or such a row is already existent then it returns 956 an error. A manager must be prepared to try again in such circumstances, 957 probably by re-reading the NextFree to obtain a new index value in case 958 a second manager had got in between the first manager's read of the 959 NextFree value and the first manager's row-creation attempt. The use of 960 RowStatus is covered in more detail in [6]. 962 6. Editorial information 964 966 6.1. Open Issues resolved in previous drafts 968 (0) Terminology is more in line with [MODEL], [POLTERM] and [DSTERM]. 969 Discarder -> "Algorithmic Dropper", "Monitor" -> "Counter" 970 "Classifier element" -> "Filter" 972 (1) Cascaded token-buckets is not equivalent to multi-rate token- 973 bucket: do we need to fix this by allowing a multi-rate TB in the 974 MIB? Or, by defining cascaded buckets to mean "multi-rate". (assume 975 the latter - see text in 2.3) 977 (2) Markers: model only describes DSCP-markers: do we need to be able 978 to extend this to other sorts (e.g. 802.1p), even if we do not 979 represent them in this MIB today? (yes). No MIB changes, just 980 words. 982 (3) Counters: should specific blocks include their own or is a "counter 983 action", as described in the Model, sufficient to count all paths 984 through a device? (as appropriate). Per-queue counters are 985 derivable from "action" ones. Per-classifier counters: may feed 986 through from clasifiers to distinct counter actions. 988 (4) Queue Sets: are these generally applicable? (no). The example in 989 section 2.5.1 is hard to follow: we should describe this example in 990 [MODEL] and then show how it maps to MIB in the MIB draft. - DONE 992 (5) Do we need scheduling units of "packets"? (NO) Should we use "kbps" 993 or just "bps" for rates? DONE - all rates are in kbps. 995 (6) Are "absolute" rates sufficient or should we include "relative to 996 line speed" ones as well? (yes) - DONE - explained that these are 997 interrelated. 999 (7) Scheduler weights vs. rates vs. priorities: this is confusing - 1000 suggest we stick to rates and priorities (see Model draft 7.1.2) - 1001 DONE. 1003 (8) Queue Measure table: 1005 o This allows for RIO - multiple averaging functions for the same 1006 queue: is this needed? OUT OF SCOPE. 1008 o mixes config with status objects - split these? N/A. 1010 o do we need floating-point representation for "weight"? N/A. 1012 o do we need MIB visibility for average queue depth? N/A. 1014 o do we need MIB-configurable averaging functions (sample 1015 weight/interval)? (maybe just "sample weight") - NO: averaging 1016 functions will be left out although framework allows for their 1017 inclusion separately. 1019 (9) Counter compliance: paste text from IF-MIB re line-speeds. Do you 1020 still have to do the low-speed counters for fast interfaces? YES. 1021 DONE. 1023 (10) Meters: are these mandatory for compliance? NO 1025 (11) Discussion material: move most of this to Model draft e.g. most of 1026 3.1, 3.3, "Dropper/discarder" part of 3.4, nearly all of 3.5. Just 1027 leave the "how does the MIB map from the Model" parts in the MIB 1028 draft, no general discussion. DONE. 1030 (12) Counters: merged in 32-bit and 64-bit counters - conformance 1031 statements sort out which ones must be implemented. This is 1032 consistent with [IFMIB]. DONE. 1034 (13) Droppers: we used to have a common "dropper" table that represented 1035 all of: dropAlways, randomDrop, tailDrop with just some parameters 1036 valid for the simpler ones. A simpler representation is to define 1037 specific dropper tables for each type (e.g. a single OID to point 1038 at for dropAlways since it is always the last action in a chain) 1039 but this would mean a larger number of (simpler) MIB objects. 1040 CHANGES: dropAlways is still an Action but the others are moved to 1041 a diffServAlgDropTable. This table can handle tail/head/random drop 1042 - others by extension. 1044 (14) Should TBMeterTable just AUGMENT the MeterTable, should it use same 1045 indices or are separate structures linked by RowPointers 1046 preferable? (same indices without RowPointer). 1048 (15) Do we need to model multiple queues feeding back into a single 1049 dropper algorithm? (yes). If so, the current single-queue pointer 1050 and threshold will not be adequate - should we leave them in? They 1051 will be useful for many, but not all, dropper algorithms. (yes) 1053 (17) We have concepts of "inbound" and "outbound" directions: but if we 1054 have a series of multiple TCBs on a given interface for the same 1055 direction (allowed by the model) then we do not have a way to 1056 indicate "this is the 1st one". Moreover, it is a somewhat 1057 convoluted process to then find the 2nd, 3rd etc. ones - you would 1058 have to follow the RowPointers to get there: should we explicitly 1059 have an index to enable/help these lookup operations? Note: this is 1060 not the same issue as needing a "precedence" for each filter entry 1061 of a classifier (yes - added another index to classifiers to 1062 represent what TCB they operate at for a given 1063 interface/direction). 1065 6.2. Open Issues resolved in this draft 1067 (13) Droppers: slight change to previous resolution. MIB can now handle 1068 tail/head/random drop using diffServAlgDropTable and 1069 diffServRandomDropTable. 1071 (18) Should manager be allowed to create Queue elements or should agent 1072 be in control of this? (the former) 1074 (19) Should manager be allowed to create Scheduler elements or should 1075 agent be in control of this? (the former) 1077 (20) Related to (17) above, do we also need a "TCB index" for elements 1078 other than classifiers? (no) 1080 (21) Do we need diffServAlgDropType of both "headDrop" and "tailDrop" or 1081 should we just represent the tail dropper by placing a dropper 1082 after the queue instead of before the queue, as linked by the 1083 diffServQNext and diffServAlgDropNext RowPointers? (the former - 1084 dropper is always in front of the queue in this model). 1086 (22) Do we need to support RED algorithms for algorithm parameter 1087 configuration and monitoring? If so, what variables are needed? 1088 (Added diffServRandomDropTable). 1090 (24) diffServAlgDropQThreshold needs UNITS (Bytes). 1092 (25) Dangling RowPointers: should we mandate that these are never 1093 permitted? Or just define the behaviour if they do dangle? (We 1094 define it such that elements that have dangling pointers, as well 1095 as upstream elements that point to them, are considered "not 1096 activated") 1098 (26) Discontinuity times for MIB counters - is 1099 ifCounterDiscontinuityTime adequate? (no: added 1100 diffServCountActDiscontTime). 1102 (27) How do we handle dropper algorithms that require additional 1103 classification information in order to do their job? If a 1104 Classifier is needed then create a new TCB for it at the point just 1105 before the dropper: use ordinary Classifier elements in this TCB. 1107 (28) Indexing of table entries and uniqueness hints: is TestAndIncr the 1108 correct tool to use? (no: RowStatus is the right tool for ensuring 1109 uniqueness; use a NextFree variable as a hint). 1111 (32) Miscellaneous clarifications - thanks Bob. 1113 6.3. Still Open Issues 1115 (16) Should the creation of counter actions be under the control of 1116 manager or agent: should a diffServActionEntry and 1117 diffServCountActEntry appear by magic (does the agent know what 1118 counters it can and cannot maintain on a given interface)? (no) If 1119 no, should diffServCountActEntry appear magically when a 1120 diffServAction element is created which points at the 1121 diffServCountActTable (then would be no need for 1122 diffServCountActStatus)? (no) 1124 (23) Do daughter entries of derived table entries need to exist 1125 independently of the parent? Examples are 1126 diffServMeterEntry/diffServTBMeterEntry, 1127 diffServActionEntry/diffServCountActEntry and 1128 diffServAlgDropEntry/diffServRandomDropEntry (assume they must be 1129 independent of the equivalent entry in diffServMeterTable which 1130 points at the TB table - needs diffServTBMeterStatus: daughters 1131 must be created explicitly by manager). 1133 (30) Related to (17) - multi-manager creation of TCBs: 1134 diffServClassifierId is unique across the agent, for all values of 1135 diffServClassifierTcb but there is no "next free" variable to 1136 report the next TCB to use. This can lead to a race condition when 1137 2 managers are duelling to create entries with the same value of 1138 diffServClassifierTcb. There are also legitimate reasons for 1139 different managers to be "creating" the *same* TCB so a 1140 conventional "next free" is not a good solution. Is this a rare 1141 enough occurence given a suitable choice of diffServClassifierTcb 1142 e.g. pseudo-random? (yes). 1144 (31) When inheritance is needed and parent/daughter share indexing, the 1145 parent often points to the daughter using a "Specific" attribute 1146 e.g. diffServMeterSpecific, diffServActionSpecific, 1147 diffServAlgDropSpecific. If this is a RowPointer and points to the 1148 associated row in the daughter's table, there is redundant 1149 information which gives scope for additional error cases. So, 1150 wherever possible, should we remove this redundant information by 1151 making the "Specific" attribute point only to the base of the 1152 daughter table and make it an OBJECT IDENTIFIER? The con is that 1153 this is an unusual use of MIB pointers (point at table base, not 1154 individual entries). 1156 7. MIB Outline 1158 The authors think a MIB outline will assist the reader and can be used 1159 as a quick reference. 1161 diffServMIBObjects OBJECT IDENTIFIER ::= { diffServMib 1 } 1162 diffServMIBConformance OBJECT IDENTIFIER ::= { diffServMib 2 } 1164 diffServDataPath OBJECT IDENTIFIER ::= { diffServMIBObjects 1 } 1166 diffServDataPathTable OBJECT-TYPE 1167 ::= { diffServDataPath 1 } 1168 diffServDataPathEntry OBJECT-TYPE 1169 INDEX { ifIndex, diffServDataPathIfDirection } 1170 ::= { diffServDataPathTable 1 } 1171 DiffServDataPathEntry ::= SEQUENCE { 1172 diffServDataPathIfDirection IfDirection, 1173 diffServDataPathStart RowPointer, 1174 diffServDataPathStatus RowStatus 1175 } 1177 diffServClassifier OBJECT IDENTIFIER ::= { diffServMIBObjects 2 } 1179 diffServClfrNextFree OBJECT-TYPE 1180 ::= { diffServClassifier 1 } 1181 diffServClfrTable OBJECT-TYPE 1182 ::= { diffServClassifier 2 } 1183 diffServClfrEntry OBJECT-TYPE 1184 INDEX { diffServClfrId } 1185 ::= { diffServClfrTable 1 } 1186 DiffServClfrEntry ::= SEQUENCE { 1187 diffServClfrId Unsigned32, 1188 diffServClfrStatus RowStatus 1189 } 1191 diffServClfrElementNextFree OBJECT-TYPE 1192 ::= { diffServClassifier 3 } 1193 diffServClfrElementTable OBJECT-TYPE 1194 ::= { diffServClassifier 4 } 1195 diffServClfrElementEntry OBJECT-TYPE 1196 INDEX { diffServClfrElementClfrId, diffServClfrElementId } 1197 ::= { diffServClfrElementTable 1 } 1198 DiffServClfrElementEntry ::= SEQUENCE { 1199 diffServClfrElementId Unsigned32, 1200 diffServClfrElementClfrId Unsigned32, 1201 diffServClfrElementOrder Unsigned32, 1202 diffServClfrElementNext RowPointer, 1203 diffServClfrElementSpecific RowPointer, 1204 diffServClfrElementStatus RowStatus 1205 } 1207 diffServSixTupleClfrNextFree OBJECT-TYPE 1208 ::= { diffServClassifier 5 } 1209 diffServSixTupleClfrTable OBJECT-TYPE 1210 ::= { diffServClassifier 6 } 1211 diffServSixTupleClfrEntry OBJECT-TYPE 1212 INDEX { diffServSixTupleClfrId } 1213 ::= { diffServSixTupleClfrTable 1 } 1214 DiffServSixTupleClfrEntry ::= SEQUENCE { 1215 diffServSixTupleClfrId Unsigned32, 1216 diffServSixTupleClfrDstAddrType InetAddressType, 1217 diffServSixTupleClfrDstAddr InetAddress, 1218 diffServSixTupleClfrDstAddrMask Unsigned32, 1219 diffServSixTupleClfrSrcAddrType InetAddressType, 1220 diffServSixTupleClfrSrcAddr InetAddress, 1221 diffServSixTupleClfrSrcAddrMask Unsigned32, 1222 diffServSixTupleClfrDscp Dscp, 1223 diffServSixTupleClfrProtocol Unsigned32, 1224 diffServSixTupleClfrDstL4PortMin SixTupleClfrL4Port, 1225 diffServSixTupleClfrDstL4PortMax SixTupleClfrL4Port, 1226 diffServSixTupleClfrSrcL4PortMin SixTupleClfrL4Port, 1227 diffServSixTupleClfrSrcL4PortMax SixTupleClfrL4Port, 1228 diffServSixTupleClfrStatus RowStatus 1229 } 1230 diffServMeter OBJECT IDENTIFIER ::= { diffServMIBObjects 3 } 1232 diffServMeterNextFree OBJECT-TYPE 1233 ::= { diffServMeter 1 } 1234 diffServMeterTable OBJECT-TYPE 1235 ::= { diffServMeter 2 } 1236 diffServMeterEntry OBJECT-TYPE 1237 INDEX { diffServMeterId } 1238 ::= { diffServMeterTable 1 } 1239 DiffServMeterEntry ::= SEQUENCE { 1240 diffServMeterId Unsigned32, 1241 diffServMeterSucceedNext RowPointer, 1242 diffServMeterFailNext RowPointer, 1243 diffServMeterSpecific RowPointer, 1244 diffServMeterStatus RowStatus 1245 } 1247 diffServTBMeterNextFree OBJECT-TYPE 1248 ::= { diffServMeter 3 } 1249 diffServTBMeterTable OBJECT-TYPE 1250 ::= { diffServMeter 4 } 1251 diffServTBMeterEntry OBJECT-TYPE 1252 INDEX { diffServTBMeterId } 1253 ::= { diffServTBMeterTable 1 } 1254 DiffServTBMeterEntry ::= SEQUENCE { 1255 diffServTBMeterId Unsigned32, 1256 diffServTBMeterType INTEGER, 1257 diffServTBMeterRate Unsigned32, 1258 diffServTBMeterBurstSize BurstSize, 1259 diffServTBMeterInterval Unsigned32, 1260 diffServTBMeterStatus RowStatus 1261 } 1263 diffServAction OBJECT IDENTIFIER ::= { diffServMIBObjects 4 } 1265 diffServActionNextFree OBJECT-TYPE 1266 ::= { diffServAction 1 } 1267 diffServActionTable OBJECT-TYPE 1268 ::= { diffServAction 2 } 1269 diffServActionEntry OBJECT-TYPE 1270 INDEX { diffServActionId } 1271 ::= { diffServActionTable 1 } 1272 DiffServActionEntry ::= SEQUENCE { 1273 diffServActionId Unsigned32, 1274 diffServActionNext RowPointer, 1275 diffServActionSpecific RowPointer, 1276 diffServActionType INTEGER, 1277 diffServActionStatus RowStatus 1278 } 1280 diffServDscpMarkActNextFree OBJECT-TYPE 1281 ::= { diffServAction 3 } 1282 diffServDscpMarkActTable OBJECT-TYPE 1283 ::= { diffServAction 4 } 1284 diffServDscpMarkActEntry OBJECT-TYPE 1285 INDEX { diffServDscpMarkActId } 1286 ::= { diffServDscpMarkActTable 1 } 1287 DiffServDscpMarkActEntry ::= SEQUENCE { 1288 diffServDscpMarkActId Unsigned32, 1289 diffServDscpMarkActDscp Dscp, 1290 diffServDscpMarkActStatus RowStatus 1291 } 1293 diffServCountActNextFree OBJECT-TYPE 1294 ::= { diffServAction 5 } 1295 diffServCountActTable OBJECT-TYPE 1296 ::= { diffServAction 6 } 1297 diffServCountActEntry OBJECT-TYPE 1298 INDEX { diffServCountActId } 1299 ::= { diffServCountActTable 1 } 1300 DiffServCountActEntry ::= SEQUENCE { 1301 diffServCountActId Unsigned32, 1302 diffServCountActOctets Counter32, 1303 diffServCountActHCOctets Counter64, 1304 diffServCountActPkts Counter32, 1305 diffServCountActHCPkts Counter64, 1306 diffServCountActDiscontTime TimeStamp, 1307 diffServCountActStatus RowStatus 1308 } 1310 diffServAlgDrop OBJECT IDENTIFIER ::= { diffServMIBObjects 5 } 1312 diffServAlgDropNextFree OBJECT-TYPE 1313 ::= { diffServAlgDrop 1 } 1314 diffServAlgDropTable OBJECT-TYPE 1315 ::= { diffServAlgDrop 2 } 1316 diffServAlgDropEntry OBJECT-TYPE 1317 INDEX { diffServAlgDropId } 1318 ::= { diffServAlgDropTable 1 } 1319 DiffServAlgDropEntry ::= SEQUENCE { 1320 diffServAlgDropId Unsigned32, 1321 diffServAlgDropType INTEGER, 1322 diffServAlgDropNext RowPointer, 1323 diffServAlgDropQMeasure RowPointer, 1324 diffServAlgDropQThreshold Unsigned32, 1325 diffServAlgDropSpecific RowPointer, 1326 diffServAlgDropOctets Counter32, 1327 diffServAlgDropHCOctets Counter64, 1328 diffServAlgDropPkts Counter32, 1329 diffServAlgDropHCPkts Counter64, 1330 diffServAlgDropStatus RowStatus 1331 } 1333 diffServRandomDropNextFree OBJECT-TYPE 1334 ::= { diffServAlgDrop 3 } 1335 diffServRandomDropTable OBJECT-TYPE 1336 ::= { diffServAlgDrop 4 } 1337 diffServRandomDropEntry OBJECT-TYPE 1338 INDEX { diffServRandomDropId } 1339 ::= { diffServRandomDropTable 1 } 1340 DiffServRandomDropEntry ::= SEQUENCE { 1341 diffServRandomDropId Unsigned32, 1342 diffServRandomDropMinThreshBytes Unsigned32, 1343 diffServRandomDropMinThreshPkts Unsigned32, 1344 diffServRandomDropMaxThreshBytes Unsigned32, 1345 diffServRandomDropMaxThreshPkts Unsigned32, 1346 diffServRandomDropInvProbMax Unsigned32, 1347 diffServRandomDropInvWeight Unsigned32, 1348 diffServRandomDropSamplingRate Unsigned32, 1349 diffServRandomDropStatus RowStatus 1350 } 1352 diffServQueue OBJECT IDENTIFIER ::= { diffServMIBObjects 6 } 1354 diffServQNextFree OBJECT-TYPE 1355 ::= { diffServQueue 1 } 1356 diffServQTable OBJECT-TYPE 1357 ::= { diffServQueue 2 } 1358 diffServQEntry OBJECT-TYPE 1359 INDEX { diffServQId } 1360 ::= { diffServQTable 1 } 1361 DiffServQEntry ::= SEQUENCE { 1362 diffServQId Unsigned32, 1363 diffServQNext RowPointer, 1364 diffServQSchdParam RowPointer, 1365 diffServQStatus RowStatus 1366 } 1368 diffServScheduler OBJECT IDENTIFIER ::= { diffServMIBObjects 7 } 1370 diffServSchedulerNextFree OBJECT-TYPE 1371 ::= { diffServScheduler 1 } 1372 diffServSchedulerTable OBJECT-TYPE 1373 ::= { diffServScheduler 2 } 1374 diffServSchedulerEntry OBJECT-TYPE 1375 INDEX { diffServSchedulerId } 1376 ::= { diffServSchedulerTable 1 } 1377 DiffServSchedulerEntry ::= SEQUENCE { 1378 diffServSchedulerId Unsigned32, 1379 diffServSchedulerNext RowPointer, 1380 diffServSchedulerMethod INTEGER, 1381 diffServSchedulerSchdParam RowPointer, 1382 diffServSchedulerStatus RowStatus 1383 } 1385 diffServSchdParamNextFree OBJECT-TYPE 1386 ::= { diffServScheduler 3 } 1387 diffServSchdParamTable OBJECT-TYPE 1388 ::= { diffServScheduler 4 } 1389 diffServSchdParamEntry OBJECT-TYPE 1390 INDEX { diffServSchdParamId } 1391 ::= { diffServSchdParamTable 1 } 1392 DiffServSchdParamEntry ::= SEQUENCE { 1393 diffServSchdParamId Unsigned32, 1394 diffServSchdParamPriority Unsigned32, 1395 diffServSchdParamMinRateAbs Unsigned32, 1396 diffServSchdParamMinRateRel Unsigned32, 1397 diffServSchdParamMaxRateAbs Unsigned32, 1398 diffServSchdParamMaxRateRel Unsigned32, 1399 diffServSchdParamStatus RowStatus 1400 } 1401 8. MIB Definition 1403 DIFF-SERV-MIB DEFINITIONS ::= BEGIN 1405 IMPORTS 1406 Integer32, Unsigned32, Counter32, Counter64, 1407 MODULE-IDENTITY, OBJECT-TYPE, zeroDotZero, mib-2 1408 FROM SNMPv2-SMI 1409 TEXTUAL-CONVENTION, RowStatus, RowPointer, TimeStamp 1410 FROM SNMPv2-TC 1411 MODULE-COMPLIANCE, OBJECT-GROUP 1412 FROM SNMPv2-CONF 1413 ifIndex 1414 FROM IF-MIB 1415 InetAddressType, InetAddress 1416 FROM INET-ADDRESS-MIB 1417 BurstSize 1418 FROM INTEGRATED-SERVICES-MIB; 1420 diffServMib MODULE-IDENTITY 1421 LAST-UPDATED "200011030000Z" 1422 ORGANIZATION "IETF Diffserv WG" 1423 CONTACT-INFO 1424 " Fred Baker 1425 Cisco Systems 1426 519 Lado Drive 1427 Santa Barbara, CA 93111, USA 1428 E-mail: fred@cisco.com 1430 Kwok Ho Chan 1431 Nortel Networks 1432 600 Technology Park Drive 1433 Billerica, MA 01821, USA 1434 E-mail: khchan@nortelnetworks.com 1435 Andrew Smith 1436 E-mail: ah_smith@pacbell.net" 1437 DESCRIPTION 1438 "This MIB defines the objects necessary to manage a 1439 device that uses the Differentiated Services Archi- 1440 tecture described in RFC 2475 and the Informal 1441 Management Model for DiffServ Routers in draft-ietf- 1442 diffserv-model-04.txt." 1443 REVISION "200011030000Z" 1444 DESCRIPTION 1445 "Initial version, published as RFC xxxx." 1446 ::= { mib-2 12345 } -- anybody who uses this unassigned 1447 -- number deserves the wrath of IANA 1449 diffServMIBObjects OBJECT IDENTIFIER ::= { diffServMib 1 } 1450 diffServMIBConformance OBJECT IDENTIFIER ::= { diffServMib 2 } 1452 -- These textual conventions have no effect on either the syntax 1453 -- nor the semantics of any managed object. Objects defined 1454 -- using this convention are always encoded by means of the 1455 -- rules that define their primitive type. 1457 Dscp ::= TEXTUAL-CONVENTION 1458 DISPLAY-HINT "d" 1459 STATUS current 1460 DESCRIPTION 1461 "The IP header Diffserv Code-Point that may be used 1462 for discriminating or marking a traffic stream. The 1463 value -1 is used to indicate a wildcard i.e. any 1464 value." 1465 SYNTAX Integer32 (-1 | 0..63) 1467 SixTupleClfrL4Port ::= TEXTUAL-CONVENTION 1468 DISPLAY-HINT "d" 1469 STATUS current 1470 DESCRIPTION 1471 "A value indicating a Layer-4 protocol port number." 1472 SYNTAX Unsigned32 (0..65535) 1474 IfDirection ::= TEXTUAL-CONVENTION 1475 STATUS current 1476 DESCRIPTION 1477 "Specifies a direction of data travel on an inter- 1478 face. 'inbound' traffic is operated on during recep- 1479 tion from the interface, while 'outbound' traffic is 1480 operated on prior to transmission on the interface." 1481 SYNTAX INTEGER { 1482 inbound(1), -- ingress interface 1483 outbound(2) -- egress interface 1484 } 1486 -- 1487 -- Data Path 1488 -- 1489 diffServDataPath OBJECT IDENTIFIER ::= { diffServMIBObjects 1 } 1491 -- 1492 -- Data Path Table 1493 -- 1494 -- The Data Path Table enumerates the Differentiated Services 1495 -- Data Paths within this device. Each entry in this table 1496 -- is indexed by ifIndex and ifDirection. Each entry provides 1497 -- the first diffserv functional datapath element to process data 1498 -- flow for each specific datapath. This table should have two 1499 -- entries for each interface on this device; ingress and egress. 1500 -- 1501 -- Notice all diffserv functional datapath elements linked together 1502 -- using their individual next pointers and anchored by an entry 1503 -- of the diffServDataPathTable must belong to the same datapath. 1504 -- The use of next pointer to point to diffserv functional datapath 1505 -- element of a different datapath is not allowed. 1506 -- 1508 diffServDataPathTable OBJECT-TYPE 1509 SYNTAX SEQUENCE OF DiffServDataPathEntry 1510 MAX-ACCESS not-accessible 1511 STATUS current 1512 DESCRIPTION 1513 "The data path table defines the data paths in this 1514 device. Each data path is defined by the interface 1515 and traffic direction. The first diffserv functional 1516 datapath element to handle traffic for this data path 1517 is defined by a RowPointer, diffServDataPathStart, in 1518 the entries of this table." 1519 ::= { diffServDataPath 1 } 1521 diffServDataPathEntry OBJECT-TYPE 1522 SYNTAX DiffServDataPathEntry 1523 MAX-ACCESS not-accessible 1524 STATUS current 1525 DESCRIPTION 1526 "An entry in the data path table describes a single 1527 diffserv datapath in this device." 1528 INDEX { ifIndex, diffServDataPathIfDirection } 1529 ::= { diffServDataPathTable 1 } 1531 DiffServDataPathEntry ::= SEQUENCE { 1532 diffServDataPathIfDirection IfDirection, 1533 diffServDataPathStart RowPointer, 1534 diffServDataPathStatus RowStatus 1535 } 1537 diffServDataPathIfDirection OBJECT-TYPE 1538 SYNTAX IfDirection 1539 MAX-ACCESS not-accessible 1540 STATUS current 1541 DESCRIPTION 1542 "Specifies the direction for which this data path 1543 entry applies on this interface." 1544 ::= { diffServDataPathEntry 1 } 1546 diffServDataPathStart OBJECT-TYPE 1547 SYNTAX RowPointer 1548 MAX-ACCESS read-create 1549 STATUS current 1550 DESCRIPTION 1551 "This selects the first diffserv functional datapath 1552 element to handle traffic for this data path. This 1553 RowPointer should point to an instance of one of: 1554 diffServClfrEntry 1555 diffServMeterEntry 1556 diffServActionEntry 1557 diffServAlgDropEntry 1558 diffServQEntry 1560 A value of zeroDotZero in this attribute indicates no 1561 further Diffserv treatment is performed on traffic of 1562 this datapath. 1564 If the row pointed to does not exist, this whole 1565 diffserv datapath is ignored." 1566 ::= { diffServDataPathEntry 2 } 1568 diffServDataPathStatus OBJECT-TYPE 1569 SYNTAX RowStatus 1570 MAX-ACCESS read-create 1571 STATUS current 1572 DESCRIPTION 1573 "The RowStatus variable controls the activation, 1574 deactivation, or deletion of a row/entry. Any writ- 1575 able variable may be modified whether the row is 1576 active or notInService." 1577 ::= { diffServDataPathEntry 3 } 1579 -- 1580 -- Classifiers 1581 -- 1583 diffServClassifier OBJECT IDENTIFIER ::= { diffServMIBObjects 2 } 1585 -- 1586 -- Classifier Table 1587 -- 1588 -- Classifier allows multiple classifier elements, of same or different 1589 -- types, to be used together. 1590 -- A classifier must completely classify all packets presented to it, 1591 -- this means all traffic handled by a classifier must match 1592 -- at least one classifier element within the classifier, 1593 -- with the classifier element parameters specified by a filter. 1594 -- 1595 -- If there is ambiguity between classifier elements of different 1596 -- classifier, the precedence is indicated by the order the classifiers 1597 -- are linked, the first classifier in the link is applied to the 1598 -- traffic first. 1599 -- 1601 diffServClfrNextFree OBJECT-TYPE 1602 SYNTAX Unsigned32 1603 MAX-ACCESS read-only 1604 STATUS current 1605 DESCRIPTION 1606 "This object yields a value when read that is 1607 currently unused for a diffServClfrId instance. If a 1608 configuring system attempts to create a new row in 1609 the diffServClfrTable using this value, that opera- 1610 tion will fail if the value has, in the meantime, 1611 been used to create another row that is currently 1612 valid." 1613 ::= { diffServClassifier 1 } 1615 diffServClfrTable OBJECT-TYPE 1616 SYNTAX SEQUENCE OF DiffServClfrEntry 1617 MAX-ACCESS not-accessible 1618 STATUS current 1619 DESCRIPTION 1620 "This table enumerates all the diffserv classifier 1621 functional datapath elements of this device. The 1622 actual classification definitions are defined in 1623 diffServClfrElementTable entries belonging to each 1624 classifier." 1625 REFERENCE 1626 "[MODEL] section 4.1" 1627 ::= { diffServClassifier 2 } 1629 diffServClfrEntry OBJECT-TYPE 1630 SYNTAX DiffServClfrEntry 1631 MAX-ACCESS not-accessible 1632 STATUS current 1633 DESCRIPTION 1634 "An entry in the classifier table describes a single 1635 classifier. All classifier elements belonging to the 1636 same classifier uses the classifier's diffServClfrId 1637 in thier diffServClfrElementClfrId attribute." 1638 INDEX { diffServClfrId } 1639 ::= { diffServClfrTable 1 } 1641 DiffServClfrEntry ::= SEQUENCE { 1642 diffServClfrId Unsigned32, 1643 diffServClfrStatus RowStatus 1644 } 1646 diffServClfrId OBJECT-TYPE 1647 SYNTAX Unsigned32 1648 MAX-ACCESS not-accessible 1649 STATUS current 1650 DESCRIPTION 1651 "An index that enumerates the classifier entries. The 1652 set of such identifiers spans the whole agent. 1653 Managers should obtain new values for row creation in 1654 this table by reading diffServClfrNextFree." 1655 ::= { diffServClfrEntry 1 } 1657 diffServClfrStatus OBJECT-TYPE 1658 SYNTAX RowStatus 1659 MAX-ACCESS read-create 1660 STATUS current 1661 DESCRIPTION 1662 "The RowStatus variable controls the activation, 1663 deactivation, or deletion of a classifier. Any writ- 1664 able variable may be modified whether the row is 1665 active or notInService." 1666 ::= { diffServClfrEntry 2 } 1668 -- 1669 -- Classifier Element Table 1670 -- 1671 -- Entries in the classifier element table serves as 1672 -- the anchor for each classification pattern, defined 1673 -- in filter table entries. Each classifier element 1674 -- table entry also specifies the subsequent downstream 1675 -- diffserv functional datapath element when the 1676 -- classification pattern is satisfied. 1677 -- Each entry in the classifier element table describes 1678 -- one branch of the fan-out characteristic of a classifier 1679 -- indicated in [MODEL] section 4.1. A classifier is madeup 1680 -- of one or more classifier elements. 1681 -- 1683 diffServClfrElementNextFree OBJECT-TYPE 1684 SYNTAX Unsigned32 1685 MAX-ACCESS read-only 1686 STATUS current 1687 DESCRIPTION 1688 "This object yields a value when read that is 1689 currently unused for a diffServClfrElementId 1690 instance. If a configuring system attempts to create 1691 a new row in the diffServClfrElementTable using this 1692 value, that opera- tion will fail if the value has, 1693 in the meantime, been used to create another 1694 row that is currently valid." 1695 ::= { diffServClassifier 3 } 1697 diffServClfrElementTable OBJECT-TYPE 1698 SYNTAX SEQUENCE OF DiffServClfrElementEntry 1699 MAX-ACCESS not-accessible 1700 STATUS current 1701 DESCRIPTION 1702 "The classifier element table enumerates the rela- 1703 tionship between classification patterns and subse- 1704 quent downstream diffserv functional datapath ele- 1705 ments. Classification parameters are defined by 1706 entries of filter tables pointed to by 1707 diffServClfrElementSpecific. There can be filter 1708 tables of different types, and they can be inter- 1709 mixed and used within a classifier. An example of a 1710 filter table defined in this MIB is diffServSixTu- 1711 pleClfrTable, for IP Multi-Field Classifiers (MFCs). 1712 Filter tables for other filter types may be defined 1713 elsewhere." 1714 REFERENCE 1715 "[MODEL] section 4.1" 1716 ::= { diffServClassifier 4 } 1718 diffServClfrElementEntry OBJECT-TYPE 1719 SYNTAX DiffServClfrElementEntry 1720 MAX-ACCESS not-accessible 1721 STATUS current 1722 DESCRIPTION 1723 "An entry in the classifier element table describes a 1724 single element of the classifier." 1725 INDEX { diffServClfrElementClfrId, diffServClfrElementId } 1726 ::= { diffServClfrElementTable 1 } 1728 DiffServClfrElementEntry ::= SEQUENCE { 1729 diffServClfrElementId Unsigned32, 1730 diffServClfrElementClfrId Unsigned32, 1731 diffServClfrElementOrder Unsigned32, 1732 diffServClfrElementNext RowPointer, 1733 diffServClfrElementSpecific RowPointer, 1734 diffServClfrElementStatus RowStatus 1735 } 1736 diffServClfrElementId OBJECT-TYPE 1737 SYNTAX Unsigned32 1738 MAX-ACCESS not-accessible 1739 STATUS current 1740 DESCRIPTION 1741 "An index that enumerates the Classifier Element 1742 entries. The set of such identifiers spans the whole 1743 agent. Managers should obtain new values for row 1744 creation in this table by reading 1745 diffServClfrElementNextFree." 1746 ::= { diffServClfrElementEntry 1 } 1748 diffServClfrElementClfrId OBJECT-TYPE 1749 SYNTAX Unsigned32 1750 MAX-ACCESS not-accessible 1751 STATUS current 1752 DESCRIPTION 1753 "A classifier Id identifies which classifier this 1754 classifier element is a part of. This needs to be 1755 the value of diffServClfrId attribute for an existing 1756 row in diffServClfrTable." 1757 ::= { diffServClfrElementEntry 2 } 1759 diffServClfrElementOrder OBJECT-TYPE 1760 SYNTAX Unsigned32 1761 MAX-ACCESS read-create 1762 STATUS current 1763 DESCRIPTION 1764 "The relative order in which classifier elements are 1765 applied: higher numbers represent classifier ele- 1766 ment with higher precedence. Classifier elements 1767 with the same order must be unambiguous i.e. they 1768 must define non-overlapping patterns, and are con- 1769 sidered to be applied simultaneously to the 1770 traffic stream. Clas- sifier elements with different 1771 order may overlap in their filters: the classif- 1772 ier element with the highest order that matches is 1773 taken. 1775 On a given interface, there must be a complete clas- 1776 sifier in place at all times in the ingress 1777 direction. This means that there will always be one 1778 or more filters that match every possible pat- tern 1779 that could be presented in an incoming packet. 1780 There is no such requirement in the egress direc- 1781 tion." 1782 DEFVAL { 0 } 1783 ::= { diffServClfrElementEntry 3 } 1785 diffServClfrElementNext OBJECT-TYPE 1786 SYNTAX RowPointer 1787 MAX-ACCESS read-create 1788 STATUS current 1789 DESCRIPTION 1790 "This attribute provides one branch of the fan-out 1791 functionality of a classifier described in [MODEL] 1792 section 4.1. 1794 This selects the next diffserv functional datapath 1795 element to handle traffic for this data path. This 1796 RowPointer should point to an instance of one of: 1797 diffServClfrEntry 1798 diffServMeterEntry 1799 diffServActionEntry 1800 diffServAlgDropEntry 1801 diffServQEntry 1803 A value of zeroDotZero in this attribute indicates no 1804 further Diffserv treatment is performed on traffic of 1805 this datapath. 1807 If the row pointed to does not exist, the treatment 1808 is as if this attribute contains a value of zero- 1809 DotZero." 1810 ::= { diffServClfrElementEntry 4 } 1812 diffServClfrElementSpecific OBJECT-TYPE 1813 SYNTAX RowPointer 1814 MAX-ACCESS read-create 1815 STATUS current 1816 DESCRIPTION 1817 "A pointer to a valid entry in another table, 1818 filter table, that describes the applicable classif- 1819 ication parameters, e.g. an entry in diffServSixTu- 1820 pleClfrTable. 1822 If the row pointed to does not exist, the classifier 1823 element is ignored. 1825 The value zeroDotZero is interpreted to match any- 1826 thing not matched by another classifier element - 1827 only one such entry may exist for each classifier." 1828 DEFVAL { zeroDotZero } 1829 ::= { diffServClfrElementEntry 5 } 1831 diffServClfrElementStatus OBJECT-TYPE 1832 SYNTAX RowStatus 1833 MAX-ACCESS read-create 1834 STATUS current 1835 DESCRIPTION 1836 "The RowStatus variable controls the activation, 1837 deactivation, or deletion of a classifier element. 1838 Any writ- able variable may be modified whether 1839 the row is active or notInService." 1840 ::= { diffServClfrElementEntry 6 } 1842 -- 1843 -- IP Six-Tuple Classification Table 1844 -- 1845 -- Classification based on 6 different fields in the IP 1846 -- header. This is intended to be IP-version-independent. 1847 -- Filters, entries in this table, may be shared, pointed to, 1848 -- by multiple diffServClfrElementEntry, of same or different 1849 -- datapaths in the same system. 1850 -- 1852 diffServSixTupleClfrNextFree OBJECT-TYPE 1853 SYNTAX Unsigned32 1854 MAX-ACCESS read-only 1855 STATUS current 1856 DESCRIPTION 1857 "This object yields a value when read that is currently unused 1858 for a diffServSixTupleClfrId instance. 1859 If a configuring system attempts to create a new row 1860 in the diffServSixTupleClfrTable using this value, that operation 1861 will fail if the value has, in the meantime, been used 1862 to create another row that is currently valid." 1863 ::= { diffServClassifier 5 } 1865 diffServSixTupleClfrTable OBJECT-TYPE 1866 SYNTAX SEQUENCE OF DiffServSixTupleClfrEntry 1867 MAX-ACCESS not-accessible 1868 STATUS current 1869 DESCRIPTION 1870 "A table of IP Six-Tuple Classifier filter entries 1871 that a system may use to identify IP traffic." 1872 REFERENCE 1873 "[MODEL] section 4.2.2" 1874 ::= { diffServClassifier 6 } 1876 diffServSixTupleClfrEntry OBJECT-TYPE 1877 SYNTAX DiffServSixTupleClfrEntry 1878 MAX-ACCESS not-accessible 1879 STATUS current 1880 DESCRIPTION 1881 "An IP Six-Tuple Classifier entry describes a single 1882 filter." 1883 INDEX { diffServSixTupleClfrId } 1884 ::= { diffServSixTupleClfrTable 1 } 1886 DiffServSixTupleClfrEntry ::= SEQUENCE { 1887 diffServSixTupleClfrId Unsigned32, 1888 diffServSixTupleClfrDstAddrType InetAddressType, 1889 diffServSixTupleClfrDstAddr InetAddress, 1890 diffServSixTupleClfrDstAddrMask Unsigned32, 1891 diffServSixTupleClfrSrcAddrType InetAddressType, 1892 diffServSixTupleClfrSrcAddr InetAddress, 1893 diffServSixTupleClfrSrcAddrMask Unsigned32, 1894 diffServSixTupleClfrDscp Dscp, 1895 diffServSixTupleClfrProtocol Unsigned32, 1896 diffServSixTupleClfrDstL4PortMin SixTupleClfrL4Port, 1897 diffServSixTupleClfrDstL4PortMax SixTupleClfrL4Port, 1898 diffServSixTupleClfrSrcL4PortMin SixTupleClfrL4Port, 1899 diffServSixTupleClfrSrcL4PortMax SixTupleClfrL4Port, 1900 diffServSixTupleClfrStatus RowStatus 1901 } 1903 diffServSixTupleClfrId OBJECT-TYPE 1904 SYNTAX Unsigned32 1905 MAX-ACCESS not-accessible 1906 STATUS current 1907 DESCRIPTION 1908 "An index that enumerates the Six Tuple Classifier 1909 filter entries. The set of such identifiers spans 1910 the whole agent. Managers should obtain new values 1911 for row creation in this table by reading 1912 diffServSixTupleClfrNextFree." 1913 ::= { diffServSixTupleClfrEntry 1 } 1915 diffServSixTupleClfrDstAddrType OBJECT-TYPE 1916 SYNTAX InetAddressType 1917 MAX-ACCESS read-create 1918 STATUS current 1919 DESCRIPTION 1920 "The type of IP destination address used by this 1921 classifier entry." 1922 ::= { diffServSixTupleClfrEntry 2 } 1924 diffServSixTupleClfrDstAddr OBJECT-TYPE 1925 SYNTAX InetAddress 1926 MAX-ACCESS read-create 1927 STATUS current 1928 DESCRIPTION 1929 "The IP address to match against the packet's desti- 1930 nation IP address." 1931 ::= { diffServSixTupleClfrEntry 3 } 1933 diffServSixTupleClfrDstAddrMask OBJECT-TYPE 1934 SYNTAX Unsigned32 1935 UNITS "bits" 1936 MAX-ACCESS read-create 1937 STATUS current 1938 DESCRIPTION 1939 "The length of a mask for the matching of the desti- 1940 nation IP address. Masks are constructed by setting 1941 bits in sequence from the most-significant bit down- 1942 wards for diffServSixTupleClfrDstAddrMask bits 1943 length. All other bits in the mask, up to the number 1944 needed to fill the length of the address diffServSix- 1945 TupleClfrDstAddr are cleared to zero. A zero bit in 1946 the mask then means that the corresponding bit in the 1947 address always matches." 1948 DEFVAL {0} 1949 ::= { diffServSixTupleClfrEntry 4 } 1951 diffServSixTupleClfrSrcAddrType OBJECT-TYPE 1952 SYNTAX InetAddressType 1953 MAX-ACCESS read-create 1954 STATUS current 1955 DESCRIPTION 1956 "The type of IP source address used by this classif- 1957 ier entry." 1958 ::= { diffServSixTupleClfrEntry 5 } 1960 diffServSixTupleClfrSrcAddr OBJECT-TYPE 1961 SYNTAX InetAddress 1962 MAX-ACCESS read-create 1963 STATUS current 1964 DESCRIPTION 1965 "The IP address to match against the source IP 1966 address of each packet." 1967 ::= { diffServSixTupleClfrEntry 6 } 1969 diffServSixTupleClfrSrcAddrMask OBJECT-TYPE 1970 SYNTAX Unsigned32 1971 UNITS "bits" 1972 MAX-ACCESS read-create 1973 STATUS current 1974 DESCRIPTION 1975 "The length of a mask for the matching of the source 1976 IP address. Masks are constructed by setting bits in 1977 sequence from the most-significant bit downwards for 1978 diffServSixTupleClfrSrcAddrMask bits length. All 1979 other bits in the mask, up to the number needed to 1980 fill the length of the address diffServSixTu- 1981 pleClfrSrcAddr are cleared to zero. A zero bit in 1982 the mask then means that the corresponding bit in the 1983 address always matches." 1984 DEFVAL {0} 1985 ::= { diffServSixTupleClfrEntry 7 } 1987 diffServSixTupleClfrDscp OBJECT-TYPE 1988 SYNTAX Dscp 1989 MAX-ACCESS read-create 1990 STATUS current 1991 DESCRIPTION 1992 "The value that the DSCP in the packet must have to 1993 match this entry. A value of -1 indicates that a 1994 specific DSCP value has not been defined and thus all 1995 DSCP values are considered a match." 1996 DEFVAL {-1} 1997 ::= { diffServSixTupleClfrEntry 8 } 1999 diffServSixTupleClfrProtocol OBJECT-TYPE 2000 SYNTAX Unsigned32 (0..255) 2001 MAX-ACCESS read-create 2002 STATUS current 2003 DESCRIPTION 2004 "The IP protocol to match against the IPv4 protocol 2005 number in the packet. A value of zero means match 2006 all." 2007 DEFVAL {0} 2008 ::= { diffServSixTupleClfrEntry 9 } 2010 diffServSixTupleClfrDstL4PortMin OBJECT-TYPE 2011 SYNTAX SixTupleClfrL4Port 2012 MAX-ACCESS read-create 2013 STATUS current 2014 DESCRIPTION 2015 "The minimum value that the layer-4 destination port 2016 number in the packet must have in order to match this 2017 classifier entry." 2018 DEFVAL {0} 2019 ::= { diffServSixTupleClfrEntry 10 } 2021 diffServSixTupleClfrDstL4PortMax OBJECT-TYPE 2022 SYNTAX SixTupleClfrL4Port 2023 MAX-ACCESS read-create 2024 STATUS current 2025 DESCRIPTION 2026 "The maximum value that the layer-4 destination port 2027 number in the packet must have in order to match this 2028 classifier entry. This value must be equal to or 2029 greater than the value specified for this entry in 2030 diffServSixTupleClfrDstL4PortMin." 2031 DEFVAL {65535} 2032 ::= { diffServSixTupleClfrEntry 11 } 2034 diffServSixTupleClfrSrcL4PortMin OBJECT-TYPE 2035 SYNTAX SixTupleClfrL4Port 2036 MAX-ACCESS read-create 2037 STATUS current 2038 DESCRIPTION 2039 "The minimum value that the layer-4 source port 2040 number in the packet must have in order to match this 2041 classifier entry." 2042 DEFVAL {0} 2043 ::= { diffServSixTupleClfrEntry 12 } 2045 diffServSixTupleClfrSrcL4PortMax OBJECT-TYPE 2046 SYNTAX SixTupleClfrL4Port 2047 MAX-ACCESS read-create 2048 STATUS current 2049 DESCRIPTION 2050 "The maximum value that the layer-4 source port 2051 number in the packet must have in oder to match this 2052 classifier entry. This value must be equal to or 2053 greater than the value specified for this entry in 2054 diffServSixTupleClfrSrcL4PortMin." 2055 DEFVAL {65535} 2056 ::= { diffServSixTupleClfrEntry 13 } 2058 diffServSixTupleClfrStatus OBJECT-TYPE 2059 SYNTAX RowStatus 2060 MAX-ACCESS read-create 2061 STATUS current 2062 DESCRIPTION 2063 "The RowStatus variable controls the activation, 2064 deactivation, or deletion of a classifier. Any writ- 2065 able variable may be modified whether the row is 2066 active or notInService." 2067 ::= { diffServSixTupleClfrEntry 14 } 2069 -- 2070 -- Meters 2071 -- 2073 diffServMeter OBJECT IDENTIFIER ::= { diffServMIBObjects 3 } 2075 -- 2076 -- This MIB supports a variety of Meters. It includes a 2077 -- specific definition for Meters whose parameter set can 2078 -- be modelled using Token Bucket parameters. 2079 -- Other metering parameter sets can be defined and used 2080 -- when necessary. 2081 -- 2082 -- Multiple meter elements may be logically cascaded using 2083 -- their diffServMeterSucceedNext and diffServMeterFailNext 2084 -- pointers if required. 2085 -- One example of this might be for an AF PHB implementation 2086 -- that uses multiple level conformance meters. 2087 -- 2088 -- Cascading of individual meter elements in the MIB is 2089 -- intended to be functionally equivalent to multiple level 2090 -- conformance determination of a packet. The sequential 2091 -- nature of the representation is merely a notational 2092 -- convenience for this MIB. 2093 -- 2094 -- For example: 2095 -- Conforming to RFC 2697, srTCM can be parameterized using 2096 -- two sets of diffServMeterEntry and diffServTBMeterEntry. 2097 -- With the first set parameterizing the Committed Burst Size 2098 -- token-bucket, second set parameterizing the Excess Burst Size 2099 -- token-bucket. With both set's diffServTBMeterRate parameters 2100 -- being used to reflect the Committed Information Rate value. 2101 -- 2102 -- Conforming to RFC 2698, trTCM can be parameterized using 2103 -- two sets of diffServMeterEntry and diffServTBMeterEntry. 2104 -- With the first set parameterizing the Peak Information Rate 2105 -- and Peak Burst Size token-bucket, second set parameterizing 2106 -- the Committed Information Rate and Committed Burst Size 2107 -- token-bucket. 2108 -- 2109 -- Conforming to RFC 2859, tswTCM can be parameterized using 2110 -- two sets of diffServMeterEntry and diffServTBMeterEntry. 2111 -- With the first set parameterizing the Committed Target Rate, 2112 -- second set parametering the Peak Target Rate. 2113 -- With both set's diffServTBMeterInterval being used to 2114 -- reflect the Average Interval as specified by RFC 2859. 2115 -- 2116 diffServMeterNextFree OBJECT-TYPE 2117 SYNTAX Unsigned32 2118 MAX-ACCESS read-only 2119 STATUS current 2120 DESCRIPTION 2121 "This object yields a value when read that is 2122 currently unused for a diffServMeterId instance. If 2123 a configuring system attempts to create a new row in 2124 the diffServMeterTable using this value, that opera- 2125 tion will fail if the value has, in the meantime, 2126 been used to create another row that is currently 2127 valid." 2128 ::= { diffServMeter 1 } 2130 diffServMeterTable OBJECT-TYPE 2131 SYNTAX SEQUENCE OF DiffServMeterEntry 2132 MAX-ACCESS not-accessible 2133 STATUS current 2134 DESCRIPTION 2135 "This table enumerates specific meters that a system 2136 may use to police, or shape, a stream of traffic. The 2137 traffic stream to be metered is determined by the 2138 diffserv functional datapath element(s) upstream of 2139 the meter i.e. by the object(s) that point to each 2140 entry in this table. This may include all traffic on 2141 an interface. 2143 Specific meter details are to be found in table entry 2144 referenced by diffServMeterSpecific." 2145 REFERENCE 2146 "[MODEL] section 5.1" 2147 ::= { diffServMeter 2 } 2149 diffServMeterEntry OBJECT-TYPE 2150 SYNTAX DiffServMeterEntry 2151 MAX-ACCESS not-accessible 2152 STATUS current 2153 DESCRIPTION 2154 "An entry in the meter table describes a single con- 2155 formance level of a meter." 2156 INDEX { diffServMeterId } 2157 ::= { diffServMeterTable 1 } 2159 DiffServMeterEntry ::= SEQUENCE { 2160 diffServMeterId Unsigned32, 2161 diffServMeterSucceedNext RowPointer, 2162 diffServMeterFailNext RowPointer, 2163 diffServMeterSpecific RowPointer, 2164 diffServMeterStatus RowStatus 2165 } 2167 diffServMeterId OBJECT-TYPE 2168 SYNTAX Unsigned32 2169 MAX-ACCESS not-accessible 2170 STATUS current 2171 DESCRIPTION 2172 "An index that enumerates the Meter entries. The set 2173 of such identifiers spans the whole agent. Managers 2174 should obtain new values for row creation in this 2175 table by reading diffServMeterNextFree." 2176 ::= { diffServMeterEntry 1 } 2178 diffServMeterSucceedNext OBJECT-TYPE 2179 SYNTAX RowPointer 2180 MAX-ACCESS read-create 2181 STATUS current 2182 DESCRIPTION 2183 "If the traffic does conform, this selects the next 2184 diffserv functional datapath element to handle 2185 traffic for this data path. This RowPointer should 2186 point to an instance of one of: 2187 diffServClfrEntry 2188 diffServMeterEntry 2189 diffServActionEntry 2190 diffServAlgDropEntry 2191 diffServQEntry 2193 A value of zeroDotZero in this attribute indicates no 2194 further Diffserv treatment is performed on traffic of 2195 this datapath. 2197 If the row pointed to does not exist, the treatment 2198 is as if this attribute contains a value of zero- 2199 DotZero." 2200 DEFVAL { zeroDotZero } 2201 ::= { diffServMeterEntry 2 } 2203 diffServMeterFailNext OBJECT-TYPE 2204 SYNTAX RowPointer 2205 MAX-ACCESS read-create 2206 STATUS current 2207 DESCRIPTION 2208 "If the traffic does not conform, this selects the 2209 next diffserv functional datapath element to handle 2210 traffic for this data path. This RowPointer should 2211 point to an instance of one of: 2212 diffServClfrEntry 2213 diffServMeterEntry 2214 diffServActionEntry 2215 diffServAlgDropEntry 2216 diffServQEntry 2218 A value of zeroDotZero in this attribute indicates no 2219 further Diffserv treatment is performed on traffic of 2220 this datapath. 2222 If the row pointed to does not exist, the treatment 2223 is as if this attribute contains a value of zero- 2224 DotZero." 2225 DEFVAL { zeroDotZero } 2226 ::= { diffServMeterEntry 3 } 2228 diffServMeterSpecific OBJECT-TYPE 2229 SYNTAX RowPointer 2230 MAX-ACCESS read-create 2231 STATUS current 2232 DESCRIPTION 2233 "This indicates the behaviour of the meter by point- 2234 ing to an entry containing detailed parameters. Note 2235 that entries in that specific table must be managed 2236 explicitly. 2238 For example, diffServMeterSpecific may point to an 2239 entry in diffServTBMeterTable, which contains an 2240 instance of a single set of Token Bucket parameters." 2241 ::= { diffServMeterEntry 4 } 2243 diffServMeterStatus OBJECT-TYPE 2244 SYNTAX RowStatus 2245 MAX-ACCESS read-create 2246 STATUS current 2247 DESCRIPTION 2248 "The RowStatus variable controls the activation, 2249 deactivation, or deletion of a meter. Any writable 2250 variable may be modified whether the row is active or 2251 notInService." 2252 ::= { diffServMeterEntry 5 } 2254 -- 2255 -- Token Bucket Meter Table 2256 -- 2257 -- Each entry in the Token Bucket Meter Table parameterize 2258 -- a single token bucket. Multiple token buckets can be 2259 -- used together to parameterize multiple levels of 2260 -- conformance. 2261 -- 2262 -- Note that an entry in the Token Bucket Meter Table can 2263 -- be shared, pointed to, by multiple diffServMeterTable 2264 -- entries. 2265 -- 2267 diffServTBMeterNextFree OBJECT-TYPE 2268 SYNTAX Unsigned32 2269 MAX-ACCESS read-only 2270 STATUS current 2271 DESCRIPTION 2272 "This object yields a value when read that is 2273 currently unused for a diffServTBMeterId instance. 2274 If a configuring system attempts to create a new row 2275 in the diffServTBMeterTable using this value, that 2276 operation will fail if the value has, in the mean- 2277 time, been used to create another row that is 2278 currently valid." 2279 ::= { diffServMeter 3 } 2281 diffServTBMeterTable OBJECT-TYPE 2282 SYNTAX SEQUENCE OF DiffServTBMeterEntry 2283 MAX-ACCESS not-accessible 2284 STATUS current 2285 DESCRIPTION 2286 "This table enumerates a single set of token bucket 2287 meter parameters that a system may use to police a 2288 stream of traffic. Such meters are modelled here as 2289 having a single rate and a single burst size." 2290 REFERENCE 2291 "[MODEL] section 5.1" 2292 ::= { diffServMeter 4 } 2294 diffServTBMeterEntry OBJECT-TYPE 2295 SYNTAX DiffServTBMeterEntry 2296 MAX-ACCESS not-accessible 2297 STATUS current 2298 DESCRIPTION 2299 "An entry that describes a single set of token bucket 2300 meter parameters." 2301 INDEX { diffServTBMeterId } 2302 ::= { diffServTBMeterTable 1 } 2304 DiffServTBMeterEntry ::= SEQUENCE { 2305 diffServTBMeterId Unsigned32, 2306 diffServTBMeterType INTEGER, 2307 diffServTBMeterRate Unsigned32, 2308 diffServTBMeterBurstSize BurstSize, 2309 diffServTBMeterInterval Unsigned32, 2310 diffServTBMeterStatus RowStatus 2311 } 2313 diffServTBMeterId OBJECT-TYPE 2314 SYNTAX Unsigned32 2315 MAX-ACCESS not-accessible 2316 STATUS current 2317 DESCRIPTION 2318 "An index that enumerates the TBMeter entries. The 2319 set of such identifiers spans the whole agent. 2320 Managers should obtain new values for row creation in 2321 this table by reading diffServTBMeterNextFree." 2322 ::= { diffServTBMeterEntry 1 } 2324 diffServTBMeterType OBJECT-TYPE 2325 SYNTAX INTEGER { 2326 other(1), -- not listed here 2327 tokenBucket(2), -- Simple Token Bucket 2328 avgRate(3), -- Average Rate 2329 srTCMBlind(4), -- srTCM, Color-blind 2330 srTCMAware(5), -- srTCM, Color-aware 2331 trTCMBlind(6), -- trTCM, Color-blind 2332 trTCMAware(7), -- trTCM, Color-aware 2333 tswTCM(8) -- tswTCM 2334 } 2335 MAX-ACCESS read-create 2336 STATUS current 2337 DESCRIPTION 2338 "The type of meter using parameters specified by this 2339 TBMeter entry. 2341 Value of tokenBucket(2) indicates the use of Two 2342 Parameter Token Bucket Meter as described in [MODEL] 2343 section 5.2.3. 2345 Value of avgRate(3) indicates the use of Average Rate 2346 Meter as described in [MODEL] section 5.2.1. 2348 Value of srTCMBlind(4) and srTCMAware(5) indicates 2349 the use of Single Rate Three Color Marker Metering as 2350 defined by RFC 2697, with `Color Blind' and `Color 2351 Aware' mode as described by the RFC. 2353 Value of trTCMBlind(6) and trTCMAware(7) indicates 2354 the use of Two Rate Three Color Marker Metering as 2355 defined by RFC 2698, with `Color Blind' and `Color 2356 Aware' mode as described by the RFC. 2358 Value of tswTCM(8) indicates the use of Time Sliding 2359 Window Three Color Marker Metering as defined by RFC 2360 2859." 2361 REFERENCE 2362 "[MODEL] section 5" 2363 ::= { diffServTBMeterEntry 2 } 2365 diffServTBMeterRate OBJECT-TYPE 2366 SYNTAX Unsigned32 2367 UNITS "kilobits per second" 2368 MAX-ACCESS read-create 2369 STATUS current 2370 DESCRIPTION 2371 "The token-bucket rate, in kilobits per second 2372 (kbps). This attribute is used for: 1. CIR in RFC 2373 2697 for srTCM 2. PIR and CIR in FRC 2698 for trTCM 2374 3. CTR and PTR in RFC 2859 for TSWTCM 4. AverageRate 2375 used in [MODEL] section 5." 2376 ::= { diffServTBMeterEntry 3 } 2378 diffServTBMeterBurstSize OBJECT-TYPE 2379 SYNTAX BurstSize 2380 UNITS "Bytes" 2381 MAX-ACCESS read-create 2382 STATUS current 2383 DESCRIPTION 2384 "The maximum number of bytes in a single transmission 2385 burst. This attribute is used for: 1. CBS and EBS in 2386 RFC 2697 for srTCM 2. CBS and PBS in FRC 2698 for 2387 trTCM 3. Burst Size used in [MODEL] section 5." 2388 ::= { diffServTBMeterEntry 4 } 2390 diffServTBMeterInterval OBJECT-TYPE 2391 SYNTAX Unsigned32 2392 UNITS "microseconds" 2393 MAX-ACCESS read-create 2394 STATUS current 2395 DESCRIPTION 2396 "The time interval used with the token bucket. For: 2397 1. Average Rate Meter, [MODEL] section 5.2.1, - 2398 Delta. 2. Simple Token Bucket Meter, [MODEL] section 2399 5.1, 2400 - time interval t. 3. RFC 2859 TSWTCM, - 2401 AVG_INTERVAL. 4. RFC 2697 srTCM, RFC 2698 trTCM, - 2402 token bucket 2403 update time interval." 2404 ::= { diffServTBMeterEntry 5 } 2406 diffServTBMeterStatus OBJECT-TYPE 2407 SYNTAX RowStatus 2408 MAX-ACCESS read-create 2409 STATUS current 2410 DESCRIPTION 2411 "The RowStatus variable controls the activation, 2412 deactivation, or deletion of a meter. Any writable 2413 variable may be modified whether the row is active or 2414 notInService." 2415 ::= { diffServTBMeterEntry 6 } 2417 -- 2418 -- Actions 2419 -- 2421 diffServAction OBJECT IDENTIFIER ::= { diffServMIBObjects 4 } 2423 -- 2424 -- The Action Table allows enumeration of the different 2425 -- types of actions to be applied to a traffic flow. 2426 -- 2428 diffServActionNextFree OBJECT-TYPE 2429 SYNTAX Unsigned32 2430 MAX-ACCESS read-only 2431 STATUS current 2432 DESCRIPTION 2433 "This object yields a value when read that is 2434 currently unused for a diffServActionId instance. If 2435 a configuring system attempts to create a new row in 2436 the diffServActionTable using this value, that opera- 2437 tion will fail if the value has, in the meantime, 2438 been used to create another row that is currently 2439 valid." 2440 ::= { diffServAction 1 } 2442 diffServActionTable OBJECT-TYPE 2443 SYNTAX SEQUENCE OF DiffServActionEntry 2444 MAX-ACCESS not-accessible 2445 STATUS current 2446 DESCRIPTION 2447 "The Action Table enumerates actions that can be per- 2448 formed to a stream of traffic. Multiple actions can 2449 be concatenated. For example, after marking a stream 2450 of traffic exiting from a meter, a device can then 2451 perform a count action of the conforming or non- 2452 conforming traffic. 2454 Specific actions are indicated by diffServAction- 2455 Specific which points to an entry of a specific 2456 action type parameterizing the action in detail." 2457 REFERENCE 2458 "[MODEL] section 6." 2459 ::= { diffServAction 2 } 2461 diffServActionEntry OBJECT-TYPE 2462 SYNTAX DiffServActionEntry 2463 MAX-ACCESS not-accessible 2464 STATUS current 2465 DESCRIPTION 2466 "Each entry in the action table allows description of 2467 one specific action to be applied to traffic." 2468 INDEX { diffServActionId } 2469 ::= { diffServActionTable 1 } 2471 DiffServActionEntry ::= SEQUENCE { 2472 diffServActionId Unsigned32, 2473 diffServActionNext RowPointer, 2474 diffServActionSpecific RowPointer, 2475 diffServActionType INTEGER, 2476 diffServActionStatus RowStatus 2477 } 2479 diffServActionId OBJECT-TYPE 2480 SYNTAX Unsigned32 2481 MAX-ACCESS not-accessible 2482 STATUS current 2483 DESCRIPTION 2484 "An index that enumerates the Action entries. The set 2485 of such identifiers spans the whole agent. Managers 2486 should obtain new values for row creation in this 2487 table by reading diffServActionNextFree." 2488 ::= { diffServActionEntry 1 } 2490 diffServActionNext OBJECT-TYPE 2491 SYNTAX RowPointer 2492 MAX-ACCESS read-create 2493 STATUS current 2494 DESCRIPTION 2495 "This selects the next diffserv functional datapath 2496 element to handle traffic for this data path. This 2497 RowPointer should point to an instance of one of: 2498 diffServClfrEntry 2499 diffServMeterEntry 2500 diffServActionEntry 2501 diffServAlgDropEntry 2502 diffServQEntry 2504 A value of zeroDotZero in this attribute indicates no 2505 further Diffserv treatment is performed on traffic of 2506 this datapath. 2508 If the row pointed to does not exist, the treatment 2509 is as if this attribute contains a value of zero- 2510 DotZero." 2511 DEFVAL { zeroDotZero } 2512 ::= { diffServActionEntry 2 } 2514 diffServActionSpecific OBJECT-TYPE 2515 SYNTAX RowPointer 2516 MAX-ACCESS read-create 2517 STATUS current 2518 DESCRIPTION 2519 "A pointer to an object instance providing additional 2520 information for the type of action indicated by this 2521 action table entry. 2523 For the standard actions defined by this MIB module, 2524 this should point to one of the following: a 2525 diffServDscpMarkActEntry, a diffServCountActEntry. 2526 For other actions, it may point to an object instance 2527 defined in some other MIB." 2528 ::= { diffServActionEntry 3 } 2530 diffServActionType OBJECT-TYPE 2531 SYNTAX INTEGER { 2532 other(1), -- types not specified here 2533 specific(2), -- follow the Specific pointer 2534 absoluteDrop(3) -- disallow traffic 2535 } 2536 MAX-ACCESS read-create 2537 STATUS current 2538 DESCRIPTION 2539 "Indicates the type of action. The values specific(2) 2540 must be associated with additional information, 2541 pointed to by diffServActionSpecific, with the actual 2542 action type indicated by the object being pointed to. 2543 The value absoluteDrop(3) has no associated informa- 2544 tion and will have a diffServActionSpecific value of 2545 zeroDotZero. The use of other(1) is outside the 2546 scope of this definition, although the diffServAc- 2547 tionSpecific pointer may be used in this case, to 2548 indicate other information." 2549 ::= { diffServActionEntry 4 } 2551 diffServActionStatus OBJECT-TYPE 2552 SYNTAX RowStatus 2553 MAX-ACCESS read-create 2554 STATUS current 2555 DESCRIPTION 2556 "The RowStatus variable controls the activation, 2557 deactivation or deletion of an action element. Any 2558 writable variable may be modified whether the row is 2559 active or notInService." 2560 ::= { diffServActionEntry 5 } 2562 -- 2563 -- DSCP Mark Action Table 2564 -- 2565 -- Rows of this table are pointed to by diffServActionSpecific 2566 -- to provide detailed parameters specific to the DSCP 2567 -- Mark action. 2568 -- 2569 -- A single entry in this table can be shared, pointed to, by 2570 -- multiple diffServActionTable entries, of same or different 2571 -- datapaths. 2572 -- 2574 diffServDscpMarkActNextFree OBJECT-TYPE 2575 SYNTAX Unsigned32 2576 MAX-ACCESS read-only 2577 STATUS current 2578 DESCRIPTION 2579 "This object yields a value when read that is currently unused 2580 for a diffServDscpMarkActId instance. 2581 If a configuring system attempts to create a new row 2582 in the diffServDscpMarkActTable using this value, that operation 2583 will fail if the value has, in the meantime, been used 2584 to create another row that is currently valid." 2585 ::= { diffServAction 3 } 2587 diffServDscpMarkActTable OBJECT-TYPE 2588 SYNTAX SEQUENCE OF DiffServDscpMarkActEntry 2589 MAX-ACCESS not-accessible 2590 STATUS current 2591 DESCRIPTION 2592 "This table enumerates specific DSCPs used for mark- 2593 ing or remarking the DSCP field of IP packets. The 2594 entries of this table may be referenced by a diffSer- 2595 vActionSpecific attribute." 2596 REFERENCE 2597 "[MODEL] section 6.1" 2598 ::= { diffServAction 4 } 2600 diffServDscpMarkActEntry OBJECT-TYPE 2601 SYNTAX DiffServDscpMarkActEntry 2602 MAX-ACCESS not-accessible 2603 STATUS current 2604 DESCRIPTION 2605 "An entry in the DSCP mark action table that 2606 describes a single DSCP used for marking." 2607 INDEX { diffServDscpMarkActId } 2608 ::= { diffServDscpMarkActTable 1 } 2610 DiffServDscpMarkActEntry ::= SEQUENCE { 2611 diffServDscpMarkActId Unsigned32, 2612 diffServDscpMarkActDscp Dscp, 2613 diffServDscpMarkActStatus RowStatus 2614 } 2616 diffServDscpMarkActId OBJECT-TYPE 2617 SYNTAX Unsigned32 2618 MAX-ACCESS not-accessible 2619 STATUS current 2620 DESCRIPTION 2621 "An index that enumerates the Mark Action entries. 2622 The set of such identifiers spans the whole agent. 2623 Managers should obtain new values for row creation in 2624 this table by reading diffServDscpMarkActNextFree." 2625 ::= { diffServDscpMarkActEntry 1 } 2627 diffServDscpMarkActDscp OBJECT-TYPE 2628 SYNTAX Dscp 2629 MAX-ACCESS read-only 2630 STATUS current 2631 DESCRIPTION 2632 "The DSCP that this Action uses for marking/remarking 2633 traffic. Note that a DSCP value of -1 is not permit- 2634 ted in this table. It is quite possible that the 2635 only packets subject to this Action are already 2636 marked with this DSCP. Note also that Diffserv may 2637 result in packet remarking both on ingress to a net- 2638 work and on egress from it and it is quite possible 2639 that ingress and egress would occur in the same 2640 router." 2641 ::= { diffServDscpMarkActEntry 2 } 2643 diffServDscpMarkActStatus OBJECT-TYPE 2644 SYNTAX RowStatus 2645 MAX-ACCESS read-create 2646 STATUS current 2647 DESCRIPTION 2648 "The RowStatus variable controls the activation, 2649 deactivation, or deletion of this entry. Any writable 2650 variable may be modified whether the row is active or 2651 notInService." 2652 ::= { diffServDscpMarkActEntry 3 } 2654 -- 2655 -- Count Action Table 2656 -- 2657 -- Due to the fact that the MIB structure allows multiple 2658 -- cascading diffServActionEntry be used to describe 2659 -- multiple actions for a datapath, the counter became an 2660 -- optional action type. In normal implementation, a 2661 -- datapath either have counters or it doesn't, it is not 2662 -- an element the management entity can add or remove. 2663 -- The management entity can choose to read the counter or 2664 -- not. Hence it is recommended for implementation that 2665 -- have counters to always configure the count action as 2666 -- the first of multiple actions, for example before the 2667 -- the absolute drop action. 2668 -- 2670 diffServCountActNextFree OBJECT-TYPE 2671 SYNTAX Unsigned32 2672 MAX-ACCESS read-only 2673 STATUS current 2674 DESCRIPTION 2675 "This object yields a value when read that is currently unused 2676 for a diffServCountActId instance. 2677 If a configuring system attempts to create a new row 2678 in the diffServCountActTable using this value, that operation 2679 will fail if the value has, in the meantime, been used 2680 to create another row that is currently valid." 2681 ::= { diffServAction 5 } 2683 diffServCountActTable OBJECT-TYPE 2684 SYNTAX SEQUENCE OF DiffServCountActEntry 2685 MAX-ACCESS not-accessible 2686 STATUS current 2687 DESCRIPTION 2688 "This table contains counters for all the traffic 2689 passing through an action element." 2690 REFERENCE 2691 "[MODEL] section 6.4" 2692 ::= { diffServAction 6 } 2694 diffServCountActEntry OBJECT-TYPE 2695 SYNTAX DiffServCountActEntry 2696 MAX-ACCESS not-accessible 2697 STATUS current 2698 DESCRIPTION 2699 "An entry in the count action table describes a sin- 2700 gle set of traffic counters." 2701 INDEX { diffServCountActId } 2702 ::= { diffServCountActTable 1 } 2704 DiffServCountActEntry ::= SEQUENCE { 2705 diffServCountActId Unsigned32, 2706 diffServCountActOctets Counter32, 2707 diffServCountActHCOctets Counter64, 2708 diffServCountActPkts Counter32, 2709 diffServCountActHCPkts Counter64, 2710 diffServCountActDiscontTime TimeStamp, 2711 diffServCountActStatus RowStatus 2712 } 2714 diffServCountActId OBJECT-TYPE 2715 SYNTAX Unsigned32 2716 MAX-ACCESS not-accessible 2717 STATUS current 2718 DESCRIPTION 2719 "An index that enumerates the Count Action entries. 2720 The set of such identifiers spans the whole agent. 2721 Managers should obtain new values for row creation in 2722 this table by reading diffServCountActNextFree." 2723 ::= { diffServCountActEntry 1 } 2725 diffServCountActOctets OBJECT-TYPE 2726 SYNTAX Counter32 2727 MAX-ACCESS read-only 2728 STATUS current 2729 DESCRIPTION 2730 "The number of octets at the Action datapath element. 2731 On high speed devices, this object implements the 2732 least significant 32 bits of diffServCountActHCOc- 2733 tets. 2735 Discontinuities in the value of this counter can 2736 occur at re-initialization of the management system 2737 and at other times as indicated by the value of 2738 diffServCountActDiscontTime for this entry." 2739 ::= { diffServCountActEntry 2 } 2741 diffServCountActHCOctets OBJECT-TYPE 2742 SYNTAX Counter64 2743 MAX-ACCESS read-only 2744 STATUS current 2745 DESCRIPTION 2746 "The number of octets at the Action datapath element. 2747 This object should be used on high speed interfaces. 2749 Discontinuities in the value of this counter can 2750 occur at re-initialization of the management system 2751 and at other times as indicated by the value of 2752 diffServCountActDiscontTime for this entry." 2753 ::= { diffServCountActEntry 3 } 2755 diffServCountActPkts OBJECT-TYPE 2756 SYNTAX Counter32 2757 MAX-ACCESS read-only 2758 STATUS current 2759 DESCRIPTION 2760 "The number of packets at the Action datapath ele- 2761 ment. On high speed devices, this object implements 2762 the least significant 32 bits of diffServCoun- 2763 tActHCPkts. 2764 Discontinuities in the value of this counter can 2765 occur at re-initialization of the management system 2766 and at other times as indicated by the value of 2767 diffServCountActDiscontTime for this entry." 2768 ::= { diffServCountActEntry 4 } 2770 diffServCountActHCPkts OBJECT-TYPE 2771 SYNTAX Counter64 2772 MAX-ACCESS read-only 2773 STATUS current 2774 DESCRIPTION 2775 "The number of packets at the Action datapath ele- 2776 ment. This object should be used on high speed 2777 interfaces. 2779 Discontinuities in the value of this counter can 2780 occur at re-initialization of the management system 2781 and at other times as indicated by the value of 2782 diffServCountActDiscontTime for this entry." 2783 ::= { diffServCountActEntry 5 } 2785 diffServCountActDiscontTime OBJECT-TYPE 2786 SYNTAX TimeStamp 2787 MAX-ACCESS read-only 2788 STATUS current 2789 DESCRIPTION 2790 "The value of sysUpTime on the most recent occasion 2791 at which any one or more of this entry's counters 2792 suffered a discontinuity. If no such discontinuities 2793 have occurred since the last re-initialization of the 2794 local management subsystem, then this object contains 2795 a zero value." 2796 ::= { diffServCountActEntry 6 } 2798 diffServCountActStatus OBJECT-TYPE 2799 SYNTAX RowStatus 2800 MAX-ACCESS read-create 2801 STATUS current 2802 DESCRIPTION 2803 "The RowStatus variable controls the activation, 2804 deactivation, or deletion of this entry. Any writable 2805 variable may be modified whether the row is active or 2806 notInService." 2807 ::= { diffServCountActEntry 7 } 2809 -- 2810 -- Algorithmic Drop Table 2811 -- 2813 diffServAlgDrop OBJECT IDENTIFIER ::= { diffServMIBObjects 5 } 2815 diffServAlgDropNextFree OBJECT-TYPE 2816 SYNTAX Unsigned32 2817 MAX-ACCESS read-only 2818 STATUS current 2819 DESCRIPTION 2820 "This object yields a value when read that is 2821 currently unused for a diffServAlgDropId instance. 2822 If a configuring system attempts to create a new row 2823 in the diffServAlgDropTable using this value, that 2824 operation will fail if the value has, in the mean- 2825 time, been used to create another row that is 2826 currently valid." 2827 ::= { diffServAlgDrop 1 } 2829 diffServAlgDropTable OBJECT-TYPE 2830 SYNTAX SEQUENCE OF DiffServAlgDropEntry 2831 MAX-ACCESS not-accessible 2832 STATUS current 2833 DESCRIPTION 2834 "The algorithmic drop table contains entries describ- 2835 ing an element that drops packets according to some 2836 algorithm." 2837 REFERENCE 2838 "[MODEL] section 7.1.3" 2839 ::= { diffServAlgDrop 2 } 2841 diffServAlgDropEntry OBJECT-TYPE 2842 SYNTAX DiffServAlgDropEntry 2843 MAX-ACCESS not-accessible 2844 STATUS current 2845 DESCRIPTION 2846 "An entry describes a process that drops packets 2847 according to some algorithm. Further details of the 2848 algorithm type are to be found in diffServAlgDropType 2849 and with more detail parameter entry pointed to by 2850 diffServAlgDropSpecific when necessary." 2851 INDEX { diffServAlgDropId } 2852 ::= { diffServAlgDropTable 1 } 2854 DiffServAlgDropEntry ::= SEQUENCE { 2855 diffServAlgDropId Unsigned32, 2856 diffServAlgDropType INTEGER, 2857 diffServAlgDropNext RowPointer, 2858 diffServAlgDropQMeasure RowPointer, 2859 diffServAlgDropQThreshold Unsigned32, 2860 diffServAlgDropSpecific RowPointer, 2861 diffServAlgDropOctets Counter32, 2862 diffServAlgDropHCOctets Counter64, 2863 diffServAlgDropPkts Counter32, 2864 diffServAlgDropHCPkts Counter64, 2865 diffServAlgDropStatus RowStatus 2866 } 2868 diffServAlgDropId OBJECT-TYPE 2869 SYNTAX Unsigned32 2870 MAX-ACCESS not-accessible 2871 STATUS current 2872 DESCRIPTION 2873 "An index that enumerates the Algorithmic Dropper 2874 entries. The set of such identifiers spans the whole 2875 agent. Managers should obtain new values for row 2876 creation in this table by reading diffServAlgDrop- 2877 NextFree." 2878 ::= { diffServAlgDropEntry 1 } 2880 diffServAlgDropType OBJECT-TYPE 2881 SYNTAX INTEGER { 2882 other(1), 2883 tailDrop(2), 2884 headDrop(3), 2885 randomDrop(4) 2887 } 2888 MAX-ACCESS read-create 2889 STATUS current 2890 DESCRIPTION 2891 "The type of algorithm used by this dropper. A value 2892 of tailDrop(2) or headDrop(3) represents an algorithm 2893 that is completely specified by this MIB. A value of 2894 other(1) requires further specification in some other 2895 MIB module. 2897 The tailDrop(2) algorithm is described as follows: 2898 diffServAlgDropQThreshold represents the depth of the 2899 queue, pointed to by diffServAlgDropQMeasure, at 2900 which all newly arriving packets will be dropped. 2902 The headDrop(3) algorithm is described as follows: if 2903 a packet arrives when the current depth of the queue, 2904 pointed to by diffServAlgDropQMeasure, is at diffSer- 2905 vAlgDropQThreshold, packets currently at the head of 2906 the queue are dropped to make room for the new packet 2907 to be enqueued at the tail of the queue. 2909 The randomDrop(4) algorithm is described as follows: 2910 on packet arrival, an algorithm is executed which may 2911 randomly drop the packet, or drop other packet(s) 2912 from the queue in its place. The specifics of the 2913 algorithm may be proprietary. For this algorithm, 2914 diffServAlgDropSpecific points to a diffServRandom- 2915 DropEntry that describes the algorithm. For this 2916 algorithm, diffServAlgQThreshold is understood to be 2917 the absolute maximum size of the queue and additional 2918 parameters are described in diffServRandomDropTable." 2919 ::= { diffServAlgDropEntry 2 } 2921 diffServAlgDropNext OBJECT-TYPE 2922 SYNTAX RowPointer 2923 MAX-ACCESS read-create 2924 STATUS current 2925 DESCRIPTION 2926 "This selects the next diffserv functional datapath 2927 element to handle traffic for this data path. This 2928 RowPointer should point to an instance of one of: 2929 diffServClfrEntry 2930 diffServMeterEntry 2931 diffServActionEntry 2932 diffServAlgDropEntry 2933 diffServQEntry 2935 A value of zeroDotZero in this attribute indicates no 2936 further Diffserv treatment is performed on traffic of 2937 this datapath. 2939 If the row pointed to does not exist, the treatment 2940 is as if this attribute contains a value of zero- 2941 DotZero." 2942 ::= { diffServAlgDropEntry 3 } 2944 diffServAlgDropQMeasure OBJECT-TYPE 2945 SYNTAX RowPointer 2946 MAX-ACCESS read-create 2947 STATUS current 2948 DESCRIPTION 2949 "Points to an entry in the diffServQTable to indicate 2950 the queue that a drop algorithm is to monitor when 2951 deciding whether to drop a packet. If the row 2952 pointed to does not exist, the algorithmic dropper 2953 element is considered inactive." 2954 ::= { diffServAlgDropEntry 4 } 2956 diffServAlgDropQThreshold OBJECT-TYPE 2957 SYNTAX Unsigned32 2958 UNITS "Bytes" 2959 MAX-ACCESS read-create 2960 STATUS current 2961 DESCRIPTION 2962 "A threshold on the depth in bytes of the queue being 2963 measured at which a trigger is generated to the drop- 2964 ping algorithm. 2966 For the tailDrop(2) or headDrop(3) algorithms, this 2967 represents the depth of the queue, pointed to by 2968 diffServAlgDropQMeasure, at which the drop action 2969 will take place. Other algorithms will need to define 2970 their own semantics for this threshold." 2971 ::= { diffServAlgDropEntry 5 } 2973 diffServAlgDropSpecific OBJECT-TYPE 2974 SYNTAX RowPointer 2975 MAX-ACCESS read-create 2976 STATUS current 2977 DESCRIPTION 2978 "Points to a table entry that provides further detail 2979 regarding a drop algorithm. 2981 Entries with diffServAlgDropType equal to other(1) 2982 may have this point to a table defined in another MIB 2983 module. 2985 Entries with diffServAlgDropType equal to random- 2986 Drop(4) must have this point to an entry in diffSer- 2987 vRandomDropTable. 2989 For all other algorithms, this should take the value 2990 zeroDotzero." 2991 ::= { diffServAlgDropEntry 6 } 2993 diffServAlgDropOctets OBJECT-TYPE 2994 SYNTAX Counter32 2995 MAX-ACCESS read-only 2996 STATUS current 2997 DESCRIPTION 2998 "The number of octets that have been dropped by this 2999 drop process. On high speed devices, this object 3000 implements the least significant 32 bits of diffSer- 3001 vAlgDropHCOctets. 3003 Discontinuities in the value of this counter can 3004 occur at re-initialization of the management system 3005 and at other times as indicated by the value of 3006 ifCounterDiscontinuityTime appropriate to this inter- 3007 face." 3008 ::= { diffServAlgDropEntry 7 } 3010 diffServAlgDropHCOctets OBJECT-TYPE 3011 SYNTAX Counter64 3012 MAX-ACCESS read-only 3013 STATUS current 3014 DESCRIPTION 3015 "The number of octets that have been dropped by this 3016 drop process. This object should be used on high 3017 speed interfaces. 3019 Discontinuities in the value of this counter can 3020 occur at re-initialization of the management system 3021 and at other times as indicated by the value of 3022 ifCounterDiscontinuityTime appropriate to this inter- 3023 face." 3024 ::= { diffServAlgDropEntry 8 } 3026 diffServAlgDropPkts OBJECT-TYPE 3027 SYNTAX Counter32 3028 MAX-ACCESS read-only 3029 STATUS current 3030 DESCRIPTION 3031 "The number of packets that have been dropped by this 3032 drop process. On high speed devices, this object 3033 implements the least significant 32 bits of diffSer- 3034 vAlgDropHCPkts. 3036 Discontinuities in the value of this counter can 3037 occur at re-initialization of the management system 3038 and at other times as indicated by the value of 3039 ifCounterDiscontinuityTime appropriate to this inter- 3040 face." 3041 ::= { diffServAlgDropEntry 9 } 3043 diffServAlgDropHCPkts OBJECT-TYPE 3044 SYNTAX Counter64 3045 MAX-ACCESS read-only 3046 STATUS current 3047 DESCRIPTION 3048 "The number of packets that have been dropped by this 3049 drop process. This object should be used on high 3050 speed interfaces. 3052 Discontinuities in the value of this counter can 3053 occur at re-initialization of the management system 3054 and at other times as indicated by the value of 3055 ifCounterDiscontinuityTime appropriate to this inter- 3056 face." 3057 ::= { diffServAlgDropEntry 10 } 3059 diffServAlgDropStatus OBJECT-TYPE 3060 SYNTAX RowStatus 3061 MAX-ACCESS read-create 3062 STATUS current 3063 DESCRIPTION 3064 "The RowStatus variable controls the activation, 3065 deactivation, or deletion of this entry. Any writable 3066 variable may be modified whether the row is active or 3067 notInService." 3068 ::= { diffServAlgDropEntry 11 } 3070 -- 3071 -- Random Drop Table 3072 -- 3074 diffServRandomDropNextFree OBJECT-TYPE 3075 SYNTAX Unsigned32 3076 MAX-ACCESS read-only 3077 STATUS current 3078 DESCRIPTION 3079 "This object yields a value when read that is 3080 currently unused for a diffServRandomDropId instance. 3081 If a configuring system attempts to create a new row 3082 in the diffServRandomDropTable using this value, that 3083 operation will fail if the value has, in the mean- 3084 time, been used to create another row that is 3085 currently valid." 3086 ::= { diffServAlgDrop 3 } 3088 diffServRandomDropTable OBJECT-TYPE 3089 SYNTAX SEQUENCE OF DiffServRandomDropEntry 3090 MAX-ACCESS not-accessible 3091 STATUS current 3092 DESCRIPTION 3093 "The random drop table contains entries describing a 3094 process that drops packets randomly. Entries in this 3095 table is intended to be pointed to by diffSer- 3096 vAlgDropSpecific." 3097 REFERENCE 3098 "[MODEL] section 7.1.3" 3099 ::= { diffServAlgDrop 4 } 3101 diffServRandomDropEntry OBJECT-TYPE 3102 SYNTAX DiffServRandomDropEntry 3103 MAX-ACCESS not-accessible 3104 STATUS current 3105 DESCRIPTION 3106 "An entry describes a process that drops packets 3107 according to a random algorithm." 3108 INDEX { diffServRandomDropId } 3109 ::= { diffServRandomDropTable 1 } 3111 DiffServRandomDropEntry ::= SEQUENCE { 3112 diffServRandomDropId Unsigned32, 3113 diffServRandomDropMinThreshBytes Unsigned32, 3114 diffServRandomDropMinThreshPkts Unsigned32, 3115 diffServRandomDropMaxThreshBytes Unsigned32, 3116 diffServRandomDropMaxThreshPkts Unsigned32, 3117 diffServRandomDropInvProbMax Unsigned32, 3118 diffServRandomDropInvWeight Unsigned32, 3119 diffServRandomDropSamplingRate Unsigned32, 3120 diffServRandomDropStatus RowStatus 3121 } 3123 diffServRandomDropId OBJECT-TYPE 3124 SYNTAX Unsigned32 3125 MAX-ACCESS not-accessible 3126 STATUS current 3127 DESCRIPTION 3128 "An index that enumerates the Random Drop entries. 3129 The set of such identifiers spans the whole agent. 3130 Managers should obtain new values for row creation in 3131 this table by reading diffServRandomDropNextFree." 3132 ::= { diffServRandomDropEntry 1 } 3134 diffServRandomDropMinThreshBytes OBJECT-TYPE 3135 SYNTAX Unsigned32 3136 UNITS "bytes" 3137 MAX-ACCESS read-create 3138 STATUS current 3139 DESCRIPTION 3140 "The average queue depth in bytes, beyond which 3141 traffic has a non-zero probability of being dropped. 3142 Changes in this variable may or may not be reflected 3143 in the reported value of diffServRandomDrop- 3144 MinThreshPkts." 3145 ::= { diffServRandomDropEntry 2 } 3147 diffServRandomDropMinThreshPkts OBJECT-TYPE 3148 SYNTAX Unsigned32 3149 UNITS "packets" 3150 MAX-ACCESS read-create 3151 STATUS current 3152 DESCRIPTION 3153 "The average queue depth in packets, beyond which 3154 traffic has a non-zero probability of being dropped. 3155 Changes in this variable may or may not be reflected 3156 in the reported value of diffServRandomDropMinThresh- 3157 Bytes." 3158 ::= { diffServRandomDropEntry 3 } 3160 diffServRandomDropMaxThreshBytes OBJECT-TYPE 3161 SYNTAX Unsigned32 3162 UNITS "bytes" 3163 MAX-ACCESS read-create 3164 STATUS current 3165 DESCRIPTION 3166 "The average queue depth beyond which traffic has a 3167 probability indicated by diffServRandomDropInvProbMax 3168 of being dropped or marked. Note that this differs 3169 from the physical queue limit, which is stored in 3170 diffServAlgDropQThreshold. Changes in this variable 3171 may or may not be reflected in the reported value of 3172 diffServRandomDropMaxThreshPkts." 3173 ::= { diffServRandomDropEntry 4 } 3175 diffServRandomDropMaxThreshPkts OBJECT-TYPE 3176 SYNTAX Unsigned32 3177 UNITS "packets" 3178 MAX-ACCESS read-create 3179 STATUS current 3180 DESCRIPTION 3181 "The average queue depth beyond which traffic has a 3182 probability indicated by diffServRandomDropInvProbMax 3183 of being dropped or marked. Note that this differs 3184 from the physical queue limit, which is stored in 3185 diffServAlgDropQThreshold. Changes in this variable 3186 may or may not be reflected in the reported value of 3187 diffServRandomDropMaxThreshBytes." 3188 ::= { diffServRandomDropEntry 5 } 3190 diffServRandomDropInvProbMax OBJECT-TYPE 3191 SYNTAX Unsigned32 3192 MAX-ACCESS read-create 3193 STATUS current 3194 DESCRIPTION 3195 "The worst case random drop probability, expressed as 3196 the inverse of the drop probability. With special 3197 case of the value zero meaning zero probability of 3198 drop. 3200 For example, if every packet may be dropped in the 3201 worst case (100%), this has the value of 3202 4,294,967,295." 3203 ::= { diffServRandomDropEntry 6 } 3205 diffServRandomDropInvWeight OBJECT-TYPE 3206 SYNTAX Unsigned32 3207 MAX-ACCESS read-create 3208 STATUS current 3209 DESCRIPTION 3210 "The weighting of past history in affecting the cal- 3211 culation of the current queue average. The moving 3212 average of the queue depth uses the inverse of this 3213 value as the factor for the new queue depth, and one 3214 minus that inverse as the factor for the historical 3215 average. 3217 Implementations may choose to limit the acceptable 3218 set of values to a specified set, such as powers of 3219 2." 3220 ::= { diffServRandomDropEntry 7 } 3222 diffServRandomDropSamplingRate OBJECT-TYPE 3223 SYNTAX Unsigned32 3224 MAX-ACCESS read-create 3225 STATUS current 3226 DESCRIPTION 3227 "The number of times per second the queue is sampled 3228 for queue average calculation. A value of zero means 3229 the queue is sampled approximately each time a packet 3230 is enqueued (or dequeued)." 3231 ::= { diffServRandomDropEntry 8 } 3233 diffServRandomDropStatus OBJECT-TYPE 3234 SYNTAX RowStatus 3235 MAX-ACCESS read-create 3236 STATUS current 3237 DESCRIPTION 3238 "The RowStatus variable controls the activation, 3239 deactivation, or deletion of this entry. Any writable 3240 variable may be modified whether the row is active or 3241 notInService." 3242 ::= { diffServRandomDropEntry 9 } 3244 -- 3245 -- Queue Table 3246 -- 3248 diffServQueue OBJECT IDENTIFIER ::= { diffServMIBObjects 6 } 3250 -- 3251 -- An entry of diffServQTable represents a FIFO queue diffserv 3252 -- functional datapath element as described in [MODEL] section 3253 -- 7.1.1. 3254 -- Notice the specification of scheduling parameters for a queue 3255 -- as part of the input to a scheduler functional datapath 3256 -- element as described in [MODEL] section 7.1.2. This allows 3257 -- building of hierarchical queueing/scheduling. 3258 -- A queue therefore is parameterized by: 3259 -- 1. Which scheduler will service this queue, diffServQNext. 3260 -- 2. How the scheduler will service this queue, with respect 3261 -- to all the other queues the same scheduler needs to service, 3262 -- diffServQSchdParam. 3263 -- 3264 -- Notice one or more upstream diffserv datapath element may share, 3265 -- point to, a diffServQTable entry as described in [MODEL] section 3266 -- 7.1.1. 3267 -- 3268 -- Each entry of the diffServQTable belongs to one and only one 3269 -- datapath. 3270 -- 3272 diffServQNextFree OBJECT-TYPE 3273 SYNTAX Unsigned32 3274 MAX-ACCESS read-only 3275 STATUS current 3276 DESCRIPTION 3277 "This object yields a value when read that is 3278 currently unused for a diffServQId instance. If a 3279 configuring system attempts to create a new row in 3280 the diffServQTable using this value, that operation 3281 will fail if the value has, in the meantime, been 3282 used to create another row that is currently valid." 3283 ::= { diffServQueue 1 } 3285 diffServQTable OBJECT-TYPE 3286 SYNTAX SEQUENCE OF DiffServQEntry 3287 MAX-ACCESS not-accessible 3288 STATUS current 3289 DESCRIPTION 3290 "The Queue Table enumerates the individual queues." 3291 REFERENCE 3292 "[MODEL] section 7.1.1" 3293 ::= { diffServQueue 2 } 3295 diffServQEntry OBJECT-TYPE 3296 SYNTAX DiffServQEntry 3297 MAX-ACCESS not-accessible 3298 STATUS current 3299 DESCRIPTION 3300 "An entry in the Queue Table describes a single 3301 queue. With each entry belonging to one and only one 3302 datapath." 3303 INDEX { diffServQId } 3304 ::= { diffServQTable 1 } 3306 DiffServQEntry ::= SEQUENCE { 3307 diffServQId Unsigned32, 3308 diffServQNext RowPointer, 3309 diffServQSchdParam RowPointer, 3310 diffServQStatus RowStatus 3311 } 3313 diffServQId OBJECT-TYPE 3314 SYNTAX Unsigned32 3315 MAX-ACCESS not-accessible 3316 STATUS current 3317 DESCRIPTION 3318 "An index that enumerates the Queue entries. The set 3319 of such identifiers spans the whole agent. Managers 3320 should obtain new values for row creation in this 3321 table by reading diffServQNextFree." 3323 ::= { diffServQEntry 1 } 3325 diffServQNext OBJECT-TYPE 3326 SYNTAX RowPointer 3327 MAX-ACCESS read-create 3328 STATUS current 3329 DESCRIPTION 3330 "This selects the next diffserv functional datapath 3331 element to handle traffic for this data path. This 3332 RowPointer must point to an instance of one of: 3333 diffServSchedulerEntry 3335 A value of zeroDotZero in this attribute indicates an 3336 incomplete diffServQEntry instance. An illegal con- 3337 figuration. 3339 If the row pointed to does not exist, the treatment 3340 is as if this attribute contains a value of zero- 3341 DotZero." 3342 ::= { diffServQEntry 2 } 3344 diffServQSchdParam OBJECT-TYPE 3345 SYNTAX RowPointer 3346 MAX-ACCESS read-create 3347 STATUS current 3348 DESCRIPTION 3349 "This RowPointer indicates the entry in 3350 diffServSchdParamTable the scheduler, pointed to by 3351 diffServQNext, should use to service this queue. 3353 A value of zeroDotZero in this attribute indicates an 3354 incomplete diffServQEntry instance. An illegal con- 3355 figuration. 3357 If the row pointed to does not exist, the treatment 3358 is as if this attribute contains a value of zero- 3359 DotZero." 3360 ::= { diffServQEntry 3 } 3362 diffServQStatus OBJECT-TYPE 3363 SYNTAX RowStatus 3364 MAX-ACCESS read-create 3365 STATUS current 3366 DESCRIPTION 3367 "The RowStatus variable controls the activation, 3368 deactivation, or deletion of a queue. Any writable 3369 variable may be modified whether the row is active or 3370 notInService." 3371 ::= { diffServQEntry 4 } 3373 -- 3374 -- Scheduler Table 3375 -- 3377 diffServScheduler OBJECT IDENTIFIER ::= { diffServMIBObjects 7 } 3379 -- 3380 -- The Scheduler Table is used for representing packet schedulers: 3381 -- it provides flexibility for multiple scheduling algorithms, each 3382 -- servicing multiple queues, to be used on the same logical/physical 3383 -- interface. 3384 -- Notice the servicing parameters the scheduler uses is 3385 -- specified by each of its upstream functional datapath elements, 3386 -- most likely queues or schedulers. 3387 -- The coordination and coherency between the servicing parameters 3388 -- of the scheduler's upstream functional datapath elements must 3389 -- be maintained for the scheduler to function correctly. 3390 -- 3391 -- The diffServSchedulerSchdParam attribute is used for specifying 3392 -- the servicing parameters for output of a scheduler when its 3393 -- downstream functional datapath element is another scheduler. 3394 -- This is used for building hierarchical queue/scheduler. 3395 -- 3396 -- More discussion of the scheduler functional datapath element 3397 -- is in [MODEL] section 7.1.2. 3398 -- 3400 diffServSchedulerNextFree OBJECT-TYPE 3401 SYNTAX Unsigned32 3402 MAX-ACCESS read-only 3403 STATUS current 3404 DESCRIPTION 3405 "This object yields a value when read that is 3406 currently unused for a diffServSchedulerId instance. 3407 If a configuring system attempts to create a new row 3408 in the diffServSchedulerTable using this value, that 3409 operation will fail if the value has, in the mean- 3410 time, been used to create another row that is 3411 currently valid." 3412 ::= { diffServScheduler 1 } 3414 diffServSchedulerTable OBJECT-TYPE 3415 SYNTAX SEQUENCE OF DiffServSchedulerEntry 3416 MAX-ACCESS not-accessible 3417 STATUS current 3418 DESCRIPTION 3419 "The Scheduler Table enumerates packet schedulers. 3420 Multiple scheduling algorithms can be used on a given 3421 datapath, with each algorithm described by one 3422 diffServSchedulerEntry." 3423 REFERENCE 3424 "[MODEL] section 7.1.2" 3425 ::= { diffServScheduler 2 } 3427 diffServSchedulerEntry OBJECT-TYPE 3428 SYNTAX DiffServSchedulerEntry 3429 MAX-ACCESS not-accessible 3430 STATUS current 3431 DESCRIPTION 3432 "An entry in the Scheduler Table describing a single 3433 instance of a scheduling algorithm." 3434 INDEX { diffServSchedulerId } 3435 ::= { diffServSchedulerTable 1 } 3437 DiffServSchedulerEntry ::= SEQUENCE { 3438 diffServSchedulerId Unsigned32, 3439 diffServSchedulerNext RowPointer, 3440 diffServSchedulerMethod INTEGER, 3441 diffServSchedulerSchdParam RowPointer, 3442 diffServSchedulerStatus RowStatus 3443 } 3445 diffServSchedulerId OBJECT-TYPE 3446 SYNTAX Unsigned32 3447 MAX-ACCESS not-accessible 3448 STATUS current 3449 DESCRIPTION 3450 "An index that enumerates the Scheduler entries. The 3451 set of such identifiers spans the whole agent. 3452 Managers should obtain new values for row creation in 3453 this table by reading diffServSchedulerNextFree." 3454 ::= { diffServSchedulerEntry 1 } 3456 diffServSchedulerNext OBJECT-TYPE 3457 SYNTAX RowPointer 3458 MAX-ACCESS read-create 3459 STATUS current 3460 DESCRIPTION 3461 "This selects the next diffserv functional datapath 3462 element to handle traffic for this data path. This 3463 RowPointer should point to an instance of one of: 3464 diffServSchedulerEntry 3465 diffServQEntry As indicated by [MODEL] section 3466 7.1.4. 3468 This should point to another diffServSchedulerEntry 3469 for implementation of multiple scheduler methods for 3470 the same datapath, and for implementation of 3471 hierarchical schedulers. 3473 A value of zeroDotZero in this attribute indicates no 3474 further Diffserv treatment is performed on traffic of 3475 this datapath. The use of zeroDotZero is the normal 3476 usage for the last functional datapath element. 3478 If the row pointed to does not exist, the treatment 3479 is as if this attribute contains a value of zero- 3480 DotZero." 3481 DEFVAL { zeroDotZero } 3482 ::= { diffServSchedulerEntry 2 } 3484 diffServSchedulerMethod OBJECT-TYPE 3485 SYNTAX INTEGER { 3486 other(1), -- not listed here 3487 priorityq(2), -- Priority Queueing 3488 wrr(3), -- Weighted Round Robin 3489 wfq(4), -- Weighted Fair Queuing 3490 wirr(5), -- Weighted Interleaved Round Robin 3491 bsp(6) -- Bounded Strict Priority 3492 } 3493 MAX-ACCESS read-create 3494 STATUS current 3495 DESCRIPTION 3496 "The scheduling algorithm used by this Scheduler. 3498 A value of priorityq(2) is used to indicate strict 3499 priority queueing: only the diffServSchdParamPriority 3500 attributes of the queues/schedulers feeding this 3501 scheduler are used when determining the next packet 3502 to schedule. 3504 A value of wrr(3) indicates weighted round-robin 3505 scheduling. Packets are scheduled from each of the 3506 queues/schedulers feeding this scheduler according to 3507 all of the parameters of their respective 3508 diffServSchdParamEntry. 3510 A value of wfq(4) indicates weighted fair queueing 3511 scheduling. Packets are scheduled from each of the 3512 queues/schedulers feeding this scheduler according to 3513 all of the parameters of their respective 3514 diffServSchdParamEntry. 3516 A value of wirr(5) indicates weighted interleaved 3517 roundrobin queueing scheduling. Packets are 3518 scheduled from each of the queues/schedulers feeding 3519 this scheduler according to all the parameters of 3520 their respective diffServSchdParamEntry. 3522 A value of bsp(6) indicates bounded strict priority 3523 scheduling. Packets are scheduled from each of the 3524 queues/schedulers feeding this scheduler according to 3525 all the parameters of their respective 3526 diffServSchdParamEntry." 3527 REFERENCE 3528 "[MODEL] section 7.1.2" 3529 ::= { diffServSchedulerEntry 3 } 3531 diffServSchedulerSchdParam OBJECT-TYPE 3532 SYNTAX RowPointer 3533 MAX-ACCESS read-create 3534 STATUS current 3535 DESCRIPTION 3536 "This RowPointer indicates the entry in 3537 diffServSchdParamTable the higher level scheduler, 3538 pointed to by diffServSchedulerNext, should use to 3539 service the output of this scheduler. This attribute 3540 is only used when there is more than one level of 3541 scheduler. And should have the value of zeroDotZero 3542 when not used." 3543 DEFVAL { zeroDotZero } 3544 ::= { diffServSchedulerEntry 4 } 3546 diffServSchedulerStatus OBJECT-TYPE 3547 SYNTAX RowStatus 3548 MAX-ACCESS read-create 3549 STATUS current 3550 DESCRIPTION 3551 "The RowStatus variable controls the activation, 3552 deactivation, or deletion of a queue. Any writable 3553 variable may be modified whether the row is active or 3554 notInService." 3555 ::= { diffServSchedulerEntry 5 } 3557 -- 3558 -- Scheduling Parameter Table 3559 -- 3560 -- The scheduling parameters are separate from the Queue Entries 3561 -- for reusability and for usage by both queues and schedulers, 3562 -- and this follows the separation of datapath elements from 3563 -- parameterization approach used throught out this MIB. 3564 -- Usage of scheduling parameter table entry by schedulers allow 3565 -- building of hierarchical scheduling. 3566 -- 3567 -- The diffServSchdParamMaxRateAbs/Rel attributes are used to 3568 -- construct non-work-conserving scheduler for the purpose of 3569 -- traffic shaping. These attributes limits the servicing of 3570 -- the queue/scheduler, in affect, shaping the output of the 3571 -- queue/scheduler, as described in [MODEL] section 7.2. 3572 -- 3574 diffServSchdParamNextFree OBJECT-TYPE 3575 SYNTAX Unsigned32 3576 MAX-ACCESS read-only 3577 STATUS current 3578 DESCRIPTION 3579 "This object yields a value when read that is 3580 currently unused for a diffServSchdParamId instance. 3581 If a configuring system attempts to create a new row 3582 in the diffServSchdParamTable using this value, that 3583 operation will fail if the value has, in the mean- 3584 time, been used to create another row that is 3585 currently valid." 3586 ::= { diffServScheduler 3 } 3588 diffServSchdParamTable OBJECT-TYPE 3589 SYNTAX SEQUENCE OF DiffServSchdParamEntry 3590 MAX-ACCESS not-accessible 3591 STATUS current 3592 DESCRIPTION 3593 "The Scheduling Parameter Table enumerates individual 3594 sets of scheduling parameter that can be used/reused 3595 by Queues and Schedulers." 3596 ::= { diffServScheduler 4 } 3598 diffServSchdParamEntry OBJECT-TYPE 3599 SYNTAX DiffServSchdParamEntry 3600 MAX-ACCESS not-accessible 3601 STATUS current 3602 DESCRIPTION 3603 "An entry in the Scheduling Parameter Table describes 3604 a single set of scheduling parameter for use by 3605 queues and schedulers. 3606 Notice multiple inter-mixed of Queue and Scheduler 3607 entries can use the same Scheduler Parameter entry." 3608 INDEX { diffServSchdParamId } 3609 ::= { diffServSchdParamTable 1 } 3611 DiffServSchdParamEntry ::= SEQUENCE { 3612 diffServSchdParamId Unsigned32, 3613 diffServSchdParamPriority Unsigned32, 3614 diffServSchdParamMinRateAbs Unsigned32, 3615 diffServSchdParamMinRateRel Unsigned32, 3616 diffServSchdParamMaxRateAbs Unsigned32, 3617 diffServSchdParamMaxRateRel Unsigned32, 3618 diffServSchdParamStatus RowStatus 3619 } 3620 diffServSchdParamId OBJECT-TYPE 3621 SYNTAX Unsigned32 3622 MAX-ACCESS not-accessible 3623 STATUS current 3624 DESCRIPTION 3625 "An index that enumerates the Scheduler Parameter 3626 entries. The set of such identifiers spans the whole 3627 agent. Managers should obtain new values for row 3628 creation in this table by reading diffServSchdParam- 3629 NextFree." 3630 ::= { diffServSchdParamEntry 1 } 3632 diffServSchdParamPriority OBJECT-TYPE 3633 SYNTAX Unsigned32 3634 MAX-ACCESS read-create 3635 STATUS current 3636 DESCRIPTION 3637 "The priority of this queue, to be used as a parame- 3638 ter to the next scheduler element downstream from 3639 this one." 3640 ::= { diffServSchdParamEntry 2 } 3642 diffServSchdParamMinRateAbs OBJECT-TYPE 3643 SYNTAX Unsigned32 3644 UNITS "kilobits per second" 3645 MAX-ACCESS read-create 3646 STATUS current 3647 DESCRIPTION 3648 "The minimum absolute rate, in kilobits/sec, that a 3649 downstream scheduler element should allocate to this 3650 queue. If the value is zero, then there is effec- 3651 tively no minimum rate guarantee. If the value is 3652 non-zero, the scheduler will assure the servicing of 3653 this queue to at least this rate. 3655 Note that this attribute's value is coupled to that 3656 of diffServSchdParamMinRateRel: changes to one will 3657 affect the value of the other. They are linked by the 3658 following equation: 3660 diffServSchdParamMinRateRel = diffServSchdParamMinRateAbs 3661 * 10,000,000/ifSpeed 3663 or, if appropriate: 3665 diffServSchdParamMinRateRel = diffServSchdParamMinRateAbs 3666 * 10 / ifHighSpeed" 3667 REFERENCE 3668 "ifSpeed, ifHighSpeed from [IFMIB]" 3669 ::= { diffServSchdParamEntry 3 } 3671 diffServSchdParamMinRateRel OBJECT-TYPE 3672 SYNTAX Unsigned32 3673 MAX-ACCESS read-create 3674 STATUS current 3675 DESCRIPTION 3676 "The minimum rate that a downstream scheduler element 3677 should allocate to this queue, relative to the max- 3678 imum rate of the interface as reported by ifSpeed or 3679 ifHighSpeed, in units of 1/10,000 of 1. If the value 3680 is zero, then there is effectively no minimum rate 3681 guarantee. If the value is non-zero, the scheduler 3682 will assure the servicing of this queue to at least 3683 this rate. 3685 Note that this attribute's value is coupled to that 3686 of diffServSchdParamMinRateAbs: changes to one will 3687 affect the value of the other. They are linked by the 3688 following equation: 3690 diffServSchdParamMinRateAbs = ifSpeed 3691 * diffServSchdParamMinRateRel/10,000,000 3693 or, if appropriate: 3695 diffServSchdParamMinRateAbs = ifHighSpeed 3696 * diffServSchdParamMinRateRel / 10" 3697 REFERENCE 3698 "ifSpeed, ifHighSpeed from [IFMIB]" 3699 ::= { diffServSchdParamEntry 4 } 3701 diffServSchdParamMaxRateAbs OBJECT-TYPE 3702 SYNTAX Unsigned32 3703 UNITS "kilobits per second" 3704 MAX-ACCESS read-create 3705 STATUS current 3706 DESCRIPTION 3707 "The maximum rate in kilobits/sec that a downstream 3708 scheduler element should allocate to this queue. If 3709 the value is zero, then there is effectively no 3710 maximum rate limit and that the scheduler should 3711 attempt to be work-conserving for this queue. If the 3712 value is non-zero, the scheduler will limit the ser- 3713 vicing of this queue to, at most, this rate in a 3714 non-work-conserving manner. 3716 Note that this attribute's value is coupled to that 3717 of diffServSchdParamMaxRateRel: changes to one will 3718 affect the value of the other. They are linked by the 3719 following equation: 3721 diffServSchdParamMaxRateRel = diffServSchdParamMaxRateAbs 3722 * 10,000,000/ifSpeed 3724 or, if appropriate: 3726 diffServSchdParamMaxRateRel = diffServSchdParamMaxRateAbs 3727 * 10 / ifHighSpeed" 3728 REFERENCE 3729 "ifSpeed, ifHighSpeed from [IFMIB]" 3730 ::= { diffServSchdParamEntry 5 } 3732 diffServSchdParamMaxRateRel OBJECT-TYPE 3733 SYNTAX Unsigned32 3734 MAX-ACCESS read-create 3735 STATUS current 3736 DESCRIPTION 3737 "The maximum rate that a downstream scheduler element 3738 should allocate to this queue, relative to the max- 3739 imum rate of the interface as reported by ifSpeed or 3740 ifHighSpeed, in units of 1/10,000 of 1. If the value 3741 is zero, then there is effectively no maximum rate 3742 limit and the scheduler should attempt to be work- 3743 conserving for this queue. If the value is non-zero, 3744 the scheduler will limit the servicing of this queue 3745 to, at most, this rate in a non-work-conserving 3746 manner. 3748 Note that this attribute's value is coupled to that 3749 of diffServSchdParamMaxRateAbs: changes to one will 3750 affect the value of the other. They are linked by the 3751 following equation: 3753 diffServSchdParamMaxRateAbs = ifSpeed 3754 * diffServSchdParamMaxRateRel/10,000,000 3756 or, if appropriate: 3758 diffServSchdParamMaxRateAbs = ifHighSpeed 3759 * diffServSchdParamMaxRateRel / 10" 3760 REFERENCE 3761 "ifSpeed, ifHighSpeed from [IFMIB]" 3762 ::= { diffServSchdParamEntry 6 } 3764 diffServSchdParamStatus OBJECT-TYPE 3765 SYNTAX RowStatus 3766 MAX-ACCESS read-create 3767 STATUS current 3768 DESCRIPTION 3769 "The RowStatus variable controls the activation, 3770 deactivation, or deletion of a queue. Any writable 3771 variable may be modified whether the row is active or 3772 notInService." 3773 ::= { diffServSchdParamEntry 7 } 3775 -- 3776 -- MIB Compliance statements. 3777 -- 3779 diffServMIBCompliances OBJECT IDENTIFIER ::= { diffServMIBConformance 1 } 3780 diffServMIBGroups OBJECT IDENTIFIER ::= { diffServMIBConformance 2 } 3782 diffServMIBCompliance MODULE-COMPLIANCE 3783 STATUS current 3784 DESCRIPTION 3785 "This MIB may be implemented as a read-only or as a 3786 read-create MIB. As a result, it may be used for mon- 3787 itoring or for configuration." 3788 MODULE -- This Module 3789 MANDATORY-GROUPS { 3790 diffServMIBDataPathGroup, 3791 diffServMIBClfrGroup, 3792 diffServMIBClfrElementGroup, 3793 diffServMIBSixTupleClfrGroup, 3794 diffServMIBActionGroup, 3795 diffServMIBAlgDropGroup, 3796 diffServMIBQGroup, diffServMIBSchedulerGroup, 3797 diffServMIBSchdParamGroup } 3799 -- The groups: 3800 -- diffServMIBCounterGroup 3801 -- diffServMIBHCCounterGroup 3802 -- diffServMIBVHCCounterGroup 3803 -- 3804 -- are mutually exclusive; at most one of these groups is implemented 3805 -- for a particular interface. When any of these groups is implemented 3806 -- for a particular interface, then ifCounterDiscontinuityGroup from 3807 -- [IFMIB] must also be implemented for that interface. 3809 -- note that the diffServMIBStaticGroup is 3810 -- mandatory for implementations that implement a 3811 -- read-write or read-create mode. 3813 GROUP diffServMIBCounterGroup 3814 DESCRIPTION 3815 "This group is mandatory for table objects indexed by 3816 ifIndex for which the value of the corresponding 3817 instance of ifSpeed is less than or equal to 3818 20,000,000 bits/second." 3820 GROUP diffServMIBHCCounterGroup 3821 DESCRIPTION 3822 "This group is mandatory for table objects indexed by 3823 ifIndex for which the value of the corresponding 3824 instance of ifSpeed is greater than 20,000,000 3825 bits/second." 3827 GROUP diffServMIBVHCCounterGroup 3828 DESCRIPTION 3829 "This group is mandatory for table objects indexed by 3830 ifIndex for which the value of the corresponding 3831 instance of ifSpeed is greater than 650,000,000 3832 bits/second." 3834 GROUP diffServMIBMeterGroup 3835 DESCRIPTION 3836 "This group is mandatory for devices that implement 3837 metering functions." 3839 GROUP diffServMIBTBMeterGroup 3840 DESCRIPTION 3841 "This group is mandatory for devices that implement 3842 token-bucket metering functions." 3844 GROUP diffServMIBDscpMarkActGroup 3845 DESCRIPTION 3846 "This group is mandatory for devices that implement 3847 DSCP-Marking functions." 3849 GROUP diffServMIBRandomDropGroup 3850 DESCRIPTION 3851 "This group is mandatory for devices that implement 3852 Random Drop functions." 3854 GROUP diffServMIBStaticGroup 3855 DESCRIPTION 3856 "This group is mandatory for devices that allow crea- 3857 tion of rows in any of the writable tables of this 3858 MIB." 3860 OBJECT diffServClfrStatus 3861 MIN-ACCESS read-only 3862 DESCRIPTION 3863 "Write access is not required." 3865 OBJECT diffServClfrElementOrder 3866 MIN-ACCESS read-only 3867 DESCRIPTION 3868 "Write access is not required." 3870 OBJECT diffServClfrElementNext 3871 MIN-ACCESS read-only 3872 DESCRIPTION 3873 "Write access is not required." 3875 OBJECT diffServClfrElementSpecific 3876 MIN-ACCESS read-only 3877 DESCRIPTION 3878 "Write access is not required." 3880 OBJECT diffServClfrElementStatus 3881 MIN-ACCESS read-only 3882 DESCRIPTION 3883 "Write access is not required." 3885 OBJECT diffServSixTupleClfrDstAddrType 3886 MIN-ACCESS read-only 3887 DESCRIPTION 3888 "Write access is not required." 3890 OBJECT diffServSixTupleClfrDstAddr 3891 MIN-ACCESS read-only 3892 DESCRIPTION 3893 "Write access is not required." 3895 OBJECT diffServSixTupleClfrDstAddrMask 3896 MIN-ACCESS read-only 3897 DESCRIPTION 3898 "Write access is not required." 3900 OBJECT diffServSixTupleClfrSrcAddrType 3901 MIN-ACCESS read-only 3902 DESCRIPTION 3903 "Write access is not required." 3905 OBJECT diffServSixTupleClfrSrcAddr 3906 MIN-ACCESS read-only 3907 DESCRIPTION 3908 "Write access is not required." 3910 OBJECT diffServSixTupleClfrSrcAddrMask 3911 MIN-ACCESS read-only 3912 DESCRIPTION 3913 "Write access is not required." 3915 OBJECT diffServSixTupleClfrDscp 3916 MIN-ACCESS read-only 3917 DESCRIPTION 3918 "Write access is not required." 3920 OBJECT diffServSixTupleClfrProtocol 3921 MIN-ACCESS read-only 3922 DESCRIPTION 3923 "Write access is not required." 3925 OBJECT diffServSixTupleClfrSrcL4PortMin 3926 MIN-ACCESS read-only 3927 DESCRIPTION 3928 "Write access is not required." 3930 OBJECT diffServSixTupleClfrSrcL4PortMax 3931 MIN-ACCESS read-only 3932 DESCRIPTION 3933 "Write access is not required." 3935 OBJECT diffServSixTupleClfrDstL4PortMin 3936 MIN-ACCESS read-only 3937 DESCRIPTION 3938 "Write access is not required." 3940 OBJECT diffServSixTupleClfrDstL4PortMax 3941 MIN-ACCESS read-only 3942 DESCRIPTION 3943 "Write access is not required." 3945 OBJECT diffServSixTupleClfrStatus 3946 MIN-ACCESS read-only 3947 DESCRIPTION 3948 "Write access is not required." 3950 OBJECT diffServMeterSucceedNext 3951 MIN-ACCESS read-only 3952 DESCRIPTION 3953 "Write access is not required." 3955 OBJECT diffServMeterFailNext 3956 MIN-ACCESS read-only 3957 DESCRIPTION 3958 "Write access is not required." 3960 OBJECT diffServMeterSpecific 3961 MIN-ACCESS read-only 3962 DESCRIPTION 3963 "Write access is not required." 3965 OBJECT diffServMeterStatus 3966 MIN-ACCESS read-only 3967 DESCRIPTION 3968 "Write access is not required." 3970 OBJECT diffServTBMeterType 3971 MIN-ACCESS read-only 3972 DESCRIPTION 3973 "Write access is not required." 3975 OBJECT diffServTBMeterRate 3976 MIN-ACCESS read-only 3977 DESCRIPTION 3978 "Write access is not required." 3980 OBJECT diffServTBMeterBurstSize 3981 MIN-ACCESS read-only 3982 DESCRIPTION 3983 "Write access is not required." 3985 OBJECT diffServTBMeterInterval 3986 MIN-ACCESS read-only 3987 DESCRIPTION 3988 "Write access is not required." 3990 OBJECT diffServTBMeterStatus 3991 MIN-ACCESS read-only 3992 DESCRIPTION 3993 "Write access is not required." 3995 OBJECT diffServActionNext 3996 MIN-ACCESS read-only 3997 DESCRIPTION 3998 "Write access is not required." 4000 OBJECT diffServActionSpecific 4001 MIN-ACCESS read-only 4002 DESCRIPTION 4003 "Write access is not required." 4005 OBJECT diffServActionType 4006 MIN-ACCESS read-only 4007 DESCRIPTION 4008 "Write access is not required." 4010 OBJECT diffServActionStatus 4011 MIN-ACCESS read-only 4012 DESCRIPTION 4013 "Write access is not required." 4015 OBJECT diffServCountActStatus 4016 MIN-ACCESS read-only 4017 DESCRIPTION 4018 "Write access is not required." 4020 OBJECT diffServAlgDropType 4021 MIN-ACCESS read-only 4022 DESCRIPTION 4023 "Write access is not required." 4025 OBJECT diffServAlgDropNext 4026 MIN-ACCESS read-only 4027 DESCRIPTION 4028 "Write access is not required." 4030 OBJECT diffServAlgDropQMeasure 4031 MIN-ACCESS read-only 4032 DESCRIPTION 4033 "Write access is not required." 4035 OBJECT diffServAlgDropQThreshold 4036 MIN-ACCESS read-only 4037 DESCRIPTION 4038 "Write access is not required." 4040 OBJECT diffServAlgDropSpecific 4041 MIN-ACCESS read-only 4042 DESCRIPTION 4043 "Write access is not required." 4045 OBJECT diffServAlgDropStatus 4046 MIN-ACCESS read-only 4047 DESCRIPTION 4048 "Write access is not required." 4050 OBJECT diffServRandomDropMinThreshBytes 4051 MIN-ACCESS read-only 4052 DESCRIPTION 4053 "Write access is not required." 4055 OBJECT diffServRandomDropMinThreshPkts 4056 MIN-ACCESS read-only 4057 DESCRIPTION 4058 "Write access is not required." 4060 OBJECT diffServRandomDropMaxThreshBytes 4061 MIN-ACCESS read-only 4062 DESCRIPTION 4063 "Write access is not required." 4065 OBJECT diffServRandomDropMaxThreshPkts 4066 MIN-ACCESS read-only 4067 DESCRIPTION 4068 "Write access is not required." 4070 OBJECT diffServRandomDropInvProbMax 4071 MIN-ACCESS read-only 4072 DESCRIPTION 4073 "Write access is not required." 4075 OBJECT diffServRandomDropInvWeight 4076 MIN-ACCESS read-only 4077 DESCRIPTION 4078 "Write access is not required." 4080 OBJECT diffServRandomDropSamplingRate 4081 MIN-ACCESS read-only 4082 DESCRIPTION 4083 "Write access is not required." 4085 OBJECT diffServRandomDropStatus 4086 MIN-ACCESS read-only 4087 DESCRIPTION 4088 "Write access is not required." 4090 OBJECT diffServQNext 4091 MIN-ACCESS read-only 4092 DESCRIPTION 4093 "Write access is not required." 4095 OBJECT diffServQSchdParam 4096 MIN-ACCESS read-only 4097 DESCRIPTION 4098 "Write access is not required." 4100 OBJECT diffServQStatus 4101 MIN-ACCESS read-only 4102 DESCRIPTION 4103 "Write access is not required." 4105 OBJECT diffServSchedulerNext 4106 MIN-ACCESS read-only 4107 DESCRIPTION 4108 "Write access is not required." 4110 OBJECT diffServSchedulerMethod 4111 MIN-ACCESS read-only 4112 DESCRIPTION 4113 "Write access is not required." 4115 OBJECT diffServSchedulerSchdParam 4116 MIN-ACCESS read-only 4117 DESCRIPTION 4118 "Write access is not required." 4120 OBJECT diffServSchedulerStatus 4121 MIN-ACCESS read-only 4122 DESCRIPTION 4123 "Write access is not required." 4125 OBJECT diffServSchdParamPriority 4126 MIN-ACCESS read-only 4127 DESCRIPTION 4128 "Write access is not required." 4130 OBJECT diffServSchdParamMinRateAbs 4131 MIN-ACCESS read-only 4132 DESCRIPTION 4133 "Write access is not required." 4135 OBJECT diffServSchdParamMinRateRel 4136 MIN-ACCESS read-only 4137 DESCRIPTION 4138 "Write access is not required." 4140 OBJECT diffServSchdParamMaxRateAbs 4141 MIN-ACCESS read-only 4142 DESCRIPTION 4143 "Write access is not required." 4145 OBJECT diffServSchdParamMaxRateRel 4146 MIN-ACCESS read-only 4147 DESCRIPTION 4148 "Write access is not required." 4150 OBJECT diffServSchdParamStatus 4151 MIN-ACCESS read-only 4152 DESCRIPTION 4153 "Write access is not required." 4155 ::= { diffServMIBCompliances 1 } 4157 diffServMIBDataPathGroup OBJECT-GROUP 4158 OBJECTS { 4159 diffServDataPathStart, diffServDataPathStatus 4160 } 4161 STATUS current 4162 DESCRIPTION 4163 "The Data Path Group defines the MIB Objects that 4164 describe a data path." 4165 ::= { diffServMIBGroups 1 } 4167 diffServMIBClfrGroup OBJECT-GROUP 4168 OBJECTS { 4169 diffServClfrStatus 4170 } 4171 STATUS current 4172 DESCRIPTION 4173 "The Classifier Group defines the MIB Objects that 4174 describe a generic classifier." 4175 ::= { diffServMIBGroups 2 } 4177 diffServMIBClfrElementGroup OBJECT-GROUP 4178 OBJECTS { 4179 diffServClfrElementOrder, diffServClfrElementNext, 4180 diffServClfrElementSpecific, diffServClfrElementStatus 4181 } 4182 STATUS current 4183 DESCRIPTION 4184 "The Classifier Element Group defines the MIB Objects 4185 that describe the classifier elements that make up a 4186 generic classifier." 4187 ::= { diffServMIBGroups 3 } 4189 diffServMIBSixTupleClfrGroup OBJECT-GROUP 4190 OBJECTS { 4191 diffServSixTupleClfrDstAddrType, diffServSixTupleClfrDstAddr, 4192 diffServSixTupleClfrDstAddrMask, 4193 diffServSixTupleClfrSrcAddrType, diffServSixTupleClfrSrcAddr, 4194 diffServSixTupleClfrSrcAddrMask, 4195 diffServSixTupleClfrDscp, diffServSixTupleClfrProtocol, 4196 diffServSixTupleClfrDstL4PortMin, 4197 diffServSixTupleClfrDstL4PortMax, 4198 diffServSixTupleClfrSrcL4PortMin, 4199 diffServSixTupleClfrSrcL4PortMax, 4200 diffServSixTupleClfrStatus 4201 } 4202 STATUS current 4203 DESCRIPTION 4204 "The Six-tuple Classifier Group defines the MIB 4205 Objects that describe a classifier element for match- 4206 ing on 6 fields of an IP and upper-layer protocol 4207 header." 4208 ::= { diffServMIBGroups 4 } 4210 diffServMIBMeterGroup OBJECT-GROUP 4211 OBJECTS { 4212 diffServMeterSucceedNext, diffServMeterFailNext, 4213 diffServMeterSpecific, diffServMeterStatus 4214 } 4215 STATUS current 4216 DESCRIPTION 4217 "The Meter Group defines the objects used in describ- 4218 ing a generic meter element." 4219 ::= { diffServMIBGroups 5 } 4221 diffServMIBTBMeterGroup OBJECT-GROUP 4222 OBJECTS { 4223 diffServTBMeterType, 4224 diffServTBMeterRate, diffServTBMeterBurstSize, 4225 diffServTBMeterInterval, diffServTBMeterStatus 4226 } 4227 STATUS current 4228 DESCRIPTION 4229 "The Token-Bucket Meter Group defines the objects 4230 used in describing a token bucket meter element." 4231 ::= { diffServMIBGroups 6 } 4233 diffServMIBActionGroup OBJECT-GROUP 4234 OBJECTS { 4235 diffServActionNext, diffServActionSpecific, 4236 diffServActionType, diffServActionStatus 4237 } 4238 STATUS current 4239 DESCRIPTION 4240 "The Action Group defines the objects used in 4241 describing a generic action element." 4242 ::= { diffServMIBGroups 7 } 4244 diffServMIBDscpMarkActGroup OBJECT-GROUP 4245 OBJECTS { 4246 diffServDscpMarkActDscp, diffServDscpMarkActStatus 4247 } 4248 STATUS current 4249 DESCRIPTION 4250 "The DSCP Mark Action Group defines the objects used 4251 in describing a DSCP Marking Action element." 4252 ::= { diffServMIBGroups 8 } 4254 diffServMIBCounterGroup OBJECT-GROUP 4255 OBJECTS { 4256 diffServCountActOctets, 4257 diffServCountActPkts, 4258 diffServCountActDiscontTime, 4259 diffServCountActStatus, 4260 diffServAlgDropOctets, 4261 diffServAlgDropPkts 4262 } 4263 STATUS current 4264 DESCRIPTION 4265 "A collection of objects providing information 4266 specific to non-high speed (non-high speed interfaces 4267 transmit and receive at speeds less than or equal to 4268 20,000,000 bits/second) packet-oriented network 4269 interfaces." 4270 ::= { diffServMIBGroups 9 } 4272 diffServMIBHCCounterGroup OBJECT-GROUP 4273 OBJECTS { 4274 diffServCountActOctets, diffServCountActHCOctets, 4275 diffServCountActPkts, 4276 diffServCountActDiscontTime, 4277 diffServCountActStatus, 4278 diffServAlgDropOctets, diffServAlgDropHCOctets, 4279 diffServAlgDropPkts 4280 } 4281 STATUS current 4282 DESCRIPTION 4283 "A collection of objects providing information 4284 specific to high speed (high speed interfaces 4285 transmit and receive at speeds greater than 4286 20,000,000 but less than or equals to 650,000,000 4287 bits/second) packet-oriented network interfaces." 4288 ::= { diffServMIBGroups 10 } 4290 diffServMIBVHCCounterGroup OBJECT-GROUP 4291 OBJECTS { 4292 diffServCountActOctets, diffServCountActHCOctets, 4293 diffServCountActPkts, diffServCountActHCPkts, 4294 diffServCountActDiscontTime, 4295 diffServCountActStatus, 4296 diffServAlgDropOctets, diffServAlgDropHCOctets, 4297 diffServAlgDropPkts, diffServAlgDropHCPkts 4298 } 4299 STATUS current 4300 DESCRIPTION 4301 "A collection of objects providing information 4302 specific to very-high speed (very-high speed inter- 4303 faces transmit and receive at speeds greater than 4304 650,000,000 bits/second) packet-oriented network 4305 interfaces." 4306 ::= { diffServMIBGroups 11 } 4308 diffServMIBAlgDropGroup OBJECT-GROUP 4309 OBJECTS { 4310 diffServAlgDropType, diffServAlgDropNext, 4311 diffServAlgDropQMeasure, diffServAlgDropQThreshold, 4312 diffServAlgDropSpecific, diffServAlgDropStatus 4313 } 4314 STATUS current 4315 DESCRIPTION 4316 "The Algorithmic Drop Group contains the objects that 4317 describe algorithmic dropper operation and configura- 4318 tion." 4319 ::= { diffServMIBGroups 12 } 4321 diffServMIBRandomDropGroup OBJECT-GROUP 4322 OBJECTS { 4323 diffServRandomDropMinThreshBytes, 4324 diffServRandomDropMinThreshPkts, 4325 diffServRandomDropMaxThreshBytes, 4326 diffServRandomDropMaxThreshPkts, 4327 diffServRandomDropInvProbMax, 4328 diffServRandomDropInvWeight, 4329 diffServRandomDropSamplingRate, 4330 diffServRandomDropStatus 4331 } 4332 STATUS current 4333 DESCRIPTION 4334 "The Random Drop Group augments the Algorithmic Drop Group for 4335 random dropper operation and configuration." 4336 ::= { diffServMIBGroups 13 } 4338 diffServMIBQGroup OBJECT-GROUP 4339 OBJECTS { 4340 diffServQNext, diffServQSchdParam, 4341 diffServQStatus 4342 } 4343 STATUS current 4344 DESCRIPTION 4345 "The Queue Group contains the objects that describe 4346 an interface's queues." 4347 ::= { diffServMIBGroups 14 } 4349 diffServMIBSchedulerGroup OBJECT-GROUP 4350 OBJECTS { 4351 diffServSchedulerNext, diffServSchedulerMethod, 4352 diffServSchedulerSchdParam, diffServSchedulerStatus 4353 } 4354 STATUS current 4355 DESCRIPTION 4356 "The Scheduler Group contains the objects that 4357 describe packet schedulers on interfaces." 4358 ::= { diffServMIBGroups 15 } 4360 diffServMIBSchdParamGroup OBJECT-GROUP 4361 OBJECTS { 4362 diffServSchdParamPriority, 4363 diffServSchdParamMinRateAbs, diffServSchdParamMinRateRel, 4364 diffServSchdParamMaxRateAbs, diffServSchdParamMaxRateRel, 4365 diffServSchdParamStatus 4366 } 4367 STATUS current 4368 DESCRIPTION 4369 "The Scheduler Parameter Group contains the objects 4370 that describe packet schedulers' parameters on inter- 4371 faces." 4372 ::= { diffServMIBGroups 16 } 4374 diffServMIBStaticGroup OBJECT-GROUP 4375 OBJECTS { 4376 diffServClfrNextFree, diffServClfrElementNextFree, 4377 diffServSixTupleClfrNextFree, 4378 diffServMeterNextFree, diffServTBMeterNextFree, 4379 diffServActionNextFree, diffServDscpMarkActNextFree, 4380 diffServCountActNextFree, 4381 diffServAlgDropNextFree, diffServRandomDropNextFree, 4382 diffServQNextFree, diffServSchedulerNextFree, 4383 diffServSchdParamNextFree 4384 } 4385 STATUS current 4386 DESCRIPTION 4387 "The Static Group contains readable scalar objects 4388 used in creating unique identifiers for classifiers, 4389 meters, actions and queues. These are required when- 4390 ever row creation operations on such tables are sup- 4391 ported." 4392 ::= { diffServMIBGroups 17 } 4394 END 4395 9. Acknowledgments 4397 This MIB builds on all the work that has gone into the Informal 4398 Management Model for Diffserv routers, DiffServ PIB, and DiffServ Policy 4399 MIB (SNMPCONF WG). It has been developed with the active involvement of 4400 many people, but most notably Yoram Bernet, Steve Blake, Brian 4401 Carpenter, Dave Durham, Jeremy Greene, Dan Grossman, Roch Guerin, Scott 4402 Hahn, Keith McCloghrie, Bob Moore, Kathleen Nichols, Ping Pan, Nabil 4403 Seddigh, Bert Wijnen, Victor Firoiu, John Seligson, Michael Fine, Walter 4404 Weiss, Joel Halpern, and Harrie Hazewinkel. 4406 10. Security Considerations 4408 It is clear that this MIB is potentially useful for configuration, and 4409 anything that can be configured can be misconfigured, with potentially 4410 disastrous effect. 4412 At this writing, no security holes have been identified beyond those 4413 that SNMP Security is itself intended to address. These relate primarily 4414 to controlled access to sensitive information and the ability to 4415 configure a device - or which might result from operator error, which is 4416 beyond the scope of any security architecture. 4418 There are a number of management objects defined in this MIB that have a 4419 MAX-ACCESS clause of read-write and/or read-create. Such objects may be 4420 considered sensitive or vulnerable in some network environments. The 4421 support for SET operations in a non-secure environment without proper 4422 protection can have a negative effect on network operations. The use of 4423 SNMP Version 3 is recommended over prior versions for configuration 4424 control as its security model is improved. 4426 There are a number of managed objects in this MIB that may contain 4427 information that may be sensitive from a business perspective, in that 4428 they may represent a customer's service contract or the filters that the 4429 service provider chooses to apply to a customer's ingress or egress 4430 traffic. There are no objects which are sensitive in their own right, 4431 such as passwords or monetary amounts. 4433 It may be important to control even GET access to these objects and 4434 possibly to even encrypt the values of these object when sending them 4435 over the network via SNMP. Not all versions of SNMP provide features for 4436 such a secure environment. 4438 SNMPv1 by itself is not a secure environment. Even if the network itself 4439 is secure (for example by using IPSec), even then, there is no control 4440 as to who on the secure network is allowed to access and GET/SET 4441 (read/change/create/delete) the objects in this MIB. 4443 It is recommended that the implementers consider the security features 4444 as provided by the SNMPv3 framework. Specifically, the use of the User- 4445 based Security Model [12] and the View-based Access Control Model [15] 4446 is recommended. 4448 It is then a customer/user responsibility to ensure that the SNMP entity 4449 giving access to an instance of this MIB, is properly configured to give 4450 access to the objects only to those principals (users) that have 4451 legitimate rights to indeed GET or SET (change/create/delete) them. 4453 11. References 4455 [1] Harrington, D., Presuhn, R., and B. Wijnen, "An Architecture for 4456 Describing SNMP Management Frameworks", RFC 2571, Cabletron 4457 Systems, Inc., BMC Software, Inc., IBM T. J. Watson Research, April 4458 1999 4460 [2] Rose, M., and K. McCloghrie, "Structure and Identification of 4461 Management Information for TCP/IP-based Internets", RFC 1155, STD 4462 16, Performance Systems International, Hughes LAN Systems, May 1990 4464 [3] Rose, M., and K. McCloghrie, "Concise MIB Definitions", RFC 1212, 4465 STD 16, Performance Systems International, Hughes LAN Systems, 4466 March 1991 4468 [4] M. Rose, "A Convention for Defining Traps for use with the SNMP", 4469 RFC 1215, Performance Systems International, March 1991 4471 [5] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., 4472 and S. Waldbusser, "Structure of Management Information Version 2 4473 (SMIv2)", RFC 2578, STD 58, Cisco Systems, SNMPinfo, TU 4474 Braunschweig, SNMP Research, First Virtual Holdings, International 4475 Network Services, April 1999 4477 [6] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., 4478 and S. Waldbusser, "Textual Conventions for SMIv2", RFC 2579, STD 4479 58, Cisco Systems, SNMPinfo, TU Braunschweig, SNMP Research, First 4480 Virtual Holdings, International Network Services, April 1999 4482 [7] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., 4483 and S. Waldbusser, "Conformance Statements for SMIv2", RFC 2580, 4484 STD 58, Cisco Systems, SNMPinfo, TU Braunschweig, SNMP Research, 4485 First Virtual Holdings, International Network Services, April 1999 4487 [8] Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple Network 4488 Management Protocol", RFC 1157, STD 15, SNMP Research, Performance 4489 Systems International, Performance Systems International, MIT 4490 Laboratory for Computer Science, May 1990. 4492 [9] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, 4493 "Introduction to Community-based SNMPv2", RFC 1901, SNMP Research, 4494 Inc., Cisco Systems, Inc., Dover Beach Consulting, Inc., 4495 International Network Services, January 1996. 4497 [10] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Transport 4498 Mappings for Version 2 of the Simple Network Management Protocol 4499 (SNMPv2)", RFC 1906, SNMP Research, Inc., Cisco Systems, Inc., 4500 Dover Beach Consulting, Inc., International Network Services, 4501 January 1996. 4503 [11] Case, J., Harrington D., Presuhn R., and B. Wijnen, "Message 4504 Processing and Dispatching for the Simple Network Management 4505 Protocol (SNMP)", RFC 2572, SNMP Research, Inc., Cabletron Systems, 4506 Inc., BMC Software, Inc., IBM T. J. Watson Research, April 1999 4508 [12] Blumenthal, U., and B. Wijnen, "User-based Security Model (USM) for 4509 version 3 of the Simple Network Management Protocol (SNMPv3)", RFC 4510 2574, IBM T. J. Watson Research, April 1999 4512 [13] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Protocol 4513 Operations for Version 2 of the Simple Network Management Protocol 4514 (SNMPv2)", RFC 1905, SNMP Research, Inc., Cisco Systems, Inc., 4515 Dover Beach Consulting, Inc., International Network Services, 4516 January 1996. 4518 [14] Levi, D., Meyer, P., and B. Stewart, "SNMPv3 Applications", RFC 4519 2573, SNMP Research, Inc., Secure Computing Corporation, Cisco 4520 Systems, April 1999 4522 [15] Wijnen, B., Presuhn, R., and K. McCloghrie, "View-based Access 4523 Control Model (VACM) for the Simple Network Management Protocol 4524 (SNMP)", RFC 2575, IBM T. J. Watson Research, BMC Software, Inc., 4525 Cisco Systems, Inc., April 1999 4527 [16] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction to 4528 Version 3 of the Internet-standard Network Management Framework", 4529 RFC 2570, SNMP Research, Inc., TIS Labs at Network Associates, 4530 Inc., Ericsson, Cisco Systems, April 1999 4532 [ACTQMGMT] 4533 V. Firoiu, M. Borden "A Study of Active Queue Management for 4534 Congestion Control", March 2000, In IEEE Infocom 2000, 4535 http://www.ieee-infocom.org/2000/papers/405.pdf 4537 [AQMROUTER] 4538 V.Misra, W.Gong, D.Towsley "Fuid-based analysis of a network of AQM 4539 routers supporting TCP flows with an application to RED", In 4540 SIGCOMM 2000, 4541 http://www.acm.org/sigcomm/sigcomm2000/conf/paper/sigcomm2000-4- 4542 3.ps.gz 4544 [AF-PHB] 4545 J. Heinanen, F. Baker, W. Weiss, J. Wroclawski, "Assured Forwarding 4546 PHB Group.", RFC 2597, June 1999. 4548 [DSARCH] 4549 S. Blake, D. Black, M. Carlson, E. Davies, Z. Wang, W. Weiss, "An 4550 Architecture for Differentiated Service", RFC 2475, December 1998. 4552 [DSFIELD] 4553 K. Nichols, S. Blake, F. Baker, D. Black, "Definition of the 4554 Differentiated Services Field (DS Field) in the IPv4 and IPv6 4555 Headers", RFC 2474, December 1998. 4557 [DSPIB] 4558 M. Fine, K. McCloghrie, J. Seligson, K. Chan, S. Hahn, A. Smith, 4559 "Differentiated Services Policy Information Base", Internet Draft 4560 , March 2000 4562 [DSTERMS] 4563 D. Grossman, "New Terminology for Diffserv", Internet Draft 4564 , November 1999. 4566 [EF-PHB] 4567 V. Jacobson, K. Nichols, K. Poduri, "An Expedited Forwarding PHB." 4568 RFC 2598, June 1999. 4570 [IFMIB] 4571 K. McCloghrie, F. Kastenholz, "The Interfaces Group MIB using 4572 SMIv2", RFC 2233, November 1997. 4574 [INETADDRESS] 4575 Daniele, M., Haberman, B., Routhier, S., Schoenwaelder, J., 4576 "Textual Conventions for Internet Network Addresses.", RFC 2851, 4577 June 2000. 4579 [INTSERVMIB] 4580 F. Baker, J. Krawczyk, A. Sastry, "Integrated Services Management 4581 Information Base using SMIv2", RFC 2213, September 1997. 4583 [MODEL] 4584 Y. Bernet, S. Blake, A. Smith, D. Grossman, "An Informal Management 4585 Model for Diffserv Routers", Internet Draft , July 2000. 4588 [POLTERM] 4589 F. Reichmeyer, D. Grossman, J. Strassner, M. Condell, "A Common 4590 Terminology for Policy Management", Internet Draft , March 2000 4593 [QUEUEMGMT] 4594 B. Braden et al., "Recommendations on Queue Management and 4595 Congestion Avoidance in the Internet", RFC 2309, April 1998. 4597 [RED93] 4598 "Random Early Detection", 1993. 4600 12. Authors' Addresses 4602 Fred Baker 4603 Cisco Systems 4604 519 Lado Drive 4605 Santa Barbara, California 93111 4606 fred@cisco.com 4608 Kwok Ho Chan 4609 Nortel Networks 4610 600 Technology Park Drive 4611 Billerica, MA 01821 4612 khchan@nortelnetworks.com 4614 Andrew Smith 4615 ah_smith@pacbell.net 4617 Table of Contents 4619 1 The SNMP Management Framework ................................... 2 4620 2 Introduction .................................................... 4 4621 2.1 Relationship to the Diffserv Informal Management Model ........ 4 4622 2.2 Relationship to other MIBs and Policy Management .............. 5 4623 2.3 MIB Overview .................................................. 5 4624 3 Structure of this MIB ........................................... 6 4625 3.1 DiffServ Data Paths ........................................... 7 4626 3.1.1 Data Path Table ............................................. 7 4627 3.2 Classifiers ................................................... 8 4628 3.2.1 Classifier Table ............................................ 9 4629 3.2.2 Classifier Element Table .................................... 9 4630 3.2.3 Filter Table - IP Six-Tuple Classifier Table ................ 9 4631 3.3 Meters ........................................................ 9 4632 3.3.1 Meter Table ................................................. 10 4633 3.3.2 Token-Bucket Meter Table .................................... 10 4634 3.4 Actions ....................................................... 10 4635 3.4.1 DSCP Mark Action Table ...................................... 11 4636 3.4.2 Count Action Table .......................................... 11 4637 3.4.3 Absolute Drop Action ........................................ 11 4638 3.5 Queueing Elements ............................................. 11 4639 3.5.1 Algorithmic Dropper Table ................................... 11 4640 3.5.2 Random Dropper Table ........................................ 13 4641 3.5.3 Queues and Schedulers ....................................... 14 4642 3.5.4 Example of Algorithmic Droppers, Queues and Schedulers ...... 16 4643 4 MIB Usage Example ............................................... 16 4644 4.1 Data Path Example ............................................. 17 4645 4.2 Data Path and Classifier Example Discussion ................... 17 4646 4.3 Meter and Action Example Discussion ........................... 20 4647 4.4 Queue and Scheduler Example Discussion ........................ 21 4648 5 Conventions used in this MIB .................................... 21 4649 5.1 The use of RowPointer ......................................... 21 4650 5.2 Conceptual row creation and deletion .......................... 22 4651 6 Editorial information ........................................... 23 4652 6.1 Open Issues resolved in previous drafts ....................... 23 4653 6.2 Open Issues resolved in this draft ............................ 25 4654 6.3 Still Open Issues ............................................. 26 4655 7 MIB Outline ..................................................... 27 4656 8 MIB Definition .................................................. 33 4657 9 Acknowledgments ................................................. 118 4658 10 Security Considerations ........................................ 118 4659 11 References ..................................................... 119 4660 12 Authors' Addresses ............................................. 122 4661 13. Full Copyright 4663 Copyright (C) The Internet Society (2000). All Rights Reserved. 4665 This document and translations of it may be copied and furnished to 4666 others, and derivative works that comment on or otherwise explain it 4667 or assist in its implmentation may be prepared, copied, published and 4668 distributed, in whole or in part, without restriction of any kind, 4669 provided that the above copyright notice and this paragraph are 4670 included on all such copies and derivative works. However, this 4671 document itself may not be modified in any way, such as by removing 4672 the copyright notice or references to the Internet Society or other 4673 Internet organizations, except as needed for the purpose of 4674 developing Internet standards in which case the procedures for 4675 copyrights defined in the Internet Standards process must be 4676 followed, or as required to translate it into languages other than 4677 English. 4679 The limited permissions granted above are perpetual and will not be 4680 revoked by the Internet Society or its successors or assigns. 4682 This document and the information contained herein is provided on an 4683 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 4684 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 4685 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 4686 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 4687 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.