idnits 2.17.1 draft-ietf-tsvwg-tcp-mib-extension-13.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** It looks like you're using RFC 3978 boilerplate. You should update this to the boilerplate described in the IETF Trust License Policy document (see https://trustee.ietf.org/license-info), which is required now. -- Found old boilerplate from RFC 3978, Section 5.1 on line 17. -- Found old boilerplate from RFC 3978, Section 5.5 on line 3787. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 3763. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 3770. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 3776. ** This document has an original RFC 3978 Section 5.4 Copyright Line, instead of the newer IETF Trust Copyright according to RFC 4748. ** This document has an original RFC 3978 Section 5.5 Disclaimer, instead of the newer disclaimer which includes the IETF Trust according to RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- == No 'Intended status' indicated for this document; assuming Proposed Standard Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == The document seems to use 'NOT RECOMMENDED' as an RFC 2119 keyword, but does not include the phrase in its RFC 2119 key words list. -- 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 () is 739382 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) == Unused Reference: 'RFC791' is defined on line 3591, but no explicit reference was found in the text == Unused Reference: 'RFC1122' is defined on line 3597, but no explicit reference was found in the text == Unused Reference: 'RFC1191' is defined on line 3600, but no explicit reference was found in the text == Unused Reference: 'RFC1323' is defined on line 3603, but no explicit reference was found in the text == Unused Reference: 'RFC2018' is defined on line 3606, but no explicit reference was found in the text == Unused Reference: 'RFC2883' is defined on line 3636, but no explicit reference was found in the text == Unused Reference: 'RFC3168' is defined on line 3643, but no explicit reference was found in the text == Unused Reference: 'RFC3260' is defined on line 3646, but no explicit reference was found in the text == Unused Reference: 'RFC3517' is defined on line 3649, but no explicit reference was found in the text == Unused Reference: 'RFC3540' is defined on line 3656, but no explicit reference was found in the text == Unused Reference: 'RFC3742' is defined on line 3659, but no explicit reference was found in the text ** Obsolete normative reference: RFC 793 (Obsoleted by RFC 9293) ** Obsolete normative reference: RFC 1323 (Obsoleted by RFC 7323) ** Obsolete normative reference: RFC 2021 (Obsoleted by RFC 4502) ** Obsolete normative reference: RFC 2581 (Obsoleted by RFC 5681) ** Obsolete normative reference: RFC 2861 (Obsoleted by RFC 7661) ** Obsolete normative reference: RFC 2988 (Obsoleted by RFC 6298) ** Downref: Normative reference to an Informational RFC: RFC 3260 ** Obsolete normative reference: RFC 3517 (Obsoleted by RFC 6675) ** Downref: Normative reference to an Experimental RFC: RFC 3522 ** Downref: Normative reference to an Historic RFC: RFC 3540 ** Downref: Normative reference to an Experimental RFC: RFC 3742 == Outdated reference: A later version (-05) exists of draft-ietf-tcpm-syn-flood-00 Summary: 14 errors (**), 0 flaws (~~), 15 warnings (==), 7 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet-Draft Matt Mathis 3 John Heffner 4 Pittsburgh Supercomputing Center 5 Rajiv Raghunarayan 6 Cisco Systems 8 TCP Extended Statistics MIB 9 draft-ietf-tsvwg-tcp-mib-extension-13.txt 10 Thu Dec 7 21:47:50 EST 2006 12 Status of this Memo 14 By submitting this Internet-Draft, each author represents that any 15 applicable patent or other IPR claims of which he or she is aware 16 have been or will be disclosed, and any of which he or she becomes 17 aware will be disclosed, in accordance with Section 6 of BCP 79. 19 Internet-Drafts are working documents of the Internet Engineering 20 Task Force (IETF), its areas, and its working groups. Note that other 21 groups may also distribute working documents as Internet-Drafts. 23 Internet-Drafts are draft documents valid for a maximum of six months 24 and may be updated, replaced, or obsoleted by other documents at any 25 time. It is inappropriate to use Internet-Drafts as reference 26 material or to cite them other than as "work in progress." 28 The list of current Internet-Drafts can be accessed at http:// 29 www.ietf.org/ietf/1id-abstracts.txt. 31 The list of Internet-Draft Shadow Directories can be accessed at 32 http://www.ietf.org/shadow.html. 34 This Internet-Draft will expire June, 2007 36 Abstract 38 This draft describes extended performance statistics for TCP. They 39 are designed to use TCP's ideal vantage point to diagnose performance 40 problems in both the network and the application. If a network based 41 application is performing poorly, TCP can determine if the bottleneck 42 is in the sender, the receiver or the network itself. If the 43 bottleneck is in the network, TCP can provide specific information 44 about its nature. 46 Table of Contents 48 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 2 49 2. The Internet-Standard Management Framework . . . . . . . . 7 50 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 8 51 4. TCP Extended Statistics MIB . . . . . . . . . . . . . . . . 13 52 5. Normative References . . . . . . . . . . . . . . . . . . . 74 53 6. Informative References . . . . . . . . . . . . . . . . . . 76 54 7. Security Considerations . . . . . . . . . . . . . . . . . . 77 55 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . 78 56 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . 79 57 11. Authors' Addresses . . . . . . . . . . . . . . . . . . . . 79 58 12. Intellectual Property . . . . . . . . . . . . . . . . . . 79 59 13. Disclaimer of Validity . . . . . . . . . . . . . . . . . . 80 60 14. Copyright Statement . . . . . . . . . . . . . . . . . . . 80 62 1. Introduction 64 This draft describes extended performance statistics for TCP. They 65 are designed to use TCP's ideal vantage point to diagnose performance 66 problems in both the network and the application. If a network based 67 application is performing poorly, TCP can determine if the bottleneck 68 is in the sender, the receiver or the network itself. If the 69 bottleneck is in the network, TCP can provide specific information 70 about its nature. 72 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 73 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 74 document are to be interpreted as described in RFC 2119. 76 The SNMP objects defined in this draft extend TCP MIB, as specified 77 in RFC 4022 [RFC4022]. In addition to several new scalars and other 78 objects, it augments two tables and makes one clarification to RFC 79 4022. Existing management stations for the TCP MIB are expected to 80 be fully compatible with these clarifications. 82 X. Changes 84 RFC editor, please remove this virtual section. It contains document 85 history and some information about document version control. 87 This document is automatically generated from a database of potential 88 TCP instruments. Beware that the OIDs are still likely to change 89 with future versions. The current version can be obtained from 90 . Please send all suggestions and 91 comments to tsvwg@ietf.org so they go to the entire TSV WG. 93 Changes since draft-ietf-tsvwg-tcp-mib-extension-12.txt (9-Oct-2006): 95 These changes reflect comments from the Gen-ART, Last Call Review. 97 Clarified "this implementation" language in section 3.2. 99 Corrected cut and paste errors in the descriptions of the table 100 controls. 102 Several minor wording nits. 104 Changes since draft-ietf-tsvwg-tcp-mib-extension-11.txt (3-Aug-2006): 106 Changed Matt's email address to mathis@psc.edu. 108 Changes per comments from the transport AD, Lars Eggert: Re-organized 109 the overview to improve clarity. Moved the security section ahead of 110 the references. Various nits. 112 Changes since draft-ietf-tsvwg-tcp-mib-extension-10.txt 113 (24-May-2006): 115 These changes reflect comments received during the WGLC. 117 tcpEStatsConnTableLatency is no longer restricted to be less than 30 118 seconds. 120 Added references to the descriptions of Receiver Limited and 121 Congestion limited objects (tcpEStatsPerfSndLim*). 123 Reviewed and clarified all ECN related instruments. 125 Changes since draft-ietf-tsvwg-tcp-mib-extension-09.txt (4-Mar-2006): 127 Corrected the SYNTAX for PathNonRecovDAEpisodes, 128 PathSumOctetsReordered and AppSndNxt. 130 Clarified the relationship between tcpEStatsConnTableLatency and 131 RFC4022 (TCP-MIB). 133 Changes since draft-ietf-tsvwg-tcp-mib-extension-08.txt 134 (23-Oct-2005): 136 Changed tcpEStatsConnectIdTable to augment TCP- 137 MIB::tcpConnectionTable, rather than be a stand alone table. This 138 requires this draft to clarify vague row latency language in RFC4022 139 and deleting some text about the removed objects from the overview 140 and security sections. 142 Added row latency language to all connection tables. 144 Added DEFVAL to tcpEStatsConnTableLatency. 146 Reassigned sane OIDs under tcpEStats. 148 Careful review and several clarifications of the overview section. 150 Reviewed and cleaned up all references. 152 Restructured the tcpEStatsStackTable, by moving all of the objects 153 that describe the SYN exchange to the front of the table. These 154 objects are not permitted to change once the connection is 155 established. This permits polling the latter portion of the table in 156 a single PDU. 158 Added the TcpEStatsNegotiated TC and revised the objects that 159 describe the SYN exchange to better represent the state of the 160 negotiation without separate objects for both option values and 161 negotiated states. 163 Added tcpEStatsPathRcvRTT, which is the receiver's estimate of the 164 path RTT. Later corrected it to be gauge32. 166 Changed tcpEStatsListenerCurrConns to tcpEStatsListenerCurConns to 167 agree with other "current" object names. 169 Acknowledged the efforts of the MIB Doctor and Operations area 170 director. 172 The following changes are per the MIB doctor review: 174 Minor corrections (form feeds, copyright date, etc) to pass IDnits 175 and smilint. (Note that the unassigned root OID generates to only 176 remaining warning.) 178 Moved this mib from a subtree under experimental to a subtree under 179 mib-2 and added an IANA considerations section for the root OID. 181 Added "UNITS" and "REFERENCE" clauses as appropriate. 183 Clarified the description of tcpEStatsStackInRecovery. 185 Updated the description of tcpEStatsStackSoftErrors to mention the 186 numerical values of the errors. 188 Updated the Security considerations section with new boiler plate and 189 better descriptions. 191 Moved the document revision information to (this) virtual section. 193 Replaced the TcpEStatsOperation TC with TruthValue TC. 195 Clarified the description of tcpEStatsListenerCurBacklog. Note that 196 the text still allows for TCP variants. 198 Removed references to obsolete SNMP versions from 199 tcpEStatsConnectIdTable, but did not remove doubled or further 200 restrict address types. 202 Added a new subsection to clarify that the relationship to TCP 203 standards and indicate that the underlying TCP specifications 204 deliberately encourage diversity. 206 Updated the description of the tcpEStatsPipeSize to clarify the 207 permitted diversity in implementation. 209 Added a normative reference for RFC3517. 211 Clarified the introduction to the instruments of the window updates 212 sent by the local receiver. 214 Added 2 paragraphs to the overview about TCP non-persistence across 215 reboots, and the non-persistence of all objects in this MIB. 217 Clarified the description of tcpEStatsPathECNsignals. 219 Added explicit language about counter deltas, for objects intended to 220 be used to compute ratios. 222 Removed text permitting implementers to allocate additional 223 proprietary codes for tcpEStatsStackSoftErrorReason. 225 Added language clarifying that SND.NXT, SND.UNA, etc have Counter32 226 semantics. 228 Changes since draft-ietf-tsvwg-tcp-mib-extension-07.txt (20-Feb-2005) 230 Added tcpEStatsStackSpuriousRtoDetected. Renamed AckAfterFR to 231 tcpEStatsStackSpuriousFrDetected and clarified the description. 233 Restructure the tables yet again. The perf, path, and stack tables 234 now each start out with some required objects, followed by optional 235 objects. This permits a much more logical grouping of instruments, 236 lowers the cost for a minimal implementation and encourages 237 incremental deployment. 239 Changes since draft-ietf-tsvwg-tcp-mib-extension-06.txt (20-Feb-2005) 240 Added tcpEStatsPerfPipeSize and tcpEStatsPerfMaxPipeSize to detect 241 when TCP is unable to open the window as large as permitted. 243 Added tcpEStatsStackInRecovery to indicate if the connection is 244 currently in recovery (e.g. has outstanding retransmissions), or 245 about to enter recovery. 247 Move tcpEStatsPerfSumRTT, Tcpestatsperfhcsumrtt and 248 tcpEStatsPerfCountRTT to the path table, tcpEStatsPath. 250 Added tcpEStatsPathHCGroup. 252 Move tcpEstatsPathAckAfterFR and tcpEstatsPathSndDupAckEpisodes back 253 to the performance table, tcpEStatsPerf. 255 Move tcpEStatsPerfSampleRTT, tcpEStatsPerfSampleRTT and 256 tcpEStatsPerfSampleRTT to the stack table, tcpEStatsStack. 258 Clarified the descriptions of tcpEStatsPerfDupAckEpisodes, 259 tcpEStatsPerfDupAcksOut and tcpEStatsPerfCongSignals 261 Changes since draft-ietf-tsvwg-tcp-mib-extension-05.txt 262 (17-July-2004) 264 Many changes to object descriptions MIB comments and overview to 265 improve clarity. 267 Completely restructured the per connection tables. Seven table were 268 reduced to five. The main per connection table tcpEStatsPerfTable 269 is now mandatory. Three other new tables are focused on 270 understanding the details of the behavior of the path, internal TCP 271 algorithms and the application. In addition, there is a new tuning 272 table with per-connection writable controls to work around a number 273 of common problems. Note that due to the table restructuring, most 274 of the object names listed below have changed. 276 Restructured the Listen Table (tcpEStatsListenerTable) to better 277 instrument various SYN flood defenses. 279 Removed minimal receiver window objects, and replaced them by the 280 count of the number of transitions to zero window from non-zero 281 window. 283 Replaced tcpEStatsPathIpTos by tcpEStatsPathIpTosOut and added 284 tcpEStatsPathIpTosIn. 286 Updated the descriptions of tcpEStatsDataSndNxt, tcpEStatsDataSndMax, 287 tcpEStatsDataThruOctetsAcked, tcpEStatsDataHCThruBytesAcked, 288 tcpEStatsDataThruBytesReceived, tcpEStatsDataHCThruBytesReceived, 289 consistently use RFC793 variables (SND.NXT, etc) or refer to other 290 TCP-ESTATS-MIB objects. 292 Changed tcpEStatsSynOptsMSSSent and tcpEStatsSynOptsMSSRcvd from 293 Gauge32 to Unsigned32 295 Updated descriptions of tcpEStatsConnectLocalAddress and 296 tcpEStatsConnectRemAddress to new conventions for InetAddress 298 Changes since draft-ietf-tsvwg-tcp-mib-extension-04.txt (27-Oct-2003) 299 Updated ID boiler plate to RFC3668, ID-Guidelines and fixed some 300 formatting glitches 302 Added a Table of Contents 304 Updated the description of tcpEStatsConnectionState to indicate that 305 the listen state included only for document parallelism and should 306 not be used. 308 Explained why it is useful for tcpEStatsConnectIdTable and others to 309 remain for 30 seconds after a connection closes (so you retrieve the 310 total statistics for the entire connection). 312 Added comment about not supporting writing DeleteTcb into the TCP 313 State. 315 Explained that SndNxt is not a counter because it is non-monotonic. 317 Clarified StartTime to be row creation 319 Clarified row creation to be at the first SYN unless techniques to 320 defend against SYN floods are in effect, then at connection 321 establishment. 323 Added tcpEStatsControlNotify to control the generation of 324 notifications. 326 Changed sequence numbers from ZeroBasedCounter32 to Counter32. 328 Changes since draft-ietf-tsvwg-tcp-mib-extension-03.txt (2-Mar-2003) 330 Replaced "queued" with "buffered by TCP" 332 Changed all counters in the TCP connection tables to be ZeroBased 334 Remove tcpEStatsHCInSegs, tcpEStatsHCOutSegs, which appear in as 335 tcpHCInSegs and tcpHCOutSegs in draft-ietf-ipv6-rfc2012-update-03.txt 336 and later drafts. 338 Added changes section. 340 2. The Internet-Standard Management Framework 342 For a detailed overview of the documents that describe the current 343 Internet-Standard Management Framework, please refer to section 7 of 344 RFC 3410 [RFC3410]. 346 Managed objects are accessed via a virtual information store, termed 347 the Management Information Base or MIB. MIB objects are generally 348 accessed through the Simple Network Management Protocol (SNMP). 349 Objects in the MIB are defined using the mechanisms defined in the 350 Structure of Management Information (SMI). This memo specifies a MIB 351 module that is compliant to the SMIv2, which is described in STD 58, 352 RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 353 [RFC2580]. 355 3. Overview 357 The TCP-ESTATS-MIB defined in this memo consists of two groups of 358 scalars, seven tables and two notifications: 360 * The first group of scalars contain statistics of the TCP protocol 361 engine not covered in RFC 4022. This group consists of the single 362 scalar tcpEStatsListenerTableLastChange which provides management 363 stations with an easier mechanism to validate their listener 364 caches. 366 * The second group of scalars consist of knobs to enable and disable 367 information collection by the tables containing connection-related 368 statistics/information. For example, the tcpEStatsControlPath 369 object controls the activation of the tcpEStatsPathTable. The 370 tcpEStatsConnTableLatency object determines how long connection 371 table rows are retained after a TCP connection transitions into the 372 closed state. 374 * The tcpEStatsListenerTable augments tcpListenerTable in TCP-MIB 375 [RFC4022] to provided additional information on the active TCP 376 listeners on a device. It supports objects to monitor and diagnose 377 SYN-flood denial-of-service attacks as described below. 379 * The tcpEStatsConnectIdTable augments the tcpConnectionTable in TCP- 380 MIB [RFC4022] to provide a mapping between connection 4-tuples 381 (which index tcpConnectionTable) and an integer connection index, 382 tcpEStatsConnectIndex. The connection index is used to index into 383 the five remaining tables in this MIB module, and is designed to 384 facilitate rapid polling of multiple objects associated with one 385 TCP connection. 387 * The tcpEStatsPerfTable contains objects that are useful for 388 measuring TCP performance and first check problem diagnosis. 390 * The tcpEStatsPathTable contains objects that can be used to infer 391 detailed behavior of the Internet path, such as the extent that 392 there are segment losses or reordering, etc. 394 * The tcpEStatsStackTable contains objects that are most useful for 395 determining how well the TCP control algorithms are coping with 396 this particular path. 398 * The tcpEStatsAppTable provides objects that are useful for 399 determining if the application using TCP is limiting TCP 400 performance. 402 * The tcpEStatsTuneTable provides per connection controls that can be 403 used to work around a number of common problems that plague TCP 404 over some paths. 406 * The two notifications defined in this MIB module are 407 tcpEStatsEstablishNotification, indicating that a new connection 408 has been accepted (or established, see below), and 409 tcpEStatsCloseNotification, indicating that an existing connection 410 has recently closed. 412 3.1. MIB Initialization and Persistence 414 The TCP protocol itself is specifically designed not to preserve any 415 state whatsoever across system reboots, and enforces this by 416 requiring randomized Initial Sequence numbers and ephemeral ports 417 under any conditions where segments from old connections might 418 corrupt new connections following a reboot. 420 All of the objects in the MIB MUST have the same persistence 421 properties as the underlying TCP implementation. On a reboot, all 422 zero based counters MUST be cleared, all per connection table rows 423 MUST be deleted and all read-write objects MUST be restored to their 424 default values. It is assumed that all TCP implementation have some 425 initialization code (if nothing else to set IP addresses) that has 426 the opportunity to adjust tcpEStatsConnTableLatency and other read- 427 write scalars controlling the creation of the various tables, before 428 establishing the first TCP connection. Implementations MAY also 429 choose to make these control scalars persist across reboots. 431 The ZeroBasedCounter32 and ZeroBasedCounter64 objects in the the 432 listener and connection tables are initialized to zero when the table 433 row is created. 435 The tcpEStatsConnTableLatency object determines how long connection 436 table rows are retained after a TCP connection transitions into the 437 closed state, to permit reading final connection completion 438 statistics. In RFC4022 (TCP-MIB), the discussion of 439 tcpConnectionTable row latency (page 9) the words "soon after" are 440 understood to mean after tcpEStatsConnTableLatency, such that all 441 rows of all tables associated with one connection are retained at 442 least tcpEStatsConnTableLatency after connection close. This 443 clarification to RFC4022 only applies when TCP-ESTATS-MIB is 444 implemented. If TCP-ESTATS-MIB is not implemented, RFC4022 permits 445 an unspecified delay between connection close and row deletion. 447 3.2. Relationship to TCP standards 449 There are more than 70 RFCs and other documents that specify various 450 aspects of the Transmission Control Protocol (TCP) [roadmap]. While 451 most protocols are completely specified in one or two documents, this 452 has not proven to be feasible for TCP. TCP implements a reliable 453 end-to-end data transport service over a very weakly constrained IP 454 datagram service. The essential problem that TCP has to solve is 455 balancing the applications need for fast and reliable data transport 456 against the need to make fair, efficient and equitable use of network 457 resources, with only sparse information about the state of the 458 network or its capabilities. 460 TCP maintains this balance through the use of many estimators and 461 heuristics that regulate various aspects of the protocol. For 462 example RFC2988 describes how to calculate the retransmission timer, 463 RTO, from the the average and variance of the network round-trip-time 464 as estimated from the RTT sampled on some data segments. Although 465 these algorithms are standardized, they are a compromise which is 466 optimal for only common Internet environments. Other estimators 467 might yield better results (higher performance or more efficient use 468 of the network) in some environments, particularly under uncommon 469 conditions. 471 It is the consensus of the community that nearly all of the 472 estimators and heuristics used in TCP might be improved through 473 further research and development. For this reason nearly all of TCP 474 documents leave some latitude for future improvements, for example by 475 the use of "SHOULD" instead of "MUST" [RFC2119]. Even standard 476 algorithms that are required because they critically effect fairness 477 or the dynamic stability of Internet congestion control, include some 478 latitude for evolution. As a consequence there is considerable 479 diversity in the details of the TCP implementations actually in use 480 today. 482 The fact that the underlying algorithms are not uniform makes it 483 difficult to tightly specify a MIB. We could have chosen the point 484 of view that the MIB should publish precisely defined metrics of the 485 network path, even if they are different than the estimators in use 486 by TCP. This would make the MIB more useful as a measurement tool, 487 but less useful for understanding how any specific TCP implementation 488 is interacting with the network path and upper protocol layers. We 489 chose instead to have the MIB expose the estimators and important 490 states variables of the algorithms in use, without constraining the 491 TCP implementation. 493 As a consequence the MIB objects are defined in terms of fairly 494 abstract descriptions (e.g. Round-Trip-Time) but are intended to 495 expose the actual estimators or other state variables as they are 496 used in TCP implementations, possibly transformed (e.g. scaled or 497 otherwise adjusted) to match the spirit of the object descriptions in 498 this document. 500 This may mean that MIB objects may not be exactly comparable between 501 two different TCP implementations. A general management station can 502 only assume the the abstract descriptions, which are useful for 503 general assessment of how TCP is functioning. To a TCP implementer 504 with detailed knowledge about the TCP implementation on a specific 505 host, this MIB might be useful for debugging or evaluating the 506 algorithms in their implementation. 508 Under no conditions is this MIB intended to constrain TCP to use (or 509 exclude) any particular estimator, heuristic, algorithm or 510 implementation. 512 3.3. Diagnosing SYN-flood Denial-of-Service attacks 514 The tcpEStatsListenerTable is specifically designed to provide 515 information that is useful for diagnosing SYN-flood Denial-of-Service 516 attacks, where a server is overwhelmed by forged or otherwise 517 malicious connection attempts. There are several different 518 techniques that can be used to defend against SYN-flooding but none 519 are standardized [Edd06]. These different techniques all have the 520 same basic characteristics which are instrumentable with a common set 521 of objects even though the techniques differ greatly in the details. 523 All SYN-flood defenses avoid allocating significant resources (memory 524 or CPU) to incoming (passive open) connections until the connections 525 meet some liveness criteria (to defend against forged IP source 526 addresses) and the server has sufficient resources to process the 527 incoming request. Note that allocating resources is an 528 implementation specific event that may not correspond to a observable 529 protocol event (e.g. segments on the wire). There are two general 530 concepts that can be applied to all known SYN-flood defenses. There 531 is generally a well defined event when a connection is allocated full 532 resources, and a "backlog" - a queue of embryonic connections that 533 have been allocated only partial resources. 535 In many implementations incoming TCP connections are allocated 536 resources as a side effect of the POSIX [POSIX] accept() call. For 537 this reason we use the terminology "accepting a connection" to refer 538 to this event: committing sufficient network resources to process the 539 incoming request. Accepting a connection typically entails 540 allocating memory for the protocol control block [RFC793], the per 541 connection table rows described in this MIB and CPU resources, such 542 as process table entries or threads. 544 Note that it is not useful to accept connections before they are 545 ESTABLISHED, because this would create an easy opportunity for 546 Denial-of-Service attacks, using forged source IP addresses. 548 The backlog consists of connections that are in SYN-RCVD or 549 ESTABLISHED states, that have not been accepted. For purposes of 550 this MIB we assume that these connections have been allocated some 551 resources (e.g. an embryonic protocol control block) but not full 552 resources (e.g. do not yet have MIB table rows). 554 Note that some SYN-Flood defenses dispense with explicit SYN-RCVD 555 state by cryptographically encoding the state in the ISS of the SYN- 556 ACK (sometimes called a syn-cookie), and then using the sequence 557 number of the first ACK to reconstruct the SYN-RCVD state before 558 transitioning to the ESTABLISHED state. For these implementations 559 there is no explicit representation of the SYN-RCVD state and the 560 backlog only consists of connections that are ESTABLISHED and are 561 waiting to be ACCEPTED. 563 Furthermore, most SYN-flood defenses have some mechanism to throttle 564 connections that might otherwise overwhelm this endpoint. They 565 generally use some combination of discarding incoming SYNs and 566 discarding connections already in the backlog. This does not cause 567 all connections from legitimate clients to fail, as long as the 568 clients retransmit the SYN or first ACK as specified in RFC793. Most 569 diversity in SYN flood defenses arise from variations in these 570 algorithms to limit load, and therefore can not be instrumented with 571 a common standard MIB. 573 The Listen Table instruments all passively opened TCP connections in 574 terms of observable protocol events (e.g. sent and received segments) 575 and resource allocation events (entering the backlog and being 576 accepted). This approach eases generalization to SYN-flood 577 mechanisms that use alternate TCP state transition diagrams and 578 implicit mechanisms to encode some states. 580 4. TCP Extended Statistics MIB 582 TCP-ESTATS-MIB DEFINITIONS ::= BEGIN 583 IMPORTS 584 MODULE-IDENTITY, Counter32, Integer32, Unsigned32, 585 Gauge32, OBJECT-TYPE, mib-2, 586 NOTIFICATION-TYPE 587 FROM SNMPv2-SMI 588 MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP 589 FROM SNMPv2-CONF 590 ZeroBasedCounter32 591 FROM RMON2-MIB -- [RFC2021] 592 ZeroBasedCounter64 593 FROM HCNUM-TC -- [RFC2856] 594 TEXTUAL-CONVENTION, 595 DateAndTime, TruthValue, TimeStamp 596 FROM SNMPv2-TC -- [RFC2579] 597 tcpListenerEntry, tcpConnectionEntry 598 FROM TCP-MIB; -- [RFC4022] 600 tcpEStatsMIB MODULE-IDENTITY 601 LAST-UPDATED "200612072147Z" -- Dec 7, 2006 602 ORGANIZATION "IETF TSV Working Group" 603 CONTACT-INFO 604 "Matt Mathis 605 John Heffner 606 Web100 Project 607 Pittsburgh Supercomputing Center 608 4400 Fifth Ave 609 Pittsburgh, PA 15213 610 Email: mathis@psc.edu, jheffner@psc.edu 612 Rajiv Raghunarayan 613 Cisco Systems Inc. 614 San Jose, CA 95134 615 Phone: 408 853 9612 616 Email: raraghun@cisco.com 618 Jon Saperia 619 84 Kettell Plain Road 620 Stow, MA 01775 621 Phone: 617-201-2655 622 Email: saperia@jdscons.com " 623 DESCRIPTION 624 "Documentation of TCP Extended Performance Instrumentation 625 variables from the Web100 project. [Web100] 627 Copyright (C) The Internet Society (2006). This version 628 of this MIB module is a part of RFC xxx1; see the RFC 629 itself for full legal notices." 630 -- RFC Editor: replace xxx1 with actual RFC number & remove note 632 REVISION "200612072147Z" -- Dec 7, 2006 633 DESCRIPTION 634 "Initial version, published as RFC xxx1." 635 -- RFC Editor assigns RFC xxx1 636 ::= { mib-2 xxx2 } 637 -- RFC Editor: IANA assigns base OID xxx2 639 tcpEStatsNotifications OBJECT IDENTIFIER ::= { tcpEStatsMIB 0 } 640 tcpEStatsMIBObjects OBJECT IDENTIFIER ::= { tcpEStatsMIB 1 } 641 tcpEStatsConformance OBJECT IDENTIFIER ::= { tcpEStatsMIB 2 } 642 tcpEStats OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 1 } 643 tcpEStatsControl OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 2 } 644 tcpEStatsScalar OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 3 } 646 -- 647 -- Textual Conventions 648 -- 650 TcpEStatsNegotiated ::= TEXTUAL-CONVENTION 651 STATUS current 652 DESCRIPTION 653 "Indicates if some optional TCP feature was negotiated. 655 Enabled(1) indicates that the feature was successfully 656 negotiated on, which generally requires both host to agree 657 to use the feature. 659 selfDisabled(2) indicates that the local host refused the 660 feature because it is not implemented, configured off or 661 refused for some other reason, such as the lack of 662 resources. 664 peerDisabled(3) indicates that the local host was willing 665 to negotiate the feature, but the remote host did not 666 do so." 667 SYNTAX INTEGER { 668 enabled(1), 669 selfDisabled(2), 670 peerDisabled(3) 671 } 673 -- 674 -- TCP Extended statistics scalars 675 -- 677 tcpEStatsListenerTableLastChange OBJECT-TYPE 678 SYNTAX TimeStamp 679 MAX-ACCESS read-only 680 STATUS current 681 DESCRIPTION 682 "The value of sysUpTime at the time of the last 683 creation or deletion of an entry in the tcpListenerTable. 684 If the number of entries has been unchanged since the 685 last re-initialization of the local network management 686 subsystem, then this object contains a zero value." 687 ::= { tcpEStatsScalar 3 } 689 -- ================================================================ 690 -- 691 -- The tcpEStatsControl Group 692 -- 694 -- The scalar objects in this group are used to control the 695 -- activation and deactivation of the TCP Extended Statistics 696 -- tables and notifications in this module. 697 -- 699 tcpEStatsControlPath OBJECT-TYPE 700 SYNTAX TruthValue 701 MAX-ACCESS read-write 702 STATUS current 703 DESCRIPTION 704 "Controls the activation of the TCP Path Statistics 705 table. 707 A value 'true' indicates that the TCP Path Statistics 708 table is active, while 'false' indicates that the 709 table is inactive." 710 DEFVAL { false } 711 ::= { tcpEStatsControl 1 } 713 tcpEStatsControlStack OBJECT-TYPE 714 SYNTAX TruthValue 715 MAX-ACCESS read-write 716 STATUS current 717 DESCRIPTION 718 "Controls the activation of the TCP Stack Statistics 719 table. 721 A value 'true' indicates that the TCP Stack Statistics 722 table is active, while 'false' indicates that the 723 table is inactive." 724 DEFVAL { false } 725 ::= { tcpEStatsControl 2 } 727 tcpEStatsControlApp OBJECT-TYPE 728 SYNTAX TruthValue 729 MAX-ACCESS read-write 730 STATUS current 731 DESCRIPTION 732 "Controls the activation of the TCP Application 733 Statistics table. 735 A value 'true' indicates that the TCP Application 736 Statistics table is active, while 'false' indicates 737 that the table is inactive." 738 DEFVAL { false } 739 ::= { tcpEStatsControl 3 } 741 tcpEStatsControlTune OBJECT-TYPE 742 SYNTAX TruthValue 743 MAX-ACCESS read-write 744 STATUS current 745 DESCRIPTION 746 "Controls the activation of the TCP Tuning table. 748 A value 'true' indicates that the TCP Tuning 749 table is active, while 'false' indicates that the 750 table is inactive." 751 DEFVAL { false } 752 ::= { tcpEStatsControl 4 } 754 tcpEStatsControlNotify OBJECT-TYPE 755 SYNTAX TruthValue 756 MAX-ACCESS read-write 757 STATUS current 758 DESCRIPTION 759 "Controls the generation of all notifications defined in 760 this MIB. 762 A value 'true' indicates that the notifications 763 are active, while 'false' indicates that the 764 notifications are inactive." 765 DEFVAL { false } 766 ::= { tcpEStatsControl 5 } 768 tcpEStatsConnTableLatency OBJECT-TYPE 769 SYNTAX Integer32 770 UNITS "seconds" 771 MAX-ACCESS read-only 772 STATUS current 773 DESCRIPTION 774 "Specifies the number of seconds that the entity will 775 retain entries in the TCP connection tables, after the 776 connection first enters the closed state. The entity 777 SHOULD provide a configuration option to enable 778 customization of this value. A value of 0 779 results in entries being removed from the tables as soon as 780 the connection enters the closed state. The value of 781 this object pertains to the following tables: 782 tcpEStatsConnectIdTable 783 tcpEStatsPerfTable 784 tcpEStatsPathTable 785 tcpEStatsStackTable 786 tcpEStatsAppTable 787 tcpEStatsTuneTable" 788 DEFVAL { 0 } 789 ::= { tcpEStatsControl 6 } 791 -- ================================================================ 792 -- 793 -- Listener Table 794 -- 796 tcpEStatsListenerTable OBJECT-TYPE 797 SYNTAX SEQUENCE OF TcpEStatsListenerEntry 798 MAX-ACCESS not-accessible 799 STATUS current 800 DESCRIPTION 801 "This table contains information about TCP Listeners, 802 in addition to the information maintained by the 803 tcpListenerTable RFC4022." 804 ::= { tcpEStats 1 } 806 tcpEStatsListenerEntry OBJECT-TYPE 807 SYNTAX TcpEStatsListenerEntry 808 MAX-ACCESS not-accessible 809 STATUS current 810 DESCRIPTION 811 "Each entry in the table contains information about 812 a specific TCP Listener." 813 AUGMENTS { tcpListenerEntry } 814 ::= { tcpEStatsListenerTable 1 } 816 TcpEStatsListenerEntry ::= SEQUENCE { 817 tcpEStatsListenerStartTime TimeStamp, 818 tcpEStatsListenerSynRcvd ZeroBasedCounter32, 819 tcpEStatsListenerInitial ZeroBasedCounter32, 820 tcpEStatsListenerEstablished ZeroBasedCounter32, 821 tcpEStatsListenerAccepted ZeroBasedCounter32, 822 tcpEStatsListenerExceedBacklog ZeroBasedCounter32, 823 tcpEStatsListenerHCSynRcvd ZeroBasedCounter64, 824 tcpEStatsListenerHCInitial ZeroBasedCounter64, 825 tcpEStatsListenerHCEstablished ZeroBasedCounter64, 826 tcpEStatsListenerHCAccepted ZeroBasedCounter64, 827 tcpEStatsListenerHCExceedBacklog ZeroBasedCounter64, 828 tcpEStatsListenerCurConns Gauge32, 829 tcpEStatsListenerMaxBacklog Integer32, 830 tcpEStatsListenerCurBacklog Gauge32, 831 tcpEStatsListenerCurEstabBacklog Gauge32 832 } 834 tcpEStatsListenerStartTime OBJECT-TYPE 835 SYNTAX TimeStamp 836 MAX-ACCESS read-only 837 STATUS current 838 DESCRIPTION 839 "The value of sysUpTime at the time this listener was 840 established. If the current state was entered prior to 841 the last re-initialization of the local network management 842 subsystem, then this object contains a zero value." 843 ::= { tcpEStatsListenerEntry 1 } 845 tcpEStatsListenerSynRcvd OBJECT-TYPE 846 SYNTAX ZeroBasedCounter32 847 MAX-ACCESS read-only 848 STATUS current 849 DESCRIPTION 850 "The number of SYNs which have been received for this 851 listener. The total number of failed connections for 852 all reasons can be estimated to be tcpEStatsListenerSynRcvd 853 minus tcpEStatsListenerAccepted and 854 tcpEStatsListenerCurBacklog." 855 ::= { tcpEStatsListenerEntry 2 } 857 tcpEStatsListenerInitial OBJECT-TYPE 858 SYNTAX ZeroBasedCounter32 859 MAX-ACCESS read-only 860 STATUS current 861 DESCRIPTION 862 "The total number of connections for which the Listener 863 has allocated initial state and placed the 864 connection in the backlog. The may happen in the 865 SYN-RCVD or ESTABLISHED states, depending on the 866 implementation." 867 ::= { tcpEStatsListenerEntry 3 } 869 tcpEStatsListenerEstablished OBJECT-TYPE 870 SYNTAX ZeroBasedCounter32 871 MAX-ACCESS read-only 872 STATUS current 873 DESCRIPTION 874 "The number of connections which have been established to 875 this endpoint. E.g. The number of first ACKs which have 876 been received for this listener." 877 ::= { tcpEStatsListenerEntry 4 } 879 tcpEStatsListenerAccepted OBJECT-TYPE 880 SYNTAX ZeroBasedCounter32 881 MAX-ACCESS read-only 882 STATUS current 883 DESCRIPTION 884 "The total number of connections for which the Listener 885 has successfully issued an accept, removing the connection 886 from the backlog." 887 ::= { tcpEStatsListenerEntry 5 } 889 tcpEStatsListenerExceedBacklog OBJECT-TYPE 890 SYNTAX ZeroBasedCounter32 891 MAX-ACCESS read-only 892 STATUS current 893 DESCRIPTION 894 "The total number of connections dropped from the 895 backlog by this listener due to all reasons. This 896 includes all connections that are allocated initial 897 resources but are not accepted for some reason." 898 ::= { tcpEStatsListenerEntry 6 } 900 tcpEStatsListenerHCSynRcvd OBJECT-TYPE 901 SYNTAX ZeroBasedCounter64 902 MAX-ACCESS read-only 903 STATUS current 904 DESCRIPTION 905 "The number of SYNs which have been received for this 906 listener on systems that can process (or reject) more 907 than 1 million connections per second. See 908 tcpEStatsListenerSynRcvd." 909 ::= { tcpEStatsListenerEntry 7 } 911 tcpEStatsListenerHCInitial OBJECT-TYPE 912 SYNTAX ZeroBasedCounter64 913 MAX-ACCESS read-only 914 STATUS current 915 DESCRIPTION 916 "The total number of connections for which the Listener 917 has allocated initial state and placed the connection 918 in the backlog on systems that can process (or reject) 919 more than 1 million connections per second. See 920 tcpEStatsListenerInitial." 921 ::= { tcpEStatsListenerEntry 8 } 923 tcpEStatsListenerHCEstablished OBJECT-TYPE 924 SYNTAX ZeroBasedCounter64 925 MAX-ACCESS read-only 926 STATUS current 927 DESCRIPTION 928 "The number of connections which have been established to 929 this endpoint on systems that can process (or reject) more 930 than 1 million connections per second. See 931 tcpEStatsListenerEstablished." 932 ::= { tcpEStatsListenerEntry 9 } 934 tcpEStatsListenerHCAccepted OBJECT-TYPE 935 SYNTAX ZeroBasedCounter64 936 MAX-ACCESS read-only 937 STATUS current 938 DESCRIPTION 939 "The total number of connections for which the Listener 940 has successfully issued an accept, removing the connection 941 from the backlog on systems that can process (or reject) 942 more than 1 million connections per second. See 943 tcpEStatsListenerAccepted." 944 ::= { tcpEStatsListenerEntry 10 } 946 tcpEStatsListenerHCExceedBacklog OBJECT-TYPE 947 SYNTAX ZeroBasedCounter64 948 MAX-ACCESS read-only 949 STATUS current 950 DESCRIPTION 951 "The total number of connections dropped from the 952 backlog by this listener due to all reasons on 953 systems that can process (or reject) more than 954 1 million connections per second. See 955 tcpEStatsListenerHCExceedBacklog." 956 ::= { tcpEStatsListenerEntry 11 } 958 tcpEStatsListenerCurConns OBJECT-TYPE 959 SYNTAX Gauge32 960 MAX-ACCESS read-only 961 STATUS current 962 DESCRIPTION 963 "The current number of connections in the ESTABLISHED 964 state, which have also been accepted. It excludes 965 connections that have been established but not accepted 966 because they are still subject to being discarded to 967 shed load without explicit action by either endpoint." 968 ::= { tcpEStatsListenerEntry 12 } 970 tcpEStatsListenerMaxBacklog OBJECT-TYPE 971 SYNTAX Integer32 972 MAX-ACCESS read-only 973 STATUS current 974 DESCRIPTION 975 "The maximum number of connections allowed in 976 backlog at one time." 977 ::= { tcpEStatsListenerEntry 13 } 979 tcpEStatsListenerCurBacklog OBJECT-TYPE 980 SYNTAX Gauge32 981 MAX-ACCESS read-only 982 STATUS current 983 DESCRIPTION 984 "The current number of connections that are in backlog. 985 This gauge includes connections in ESTABLISHED or 986 SYN-RECEIVED states for which the Listener has not yet 987 issued an accept. 989 If this listener is using some technique to implicitly 990 represent the SYN-RECEIVED states, e.g. by 991 cryptographically encoding the state information in the 992 initial sequence number (ISS), it MAY elect to exclude 993 connections in the SYN-RECEIVED state from the backlog." 994 ::= { tcpEStatsListenerEntry 14 } 996 tcpEStatsListenerCurEstabBacklog OBJECT-TYPE 997 SYNTAX Gauge32 998 MAX-ACCESS read-only 999 STATUS current 1000 DESCRIPTION 1001 "The current number of connections in backlog that are 1002 in the ESTABLISHED state, but for which the Listener has 1003 not yet issued an accept." 1004 ::= { tcpEStatsListenerEntry 15 } 1006 -- ================================================================ 1007 -- 1008 -- TCP Connection ID Table 1009 -- 1011 tcpEStatsConnectIdTable OBJECT-TYPE 1012 SYNTAX SEQUENCE OF TcpEStatsConnectIdEntry 1013 MAX-ACCESS not-accessible 1014 STATUS current 1015 DESCRIPTION 1016 "This table maps information that uniquely identifies 1017 each active TCP connection to the connection ID used by 1018 other tables in this MIB Module. It is an extention of 1019 tcpConnectionTable in RFC4022. 1021 Entries are retained in this table for the number of 1022 seconds indicated by the tcpEStatsConnTableLatency 1023 object, after the TCP connection first enters the closed 1024 state." 1025 ::= { tcpEStats 2 } 1027 tcpEStatsConnectIdEntry OBJECT-TYPE 1028 SYNTAX TcpEStatsConnectIdEntry 1029 MAX-ACCESS not-accessible 1030 STATUS current 1031 DESCRIPTION 1032 "Each entry in this table maps a TCP connection 1033 4-tuple to a connection index." 1034 AUGMENTS { tcpConnectionEntry } 1035 ::= { tcpEStatsConnectIdTable 1 } 1037 TcpEStatsConnectIdEntry ::= SEQUENCE { 1038 tcpEStatsConnectIndex Unsigned32 1039 } 1041 tcpEStatsConnectIndex OBJECT-TYPE 1042 SYNTAX Unsigned32 1043 MAX-ACCESS read-only 1044 STATUS current 1045 DESCRIPTION 1046 "A unique integer value assigned to each TCP Connection 1047 entry. Assignment will begin at 1 and increase to the 1048 maximum value and then start again at 1 skipping in use 1049 values." 1050 ::= { tcpEStatsConnectIdEntry 1 } 1052 -- ================================================================ 1053 -- 1054 -- Basic TCP Performance Statistics 1055 -- 1057 tcpEStatsPerfTable OBJECT-TYPE 1058 SYNTAX SEQUENCE OF TcpEStatsPerfEntry 1059 MAX-ACCESS not-accessible 1060 STATUS current 1061 DESCRIPTION 1063 "This table contains objects that are useful for 1064 measuring TCP performance and first line problem 1065 diagnosis. Most objects in this table directly expose 1066 some TCP state variable or are easily implemented as 1067 simple functions (e.g. Maximum) of TCP state variables. 1069 Entries are retained in this table for the number of 1070 seconds indicated by the tcpEStatsConnTableLatency 1071 object, after the TCP connection first enters the closed 1072 state." 1073 ::= { tcpEStats 3 } 1075 tcpEStatsPerfEntry OBJECT-TYPE 1076 SYNTAX TcpEStatsPerfEntry 1077 MAX-ACCESS not-accessible 1078 STATUS current 1079 DESCRIPTION 1080 "Each entry in this table has information about the 1081 characteristics of each active and recently closed tcp 1082 connection." 1083 INDEX { tcpEStatsConnectIndex } 1084 ::= { tcpEStatsPerfTable 1 } 1086 TcpEStatsPerfEntry ::= SEQUENCE { 1088 tcpEStatsPerfSegsOut ZeroBasedCounter32, 1089 tcpEStatsPerfDataSegsOut ZeroBasedCounter32, 1090 tcpEStatsPerfDataOctetsOut ZeroBasedCounter32, 1091 tcpEStatsPerfHCDataOctetsOut ZeroBasedCounter64, 1092 tcpEStatsPerfSegsRetrans ZeroBasedCounter32, 1093 tcpEStatsPerfOctetsRetrans ZeroBasedCounter32, 1094 tcpEStatsPerfSegsIn ZeroBasedCounter32, 1095 tcpEStatsPerfDataSegsIn ZeroBasedCounter32, 1096 tcpEStatsPerfDataOctetsIn ZeroBasedCounter32, 1097 tcpEStatsPerfHCDataOctetsIn ZeroBasedCounter64, 1098 tcpEStatsPerfElapsedSecs ZeroBasedCounter32, 1099 tcpEStatsPerfElapsedMicroSecs ZeroBasedCounter32, 1100 tcpEStatsPerfStartTimeStamp DateAndTime, 1101 tcpEStatsPerfCurMSS Gauge32, 1102 tcpEStatsPerfPipeSize Gauge32, 1103 tcpEStatsPerfMaxPipeSize Gauge32, 1104 tcpEStatsPerfSmoothedRTT Gauge32, 1105 tcpEStatsPerfCurRTO Gauge32, 1106 tcpEStatsPerfCongSignals ZeroBasedCounter32, 1107 tcpEStatsPerfCurCwnd Gauge32, 1108 tcpEStatsPerfCurSsthresh Gauge32, 1109 tcpEStatsPerfTimeouts ZeroBasedCounter32, 1110 tcpEStatsPerfCurRwinSent Gauge32, 1111 tcpEStatsPerfMaxRwinSent Gauge32, 1112 tcpEStatsPerfZeroRwinSent Gauge32, 1113 tcpEStatsPerfCurRwinRcvd Gauge32, 1114 tcpEStatsPerfMaxRwinRcvd Gauge32, 1115 tcpEStatsPerfZeroRwinRcvd Gauge32, 1116 tcpEStatsPerfSndLimTransRwin ZeroBasedCounter32, 1117 tcpEStatsPerfSndLimTransCwnd ZeroBasedCounter32, 1118 tcpEStatsPerfSndLimTransSnd ZeroBasedCounter32, 1119 tcpEStatsPerfSndLimTimeRwin ZeroBasedCounter32, 1120 tcpEStatsPerfSndLimTimeCwnd ZeroBasedCounter32, 1121 tcpEStatsPerfSndLimTimeSnd ZeroBasedCounter32 1122 } 1124 -- 1125 -- The following objects provide statistics on aggregate 1126 -- segments and data sent on a connection. These provide a 1127 -- direct measure of the Internet capacity consumed by a 1128 -- connection. 1129 -- 1131 tcpEStatsPerfSegsOut OBJECT-TYPE 1132 SYNTAX ZeroBasedCounter32 1133 MAX-ACCESS read-only 1134 STATUS current 1135 DESCRIPTION 1136 "The total number of segments sent." 1137 ::= { tcpEStatsPerfEntry 1 } 1139 tcpEStatsPerfDataSegsOut OBJECT-TYPE 1140 SYNTAX ZeroBasedCounter32 1141 MAX-ACCESS read-only 1142 STATUS current 1143 DESCRIPTION 1144 "The number of segments sent containing a positive length 1145 data segment." 1146 ::= { tcpEStatsPerfEntry 2 } 1148 tcpEStatsPerfDataOctetsOut OBJECT-TYPE 1149 SYNTAX ZeroBasedCounter32 1150 UNITS "octets" 1151 MAX-ACCESS read-only 1152 STATUS current 1153 DESCRIPTION 1154 "The number of octets of data contained in transmitted 1155 segments, including retransmitted data. Note that this does 1156 not include TCP headers." 1157 ::= { tcpEStatsPerfEntry 3 } 1159 tcpEStatsPerfHCDataOctetsOut OBJECT-TYPE 1160 SYNTAX ZeroBasedCounter64 1161 UNITS "octets" 1162 MAX-ACCESS read-only 1163 STATUS current 1164 DESCRIPTION 1165 "The number of octets of data contained in transmitted 1166 segments, including retransmitted data, on systems that can 1167 transmit more than 10 million bits per second. Note that 1168 this does not include TCP headers." 1169 ::= { tcpEStatsPerfEntry 4 } 1171 tcpEStatsPerfSegsRetrans OBJECT-TYPE 1172 SYNTAX ZeroBasedCounter32 1173 MAX-ACCESS read-only 1174 STATUS current 1175 DESCRIPTION 1176 "The number of segments transmitted containing at least some 1177 retransmitted data." 1178 REFERENCE 1179 "RFC793, Transmission Control Protocol" 1180 ::= { tcpEStatsPerfEntry 5 } 1182 tcpEStatsPerfOctetsRetrans OBJECT-TYPE 1183 SYNTAX ZeroBasedCounter32 1184 UNITS "octets" 1185 MAX-ACCESS read-only 1186 STATUS current 1187 DESCRIPTION 1188 "The number of octets retransmitted." 1189 REFERENCE 1190 "RFC793, Transmission Control Protocol" 1191 ::= { tcpEStatsPerfEntry 6 } 1193 tcpEStatsPerfSegsIn OBJECT-TYPE 1194 SYNTAX ZeroBasedCounter32 1195 MAX-ACCESS read-only 1196 STATUS current 1197 DESCRIPTION 1198 "The total number of segments received." 1199 ::= { tcpEStatsPerfEntry 7 } 1201 tcpEStatsPerfDataSegsIn OBJECT-TYPE 1202 SYNTAX ZeroBasedCounter32 1203 MAX-ACCESS read-only 1204 STATUS current 1205 DESCRIPTION 1206 "The number of segments received containing a positive 1207 length data segment." 1208 ::= { tcpEStatsPerfEntry 8 } 1210 tcpEStatsPerfDataOctetsIn OBJECT-TYPE 1211 SYNTAX ZeroBasedCounter32 1212 UNITS "octets" 1213 MAX-ACCESS read-only 1214 STATUS current 1215 DESCRIPTION 1216 "The number of octets contained in received data segments, 1217 including retransmitted data. Note that this does not 1218 include TCP headers." 1219 ::= { tcpEStatsPerfEntry 9 } 1221 tcpEStatsPerfHCDataOctetsIn OBJECT-TYPE 1222 SYNTAX ZeroBasedCounter64 1223 UNITS "octets" 1224 MAX-ACCESS read-only 1225 STATUS current 1226 DESCRIPTION 1227 "The number of octets contained in received data segments, 1228 including retransmitted data, on systems that can receive 1229 more than 10 million bits per second. Note that this does 1230 not include TCP headers." 1231 ::= { tcpEStatsPerfEntry 10 } 1233 tcpEStatsPerfElapsedSecs OBJECT-TYPE 1234 SYNTAX ZeroBasedCounter32 1235 UNITS "seconds" 1236 MAX-ACCESS read-only 1237 STATUS current 1238 DESCRIPTION 1239 "The seconds part of the time elapsed between 1240 tcpEStatsPerfStartTimeStamp and the most recent protocol 1241 event (segment sent or received)." 1242 ::= { tcpEStatsPerfEntry 11 } 1244 tcpEStatsPerfElapsedMicroSecs OBJECT-TYPE 1245 SYNTAX ZeroBasedCounter32 1246 UNITS "microseconds" 1247 MAX-ACCESS read-only 1248 STATUS current 1249 DESCRIPTION 1250 "The micro-second part of time elapsed between 1251 tcpEStatsPerfStartTimeStamp to the most recent protocol 1252 event (segment sent or received). This may be updated in 1253 whatever time granularity is the system supports." 1254 ::= { tcpEStatsPerfEntry 12 } 1256 tcpEStatsPerfStartTimeStamp OBJECT-TYPE 1257 SYNTAX DateAndTime 1258 MAX-ACCESS read-only 1259 STATUS current 1260 DESCRIPTION 1261 "Time at which this row was created and all 1262 ZeroBasedCounters in the row were initialized to zero." 1263 ::= { tcpEStatsPerfEntry 13 } 1265 -- 1266 -- The following objects can be used to fit minimal 1267 -- performance models to the TCP data rate. 1268 -- 1270 tcpEStatsPerfCurMSS OBJECT-TYPE 1271 SYNTAX Gauge32 1272 UNITS "octets" 1273 MAX-ACCESS read-only 1274 STATUS current 1275 DESCRIPTION 1276 "The current maximum segment size (MSS), in octets." 1277 REFERENCE 1278 "RFC1122, Requirements for Internet Hosts - Communication 1279 Layers" 1280 ::= { tcpEStatsPerfEntry 14 } 1282 tcpEStatsPerfPipeSize OBJECT-TYPE 1283 SYNTAX Gauge32 1284 UNITS "octets" 1285 MAX-ACCESS read-only 1286 STATUS current 1287 DESCRIPTION 1288 "The TCP senders current estimate of the number of 1289 unacknowledged data octets in the network. 1291 While not in recovery (e.g. while the receiver is not 1292 reporting missing data to the sender) this is precisely the 1293 same as ``Flight size'' as defined in RFC2581, which can be 1294 computed as SND.NXT minus SND.UNA. [RFC793] 1296 During recovery the TCP sender has incomplete information 1297 about the state of the network (e.g. which segments are 1298 lost vs reordered, especially if the return path is also 1299 dropping TCP acknowledgments). Current TCP standards do not 1300 mandate any specific algorithm for estimating the number of 1301 unacknowledged data octets in the network. 1303 RFC3517 describes a conservative algorithm to use SACK 1304 information to estimate the number of unacknowledged data 1305 octets in the network. tcpEStatsPerfPipeSize object SHOULD 1306 be the the same as ``pipe'' as defined in in RFC3517 if it 1307 is implemented. (Note that while not in recovery the pipe 1308 algorithm yields the same values as flight size). 1310 If RFC3517 is not implemented, the data octets in flight 1311 SHOULD be estimated as SND.NXT minus SND.UNA adjusted by 1312 some measure of the data that has left the network and 1313 retransmitted data. For example, with Reno or NewReno style 1314 TCP, the number of duplicate acknowledgment is used to 1315 count the number of segments that have left the network. 1316 I.e.: PipeSize=SND.NXT-SND.UNA+(retransmits-dupacks)*CurMSS" 1317 REFERENCE 1318 "RFC793, RFC2581, RFC3517" 1319 ::= { tcpEStatsPerfEntry 15 } 1321 tcpEStatsPerfMaxPipeSize OBJECT-TYPE 1322 SYNTAX Gauge32 1323 UNITS "octets" 1324 MAX-ACCESS read-only 1325 STATUS current 1326 DESCRIPTION 1327 "The maximum value of tcpEStatsPerfPipeSize, for this 1328 connection." 1329 REFERENCE 1330 "RFC793, RFC2581, RFC3517" 1332 ::= { tcpEStatsPerfEntry 16 } 1334 tcpEStatsPerfSmoothedRTT OBJECT-TYPE 1335 SYNTAX Gauge32 1336 UNITS "milliseconds" 1337 MAX-ACCESS read-only 1338 STATUS current 1339 DESCRIPTION 1340 "The smoothed round trip time used in calculation of the 1341 RTO. See SRTT in [RFC2988]." 1342 REFERENCE 1343 "RFC2988, Computing TCP's Retransmission Timer" 1344 ::= { tcpEStatsPerfEntry 17 } 1346 tcpEStatsPerfCurRTO OBJECT-TYPE 1347 SYNTAX Gauge32 1348 UNITS "milliseconds" 1349 MAX-ACCESS read-only 1350 STATUS current 1351 DESCRIPTION 1352 "The current value of the retransmit timer RTO." 1353 REFERENCE 1354 "RFC2988, Computing TCP's Retransmission Timer" 1355 ::= { tcpEStatsPerfEntry 18 } 1357 tcpEStatsPerfCongSignals OBJECT-TYPE 1358 SYNTAX ZeroBasedCounter32 1359 MAX-ACCESS read-only 1360 STATUS current 1361 DESCRIPTION 1362 "The number of multiplicative downward congestion window 1363 adjustments due to all forms of congestion signals, 1364 including Fast Retransmit, ECN and timeouts. This object 1365 summarizes all events that invoke the MD portion of AIMD 1366 congestion control, and as such is the best indicator of 1367 how cwnd is being affected by congestion. 1369 Note that retransmission timeouts multiplicatively reduce 1370 the window implicitly by setting ssthresh, and SHOULD be 1371 included in tcpEStatsPerfCongSignals. In order to minimize 1372 spurious congestion indications due to out-of-order 1373 segments, tcpEStatsPerfCongSignals SHOULD be incremented in 1374 association with the Fast Retransmit algorithm." 1375 REFERENCE 1376 "RFC2581, TCP Congestion Control" 1377 ::= { tcpEStatsPerfEntry 19 } 1379 tcpEStatsPerfCurCwnd OBJECT-TYPE 1380 SYNTAX Gauge32 1381 UNITS "octets" 1382 MAX-ACCESS read-only 1383 STATUS current 1384 DESCRIPTION 1385 "The current congestion window, in octets." 1386 REFERENCE 1387 "RFC2581, TCP Congestion Control" 1388 ::= { tcpEStatsPerfEntry 20 } 1390 tcpEStatsPerfCurSsthresh OBJECT-TYPE 1391 SYNTAX Gauge32 1392 UNITS "octets" 1393 MAX-ACCESS read-only 1394 STATUS current 1395 DESCRIPTION 1396 "The current slow start threshold in octets." 1397 REFERENCE 1398 "RFC2581, TCP Congestion Control" 1399 ::= { tcpEStatsPerfEntry 21 } 1401 tcpEStatsPerfTimeouts OBJECT-TYPE 1402 SYNTAX ZeroBasedCounter32 1403 MAX-ACCESS read-only 1404 STATUS current 1405 DESCRIPTION 1406 "The number of times the retransmit timeout has expired when 1407 the RTO backoff multiplier is equal to one." 1408 REFERENCE 1409 "RFC2988, Computing TCP's Retransmission Timer" 1410 ::= { tcpEStatsPerfEntry 22 } 1412 -- 1413 -- The following objects instrument receiver window updates 1414 -- sent by the local receiver to the remote sender. These can 1415 -- be used to determine if the local receiver is exerting flow 1416 -- control back pressure on the remote sender. 1417 -- 1419 tcpEStatsPerfCurRwinSent OBJECT-TYPE 1420 SYNTAX Gauge32 1421 UNITS "octets" 1422 MAX-ACCESS read-only 1423 STATUS current 1424 DESCRIPTION 1425 "The most recent window advertisement sent, in octets." 1426 REFERENCE 1427 "RFC793, Transmission Control Protocol" 1429 ::= { tcpEStatsPerfEntry 23 } 1431 tcpEStatsPerfMaxRwinSent OBJECT-TYPE 1432 SYNTAX Gauge32 1433 UNITS "octets" 1434 MAX-ACCESS read-only 1435 STATUS current 1436 DESCRIPTION 1437 "The maximum window advertisement sent, in octets." 1438 REFERENCE 1439 "RFC793, Transmission Control Protocol" 1440 ::= { tcpEStatsPerfEntry 24 } 1442 tcpEStatsPerfZeroRwinSent OBJECT-TYPE 1443 SYNTAX Gauge32 1444 MAX-ACCESS read-only 1445 STATUS current 1446 DESCRIPTION 1447 "The number of acknowledgments sent announcing a zero 1448 receive window, when the previously announced window was 1449 not zero." 1450 REFERENCE 1451 "RFC793, Transmission Control Protocol" 1452 ::= { tcpEStatsPerfEntry 25 } 1454 -- 1455 -- The following objects instrument receiver window updates 1456 -- from the far end-system to determine if the remote receiver 1457 -- has sufficient buffer space or is exerting flow-control 1458 -- back pressure on the local sender. 1459 -- 1461 tcpEStatsPerfCurRwinRcvd OBJECT-TYPE 1462 SYNTAX Gauge32 1463 UNITS "octets" 1464 MAX-ACCESS read-only 1465 STATUS current 1466 DESCRIPTION 1467 "The most recent window advertisement received, in octets." 1468 REFERENCE 1469 "RFC793, Transmission Control Protocol" 1470 ::= { tcpEStatsPerfEntry 26 } 1472 tcpEStatsPerfMaxRwinRcvd OBJECT-TYPE 1473 SYNTAX Gauge32 1474 UNITS "octets" 1475 MAX-ACCESS read-only 1476 STATUS current 1477 DESCRIPTION 1478 "The maximum window advertisement received, in octets." 1479 REFERENCE 1480 "RFC793, Transmission Control Protocol" 1481 ::= { tcpEStatsPerfEntry 27 } 1483 tcpEStatsPerfZeroRwinRcvd OBJECT-TYPE 1484 SYNTAX Gauge32 1485 MAX-ACCESS read-only 1486 STATUS current 1487 DESCRIPTION 1488 "The number of acknowledgments received announcing a zero 1489 receive window, when the previously announced window was 1490 not zero." 1491 REFERENCE 1492 "RFC793, Transmission Control Protocol" 1493 ::= { tcpEStatsPerfEntry 28 } 1495 -- 1496 -- The following optional objects can be used to quickly 1497 -- identify which subsystems are limiting TCP performance. 1498 -- There are three parallel pairs of instruments that measure 1499 -- the extent to which TCP performance is limited by the 1500 -- announced receiver window (indicating a receiver 1501 -- bottleneck), the current congestion window or 1502 -- retransmission timeout (indicating a path bottleneck) and 1503 -- all others events (indicating a sender bottleneck). 1504 -- 1505 -- These instruments SHOULD be updated every time the TCP 1506 -- output routine stops sending data. The elapsed time since 1507 -- the previous stop is accumulated into the appropriate 1508 -- object as determined by the previous stop reason (e.g. stop 1509 -- state). The current stop reason determines which timer will 1510 -- be updated the next time TCP output stops. 1511 -- 1512 -- Since there is no explicit stop at the beginning of a 1513 -- timeout, it is necessary to retroactively reclassify the 1514 -- previous stop as 'Congestion Limited'. 1515 -- 1517 tcpEStatsPerfSndLimTransRwin OBJECT-TYPE 1518 SYNTAX ZeroBasedCounter32 1519 MAX-ACCESS read-only 1520 STATUS current 1521 DESCRIPTION 1522 "The number of transitions into the 'Receiver Limited' state 1523 from either the 'Congestion Limited' or 'Sender Limited' 1524 states. This state is entered whenever TCP transmission 1525 stops because the sender has filled the announced receiver 1526 window. I.e. when SND.NXT has advanced to SND.UNA + SND.WND 1527 - 1 as described in RFC 793." 1528 REFERENCE 1529 "RFC793, Transmission Control Protocol" 1530 ::= { tcpEStatsPerfEntry 31 } 1532 tcpEStatsPerfSndLimTransCwnd OBJECT-TYPE 1533 SYNTAX ZeroBasedCounter32 1534 MAX-ACCESS read-only 1535 STATUS current 1536 DESCRIPTION 1537 "The number of transitions into the 'Congestion Limited' 1538 state from either the 'Receiver Limited' or 'Sender 1539 Limited' states. This state is entered whenever TCP 1540 transmission stops because the sender has reached some 1541 limit defined by congestion control (e.g. cwnd) or other 1542 algorithms (retransmission timeouts) designed to control 1543 network traffic. See the definition of 'CONGESTION WINDOW' 1544 in RFC 2581." 1545 REFERENCE 1546 "RFC2581, TCP Congestion Control" 1547 ::= { tcpEStatsPerfEntry 32 } 1549 tcpEStatsPerfSndLimTransSnd OBJECT-TYPE 1550 SYNTAX ZeroBasedCounter32 1551 MAX-ACCESS read-only 1552 STATUS current 1553 DESCRIPTION 1554 "The number of transitions into the 'Sender Limited' state 1555 from either the 'Receiver Limited' or 'Congestion Limited' 1556 states. This state is entered whenever TCP transmission 1557 stops due to some sender limit such as running out of 1558 application data or other resources and the Karn algorithm. 1559 When TCP stops sending data for any reason which can not be 1560 classified as Receiver Limited or Congestion Limited it 1561 MUST be treated as Sender Limited." 1562 ::= { tcpEStatsPerfEntry 33 } 1564 tcpEStatsPerfSndLimTimeRwin OBJECT-TYPE 1565 SYNTAX ZeroBasedCounter32 1566 UNITS "milliseconds" 1567 MAX-ACCESS read-only 1568 STATUS current 1569 DESCRIPTION 1570 "The cumulative time spent in the 'Receiver Limited' state. 1571 See tcpEStatsPerfSndLimTransRwin." 1572 ::= { tcpEStatsPerfEntry 34 } 1574 tcpEStatsPerfSndLimTimeCwnd OBJECT-TYPE 1575 SYNTAX ZeroBasedCounter32 1576 UNITS "milliseconds" 1577 MAX-ACCESS read-only 1578 STATUS current 1579 DESCRIPTION 1580 "The cumulative time spent in the 'Congestion Limited' 1581 state. See tcpEStatsPerfSndLimTransCwnd. When there is a 1582 retransmission timeout, it SHOULD be counted in 1583 tcpEStatsPerfSndLimTimeCwnd (and not the cumulative time 1584 for some other state.)" 1585 ::= { tcpEStatsPerfEntry 35 } 1587 tcpEStatsPerfSndLimTimeSnd OBJECT-TYPE 1588 SYNTAX ZeroBasedCounter32 1589 UNITS "milliseconds" 1590 MAX-ACCESS read-only 1591 STATUS current 1592 DESCRIPTION 1593 "The cumulative time spent in the 'Sender Limited' state. 1594 See tcpEStatsPerfSndLimTransSnd." 1595 ::= { tcpEStatsPerfEntry 36 } 1597 -- ================================================================ 1598 -- 1599 -- Statistics for diagnosing path problems 1600 -- 1602 tcpEStatsPathTable OBJECT-TYPE 1603 SYNTAX SEQUENCE OF TcpEStatsPathEntry 1604 MAX-ACCESS not-accessible 1605 STATUS current 1606 DESCRIPTION 1607 "This table contains objects that can be used to infer 1608 detailed behavior of the Internet path, such as the 1609 extent that there is reordering, ECN bits and if 1610 RTT fluctuations are correlated to losses. 1612 Entries are retained in this table for the number of 1613 seconds indicated by the tcpEStatsConnTableLatency 1614 object, after the TCP connection first enters the closed 1615 state." 1616 ::= { tcpEStats 4 } 1618 tcpEStatsPathEntry OBJECT-TYPE 1619 SYNTAX TcpEStatsPathEntry 1620 MAX-ACCESS not-accessible 1621 STATUS current 1622 DESCRIPTION 1623 "Each entry in this table has information about the 1624 characteristics of each active and recently closed tcp 1625 connection." 1626 INDEX { tcpEStatsConnectIndex } 1627 ::= { tcpEStatsPathTable 1 } 1629 TcpEStatsPathEntry ::= SEQUENCE { 1631 tcpEStatsPathRetranThresh Gauge32, 1632 tcpEStatsPathNonRecovDAEpisodes Counter32, 1633 tcpEStatsPathSumOctetsReordered Counter32, 1634 tcpEStatsPathNonRecovDA ZeroBasedCounter32, 1635 tcpEStatsPathSampleRTT Gauge32, 1636 tcpEStatsPathRTTVar Gauge32, 1637 tcpEStatsPathMaxRTT Gauge32, 1638 tcpEStatsPathMinRTT Gauge32, 1639 tcpEStatsPathSumRTT ZeroBasedCounter32, 1640 tcpEStatsPathHCSumRTT ZeroBasedCounter64, 1641 tcpEStatsPathCountRTT ZeroBasedCounter32, 1642 tcpEStatsPathMaxRTO Gauge32, 1643 tcpEStatsPathMinRTO Gauge32, 1644 tcpEStatsPathIpTtl Integer32, 1645 tcpEStatsPathIpTosIn Integer32, 1646 tcpEStatsPathIpTosOut Integer32, 1647 tcpEStatsPathPreCongSumCwnd ZeroBasedCounter32, 1648 tcpEStatsPathPreCongSumRTT ZeroBasedCounter32, 1649 tcpEStatsPathPostCongSumRTT ZeroBasedCounter32, 1650 tcpEStatsPathPostCongCountRTT ZeroBasedCounter32, 1651 tcpEStatsPathECNsignals ZeroBasedCounter32, 1652 tcpEStatsPathQuenchRcvd ZeroBasedCounter32, 1653 tcpEStatsPathDupAckEpisodes ZeroBasedCounter32, 1654 tcpEStatsPathRcvRTT Gauge32, 1655 tcpEStatsPathDupAcksOut ZeroBasedCounter32, 1656 tcpEStatsPathCERcvd ZeroBasedCounter32, 1657 tcpEStatsPathECESent ZeroBasedCounter32, 1658 tcpEStatsPathECNNonceRcvd ZeroBasedCounter32 1659 } 1661 -- 1662 -- The following optional objects can be used to infer segment 1663 -- reordering on the path from the local sender to the remote 1664 -- receiver. 1665 -- 1667 tcpEStatsPathRetranThresh OBJECT-TYPE 1668 SYNTAX Gauge32 1669 MAX-ACCESS read-only 1670 STATUS current 1671 DESCRIPTION 1672 "The number of duplicate acknowledgments required to trigger 1673 Fast Retransmit. Note that although this is constant in 1674 traditional Reno TCP implementations, it is adaptive in 1675 many newer TCPs." 1676 REFERENCE 1677 "RFC2581, TCP Congestion Control" 1678 ::= { tcpEStatsPathEntry 1 } 1680 tcpEStatsPathNonRecovDAEpisodes OBJECT-TYPE 1681 SYNTAX Counter32 1682 MAX-ACCESS read-only 1683 STATUS current 1684 DESCRIPTION 1685 "The number of duplicate acknowledgment episodes that did 1686 not trigger a Fast Retransmit because ACK advanced prior to 1687 the number of duplicate acknowledgments reaching 1688 RetranThresh. 1690 In many implementations this is the number of times the 1691 'dupacks' counter is set to zero when it is non-zero but 1692 less than RetranThresh. 1694 Note that the change in tcpEStatsPathNonRecovDAEpisodes 1695 divided by the change in tcpEStatsPerfDataSegsOut is an 1696 estimate of the frequency of data reordering on the forward 1697 path over some interval." 1698 REFERENCE 1699 "RFC2581, TCP Congestion Control" 1700 ::= { tcpEStatsPathEntry 2 } 1702 tcpEStatsPathSumOctetsReordered OBJECT-TYPE 1703 SYNTAX Counter32 1704 UNITS "octets" 1705 MAX-ACCESS read-only 1706 STATUS current 1707 DESCRIPTION 1708 "The sum of the amounts SND.UNA advances on the 1709 acknowledgment which ends a dup-ack episode without a 1710 retransmission. 1712 Note the change in tcpEStatsPathSumOctetsReordered divided 1713 by the change in tcpEStatsPathNonRecovDAEpisodes is an 1714 estimates of the average reordering distance, over some 1715 interval." 1716 ::= { tcpEStatsPathEntry 3 } 1718 tcpEStatsPathNonRecovDA OBJECT-TYPE 1719 SYNTAX ZeroBasedCounter32 1720 MAX-ACCESS read-only 1721 STATUS current 1722 DESCRIPTION 1723 "Duplicate acks (or SACKS) that did not trigger a Fast 1724 Retransmit because ACK advanced prior to the number of 1725 duplicate acknowledgments reaching RetranThresh. 1727 In many implementations, this is the sum of the 'dupacks' 1728 counter, just before it is set to zero because ACK advanced 1729 without a Fast Retransmit. 1731 Note that the change in tcpEStatsPathNonRecovDA divided by 1732 the change in tcpEStatsPathNonRecovDAEpisodes is an 1733 estimate of the average reordering distance in segments 1734 over some interval." 1735 REFERENCE 1736 "RFC2581, TCP Congestion Control" 1737 ::= { tcpEStatsPathEntry 4 } 1739 -- 1740 -- The following optional objects instrument the round trip 1741 -- time estimator and the retransmission timeout timer. 1742 -- 1744 tcpEStatsPathSampleRTT OBJECT-TYPE 1745 SYNTAX Gauge32 1746 UNITS "milliseconds" 1747 MAX-ACCESS read-only 1748 STATUS current 1749 DESCRIPTION 1750 "The most recent raw round trip time measurement used in 1751 calculation of the RTO." 1752 REFERENCE 1753 "RFC2988, Computing TCP's Retransmission Timer" 1754 ::= { tcpEStatsPathEntry 11 } 1756 tcpEStatsPathRTTVar OBJECT-TYPE 1757 SYNTAX Gauge32 1758 UNITS "milliseconds" 1759 MAX-ACCESS read-only 1760 STATUS current 1761 DESCRIPTION 1762 "The round trip time variation used in calculation of the 1763 RTO. See RTTVAR in [RFC2988]." 1764 REFERENCE 1765 "RFC2988, Computing TCP's Retransmission Timer" 1767 ::= { tcpEStatsPathEntry 12 } 1769 tcpEStatsPathMaxRTT OBJECT-TYPE 1770 SYNTAX Gauge32 1771 UNITS "milliseconds" 1772 MAX-ACCESS read-only 1773 STATUS current 1774 DESCRIPTION 1775 "The maximum sampled round trip time." 1776 REFERENCE 1777 "RFC2988, Computing TCP's Retransmission Timer" 1778 ::= { tcpEStatsPathEntry 13 } 1780 tcpEStatsPathMinRTT OBJECT-TYPE 1781 SYNTAX Gauge32 1782 UNITS "milliseconds" 1783 MAX-ACCESS read-only 1784 STATUS current 1785 DESCRIPTION 1786 "The minimum sampled round trip time." 1787 REFERENCE 1788 "RFC2988, Computing TCP's Retransmission Timer" 1789 ::= { tcpEStatsPathEntry 14 } 1791 tcpEStatsPathSumRTT OBJECT-TYPE 1792 SYNTAX ZeroBasedCounter32 1793 UNITS "milliseconds" 1794 MAX-ACCESS read-only 1795 STATUS current 1796 DESCRIPTION 1797 "The sum of all sampled round trip times. 1799 Note that the change in tcpEStatsPathSumRTT divided by the 1800 change in tcpEStatsPathCountRTT is the mean RTT, uniformly 1801 averaged over an enter interval." 1802 REFERENCE 1803 "RFC2988, Computing TCP's Retransmission Timer" 1804 ::= { tcpEStatsPathEntry 15 } 1806 tcpEStatsPathHCSumRTT OBJECT-TYPE 1807 SYNTAX ZeroBasedCounter64 1808 UNITS "milliseconds" 1809 MAX-ACCESS read-only 1810 STATUS current 1811 DESCRIPTION 1812 "The sum of all sampled round trip times, on all systems 1813 that implement multiple concurrent RTT measurements. 1815 Note that the change in tcpEStatsPathHCSumRTT divided by 1816 the change in tcpEStatsPathCountRTT is the mean RTT, 1817 uniformly averaged over an enter interval." 1818 REFERENCE 1819 "RFC2988, Computing TCP's Retransmission Timer" 1820 ::= { tcpEStatsPathEntry 16 } 1822 tcpEStatsPathCountRTT OBJECT-TYPE 1823 SYNTAX ZeroBasedCounter32 1824 MAX-ACCESS read-only 1825 STATUS current 1826 DESCRIPTION 1827 "The number of round trip time samples included in 1828 tcpEStatsPathSumRTT and tcpEStatsPathHCSumRTT." 1829 REFERENCE 1830 "RFC2988, Computing TCP's Retransmission Timer" 1831 ::= { tcpEStatsPathEntry 17 } 1833 tcpEStatsPathMaxRTO OBJECT-TYPE 1834 SYNTAX Gauge32 1835 UNITS "milliseconds" 1836 MAX-ACCESS read-only 1837 STATUS current 1838 DESCRIPTION 1839 "The maximum value of the retransmit timer RTO." 1840 REFERENCE 1841 "RFC2988, Computing TCP's Retransmission Timer" 1842 ::= { tcpEStatsPathEntry 18 } 1844 tcpEStatsPathMinRTO OBJECT-TYPE 1845 SYNTAX Gauge32 1846 UNITS "milliseconds" 1847 MAX-ACCESS read-only 1848 STATUS current 1849 DESCRIPTION 1850 "The minimum value of the retransmit timer RTO." 1851 REFERENCE 1852 "RFC2988, Computing TCP's Retransmission Timer" 1853 ::= { tcpEStatsPathEntry 19 } 1855 -- 1856 -- The following optional objects provide information about 1857 -- how TCP is using the IP layer. 1858 -- 1860 tcpEStatsPathIpTtl OBJECT-TYPE 1861 SYNTAX Integer32 1862 MAX-ACCESS read-only 1863 STATUS current 1864 DESCRIPTION 1865 "The value of the TTL field carried in the most recently 1866 received IP header. This is sometimes useful to detect 1867 changing or unstable routes." 1868 REFERENCE 1869 "RFC791, Internet Protocol" 1870 ::= { tcpEStatsPathEntry 20 } 1872 tcpEStatsPathIpTosIn OBJECT-TYPE 1873 SYNTAX Integer32 1874 MAX-ACCESS read-only 1875 STATUS current 1876 DESCRIPTION 1877 "The value of the IPv4 Type Of Service octet, or the IPv6 1878 traffic class octet, carried in the most recently received 1879 IP header. 1881 This is useful to diagnose interactions between TCP and any 1882 IP layer packet scheduling and delivery policy, which might 1883 be in effect to implement Diffserv." 1884 REFERENCE 1885 "RFC3260, New Terminology and Clarifications for Diffserv" 1886 ::= { tcpEStatsPathEntry 21 } 1888 tcpEStatsPathIpTosOut OBJECT-TYPE 1889 SYNTAX Integer32 1890 MAX-ACCESS read-only 1891 STATUS current 1892 DESCRIPTION 1893 "The value of the IPv4 Type Of Service octet, or the IPv6 1894 traffic class octet, carried in the most recently 1895 transmitted IP header. 1897 This is useful to diagnose interactions between TCP and any 1898 IP layer packet scheduling and delivery policy, which might 1899 be in effect to implement Diffserv." 1900 REFERENCE 1901 "RFC3260, New Terminology and Clarifications for Diffserv" 1902 ::= { tcpEStatsPathEntry 22 } 1904 -- 1905 -- The following optional objects characterize the congestion 1906 -- feedback signals by collecting statistics on how the 1907 -- congestion events are correlated to losses, changes in RTT 1908 -- and other protocol events. 1909 -- 1910 tcpEStatsPathPreCongSumCwnd OBJECT-TYPE 1911 SYNTAX ZeroBasedCounter32 1912 UNITS "octets" 1913 MAX-ACCESS read-only 1914 STATUS current 1915 DESCRIPTION 1916 "The sum of the values of the congestion window, in octets, 1917 captured each time a congestion signal is received. This 1918 MUST be updated each time tcpEStatsPerfCongSignals is 1919 incremented, such that the change in 1920 tcpEStatsPathPreCongSumCwnd divided by the change in 1921 tcpEStatsPerfCongSignals is the average window (over some 1922 interval) just prior to a congestion signal." 1923 ::= { tcpEStatsPathEntry 23 } 1925 tcpEStatsPathPreCongSumRTT OBJECT-TYPE 1926 SYNTAX ZeroBasedCounter32 1927 UNITS "milliseconds" 1928 MAX-ACCESS read-only 1929 STATUS current 1930 DESCRIPTION 1931 "Sum of the last sample of the RTT (tcpEStatsPathSampleRTT) 1932 prior to received congestion signals. This MUST be updated 1933 each time tcpEStatsPerfCongSignals is incremented, such 1934 that the change in tcpEStatsPathPreCongSumRTT divided by 1935 the change in tcpEStatsPerfCongSignals is the average RTT 1936 (over some interval) just prior to a congestion signal." 1937 ::= { tcpEStatsPathEntry 24 } 1939 tcpEStatsPathPostCongSumRTT OBJECT-TYPE 1940 SYNTAX ZeroBasedCounter32 1941 UNITS "octets" 1942 MAX-ACCESS read-only 1943 STATUS current 1944 DESCRIPTION 1945 "Sum of the first sample of the RTT (tcpEStatsPathSampleRTT) 1946 following each congestion signal. Such that the change in 1947 tcpEStatsPathPostCongSumRTT divided by the change in 1948 tcpEStatsPathPostCongCountRTT is the average RTT (over some 1949 interval) just after a congestion signal." 1950 ::= { tcpEStatsPathEntry 25 } 1952 tcpEStatsPathPostCongCountRTT OBJECT-TYPE 1953 SYNTAX ZeroBasedCounter32 1954 UNITS "milliseconds" 1955 MAX-ACCESS read-only 1956 STATUS current 1957 DESCRIPTION 1958 "The number of RTT samples included in 1959 tcpEStatsPathPostCongSumRTT such that the change in 1960 tcpEStatsPathPostCongSumRTT divided by the change in 1961 tcpEStatsPathPostCongCountRTT is the average RTT (over some 1962 interval) just after a congestion signal." 1963 ::= { tcpEStatsPathEntry 26 } 1965 -- 1966 -- The following optional objects can be used to detect other 1967 -- types of non-loss congestion signals such as source quench 1968 -- or ECN. 1969 -- 1971 tcpEStatsPathECNsignals OBJECT-TYPE 1972 SYNTAX ZeroBasedCounter32 1973 MAX-ACCESS read-only 1974 STATUS current 1975 DESCRIPTION 1976 "The number of congestion signals delivered to the TCP 1977 sender via explicit congestion notification (ECN). This is 1978 typically the number of segments bearing ECE bits but 1979 should also include segments failing the ECN nonce check or 1980 other explicit congestion signals." 1981 REFERENCE 1982 "RFC3168, The Addition of Explicit Congestion Notification 1983 (ECN) to IP" 1984 ::= { tcpEStatsPathEntry 27 } 1986 tcpEStatsPathQuenchRcvd OBJECT-TYPE 1987 SYNTAX ZeroBasedCounter32 1988 MAX-ACCESS read-only 1989 STATUS current 1990 DESCRIPTION 1991 "The number of ICMP quench messages that are treated as 1992 congestion signals." 1993 ::= { tcpEStatsPathEntry 28 } 1995 -- 1996 -- The following optional objects are receiver side 1997 -- instruments of the path from the sender to the receiver. In 1998 -- general the receiver has less information about the state 1999 -- of the path, because the receiver does not have a robust 2000 -- mechanism to infer the sender's actions. 2001 -- 2003 tcpEStatsPathDupAckEpisodes OBJECT-TYPE 2004 SYNTAX ZeroBasedCounter32 2005 MAX-ACCESS read-only 2006 STATUS current 2007 DESCRIPTION 2008 "The number of Duplicate Acks Sent when prior Ack was not 2009 duplicate. This is the number of times that a contiguous 2010 series of duplicate acknowledgments have been sent. 2012 This is an indication of the number of data segments lost 2013 or reordered on the path from the remote TCP endpoint to 2014 the near TCP endpoint." 2015 REFERENCE 2016 "RFC2581, TCP Congestion Control" 2017 ::= { tcpEStatsPathEntry 29 } 2019 tcpEStatsPathRcvRTT OBJECT-TYPE 2020 SYNTAX Gauge32 2021 MAX-ACCESS read-only 2022 STATUS current 2023 DESCRIPTION 2024 "The receiver's estimate of the Path RTT. 2026 Adaptive receiver window algorithms depend on the receiver 2027 to having a good estimate of the path RTT." 2028 ::= { tcpEStatsPathEntry 30 } 2030 tcpEStatsPathDupAcksOut OBJECT-TYPE 2031 SYNTAX ZeroBasedCounter32 2032 MAX-ACCESS read-only 2033 STATUS current 2034 DESCRIPTION 2035 "The number of duplicate ACKs sent. The ratio of the change 2036 in tcpEStatsPathDupAcksOut to the change in 2037 tcpEStatsPathDupAckEpisodes is an indication of reorder or 2038 recovery distance over some interval." 2039 REFERENCE 2040 "RFC2581, TCP Congestion Control" 2041 ::= { tcpEStatsPathEntry 31 } 2043 tcpEStatsPathCERcvd OBJECT-TYPE 2044 SYNTAX ZeroBasedCounter32 2045 MAX-ACCESS read-only 2046 STATUS current 2047 DESCRIPTION 2048 "The number of segments received with IP headers bearing 2049 Congestion Experienced (CE) markings." 2050 REFERENCE 2051 "RFC3168, The Addition of Explicit Congestion Notification 2052 (ECN) to IP" 2053 ::= { tcpEStatsPathEntry 32 } 2055 tcpEStatsPathECESent OBJECT-TYPE 2056 SYNTAX ZeroBasedCounter32 2057 MAX-ACCESS read-only 2058 STATUS current 2059 DESCRIPTION 2060 "Number of times the Echo Congestion Experienced (ECE) bit 2061 in the TCP header has been set (transitioned from 0 to 1), 2062 due to a Congestion Experienced (CE) marking on an IP 2063 header. Note that ECE can be set and reset only once per 2064 RTT, while CE can be set on many segments per RTT." 2065 REFERENCE 2066 "RFC3168, The Addition of Explicit Congestion Notification 2067 (ECN) to IP" 2068 ::= { tcpEStatsPathEntry 33 } 2070 tcpEStatsPathECNNonceRcvd OBJECT-TYPE 2071 SYNTAX ZeroBasedCounter32 2072 MAX-ACCESS read-only 2073 STATUS current 2074 DESCRIPTION 2075 "Number of ECN Nonces (NS bits) received." 2076 REFERENCE 2077 "RFC3540, Robust Explicit Congestion Notification (ECN) 2078 Signaling with Nonces" 2079 ::= { tcpEStatsPathEntry 34 } 2081 -- ================================================================ 2082 -- 2083 -- Statistics for diagnosing stack algorithms 2084 -- 2086 tcpEStatsStackTable OBJECT-TYPE 2087 SYNTAX SEQUENCE OF TcpEStatsStackEntry 2088 MAX-ACCESS not-accessible 2089 STATUS current 2090 DESCRIPTION 2091 "This table contains objects that are most useful for 2092 determining how well some of the TCP control 2093 algorithms are coping with this particular 2094 path. 2096 Entries are retained in this table for the number of 2097 seconds indicated by the tcpEStatsConnTableLatency 2098 object, after the TCP connection first enters the closed 2099 state." 2100 ::= { tcpEStats 5 } 2102 tcpEStatsStackEntry OBJECT-TYPE 2103 SYNTAX TcpEStatsStackEntry 2104 MAX-ACCESS not-accessible 2105 STATUS current 2106 DESCRIPTION 2107 "Each entry in this table has information about the 2108 characteristics of each active and recently closed tcp 2109 connection." 2110 INDEX { tcpEStatsConnectIndex } 2111 ::= { tcpEStatsStackTable 1 } 2113 TcpEStatsStackEntry ::= SEQUENCE { 2115 tcpEStatsStackActiveOpen TruthValue, 2116 tcpEStatsStackMSSSent Unsigned32, 2117 tcpEStatsStackMSSRcvd Unsigned32, 2118 tcpEStatsStackWinScaleSent Integer32, 2119 tcpEStatsStackWinScaleRcvd Integer32, 2120 tcpEStatsStackTimeStamps TcpEStatsNegotiated, 2121 tcpEStatsStackECN TcpEStatsNegotiated, 2122 tcpEStatsStackWillSendSACK TcpEStatsNegotiated, 2123 tcpEStatsStackWillUseSACK TcpEStatsNegotiated, 2124 tcpEStatsStackState INTEGER, 2125 tcpEStatsStackNagle TruthValue, 2126 tcpEStatsStackMaxSsCwnd Gauge32, 2127 tcpEStatsStackMaxCaCwnd Gauge32, 2128 tcpEStatsStackMaxSsthresh Gauge32, 2129 tcpEStatsStackMinSsthresh Gauge32, 2130 tcpEStatsStackInRecovery INTEGER, 2131 tcpEStatsStackDupAcksIn ZeroBasedCounter32, 2132 tcpEStatsStackSpuriousFrDetected ZeroBasedCounter32, 2133 tcpEStatsStackSpuriousRtoDetected ZeroBasedCounter32, 2134 tcpEStatsStackSoftErrors ZeroBasedCounter32, 2135 tcpEStatsStackSoftErrorReason INTEGER, 2136 tcpEStatsStackSlowStart ZeroBasedCounter32, 2137 tcpEStatsStackCongAvoid ZeroBasedCounter32, 2138 tcpEStatsStackOtherReductions ZeroBasedCounter32, 2139 tcpEStatsStackCongOverCount ZeroBasedCounter32, 2140 tcpEStatsStackFastRetran ZeroBasedCounter32, 2141 tcpEStatsStackSubsequentTimeouts ZeroBasedCounter32, 2142 tcpEStatsStackCurTimeoutCount Gauge32, 2143 tcpEStatsStackAbruptTimeouts ZeroBasedCounter32, 2144 tcpEStatsStackSACKsRcvd ZeroBasedCounter32, 2145 tcpEStatsStackSACKBlocksRcvd ZeroBasedCounter32, 2146 tcpEStatsStackSendStall ZeroBasedCounter32, 2147 tcpEStatsStackDSACKDups ZeroBasedCounter32, 2148 tcpEStatsStackMaxMSS Gauge32, 2149 tcpEStatsStackMinMSS Gauge32, 2150 tcpEStatsStackSndInitial Counter32, 2151 tcpEStatsStackRecInitial Counter32, 2152 tcpEStatsStackCurRetxQueue Gauge32, 2153 tcpEStatsStackMaxRetxQueue Gauge32, 2154 tcpEStatsStackCurReasmQueue Gauge32, 2155 tcpEStatsStackMaxReasmQueue Gauge32 2156 } 2158 -- 2159 -- The following objects reflect TCP options carried on the 2160 -- SYN or SYN-ACK. These options are used to provide 2161 -- additional protocol parameters or to enable various 2162 -- optional TCP features or algorithms. 2163 -- 2164 -- Except as noted, the TCP protocol does not permit these 2165 -- options to change after the SYN exchange. 2166 -- 2168 tcpEStatsStackActiveOpen OBJECT-TYPE 2169 SYNTAX TruthValue 2170 MAX-ACCESS read-only 2171 STATUS current 2172 DESCRIPTION 2173 "True(1) if the local connection traversed the SYN-SENT 2174 state, else false(2)." 2175 REFERENCE 2176 "RFC793, Transmission Control Protocol" 2177 ::= { tcpEStatsStackEntry 1 } 2179 tcpEStatsStackMSSSent OBJECT-TYPE 2180 SYNTAX Unsigned32 2181 MAX-ACCESS read-only 2182 STATUS current 2183 DESCRIPTION 2184 "The value sent in an MSS option, or zero if none." 2185 REFERENCE 2186 "RFC1122, Requirements for Internet Hosts - Communication 2187 Layers" 2188 ::= { tcpEStatsStackEntry 2 } 2190 tcpEStatsStackMSSRcvd OBJECT-TYPE 2191 SYNTAX Unsigned32 2192 MAX-ACCESS read-only 2193 STATUS current 2194 DESCRIPTION 2195 "The value received in an MSS option, or zero if none." 2196 REFERENCE 2197 "RFC1122, Requirements for Internet Hosts - Communication 2198 Layers" 2200 ::= { tcpEStatsStackEntry 3 } 2202 tcpEStatsStackWinScaleSent OBJECT-TYPE 2203 SYNTAX Integer32 (-1..14) 2204 MAX-ACCESS read-only 2205 STATUS current 2206 DESCRIPTION 2207 "The value of the transmitted window scale option if one was 2208 sent; otherwise, a value of -1. 2210 Note that if both tcpEStatsStackWinScaleSent and 2211 tcpEStatsStackWinScaleRcvd are not -1, then Rcv.Wind.Scale 2212 will be the same as this value and used to scale receiver 2213 window announcements from the local host to the remote 2214 host." 2215 REFERENCE 2216 "RFC1323, TCP Extensions for High Performance" 2217 ::= { tcpEStatsStackEntry 4 } 2219 tcpEStatsStackWinScaleRcvd OBJECT-TYPE 2220 SYNTAX Integer32 (-1..14) 2221 MAX-ACCESS read-only 2222 STATUS current 2223 DESCRIPTION 2224 "The value of the received window scale option if one was 2225 received; otherwise, a value of -1. 2227 Note that if both tcpEStatsStackWinScaleSent and 2228 tcpEStatsStackWinScaleRcvd are not -1, then Snd.Wind.Scale 2229 will be the same as this value and used to scale receiver 2230 window announcements from the remote host to the local 2231 host." 2232 REFERENCE 2233 "RFC1323, TCP Extensions for High Performance" 2234 ::= { tcpEStatsStackEntry 5 } 2236 tcpEStatsStackTimeStamps OBJECT-TYPE 2237 SYNTAX TcpEStatsNegotiated 2238 MAX-ACCESS read-only 2239 STATUS current 2240 DESCRIPTION 2241 "Enabled(1) if TCP timestamps have been negotiated on, 2242 selfDisabled(2) if they are disabled or not implemented on 2243 the local host, or peerDisabled(3) if not negotiated by the 2244 remote hosts." 2245 REFERENCE 2246 "RFC1323, TCP Extensions for High Performance" 2247 ::= { tcpEStatsStackEntry 6 } 2249 tcpEStatsStackECN OBJECT-TYPE 2250 SYNTAX TcpEStatsNegotiated 2251 MAX-ACCESS read-only 2252 STATUS current 2253 DESCRIPTION 2254 "Enabled(1) if Explicit Congestion Notification (ECN) has 2255 been negotiated on, selfDisabled(2) if it is disabled or 2256 not implemented on the local host, or peerDisabled(3) if 2257 not negotiated by the remote hosts." 2258 REFERENCE 2259 "RFC3168, The Addition of Explicit Congestion Notification 2260 (ECN) to IP" 2261 ::= { tcpEStatsStackEntry 7 } 2263 tcpEStatsStackWillSendSACK OBJECT-TYPE 2264 SYNTAX TcpEStatsNegotiated 2265 MAX-ACCESS read-only 2266 STATUS current 2267 DESCRIPTION 2268 "Enabled(1) if the local host will send SACK options 2269 selfDisabled(2) if SACK is disabled or not implemented on 2270 the local host, or peerDisabled(3) if the remote host did 2271 not send the SACK-permitted option. 2273 Note that SACK negotiation is not symmetrical. SACK can 2274 enabled on one side of the connection and not the other." 2275 REFERENCE 2276 "RFC2018, TCP Selective Acknowledgement Options" 2277 ::= { tcpEStatsStackEntry 8 } 2279 tcpEStatsStackWillUseSACK OBJECT-TYPE 2280 SYNTAX TcpEStatsNegotiated 2281 MAX-ACCESS read-only 2282 STATUS current 2283 DESCRIPTION 2284 "Enabled(1) if the local host will process SACK options 2285 selfDisabled(2) if SACK is disabled or not implemented on 2286 the local host, or peerDisabled(3) if the remote host sends 2287 duplicate ACKs without SACK options, or the local host 2288 otherwise decides not to process received SACK options. 2290 Unlike other TCP options, the remote data receiver can not 2291 explicitly indicate if it is able to generate SACK options. 2292 When sending data, the local host has to deduce if the 2293 remote receiver is sending SACK options. This object can 2294 transition from Enabled(1) to peerDisabled(3) after the SYN 2295 exchange. 2297 Note that SACK negotiation is not symmetrical. SACK can 2298 enabled on one side of the connection and not the other." 2299 REFERENCE 2300 "RFC2018, TCP Selective Acknowledgement Options" 2301 ::= { tcpEStatsStackEntry 9 } 2303 -- 2304 -- The following two objects reflect the current state of the 2305 -- connection. 2306 -- 2308 tcpEStatsStackState OBJECT-TYPE 2309 SYNTAX INTEGER { 2310 tcpESStateClosed(1), 2311 tcpESStateListen(2), 2312 tcpESStateSynSent(3), 2313 tcpESStateSynReceived(4), 2314 tcpESStateEstablished(5), 2315 tcpESStateFinWait1(6), 2316 tcpESStateFinWait2(7), 2317 tcpESStateCloseWait(8), 2318 tcpESStateLastAck(9), 2319 tcpESStateClosing(10), 2320 tcpESStateTimeWait(11), 2321 tcpESStateDeleteTcb(12) 2322 } 2323 MAX-ACCESS read-only 2324 STATUS current 2325 DESCRIPTION 2326 "An integer value representing the connection state from the 2327 TCP State Transition Diagram. 2329 The value listen(2) is included only for parallelism to the 2330 old tcpConnTable, and SHOULD NOT be used because the listen 2331 state in managed by the tcpListenerTable. 2333 The value DeleteTcb(12) is included only for parallelism to 2334 the tcpConnTable mechanism for terminating connections, 2335 although this table does not permit writing." 2336 REFERENCE 2337 "RFC793, Transmission Control Protocol" 2338 ::= { tcpEStatsStackEntry 10 } 2340 tcpEStatsStackNagle OBJECT-TYPE 2341 SYNTAX TruthValue 2342 MAX-ACCESS read-only 2343 STATUS current 2344 DESCRIPTION 2345 "True(1) if the Nagle algorithm is being used, else 2346 false(2)." 2347 REFERENCE 2348 "RFC1122, Requirements for Internet Hosts - Communication 2349 Layers" 2350 ::= { tcpEStatsStackEntry 11 } 2352 -- 2353 -- The following objects instrument the overall operation of 2354 -- TCP congestion control and data retransmissions. These 2355 -- instruments are sufficient to fit the actual performance to 2356 -- an updated macroscopic performance model [RFC2581] [Mat97] 2357 -- [Pad98]. 2358 -- 2360 tcpEStatsStackMaxSsCwnd OBJECT-TYPE 2361 SYNTAX Gauge32 2362 UNITS "octets" 2363 MAX-ACCESS read-only 2364 STATUS current 2365 DESCRIPTION 2366 "The maximum congestion window used during Slow Start, in 2367 octets." 2368 REFERENCE 2369 "RFC2581, TCP Congestion Control" 2370 ::= { tcpEStatsStackEntry 12 } 2372 tcpEStatsStackMaxCaCwnd OBJECT-TYPE 2373 SYNTAX Gauge32 2374 UNITS "octets" 2375 MAX-ACCESS read-only 2376 STATUS current 2377 DESCRIPTION 2378 "The maximum congestion window used during Congestion 2379 Avoidance, in octets." 2380 REFERENCE 2381 "RFC2581, TCP Congestion Control" 2382 ::= { tcpEStatsStackEntry 13 } 2384 tcpEStatsStackMaxSsthresh OBJECT-TYPE 2385 SYNTAX Gauge32 2386 UNITS "octets" 2387 MAX-ACCESS read-only 2388 STATUS current 2389 DESCRIPTION 2390 "The maximum slow start threshold, excluding the initial 2391 value." 2392 REFERENCE 2393 "RFC2581, TCP Congestion Control" 2394 ::= { tcpEStatsStackEntry 14 } 2396 tcpEStatsStackMinSsthresh OBJECT-TYPE 2397 SYNTAX Gauge32 2398 UNITS "octets" 2399 MAX-ACCESS read-only 2400 STATUS current 2401 DESCRIPTION 2402 "The minimum slow start threshold." 2403 REFERENCE 2404 "RFC2581, TCP Congestion Control" 2405 ::= { tcpEStatsStackEntry 15 } 2407 tcpEStatsStackInRecovery OBJECT-TYPE 2408 SYNTAX INTEGER { 2409 tcpESDataContiguous(1), 2410 tcpESDataUnordered(2), 2411 tcpESDataRecovery(3) 2412 } 2413 MAX-ACCESS read-only 2414 STATUS current 2415 DESCRIPTION 2416 "An integer value representing the state of the loss 2417 recovery for this connection. 2419 tcpESDataContiguous(1) indicates that the remote receiver 2420 is reporting contiguous data (no duplicate acknowledgments 2421 or SACK options) and that there are no unacknowledged 2422 retransmissions. 2424 tcpESDataUnordered(2) indicates that the remote receiver is 2425 reporting missing or out-of-order data (e.g. sending 2426 duplicate acknowledgments or SACK options) and that there 2427 are no unacknowledged retransmissions (because the missing 2428 data has not yet been retransmitted). 2430 tcpESDataRecovery(3) indicates that the sender has 2431 outstanding retransmitted data which is still 2432 unacknowledged." 2433 REFERENCE 2434 "RFC2581, TCP Congestion Control" 2435 ::= { tcpEStatsStackEntry 16 } 2437 tcpEStatsStackDupAcksIn OBJECT-TYPE 2438 SYNTAX ZeroBasedCounter32 2439 MAX-ACCESS read-only 2440 STATUS current 2441 DESCRIPTION 2442 "The number of duplicate ACKs received." 2443 REFERENCE 2444 "RFC2581, TCP Congestion Control" 2445 ::= { tcpEStatsStackEntry 17 } 2447 tcpEStatsStackSpuriousFrDetected OBJECT-TYPE 2448 SYNTAX ZeroBasedCounter32 2449 MAX-ACCESS read-only 2450 STATUS current 2451 DESCRIPTION 2452 "The number of acknowledgments reporting out-of-order 2453 segments after the Fast Retransmit algorithm has already 2454 retransmitted the segments. (For example as detected by the 2455 Eifel algorithm).'" 2456 REFERENCE 2457 "RFC3522, The Eifel Detection Algorithm for TCP" 2458 ::= { tcpEStatsStackEntry 18 } 2460 tcpEStatsStackSpuriousRtoDetected OBJECT-TYPE 2461 SYNTAX ZeroBasedCounter32 2462 MAX-ACCESS read-only 2463 STATUS current 2464 DESCRIPTION 2465 "The number of acknowledgments reporting segments that have 2466 already be retransmitted due to a Retransmission Timeout." 2467 ::= { tcpEStatsStackEntry 19 } 2469 -- 2470 -- The following optional objects instrument unusual protocol 2471 -- events that probably indicate implementation problems in 2472 -- the protocol or path. 2473 -- 2475 tcpEStatsStackSoftErrors OBJECT-TYPE 2476 SYNTAX ZeroBasedCounter32 2477 MAX-ACCESS read-only 2478 STATUS current 2479 DESCRIPTION 2480 "The number of segments that fail various consistency tests 2481 during TCP input processing. Soft errors might cause the 2482 segment to be discard but some do not. Some of these soft 2483 errors cause the generation of a TCP acknowledgment, others 2484 are silently discarded." 2485 REFERENCE 2486 "RFC793, Transmission Control Protocol" 2487 ::= { tcpEStatsStackEntry 21 } 2489 tcpEStatsStackSoftErrorReason OBJECT-TYPE 2490 SYNTAX INTEGER { 2491 belowDataWindow(1), 2492 aboveDataWindow(2), 2493 belowAckWindow(3), 2494 aboveAckWindow(4), 2495 belowTSWindow(5), 2496 aboveTSWindow(6), 2497 dataCheckSum(7), 2498 otherSoftError(8) 2499 } 2500 MAX-ACCESS read-only 2501 STATUS current 2502 DESCRIPTION 2503 "This object identifies which consistency test most recently 2504 failed during tcp input processing. This object SHOULD be 2505 set every time tcpEStatsStackSoftErrors is incremented. The 2506 codes are as follows: 2508 belowDataWindow(1) - All data in the segment is below 2509 SND.UNA. (Normal for keep-alives and zero window probes). 2511 aboveDataWindow(2) - Some data in the segment is above 2512 SND.WND. (Indicates an implementation bug or possible 2513 attack). 2515 belowAckWindow(3) - ACK below SND.UNA. (Indicates that the 2516 return path is reordering ACKs) 2518 aboveAckWindow(4) - An ACK for data that we have not sent. 2519 (Indicates an implementation bug or possible attack). 2521 belowTSWindow(5) - TSecr on the segment is older than the 2522 current TS.Recent (Normal for the rare case where PAWS 2523 detects data reordered by the network.) 2525 aboveTSWindow(6) - TSecr on the segment is newer than the 2526 current TS.Recent. (Indicates an implementation bug or 2527 possible attack). 2529 dataCheckSum(7) - Incorrect checksum. Note that this value 2530 is intrinsically fragile, because the header fields used to 2531 identify the connection may have been corrupted. 2533 otherSoftError(8) - All other soft errors not listed 2534 above.'" 2535 REFERENCE 2536 "RFC793, Transmission Control Protocol" 2538 ::= { tcpEStatsStackEntry 22 } 2540 -- 2541 -- The following optional objects expose the detailed 2542 -- operation of the congestion control algorithms. 2543 -- 2545 tcpEStatsStackSlowStart OBJECT-TYPE 2546 SYNTAX ZeroBasedCounter32 2547 MAX-ACCESS read-only 2548 STATUS current 2549 DESCRIPTION 2550 "The number of times the congestion window has been 2551 increased by the Slow Start algorithm." 2552 REFERENCE 2553 "RFC2581, TCP Congestion Control" 2554 ::= { tcpEStatsStackEntry 23 } 2556 tcpEStatsStackCongAvoid OBJECT-TYPE 2557 SYNTAX ZeroBasedCounter32 2558 MAX-ACCESS read-only 2559 STATUS current 2560 DESCRIPTION 2561 "The number of times the congestion window has been 2562 increased by the Congestion Avoidance algorithm." 2563 REFERENCE 2564 "RFC2581, TCP Congestion Control" 2565 ::= { tcpEStatsStackEntry 24 } 2567 tcpEStatsStackOtherReductions OBJECT-TYPE 2568 SYNTAX ZeroBasedCounter32 2569 MAX-ACCESS read-only 2570 STATUS current 2571 DESCRIPTION 2572 "The number of congestion window reductions made as a result 2573 of anything other than AIMD congestion control algorithms. 2574 Examples of non-multiplicative window reductions include 2575 Congestion Window Validation [RFC2861] and experimental 2576 algorithms such as Vegas [Bra94]. 2578 All window reductions MUST be counted as either 2579 tcpEStatsPerfCongSignals or tcpEStatsStackOtherReductions." 2580 REFERENCE 2581 "RFC2861, TCP Congestion Window Validation" 2582 ::= { tcpEStatsStackEntry 25 } 2584 tcpEStatsStackCongOverCount OBJECT-TYPE 2585 SYNTAX ZeroBasedCounter32 2586 MAX-ACCESS read-only 2587 STATUS current 2588 DESCRIPTION 2589 "The number of congestion events which were 'backed out' of 2590 the congestion control state machine such that the 2591 congestion window was restored to a prior value. This can 2592 happen due to the Eifel algorithm [RFC3522] or other 2593 algorithms which can be used to detect and cancel spurious 2594 invocations of the Fast Retransmit Algorithm. 2596 Although it may be feasible to undo the effects of spurious 2597 invocation of the Fast Retransmit congestion events can not 2598 easily be backed out of tcpEStatsPerfCongSignals and 2599 tcpEStatsPathPreCongSumCwnd, etc." 2600 REFERENCE 2601 "RFC3522, The Eifel Detection Algorithm for TCP" 2602 ::= { tcpEStatsStackEntry 26 } 2604 tcpEStatsStackFastRetran OBJECT-TYPE 2605 SYNTAX ZeroBasedCounter32 2606 MAX-ACCESS read-only 2607 STATUS current 2608 DESCRIPTION 2609 "The number of invocations of the Fast Retransmit algorithm." 2610 REFERENCE 2611 "RFC2581, TCP Congestion Control" 2612 ::= { tcpEStatsStackEntry 27 } 2614 tcpEStatsStackSubsequentTimeouts OBJECT-TYPE 2615 SYNTAX ZeroBasedCounter32 2616 MAX-ACCESS read-only 2617 STATUS current 2618 DESCRIPTION 2619 "The number of times the retransmit timeout has expired 2620 after the RTO has been doubled. See section 5.5 in RFC2988." 2621 REFERENCE 2622 "RFC2988, Computing TCP's Retransmission Timer" 2623 ::= { tcpEStatsStackEntry 28 } 2625 tcpEStatsStackCurTimeoutCount OBJECT-TYPE 2626 SYNTAX Gauge32 2627 MAX-ACCESS read-only 2628 STATUS current 2629 DESCRIPTION 2630 "The current number of times the retransmit timeout has 2631 expired without receiving an acknowledgment for new data. 2632 tcpEStatsStackCurTimeoutCount is reset to zero when new 2633 data is acknowledged and incremented for each invocation of 2634 section 5.5 in RFC2988." 2635 REFERENCE 2636 "RFC2988, Computing TCP's Retransmission Timer" 2637 ::= { tcpEStatsStackEntry 29 } 2639 tcpEStatsStackAbruptTimeouts OBJECT-TYPE 2640 SYNTAX ZeroBasedCounter32 2641 MAX-ACCESS read-only 2642 STATUS current 2643 DESCRIPTION 2644 "The number of timeouts that occurred without any 2645 immediately preceding duplicate acknowledgments or other 2646 indications of congestion. Abrupt Timeouts indicate that 2647 the path lost an entire window of data or acknowledgments. 2649 Timeouts that are preceded by duplicate acknowledgments or 2650 other congestion signals (e.g. ECN) are not counted as 2651 abrupt, and might have been avoided by a more sophisticated 2652 Fast Retransmit algorithm." 2653 REFERENCE 2654 "RFC2581, TCP Congestion Control" 2655 ::= { tcpEStatsStackEntry 30 } 2657 tcpEStatsStackSACKsRcvd OBJECT-TYPE 2658 SYNTAX ZeroBasedCounter32 2659 MAX-ACCESS read-only 2660 STATUS current 2661 DESCRIPTION 2662 "The number of SACK options received." 2663 REFERENCE 2664 "RFC2018, TCP Selective Acknowledgement Options" 2665 ::= { tcpEStatsStackEntry 31 } 2667 tcpEStatsStackSACKBlocksRcvd OBJECT-TYPE 2668 SYNTAX ZeroBasedCounter32 2669 MAX-ACCESS read-only 2670 STATUS current 2671 DESCRIPTION 2672 "The number of SACK blocks received (within SACK options)." 2673 REFERENCE 2674 "RFC2018, TCP Selective Acknowledgement Options" 2675 ::= { tcpEStatsStackEntry 32 } 2677 tcpEStatsStackSendStall OBJECT-TYPE 2678 SYNTAX ZeroBasedCounter32 2679 MAX-ACCESS read-only 2680 STATUS current 2681 DESCRIPTION 2682 "The number of interface stalls or other sender local 2683 resource limitations that are treated as congestion 2684 signals." 2685 ::= { tcpEStatsStackEntry 33 } 2687 tcpEStatsStackDSACKDups OBJECT-TYPE 2688 SYNTAX ZeroBasedCounter32 2689 MAX-ACCESS read-only 2690 STATUS current 2691 DESCRIPTION 2692 "The number of duplicate segments reported to the local host 2693 by D-SACK blocks." 2694 REFERENCE 2695 "RFC2883, An Extension to the Selective Acknowledgement 2696 (SACK) Option for TCP" 2697 ::= { tcpEStatsStackEntry 34 } 2699 -- 2700 -- The following optional objects instrument path MTU 2701 -- discovery. 2702 -- 2704 tcpEStatsStackMaxMSS OBJECT-TYPE 2705 SYNTAX Gauge32 2706 UNITS "octets" 2707 MAX-ACCESS read-only 2708 STATUS current 2709 DESCRIPTION 2710 "The maximum MSS, in octets." 2711 REFERENCE 2712 "RFC1191, Path MTU discovery" 2713 ::= { tcpEStatsStackEntry 35 } 2715 tcpEStatsStackMinMSS OBJECT-TYPE 2716 SYNTAX Gauge32 2717 UNITS "octets" 2718 MAX-ACCESS read-only 2719 STATUS current 2720 DESCRIPTION 2721 "The minimum MSS, in octets." 2722 REFERENCE 2723 "RFC1191, Path MTU discovery" 2724 ::= { tcpEStatsStackEntry 36 } 2726 -- 2727 -- The following optional initial value objects are useful for 2728 -- conformance testing instruments on application progress and 2729 -- consumed network resources. 2731 -- 2733 tcpEStatsStackSndInitial OBJECT-TYPE 2734 SYNTAX Counter32 2735 MAX-ACCESS read-only 2736 STATUS current 2737 DESCRIPTION 2738 "Initial send sequence number. Note that by definition 2739 tcpEStatsStackSndInitial never changes for a given 2740 connection." 2741 REFERENCE 2742 "RFC793, Transmission Control Protocol" 2743 ::= { tcpEStatsStackEntry 37 } 2745 tcpEStatsStackRecInitial OBJECT-TYPE 2746 SYNTAX Counter32 2747 MAX-ACCESS read-only 2748 STATUS current 2749 DESCRIPTION 2750 "Initial receive sequence number. Note that by definition 2751 tcpEStatsStackRecInitial never changes for a given 2752 connection." 2753 REFERENCE 2754 "RFC793, Transmission Control Protocol" 2755 ::= { tcpEStatsStackEntry 38 } 2757 -- 2758 -- The following optional objects instrument the senders 2759 -- buffer usage, including any buffering in the application 2760 -- interface to TCP and the retransmit queue. All 'buffer 2761 -- memory' instruments are assumed to include OS data 2762 -- structure overhead. 2763 -- 2765 tcpEStatsStackCurRetxQueue OBJECT-TYPE 2766 SYNTAX Gauge32 2767 UNITS "octets" 2768 MAX-ACCESS read-only 2769 STATUS current 2770 DESCRIPTION 2771 "The current number of octets of data occupying the 2772 retransmit queue." 2773 ::= { tcpEStatsStackEntry 39 } 2775 tcpEStatsStackMaxRetxQueue OBJECT-TYPE 2776 SYNTAX Gauge32 2777 UNITS "octets" 2778 MAX-ACCESS read-only 2779 STATUS current 2780 DESCRIPTION 2781 "The maximum number of octets of data occupying the 2782 retransmit queue." 2783 ::= { tcpEStatsStackEntry 40 } 2785 tcpEStatsStackCurReasmQueue OBJECT-TYPE 2786 SYNTAX Gauge32 2787 UNITS "octets" 2788 MAX-ACCESS read-only 2789 STATUS current 2790 DESCRIPTION 2791 "The current number of octets of sequence space spanned by 2792 the reassembly queue. This is generally the difference 2793 between rcv.nxt and the sequence number of the right most 2794 edge of the reassembly queue." 2795 ::= { tcpEStatsStackEntry 41 } 2797 tcpEStatsStackMaxReasmQueue OBJECT-TYPE 2798 SYNTAX Gauge32 2799 MAX-ACCESS read-only 2800 STATUS current 2801 DESCRIPTION 2802 "The maximum value of tcpEStatsStackCurReasmQueue" 2803 ::= { tcpEStatsStackEntry 42 } 2805 -- ================================================================ 2806 -- 2807 -- Statistics for diagnosing interactions between 2808 -- applications and TCP. 2809 -- 2811 tcpEStatsAppTable OBJECT-TYPE 2812 SYNTAX SEQUENCE OF TcpEStatsAppEntry 2813 MAX-ACCESS not-accessible 2814 STATUS current 2815 DESCRIPTION 2816 "This table contains objects that are useful for 2817 determining if the application using TCP is 2818 limiting TCP performance. 2820 Entries are retained in this table for the number of 2821 seconds indicated by the tcpEStatsConnTableLatency 2822 object, after the TCP connection first enters the closed 2823 state." 2824 ::= { tcpEStats 6 } 2826 tcpEStatsAppEntry OBJECT-TYPE 2827 SYNTAX TcpEStatsAppEntry 2828 MAX-ACCESS not-accessible 2829 STATUS current 2830 DESCRIPTION 2831 "Each entry in this table has information about the 2832 characteristics of each active and recently closed tcp 2833 connection." 2834 INDEX { tcpEStatsConnectIndex } 2835 ::= { tcpEStatsAppTable 1 } 2837 TcpEStatsAppEntry ::= SEQUENCE { 2839 tcpEStatsAppSndUna Counter32, 2840 tcpEStatsAppSndNxt Unsigned32, 2841 tcpEStatsAppSndMax Counter32, 2842 tcpEStatsAppThruOctetsAcked ZeroBasedCounter32, 2843 tcpEStatsAppHCThruOctetsAcked ZeroBasedCounter64, 2844 tcpEStatsAppRcvNxt Counter32, 2845 tcpEStatsAppThruOctetsReceived ZeroBasedCounter32, 2846 tcpEStatsAppHCThruOctetsReceived ZeroBasedCounter64, 2847 tcpEStatsAppCurAppWQueue Gauge32, 2848 tcpEStatsAppMaxAppWQueue Gauge32, 2849 tcpEStatsAppCurAppRQueue Gauge32, 2850 tcpEStatsAppMaxAppRQueue Gauge32 2851 } 2853 -- 2854 -- The following objects provide throughput statistics for the 2855 -- connection including sequence numbers and elapsed 2856 -- application data. These permit direct observation of the 2857 -- applications progress, in terms of elapsed data delivery 2858 -- and elapsed time. 2859 -- 2861 tcpEStatsAppSndUna OBJECT-TYPE 2862 SYNTAX Counter32 2863 MAX-ACCESS read-only 2864 STATUS current 2865 DESCRIPTION 2866 "The value of SND.UNA, the oldest unacknowledged sequence 2867 number. 2869 Note that SND.UNA is a TCP state variable that is congruent 2870 to Counter32 semantics." 2871 REFERENCE 2872 "RFC793, Transmission Control Protocol" 2873 ::= { tcpEStatsAppEntry 1 } 2875 tcpEStatsAppSndNxt OBJECT-TYPE 2876 SYNTAX Unsigned32 2877 MAX-ACCESS read-only 2878 STATUS current 2879 DESCRIPTION 2880 "The value of SND.NXT, the next sequence number to be sent. 2881 Note that tcpEStatsAppSndNxt is not monotonic (and thus not 2882 a counter) because TCP sometimes retransmits lost data by 2883 pulling tcpEStatsAppSndNxt back to the missing data." 2884 REFERENCE 2885 "RFC793, Transmission Control Protocol" 2886 ::= { tcpEStatsAppEntry 2 } 2888 tcpEStatsAppSndMax OBJECT-TYPE 2889 SYNTAX Counter32 2890 MAX-ACCESS read-only 2891 STATUS current 2892 DESCRIPTION 2893 "The farthest forward (right most or largest) SND.NXT value. 2894 Note that this will be equal to tcpEStatsAppSndNxt except 2895 when tcpEStatsAppSndNxt is pulled back during recovery." 2896 REFERENCE 2897 "RFC793, Transmission Control Protocol" 2898 ::= { tcpEStatsAppEntry 3 } 2900 tcpEStatsAppThruOctetsAcked OBJECT-TYPE 2901 SYNTAX ZeroBasedCounter32 2902 UNITS "octets" 2903 MAX-ACCESS read-only 2904 STATUS current 2905 DESCRIPTION 2906 "The number of octets for which cumulative acknowledgments 2907 have been received. Note that this will be the sum of 2908 changes to tcpEStatsAppSndUna." 2909 ::= { tcpEStatsAppEntry 4 } 2911 tcpEStatsAppHCThruOctetsAcked OBJECT-TYPE 2912 SYNTAX ZeroBasedCounter64 2913 UNITS "octets" 2914 MAX-ACCESS read-only 2915 STATUS current 2916 DESCRIPTION 2917 "The number of octets for which cumulative acknowledgments 2918 have been received, on systems that can receive more than 2919 10 million bits per second. Note that this will be the sum 2920 of changes in tcpEStatsAppSndUna." 2921 ::= { tcpEStatsAppEntry 5 } 2923 tcpEStatsAppRcvNxt OBJECT-TYPE 2924 SYNTAX Counter32 2925 MAX-ACCESS read-only 2926 STATUS current 2927 DESCRIPTION 2928 "The value of RCV.NXT. The next sequence number expected on 2929 an incoming segment, and the left or lower edge of the 2930 receive window. 2932 Note that RCV.NXT is a TCP state variable that is congruent 2933 to Counter32 semantics." 2934 REFERENCE 2935 "RFC793, Transmission Control Protocol" 2936 ::= { tcpEStatsAppEntry 6 } 2938 tcpEStatsAppThruOctetsReceived OBJECT-TYPE 2939 SYNTAX ZeroBasedCounter32 2940 UNITS "octets" 2941 MAX-ACCESS read-only 2942 STATUS current 2943 DESCRIPTION 2944 "The number of octets for which cumulative acknowledgments 2945 have been sent. Note that this will be the sum of changes 2946 to tcpEStatsAppRcvNxt." 2947 ::= { tcpEStatsAppEntry 7 } 2949 tcpEStatsAppHCThruOctetsReceived OBJECT-TYPE 2950 SYNTAX ZeroBasedCounter64 2951 UNITS "octets" 2952 MAX-ACCESS read-only 2953 STATUS current 2954 DESCRIPTION 2955 "The number of octets for which cumulative acknowledgments 2956 have been sent, on systems that can transmit more than 10 2957 million bits per second. Note that this will be the sum of 2958 changes in tcpEStatsAppRcvNxt." 2959 ::= { tcpEStatsAppEntry 8 } 2961 tcpEStatsAppCurAppWQueue OBJECT-TYPE 2962 SYNTAX Gauge32 2963 UNITS "octets" 2964 MAX-ACCESS read-only 2965 STATUS current 2966 DESCRIPTION 2967 "The current number of octets of application data buffered 2968 by TCP, pending first transmission, i.e. to the left of 2969 SND.NXT or SndMax. This data will generally be transmitted 2970 (and SND.NXT advanced to the left) as soon as there is 2971 available congestion window (cwnd) or receiver window 2972 (rwin). This is the amount of data readily available for 2973 transmission, without scheduling the application. TCP 2974 performance may suffer if there is insufficient queued 2975 write data." 2976 ::= { tcpEStatsAppEntry 11 } 2978 tcpEStatsAppMaxAppWQueue OBJECT-TYPE 2979 SYNTAX Gauge32 2980 UNITS "octets" 2981 MAX-ACCESS read-only 2982 STATUS current 2983 DESCRIPTION 2984 "The maximum number of octets of application data buffered 2985 by TCP, pending first transmission. This is the maximum 2986 value of tcpEStatsAppCurAppWQueue. This pair of objects can 2987 be used to determine if insufficient queued data is steady 2988 state (suggesting insufficient queue space) or transient 2989 (suggesting insufficient application performance or 2990 excessive CPU load or scheduler latency)." 2991 ::= { tcpEStatsAppEntry 12 } 2993 tcpEStatsAppCurAppRQueue OBJECT-TYPE 2994 SYNTAX Gauge32 2995 UNITS "octets" 2996 MAX-ACCESS read-only 2997 STATUS current 2998 DESCRIPTION 2999 "The current number of octets of application data that has 3000 been acknowledged by TCP but not yet delivered to the 3001 application." 3002 ::= { tcpEStatsAppEntry 13 } 3004 tcpEStatsAppMaxAppRQueue OBJECT-TYPE 3005 SYNTAX Gauge32 3006 UNITS "octets" 3007 MAX-ACCESS read-only 3008 STATUS current 3009 DESCRIPTION 3010 "The maximum number of octets of application data that has 3011 been acknowledged by TCP but not yet delivered to the 3012 application." 3013 ::= { tcpEStatsAppEntry 14 } 3015 -- ================================================================ 3016 -- 3017 -- Controls for Tuning TCP 3018 -- 3019 tcpEStatsTuneTable OBJECT-TYPE 3020 SYNTAX SEQUENCE OF TcpEStatsTuneEntry 3021 MAX-ACCESS not-accessible 3022 STATUS current 3023 DESCRIPTION 3024 "This table contains per connection controls that can 3025 be used to work around a number of common problems that 3026 plague TCP over some paths. All can be characterized as 3027 limiting the growth of the congestion window so as to 3028 prevent TCP from overwhelming some component in the 3029 path. 3031 Entries are retained in this table for the number of 3032 seconds indicated by the tcpEStatsConnTableLatency 3033 object, after the TCP connection first enters the closed 3034 state." 3035 ::= { tcpEStats 7 } 3037 tcpEStatsTuneEntry OBJECT-TYPE 3038 SYNTAX TcpEStatsTuneEntry 3039 MAX-ACCESS not-accessible 3040 STATUS current 3041 DESCRIPTION 3042 "Each entry in this table is a control that can be used to 3043 place limits on each active tcp connection." 3044 INDEX { tcpEStatsConnectIndex } 3045 ::= { tcpEStatsTuneTable 1 } 3047 TcpEStatsTuneEntry ::= SEQUENCE { 3049 tcpEStatsTuneLimCwnd Gauge32, 3050 tcpEStatsTuneLimSsthresh Gauge32, 3051 tcpEStatsTuneLimRwin Gauge32 3052 } 3054 tcpEStatsTuneLimCwnd OBJECT-TYPE 3055 SYNTAX Gauge32 3056 UNITS "octets" 3057 MAX-ACCESS read-write 3058 STATUS current 3059 DESCRIPTION 3060 "A control to set the maximum congestion window which may be 3061 used, in octets." 3062 REFERENCE 3063 "RFC2581, TCP Congestion Control" 3064 ::= { tcpEStatsTuneEntry 1 } 3066 tcpEStatsTuneLimSsthresh OBJECT-TYPE 3067 SYNTAX Gauge32 3068 UNITS "octets" 3069 MAX-ACCESS read-write 3070 STATUS current 3071 DESCRIPTION 3072 "A control to limit the maximum queue space (in octets) that 3073 this TCP connection is likely to occupy during slowstart. 3075 It can be implemented with the algorithm described in 3076 RFC3742 by setting the max_ssthresh parameter to twice 3077 tcpEStatsTuneLimSsthresh. 3079 This algorithm can be used to overcome some TCP performance 3080 problems over network paths that do not have sufficient 3081 buffering to withstand the bursts normally present during 3082 slowstart." 3083 REFERENCE 3084 "RFC3742, Limited Slow-Start for TCP with Large Congestion 3085 Windows" 3086 ::= { tcpEStatsTuneEntry 2 } 3088 tcpEStatsTuneLimRwin OBJECT-TYPE 3089 SYNTAX Gauge32 3090 UNITS "octets" 3091 MAX-ACCESS read-write 3092 STATUS current 3093 DESCRIPTION 3094 "A control to set the maximum window advertisement which may 3095 be sent, in octets." 3096 REFERENCE 3097 "RFC793, Transmission Control Protocol" 3098 ::= { tcpEStatsTuneEntry 3 } 3100 -- ================================================================ 3101 -- 3102 -- TCP Extended Statistics Notifications Group 3103 -- 3105 tcpEStatsEstablishNotification NOTIFICATION-TYPE 3106 OBJECTS { 3107 tcpEStatsConnectIndex 3108 } 3109 STATUS current 3110 DESCRIPTION 3111 "The indicated connection has been accepted 3112 (or alternatively entered the established state)." 3113 ::= { tcpEStatsNotifications 1 } 3115 tcpEStatsCloseNotification NOTIFICATION-TYPE 3116 OBJECTS { 3117 tcpEStatsConnectIndex 3118 } 3119 STATUS current 3120 DESCRIPTION 3121 "The indicated connection has left the 3122 established state" 3123 ::= { tcpEStatsNotifications 2 } 3125 -- ================================================================ 3126 -- 3127 -- Conformance Definitions 3128 -- 3130 tcpEStatsCompliances OBJECT IDENTIFIER 3131 ::= { tcpEStatsConformance 1 } 3132 tcpEStatsGroups OBJECT IDENTIFIER 3133 ::= { tcpEStatsConformance 2 } 3135 -- 3136 -- Compliance Statements 3137 -- 3139 tcpEStatsCompliance MODULE-COMPLIANCE 3140 STATUS current 3141 DESCRIPTION 3142 "Compliance statement for all systems that implement TCP 3143 extended statistics." 3144 MODULE -- this module 3145 MANDATORY-GROUPS { 3146 tcpEStatsListenerGroup, 3147 tcpEStatsConnectIdGroup, 3148 tcpEStatsPerfGroup, 3149 tcpEStatsPathGroup, 3150 tcpEStatsStackGroup, 3151 tcpEStatsAppGroup 3152 } 3153 GROUP tcpEStatsListenerHCGroup 3154 DESCRIPTION 3155 "This group is mandatory for all systems that can 3156 wrap the values of the 32-bit counters in 3157 tcpEStatsListenerGroup in less than one hour." 3159 GROUP tcpEStatsPerfOptionalGroup 3160 DESCRIPTION 3161 "This group is optional for all systems." 3163 GROUP tcpEStatsPerfHCGroup 3164 DESCRIPTION 3165 "This group is mandatory for systems that can 3166 wrap the values of the 32-bit counters in 3167 tcpEStatsPerfGroup in less than one hour. 3169 Note that any system that can attain 10 Mb/s 3170 can potentially wrap 32-Bit Octet counters in 3171 under one hour." 3173 GROUP tcpEStatsPathOptionalGroup 3174 DESCRIPTION 3175 "This group is optional for all systems." 3177 GROUP tcpEStatsPathHCGroup 3178 DESCRIPTION 3179 "This group is mandatory for systems that can 3180 wrap the values of the 32-bit counters in 3181 tcpEStatsPathGroup in less than one hour. 3183 Note that any system that can attain 10 Mb/s 3184 can potentially wrap 32-Bit Octet counters in 3185 under one hour." 3187 GROUP tcpEStatsStackOptionalGroup 3188 DESCRIPTION 3189 "This group is optional for all systems." 3191 GROUP tcpEStatsAppHCGroup 3192 DESCRIPTION 3193 "This group is mandatory for systems that can 3194 wrap the values of the 32-bit counters in 3195 tcpEStatsStackGroup in less than one hour. 3197 Note that any system that can attain 10 Mb/s 3198 can potentially wrap 32-Bit Octet counters in 3199 under one hour." 3201 GROUP tcpEStatsAppOptionalGroup 3202 DESCRIPTION 3203 "This group is optional for all systems." 3205 GROUP tcpEStatsTuneOptionalGroup 3206 DESCRIPTION 3207 "This group is optional for all systems." 3209 GROUP tcpEStatsNotificationsGroup 3210 DESCRIPTION 3211 "This group is optional for all systems." 3213 GROUP tcpEStatsNotificationsCtlGroup 3214 DESCRIPTION 3215 "This group is mandatory for systems that include the 3216 tcpEStatsNotificationGroup." 3218 OBJECT tcpEStatsControlNotify 3219 MIN-ACCESS read-only 3220 DESCRIPTION 3221 "Write access is not required." 3223 ::= { tcpEStatsCompliances 1 } 3225 -- ================================================================ 3226 -- 3227 -- Units of Conformance 3228 -- 3229 tcpEStatsListenerGroup OBJECT-GROUP 3230 OBJECTS { 3231 tcpEStatsListenerTableLastChange, 3232 tcpEStatsListenerStartTime, 3233 tcpEStatsListenerSynRcvd, 3234 tcpEStatsListenerInitial, 3235 tcpEStatsListenerEstablished, 3236 tcpEStatsListenerAccepted, 3237 tcpEStatsListenerExceedBacklog, 3238 tcpEStatsListenerCurConns, 3239 tcpEStatsListenerMaxBacklog, 3240 tcpEStatsListenerCurBacklog, 3241 tcpEStatsListenerCurEstabBacklog 3242 } 3243 STATUS current 3244 DESCRIPTION 3245 "The tcpEStatsListener group includes objects that 3246 provide valuable statistics and debugging 3247 information for TCP Listeners." 3248 ::= { tcpEStatsGroups 1 } 3250 tcpEStatsListenerHCGroup OBJECT-GROUP 3251 OBJECTS { 3252 tcpEStatsListenerHCSynRcvd, 3253 tcpEStatsListenerHCInitial, 3254 tcpEStatsListenerHCEstablished, 3255 tcpEStatsListenerHCAccepted, 3256 tcpEStatsListenerHCExceedBacklog 3257 } 3258 STATUS current 3259 DESCRIPTION 3260 "The tcpEStatsListenerHC group includes 64 bit 3261 counters in tcpEStatsListenerTable." 3262 ::= { tcpEStatsGroups 2 } 3264 tcpEStatsConnectIdGroup OBJECT-GROUP 3265 OBJECTS { 3266 tcpEStatsConnTableLatency, 3267 tcpEStatsConnectIndex 3268 } 3269 STATUS current 3270 DESCRIPTION 3271 "The tcpEStatsConnectId group includes objects that 3272 identify TCP connections and control how long TCP 3273 connection entries are retained in the tables." 3274 ::= { tcpEStatsGroups 3 } 3276 tcpEStatsPerfGroup OBJECT-GROUP 3277 OBJECTS { 3278 tcpEStatsPerfSegsOut, tcpEStatsPerfDataSegsOut, 3279 tcpEStatsPerfDataOctetsOut, 3280 tcpEStatsPerfSegsRetrans, 3281 tcpEStatsPerfOctetsRetrans, tcpEStatsPerfSegsIn, 3282 tcpEStatsPerfDataSegsIn, 3283 tcpEStatsPerfDataOctetsIn, 3284 tcpEStatsPerfElapsedSecs, 3285 tcpEStatsPerfElapsedMicroSecs, 3286 tcpEStatsPerfStartTimeStamp, tcpEStatsPerfCurMSS, 3287 tcpEStatsPerfPipeSize, tcpEStatsPerfMaxPipeSize, 3288 tcpEStatsPerfSmoothedRTT, tcpEStatsPerfCurRTO, 3289 tcpEStatsPerfCongSignals, tcpEStatsPerfCurCwnd, 3290 tcpEStatsPerfCurSsthresh, tcpEStatsPerfTimeouts, 3291 tcpEStatsPerfCurRwinSent, 3292 tcpEStatsPerfMaxRwinSent, 3293 tcpEStatsPerfZeroRwinSent, 3294 tcpEStatsPerfCurRwinRcvd, 3295 tcpEStatsPerfMaxRwinRcvd, 3296 tcpEStatsPerfZeroRwinRcvd 3297 } 3298 STATUS current 3299 DESCRIPTION 3300 "The tcpEStatsPerf group includes those objects that 3301 provide basic performance data for a TCP connection." 3302 ::= { tcpEStatsGroups 4 } 3304 tcpEStatsPerfOptionalGroup OBJECT-GROUP 3305 OBJECTS { 3306 tcpEStatsPerfSndLimTransRwin, 3307 tcpEStatsPerfSndLimTransCwnd, 3308 tcpEStatsPerfSndLimTransSnd, 3309 tcpEStatsPerfSndLimTimeRwin, 3310 tcpEStatsPerfSndLimTimeCwnd, 3311 tcpEStatsPerfSndLimTimeSnd 3312 } 3313 STATUS current 3314 DESCRIPTION 3315 "The tcpEStatsPerf group includes those objects that 3316 provide basic performance data for a TCP connection." 3317 ::= { tcpEStatsGroups 5 } 3319 tcpEStatsPerfHCGroup OBJECT-GROUP 3320 OBJECTS { 3321 tcpEStatsPerfHCDataOctetsOut, 3322 tcpEStatsPerfHCDataOctetsIn 3323 } 3324 STATUS current 3325 DESCRIPTION 3326 "The tcpEStatsPerfHC group includes 64 bit 3327 counters in the tcpEStatsPerfTable." 3328 ::= { tcpEStatsGroups 6 } 3330 tcpEStatsPathGroup OBJECT-GROUP 3331 OBJECTS { 3332 tcpEStatsControlPath, 3333 tcpEStatsPathRetranThresh, 3334 tcpEStatsPathNonRecovDAEpisodes, 3335 tcpEStatsPathSumOctetsReordered, 3336 tcpEStatsPathNonRecovDA 3337 } 3338 STATUS current 3339 DESCRIPTION 3340 "The tcpEStatsPath group includes objects that 3341 control the creation of the tcpEStatsPathTable, 3342 and provide information about the path 3343 for each TCP connection." 3344 ::= { tcpEStatsGroups 7 } 3346 tcpEStatsPathOptionalGroup OBJECT-GROUP 3347 OBJECTS { 3348 tcpEStatsPathSampleRTT, tcpEStatsPathRTTVar, 3349 tcpEStatsPathMaxRTT, tcpEStatsPathMinRTT, 3350 tcpEStatsPathSumRTT, tcpEStatsPathCountRTT, 3351 tcpEStatsPathMaxRTO, tcpEStatsPathMinRTO, 3352 tcpEStatsPathIpTtl, tcpEStatsPathIpTosIn, 3353 tcpEStatsPathIpTosOut, 3354 tcpEStatsPathPreCongSumCwnd, 3355 tcpEStatsPathPreCongSumRTT, 3356 tcpEStatsPathPostCongSumRTT, 3357 tcpEStatsPathPostCongCountRTT, 3358 tcpEStatsPathECNsignals, tcpEStatsPathQuenchRcvd, 3359 tcpEStatsPathDupAckEpisodes, tcpEStatsPathRcvRTT, 3360 tcpEStatsPathDupAcksOut, tcpEStatsPathCERcvd, 3361 tcpEStatsPathECESent, tcpEStatsPathECNNonceRcvd 3362 } 3363 STATUS current 3364 DESCRIPTION 3365 "The tcpEStatsPath group includes objects that 3366 provide additional information about the path 3367 for each TCP connection." 3368 ::= { tcpEStatsGroups 8 } 3370 tcpEStatsPathHCGroup OBJECT-GROUP 3371 OBJECTS { 3372 tcpEStatsPathHCSumRTT 3373 } 3374 STATUS current 3375 DESCRIPTION 3376 "The tcpEStatsPathHC group includes 64 bit 3377 counters in the tcpEStatsPathTable." 3378 ::= { tcpEStatsGroups 9 } 3380 tcpEStatsStackGroup OBJECT-GROUP 3381 OBJECTS { 3382 tcpEStatsControlStack, 3383 tcpEStatsStackActiveOpen, tcpEStatsStackMSSSent, 3384 tcpEStatsStackMSSRcvd, tcpEStatsStackWinScaleSent, 3385 tcpEStatsStackWinScaleRcvd, 3386 tcpEStatsStackTimeStamps, tcpEStatsStackECN, 3387 tcpEStatsStackWillSendSACK, 3388 tcpEStatsStackWillUseSACK, tcpEStatsStackState, 3389 tcpEStatsStackNagle, tcpEStatsStackMaxSsCwnd, 3390 tcpEStatsStackMaxCaCwnd, 3391 tcpEStatsStackMaxSsthresh, 3392 tcpEStatsStackMinSsthresh, 3393 tcpEStatsStackInRecovery, tcpEStatsStackDupAcksIn, 3394 tcpEStatsStackSpuriousFrDetected, 3395 tcpEStatsStackSpuriousRtoDetected 3396 } 3397 STATUS current 3398 DESCRIPTION 3399 "The tcpEStatsConnState group includes objects that 3400 control the creation of the tcpEStatsStackTable, 3401 and provide information about the operation of 3402 algorithms used within TCP." 3403 ::= { tcpEStatsGroups 10 } 3405 tcpEStatsStackOptionalGroup OBJECT-GROUP 3406 OBJECTS { 3407 tcpEStatsStackSoftErrors, 3408 tcpEStatsStackSoftErrorReason, 3409 tcpEStatsStackSlowStart, tcpEStatsStackCongAvoid, 3410 tcpEStatsStackOtherReductions, 3411 tcpEStatsStackCongOverCount, 3412 tcpEStatsStackFastRetran, 3413 tcpEStatsStackSubsequentTimeouts, 3414 tcpEStatsStackCurTimeoutCount, 3415 tcpEStatsStackAbruptTimeouts, 3416 tcpEStatsStackSACKsRcvd, 3417 tcpEStatsStackSACKBlocksRcvd, 3418 tcpEStatsStackSendStall, tcpEStatsStackDSACKDups, 3419 tcpEStatsStackMaxMSS, tcpEStatsStackMinMSS, 3420 tcpEStatsStackSndInitial, 3421 tcpEStatsStackRecInitial, 3422 tcpEStatsStackCurRetxQueue, 3423 tcpEStatsStackMaxRetxQueue, 3424 tcpEStatsStackCurReasmQueue, 3425 tcpEStatsStackMaxReasmQueue 3426 } 3427 STATUS current 3428 DESCRIPTION 3429 "The tcpEStatsConnState group includes objects that 3430 provide additional information about the operation of 3431 algorithms used within TCP." 3432 ::= { tcpEStatsGroups 11 } 3434 tcpEStatsAppGroup OBJECT-GROUP 3435 OBJECTS { 3436 tcpEStatsControlApp, 3437 tcpEStatsAppSndUna, tcpEStatsAppSndNxt, 3438 tcpEStatsAppSndMax, tcpEStatsAppThruOctetsAcked, 3439 tcpEStatsAppRcvNxt, 3440 tcpEStatsAppThruOctetsReceived 3441 } 3442 STATUS current 3443 DESCRIPTION 3444 "The tcpEStatsConnState group includes objects that 3445 control the creation of the tcpEStatsAppTable, 3446 and provide information about the operation of 3447 algorithms used within TCP." 3448 ::= { tcpEStatsGroups 12 } 3450 tcpEStatsAppHCGroup OBJECT-GROUP 3451 OBJECTS { 3452 tcpEStatsAppHCThruOctetsAcked, 3453 tcpEStatsAppHCThruOctetsReceived 3454 } 3455 STATUS current 3456 DESCRIPTION 3457 "The tcpEStatsStackHC group includes 64 bit 3458 counters in the tcpEStatsStackTable." 3459 ::= { tcpEStatsGroups 13 } 3461 tcpEStatsAppOptionalGroup OBJECT-GROUP 3462 OBJECTS { 3463 tcpEStatsAppCurAppWQueue, 3464 tcpEStatsAppMaxAppWQueue, 3465 tcpEStatsAppCurAppRQueue, 3466 tcpEStatsAppMaxAppRQueue 3467 } 3468 STATUS current 3469 DESCRIPTION 3470 "The tcpEStatsConnState group includes objects that 3471 provide additional information about how applications 3472 are interacting with each TCP connection." 3473 ::= { tcpEStatsGroups 14 } 3475 tcpEStatsTuneOptionalGroup OBJECT-GROUP 3476 OBJECTS { 3477 tcpEStatsControlTune, 3478 tcpEStatsTuneLimCwnd, tcpEStatsTuneLimSsthresh, 3479 tcpEStatsTuneLimRwin 3480 } 3481 STATUS current 3482 DESCRIPTION 3483 "The tcpEStatsConnState group includes objects that 3484 control the creation of the tcpEStatsConnectionTable, 3485 which can be used to set tuning parameters 3486 for each TCP connection." 3487 ::= { tcpEStatsGroups 15 } 3489 tcpEStatsNotificationsGroup NOTIFICATION-GROUP 3490 NOTIFICATIONS { 3491 tcpEStatsEstablishNotification, 3492 tcpEStatsCloseNotification 3493 } 3494 STATUS current 3495 DESCRIPTION 3496 "Notifications sent by a TCP extended statistics agent." 3497 ::= { tcpEStatsGroups 16 } 3499 tcpEStatsNotificationsCtlGroup OBJECT-GROUP 3500 OBJECTS { 3501 tcpEStatsControlNotify 3502 } 3503 STATUS current 3504 DESCRIPTION 3505 "The tcpEStatsNotificationsCtl group includes the 3506 object that controls the creation of the events 3507 in the tcpEStatsNotificationsGroup." 3508 ::= { tcpEStatsGroups 17 } 3510 END 3512 5. Security Considerations 3514 There are a number of management objects defined in this MIB module 3515 with a MAX-ACCESS clause of read-write and/or read-create. Such 3516 objects may be considered sensitive or vulnerable in some network 3517 environments. The support for SET operations in a non-secure 3518 environment without proper protection can have a negative effect on 3519 network operations. These are the tables and objects and their 3520 sensitivity/vulnerability: 3522 * Changing tcpEStatsConnTableLatency or any of the control objects in 3523 the tcpEStatsControl group (tcpEStatsControlPath, 3524 tcpEStatsControlStack, tcpEStatsControlApp, tcpEStatsControlTune) 3525 may affect the correctness of other management applications 3526 accessing this MIB. Generally local policy should only permit 3527 limited write access to these controls (e.g. only by one management 3528 station or only during system configuration). 3530 * The objects in the tcpEStatsControlTune group 3531 (tcpEStatsTuneLimCwnd, tcpEStatsTuneLimSsthresh, 3532 tcpEStatsTuneLimRwin) can be used to limit resources consumed by 3533 TCP connections or to limit TCP throughput. An attacker might 3534 manipulate these objects to reduce performance to levels below the 3535 minimum acceptable for a particular application. 3537 Some of the readable objects in this MIB module (i.e., objects with a 3538 MAX-ACCESS other than not-accessible) may be considered sensitive or 3539 vulnerable in some network environments. It is thus important to 3540 control even GET and/or NOTIFY access to these objects and possibly 3541 to even encrypt the values of these objects when sending them over 3542 the network via SNMP. These are the tables and objects and their 3543 sensitivity/vulnerability: 3545 * All objects which expose TCP sequence numbers (tcpEStatsAppSndUna, 3546 tcpEStatsAppSndNxt, tcpEStatsAppSndMax, tcpEStatsStackSndInitial, 3547 tcpEStatsAppRcvNxt, and tcpEStatsStackRecInitial) might make it 3548 easier for an attacker to forge in sequence TCP segments to disrupt 3549 TCP connections. 3551 * Nearly all object in this (or any other) MIB may be used to 3552 estimate traffic volumes, which may reveal unanticipated 3553 information about an organization to the outside world. 3555 SNMP versions prior to SNMPv3 did not include adequate security. 3556 Even if the network itself is secure (for example by using IPsec), 3557 even then, there is no control as to who on the secure network is 3558 allowed to access and GET/SET (read/change/create/delete) the objects 3559 in this MIB module. 3561 It is RECOMMENDED that implementers consider the security features as 3562 provided by the SNMPv3 framework (see [RFC3410], section 8), 3563 including full support for the SNMPv3 cryptographic mechanisms (for 3564 authentication and privacy). 3566 Further, deployment of SNMP versions prior to SNMPv3 is NOT 3567 RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to 3568 enable cryptographic security. It is then a customer/operator 3569 responsibility to ensure that the SNMP entity giving access to an 3570 instance of this MIB module is properly configured to give access to 3571 the objects only to those principals (users) that have legitimate 3572 rights to indeed GET or SET (change/create/delete) them. 3574 6. IANA Considerations 3576 The MIB module in this document uses the following IANA-assigned 3577 OBJECT IDENTIFIER values recorded in the SMI Numbers registry: 3579 Descriptor OBJECT IDENTIFIER value 3580 ------------ ----------------------- 3581 tcpEStatsMIB { mib-2 xxx2 } 3583 RFC Editor: The IANA is requested to assign a value for "xxx2" under 3584 the 'mib-2' subtree and to record the assignment in the SMI Numbers 3585 registry. When the assignment has been made, the RFC Editor is asked 3586 to replace "xxx2" (here and in the MIB module) with the assigned 3587 value and to remove this note. 3589 7. Normative References 3591 [RFC791] J. Postel, "Internet Protocol", RFC 791, STD 0005, September 3592 1981. 3594 [RFC793] J. Postel, "Transmission Control Protocol", RFC 793, STD 0007, 3595 September 1981. 3597 [RFC1122] R. Braden, Ed, "Requirements for Internet Hosts - 3598 Communication Layers", RFC 1122, STD 0003, October 1989. 3600 [RFC1191] J.C. Mogul, S.E. Deering, "Path MTU discovery", RFC 1191, 3601 November 1990. 3603 [RFC1323] V. Jacobson, R. Braden, D. Borman, "TCP Extensions for High 3604 Performance", RFC 1323, May 1992. 3606 [RFC2018] M. Mathis, J. Mahdavi, S. Floyd, A. Romanow, "TCP Selective 3607 Acknowledgment Options", RFC 2018, October 1996. 3609 [RFC2021] S. Waldbusser, "Remote Network Monitoring Management 3610 Information Base Version 2 using SMIv2", RFC 2021, January 1997. 3612 [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate Requirement 3613 Levels", RFC 2119, BCP 0014, March 1997 3615 [RFC2578] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., 3616 Rose, M., and S. Waldbusser, "Structure of Management Information 3617 Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. 3619 [RFC2579] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., 3620 Rose, M., and S. Waldbusser, "Textual Conventions for SMIv2", RFC 3621 2579, STD 58, April 1999. 3623 [RFC2580] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., 3624 Rose, M., and S. Waldbusser, "Conformance Statements for SMIv2", 3625 RFC 2580, STD 58, April 1999. 3627 [RFC2581] M. Allman, V. Paxson, W. Stevens, "TCP Congestion Control", 3628 RFC 2581, April 1999. 3630 [RFC2856] A. Bierman, K. McCloghrie, R. Presuhn, "Textual Conventions 3631 for Additional High Capacity Data Types", RFC 2856, June 2000. 3633 [RFC2861] M. Handley, J. Padhye, S. Floyd, "TCP Congestion Window 3634 Validation", RFC 2861, June 2000. 3636 [RFC2883] S. Floyd, J. Mahdavi, M. Mathis, M. Podolsky, "An Extension to 3637 the Selective Acknowledgment (SACK) Option for TCP", RFC 2883, July 3638 2000. 3640 [RFC2988] V. Paxson, M. Allman, "Computing TCP's Retransmission Timer", 3641 RFC 2988, November 2000. 3643 [RFC3168] K. Ramakrishnan, S. Floyd, D. Black, "The Addition of Explicit 3644 Congestion Notification (ECN) to IP", RFC 3168, September 2001. 3646 [RFC3260] D. Grossman, "New Terminology and Clarifications for 3647 Diffserv", RFC 3260, April 2002. 3649 [RFC3517] Blanton, E., Allman, M., Fall, K., Wang. L., A Conservative 3650 Selective Acknowledgment (SACK)-based Loss Recovery Algorithm for 3651 TCP, RFC 3517, April 2003. 3653 [RFC3522] R. Ludwig, M. Meyer, "The Eifel Detection Algorithm for TCP", 3654 RFC 3522, April 2003. 3656 [RFC3540] N. Spring, D. Wetherall, D. Ely, "Robust Explicit Congestion 3657 Notification (ECN) Signaling with Nonces", RFC 3540, June 2003. 3659 [RFC3742] S. Floyd, "Limited Slow-Start for TCP with Large Congestion 3660 Windows", RFC 3742, March 2004. 3662 [RFC4022] Raghunarayan, R., "Management Information Base for the 3663 Transmission Control Protocol (TCP)", RFC 4022, March 2005. 3665 8. Informative References 3667 [Mat97] M. Mathis, J. Semke, J. Mahdavi, T. Ott, "The Macroscopic 3668 Behavior of the TCP Congestion Avoidance Algorithm", Computer 3669 Communication Review, volume 27, number3, July 1997. 3671 [Bra94] Brakmo, L., O'Malley, S., "TCP Vegas, New Techniques for 3672 Congestion Detection and Avoidance," SIGCOMM'94, London, pp 24-35, 3673 October 1994. 3675 [Edd06] Eddy, W., "TCP SYN Flooding Attacks and Common Mitigations," 3676 Internet Draft draft-ietf-tcpm-syn-flood-00, Work in progress, July 3677 2006 3679 [POSIX] Portable Operating System Interface, IEEE Std 1003.1 3681 [Pad98] Padhye, J., Firoiu, V., Towsley, D., Kurose, J., "Modeling TCP 3682 Throughput: A Simple Model and its Empirical Validation", 3683 SIGCOMM'98 3685 [roadmap] M. Duke, R. Braden, W. Eddy, E. Blanton, "A Roadmap for TCP 3686 Specification Documents", Internet Draft draft-ietf-tcpm-tcp- 3687 roadmap-06, Work in progress, February 2005 3689 [Web100] Mathis, M., J. Heffner, R. Reddy, "Web100: Extended TCP 3690 Instrumentation for Research, Education and Diagnosis", ACM 3691 Computer Communications Review, Vol 33, Num 3, July 2003. 3693 [RFC3410] Case, J., Mundy, R., Partain, D. and B. Stewart, "Introduction 3694 and Applicability Statements for Internet-Standard Management 3695 Framework", RFC 3410, December 2002. 3697 9. Contributors 3699 The following people contributed text that was incorporated into this 3700 document: 3702 Jon Saperia converted Web100 internal 3703 documentation into a true MIB. Jon can be reached at JDS Consulting, 3704 Inc, 617-744-1079. 3706 Some of the objects in this document were moved from an early draft 3707 of the TCP-MIB, by Bill Fenner et al. 3709 Some of the object descriptions are based on an earlier unpublished 3710 document by Jeff Semke. 3712 10. Acknowledgments 3714 This document is a product of the Web100 project (www.web100.org), a 3715 joint effort of Pittsburgh Supercomputing Center (www.psc.edu), 3716 National Center for Atmospheric Research (www.ncar.ucar.edu) and 3717 National Center for Supercomputer Applications (www.ncsa.edu). 3719 It would not have been possible without all of the hard work by the 3720 the entire Web100 team, especially Peter O'Neal who read and reread 3721 the entire document several times; Janet Brown and Marla Meehl, who 3722 patiently managed the unmanageable. The Web100 project would not 3723 have been successful without all of the early adopters who suffered 3724 our bugs to provide many good suggestions and insights into their 3725 needs for TCP instrumentation. 3727 Web100 was supported by the National Science Foundation under Grant 3728 No. 0083285 and a research grant from Cisco Systems. 3730 We would also like to thank all of the people who built experimental 3731 implementations of this MIB from early versions of the Internet Draft 3732 and provided us with constructive feedback: Glenn Turner at AARnet, 3733 Kristine Adamson at IBM and Xinyan Zan at Microsoft. 3735 And last, but not least, we would like to thank Dan Romascanu, our 3736 "MIB Doctor" and Bert Wijnen the Operations Area Director, for 3737 patiently steering us through the MIB review process. 3739 11. Authors' Addresses 3740 Matt Mathis 3741 John Heffner 3742 Pittsburgh Supercomputing Center 3743 4400 Fifth Ave 3744 Pittsburgh, PA 15216 3745 Phone: 412-268-4960 3746 Email: mathis@psc.edu, jheffner@psc.edu 3748 Rajiv Raghunarayan 3749 Cisco Systems Inc. 3750 San Jose, CA 95134 3751 Phone: 408 853 9612 3752 Email: raraghun@cisco.com 3754 12. Intellectual Property 3756 The IETF takes no position regarding the validity or scope of any 3757 Intellectual Property Rights or other rights that might be claimed 3758 to pertain to the implementation or use of the technology 3759 described in this document or the extent to which any license 3760 under such rights might or might not be available; nor does it 3761 represent that it has made any independent effort to identify any 3762 such rights. Information on the procedures with respect to rights 3763 in RFC documents can be found in BCP 78 and BCP 79. 3765 Copies of IPR disclosures made to the IETF Secretariat and any 3766 assurances of licenses to be made available, or the result of an 3767 attempt made to obtain a general license or permission for the use 3768 of such proprietary rights by implementers or users of this 3769 specification can be obtained from the IETF on-line IPR repository 3770 at http://www.ietf.org/ipr. 3772 The IETF invites any interested party to bring to its attention 3773 any copyrights, patents or patent applications, or other 3774 proprietary rights that may cover technology that may be required 3775 to implement this standard. Please address the information to the 3776 IETF at ietf-ipr@ietf.org. 3778 13. Disclaimer of Validity 3780 This document and the information contained herein are provided 3781 on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE 3782 REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND 3783 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, 3784 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT 3785 THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR 3786 ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A 3787 PARTICULAR PURPOSE. 3789 14. Copyright Statement 3791 Copyright (C) The Internet Society (2006). 3793 This document is subject to the rights, licenses and restrictions 3794 contained in BCP 78, and except as set forth therein, the authors 3795 retain all their rights.