idnits 2.17.1 draft-ietf-diffserv-mib-06.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about 6 months document validity -- however, there's a paragraph with a matching beginning. Boilerplate error? == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 1 longer page, the longest (page 1) being 59 lines Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** There are 496 instances of weird spacing in the document. Is it really formatted ragged-right, rather than justified? ** There are 5 instances of too long lines in the document, the longest one being 1 character 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 1132 has weird spacing: '...sary to manag...' == Line 1133 has weird spacing: '... device that ...' == Line 1134 has weird spacing: '...tecture descr...' == Line 1156 has weird spacing: '...hat may be u...' == (491 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 8562 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 361, but not defined == Unused Reference: 'DSPIB' is defined on line 4338, but no explicit reference was found in the text == Unused Reference: 'DSTERMS' is defined on line 4343, but no explicit reference was found in the text == Unused Reference: 'EF-PHB' is defined on line 4347, but no explicit reference was found in the text == Unused Reference: 'INETADDRESS' is defined on line 4355, but no explicit reference was found in the text == Unused Reference: 'INTSERVMIB' is defined on line 4360, but no explicit reference was found in the text == Unused Reference: 'RED93' is defined on line 4378, 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' ** Downref: Normative reference to an Informational RFC: RFC 2697 (ref. 'SRTCM') ** Downref: Normative reference to an Informational RFC: RFC 2698 (ref. 'TRTCM') ** Downref: Normative reference to an Experimental RFC: RFC 2859 (ref. 'TSWTCM') Summary: 27 errors (**), 0 flaws (~~), 16 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 May 2001 Nortel Networks 6 draft-ietf-diffserv-mib-06.txt A. Smith 7 Allegro Networks 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. Data paths 198 defined by this table are interface and interface direction 199 specific. 201 Classifier and Filter Tables 202 A general extensible framework and one example of a 203 parameterization table - filter table (an IP Six-Tuple Multi-Field 204 Classification Table). 206 Meter Tables 207 A general extensible framework and one example of a 208 parameterization table - TBMeter table, applicable for Simple Token 209 Bucket Meter, Average Rate Meter, Single Rate Three Color Meter, 210 Two Rate Three Color Meter, and Sliding Window Three Color Meter. 212 Action Tables 213 A general extensible framework and examples of parameterization 214 tables for Absolute Drop, Mark and Count actions. The 215 "multiplexer", "replicator" and "null" actions described in [MODEL] 216 are accomplished implicitly by means of the RowPointer structures 217 of the other elements. 219 Queue, Scheduler and Algorithmic Dropper Tables 220 A general extensible framework for parameterizing queuing and 221 scheduler systems. The queue measurement dependent algorithmic 222 droppers are also described here. 224 3. Structure of this MIB 226 This MIB is structured with separate tables for purpose of DiffServ data 227 path description and DiffServ treatment parameterization of the DiffServ 228 device. The data path description and/or the treatment parameterization 229 tables can each be reuse independently, allowing the flexibility to 230 maintain a common data construct for DiffServ device configuration and 231 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 DESCRIPTION clause. 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 DiffServ interfaces on this device. Notice 260 not all interfaces on this device need to be DiffServ interfaces, hence 261 not all entries in the ifTable need to have corresponding entries in the 262 Data Path Table. Each entry in this table is indexed by ifIndex and the 263 direction of the packet flow. There should be at most two entries for 264 each interface, one for ingress and one for egress. Each entry provides 265 the first DiffServ Functional Element each packet at a specific 266 interface traveling a specific relative direction should experience. 267 Notice this table is interface specific, with the use of ifIndex. As 268 indicated in section 2.2, with some modification/extension of the Data 269 Path Table, most of the tables and their entries are reusable by other 270 Policy Management mechanisms. For indication of none existence of 271 DiffServ Treatments, entries can be created with zeroDotZero in the 272 diffServDataPathStart attribute to indicate this explicitly. The none 273 existence of DiffServ Treatment can also be indicated implicitly by not 274 having the entry at all. The explicit/implicit selection is up to the 275 implementation. This means allow normal IP device processing when 276 zeroDotZero is used in the diffServDataPathStart attribute, or when the 277 entry does not exist. Normal IP device processing will depend on the 278 device, for example, this can be forwarding the packet. 280 3.2. Classifiers 282 The classifier, classifier element, and filter tables determine how 283 traffic is sorted out. They identify separable classes of traffic, by 284 reference to an appropriate filter, which may select anything from an 285 individual micro-flow to aggregates identified by DSCP. 287 The classification is used to send these separate streams to appropriate 288 Meter, Action, Queue, Scheduler and Algorithmic Dropper elements. For 289 example, to indicate a multi-stage meter, sub-classes of traffic may be 290 sent to different meter stages: e.g. in an implementation of the Assured 291 Forwarding (AF) PHB [AF-PHB], AF11 traffic might be sent to the first 292 meter, AF12 traffic might be sent to the second and AF13 traffic sent to 293 the second meter stage's out-of-profile action. 295 The concept of a classifier is the same as described in [MODEL]. The 296 structure of the classifier and classifier element tables, is the same 297 as the classifier described in [MODEL]. Within each classifier, it must 298 not be important in which order the tests are made. This is to 299 facilitate optimized implementations such as index trees. Order is 300 present only to resolve ambiguity, by use of "order" here and 301 "precedence" in [MODEL]. Filter with higher values of order are 302 compared first; the order of tests for entries of the same order is 303 unimportant. 305 A datapath may consist of more than one classifier. There may be 306 overlap of filter specification between filters of different 307 classifiers. The first classifier functional datapath element 308 encountered, as determined by the sequencing of diffserv functional 309 datapath elements, will be used first. 311 An important form of classification is "everything else": the final 312 stage of the classifier i.e. the one with the lowest order, must be 313 "complete" since the result of an incomplete classifier is not 314 necessarily deterministic - see [MODEL] section 4.1.2. 316 The definition of the actual filter to be used by the classifier is 317 referenced via a StaticRowPointer: this enables the use of any sort of 318 filter table that one might wish to design, standard or proprietary. The 319 filter table may be, but does not need to be, defined in this MIB 320 module. 322 The classifiers specified here are at the interface level, they may be 323 derived from some more general policies e.g. something based on 324 interface roles, but such discussion is outside the scope of this 325 document. See e.g. [POLTERM] section 4 for a discussion of Roles. 327 3.2.1. Classifier Table 329 Classifiers are organized by entries of the Classifier Table. With each 330 entry corresponds to a single Classifier. It is the entries in the 331 Classifier Table that get linked from the upstream diffserv functional 332 datapath element, i.e. an entry in diffServDataPathTable. A data path 333 may consist of more than one Classifier, the order the classification 334 processes aplies to the traffic is the same as the order the classifier 335 table entries are linked in the data path. 337 3.2.2. Classifier Element Table 339 While the Classifier Table entries handles the input side of the 340 Classifier, the Classifier Element Table enumerates each branch of the 341 fan-out of a Classifier, associating each fan-out branch with a Filter 342 for discriminating the traffic for that branch. Each Classifier Element 343 table entry is part of a Classifier, indicated by 344 diffServClfrElementClfrId. 346 3.2.3. Filter Table - IP Six-Tuple Classifier Table 348 This MIB includes one Filter Table, a definition for an IP Six-Tuple 349 Classifier, used for IP traffic classification. Entries in this filter 350 table are referenced from the StaticRowPointer 351 diffServClfrElementSpecific attributes of classifier element table 352 entries. 354 For example, a Behavior Aggregate (BA) Classifier, acting only on DSCPs, 355 is a simple form of the IP Six-Tuple Classifier. It is represented by 356 having the diffServSixTupleClfrDscp attribute set to the desired DSCP 357 and all other classification attributes set to match-all, their default 358 settings. 360 Each entry in the IP Six-Tuple Classifier Table defines a single filter. 361 The textual convention of InetAddress [INETADDR] is used for both IPv4 362 and IPv6 addressing. The use of IP Six-Tuple Classifiers is discussed 363 in [DSARCH] and abstract examples of how they might be configured are 364 provided in [MODEL]. 366 3.3. Meters 368 A meter, according to [MODEL] section 5, measures the rate at which 369 packets making up a stream of traffic pass it, compares this rate to 370 some set of thresholds and produces some number (two or more) of 371 potential results. A given packet is said to "conform" to the meter if, 372 at the time that the packet is being looked at, the stream appears to be 373 within the meter's profile. MIB syntax makes it easiest to define this 374 as a sequence of one or more cascaded pass/fail tests, modeled here as 375 if-then-else constructs. It is important to understand that this way of 376 modelling does not imply anything about the implementation being 377 "sequential": multi-rate/multi-profile meters e.g. those designed to 378 support [SRTCM], [TRTCM], or [TSWTCM] can still be modelled this way 379 even if they, of necessity, share information between the stages: the 380 stages are introduced merely as a notational convenience in order to 381 simplify the MIB structure. 383 3.3.1. Meter Table 385 The generic meter table is used as a base for all more specific forms of 386 meter. The definition of parameters specific to the type of meter used 387 is referenced via a pointer to a table containing those specifics. This 388 enables the use of any sort of specific meter table that one might wish 389 to design, standard or proprietary. The specific meter table may be, but 390 does not need to be, defined in this MIB module. 392 3.3.2. Token-Bucket Meter Table 394 This is included as an example of a common type of meter. Entries in 395 this table are referenced from the StaticRowPointer 396 diffServMeterSpecific attributes of meter table entries. The parameters 397 are represented by a rate diffServTBMeterRate, a burst size 398 diffServTBMeterBurstSize, and an interval diffServTBMeterInterval. How 399 these parameters are used depends on the type of meter being 400 parameterized, this is provided by the diffServTBMeterType attribute. 401 Additional meter parameterization tables can be defined in other MIBs 402 when necessary. 404 3.4. Actions 406 Actions include "no action", "mark the traffic with a DSCP", "drop the 407 traffic" or "count it". Other tasks such as "shape the traffic" or "drop 408 based on some algorithm" are handled elsewhere as queueing mechanisms, 409 rather than actions, consistent with [MODEL]. The "multiplexer", 410 "replicator" and "null" actions described in [MODEL] are accomplished 411 implicitly by means of the RowPointer structures of the other elements. 413 This MIB uses the Action Table diffServActionTable to organize one 414 Action's relationship with the element(s) before and after it. It allows 415 Actions to be cascaded to enable multiple Actions be applied to a single 416 traffic stream by using each entry's diffServActionNext attribute. The 417 diffServActionNext attribute of the last action entry in the chain 418 points to the next element in the TCB, if any, e.g. a Queueing element. 419 It may also point at a next TCB. 421 The parameters needed for each Action element will depend on the type of 422 Action to be taken. Hence there are specific Action Tables for all the 423 different Action types. This flexibility allows additional Actions be 424 specified in future revisions of this MIB, or in other MIBs and also 425 allows for the use of proprietary Actions without impact on those 426 defined here. 428 3.4.1. DSCP Mark Action Table 430 This Action is applied to traffic in order to mark it with a Diffserv 431 Codepoint (DSCP) value, specified in the diffServDscpMarkActTable. Other 432 marking actions might be specified elsewhere - these are outside the 433 scope of this MIB. 435 3.4.2. Count Action Table 437 Count Actions are used to count the traffic passing along a particular 438 path through the model. If specified, they are likely to be placed 439 first, before other types of Action. For example, when both a Count and 440 an Absolute Dropper Action are specified, the Count Action needs to 441 count the traffic stream before any traffic gets dropped. Note that 442 there are counters contained directly in Algorithmic Dropper elements to 443 indicate the amount of traffic dropped by those elements. 445 Notice counter support is implementation specific. Where within a data 446 path and for what purpose a counter exists can be different between 447 implementations. It is advisable to have at least one counter within a 448 data path and have different counts derived from DiffServ counters and 449 counters defined in other MIBs. 451 Counters are arranged in a single table but with separate conformance 452 statements for low-speed and high-speed interfaces, consistent with 453 [IFMIB]. 455 3.4.3. Absolute Drop Action 457 This action just silently discards all traffic presented to it, without 458 counting it. This action has no additional parameters and so is 459 represented only within diffServActionType without its specific table. 461 3.5. Queueing Elements 463 These include Algorithmic Droppers, Queues and Schedulers which are all 464 inter-related in their use of queueing techniques. 466 3.5.1. Algorithmic Dropper Table 468 Algorithmic Droppers have a close relationship with queueing: they are 469 represented in this MIB by entries in an Algorithmic Dropper Table. 470 Entries contain a diffServAlgDropNext attribute which indicates to which 471 queue they sink their traffic. 473 An Algorithmic Dropper is assumed to operate indiscriminately on all 474 packets that are presented at its input. If it is necessary to perform 475 additional classification on the stream then a separate TCB must be 476 introduced at this point: Classifier elements here can then distinguish 477 the different types of traffic on which dropping is to act and the 478 treatment for each type is described by a separate diffServAlgDropEntry. 480 Algorithmic Droppers may also contain a pointer to specific detail of 481 the drop algorithm, diffServAlgDropSpecific. This MIB defines the detail 482 for three drop algorithms: Tail Drop, Head Drop and Random Drop; other 483 algorithms are outside the scope of this MIB module but the general 484 framework is intended to allow for their inclusion via other MIB 485 modules. 487 One generally-applicable parameter of a dropper is the specification of 488 a queue-depth threshold at which some drop action is to start. This is 489 represented in this MIB, as a base attribute, diffServAlgDropQThreshold, 490 of the Algorithmic Dropper entry. The queue for which depth is to be 491 compared and the depth threshold to compare against, is specified with 492 diffServAlgDropQMeasure. 494 o A Tail Dropper requires the specification of a maximum queue depth 495 threshold: when the queue pointed at by diffServAlgDropQMeasure 496 reaches that depth threshold, diffServAlgDropQThresh, any new 497 traffic arriving at the dropper is discarded. This algorithm uses 498 only parameters that are part of the diffServAlgDropEntry. 500 o A Head Dropper requires the specification of a maximum queue depth 501 threshold: when the queue pointed at by diffServAlgDropQMeasure 502 reaches that depth threshold, diffServAlgDropQThresh, traffic 503 currently at the head of the queue is discarded. This algorithm 504 uses only parameters that are part of the diffServAlgDropEntry. 506 o Random Droppers are recommended as a way to control congestion, in 507 [QUEUEMGMT] and called for in the [AF-PHB]. Various implementations 508 exist, which agree on marking or dropping just enough traffic to 509 communicate with TCP-like protocols about congestion avoidance, but 510 differ markedly on their specific parameters. This MIB attempts to 511 offer a minimal set of controls for any random dropper, but expects 512 that vendors will augment the table with additional controls and 513 status in accordance with their implementation. This algorithm 514 requires additional parameters on top of those in 515 diffServAlgDropEntry: these are discussed below. 517 3.5.2. Random Dropper Table 519 One example of a random dropper is a RED-like dropper. An example of the 520 representation chosen in this MIB for this element is shown in Figure 1. 522 Random droppers often have their drop probability function described as 523 a plot of drop probability (P) against averaged queue length (Q). 524 (Qmin,Pmin) then defines the start of the characteristic plot. Normally 525 Pmin=0, meaning with average queue length below Qmin, there will be no 526 drops. (Qmax,Pmax) defines a "knee" on the plot, after which point the 527 drop probability become more progressive (greater slope). (Qclip,1) 528 defines the queue length at which all packets will be dropped. Notice 529 this is different from Tail Drop because this uses an averaged queue 530 length. although it is possible for Qclip = Qmax. In the MIB module, 531 diffServRandomDropMinThreshBytes and diffServRandomDropMinThreshPkts 532 represent Qmin. diffServRandomDropMaxThreshBytes and 533 diffServRandomDropMaxThreshPkts represent Qmax. 534 diffServRandomDropInvProbMax represents Pmax. This MIB does not 535 represent Pmin (assumed to be zero unless otherwise represented) or 536 Qclip (assumed to be Qmax unless otherwise represented). 538 +-------------+ +-----------+ 539 --->| Next -----+--+-->| Next --+------> to Scheduler 540 | Thresh=100k | | | Min=none | 541 | Measure ----+--+ | Max=none | 542 | Type=random | | Pri=10 | 543 | Specific ---+--+ | Type=fifo | 544 +-------------+ | +-----------+ 545 AlgDrop.3 | Queue.4 546 | 547 | +--------------+ 548 +-->| Minthresh=10k| 549 | Maxthresh=80k| 550 | Weight=1/16 | 551 | ProbMax= 0.5 | 552 +--------------+ 553 RandomDrop.3 555 Figure 1: Example Use of the RandomDropTable for Random Droppers 557 Each random dropper specification is associated with a queue. This 558 allows multiple drop processes (of same or different types) be 559 associated with the same queue, as different PHB implementations may 560 require. This also allows for sequences of multiple droppers if 561 necessary. 563 The calculation of a smoothed queue length may also have an important 564 bearing on the behaviour of the dropper: parameters may include the 565 sampling rate and the weight of each sample. The performance may be very 566 sensitive to the values of these parameters and a wide range of possible 567 values may be required due to a wide range of link speeds. Most 568 algorithms include a sample weight, represented here by 569 diffServRandomDropInvWeight. The availability of 570 diffServRandomDropSamplingRate as readable is important, the information 571 provided by Sampling Rate is essential to the configuration of 572 diffServRandomDropInvWeight. Having Sampling Rate be configurable is 573 also helpful, as line speed increases, the ability to have queue 574 sampling be less frequent than packet arrival is needed. Note however 575 that there is ongoing research on this topic, see e.g. [ACTQMGMT] and 576 [AQMROUTER]. 578 Additional parameters may be added in an enterprise MIB module, e.g. by 579 using AUGMENTS on this table, to handle aspects of random drop 580 algorithms that are not standardised here. 582 NOTE: Deterministic Droppers can be viewed as a special case of Random 583 Droppers with the drop probability restricted to 0 and 1. Hence 584 Deterministic Droppers might be described by a Random Dropper with Pmin 585 = 0, Pmax = 1, Qmin = Qmax = Qclip, the averaged queue length at which 586 dropping occurs. 588 3.5.3. Queues and Schedulers 590 The Queue Table models simple FIFO queues, as described in [MODEL] 591 section 7.1.1. The Scheduler Table allows flexibility in constructing 592 both simple and somewhat more complex queueing hierarchies from those 593 queues. Of course, since TCBs can be cascaded multiple times on an 594 interface, even more complex hierarchies can be constructed that way 595 also. 597 Queue Table entries are pointed at by the "next" attributes of the 598 upstream elements e.g. diffServMeterSucceedNext. Note that multiple 599 upstream elements may direct their traffic to the same Queue Table 600 entry. For example, the Assured Forwarding PHB suggests that all traffic 601 marked AF11, AF12 or AF13 be placed in the same queue, after metering, 602 without reordering. This would be represented by having the 603 diffServMeterSucceedNext of each upstream meter point at the same entry 604 in the Queue Table. 606 Notice Queue Table and Scheduler Table entries are for data path 607 description, they both uses Scheduler Parameterization Table entries for 608 diffserv treatment parameterization. 610 Queue Table entries specify the scheduler it wants service from by use 611 of its Next pointer. 613 Each Scheduler Table entry represents the algorithm in use for servicing 614 the one or more queues that feed it. The [MODEL] section 7.1.2 describes 615 a scheduler with multiple inputs: this is represented in the MIB by 616 having the scheduling parameters be associated with each input. In this 617 way, sets of Queues can be grouped together as inputs to the same 618 Scheduler. This table serves to represent the example scheduler 619 described in the [MODEL]. More complex queuing and scheduling 620 structures are possible using the tables defined in this MIB. When 621 necessary, more complex constructs may be created outside of this MIB. 623 Scheduler Parameter Table entries are used to parameterized each input 624 that feeds into a scheduler. The inputs can be a mixture of Queue Table 625 and Scheduler Table entries. Scheduler Parameter Table entries can be 626 used/reused by one or more Queue and/or Scheduler Table entries. 628 For representing a Strict Priority scheduler, each scheduler input is 629 assigned a priority with respect to all the other inputs feeding the 630 same scheduler, with default values for the other parameters. A 631 higher-priority input will be serviced first over a lower-priority 632 input, assuming that all guarantees have already been met. 634 For weighted scheduling method e.g. WFQ, WRR, the "weight" of a given 635 scheduler input is represented with a Minimum Service Rate leaky-bucket 636 profile which provides guaranteed bandwidth to that input, if required. 637 This is represented, as were token-bucket meters, by a rate 638 diffServSchdParamMinRateAbs and a burst size diffServSchdParamBurstSize. 639 The rate may, alternatively, be represented by a relative value, as a 640 fraction of the interface's current line rate, 641 diffServSchdParamMinRateRel to assist in cases where line rates are 642 variable or where a higher-level policy might be expressed in terms of 643 fractions of network resources. The two rate parameters are inter- 644 related and changes in one may be reflected in the other. 646 For weighted scheduling methods, one can say loosely, that WRR focuses 647 on meeting bandwidth sharing, without concern for relative delay amongst 648 the queues; where WFQ control both queue service order and amount of 649 traffic serviced, providing meeting bandwidth sharing and relative delay 650 ordering amongst the queues. 652 An input may also be capable of acting as a non-work-conserving [MODEL] 653 traffic shaper: this is done by defining a Maximum Service Rate leaky- 654 bucket profile in order to limit the scheduler bandwidth available to 655 that input. This is represented, similarly to the minimum rate, by a 656 rate diffServSchdParamMaxRateAbs and a burst size 657 diffServSchdParamBurstSize. The rate may, alternatively, be represented 658 by a relative value, as a fraction of the interface's current line rate, 659 diffServSchdParamMaxRateRel. 661 Other types of priority and weighted scheduling methods can be defined 662 using existing parameters in diffServSchdParamEntry. Notice 663 diffServSchedulerMethod uses OBJECT IDENTIFIER syntax, with the 664 different types of scheduling methods defined as OBJECT-IDENTITY. When 665 new scheduling methods need to be defined, and no new scheduling 666 parameters are needed, just need to add a new OBJECT-IDENTITY definition 667 in some other MIB, with description of how the existing scheduling 668 parameters will be used by the new scheduling method. If the existing 669 scheduling parameters are not sufficient, new scheduling parameter 670 tables can be defined in some other MIB. 672 Notice hierarchical schedulers can be parameterized using this MIB by 673 having Scheduler Table entries feeds into Scheduler Table entry. 675 4. MIB Usage Example 677 This section provides some examples on how the different table entries 678 of this MIB may be used together for a DiffServ Device, with the usage 679 of each individual attribute be defined within the MIB module itself. 680 For the figures, all the MIB table entry and attribute names assumes to 681 have "diffServ" as their first common initial part of name, with the 682 table entry name assumed to be their second common initial part of name. 683 "0.0" is being used to mean zeroDotZero. And for Scheduler Method "= X" 684 means "using the OID of diffServSchedulerX". 686 4.1. Model's Example 688 As an example, when this MIB's structures are used for the hypothetical 689 configuration in [MODEL] section 8.1, the result is shown in Figure 2, 690 3, and 4. The parameterization table entries' values are not specified 691 in detail here, they can be obtained from [MODEL] section 8.1. This 692 example has been explained in sufficient detail in [MODEL] section 8.1, 693 please use that as a reference. 695 +---------------------+ +------------------------> Q_EF 696 |DataPath | | 697 | ifIndex=1 | | +--------------+ 698 | IfDirection=Ingress | +------+ | +--->|Action | 699 | Start --------------+--->|Clfr | | | | Id=EF2 | 700 +---------------------+ | Id=1 | | | | Next=0.0 | 701 +------+ | | | Specific=0.0 | 702 | | | Type=AbsDrop | 703 | | +--------------+ 704 | | 705 | +-------------------+ 706 | | 707 +------------+ +--------------+ | +-----------+ | 708 |ClfrElement | +-->|Meter | | +->|Action | | 709 | Id=EF | | | Id=EF | | | | Id=EF1 | | 710 | ClfrId=1 | | | SucceedNext -+-+ | | Next -----+----+ 711 | Order=NA | | | FailNext ----+----+ | Specific -+--+ 712 | Next ------+--+ | Specific -+ | | Type=Spcf | | 713 | Specific --+-+ +-----------+--+ +-----------+ | 714 +------------+ | | | 715 | | +-------+ 716 | | | 717 | +--------+ | +---------+ | +--------------+ 718 +-->|FilterEF| +-->|TBMeterEF| +->|CountActEFDrop| 719 +--------+ +---------+ +--------------+ 721 +------------+ +----------+ +--------------+ 722 |ClfrElement | +-->|Action | +-->|AlgDrop | 723 | Id=AF11 | | | Id=AF11 | | | Id=AF11 | 724 | ClfrId=1 | | | Next ----+--+ | Type=tailDrop| 725 | Order=NA | | | Specific +-+ | Next --------+--+-> Q_AF11 726 | Next ------+--+ | Type=Spcf| | | QMeasure ----+--+ 727 | Specific --+-+ +----------+ | | QThreshold | 728 +------------+ | | | Specific=0.0 | 729 | | +--------------+ 730 | | 731 | +----------+ | +------------+ 732 +->|FilterAF11| +->|CountActAF11| 733 +----------+ +------------+ 735 Figure 2: Example from Model Section 8.1 part 1 737 +------------+ +--------------+ +-------------+ 738 |ClfrElement | +-->|Meter | +-->|Action | 739 | Id=AF21 | | | Id=AF21 | | | Id=AF21S | 740 | ClfrId=1 | | | SucceedNext -+--+ | Next -------+----> Q_AF21 741 | Order=NA | | | FailNext + | | Specific -+ | 742 | Next ------+--+ | Specific --+ | | Type=Spcf | | 743 | Specific --+-+ +----------+-+-+ +-----------+-+ 744 +------------+ | | | | 745 | | | +---+ 746 | | | | 747 | +----------+ | | +-----------+ | +-------------+ 748 +->|FilterAF21| | +->|TBMeterAF21| +->|CountActAF21S| 749 +----------+ | +-----------+ +-------------+ 750 | 751 +--------------+ 752 | 753 | +-----------+ +-----------+ 754 +-->|Action | +-->|Action | 755 | Id=AF21F1 | | | Id=AF21F2 | 756 | Next -----+--+ | Next -----+------> Q_BE 757 | Specific -+-+ | Specific -+-+ 758 | Type=Spcf | | | Type=Spcf | | 759 +-----------+ | +-----------+ | 760 | | 761 | +-------------+ | +-------------+ 762 +->|CountActAF21F| +->|DscpMarkActBE| 763 +-------------+ +-------------+ 765 +------------+ 766 |ClfrElement | +-----------------------------------------> Q_BE 767 | Id=WildCard| | 768 | ClfrId=1 | | 769 | Order=NA | | 770 | Next ------+--+ +--------------+ 771 | Specific --+------>|FilterMatchAll| 772 +------------+ +--------------+ 774 Figure 3: Example from Model Section 8.1 part 2 775 +-------------+ 776 Q_EF--->|Q | 777 | Id=EF +--+--------------------------+ 778 | Next ----+ | +-----------+ | 779 | SchdParam --+-->|SchdParamEF| | 780 +-------------+ +-----------+ | 781 | 782 +-------------+ +----------------+ | +----------------+ 783 Q_AF11->|Q | +->|Scheduler | +->|Scheduler | 784 | Id=AF11 | | | Id=AF11Shaper | | | Id=DiffServ | 785 | Next -------+---+ | Next ----------+--+ | Next=0.0 | 786 | SchdParam --+-+ | Method=Shaping | | | Method=Priority| 787 +-------------+ | | SchdParam -+ | | | SchdParam=0.0 | 788 | +------------+---+ | +----------------+ 789 +---------------+ | | 790 | +------------+ | 791 | +--------------+ | +-------------+ | 792 +->|SchdParamAF11S| +->|SchdParamAF11| | 793 +--------------+ +-------------+ | 794 | 795 +-------------+ | 796 Q_AF21->|Q | | 797 | Id=AF21 +--+--------------------------+ 798 | Next ----+ | +-------------+ | 799 | SchdParam --+-->|SchdParamAF21| | 800 +-------------+ +-------------+ | 801 | 802 +-------------+ | 803 Q_BE--->|Q | | 804 | Id=BE +--+--------------------------+ 805 | Next ----+ | +-----------+ 806 | SchdParam --+-->|SchdParamBE| 807 +-------------+ +-----------+ 809 Figure 4: Example from Model Section 8.1 part 3 811 4.2. Additional Data Path Example 813 4.2.1. Data Path and Classifier Example Discussion 815 The example in Figure 5 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 +---------------------+ 822 |DataPath | 823 | ifIndex=1 | 824 | IfDirection=Ingress | +------+ 825 | Start --------------+--->|Clfr | 826 +---------------------+ | Id=1 | 827 +------+ 829 +------------+ +--------------+ +-----------+ 830 |ClfrElement | +-->|Meter | +-->|Action | 831 | Id=101 | | | Id=101 | | | Id=101 | 832 | ClfrId=1 | | | SucceedNext -+--+ | Next -----+---->... 833 | Order=NA | | | FailNext ----+->... | Specific -+-+ 834 | Next ------+--+ | Specific -+ | | Type=Spcf | | 835 | Specific --+-+ +-----------+--+ +-----------+ | 836 +------------+ | | +-------+ 837 | +-------+ | +--------+ | +---------+ 838 +-->|Filter1| +-->|TBMeter1| +-->|CountAct1| 839 +-------+ +--------+ +---------+ 841 +------------+ +--------------+ +-----------+ 842 |ClfrElement | +-->|Meter | +-->|Action | 843 | Id=102 | | | Id=102 | | | Id=102 | 844 | ClfrId=1 | | | SucceedNext -+--+ | Next -----+---->... 845 | Order=NA | | | FailNext ----+->... | Specific -+-+ 846 | Next ------+--+ | Specific -+ | | Type=Spcf | | 847 | Specific --+-+ +-----------+--+ +-----------+ | 848 +------------+ | | +-------+ 849 | +-------+ | +--------+ | +---------+ 850 +-->|Filter2| +-->|TBMeter2| +-->|CountAct2| 851 +-------+ +--------+ +---------+ 853 +------------+ +--------------+ +-----------+ 854 |ClfrElement | +-->|Meter | +-->|Action | 855 | Id=103 | | | Id=103 | | | Id=103 | 856 | ClfrId=1 | | | SucceedNext -+--+ | Next -----+---->... 857 | Order=NA | | | FailNext ----+->... | Specific -+-+ 858 | Next ------+--+ | Specific -+ | | Type=Spcf | | 859 | Specific --+-+ +-----------+--+ +-----------+ | 860 +------------+ | | +-------+ 861 | +-------+ | +--------+ | +---------+ 862 +-->|Filter3| +-->|TBMeter3| +-->|CountAct3| 863 +-------+ +--------+ +---------+ 865 Figure 5: Additional Data Path Example Part 1 867 +-------------+ +-----------------+ +----------------+ 868 ---->|Q | +->|Scheduler | +->|Scheduler | 869 | Id=EF | | | Id=DiffServ | | | Id=Shaping | 870 | Next -------+---+ | Next -----------+--+ | Next=0.0 | 871 | SchdParam -+| | | Method=Priority | | Method=Shaping | 872 +------------++ | | SchdParam -+ | | SchdParam=0.0 | 873 | | +------------+----+ +----------------+ 874 +------------+ | | 875 | | +------------+ 876 | +-----------+ | | 877 +->|SchdParamEF| | | +----------------+ 878 +-----------+ | +->|SchdParamShaping| 879 | +----------------+ 880 | 881 +-----------------------------------------+ 882 | 883 +----------------+ +-------------+ | 884 --->|AlgDrop | +->|Q | | 885 | Id=AF11 | | | Id=AF1X | +-------------+ | 886 | Type=randomDrop| | | Next -------+--->|Scheduler | | 887 | Next ----------+-+--+ | SchdParam -+| | Id=AF | | 888 | QMeasure ------+-+ | +------------++ | Next -------+--+ 889 | QThreshold | | | | Method=WFQ | 890 | Specific -+ | | +------------+ | SchdParam --+--+ 891 +-----------+----+ | | +-------------+ | 892 | | | +-------------+ | 893 +-----------+ | +->|SchdParamAF1X| +----------------+ 894 | +--------------+ | +-------------+ | 895 +->|RandomDropAF11| | | +-----------+ 896 +--------------+ | +->|SchdParamAF| 897 | +-----------+ 898 +----------------+ | 899 --->|AlgDrop | | 900 | Id=AF12 | | 901 | Type=randomDrop| | 902 | Next ----------+-+--+ 903 | QMeasure ------+-+ 904 | QThreshold | 905 | Specific -+ | 906 +-----------+----+ 907 | 908 +-----------+ 909 | +--------------+ 910 +->|RandomDropAF12| 911 +--------------+ 913 Figure 6: Additional Data Path Example Part 2 915 Another level of classification can be defined that follows the Action 916 functional datapath elements in Figure 5. This second level of 917 classifiers and their subsequent functional datapath elements would be 918 considered as in another TCB. 920 This multi-level classification allow the construction of traffic 921 seperations like: 922 if (dept1) then take dept1-action 923 { 924 if (appl1) then take dept1-appl1-action. 925 if (appl2) then take dept1-appl2-action. 926 if (appl3) then take dept1-appl3-action. 927 } 928 if (dept2) then take dept2-action 929 { 930 if (appl1) then take dept2-appl1-action. 931 if (appl2) then take dept2-appl2-action. 932 if (appl3) then take dept2-appl3-action. 933 } 934 if (dept3) then take dept3-action 935 { 936 if (appl1) then take dept3-appl1-action. 937 if (appl2) then take dept3-appl2-action. 938 if (appl3) then take dept3-appl3-action. 939 } 941 Minimumly, the filters for appl1, appl2, appl3 may be reused for the 942 above setup. 944 4.2.2. Meter and Action Example Discussion 946 A simple Meter that can be parameterized by a single TBMeter entry is 947 shown here. For Metering types that require mutliple TBMeter entries 948 for parameterization, a second level Meter and TBMeter table entries may 949 be used. For example, for trTCM, with the first level TBMeter entry 950 used for Peak Information Token Bucket, the first level SucceedNext 951 points to the second level Meter entry, with second level TBMeter entry 952 used for Committed Information Token Bucket. 954 Notice the CountAct Action is shown in Figure 5. This is purposely done 955 to indicate all datapaths should have at least one CountAct Action. 956 Other actions can be pointed to by the Next pointer of the CountAct 957 action, like DscpMarkAct action. 959 4.2.3. Queue and Scheduler Example Discussion 961 Example in Figure 6 shows three classified input traffic streams, EF, 962 AF11, and AF12, feeding into their respective queue and algorithmic 963 droppers. After their respective dropping process, the AF traffic 964 streams feed into the same queue, QAF1X. 966 A Scheduler, AF, is shown in Figure 6, as the sink for AF1X queue 967 traffic, servicing AF1X queue with scheduling parameters indicated by 968 SchdParamAF1X. This scheduler is used to service traffic from AF1X, 969 AF2X, AF3X queues using weighted fair queueing method. The AF2X and 970 AF3X queues are not shown in Figure 6, they can be very much like AF1X 971 queue setup. 973 Another traffic stream, EF, is handled by the EF queue. Scheduler 974 DiffServ services output of EF queue using SchdParamEF, and output of AF 975 scheduler using SchdParamAF, with Priority Queue scheduling method. 977 Notice all the diffserv traffic may go out on a link with traffic 978 shaping. The traffic shaping can be parameterize using the Shaping 979 Scheduler in Figure 6. For shaping, the diffServSchdParamMaxRate 980 attributes should be used. The Shaping Scheduler is indicated as the 981 last diffserv functional element of this data path by using its Next 982 pointer with value of zeroDotZero. 984 5. Conventions used in this MIB 986 5.1. The use of RowPointer 988 RowPointer is a textual convention used to identify a conceptual row in 989 an SNMP Table by pointing to one of its objects. In this MIB, it is used 990 to indicate succession, for pointing to data path linkage table entries. 992 For succession, it answers the question "what happens next?". Rather 993 than presume that the next table must be as specified in the conceptual 994 model [MODEL] and providing its index, the RowPointer takes you to the 995 MIB row representing that thing. In the diffServMeterTable, for example, 996 the diffServMeterFailNext RowPointer might take you to another meter, 997 while the diffServMeterSucceedNext RowPointer would take you to an 998 action. 1000 NOTE -- the RowPointer construct is used to build the TCBs 1001 described in [MODEL]: this MIB does not model TCBs directly - it 1002 operates at a lower level of abstraction using only individual 1003 elements, connected in succession by RowPointers. Therefore, the 1004 concept of TCBs enclosing individual functional datapath elements 1005 is not applicable to this MIB, although such a concept may be 1006 employed by management tools that use this MIB. 1008 It is possible that a path through a device following a set of 1009 RowPointers is indeterminate i.e. it ends in a dangling RowPointer. 1010 Guidance is provided in the MIB module's DESCRIPTION-clause for each of 1011 the linkage attribute. In general, for both zeroDotZero and dangling 1012 RowPointer, it is assumed the data path ends and the traffic should be 1013 given to the none-diffserv part of the device. Any variation from this 1014 usage is indicated by the attribute affected. 1016 5.2. The use of StaticRowPointer 1018 StaticRowPointer, like RowPointer, is a textual convention used to 1019 identify a conceptual row in an SNMP Table by pointing to one of its 1020 objects. In this MIB, it is used to indicate parameterization, for 1021 pointing to parameterization table entries. 1023 For indirection as in the diffServClfrElementTable, the idea is to allow 1024 other MIBs, including proprietary ones, to define new and arcane filters 1025 - MAC headers, IPv4 and IPv6 headers, BGP Communities and all sorts of 1026 other things - whilst still utilising the structures of this MIB. This 1027 is a form of class inheritance (in "object oriented" language): it 1028 allows base object definitions ("classes") to be extended in proprietary 1029 or standard ways, in the future, by other documents. 1031 StaticRowPointer also clearly indicate the identified conceptual row's 1032 content does not change, hence they can be simultaneously used, pointed 1033 to, by more than one data path linkage table entries. The 1034 identification of StaticRowPointer allows higher level policy mechanisms 1035 to take advantage of this characteristic. 1037 5.3. Conceptual row creation and deletion 1039 A number of conceptual tables defined in this MIB use as an index an 1040 arbitrary integer value, unique across the scope of the agent. In order 1041 to help with multi-manager row-creation problems, a mechanism must be 1042 provided to allow a manager to obtain unique values for such an index 1043 and to ensure that, when used, the manager knows whether it got what it 1044 wanted or not. 1046 Typically, such a table has an associated NextFree variable e.g. 1047 diffServClfrNextFree which provides a suitable value for the index of 1048 the next row to be created e.g. diffServClfrId. A special value, 0, is 1049 used to indicate that no more entries can be created by the agent. The 1050 table also has a columnar Status attribute with RowStatus syntax [6]. 1052 If a manager attempts to create a conceptual row in the table (by a SET 1053 operation that contains a varbind setting the Status to a value of 1054 either createAndGo or createAndWait) and if the agent has sufficient 1055 resources and has no other conceptual row with the same indices, the 1056 agent will create the row and return success. If the agent has 1057 insufficient resources or such a row is already existent then it returns 1058 an error. A manager must be prepared to try again in such circumstances, 1059 probably by re-reading the NextFree to obtain a new index value in case 1060 a second manager had got in between the first manager's read of the 1061 NextFree value and the first manager's row-creation attempt. The use of 1062 RowStatus is covered in more detail in [6]. 1064 6. Extending this MIB 1066 With the structures of this MIB divided into data path linkage tables 1067 and parameterization tables, and with the use of RowPointer and 1068 StaticRowPointer, new data path linkage and parameterization tables can 1069 be defined in other MIB modules, and used with tables defined in this 1070 MIB. This MIB does not limit on the type of entries its RowPointer 1071 attributes can point to, hence new functional data path elements can be 1072 defined in other MIBs and integrated with functional data path elements 1073 of this MIB. For example, new Action functional data path element can 1074 be defined for Traffic Engineering and be integrated with DiffServ 1075 functional data path elements, possibly used within the same data path 1076 sharing the same classifiers and meters. 1078 It is more likely that new parameterization tables will be created in 1079 other MIBs as new methods or proprietary methods get deployed for 1080 existing diffserv functional data path elements. For example, different 1081 kinds of filters can be defined by using new filter parameterization 1082 tables. New scheduling methods can be deployed by defining new 1083 scheduling method OIDs and new scheduling parameter tables. 1085 Notice both new data path linkage tables and parameterization tables can 1086 be added without needing to change this MIB document or affect existing 1087 tables and their usage. 1089 7. MIB Definition 1091 DIFF-SERV-MIB DEFINITIONS ::= BEGIN 1093 IMPORTS 1094 Integer32, Unsigned32, Counter32, Counter64, 1095 MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, 1096 zeroDotZero, mib-2 1097 FROM SNMPv2-SMI 1098 TEXTUAL-CONVENTION, RowStatus, RowPointer, TimeStamp 1099 FROM SNMPv2-TC 1100 MODULE-COMPLIANCE, OBJECT-GROUP 1101 FROM SNMPv2-CONF 1102 ifIndex 1103 FROM IF-MIB 1104 InetAddressType, InetAddress 1105 FROM INET-ADDRESS-MIB 1106 BurstSize 1107 FROM INTEGRATED-SERVICES-MIB; 1109 diffServMib MODULE-IDENTITY 1110 LAST-UPDATED "200011190000Z" 1111 ORGANIZATION "IETF Diffserv WG" 1112 CONTACT-INFO 1113 " Fred Baker 1114 Cisco Systems 1115 519 Lado Drive 1116 Santa Barbara, CA 93111, USA 1117 E-mail: fred@cisco.com 1119 Kwok Ho Chan 1120 Nortel Networks 1121 600 Technology Park Drive 1122 Billerica, MA 01821, USA 1123 E-mail: khchan@nortelnetworks.com 1125 Andrew Smith 1126 Allegro Networks 1127 6399 San Ignacio Ave 1128 San Jose, CA 95119, USA 1129 E-mail: andrew@allegronetworks.com" 1131 DESCRIPTION 1132 "This MIB defines the objects necessary to manage a 1133 device that uses the Differentiated Services Archi- 1134 tecture described in RFC 2475 and the Informal 1135 Management Model for DiffServ Routers in draft-ietf- 1136 diffserv-model-05.txt." 1137 REVISION "200011190000Z" 1138 DESCRIPTION 1139 "Initial version, published as RFC xxxx." 1141 ::= { mib-2 12345 } -- anybody who uses this unassigned 1142 -- number deserves the wrath of IANA 1144 diffServMIBObjects OBJECT IDENTIFIER ::= { diffServMib 1 } 1145 diffServMIBConformance OBJECT IDENTIFIER ::= { diffServMib 2 } 1147 -- These textual conventions have no effect on either the syntax 1148 -- nor the semantics of any managed object. Objects defined 1149 -- using this convention are always encoded by means of the 1150 -- rules that define their primitive type. 1152 Dscp ::= TEXTUAL-CONVENTION 1153 DISPLAY-HINT "d" 1154 STATUS current 1155 DESCRIPTION 1156 "The IP header Diffserv Code-Point that may be used 1157 for discriminating or marking a traffic stream. The 1158 value -1 ( 4294967295 for Integer32 ) is used to 1159 indicate a wildcard i.e. any value." 1160 SYNTAX Integer32 (4294967295 | 0..63) 1162 SixTupleClfrL4Port ::= TEXTUAL-CONVENTION 1163 DISPLAY-HINT "d" 1164 STATUS current 1165 DESCRIPTION 1166 "A value indicating a Layer-4 protocol port number." 1167 SYNTAX Unsigned32 (0..65535) 1169 IfDirection ::= TEXTUAL-CONVENTION 1170 STATUS current 1171 DESCRIPTION 1172 "Specifies a direction of data travel on an inter- 1173 face. 'inbound' traffic is operated on during recep- 1174 tion from the interface, while 'outbound' traffic is 1175 operated on prior to transmission on the interface." 1176 SYNTAX INTEGER { 1177 inbound(1), -- ingress interface 1178 outbound(2) -- egress interface 1179 } 1181 -- The following textual convention, StaticRowPointer, 1182 -- is similiar to the RowPointer textual convention, 1183 -- but embody additional semantics to indicate whether 1184 -- a single instance of the target object can be pointed 1185 -- to by more than one parent objects. 1186 -- This textual convention allows a clearer definition 1187 -- of parameterization table entries, as compared to 1188 -- datapath linking table entries. 1189 -- Objects pointed to by StaticRowPointers, parameterization 1190 -- table entries, can be reused by one or more data path 1191 -- functional elements in one or more TCBs, belonging to one 1192 -- or more data paths. 1193 -- This textual convention also allow easier reuse of 1194 -- data definitions in this MIB by higher level configuration 1195 -- and provisioning mechanisms. 1197 StaticRowPointer ::= TEXTUAL-CONVENTION 1198 STATUS current 1199 DESCRIPTION 1200 "Like a RowPointer, this textual convention 1201 represents a pointer to a conceptual row. The value 1202 is the name of the instance of the first accessible 1203 columnar object in the conceptual row. 1205 The additional semantics of this textual convention, 1206 relative to RowPointer, are related to the object the 1207 pointer is pointing to. The pointed-to object may 1208 have more than one parent object pointing to it, 1209 indicating the pointed-to object can be shared by one 1210 or more parent objects. 1212 This additional semantics facilitates the creation of 1213 instance-specific objects by cloning, used by higher 1214 level configuration/provisioning mechanisms. The 1215 objects being cloned may either be special ones that 1216 express configuration information at the 1217 implementation-specific level, or simply instance- 1218 specific ones that already exist at the time the 1219 cloning is done. When an object with the syntax Sta- 1220 ticRowPointer is cloned, the StaticRowPointer in the 1221 newly cloned object is set to point to the same con- 1222 ceptual row that the StaticRowPointer in the cloned- 1223 from object pointed to. The cloning operations may be 1224 accomplished either with the script-based technique 1225 defined by SNMP Configuration, or by ordinary SNMP 1226 Get and Set operations, or other mechanisms. 1228 Support of this additional semantics and cloning 1229 functionality is not required for conformance to this 1230 MIB. When the additional semantics is not supported, 1231 this textual convention behaves identically to the 1232 RowPointer textual convention." 1233 SYNTAX OBJECT IDENTIFIER 1235 -- 1236 -- Data Path 1237 -- 1239 diffServDataPath OBJECT IDENTIFIER ::= { diffServMIBObjects 1 } 1241 -- 1242 -- Data Path Table 1243 -- 1244 -- The Data Path Table enumerates the Differentiated Services 1245 -- Data Paths within this device. Each entry in this table 1246 -- is indexed by ifIndex and ifDirection. Each entry provides 1247 -- the first diffserv functional datapath element to process data 1248 -- flow for each specific datapath. This table should have at most 1249 -- two entries for each DiffServ capable interface on this device; 1250 -- ingress and egress. 1251 -- 1252 -- Notice all diffserv functional datapath elements linked together 1253 -- using their individual next pointers and anchored by an entry 1254 -- of the diffServDataPathTable must belong to the same datapath. 1255 -- The use of next pointer to point to diffserv functional datapath 1256 -- element of a different datapath is not allowed. 1257 -- 1259 diffServDataPathTable OBJECT-TYPE 1260 SYNTAX SEQUENCE OF DiffServDataPathEntry 1261 MAX-ACCESS not-accessible 1262 STATUS current 1263 DESCRIPTION 1264 "The data path table defines the data paths in this 1265 device. Each data path is defined by the interface 1266 and traffic direction. The first diffserv functional 1267 datapath element to handle traffic for this data path 1268 is defined by a RowPointer, diffServDataPathStart, in 1269 the entries of this table." 1270 ::= { diffServDataPath 1 } 1272 diffServDataPathEntry OBJECT-TYPE 1273 SYNTAX DiffServDataPathEntry 1274 MAX-ACCESS not-accessible 1275 STATUS current 1276 DESCRIPTION 1277 "An entry in the data path table describes a single 1278 diffserv datapath in this device." 1279 INDEX { ifIndex, diffServDataPathIfDirection } 1280 ::= { diffServDataPathTable 1 } 1282 DiffServDataPathEntry ::= SEQUENCE { 1283 diffServDataPathIfDirection IfDirection, 1284 diffServDataPathStart RowPointer, 1285 diffServDataPathStatus RowStatus 1286 } 1288 diffServDataPathIfDirection OBJECT-TYPE 1289 SYNTAX IfDirection 1290 MAX-ACCESS not-accessible 1291 STATUS current 1292 DESCRIPTION 1293 "Specifies the direction for which this data path 1294 entry applies on this interface." 1295 ::= { diffServDataPathEntry 1 } 1297 diffServDataPathStart OBJECT-TYPE 1298 SYNTAX RowPointer 1299 MAX-ACCESS read-create 1300 STATUS current 1301 DESCRIPTION 1302 "This selects the first diffserv functional datapath 1303 element to handle traffic for this data path. This 1304 RowPointer should point to an instance of one of: 1306 diffServClfrEntry 1307 diffServMeterEntry 1308 diffServActionEntry 1309 diffServAlgDropEntry 1310 diffServQEntry 1312 A value of zeroDotZero in this attribute indicates no 1313 further Diffserv treatment is performed on traffic of 1314 this datapath. The use of zeroDotZero is the normal 1315 usage for the last functional datapath element of the 1316 current data path. 1318 If the row pointed to does not exist, the treatment 1319 is as if this attribute contains a value of zero- 1320 DotZero." 1321 ::= { diffServDataPathEntry 2 } 1323 diffServDataPathStatus OBJECT-TYPE 1324 SYNTAX RowStatus 1325 MAX-ACCESS read-create 1326 STATUS current 1327 DESCRIPTION 1328 "The RowStatus variable controls the activation, 1329 deactivation, or deletion of a row/entry. Any writ- 1330 able variable may be modified whether the row is 1331 active or notInService." 1332 ::= { diffServDataPathEntry 3 } 1334 -- 1335 -- Classifiers 1336 -- 1338 diffServClassifier OBJECT IDENTIFIER ::= { diffServMIBObjects 2 } 1340 -- 1341 -- Classifier Table 1342 -- 1343 -- Classifier allows multiple classifier elements, of same or different 1344 -- types, to be used together. 1345 -- A classifier must completely classify all packets presented to it, 1346 -- this means all traffic handled by a classifier must match 1347 -- at least one classifier element within the classifier, 1348 -- with the classifier element parameters specified by a filter. 1349 -- 1350 -- If there is ambiguity between classifier elements of different 1351 -- classifier, the precedence is indicated by the order the classifiers 1352 -- are linked, the first classifier in the link is applied to the 1353 -- traffic first. 1354 -- 1356 diffServClfrNextFree OBJECT-TYPE 1357 SYNTAX Unsigned32 1358 MAX-ACCESS read-only 1359 STATUS current 1360 DESCRIPTION 1361 "This object yields a value when read that is 1362 currently unused for a diffServClfrId instance. If a 1363 configuring system attempts to create a new row in 1364 the diffServClfrTable using this value, that opera- 1365 tion will fail if the value has, in the meantime, 1366 been used to create another row that is currently 1367 valid." 1368 ::= { diffServClassifier 1 } 1370 diffServClfrTable OBJECT-TYPE 1371 SYNTAX SEQUENCE OF DiffServClfrEntry 1372 MAX-ACCESS not-accessible 1373 STATUS current 1374 DESCRIPTION 1375 "This table enumerates all the diffserv classifier 1376 functional datapath elements of this device. The 1377 actual classification definitions are defined in 1378 diffServClfrElementTable entries belonging to each 1379 classifier." 1380 REFERENCE 1381 "[MODEL] section 4.1" 1382 ::= { diffServClassifier 2 } 1384 diffServClfrEntry OBJECT-TYPE 1385 SYNTAX DiffServClfrEntry 1386 MAX-ACCESS not-accessible 1387 STATUS current 1388 DESCRIPTION 1389 "An entry in the classifier table describes a single 1390 classifier. All classifier elements belonging to the 1391 same classifier uses the classifier's diffServClfrId 1392 in thier diffServClfrElementClfrId attribute." 1393 INDEX { diffServClfrId } 1394 ::= { diffServClfrTable 1 } 1396 DiffServClfrEntry ::= SEQUENCE { 1397 diffServClfrId Unsigned32, 1398 diffServClfrStatus RowStatus 1399 } 1401 diffServClfrId OBJECT-TYPE 1402 SYNTAX Unsigned32 1403 MAX-ACCESS not-accessible 1404 STATUS current 1405 DESCRIPTION 1406 "An index that enumerates the classifier entries. The 1407 set of such identifiers spans the whole agent. 1408 Managers should obtain new values for row creation in 1409 this table by reading diffServClfrNextFree." 1410 ::= { diffServClfrEntry 1 } 1412 diffServClfrStatus OBJECT-TYPE 1413 SYNTAX RowStatus 1414 MAX-ACCESS read-create 1415 STATUS current 1416 DESCRIPTION 1417 "The RowStatus variable controls the activation, 1418 deactivation, or deletion of a classifier. Any writ- 1419 able variable may be modified whether the row is 1420 active or notInService." 1421 ::= { diffServClfrEntry 2 } 1423 -- 1424 -- Classifier Element Table 1425 -- 1426 -- Entries in the classifier element table serves as 1427 -- the anchor for each classification pattern, defined 1428 -- in filter table entries. Each classifier element 1429 -- table entry also specifies the subsequent downstream 1430 -- diffserv functional datapath element when the 1431 -- classification pattern is satisfied. 1432 -- Each entry in the classifier element table describes 1433 -- one branch of the fan-out characteristic of a classifier 1434 -- indicated in [MODEL] section 4.1. A classifier is madeup 1435 -- of one or more classifier elements. 1436 -- 1438 diffServClfrElementNextFree OBJECT-TYPE 1439 SYNTAX Unsigned32 1440 MAX-ACCESS read-only 1441 STATUS current 1442 DESCRIPTION 1443 "This object yields a value when read that is 1444 currently unused for a diffServClfrElementId 1445 instance. If a configuring system attempts to create 1446 a new row in the diffServClfrElementTable using this 1447 value, that opera- tion will fail if the value has, 1448 in the meantime, been used to create another 1449 row that is currently valid." 1450 ::= { diffServClassifier 3 } 1452 diffServClfrElementTable OBJECT-TYPE 1453 SYNTAX SEQUENCE OF DiffServClfrElementEntry 1454 MAX-ACCESS not-accessible 1455 STATUS current 1456 DESCRIPTION 1457 "The classifier element table enumerates the rela- 1458 tionship between classification patterns and subse- 1459 quent downstream diffserv functional datapath ele- 1460 ments. Classification parameters are defined by 1461 entries of filter tables pointed to by 1462 diffServClfrElementSpecific. There can be filter 1463 tables of different types, and they can be inter- 1464 mixed and used within a classifier. An example of a 1465 filter table defined in this MIB is diffServSixTu- 1466 pleClfrTable, for IP Multi-Field Classifiers (MFCs). 1467 Filter tables for other filter types may be defined 1468 elsewhere." 1469 REFERENCE 1470 "[MODEL] section 4.1" 1471 ::= { diffServClassifier 4 } 1473 diffServClfrElementEntry OBJECT-TYPE 1474 SYNTAX DiffServClfrElementEntry 1475 MAX-ACCESS not-accessible 1476 STATUS current 1477 DESCRIPTION 1478 "An entry in the classifier element table describes a 1479 single element of the classifier." 1480 INDEX { diffServClfrElementClfrId, diffServClfrElementId } 1481 ::= { diffServClfrElementTable 1 } 1483 DiffServClfrElementEntry ::= SEQUENCE { 1484 diffServClfrElementId Unsigned32, 1485 diffServClfrElementClfrId Unsigned32, 1486 diffServClfrElementOrder Unsigned32, 1487 diffServClfrElementNext RowPointer, 1488 diffServClfrElementSpecific StaticRowPointer, 1489 diffServClfrElementStatus RowStatus 1490 } 1492 diffServClfrElementId OBJECT-TYPE 1493 SYNTAX Unsigned32 1494 MAX-ACCESS not-accessible 1495 STATUS current 1496 DESCRIPTION 1497 "An index that enumerates the Classifier Element 1498 entries. The set of such identifiers spans the whole 1499 agent. Managers should obtain new values for row 1500 creation in this table by reading 1501 diffServClfrElementNextFree." 1502 ::= { diffServClfrElementEntry 1 } 1504 diffServClfrElementClfrId OBJECT-TYPE 1505 SYNTAX Unsigned32 1506 MAX-ACCESS not-accessible 1507 STATUS current 1508 DESCRIPTION 1509 "A classifier Id identifies which classifier this 1510 classifier element is a part of. This needs to be 1511 the value of diffServClfrId attribute for an existing 1512 row in diffServClfrTable." 1513 ::= { diffServClfrElementEntry 2 } 1515 diffServClfrElementOrder OBJECT-TYPE 1516 SYNTAX Unsigned32 1517 MAX-ACCESS read-create 1518 STATUS current 1519 DESCRIPTION 1520 "The relative order in which classifier elements are 1521 applied: higher numbers represent classifier ele- 1522 ment with higher precedence. Classifier elements 1523 with the same order must be unambiguous i.e. they 1524 must define non-overlapping patterns, and are con- 1525 sidered to be applied simultaneously to the 1526 traffic stream. Clas- sifier elements with different 1527 order may overlap in their filters: the classif- 1528 ier element with the highest order that matches is 1529 taken. 1531 On a given interface, there must be a complete clas- 1532 sifier in place at all times in the ingress 1533 direction. This means that there will always be one 1534 or more filters that match every possible pat- tern 1535 that could be presented in an incoming packet. 1536 There is no such requirement in the egress direc- 1537 tion." 1538 DEFVAL { 0 } 1539 ::= { diffServClfrElementEntry 3 } 1541 diffServClfrElementNext OBJECT-TYPE 1542 SYNTAX RowPointer 1543 MAX-ACCESS read-create 1544 STATUS current 1545 DESCRIPTION 1546 "This attribute provides one branch of the fan-out 1547 functionality of a classifier described in [MODEL] 1548 section 4.1. 1550 This selects the next diffserv functional datapath 1551 element to handle traffic for this data path. This 1552 RowPointer should point to an instance of one of: 1553 diffServClfrEntry 1554 diffServMeterEntry 1555 diffServActionEntry 1556 diffServAlgDropEntry 1557 diffServQEntry 1559 A value of zeroDotZero in this attribute indicates no 1560 further Diffserv treatment is performed on traffic of 1561 this datapath. The use of zeroDotZero is the normal 1562 usage for the last functional datapath element of the 1563 current data path. 1565 If the row pointed to does not exist, the treatment 1566 is as if this attribute contains a value of zero- 1567 DotZero." 1568 ::= { diffServClfrElementEntry 4 } 1570 diffServClfrElementSpecific OBJECT-TYPE 1571 SYNTAX StaticRowPointer 1572 MAX-ACCESS read-create 1573 STATUS current 1574 DESCRIPTION 1575 "A pointer to a valid entry in another table, 1576 filter table, that describes the applicable classif- 1577 ication parameters, e.g. an entry in diffServSixTu- 1578 pleClfrTable. 1580 If the row pointed to does not exist, the classifier 1581 element is ignored. 1583 The value zeroDotZero is interpreted to match 1584 anything not matched by another classifier element - 1585 only one such entry may exist for each classifier." 1586 DEFVAL { zeroDotZero } 1587 ::= { diffServClfrElementEntry 5 } 1589 diffServClfrElementStatus OBJECT-TYPE 1590 SYNTAX RowStatus 1591 MAX-ACCESS read-create 1592 STATUS current 1593 DESCRIPTION 1594 "The RowStatus variable controls the activation, 1595 deactivation, or deletion of a classifier element. 1596 Any writ- able variable may be modified whether 1597 the row is active or notInService." 1598 ::= { diffServClfrElementEntry 6 } 1600 -- 1601 -- IP Six-Tuple Classification Table 1602 -- 1603 -- Classification based on 6 different fields in the IP 1604 -- header. This is intended to be IP-version-independent. 1605 -- Filters, entries in this table, may be shared, pointed to, 1606 -- by multiple diffServClfrElementEntry, of same or different 1607 -- datapaths in the same system. 1608 -- 1610 diffServSixTupleClfrNextFree OBJECT-TYPE 1611 SYNTAX Unsigned32 1612 MAX-ACCESS read-only 1613 STATUS current 1614 DESCRIPTION 1615 "This object yields a value when read that is currently unused 1616 for a diffServSixTupleClfrId instance. 1617 If a configuring system attempts to create a new row 1618 in the diffServSixTupleClfrTable using this value, that operation 1619 will fail if the value has, in the meantime, been used 1620 to create another row that is currently valid." 1621 ::= { diffServClassifier 5 } 1623 diffServSixTupleClfrTable OBJECT-TYPE 1624 SYNTAX SEQUENCE OF DiffServSixTupleClfrEntry 1625 MAX-ACCESS not-accessible 1626 STATUS current 1627 DESCRIPTION 1628 "A table of IP Six-Tuple Classifier filter entries 1629 that a system may use to identify IP traffic." 1630 REFERENCE 1631 "[MODEL] section 4.2.2" 1632 ::= { diffServClassifier 6 } 1634 diffServSixTupleClfrEntry OBJECT-TYPE 1635 SYNTAX DiffServSixTupleClfrEntry 1636 MAX-ACCESS not-accessible 1637 STATUS current 1638 DESCRIPTION 1639 "An IP Six-Tuple Classifier entry describes a single 1640 filter." 1641 INDEX { diffServSixTupleClfrId } 1642 ::= { diffServSixTupleClfrTable 1 } 1644 DiffServSixTupleClfrEntry ::= SEQUENCE { 1645 diffServSixTupleClfrId Unsigned32, 1646 diffServSixTupleClfrDstAddrType InetAddressType, 1647 diffServSixTupleClfrDstAddr InetAddress, 1648 diffServSixTupleClfrDstAddrMask Unsigned32, 1649 diffServSixTupleClfrSrcAddrType InetAddressType, 1650 diffServSixTupleClfrSrcAddr InetAddress, 1651 diffServSixTupleClfrSrcAddrMask Unsigned32, 1652 diffServSixTupleClfrDscp Dscp, 1653 diffServSixTupleClfrProtocol Unsigned32, 1654 diffServSixTupleClfrDstL4PortMin SixTupleClfrL4Port, 1655 diffServSixTupleClfrDstL4PortMax SixTupleClfrL4Port, 1656 diffServSixTupleClfrSrcL4PortMin SixTupleClfrL4Port, 1657 diffServSixTupleClfrSrcL4PortMax SixTupleClfrL4Port, 1658 diffServSixTupleClfrStatus RowStatus 1659 } 1660 diffServSixTupleClfrId OBJECT-TYPE 1661 SYNTAX Unsigned32 1662 MAX-ACCESS not-accessible 1663 STATUS current 1664 DESCRIPTION 1665 "An index that enumerates the Six Tuple Classifier 1666 filter entries. The set of such identifiers spans 1667 the whole agent. Managers should obtain new values 1668 for row creation in this table by reading 1669 diffServSixTupleClfrNextFree." 1670 ::= { diffServSixTupleClfrEntry 1 } 1672 diffServSixTupleClfrDstAddrType OBJECT-TYPE 1673 SYNTAX InetAddressType 1674 MAX-ACCESS read-create 1675 STATUS current 1676 DESCRIPTION 1677 "The type of IP destination address used by this 1678 classifier entry." 1679 ::= { diffServSixTupleClfrEntry 2 } 1681 diffServSixTupleClfrDstAddr OBJECT-TYPE 1682 SYNTAX InetAddress 1683 MAX-ACCESS read-create 1684 STATUS current 1685 DESCRIPTION 1686 "The IP address to match against the packet's desti- 1687 nation IP address." 1688 ::= { diffServSixTupleClfrEntry 3 } 1690 diffServSixTupleClfrDstAddrMask OBJECT-TYPE 1691 SYNTAX Unsigned32 1692 UNITS "bits" 1693 MAX-ACCESS read-create 1694 STATUS current 1695 DESCRIPTION 1696 "The length of a mask for the matching of the desti- 1697 nation IP address. Masks are constructed by setting 1698 bits in sequence from the most-significant bit down- 1699 wards for diffServSixTupleClfrDstAddrMask bits 1700 length. All other bits in the mask, up to the number 1701 needed to fill the length of the address diffServSix- 1702 TupleClfrDstAddr are cleared to zero. A zero bit in 1703 the mask then means that the corresponding bit in the 1704 address always matches." 1705 DEFVAL {0} 1706 ::= { diffServSixTupleClfrEntry 4 } 1708 diffServSixTupleClfrSrcAddrType OBJECT-TYPE 1709 SYNTAX InetAddressType 1710 MAX-ACCESS read-create 1711 STATUS current 1712 DESCRIPTION 1713 "The type of IP source address used by this classif- 1714 ier entry." 1715 ::= { diffServSixTupleClfrEntry 5 } 1717 diffServSixTupleClfrSrcAddr OBJECT-TYPE 1718 SYNTAX InetAddress 1719 MAX-ACCESS read-create 1720 STATUS current 1721 DESCRIPTION 1722 "The IP address to match against the source IP 1723 address of each packet." 1724 ::= { diffServSixTupleClfrEntry 6 } 1726 diffServSixTupleClfrSrcAddrMask OBJECT-TYPE 1727 SYNTAX Unsigned32 1728 UNITS "bits" 1729 MAX-ACCESS read-create 1730 STATUS current 1731 DESCRIPTION 1732 "The length of a mask for the matching of the source 1733 IP address. Masks are constructed by setting bits in 1734 sequence from the most-significant bit downwards for 1735 diffServSixTupleClfrSrcAddrMask bits length. All 1736 other bits in the mask, up to the number needed to 1737 fill the length of the address diffServSixTu- 1738 pleClfrSrcAddr are cleared to zero. A zero bit in 1739 the mask then means that the corresponding bit in the 1740 address always matches." 1741 DEFVAL {0} 1742 ::= { diffServSixTupleClfrEntry 7 } 1744 diffServSixTupleClfrDscp OBJECT-TYPE 1745 SYNTAX Dscp 1746 MAX-ACCESS read-create 1747 STATUS current 1748 DESCRIPTION 1749 "The value that the DSCP in the packet must have to 1750 match this entry. A value of -1 indicates that a 1751 specific DSCP value has not been defined and thus all 1752 DSCP values are considered a match." 1753 DEFVAL {-1} 1754 ::= { diffServSixTupleClfrEntry 8 } 1756 diffServSixTupleClfrProtocol OBJECT-TYPE 1757 SYNTAX Unsigned32 (0..255) 1758 MAX-ACCESS read-create 1759 STATUS current 1760 DESCRIPTION 1761 "The IP protocol to match against the IPv4 protocol 1762 number or the IPv6 Next-Header number in the packet. 1763 A value of 255 means match all. Note the protocol 1764 number of 255 is reserved by IANA, and Next-Header 1765 number of 0 is used in IPv6." 1766 DEFVAL {255} 1767 ::= { diffServSixTupleClfrEntry 9 } 1769 diffServSixTupleClfrDstL4PortMin OBJECT-TYPE 1770 SYNTAX SixTupleClfrL4Port 1771 MAX-ACCESS read-create 1772 STATUS current 1773 DESCRIPTION 1774 "The minimum value that the layer-4 destination port 1775 number in the packet must have in order to match this 1776 classifier entry." 1777 DEFVAL {0} 1778 ::= { diffServSixTupleClfrEntry 10 } 1780 diffServSixTupleClfrDstL4PortMax OBJECT-TYPE 1781 SYNTAX SixTupleClfrL4Port 1782 MAX-ACCESS read-create 1783 STATUS current 1784 DESCRIPTION 1785 "The maximum value that the layer-4 destination port 1786 number in the packet must have in order to match this 1787 classifier entry. This value must be equal to or 1788 greater than the value specified for this entry in 1789 diffServSixTupleClfrDstL4PortMin." 1790 DEFVAL {65535} 1791 ::= { diffServSixTupleClfrEntry 11 } 1793 diffServSixTupleClfrSrcL4PortMin OBJECT-TYPE 1794 SYNTAX SixTupleClfrL4Port 1795 MAX-ACCESS read-create 1796 STATUS current 1797 DESCRIPTION 1798 "The minimum value that the layer-4 source port 1799 number in the packet must have in order to match this 1800 classifier entry." 1801 DEFVAL {0} 1802 ::= { diffServSixTupleClfrEntry 12 } 1804 diffServSixTupleClfrSrcL4PortMax OBJECT-TYPE 1805 SYNTAX SixTupleClfrL4Port 1806 MAX-ACCESS read-create 1807 STATUS current 1808 DESCRIPTION 1809 "The maximum value that the layer-4 source port 1810 number in the packet must have in oder to match this 1811 classifier entry. This value must be equal to or 1812 greater than the value specified for this entry in 1813 diffServSixTupleClfrSrcL4PortMin." 1814 DEFVAL {65535} 1815 ::= { diffServSixTupleClfrEntry 13 } 1817 diffServSixTupleClfrStatus OBJECT-TYPE 1818 SYNTAX RowStatus 1819 MAX-ACCESS read-create 1820 STATUS current 1821 DESCRIPTION 1822 "The RowStatus variable controls the activation, 1823 deactivation, or deletion of a classifier. Any writ- 1824 able variable may be modified whether the row is 1825 active or notInService." 1826 ::= { diffServSixTupleClfrEntry 14 } 1828 -- 1829 -- Meters 1830 -- 1832 diffServMeter OBJECT IDENTIFIER ::= { diffServMIBObjects 3 } 1833 -- 1834 -- This MIB supports a variety of Meters. It includes a 1835 -- specific definition for Meters whose parameter set can 1836 -- be modelled using Token Bucket parameters. 1837 -- Other metering parameter sets can be defined and used 1838 -- when necessary. 1839 -- 1840 -- Multiple meter elements may be logically cascaded using 1841 -- their diffServMeterSucceedNext and diffServMeterFailNext 1842 -- pointers if required. 1843 -- One example of this might be for an AF PHB implementation 1844 -- that uses multiple level conformance meters. 1845 -- 1846 -- Cascading of individual meter elements in the MIB is 1847 -- intended to be functionally equivalent to multiple level 1848 -- conformance determination of a packet. The sequential 1849 -- nature of the representation is merely a notational 1850 -- convenience for this MIB. 1851 -- 1852 -- For example: 1853 -- Conforming to RFC 2697, srTCM can be parameterized using 1854 -- two sets of diffServMeterEntry and diffServTBMeterEntry. 1855 -- With the first set parameterizing the Committed Burst Size 1856 -- token-bucket, second set parameterizing the Excess Burst Size 1857 -- token-bucket. With both set's diffServTBMeterRate parameters 1858 -- being used to reflect the Committed Information Rate value. 1859 -- 1860 -- Conforming to RFC 2698, trTCM can be parameterized using 1861 -- two sets of diffServMeterEntry and diffServTBMeterEntry. 1862 -- With the first set parameterizing the Peak Information Rate 1863 -- and Peak Burst Size token-bucket, second set parameterizing 1864 -- the Committed Information Rate and Committed Burst Size 1865 -- token-bucket. 1866 -- 1867 -- Conforming to RFC 2859, tswTCM can be parameterized using 1868 -- two sets of diffServMeterEntry and diffServTBMeterEntry. 1869 -- With the first set parameterizing the Committed Target Rate, 1870 -- second set parametering the Peak Target Rate. 1871 -- With both set's diffServTBMeterInterval being used to 1872 -- reflect the Average Interval as specified by RFC 2859. 1873 -- 1875 diffServMeterNextFree OBJECT-TYPE 1876 SYNTAX Unsigned32 1877 MAX-ACCESS read-only 1878 STATUS current 1879 DESCRIPTION 1880 "This object yields a value when read that is 1881 currently unused for a diffServMeterId instance. If 1882 a configuring system attempts to create a new row in 1883 the diffServMeterTable using this value, that opera- 1884 tion will fail if the value has, in the meantime, 1885 been used to create another row that is currently 1886 valid." 1887 ::= { diffServMeter 1 } 1889 diffServMeterTable OBJECT-TYPE 1890 SYNTAX SEQUENCE OF DiffServMeterEntry 1891 MAX-ACCESS not-accessible 1892 STATUS current 1893 DESCRIPTION 1894 "This table enumerates specific meters that a system 1895 may use to police, or shape, a stream of traffic. The 1896 traffic stream to be metered is determined by the 1897 diffserv functional datapath element(s) upstream of 1898 the meter i.e. by the object(s) that point to each 1899 entry in this table. This may include all traffic on 1900 an interface. 1902 Specific meter details are to be found in table entry 1903 referenced by diffServMeterSpecific." 1904 REFERENCE 1905 "[MODEL] section 5.1" 1906 ::= { diffServMeter 2 } 1908 diffServMeterEntry OBJECT-TYPE 1909 SYNTAX DiffServMeterEntry 1910 MAX-ACCESS not-accessible 1911 STATUS current 1912 DESCRIPTION 1913 "An entry in the meter table describes a single con- 1914 formance level of a meter." 1915 INDEX { diffServMeterId } 1916 ::= { diffServMeterTable 1 } 1918 DiffServMeterEntry ::= SEQUENCE { 1919 diffServMeterId Unsigned32, 1920 diffServMeterSucceedNext RowPointer, 1921 diffServMeterFailNext RowPointer, 1922 diffServMeterSpecific StaticRowPointer, 1923 diffServMeterStatus RowStatus 1924 } 1926 diffServMeterId OBJECT-TYPE 1927 SYNTAX Unsigned32 1928 MAX-ACCESS not-accessible 1929 STATUS current 1930 DESCRIPTION 1931 "An index that enumerates the Meter entries. The set 1932 of such identifiers spans the whole agent. Managers 1933 should obtain new values for row creation in this 1934 table by reading diffServMeterNextFree." 1935 ::= { diffServMeterEntry 1 } 1937 diffServMeterSucceedNext OBJECT-TYPE 1938 SYNTAX RowPointer 1939 MAX-ACCESS read-create 1940 STATUS current 1941 DESCRIPTION 1942 "If the traffic does conform, this selects the next 1943 diffserv functional datapath element to handle 1944 traffic for this data path. This RowPointer should 1945 point to an instance of one of: 1946 diffServClfrEntry 1947 diffServMeterEntry 1948 diffServActionEntry 1949 diffServAlgDropEntry 1950 diffServQEntry 1952 A value of zeroDotZero in this attribute indicates no 1953 further Diffserv treatment is performed on traffic of 1954 this datapath. The use of zeroDotZero is the normal 1955 usage for the last functional datapath element of the 1956 current data path. 1958 If the row pointed to does not exist, the treatment 1959 is as if this attribute contains a value of zero- 1960 DotZero." 1961 DEFVAL { zeroDotZero } 1962 ::= { diffServMeterEntry 2 } 1964 diffServMeterFailNext OBJECT-TYPE 1965 SYNTAX RowPointer 1966 MAX-ACCESS read-create 1967 STATUS current 1968 DESCRIPTION 1969 "If the traffic does not conform, this selects the 1970 next diffserv functional datapath element to handle 1971 traffic for this data path. This RowPointer should 1972 point to an instance of one of: 1973 diffServClfrEntry 1974 diffServMeterEntry 1975 diffServActionEntry 1976 diffServAlgDropEntry 1977 diffServQEntry 1979 A value of zeroDotZero in this attribute indicates no 1980 further Diffserv treatment is performed on traffic of 1981 this datapath. The use of zeroDotZero is the normal 1982 usage for the last functional datapath element of the 1983 current data path. 1985 If the row pointed to does not exist, the treatment 1986 is as if this attribute contains a value of zero- 1987 DotZero." 1988 DEFVAL { zeroDotZero } 1989 ::= { diffServMeterEntry 3 } 1991 diffServMeterSpecific OBJECT-TYPE 1992 SYNTAX StaticRowPointer 1993 MAX-ACCESS read-create 1994 STATUS current 1995 DESCRIPTION 1996 "This indicates the behaviour of the meter by point- 1997 ing to an entry containing detailed parameters. Note 1998 that entries in that specific table must be managed 1999 explicitly. 2001 For example, diffServMeterSpecific may point to an 2002 entry in diffServTBMeterTable, which contains an 2003 instance of a single set of Token Bucket parameters." 2004 ::= { diffServMeterEntry 4 } 2006 diffServMeterStatus OBJECT-TYPE 2007 SYNTAX RowStatus 2008 MAX-ACCESS read-create 2009 STATUS current 2010 DESCRIPTION 2011 "The RowStatus variable controls the activation, 2012 deactivation, or deletion of a meter. Any writable 2013 variable may be modified whether the row is active or 2014 notInService." 2015 ::= { diffServMeterEntry 5 } 2017 -- 2018 -- Token Bucket Meter Table 2019 -- 2020 -- Each entry in the Token Bucket Meter Table parameterize 2021 -- a single token bucket. Multiple token buckets can be 2022 -- used together to parameterize multiple levels of 2023 -- conformance. 2024 -- 2025 -- Note that an entry in the Token Bucket Meter Table can 2026 -- be shared, pointed to, by multiple diffServMeterTable 2027 -- entries. 2028 -- 2030 diffServTBMeterNextFree OBJECT-TYPE 2031 SYNTAX Unsigned32 2032 MAX-ACCESS read-only 2033 STATUS current 2034 DESCRIPTION 2035 "This object yields a value when read that is 2036 currently unused for a diffServTBMeterId instance. 2037 If a configuring system attempts to create a new row 2038 in the diffServTBMeterTable using this value, that 2039 operation will fail if the value has, in the mean- 2040 time, been used to create another row that is 2041 currently valid." 2042 ::= { diffServMeter 3 } 2044 diffServTBMeterTable OBJECT-TYPE 2045 SYNTAX SEQUENCE OF DiffServTBMeterEntry 2046 MAX-ACCESS not-accessible 2047 STATUS current 2048 DESCRIPTION 2049 "This table enumerates a single set of token bucket 2050 meter parameters that a system may use to police a 2051 stream of traffic. Such meters are modelled here as 2052 having a single rate and a single burst size." 2053 REFERENCE 2054 "[MODEL] section 5.1" 2055 ::= { diffServMeter 4 } 2057 diffServTBMeterEntry OBJECT-TYPE 2058 SYNTAX DiffServTBMeterEntry 2059 MAX-ACCESS not-accessible 2060 STATUS current 2061 DESCRIPTION 2062 "An entry that describes a single set of token bucket 2063 meter parameters." 2064 INDEX { diffServTBMeterId } 2065 ::= { diffServTBMeterTable 1 } 2067 DiffServTBMeterEntry ::= SEQUENCE { 2068 diffServTBMeterId Unsigned32, 2069 diffServTBMeterType INTEGER, 2070 diffServTBMeterRate Unsigned32, 2071 diffServTBMeterBurstSize BurstSize, 2072 diffServTBMeterInterval Unsigned32, 2073 diffServTBMeterStatus RowStatus 2074 } 2076 diffServTBMeterId OBJECT-TYPE 2077 SYNTAX Unsigned32 2078 MAX-ACCESS not-accessible 2079 STATUS current 2080 DESCRIPTION 2081 "An index that enumerates the TBMeter entries. The 2082 set of such identifiers spans the whole agent. 2083 Managers should obtain new values for row creation in 2084 this table by reading diffServTBMeterNextFree." 2085 ::= { diffServTBMeterEntry 1 } 2087 diffServTBMeterType OBJECT-TYPE 2088 SYNTAX INTEGER { 2089 other(1), -- not listed here 2090 tokenBucket(2), -- Simple Token Bucket 2091 avgRate(3), -- Average Rate 2092 srTCMBlind(4), -- srTCM, Color-blind 2093 srTCMAware(5), -- srTCM, Color-aware 2094 trTCMBlind(6), -- trTCM, Color-blind 2095 trTCMAware(7), -- trTCM, Color-aware 2096 tswTCM(8) -- tswTCM 2097 } 2098 MAX-ACCESS read-create 2099 STATUS current 2100 DESCRIPTION 2101 "The type of meter using parameters specified by this 2102 TBMeter entry. 2104 Value of tokenBucket(2) indicates the use of Two 2105 Parameter Token Bucket Meter as described in [MODEL] 2106 section 5.2.3. 2108 Value of avgRate(3) indicates the use of Average Rate 2109 Meter as described in [MODEL] section 5.2.1. 2111 Value of srTCMBlind(4) and srTCMAware(5) indicates 2112 the use of Single Rate Three Color Marker Metering as 2113 defined by RFC 2697, with `Color Blind' and `Color 2114 Aware' mode as described by the RFC. 2116 Value of trTCMBlind(6) and trTCMAware(7) indicates 2117 the use of Two Rate Three Color Marker Metering as 2118 defined by RFC 2698, with `Color Blind' and `Color 2119 Aware' mode as described by the RFC. 2121 Value of tswTCM(8) indicates the use of Time Sliding 2122 Window Three Color Marker Metering as defined by RFC 2123 2859." 2124 REFERENCE 2125 "[MODEL] section 5" 2126 ::= { diffServTBMeterEntry 2 } 2128 diffServTBMeterRate OBJECT-TYPE 2129 SYNTAX Unsigned32 2130 UNITS "kilobits per second" 2131 MAX-ACCESS read-create 2132 STATUS current 2133 DESCRIPTION 2134 "The token-bucket rate, in kilobits per second 2135 (kbps). This attribute is used for: 1. CIR in RFC 2136 2697 for srTCM 2. PIR and CIR in RFC 2698 for trTCM 2137 3. CTR and PTR in RFC 2859 for TSWTCM 4. AverageRate 2138 used in [MODEL] section 5." 2139 ::= { diffServTBMeterEntry 3 } 2141 diffServTBMeterBurstSize OBJECT-TYPE 2142 SYNTAX BurstSize 2143 UNITS "Bytes" 2144 MAX-ACCESS read-create 2145 STATUS current 2146 DESCRIPTION 2147 "The maximum number of bytes in a single transmission 2148 burst. This attribute is used for: 1. CBS and EBS in 2149 RFC 2697 for srTCM 2. CBS and PBS in RFC 2698 for 2150 trTCM 3. Burst Size used in [MODEL] section 5." 2151 ::= { diffServTBMeterEntry 4 } 2153 diffServTBMeterInterval OBJECT-TYPE 2154 SYNTAX Unsigned32 2155 UNITS "microseconds" 2156 MAX-ACCESS read-create 2157 STATUS current 2158 DESCRIPTION 2159 "The time interval used with the token bucket. For: 2160 1. Average Rate Meter, [MODEL] section 5.2.1, - 2161 Delta. 2. Simple Token Bucket Meter, [MODEL] section 2162 5.1, 2163 - time interval t. 3. RFC 2859 TSWTCM, - 2164 AVG_INTERVAL. 4. RFC 2697 srTCM, RFC 2698 trTCM, - 2165 token bucket 2166 update time interval." 2167 ::= { diffServTBMeterEntry 5 } 2169 diffServTBMeterStatus OBJECT-TYPE 2170 SYNTAX RowStatus 2171 MAX-ACCESS read-create 2172 STATUS current 2173 DESCRIPTION 2174 "The RowStatus variable controls the activation, 2175 deactivation, or deletion of a meter. Any writable 2176 variable may be modified whether the row is active or 2177 notInService." 2178 ::= { diffServTBMeterEntry 6 } 2180 -- 2181 -- Actions 2182 -- 2184 diffServAction OBJECT IDENTIFIER ::= { diffServMIBObjects 4 } 2186 -- 2187 -- The Action Table allows enumeration of the different 2188 -- types of actions to be applied to a traffic flow. 2189 -- 2190 diffServActionNextFree OBJECT-TYPE 2191 SYNTAX Unsigned32 2192 MAX-ACCESS read-only 2193 STATUS current 2194 DESCRIPTION 2195 "This object yields a value when read that is 2196 currently unused for a diffServActionId instance. If 2197 a configuring system attempts to create a new row in 2198 the diffServActionTable using this value, that opera- 2199 tion will fail if the value has, in the meantime, 2200 been used to create another row that is currently 2201 valid." 2202 ::= { diffServAction 1 } 2204 diffServActionTable OBJECT-TYPE 2205 SYNTAX SEQUENCE OF DiffServActionEntry 2206 MAX-ACCESS not-accessible 2207 STATUS current 2208 DESCRIPTION 2209 "The Action Table enumerates actions that can be per- 2210 formed to a stream of traffic. Multiple actions can 2211 be concatenated. For example, after marking a stream 2212 of traffic exiting from a meter, a device can then 2213 perform a count action of the conforming or non- 2214 conforming traffic. 2216 Specific actions are indicated by diffServAction- 2217 Specific which points to an entry of a specific 2218 action type parameterizing the action in detail." 2219 REFERENCE 2220 "[MODEL] section 6." 2221 ::= { diffServAction 2 } 2223 diffServActionEntry OBJECT-TYPE 2224 SYNTAX DiffServActionEntry 2225 MAX-ACCESS not-accessible 2226 STATUS current 2227 DESCRIPTION 2228 "Each entry in the action table allows description of 2229 one specific action to be applied to traffic." 2230 INDEX { diffServActionId } 2231 ::= { diffServActionTable 1 } 2233 DiffServActionEntry ::= SEQUENCE { 2234 diffServActionId Unsigned32, 2235 diffServActionNext RowPointer, 2236 diffServActionSpecific StaticRowPointer, 2237 diffServActionType INTEGER, 2238 diffServActionStatus RowStatus 2239 } 2241 diffServActionId OBJECT-TYPE 2242 SYNTAX Unsigned32 2243 MAX-ACCESS not-accessible 2244 STATUS current 2245 DESCRIPTION 2246 "An index that enumerates the Action entries. The set 2247 of such identifiers spans the whole agent. Managers 2248 should obtain new values for row creation in this 2249 table by reading diffServActionNextFree." 2250 ::= { diffServActionEntry 1 } 2252 diffServActionNext OBJECT-TYPE 2253 SYNTAX RowPointer 2254 MAX-ACCESS read-create 2255 STATUS current 2256 DESCRIPTION 2257 "This selects the next diffserv functional datapath 2258 element to handle traffic for this data path. This 2259 RowPointer should point to an instance of one of: 2260 diffServClfrEntry 2261 diffServMeterEntry 2262 diffServActionEntry 2263 diffServAlgDropEntry 2264 diffServQEntry 2266 A value of zeroDotZero in this attribute indicates no 2267 further Diffserv treatment is performed on traffic of 2268 this datapath. The use of zeroDotZero is the normal 2269 usage for the last functional datapath element of the 2270 current data path. 2272 If the row pointed to does not exist, the treatment 2273 is as if this attribute contains a value of zero- 2274 DotZero." 2275 DEFVAL { zeroDotZero } 2276 ::= { diffServActionEntry 2 } 2278 diffServActionSpecific OBJECT-TYPE 2279 SYNTAX StaticRowPointer 2280 MAX-ACCESS read-create 2281 STATUS current 2282 DESCRIPTION 2283 "A pointer to an object instance providing additional 2284 information for the type of action indicated by this 2285 action table entry. 2287 For the standard actions defined by this MIB module, 2288 this should point to one of the following: a 2289 diffServDscpMarkActEntry, a diffServCountActEntry. 2290 For other actions, it may point to an object instance 2291 defined in some other MIB." 2292 ::= { diffServActionEntry 3 } 2294 diffServActionType OBJECT-TYPE 2295 SYNTAX INTEGER { 2296 other(1), -- types not specified here 2297 specific(2), -- follow the Specific pointer 2298 absoluteDrop(3) -- disallow traffic 2299 } 2300 MAX-ACCESS read-create 2301 STATUS current 2302 DESCRIPTION 2303 "Indicates the type of action. The values specific(2) 2304 must be associated with additional information, 2305 pointed to by diffServActionSpecific, with the actual 2306 action type indicated by the object being pointed to. 2307 The value absoluteDrop(3) has no associated informa- 2308 tion and will have a diffServActionSpecific value of 2309 zeroDotZero. The use of other(1) is outside the 2310 scope of this definition, although the diffServAc- 2311 tionSpecific pointer may be used in this case, to 2312 indicate other information." 2313 ::= { diffServActionEntry 4 } 2315 diffServActionStatus OBJECT-TYPE 2316 SYNTAX RowStatus 2317 MAX-ACCESS read-create 2318 STATUS current 2319 DESCRIPTION 2320 "The RowStatus variable controls the activation, 2321 deactivation or deletion of an action element. Any 2322 writable variable may be modified whether the row is 2323 active or notInService." 2324 ::= { diffServActionEntry 5 } 2326 -- 2327 -- DSCP Mark Action Table 2328 -- 2329 -- Rows of this table are pointed to by diffServActionSpecific 2330 -- to provide detailed parameters specific to the DSCP 2331 -- Mark action. 2332 -- 2333 -- A single entry in this table can be shared, pointed to, by 2334 -- multiple diffServActionTable entries, of same or different 2335 -- datapaths. 2336 -- 2338 diffServDscpMarkActTable OBJECT-TYPE 2339 SYNTAX SEQUENCE OF DiffServDscpMarkActEntry 2340 MAX-ACCESS not-accessible 2341 STATUS current 2342 DESCRIPTION 2343 "This table enumerates specific DSCPs used for mark- 2344 ing or remarking the DSCP field of IP packets. The 2345 entries of this table may be referenced by a diffSer- 2346 vActionSpecific attribute." 2347 REFERENCE 2348 "[MODEL] section 6.1" 2349 ::= { diffServAction 3 } 2351 diffServDscpMarkActEntry OBJECT-TYPE 2352 SYNTAX DiffServDscpMarkActEntry 2353 MAX-ACCESS not-accessible 2354 STATUS current 2355 DESCRIPTION 2356 "An entry in the DSCP mark action table that 2357 describes a single DSCP used for marking." 2358 INDEX { diffServDscpMarkActDscp } 2359 ::= { diffServDscpMarkActTable 1 } 2361 DiffServDscpMarkActEntry ::= SEQUENCE { 2362 diffServDscpMarkActDscp Dscp 2363 } 2364 diffServDscpMarkActDscp OBJECT-TYPE 2365 SYNTAX Dscp 2366 MAX-ACCESS read-only 2367 STATUS current 2368 DESCRIPTION 2369 "The DSCP that this Action uses for marking/remarking 2370 traffic. Note that a DSCP value of -1 is not permit- 2371 ted in this table. It is quite possible that the 2372 only packets subject to this Action are already 2373 marked with this DSCP. Note also that Diffserv may 2374 result in packet remarking both on ingress to a net- 2375 work and on egress from it and it is quite possible 2376 that ingress and egress would occur in the same 2377 router." 2378 ::= { diffServDscpMarkActEntry 1 } 2380 -- 2381 -- Count Action Table 2382 -- 2383 -- Due to the fact that the MIB structure allows multiple 2384 -- cascading diffServActionEntry be used to describe 2385 -- multiple actions for a datapath, the counter became an 2386 -- optional action type. In normal implementation, a 2387 -- datapath either have counters or it doesn't, it is not 2388 -- an element the management entity can add or remove. 2389 -- The management entity can choose to read the counter or 2390 -- not. Hence it is recommended for implementation that 2391 -- have counters to always configure the count action as 2392 -- the first of multiple actions, for example before the 2393 -- the absolute drop action. 2394 -- 2396 diffServCountActNextFree OBJECT-TYPE 2397 SYNTAX Unsigned32 2398 MAX-ACCESS read-only 2399 STATUS current 2400 DESCRIPTION 2401 "This object yields a value when read that is currently unused 2402 for a diffServCountActId instance. 2403 If a configuring system attempts to create a new row 2404 in the diffServCountActTable using this value, that operation 2405 will fail if the value has, in the meantime, been used 2406 to create another row that is currently valid." 2407 ::= { diffServAction 4 } 2409 diffServCountActTable OBJECT-TYPE 2410 SYNTAX SEQUENCE OF DiffServCountActEntry 2411 MAX-ACCESS not-accessible 2412 STATUS current 2413 DESCRIPTION 2414 "This table contains counters for all the traffic 2415 passing through an action element." 2416 REFERENCE 2417 "[MODEL] section 6.4" 2418 ::= { diffServAction 5 } 2420 diffServCountActEntry OBJECT-TYPE 2421 SYNTAX DiffServCountActEntry 2422 MAX-ACCESS not-accessible 2423 STATUS current 2424 DESCRIPTION 2425 "An entry in the count action table describes a sin- 2426 gle set of traffic counters." 2427 INDEX { diffServCountActId } 2428 ::= { diffServCountActTable 1 } 2430 DiffServCountActEntry ::= SEQUENCE { 2431 diffServCountActId Unsigned32, 2432 diffServCountActOctets Counter32, 2433 diffServCountActHCOctets Counter64, 2434 diffServCountActPkts Counter32, 2435 diffServCountActHCPkts Counter64, 2436 diffServCountActDiscontTime TimeStamp, 2437 diffServCountActStatus RowStatus 2438 } 2440 diffServCountActId OBJECT-TYPE 2441 SYNTAX Unsigned32 2442 MAX-ACCESS not-accessible 2443 STATUS current 2444 DESCRIPTION 2445 "An index that enumerates the Count Action entries. 2446 The set of such identifiers spans the whole agent. 2447 Managers should obtain new values for row creation in 2448 this table by reading diffServCountActNextFree." 2449 ::= { diffServCountActEntry 1 } 2451 diffServCountActOctets OBJECT-TYPE 2452 SYNTAX Counter32 2453 MAX-ACCESS read-only 2454 STATUS current 2455 DESCRIPTION 2456 "The number of octets at the Action datapath element. 2457 On high speed devices, this object implements the 2458 least significant 32 bits of diffServCountActHCOc- 2459 tets. 2461 Discontinuities in the value of this counter can 2462 occur at re-initialization of the management system 2463 and at other times as indicated by the value of 2464 diffServCountActDiscontTime for this entry." 2465 ::= { diffServCountActEntry 2 } 2467 diffServCountActHCOctets OBJECT-TYPE 2468 SYNTAX Counter64 2469 MAX-ACCESS read-only 2470 STATUS current 2471 DESCRIPTION 2472 "The number of octets at the Action datapath element. 2473 This object should be used on high speed interfaces. 2474 Discontinuities in the value of this counter can 2475 occur at re-initialization of the management system 2476 and at other times as indicated by the value of 2477 diffServCountActDiscontTime for this entry." 2478 ::= { diffServCountActEntry 3 } 2480 diffServCountActPkts OBJECT-TYPE 2481 SYNTAX Counter32 2482 MAX-ACCESS read-only 2483 STATUS current 2484 DESCRIPTION 2485 "The number of packets at the Action datapath ele- 2486 ment. On high speed devices, this object implements 2487 the least significant 32 bits of diffServCoun- 2488 tActHCPkts. 2490 Discontinuities in the value of this counter can 2491 occur at re-initialization of the management system 2492 and at other times as indicated by the value of 2493 diffServCountActDiscontTime for this entry." 2494 ::= { diffServCountActEntry 4 } 2496 diffServCountActHCPkts OBJECT-TYPE 2497 SYNTAX Counter64 2498 MAX-ACCESS read-only 2499 STATUS current 2500 DESCRIPTION 2501 "The number of packets at the Action datapath ele- 2502 ment. This object should be used on high speed 2503 interfaces. 2505 Discontinuities in the value of this counter can 2506 occur at re-initialization of the management system 2507 and at other times as indicated by the value of 2508 diffServCountActDiscontTime for this entry." 2509 ::= { diffServCountActEntry 5 } 2511 diffServCountActDiscontTime OBJECT-TYPE 2512 SYNTAX TimeStamp 2513 MAX-ACCESS read-only 2514 STATUS current 2515 DESCRIPTION 2516 "The value of sysUpTime on the most recent occasion 2517 at which any one or more of this entry's counters 2518 suffered a discontinuity. If no such discontinuities 2519 have occurred since the last re-initialization of the 2520 local management subsystem, then this object contains 2521 a zero value." 2522 ::= { diffServCountActEntry 6 } 2524 diffServCountActStatus OBJECT-TYPE 2525 SYNTAX RowStatus 2526 MAX-ACCESS read-create 2527 STATUS current 2528 DESCRIPTION 2529 "The RowStatus variable controls the activation, 2530 deactivation, or deletion of this entry. Any writable 2531 variable may be modified whether the row is active or 2532 notInService." 2533 ::= { diffServCountActEntry 7 } 2535 -- 2536 -- Algorithmic Drop Table 2537 -- 2539 diffServAlgDrop OBJECT IDENTIFIER ::= { diffServMIBObjects 5 } 2540 diffServAlgDropNextFree OBJECT-TYPE 2541 SYNTAX Unsigned32 2542 MAX-ACCESS read-only 2543 STATUS current 2544 DESCRIPTION 2545 "This object yields a value when read that is 2546 currently unused for a diffServAlgDropId instance. 2547 If a configuring system attempts to create a new row 2548 in the diffServAlgDropTable using this value, that 2549 operation will fail if the value has, in the mean- 2550 time, been used to create another row that is 2551 currently valid." 2552 ::= { diffServAlgDrop 1 } 2554 diffServAlgDropTable OBJECT-TYPE 2555 SYNTAX SEQUENCE OF DiffServAlgDropEntry 2556 MAX-ACCESS not-accessible 2557 STATUS current 2558 DESCRIPTION 2559 "The algorithmic drop table contains entries describ- 2560 ing an element that drops packets according to some 2561 algorithm." 2562 REFERENCE 2563 "[MODEL] section 7.1.3" 2564 ::= { diffServAlgDrop 2 } 2566 diffServAlgDropEntry OBJECT-TYPE 2567 SYNTAX DiffServAlgDropEntry 2568 MAX-ACCESS not-accessible 2569 STATUS current 2570 DESCRIPTION 2571 "An entry describes a process that drops packets 2572 according to some algorithm. Further details of the 2573 algorithm type are to be found in diffServAlgDropType 2574 and with more detail parameter entry pointed to by 2575 diffServAlgDropSpecific when necessary." 2576 INDEX { diffServAlgDropId } 2577 ::= { diffServAlgDropTable 1 } 2579 DiffServAlgDropEntry ::= SEQUENCE { 2580 diffServAlgDropId Unsigned32, 2581 diffServAlgDropType INTEGER, 2582 diffServAlgDropNext RowPointer, 2583 diffServAlgDropQMeasure RowPointer, 2584 diffServAlgDropQThreshold Unsigned32, 2585 diffServAlgDropSpecific StaticRowPointer, 2586 diffServAlgDropOctets Counter32, 2587 diffServAlgDropHCOctets Counter64, 2588 diffServAlgDropPkts Counter32, 2589 diffServAlgDropHCPkts Counter64, 2590 diffServAlgDropStatus RowStatus 2591 } 2593 diffServAlgDropId OBJECT-TYPE 2594 SYNTAX Unsigned32 2595 MAX-ACCESS not-accessible 2596 STATUS current 2597 DESCRIPTION 2598 "An index that enumerates the Algorithmic Dropper 2599 entries. The set of such identifiers spans the whole 2600 agent. Managers should obtain new values for row 2601 creation in this table by reading diffServAlgDrop- 2602 NextFree." 2603 ::= { diffServAlgDropEntry 1 } 2605 diffServAlgDropType OBJECT-TYPE 2606 SYNTAX INTEGER { 2607 other(1), 2608 tailDrop(2), 2609 headDrop(3), 2610 randomDrop(4) 2611 } 2612 MAX-ACCESS read-create 2613 STATUS current 2614 DESCRIPTION 2615 "The type of algorithm used by this dropper. A value 2616 of tailDrop(2) or headDrop(3) represents an algorithm 2617 that is completely specified by this MIB. A value of 2618 other(1) requires further specification in some other 2619 MIB module. 2621 The tailDrop(2) algorithm is described as follows: 2622 diffServAlgDropQThreshold represents the depth of the 2623 queue, pointed to by diffServAlgDropQMeasure, at 2624 which all newly arriving packets will be dropped. 2626 The headDrop(3) algorithm is described as follows: if 2627 a packet arrives when the current depth of the queue, 2628 pointed to by diffServAlgDropQMeasure, is at diffSer- 2629 vAlgDropQThreshold, packets currently at the head of 2630 the queue are dropped to make room for the new packet 2631 to be enqueued at the tail of the queue. 2633 The randomDrop(4) algorithm is described as follows: 2634 on packet arrival, an algorithm is executed which may 2635 randomly drop the packet, or drop other packet(s) 2636 from the queue in its place. The specifics of the 2637 algorithm may be proprietary. For this algorithm, 2638 diffServAlgDropSpecific points to a diffServRandom- 2639 DropEntry that describes the algorithm. For this 2640 algorithm, diffServAlgQThreshold is understood to be 2641 the absolute maximum size of the queue and additional 2642 parameters are described in diffServRandomDropTable." 2643 ::= { diffServAlgDropEntry 2 } 2645 diffServAlgDropNext OBJECT-TYPE 2646 SYNTAX RowPointer 2647 MAX-ACCESS read-create 2648 STATUS current 2649 DESCRIPTION 2650 "This selects the next diffserv functional datapath 2651 element to handle traffic for this data path. This 2652 RowPointer should point to an instance of one of: 2653 diffServClfrEntry 2654 diffServMeterEntry 2655 diffServActionEntry 2656 diffServAlgDropEntry 2657 diffServQEntry 2659 A value of zeroDotZero in this attribute indicates no 2660 further Diffserv treatment is performed on traffic of 2661 this datapath. The use of zeroDotZero is the normal 2662 usage for the last functional datapath element of the 2663 current data path. 2665 If the row pointed to does not exist, the treatment 2666 is as if this attribute contains a value of zero- 2667 DotZero." 2668 ::= { diffServAlgDropEntry 3 } 2670 diffServAlgDropQMeasure OBJECT-TYPE 2671 SYNTAX RowPointer 2672 MAX-ACCESS read-create 2673 STATUS current 2674 DESCRIPTION 2675 "Points to an entry in the diffServQTable to indicate 2676 the queue that a drop algorithm is to monitor when 2677 deciding whether to drop a packet. If the row 2678 pointed to does not exist, the algorithmic dropper 2679 element is considered inactive." 2680 ::= { diffServAlgDropEntry 4 } 2682 diffServAlgDropQThreshold OBJECT-TYPE 2683 SYNTAX Unsigned32 2684 UNITS "Bytes" 2685 MAX-ACCESS read-create 2686 STATUS current 2687 DESCRIPTION 2688 "A threshold on the depth in bytes of the queue being 2689 measured at which a trigger is generated to the drop- 2690 ping algorithm. 2692 For the tailDrop(2) or headDrop(3) algorithms, this 2693 represents the depth of the queue, pointed to by 2694 diffServAlgDropQMeasure, at which the drop action 2695 will take place. Other algorithms will need to define 2696 their own semantics for this threshold." 2697 ::= { diffServAlgDropEntry 5 } 2699 diffServAlgDropSpecific OBJECT-TYPE 2700 SYNTAX StaticRowPointer 2701 MAX-ACCESS read-create 2702 STATUS current 2703 DESCRIPTION 2704 "Points to a table entry that provides further detail 2705 regarding a drop algorithm. 2707 Entries with diffServAlgDropType equal to other(1) 2708 may have this point to a table defined in another MIB 2709 module. 2711 Entries with diffServAlgDropType equal to random- 2712 Drop(4) must have this point to an entry in diffSer- 2713 vRandomDropTable. 2715 For all other algorithms, this should take the value 2716 zeroDotzero." 2717 ::= { diffServAlgDropEntry 6 } 2719 diffServAlgDropOctets OBJECT-TYPE 2720 SYNTAX Counter32 2721 MAX-ACCESS read-only 2722 STATUS current 2723 DESCRIPTION 2724 "The number of octets that have been dropped by this 2725 drop process. On high speed devices, this object 2726 implements the least significant 32 bits of diffSer- 2727 vAlgDropHCOctets. 2729 Discontinuities in the value of this counter can 2730 occur at re-initialization of the management system 2731 and at other times as indicated by the value of 2732 ifCounterDiscontinuityTime appropriate to this inter- 2733 face." 2734 ::= { diffServAlgDropEntry 7 } 2736 diffServAlgDropHCOctets OBJECT-TYPE 2737 SYNTAX Counter64 2738 MAX-ACCESS read-only 2739 STATUS current 2740 DESCRIPTION 2741 "The number of octets that have been dropped by this 2742 drop process. This object should be used on high 2743 speed interfaces. 2745 Discontinuities in the value of this counter can 2746 occur at re-initialization of the management system 2747 and at other times as indicated by the value of 2748 ifCounterDiscontinuityTime appropriate to this inter- 2749 face." 2750 ::= { diffServAlgDropEntry 8 } 2752 diffServAlgDropPkts OBJECT-TYPE 2753 SYNTAX Counter32 2754 MAX-ACCESS read-only 2755 STATUS current 2756 DESCRIPTION 2757 "The number of packets that have been dropped by this 2758 drop process. On high speed devices, this object 2759 implements the least significant 32 bits of diffSer- 2760 vAlgDropHCPkts. 2762 Discontinuities in the value of this counter can 2763 occur at re-initialization of the management system 2764 and at other times as indicated by the value of 2765 ifCounterDiscontinuityTime appropriate to this inter- 2766 face." 2767 ::= { diffServAlgDropEntry 9 } 2769 diffServAlgDropHCPkts OBJECT-TYPE 2770 SYNTAX Counter64 2771 MAX-ACCESS read-only 2772 STATUS current 2773 DESCRIPTION 2774 "The number of packets that have been dropped by this 2775 drop process. This object should be used on high 2776 speed interfaces. 2778 Discontinuities in the value of this counter can 2779 occur at re-initialization of the management system 2780 and at other times as indicated by the value of 2781 ifCounterDiscontinuityTime appropriate to this inter- 2782 face." 2783 ::= { diffServAlgDropEntry 10 } 2785 diffServAlgDropStatus OBJECT-TYPE 2786 SYNTAX RowStatus 2787 MAX-ACCESS read-create 2788 STATUS current 2789 DESCRIPTION 2790 "The RowStatus variable controls the activation, 2791 deactivation, or deletion of this entry. Any writable 2792 variable may be modified whether the row is active or 2793 notInService." 2794 ::= { diffServAlgDropEntry 11 } 2796 -- 2797 -- Random Drop Table 2798 -- 2800 diffServRandomDropNextFree OBJECT-TYPE 2801 SYNTAX Unsigned32 2802 MAX-ACCESS read-only 2803 STATUS current 2804 DESCRIPTION 2805 "This object yields a value when read that is 2806 currently unused for a diffServRandomDropId instance. 2808 If a configuring system attempts to create a new row 2809 in the diffServRandomDropTable using this value, that 2810 operation will fail if the value has, in the mean- 2811 time, been used to create another row that is 2812 currently valid." 2813 ::= { diffServAlgDrop 3 } 2815 diffServRandomDropTable OBJECT-TYPE 2816 SYNTAX SEQUENCE OF DiffServRandomDropEntry 2817 MAX-ACCESS not-accessible 2818 STATUS current 2819 DESCRIPTION 2820 "The random drop table contains entries describing a 2821 process that drops packets randomly. Entries in this 2822 table is intended to be pointed to by diffSer- 2823 vAlgDropSpecific." 2824 REFERENCE 2825 "[MODEL] section 7.1.3" 2826 ::= { diffServAlgDrop 4 } 2828 diffServRandomDropEntry OBJECT-TYPE 2829 SYNTAX DiffServRandomDropEntry 2830 MAX-ACCESS not-accessible 2831 STATUS current 2832 DESCRIPTION 2833 "An entry describes a process that drops packets 2834 according to a random algorithm." 2835 INDEX { diffServRandomDropId } 2836 ::= { diffServRandomDropTable 1 } 2838 DiffServRandomDropEntry ::= SEQUENCE { 2839 diffServRandomDropId Unsigned32, 2840 diffServRandomDropMinThreshBytes Unsigned32, 2841 diffServRandomDropMinThreshPkts Unsigned32, 2842 diffServRandomDropMaxThreshBytes Unsigned32, 2843 diffServRandomDropMaxThreshPkts Unsigned32, 2844 diffServRandomDropInvProbMax Unsigned32, 2845 diffServRandomDropInvWeight Unsigned32, 2846 diffServRandomDropSamplingRate Unsigned32, 2847 diffServRandomDropStatus RowStatus 2848 } 2850 diffServRandomDropId OBJECT-TYPE 2851 SYNTAX Unsigned32 2852 MAX-ACCESS not-accessible 2853 STATUS current 2854 DESCRIPTION 2855 "An index that enumerates the Random Drop entries. 2856 The set of such identifiers spans the whole agent. 2857 Managers should obtain new values for row creation in 2858 this table by reading diffServRandomDropNextFree." 2859 ::= { diffServRandomDropEntry 1 } 2861 diffServRandomDropMinThreshBytes OBJECT-TYPE 2862 SYNTAX Unsigned32 2863 UNITS "bytes" 2864 MAX-ACCESS read-create 2865 STATUS current 2866 DESCRIPTION 2867 "The average queue depth in bytes, beyond which 2868 traffic has a non-zero probability of being dropped. 2869 Changes in this variable may or may not be reflected 2870 in the reported value of diffServRandomDrop- 2871 MinThreshPkts." 2872 ::= { diffServRandomDropEntry 2 } 2874 diffServRandomDropMinThreshPkts OBJECT-TYPE 2875 SYNTAX Unsigned32 2876 UNITS "packets" 2877 MAX-ACCESS read-create 2878 STATUS current 2879 DESCRIPTION 2880 "The average queue depth in packets, beyond which 2881 traffic has a non-zero probability of being dropped. 2882 Changes in this variable may or may not be reflected 2883 in the reported value of diffServRandomDropMinThresh- 2884 Bytes." 2885 ::= { diffServRandomDropEntry 3 } 2887 diffServRandomDropMaxThreshBytes OBJECT-TYPE 2888 SYNTAX Unsigned32 2889 UNITS "bytes" 2890 MAX-ACCESS read-create 2891 STATUS current 2892 DESCRIPTION 2893 "The average queue depth beyond which traffic has a 2894 probability indicated by diffServRandomDropInvProbMax 2895 of being dropped or marked. Note that this differs 2896 from the physical queue limit, which is stored in 2897 diffServAlgDropQThreshold. Changes in this variable 2898 may or may not be reflected in the reported value of 2899 diffServRandomDropMaxThreshPkts." 2900 ::= { diffServRandomDropEntry 4 } 2902 diffServRandomDropMaxThreshPkts OBJECT-TYPE 2903 SYNTAX Unsigned32 2904 UNITS "packets" 2905 MAX-ACCESS read-create 2906 STATUS current 2907 DESCRIPTION 2908 "The average queue depth beyond which traffic has a 2909 probability indicated by diffServRandomDropInvProbMax 2910 of being dropped or marked. Note that this differs 2911 from the physical queue limit, which is stored in 2912 diffServAlgDropQThreshold. Changes in this variable 2913 may or may not be reflected in the reported value of 2914 diffServRandomDropMaxThreshBytes." 2915 ::= { diffServRandomDropEntry 5 } 2917 diffServRandomDropInvProbMax OBJECT-TYPE 2918 SYNTAX Unsigned32 2919 MAX-ACCESS read-create 2920 STATUS current 2921 DESCRIPTION 2922 "The worst case random drop probability, expressed as 2923 the inverse of the drop probability. With special 2924 case of the value zero meaning zero probability of 2925 drop. 2927 For example, if every packet may be dropped in the 2928 worst case (100%), this has the value of 2929 4,294,967,295." 2930 ::= { diffServRandomDropEntry 6 } 2932 diffServRandomDropInvWeight OBJECT-TYPE 2933 SYNTAX Unsigned32 2934 MAX-ACCESS read-create 2935 STATUS current 2936 DESCRIPTION 2937 "The weighting of past history in affecting the cal- 2938 culation of the current queue average. The moving 2939 average of the queue depth uses the inverse of this 2940 value as the factor for the new queue depth, and one 2941 minus that inverse as the factor for the historical 2942 average. 2944 Implementations may choose to limit the acceptable 2945 set of values to a specified set, such as powers of 2946 2." 2947 ::= { diffServRandomDropEntry 7 } 2949 diffServRandomDropSamplingRate OBJECT-TYPE 2950 SYNTAX Unsigned32 2951 MAX-ACCESS read-create 2952 STATUS current 2953 DESCRIPTION 2954 "The number of times per second the queue is sampled 2955 for queue average calculation. A value of zero means 2956 the queue is sampled approximately each time a packet 2957 is enqueued (or dequeued)." 2958 ::= { diffServRandomDropEntry 8 } 2960 diffServRandomDropStatus OBJECT-TYPE 2961 SYNTAX RowStatus 2962 MAX-ACCESS read-create 2963 STATUS current 2964 DESCRIPTION 2965 "The RowStatus variable controls the activation, 2966 deactivation, or deletion of this entry. Any writable 2967 variable may be modified whether the row is active or 2968 notInService." 2969 ::= { diffServRandomDropEntry 9 } 2971 -- 2972 -- Queue Table 2973 -- 2975 diffServQueue OBJECT IDENTIFIER ::= { diffServMIBObjects 6 } 2977 -- 2978 -- An entry of diffServQTable represents a FIFO queue diffserv 2979 -- functional datapath element as described in [MODEL] section 2980 -- 7.1.1. 2981 -- Notice the specification of scheduling parameters for a queue 2982 -- as part of the input to a scheduler functional datapath 2983 -- element as described in [MODEL] section 7.1.2. This allows 2984 -- building of hierarchical queueing/scheduling. 2985 -- A queue therefore is parameterized by: 2986 -- 1. Which scheduler will service this queue, diffServQNext. 2987 -- 2. How the scheduler will service this queue, with respect 2988 -- to all the other queues the same scheduler needs to service, 2989 -- diffServQSchdParam. 2990 -- 2991 -- Notice one or more upstream diffserv datapath element may share, 2992 -- point to, a diffServQTable entry as described in [MODEL] section 2993 -- 7.1.1. 2994 -- 2995 -- Each entry of the diffServQTable belongs to one and only one 2996 -- datapath. 2997 -- 2999 diffServQNextFree OBJECT-TYPE 3000 SYNTAX Unsigned32 3001 MAX-ACCESS read-only 3002 STATUS current 3003 DESCRIPTION 3004 "This object yields a value when read that is 3005 currently unused for a diffServQId instance. If a 3006 configuring system attempts to create a new row in 3007 the diffServQTable using this value, that operation 3008 will fail if the value has, in the meantime, been 3009 used to create another row that is currently valid." 3010 ::= { diffServQueue 1 } 3012 diffServQTable OBJECT-TYPE 3013 SYNTAX SEQUENCE OF DiffServQEntry 3014 MAX-ACCESS not-accessible 3015 STATUS current 3016 DESCRIPTION 3017 "The Queue Table enumerates the individual queues." 3018 REFERENCE 3019 "[MODEL] section 7.1.1" 3020 ::= { diffServQueue 2 } 3022 diffServQEntry OBJECT-TYPE 3023 SYNTAX DiffServQEntry 3024 MAX-ACCESS not-accessible 3025 STATUS current 3026 DESCRIPTION 3027 "An entry in the Queue Table describes a single 3028 queue. With each entry belonging to one and only one 3029 datapath." 3030 INDEX { diffServQId } 3031 ::= { diffServQTable 1 } 3033 DiffServQEntry ::= SEQUENCE { 3034 diffServQId Unsigned32, 3035 diffServQNext RowPointer, 3036 diffServQSchdParam StaticRowPointer, 3037 diffServQStatus RowStatus 3038 } 3040 diffServQId OBJECT-TYPE 3041 SYNTAX Unsigned32 3042 MAX-ACCESS not-accessible 3043 STATUS current 3044 DESCRIPTION 3045 "An index that enumerates the Queue entries. The set 3046 of such identifiers spans the whole agent. Managers 3047 should obtain new values for row creation in this 3048 table by reading diffServQNextFree." 3049 ::= { diffServQEntry 1 } 3051 diffServQNext OBJECT-TYPE 3052 SYNTAX RowPointer 3053 MAX-ACCESS read-create 3054 STATUS current 3055 DESCRIPTION 3056 "This selects the next diffserv functional datapath 3057 element to handle traffic for this data path. This 3058 RowPointer must point to an instance of one of: 3059 diffServSchedulerEntry 3061 A value of zeroDotZero in this attribute indicates an 3062 incomplete diffServQEntry instance. An illegal con- 3063 figuration. 3065 If the row pointed to does not exist, the treatment 3066 is as if this attribute contains a value of zero- 3067 DotZero." 3068 ::= { diffServQEntry 2 } 3070 diffServQSchdParam OBJECT-TYPE 3071 SYNTAX StaticRowPointer 3072 MAX-ACCESS read-create 3073 STATUS current 3074 DESCRIPTION 3075 "This StaticRowPointer indicates the entry in 3076 diffServSchdParamTable the scheduler, pointed to by 3077 diffServQNext, should use to service this queue. 3079 A value of zeroDotZero in this attribute indicates an 3080 incomplete diffServQEntry instance. An illegal con- 3081 figuration. 3083 If the row pointed to does not exist, the treatment 3084 is as if this attribute contains a value of zero- 3085 DotZero." 3086 ::= { diffServQEntry 3 } 3088 diffServQStatus OBJECT-TYPE 3089 SYNTAX RowStatus 3090 MAX-ACCESS read-create 3091 STATUS current 3092 DESCRIPTION 3093 "The RowStatus variable controls the activation, 3094 deactivation, or deletion of a queue. Any writable 3095 variable may be modified whether the row is active or 3096 notInService." 3097 ::= { diffServQEntry 4 } 3099 -- 3100 -- Scheduler Table 3101 -- 3103 diffServScheduler OBJECT IDENTIFIER ::= { diffServMIBObjects 7 } 3105 -- 3106 -- The Scheduler Table is used for representing packet schedulers: 3107 -- it provides flexibility for multiple scheduling algorithms, each 3108 -- servicing multiple queues, to be used on the same logical/physical 3109 -- interface. 3110 -- Notice the servicing parameters the scheduler uses is 3111 -- specified by each of its upstream functional datapath elements, 3112 -- most likely queues or schedulers. 3113 -- The coordination and coherency between the servicing parameters 3114 -- of the scheduler's upstream functional datapath elements must 3115 -- be maintained for the scheduler to function correctly. 3116 -- 3117 -- The diffServSchedulerSchdParam attribute is used for specifying 3118 -- the servicing parameters for output of a scheduler when its 3119 -- downstream functional datapath element is another scheduler. 3120 -- This is used for building hierarchical queue/scheduler. 3121 -- 3122 -- More discussion of the scheduler functional datapath element 3123 -- is in [MODEL] section 7.1.2. 3124 -- 3126 diffServSchedulerPriority OBJECT-IDENTITY 3127 STATUS current 3128 DESCRIPTION 3129 "For use with diffServSchedulerMethod to indicate 3130 Priority scheduling method, defined as an algorithm 3131 in which the presence of data in a queue or set of 3132 queues absolutely precludes dequeue from another 3133 queue or set of queues. Notice attributes from 3134 diffServSchdParamEntry of the queues/schedulers feed- 3135 ing this scheduler are used when determining the next 3136 packet to schedule." 3137 REFERENCE 3138 "[MODEL] section 7.1.2" 3139 ::= { diffServScheduler 1 } 3141 diffServSchedulerWRR OBJECT-IDENTITY 3142 STATUS current 3143 DESCRIPTION 3144 "For use with diffServSchedulerMethod to indicate 3145 Weighted Round Robin scheduling method, defined as 3146 any algorithm in which a set of queues are visited in 3147 a fixed order, and varying amounts of traffic are 3148 removed from each queue in turn to implement an aver- 3149 age output rate by class. Notice attributes from 3150 diffServSchdParamEntry of the queues/schedulers feed- 3151 ing this scheduler are used when determining the next 3152 packet to schedule." 3153 REFERENCE 3154 "[MODEL] section 7.1.2" 3155 ::= { diffServScheduler 2 } 3157 diffServSchedulerWFQ OBJECT-IDENTITY 3158 STATUS current 3159 DESCRIPTION 3160 "For use with diffServSchedulerMethod to indicate 3161 Weighted Fair Queueing scheduling method, defined as 3162 any algorithm in which a set of queues are conceptu- 3163 ally visited in some order, to implement an average 3164 output rate by class. Notice attributes from 3165 diffServSchdParamEntry of the queues/schedulers feed- 3166 ing this scheduler are used when determining the next 3167 packet to schedule." 3168 REFERENCE 3169 "[MODEL] section 7.1.2" 3170 ::= { diffServScheduler 3 } 3172 diffServSchedulerShaping OBJECT-IDENTITY 3173 STATUS current 3174 DESCRIPTION 3175 "For use with diffServSchedulerMethod to indicate the 3176 scheduler is being used for shaping. Notice attri- 3177 butes from diffServSchdParamEntry of the 3178 queues/schedulers feeding this scheduler are used 3179 when determining the next packet to schedule." 3180 REFERENCE 3181 "[MODEL] section 7.1.2" 3182 ::= { diffServScheduler 4 } 3184 diffServSchedulerNextFree OBJECT-TYPE 3185 SYNTAX Unsigned32 3186 MAX-ACCESS read-only 3187 STATUS current 3188 DESCRIPTION 3189 "This object yields a value when read that is 3190 currently unused for a diffServSchedulerId instance. 3191 If a configuring system attempts to create a new row 3192 in the diffServSchedulerTable using this value, that 3193 operation will fail if the value has, in the mean- 3194 time, been used to create another row that is 3195 currently valid." 3196 ::= { diffServScheduler 5 } 3198 diffServSchedulerTable OBJECT-TYPE 3199 SYNTAX SEQUENCE OF DiffServSchedulerEntry 3200 MAX-ACCESS not-accessible 3201 STATUS current 3202 DESCRIPTION 3203 "The Scheduler Table enumerates packet schedulers. 3204 Multiple scheduling algorithms can be used on a given 3205 datapath, with each algorithm described by one 3206 diffServSchedulerEntry." 3207 REFERENCE 3208 "[MODEL] section 7.1.2" 3209 ::= { diffServScheduler 6 } 3211 diffServSchedulerEntry OBJECT-TYPE 3212 SYNTAX DiffServSchedulerEntry 3213 MAX-ACCESS not-accessible 3214 STATUS current 3215 DESCRIPTION 3216 "An entry in the Scheduler Table describing a single 3217 instance of a scheduling algorithm." 3218 INDEX { diffServSchedulerId } 3219 ::= { diffServSchedulerTable 1 } 3221 DiffServSchedulerEntry ::= SEQUENCE { 3222 diffServSchedulerId Unsigned32, 3223 diffServSchedulerNext RowPointer, 3224 diffServSchedulerMethod OBJECT IDENTIFIER, 3225 diffServSchedulerSchdParam StaticRowPointer, 3226 diffServSchedulerStatus RowStatus 3227 } 3229 diffServSchedulerId OBJECT-TYPE 3230 SYNTAX Unsigned32 3231 MAX-ACCESS not-accessible 3232 STATUS current 3233 DESCRIPTION 3234 "An index that enumerates the Scheduler entries. The 3235 set of such identifiers spans the whole agent. 3236 Managers should obtain new values for row creation in 3237 this table by reading diffServSchedulerNextFree." 3238 ::= { diffServSchedulerEntry 1 } 3240 diffServSchedulerNext OBJECT-TYPE 3241 SYNTAX RowPointer 3242 MAX-ACCESS read-create 3243 STATUS current 3244 DESCRIPTION 3245 "This selects the next diffserv functional datapath 3246 element to handle traffic for this data path. This 3247 RowPointer should point to an instance of one of: 3248 diffServSchedulerEntry 3249 diffServQEntry As indicated by [MODEL] section 3250 7.1.4. 3252 But this RowPointer can also point to an instance of: 3253 diffServClfrEntry 3254 diffServMeterEntry 3255 diffServActionEntry 3256 diffServAlgDropEntry For building of multiple TCBs 3257 for the same data path. 3259 This should point to another diffServSchedulerEntry 3260 for implementation of multiple scheduler methods for 3261 the same datapath, and for implementation of 3262 hierarchical schedulers. 3264 A value of zeroDotZero in this attribute indicates no 3265 further Diffserv treatment is performed on traffic of 3266 this datapath. The use of zeroDotZero is the normal 3267 usage for the last functional datapath element of the 3268 current data path. 3270 If the row pointed to does not exist, the treatment 3271 is as if this attribute contains a value of 3272 zeroDotZero." 3273 DEFVAL { zeroDotZero } 3274 ::= { diffServSchedulerEntry 2 } 3276 diffServSchedulerMethod OBJECT-TYPE 3277 SYNTAX OBJECT IDENTIFIER 3278 MAX-ACCESS read-create 3279 STATUS current 3280 DESCRIPTION 3281 "The scheduling algorithm used by this Scheduler. {0 3282 0} indicates this is unknown. Standard values for 3283 generic algorithms: diffServSchedulerPriority, 3284 diffServSchedulerWRR, and diffServSchedulerWFQ are 3285 specified in this MIB; additional values may be 3286 further specified in other MIBs." 3287 REFERENCE 3288 "[MODEL] section 7.1.2" 3289 ::= { diffServSchedulerEntry 3 } 3291 diffServSchedulerSchdParam OBJECT-TYPE 3292 SYNTAX StaticRowPointer 3293 MAX-ACCESS read-create 3294 STATUS current 3295 DESCRIPTION 3296 "This StaticRowPointer indicates the entry in 3297 diffServSchdParamTable the higher level scheduler, 3298 pointed to by diffServSchedulerNext, should use to 3299 service the output of this scheduler. This attribute 3300 is only used when there is more than one level of 3301 scheduler. And should have the value of zeroDotZero 3302 when not used." 3303 DEFVAL { zeroDotZero } 3304 ::= { diffServSchedulerEntry 4 } 3306 diffServSchedulerStatus OBJECT-TYPE 3307 SYNTAX RowStatus 3308 MAX-ACCESS read-create 3309 STATUS current 3310 DESCRIPTION 3311 "The RowStatus variable controls the activation, 3312 deactivation, or deletion of a queue. Any writable 3313 variable may be modified whether the row is active or 3314 notInService." 3315 ::= { diffServSchedulerEntry 5 } 3317 -- 3318 -- Scheduling Parameter Table 3319 -- 3320 -- The scheduling parameters are separate from the Queue Entries 3321 -- for reusability and for usage by both queues and schedulers, 3322 -- and this follows the separation of datapath elements from 3323 -- parameterization approach used throught out this MIB. 3324 -- Usage of scheduling parameter table entry by schedulers allow 3325 -- building of hierarchical scheduling. 3326 -- 3327 -- The diffServSchdParamMaxRateAbs/Rel attributes are used to 3328 -- construct non-work-conserving scheduler for the purpose of 3329 -- traffic shaping. These attributes limits the servicing of 3330 -- the queue/scheduler, in affect, shaping the output of the 3331 -- queue/scheduler, as described in [MODEL] section 7.2. 3332 -- 3334 diffServSchdParamNextFree OBJECT-TYPE 3335 SYNTAX Unsigned32 3336 MAX-ACCESS read-only 3337 STATUS current 3338 DESCRIPTION 3339 "This object yields a value when read that is 3340 currently unused for a diffServSchdParamId instance. 3341 If a configuring system attempts to create a new row 3342 in the diffServSchdParamTable using this value, that 3343 operation will fail if the value has, in the mean- 3344 time, been used to create another row that is 3345 currently valid." 3346 ::= { diffServScheduler 7 } 3348 diffServSchdParamTable OBJECT-TYPE 3349 SYNTAX SEQUENCE OF DiffServSchdParamEntry 3350 MAX-ACCESS not-accessible 3351 STATUS current 3352 DESCRIPTION 3353 "The Scheduling Parameter Table enumerates individual 3354 sets of scheduling parameter that can be used/reused 3355 by Queues and Schedulers." 3356 ::= { diffServScheduler 8 } 3358 diffServSchdParamEntry OBJECT-TYPE 3359 SYNTAX DiffServSchdParamEntry 3360 MAX-ACCESS not-accessible 3361 STATUS current 3362 DESCRIPTION 3363 "An entry in the Scheduling Parameter Table describes 3364 a single set of scheduling parameter for use by 3365 queues and schedulers. 3367 Notice multiple inter-mixed of Queue and Scheduler 3368 entries can use the same Scheduler Parameter entry." 3369 INDEX { diffServSchdParamId } 3370 ::= { diffServSchdParamTable 1 } 3372 DiffServSchdParamEntry ::= SEQUENCE { 3373 diffServSchdParamId Unsigned32, 3374 diffServSchdParamPriority Unsigned32, 3375 diffServSchdParamMinRateAbs Unsigned32, 3376 diffServSchdParamMinRateRel Unsigned32, 3377 diffServSchdParamMaxRateAbs Unsigned32, 3378 diffServSchdParamMaxRateRel Unsigned32, 3379 diffServSchdParamBurstSize BurstSize, 3380 diffServSchdParamStatus RowStatus 3381 } 3383 diffServSchdParamId OBJECT-TYPE 3384 SYNTAX Unsigned32 3385 MAX-ACCESS not-accessible 3386 STATUS current 3387 DESCRIPTION 3388 "An index that enumerates the Scheduler Parameter 3389 entries. The set of such identifiers spans the whole 3390 agent. Managers should obtain new values for row 3391 creation in this table by reading diffServSchdParam- 3392 NextFree." 3393 ::= { diffServSchdParamEntry 1 } 3395 diffServSchdParamPriority OBJECT-TYPE 3396 SYNTAX Unsigned32 3397 MAX-ACCESS read-create 3398 STATUS current 3399 DESCRIPTION 3400 "The priority of this queue, to be used as a parame- 3401 ter to the next scheduler element downstream from 3402 this one. A higher value means higher priority and 3403 should be serviced first." 3404 ::= { diffServSchdParamEntry 2 } 3406 diffServSchdParamMinRateAbs OBJECT-TYPE 3407 SYNTAX Unsigned32 3408 UNITS "kilobits per second" 3409 MAX-ACCESS read-create 3410 STATUS current 3411 DESCRIPTION 3412 "The minimum absolute rate, in kilobits/sec, that a 3413 downstream scheduler element should allocate to this 3414 queue. If the value is zero, then there is effec- 3415 tively no minimum rate guarantee. If the value is 3416 non-zero, the scheduler will assure the servicing of 3417 this queue to at least this rate. 3419 Note that this attribute's value is coupled to that 3420 of diffServSchdParamMinRateRel: changes to one will 3421 affect the value of the other. They are linked by the 3422 following equation: 3424 diffServSchdParamMinRateRel = diffServSchdParamMinRateAbs 3425 * 10,000,000/ifSpeed 3427 or, if appropriate: 3429 diffServSchdParamMinRateRel = diffServSchdParamMinRateAbs 3430 * 10 / ifHighSpeed" 3431 REFERENCE 3432 "ifSpeed, ifHighSpeed from [IFMIB]" 3433 ::= { diffServSchdParamEntry 3 } 3435 diffServSchdParamMinRateRel OBJECT-TYPE 3436 SYNTAX Unsigned32 3437 MAX-ACCESS read-create 3438 STATUS current 3439 DESCRIPTION 3440 "The minimum rate that a downstream scheduler element 3441 should allocate to this queue, relative to the max- 3442 imum rate of the interface as reported by ifSpeed or 3443 ifHighSpeed, in units of 1/10,000 of 1. If the value 3444 is zero, then there is effectively no minimum rate 3445 guarantee. If the value is non-zero, the scheduler 3446 will assure the servicing of this queue to at least 3447 this rate. 3449 Note that this attribute's value is coupled to that 3450 of diffServSchdParamMinRateAbs: changes to one will 3451 affect the value of the other. They are linked by the 3452 following equation: 3454 diffServSchdParamMinRateAbs = ifSpeed * 3455 diffServSchdParamMinRateRel/10,000,000 3457 or, if appropriate: 3459 diffServSchdParamMinRateAbs = ifHighSpeed * 3460 diffServSchdParamMinRateRel / 10" 3461 REFERENCE 3462 "ifSpeed, ifHighSpeed from [IFMIB]" 3463 ::= { diffServSchdParamEntry 4 } 3465 diffServSchdParamMaxRateAbs OBJECT-TYPE 3466 SYNTAX Unsigned32 3467 UNITS "kilobits per second" 3468 MAX-ACCESS read-create 3469 STATUS current 3470 DESCRIPTION 3471 "The maximum rate in kilobits/sec that a downstream 3472 scheduler element should allocate to this queue. If 3473 the value is zero, then there is effectively no max- 3474 imum rate limit and that the scheduler should attempt 3475 to be work-conserving for this queue. If the value 3476 is non-zero, the scheduler will limit the servicing 3477 of this queue to, at most, this rate in a non-work- 3478 conserving manner. 3480 Note that this attribute's value is coupled to that 3481 of diffServSchdParamMaxRateRel: changes to one will 3482 affect the value of the other. They are linked by the 3483 following equation: 3485 diffServSchdParamMaxRateRel = diffServSchdParamMaxRateAbs 3486 * 10,000,000/ifSpeed 3488 or, if appropriate: 3490 diffServSchdParamMaxRateRel = diffServSchdParamMaxRateAbs 3491 * 10 / ifHighSpeed" 3492 REFERENCE 3493 "ifSpeed, ifHighSpeed from [IFMIB]" 3494 ::= { diffServSchdParamEntry 5 } 3496 diffServSchdParamMaxRateRel OBJECT-TYPE 3497 SYNTAX Unsigned32 3498 MAX-ACCESS read-create 3499 STATUS current 3500 DESCRIPTION 3501 "The maximum rate that a downstream scheduler element 3502 should allocate to this queue, relative to the max- 3503 imum rate of the interface as reported by ifSpeed or 3504 ifHighSpeed, in units of 1/10,000 of 1. If the value 3505 is zero, then there is effectively no maximum rate 3506 limit and the scheduler should attempt to be work- 3507 conserving for this queue. If the value is non-zero, 3508 the scheduler will limit the servicing of this queue 3509 to, at most, this rate in a non-work-conserving 3510 manner. 3512 Note that this attribute's value is coupled to that 3513 of diffServSchdParamMaxRateAbs: changes to one will 3514 affect the value of the other. They are linked by the 3515 following equation: 3517 diffServSchdParamMaxRateAbs = ifSpeed * 3518 diffServSchdParamMaxRateRel/10,000,000 3520 or, if appropriate: 3522 diffServSchdParamMaxRateAbs = ifHighSpeed * 3523 diffServSchdParamMaxRateRel / 10" 3524 REFERENCE 3525 "ifSpeed, ifHighSpeed from [IFMIB]" 3526 ::= { diffServSchdParamEntry 6 } 3528 diffServSchdParamBurstSize OBJECT-TYPE 3529 SYNTAX BurstSize 3530 UNITS "Bytes" 3531 MAX-ACCESS read-create 3532 STATUS current 3533 DESCRIPTION 3534 "The maximum number of bytes in a single transmission 3535 burst. This attribute is used when diffServSchedu- 3536 lerMethod of a downstream Scheduler element is used 3537 for shaping traffic exiting this queue/scheduler." 3538 ::= { diffServSchdParamEntry 7 } 3540 diffServSchdParamStatus OBJECT-TYPE 3541 SYNTAX RowStatus 3542 MAX-ACCESS read-create 3543 STATUS current 3544 DESCRIPTION 3545 "The RowStatus variable controls the activation, 3546 deactivation, or deletion of a queue. Any writable 3547 variable may be modified whether the row is active or 3548 notInService." 3549 ::= { diffServSchdParamEntry 8 } 3551 -- 3552 -- MIB Compliance statements. 3553 -- 3555 diffServMIBCompliances OBJECT IDENTIFIER ::= { diffServMIBConformance 1 } 3556 diffServMIBGroups OBJECT IDENTIFIER ::= { diffServMIBConformance 2 } 3557 diffServMIBCompliance MODULE-COMPLIANCE 3558 STATUS current 3559 DESCRIPTION 3560 "This MIB may be implemented as a read-only or as a 3561 read-create MIB. As a result, it may be used for mon- 3562 itoring or for configuration." 3563 MODULE -- This Module 3564 MANDATORY-GROUPS { 3565 diffServMIBDataPathGroup, 3566 diffServMIBClfrGroup, 3567 diffServMIBClfrElementGroup, 3568 diffServMIBSixTupleClfrGroup, 3569 diffServMIBActionGroup, 3570 diffServMIBAlgDropGroup, 3571 diffServMIBQGroup, diffServMIBSchedulerGroup, 3572 diffServMIBSchdParamGroup } 3574 -- The groups: 3575 -- diffServMIBCounterGroup 3576 -- diffServMIBHCCounterGroup 3577 -- diffServMIBVHCCounterGroup 3578 -- 3579 -- are mutually exclusive; at most one of these groups is implemented 3580 -- for a particular interface. When any of these groups is implemented 3581 -- for a particular interface, then ifCounterDiscontinuityGroup from 3582 -- [IFMIB] must also be implemented for that interface. 3584 -- note that the diffServMIBStaticGroup is 3585 -- mandatory for implementations that implement a 3586 -- read-write or read-create mode. 3588 GROUP diffServMIBCounterGroup 3589 DESCRIPTION 3590 "This group is mandatory for table objects indexed by 3591 ifIndex for which the value of the corresponding 3592 instance of ifSpeed is less than or equal to 3593 20,000,000 bits/second." 3595 GROUP diffServMIBHCCounterGroup 3596 DESCRIPTION 3597 "This group is mandatory for table objects indexed by 3598 ifIndex for which the value of the corresponding 3599 instance of ifSpeed is greater than 20,000,000 3600 bits/second." 3602 GROUP diffServMIBVHCCounterGroup 3603 DESCRIPTION 3604 "This group is mandatory for table objects indexed by 3605 ifIndex for which the value of the corresponding 3606 instance of ifSpeed is greater than 650,000,000 3607 bits/second." 3609 GROUP diffServMIBMeterGroup 3610 DESCRIPTION 3611 "This group is mandatory for devices that implement 3612 metering functions." 3614 GROUP diffServMIBTBMeterGroup 3615 DESCRIPTION 3616 "This group is mandatory for devices that implement 3617 token-bucket metering functions." 3619 GROUP diffServMIBDscpMarkActGroup 3620 DESCRIPTION 3621 "This group is mandatory for devices that implement 3622 DSCP-Marking functions." 3624 GROUP diffServMIBRandomDropGroup 3625 DESCRIPTION 3626 "This group is mandatory for devices that implement 3627 Random Drop functions." 3629 GROUP diffServMIBStaticGroup 3630 DESCRIPTION 3631 "This group is mandatory for devices that allow crea- 3632 tion of rows in any of the writable tables of this 3633 MIB." 3635 OBJECT diffServClfrStatus 3636 MIN-ACCESS read-only 3637 DESCRIPTION 3638 "Write access is not required." 3640 OBJECT diffServClfrElementOrder 3641 MIN-ACCESS read-only 3642 DESCRIPTION 3643 "Write access is not required." 3645 OBJECT diffServClfrElementNext 3646 MIN-ACCESS read-only 3647 DESCRIPTION 3648 "Write access is not required." 3650 OBJECT diffServClfrElementSpecific 3651 MIN-ACCESS read-only 3652 DESCRIPTION 3653 "Write access is not required." 3655 OBJECT diffServClfrElementStatus 3656 MIN-ACCESS read-only 3657 DESCRIPTION 3658 "Write access is not required." 3660 OBJECT diffServSixTupleClfrDstAddrType 3661 MIN-ACCESS read-only 3662 DESCRIPTION 3663 "Write access is not required." 3665 OBJECT diffServSixTupleClfrDstAddr 3666 MIN-ACCESS read-only 3667 DESCRIPTION 3668 "Write access is not required." 3670 OBJECT diffServSixTupleClfrDstAddrMask 3671 MIN-ACCESS read-only 3672 DESCRIPTION 3673 "Write access is not required." 3675 OBJECT diffServSixTupleClfrSrcAddrType 3676 MIN-ACCESS read-only 3677 DESCRIPTION 3678 "Write access is not required." 3680 OBJECT diffServSixTupleClfrSrcAddr 3681 MIN-ACCESS read-only 3682 DESCRIPTION 3683 "Write access is not required." 3685 OBJECT diffServSixTupleClfrSrcAddrMask 3686 MIN-ACCESS read-only 3687 DESCRIPTION 3688 "Write access is not required." 3690 OBJECT diffServSixTupleClfrDscp 3691 MIN-ACCESS read-only 3692 DESCRIPTION 3693 "Write access is not required." 3695 OBJECT diffServSixTupleClfrProtocol 3696 MIN-ACCESS read-only 3697 DESCRIPTION 3698 "Write access is not required." 3700 OBJECT diffServSixTupleClfrSrcL4PortMin 3701 MIN-ACCESS read-only 3702 DESCRIPTION 3703 "Write access is not required." 3705 OBJECT diffServSixTupleClfrSrcL4PortMax 3706 MIN-ACCESS read-only 3707 DESCRIPTION 3708 "Write access is not required." 3710 OBJECT diffServSixTupleClfrDstL4PortMin 3711 MIN-ACCESS read-only 3712 DESCRIPTION 3713 "Write access is not required." 3715 OBJECT diffServSixTupleClfrDstL4PortMax 3716 MIN-ACCESS read-only 3717 DESCRIPTION 3718 "Write access is not required." 3720 OBJECT diffServSixTupleClfrStatus 3721 MIN-ACCESS read-only 3722 DESCRIPTION 3723 "Write access is not required." 3725 OBJECT diffServMeterSucceedNext 3726 MIN-ACCESS read-only 3727 DESCRIPTION 3728 "Write access is not required." 3730 OBJECT diffServMeterFailNext 3731 MIN-ACCESS read-only 3732 DESCRIPTION 3733 "Write access is not required." 3735 OBJECT diffServMeterSpecific 3736 MIN-ACCESS read-only 3737 DESCRIPTION 3738 "Write access is not required." 3740 OBJECT diffServMeterStatus 3741 MIN-ACCESS read-only 3742 DESCRIPTION 3743 "Write access is not required." 3745 OBJECT diffServTBMeterType 3746 MIN-ACCESS read-only 3747 DESCRIPTION 3748 "Write access is not required." 3750 OBJECT diffServTBMeterRate 3751 MIN-ACCESS read-only 3752 DESCRIPTION 3753 "Write access is not required." 3755 OBJECT diffServTBMeterBurstSize 3756 MIN-ACCESS read-only 3757 DESCRIPTION 3758 "Write access is not required." 3760 OBJECT diffServTBMeterInterval 3761 MIN-ACCESS read-only 3762 DESCRIPTION 3763 "Write access is not required." 3765 OBJECT diffServTBMeterStatus 3766 MIN-ACCESS read-only 3767 DESCRIPTION 3768 "Write access is not required." 3770 OBJECT diffServActionNext 3771 MIN-ACCESS read-only 3772 DESCRIPTION 3773 "Write access is not required." 3775 OBJECT diffServActionSpecific 3776 MIN-ACCESS read-only 3777 DESCRIPTION 3778 "Write access is not required." 3780 OBJECT diffServActionType 3781 MIN-ACCESS read-only 3782 DESCRIPTION 3783 "Write access is not required." 3785 OBJECT diffServActionStatus 3786 MIN-ACCESS read-only 3787 DESCRIPTION 3788 "Write access is not required." 3790 OBJECT diffServCountActStatus 3791 MIN-ACCESS read-only 3792 DESCRIPTION 3793 "Write access is not required." 3795 OBJECT diffServAlgDropType 3796 MIN-ACCESS read-only 3797 DESCRIPTION 3798 "Write access is not required." 3800 OBJECT diffServAlgDropNext 3801 MIN-ACCESS read-only 3802 DESCRIPTION 3803 "Write access is not required." 3805 OBJECT diffServAlgDropQMeasure 3806 MIN-ACCESS read-only 3807 DESCRIPTION 3808 "Write access is not required." 3810 OBJECT diffServAlgDropQThreshold 3811 MIN-ACCESS read-only 3812 DESCRIPTION 3813 "Write access is not required." 3815 OBJECT diffServAlgDropSpecific 3816 MIN-ACCESS read-only 3817 DESCRIPTION 3818 "Write access is not required." 3820 OBJECT diffServAlgDropStatus 3821 MIN-ACCESS read-only 3822 DESCRIPTION 3823 "Write access is not required." 3825 OBJECT diffServRandomDropMinThreshBytes 3826 MIN-ACCESS read-only 3827 DESCRIPTION 3828 "Write access is not required." 3830 OBJECT diffServRandomDropMinThreshPkts 3831 MIN-ACCESS read-only 3832 DESCRIPTION 3833 "Write access is not required." 3835 OBJECT diffServRandomDropMaxThreshBytes 3836 MIN-ACCESS read-only 3837 DESCRIPTION 3838 "Write access is not required." 3840 OBJECT diffServRandomDropMaxThreshPkts 3841 MIN-ACCESS read-only 3842 DESCRIPTION 3843 "Write access is not required." 3845 OBJECT diffServRandomDropInvProbMax 3846 MIN-ACCESS read-only 3847 DESCRIPTION 3848 "Write access is not required." 3850 OBJECT diffServRandomDropInvWeight 3851 MIN-ACCESS read-only 3852 DESCRIPTION 3853 "Write access is not required." 3855 OBJECT diffServRandomDropSamplingRate 3856 MIN-ACCESS read-only 3857 DESCRIPTION 3858 "Write access is not required." 3860 OBJECT diffServRandomDropStatus 3861 MIN-ACCESS read-only 3862 DESCRIPTION 3863 "Write access is not required." 3865 OBJECT diffServQNext 3866 MIN-ACCESS read-only 3867 DESCRIPTION 3868 "Write access is not required." 3870 OBJECT diffServQSchdParam 3871 MIN-ACCESS read-only 3872 DESCRIPTION 3873 "Write access is not required." 3875 OBJECT diffServQStatus 3876 MIN-ACCESS read-only 3877 DESCRIPTION 3878 "Write access is not required." 3880 OBJECT diffServSchedulerNext 3881 MIN-ACCESS read-only 3882 DESCRIPTION 3883 "Write access is not required." 3885 OBJECT diffServSchedulerMethod 3886 MIN-ACCESS read-only 3887 DESCRIPTION 3888 "Write access is not required." 3890 OBJECT diffServSchedulerSchdParam 3891 MIN-ACCESS read-only 3892 DESCRIPTION 3893 "Write access is not required." 3895 OBJECT diffServSchedulerStatus 3896 MIN-ACCESS read-only 3897 DESCRIPTION 3898 "Write access is not required." 3900 OBJECT diffServSchdParamPriority 3901 MIN-ACCESS read-only 3902 DESCRIPTION 3903 "Write access is not required." 3905 OBJECT diffServSchdParamMinRateAbs 3906 MIN-ACCESS read-only 3907 DESCRIPTION 3908 "Write access is not required." 3910 OBJECT diffServSchdParamMinRateRel 3911 MIN-ACCESS read-only 3912 DESCRIPTION 3913 "Write access is not required." 3915 OBJECT diffServSchdParamMaxRateAbs 3916 MIN-ACCESS read-only 3917 DESCRIPTION 3918 "Write access is not required." 3920 OBJECT diffServSchdParamMaxRateRel 3921 MIN-ACCESS read-only 3922 DESCRIPTION 3923 "Write access is not required." 3925 OBJECT diffServSchdParamBurstSize 3926 MIN-ACCESS read-only 3927 DESCRIPTION 3928 "Write access is not required." 3930 OBJECT diffServSchdParamStatus 3931 MIN-ACCESS read-only 3932 DESCRIPTION 3933 "Write access is not required." 3935 ::= { diffServMIBCompliances 1 } 3937 diffServMIBDataPathGroup OBJECT-GROUP 3938 OBJECTS { 3939 diffServDataPathStart, diffServDataPathStatus 3940 } 3941 STATUS current 3942 DESCRIPTION 3943 "The Data Path Group defines the MIB Objects that 3944 describe a data path." 3945 ::= { diffServMIBGroups 1 } 3947 diffServMIBClfrGroup OBJECT-GROUP 3948 OBJECTS { 3949 diffServClfrStatus 3950 } 3951 STATUS current 3952 DESCRIPTION 3953 "The Classifier Group defines the MIB Objects that 3954 describe a generic classifier." 3955 ::= { diffServMIBGroups 2 } 3957 diffServMIBClfrElementGroup OBJECT-GROUP 3958 OBJECTS { 3959 diffServClfrElementOrder, diffServClfrElementNext, 3960 diffServClfrElementSpecific, diffServClfrElementStatus 3962 } 3963 STATUS current 3964 DESCRIPTION 3965 "The Classifier Element Group defines the MIB Objects 3966 that describe the classifier elements that make up a 3967 generic classifier." 3968 ::= { diffServMIBGroups 3 } 3970 diffServMIBSixTupleClfrGroup OBJECT-GROUP 3971 OBJECTS { 3972 diffServSixTupleClfrDstAddrType, diffServSixTupleClfrDstAddr, 3973 diffServSixTupleClfrDstAddrMask, 3974 diffServSixTupleClfrSrcAddrType, diffServSixTupleClfrSrcAddr, 3975 diffServSixTupleClfrSrcAddrMask, 3976 diffServSixTupleClfrDscp, diffServSixTupleClfrProtocol, 3977 diffServSixTupleClfrDstL4PortMin, 3978 diffServSixTupleClfrDstL4PortMax, 3979 diffServSixTupleClfrSrcL4PortMin, 3980 diffServSixTupleClfrSrcL4PortMax, 3981 diffServSixTupleClfrStatus 3982 } 3983 STATUS current 3984 DESCRIPTION 3985 "The Six-tuple Classifier Group defines the MIB 3986 Objects that describe a classifier element for match- 3987 ing on 6 fields of an IP and upper-layer protocol 3988 header." 3989 ::= { diffServMIBGroups 4 } 3991 diffServMIBMeterGroup OBJECT-GROUP 3992 OBJECTS { 3993 diffServMeterSucceedNext, diffServMeterFailNext, 3994 diffServMeterSpecific, diffServMeterStatus 3995 } 3996 STATUS current 3997 DESCRIPTION 3998 "The Meter Group defines the objects used in describ- 3999 ing a generic meter element." 4000 ::= { diffServMIBGroups 5 } 4002 diffServMIBTBMeterGroup OBJECT-GROUP 4003 OBJECTS { 4004 diffServTBMeterType, 4005 diffServTBMeterRate, diffServTBMeterBurstSize, 4006 diffServTBMeterInterval, diffServTBMeterStatus 4007 } 4008 STATUS current 4009 DESCRIPTION 4010 "The Token-Bucket Meter Group defines the objects 4011 used in describing a token bucket meter element." 4012 ::= { diffServMIBGroups 6 } 4014 diffServMIBActionGroup OBJECT-GROUP 4015 OBJECTS { 4016 diffServActionNext, diffServActionSpecific, 4017 diffServActionType, diffServActionStatus 4018 } 4019 STATUS current 4020 DESCRIPTION 4021 "The Action Group defines the objects used in 4022 describing a generic action element." 4023 ::= { diffServMIBGroups 7 } 4025 diffServMIBDscpMarkActGroup OBJECT-GROUP 4026 OBJECTS { 4027 diffServDscpMarkActDscp 4028 } 4029 STATUS current 4030 DESCRIPTION 4031 "The DSCP Mark Action Group defines the objects used 4032 in describing a DSCP Marking Action element." 4033 ::= { diffServMIBGroups 8 } 4035 diffServMIBCounterGroup OBJECT-GROUP 4036 OBJECTS { 4037 diffServCountActOctets, 4038 diffServCountActPkts, 4039 diffServCountActDiscontTime, 4040 diffServCountActStatus, 4041 diffServAlgDropOctets, 4042 diffServAlgDropPkts 4043 } 4044 STATUS current 4045 DESCRIPTION 4046 "A collection of objects providing information 4047 specific to non-high speed (non-high speed interfaces 4048 transmit and receive at speeds less than or equal to 4049 20,000,000 bits/second) packet-oriented network 4050 interfaces." 4051 ::= { diffServMIBGroups 9 } 4053 diffServMIBHCCounterGroup OBJECT-GROUP 4054 OBJECTS { 4055 diffServCountActOctets, diffServCountActHCOctets, 4056 diffServCountActPkts, 4057 diffServCountActDiscontTime, 4058 diffServCountActStatus, 4059 diffServAlgDropOctets, diffServAlgDropHCOctets, 4060 diffServAlgDropPkts 4061 } 4062 STATUS current 4063 DESCRIPTION 4064 "A collection of objects providing information 4065 specific to high speed (high speed interfaces 4066 transmit and receive at speeds greater than 4067 20,000,000 but less than or equals to 650,000,000 4068 bits/second) packet-oriented network interfaces." 4069 ::= { diffServMIBGroups 10 } 4071 diffServMIBVHCCounterGroup OBJECT-GROUP 4072 OBJECTS { 4073 diffServCountActOctets, diffServCountActHCOctets, 4074 diffServCountActPkts, diffServCountActHCPkts, 4075 diffServCountActDiscontTime, 4076 diffServCountActStatus, 4077 diffServAlgDropOctets, diffServAlgDropHCOctets, 4078 diffServAlgDropPkts, diffServAlgDropHCPkts 4079 } 4080 STATUS current 4081 DESCRIPTION 4082 "A collection of objects providing information 4083 specific to very-high speed (very-high speed inter- 4084 faces transmit and receive at speeds greater than 4085 650,000,000 bits/second) packet-oriented network 4086 interfaces." 4087 ::= { diffServMIBGroups 11 } 4089 diffServMIBAlgDropGroup OBJECT-GROUP 4090 OBJECTS { 4091 diffServAlgDropType, diffServAlgDropNext, 4092 diffServAlgDropQMeasure, diffServAlgDropQThreshold, 4093 diffServAlgDropSpecific, diffServAlgDropStatus 4095 } 4096 STATUS current 4097 DESCRIPTION 4098 "The Algorithmic Drop Group contains the objects that 4099 describe algorithmic dropper operation and configura- 4100 tion." 4101 ::= { diffServMIBGroups 12 } 4103 diffServMIBRandomDropGroup OBJECT-GROUP 4104 OBJECTS { 4105 diffServRandomDropMinThreshBytes, 4106 diffServRandomDropMinThreshPkts, 4107 diffServRandomDropMaxThreshBytes, 4108 diffServRandomDropMaxThreshPkts, 4109 diffServRandomDropInvProbMax, 4110 diffServRandomDropInvWeight, 4111 diffServRandomDropSamplingRate, 4112 diffServRandomDropStatus 4113 } 4114 STATUS current 4115 DESCRIPTION 4116 "The Random Drop Group augments the Algorithmic Drop Group for 4117 random dropper operation and configuration." 4118 ::= { diffServMIBGroups 13 } 4120 diffServMIBQGroup OBJECT-GROUP 4121 OBJECTS { 4122 diffServQNext, diffServQSchdParam, 4123 diffServQStatus 4124 } 4125 STATUS current 4126 DESCRIPTION 4127 "The Queue Group contains the objects that describe 4128 an interface's queues." 4129 ::= { diffServMIBGroups 14 } 4131 diffServMIBSchedulerGroup OBJECT-GROUP 4132 OBJECTS { 4133 diffServSchedulerNext, diffServSchedulerMethod, 4134 diffServSchedulerSchdParam, diffServSchedulerStatus 4135 } 4136 STATUS current 4137 DESCRIPTION 4138 "The Scheduler Group contains the objects that 4139 describe packet schedulers on interfaces." 4140 ::= { diffServMIBGroups 15 } 4142 diffServMIBSchdParamGroup OBJECT-GROUP 4143 OBJECTS { 4144 diffServSchdParamPriority, 4145 diffServSchdParamMinRateAbs, diffServSchdParamMinRateRel, 4146 diffServSchdParamMaxRateAbs, diffServSchdParamMaxRateRel, 4147 diffServSchdParamBurstSize, diffServSchdParamStatus 4148 } 4149 STATUS current 4150 DESCRIPTION 4151 "The Scheduler Parameter Group contains the objects 4152 that describe packet schedulers' parameters on inter- 4153 faces." 4154 ::= { diffServMIBGroups 16 } 4156 diffServMIBStaticGroup OBJECT-GROUP 4157 OBJECTS { 4158 diffServClfrNextFree, diffServClfrElementNextFree, 4159 diffServSixTupleClfrNextFree, 4160 diffServMeterNextFree, diffServTBMeterNextFree, 4161 diffServActionNextFree, diffServCountActNextFree, 4162 diffServAlgDropNextFree, diffServRandomDropNextFree, 4163 diffServQNextFree, diffServSchedulerNextFree, 4164 diffServSchdParamNextFree 4165 } 4166 STATUS current 4167 DESCRIPTION 4168 "The Static Group contains readable scalar objects 4169 used in creating unique identifiers for classifiers, 4170 meters, actions and queues. These are required when- 4171 ever row creation operations on such tables are sup- 4172 ported." 4173 ::= { diffServMIBGroups 17 } 4175 END 4176 8. Acknowledgments 4178 This MIB builds on all the work that has gone into the Informal 4179 Management Model for Diffserv routers, DiffServ PIB, and DiffServ Policy 4180 MIB (SNMPCONF WG). It has been developed with the active involvement of 4181 many people, but most notably Yoram Bernet, Steve Blake, Brian 4182 Carpenter, Dave Durham, Jeremy Greene, Dan Grossman, Roch Guerin, Scott 4183 Hahn, Keith McCloghrie, Bob Moore, Kathleen Nichols, Ping Pan, Nabil 4184 Seddigh, Bert Wijnen, Victor Firoiu, John Seligson, Michael Fine, Walter 4185 Weiss, Joel Halpern, and Harrie Hazewinkel. 4187 9. Security Considerations 4189 It is clear that this MIB is potentially useful for configuration, and 4190 anything that can be configured can be misconfigured, with potentially 4191 disastrous effect. 4193 At this writing, no security holes have been identified beyond those 4194 that SNMP Security is itself intended to address. These relate primarily 4195 to controlled access to sensitive information and the ability to 4196 configure a device - or which might result from operator error, which is 4197 beyond the scope of any security architecture. 4199 There are a number of management objects defined in this MIB that have a 4200 MAX-ACCESS clause of read-write and/or read-create. Such objects may be 4201 considered sensitive or vulnerable in some network environments. The 4202 support for SET operations in a non-secure environment without proper 4203 protection can have a negative effect on network operations. The use of 4204 SNMP Version 3 is recommended over prior versions for configuration 4205 control as its security model is improved. 4207 There are a number of managed objects in this MIB that may contain 4208 information that may be sensitive from a business perspective, in that 4209 they may represent a customer's service contract or the filters that the 4210 service provider chooses to apply to a customer's ingress or egress 4211 traffic. There are no objects which are sensitive in their own right, 4212 such as passwords or monetary amounts. 4214 It may be important to control even GET access to these objects and 4215 possibly to even encrypt the values of these object when sending them 4216 over the network via SNMP. Not all versions of SNMP provide features for 4217 such a secure environment. 4219 SNMPv1 by itself is not a secure environment. Even if the network itself 4220 is secure (for example by using IPSec), even then, there is no control 4221 as to who on the secure network is allowed to access and GET/SET 4222 (read/change/create/delete) the objects in this MIB. 4224 It is recommended that the implementers consider the security features 4225 as provided by the SNMPv3 framework. Specifically, the use of the User- 4226 based Security Model [12] and the View-based Access Control Model [15] 4227 is recommended. 4229 It is then a customer/user responsibility to ensure that the SNMP entity 4230 giving access to an instance of this MIB, is properly configured to give 4231 access to the objects only to those principals (users) that have 4232 legitimate rights to indeed GET or SET (change/create/delete) them. 4234 10. References 4236 [1] Harrington, D., Presuhn, R., and B. Wijnen, "An Architecture for 4237 Describing SNMP Management Frameworks", RFC 2571, Cabletron 4238 Systems, Inc., BMC Software, Inc., IBM T. J. Watson Research, April 4239 1999 4241 [2] Rose, M., and K. McCloghrie, "Structure and Identification of 4242 Management Information for TCP/IP-based Internets", RFC 1155, STD 4243 16, Performance Systems International, Hughes LAN Systems, May 1990 4245 [3] Rose, M., and K. McCloghrie, "Concise MIB Definitions", RFC 1212, 4246 STD 16, Performance Systems International, Hughes LAN Systems, 4247 March 1991 4249 [4] M. Rose, "A Convention for Defining Traps for use with the SNMP", 4250 RFC 1215, Performance Systems International, March 1991 4252 [5] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., 4253 and S. Waldbusser, "Structure of Management Information Version 2 4254 (SMIv2)", RFC 2578, STD 58, Cisco Systems, SNMPinfo, TU 4255 Braunschweig, SNMP Research, First Virtual Holdings, International 4256 Network Services, April 1999 4258 [6] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., 4259 and S. Waldbusser, "Textual Conventions for SMIv2", RFC 2579, STD 4260 58, Cisco Systems, SNMPinfo, TU Braunschweig, SNMP Research, First 4261 Virtual Holdings, International Network Services, April 1999 4263 [7] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., 4264 and S. Waldbusser, "Conformance Statements for SMIv2", RFC 2580, 4265 STD 58, Cisco Systems, SNMPinfo, TU Braunschweig, SNMP Research, 4266 First Virtual Holdings, International Network Services, April 1999 4268 [8] Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple Network 4269 Management Protocol", RFC 1157, STD 15, SNMP Research, Performance 4270 Systems International, Performance Systems International, MIT 4271 Laboratory for Computer Science, May 1990. 4273 [9] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, 4274 "Introduction to Community-based SNMPv2", RFC 1901, SNMP Research, 4275 Inc., Cisco Systems, Inc., Dover Beach Consulting, Inc., 4276 International Network Services, January 1996. 4278 [10] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Transport 4279 Mappings for Version 2 of the Simple Network Management Protocol 4280 (SNMPv2)", RFC 1906, SNMP Research, Inc., Cisco Systems, Inc., 4281 Dover Beach Consulting, Inc., International Network Services, 4282 January 1996. 4284 [11] Case, J., Harrington D., Presuhn R., and B. Wijnen, "Message 4285 Processing and Dispatching for the Simple Network Management 4286 Protocol (SNMP)", RFC 2572, SNMP Research, Inc., Cabletron Systems, 4287 Inc., BMC Software, Inc., IBM T. J. Watson Research, April 1999 4289 [12] Blumenthal, U., and B. Wijnen, "User-based Security Model (USM) for 4290 version 3 of the Simple Network Management Protocol (SNMPv3)", RFC 4291 2574, IBM T. J. Watson Research, April 1999 4293 [13] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Protocol 4294 Operations for Version 2 of the Simple Network Management Protocol 4295 (SNMPv2)", RFC 1905, SNMP Research, Inc., Cisco Systems, Inc., 4296 Dover Beach Consulting, Inc., International Network Services, 4297 January 1996. 4299 [14] Levi, D., Meyer, P., and B. Stewart, "SNMPv3 Applications", RFC 4300 2573, SNMP Research, Inc., Secure Computing Corporation, Cisco 4301 Systems, April 1999 4303 [15] Wijnen, B., Presuhn, R., and K. McCloghrie, "View-based Access 4304 Control Model (VACM) for the Simple Network Management Protocol 4305 (SNMP)", RFC 2575, IBM T. J. Watson Research, BMC Software, Inc., 4306 Cisco Systems, Inc., April 1999 4308 [16] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction to 4309 Version 3 of the Internet-standard Network Management Framework", 4310 RFC 2570, SNMP Research, Inc., TIS Labs at Network Associates, 4311 Inc., Ericsson, Cisco Systems, April 1999 4313 [ACTQMGMT] 4314 V. Firoiu, M. Borden "A Study of Active Queue Management for 4315 Congestion Control", March 2000, In IEEE Infocom 2000, 4316 http://www.ieee-infocom.org/2000/papers/405.pdf 4318 [AQMROUTER] 4319 V.Misra, W.Gong, D.Towsley "Fuid-based analysis of a network of AQM 4320 routers supporting TCP flows with an application to RED", In 4321 SIGCOMM 2000, 4322 http://www.acm.org/sigcomm/sigcomm2000/conf/paper/sigcomm2000-4- 4323 3.ps.gz 4325 [AF-PHB] 4326 J. Heinanen, F. Baker, W. Weiss, J. Wroclawski, "Assured Forwarding 4327 PHB Group.", RFC 2597, June 1999. 4329 [DSARCH] 4330 S. Blake, D. Black, M. Carlson, E. Davies, Z. Wang, W. Weiss, "An 4331 Architecture for Differentiated Service", RFC 2475, December 1998. 4333 [DSFIELD] 4334 K. Nichols, S. Blake, F. Baker, D. Black, "Definition of the 4335 Differentiated Services Field (DS Field) in the IPv4 and IPv6 4336 Headers", RFC 2474, December 1998. 4338 [DSPIB] 4339 M. Fine, K. McCloghrie, J. Seligson, K. Chan, S. Hahn, A. Smith, 4340 "Differentiated Services Policy Information Base", Internet Draft 4341 , March 2000 4343 [DSTERMS] 4344 D. Grossman, "New Terminology for Diffserv", Internet Draft 4345 , November 1999. 4347 [EF-PHB] 4348 V. Jacobson, K. Nichols, K. Poduri, "An Expedited Forwarding PHB." 4349 RFC 2598, June 1999. 4351 [IFMIB] 4352 K. McCloghrie, F. Kastenholz, "The Interfaces Group MIB using 4353 SMIv2", RFC 2233, November 1997. 4355 [INETADDRESS] 4356 Daniele, M., Haberman, B., Routhier, S., Schoenwaelder, J., 4357 "Textual Conventions for Internet Network Addresses.", RFC 2851, 4358 June 2000. 4360 [INTSERVMIB] 4361 F. Baker, J. Krawczyk, A. Sastry, "Integrated Services Management 4362 Information Base using SMIv2", RFC 2213, September 1997. 4364 [MODEL] 4365 Y. Bernet, S. Blake, A. Smith, D. Grossman, "An Informal Management 4366 Model for Diffserv Routers", Internet Draft , July 2000. 4369 [POLTERM] 4370 F. Reichmeyer, D. Grossman, J. Strassner, M. Condell, "A Common 4371 Terminology for Policy Management", Internet Draft , March 2000 4374 [QUEUEMGMT] 4375 B. Braden et al., "Recommendations on Queue Management and 4376 Congestion Avoidance in the Internet", RFC 2309, April 1998. 4378 [RED93] 4379 "Random Early Detection", 1993. 4381 [SRTCM] 4382 J. Heinanen, R. Guerin, "A Single Rate Three Color Marker", RFC 4383 2697, September 1999. 4385 [TRTCM] 4386 J. Heinanen, R. Guerin, "A Two Rate Three Color Marker", RFC 2698, 4387 September 1999. 4389 [TSWTCM] 4390 W. Fang, N. Seddigh, B. Nandy "A Time Sliding Window Three Colour 4391 Marker", RFC 2859, June 2000. 4393 11. Authors' Addresses 4395 Fred Baker 4396 Cisco Systems 4397 519 Lado Drive 4398 Santa Barbara, California 93111 4399 fred@cisco.com 4400 Kwok Ho Chan 4401 Nortel Networks 4402 600 Technology Park Drive 4403 Billerica, MA 01821 4404 khchan@nortelnetworks.com 4406 Andrew Smith 4407 Allegro Networks 4408 6399 San Ignacio Ave 4409 San Jose, CA 95119 4410 andrew@allegronetworks.com 4412 Table of Contents 4414 1 The SNMP Management Framework ................................... 2 4415 2 Introduction .................................................... 4 4416 2.1 Relationship to the Diffserv Informal Management Model ........ 4 4417 2.2 Relationship to other MIBs and Policy Management .............. 5 4418 2.3 MIB Overview .................................................. 5 4419 3 Structure of this MIB ........................................... 6 4420 3.1 DiffServ Data Paths ........................................... 7 4421 3.1.1 Data Path Table ............................................. 7 4422 3.2 Classifiers ................................................... 8 4423 3.2.1 Classifier Table ............................................ 9 4424 3.2.2 Classifier Element Table .................................... 9 4425 3.2.3 Filter Table - IP Six-Tuple Classifier Table ................ 9 4426 3.3 Meters ........................................................ 9 4427 3.3.1 Meter Table ................................................. 10 4428 3.3.2 Token-Bucket Meter Table .................................... 10 4429 3.4 Actions ....................................................... 10 4430 3.4.1 DSCP Mark Action Table ...................................... 11 4431 3.4.2 Count Action Table .......................................... 11 4432 3.4.3 Absolute Drop Action ........................................ 11 4433 3.5 Queueing Elements ............................................. 11 4434 3.5.1 Algorithmic Dropper Table ................................... 12 4435 3.5.2 Random Dropper Table ........................................ 13 4436 3.5.3 Queues and Schedulers ....................................... 14 4437 4 MIB Usage Example ............................................... 16 4438 4.1 Model's Example ............................................... 16 4439 4.2 Additional Data Path Example .................................. 19 4440 4.2.1 Data Path and Classifier Example Discussion ................. 19 4441 4.2.2 Meter and Action Example Discussion ......................... 22 4442 4.2.3 Queue and Scheduler Example Discussion ...................... 23 4443 5 Conventions used in this MIB .................................... 23 4444 5.1 The use of RowPointer ......................................... 23 4445 5.2 The use of StaticRowPointer ................................... 24 4446 5.3 Conceptual row creation and deletion .......................... 24 4447 6 Extending this MIB .............................................. 25 4448 7 MIB Definition .................................................. 26 4449 8 Acknowledgments ................................................. 97 4450 9 Security Considerations ......................................... 97 4451 10 References ..................................................... 98 4452 11 Authors' Addresses ............................................. 101 4453 12. Full Copyright 4455 Copyright (C) The Internet Society (2000). All Rights Reserved. 4457 This document and translations of it may be copied and furnished to 4458 others, and derivative works that comment on or otherwise explain it 4459 or assist in its implmentation may be prepared, copied, published and 4460 distributed, in whole or in part, without restriction of any kind, 4461 provided that the above copyright notice and this paragraph are 4462 included on all such copies and derivative works. However, this 4463 document itself may not be modified in any way, such as by removing 4464 the copyright notice or references to the Internet Society or other 4465 Internet organizations, except as needed for the purpose of 4466 developing Internet standards in which case the procedures for 4467 copyrights defined in the Internet Standards process must be 4468 followed, or as required to translate it into languages other than 4469 English. 4471 The limited permissions granted above are perpetual and will not be 4472 revoked by the Internet Society or its successors or assigns. 4474 This document and the information contained herein is provided on an 4475 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 4476 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 4477 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 4478 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 4479 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.