Internet-Draft Matt Mathis John Heffner Raghu Reddy Pittsburgh Supercomputing Center Rajiv Raghunarayan Cisco Systems J. Saperia JDS Consulting, Inc TCP Extended Statistics MIB draft-ietf-tsvwg-tcp-mib-extension-06.txt Sun Feb 20 13:56:25 EST 2005 Status of this Memo By submitting this Internet-Draft, I certify that any applicable patent or other IPR claims of which I am aware have been disclosed, and any of which I become aware will be disclosed, in accordance with RFC 3668. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http:// www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire Aug 31, 2005 Copyright Notice Copyright (C) The Internet Society (2003). All Rights Reserved. Abstract This draft describes extended performance statistics for TCP. They are designed to use TCP's ideal vantage point to diagnose performance problems in both the network and the application. If a network based application is performing poorly, TCP can determine if the bottleneck is in the sender, the receiver or the network itself. If the Mathis, et al [Page 1] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 bottleneck is in the network, TCP can provide specific information about its nature. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 2 2. The Internet-Standard Management Framework . . . . . . . . 4 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 4 4. TCP Extended Statistics MIB . . . . . . . . . . . . . . . . 8 5. Normative References . . . . . . . . . . . . . . . . . . . 58 6. Informative References . . . . . . . . . . . . . . . . . . 59 7. Security Considerations . . . . . . . . . . . . . . . . . . 59 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . 60 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 60 10. Authors' Addresses . . . . . . . . . . . . . . . . . . . . 60 11. Intellectual Property . . . . . . . . . . . . . . . . . . 61 12. Disclaimer of Validity . . . . . . . . . . . . . . . . . . 61 13. Full Copyright Statement . . . . . . . . . . . . . . . . . 62 1. Introduction This draft describes extended performance statistics for TCP. They are designed to use TCP's ideal vantage point to diagnose performance problems in both the network and the application. If a network based application is performing poorly, TCP can determine if the bottleneck is in the sender, the receiver or the network itself. If the bottleneck is in the network, TCP can provide specific information about its nature. The SNMP objects defined in this draft extend TCP MIB, already under revision by the IPv6 team [RFC2012bis]. This document is automatically generated from a database of potential TCP instruments. Beware that the OIDs are still likely to change with future versions. The most current version can be obtained from http://www.web100.org/mib/ . Please use tsvwg@ietf.org to send comments to the entire TSV WG. X. Changes This virtual section will be removed as the draft nears completion. Changes since draft-ietf-tsvwg-tcp-mib-extension-04.txt (27-Oct-2003) Many changes to object descriptions MIB comments and overview to improve clarity. Mathis, et al [Page 2] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 Completely restructured the perconnection tables. Seven table were reduced to five. The main perconnection table tcpEStatsPerfTable is now mandatory. Three other new tables are focused on understanding the details of the behavior of the path, internal TCP algorithms and the application. In addition, there is a new tuning table with per- connection writable controls to work around a number of common problems. Note that due to the table restructuring, most of the object names listed below have changed. Restructured the Listen Table (tcpEStatsListenerTable) to better instrument various SYN flood defenses. Removed minimul receiver window objects, and replaced them by the count of the number of transitions to zero window from non-zero window. Replaced tcpEStatsPathIpTos by tcpEStatsPathIpTosOut and added tcpEStatsPathIpTosIn. Updated the descriptions of tcpEStatsDataSndNxt, tcpEStatsDataSndMax, tcpEStatsDataThruOctetsAcked, tcpEStatsDataHCThruBytesAcked, tcpEStatsDataThruBytesReceived, tcpEStatsDataHCThruBytesReceived, consistiently use RFC791 variables (SND.NXT, etc) or refer to other TCP-ESTATS-MIB objects. Changed tcpEStatsSynOptsMSSSent and tcpEStatsSynOptsMSSRcvd from Gauge32 to Unsigned32 Updated descriptions of tcpEStatsConnectLocalAddress and tcpEStatsConnectRemAddress to new conventions for InetAddress [RFC3291bis] Updated ID boiler plate to RFC3668, ID-Guidelines and fixed some formatting glitches Added a Table of Contents Updated the description of tcpEStatsConnectionState to indicate that the listen state included only for document parallelism and should not be used. Explained why it is useful for tcpEStatsConnectIdTable and others to remain for 30 seconds after a connection closes (so you retrieve the total statistics for the entire connection). Added comment about not supporting writing DeleteTcb into the TCP State. Mathis, et al [Page 3] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 Explained that SndNxt is not a counter because it is non-monotonic. Clarified StartTime to be row creation Clarified row creation to be at the first SYN unless techniques to defend against SYN floods are in effect, then at connection establishment. Added tcpEStatsControlNotify to control the generation of notifications. Changed sequence numbers from ZeroBasedCounter32 to Counter32. Changes since draft-ietf-tsvwg-tcp-mib-extension-03.txt (2-Mar-2003) Replaced "queued" with "buffered by TCP" Changed all counters in the TCP connection tables to be ZeroBased Remove tcpEStatsHCInSegs, tcpEStatsHCOutSegs, which appear in as tcpHCInSegs and tcpHCOutSegs in draft-ietf-ipv6-rfc2012-update-03.txt and later drafts. Added changes section. 2. The Internet-Standard Management Framework For a detailed overview of the documents that describe the current Internet-Standard Management Framework, please refer to section 7 of RFC 3410 [RFC3410]. Managed objects are accessed via a virtual information store, termed the Management Information Base or MIB. MIB objects are generally accessed through the Simple Network Management Protocol (SNMP). Objects in the MIB are defined using the mechanisms defined in the Structure of Management Information (SMI). This memo specifies a MIB module that is compliant to the SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580]. 3. Overview The TCP-ESTATS-MIB defined in this memo consists of 6 tables, two groups of scalars and two notifications: - The first group of scalars in this MIB contain a statistic of a TCP protocol engine not covered in [RFC2012bis]. The Mathis, et al [Page 4] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 scalar tcpEStatsListenerTableLastChange, provides management stations with an an easier mechanism to validate their listener caches. - The second group of scalars consist of knobs to enable and disable information collection by the tables containing connection-related statistics/information. For example the tcpEStatsControlPath object controls the activation of the tcpEStatsPathTable. The tcpEStatsConnTableLatency object determines how long table rows are retained after connection close, to permit reading final connection completion statistics. Changing any of these controls may affect the correctness of other management applications accessing this MIB. Generally local policy should only permit limited write access to these controls (e.g. only by one management station or only during system configuration). - The tcpEStatsListenerTable provides information on the active TCP listeners on a device. It supports objects to monitor and diagnose SYN-flood denial-of-service attacks as described below. - The ZeroBasedCounter32 and ZeroBasedCounter64 objects in the tcpEStatsListenerTable and tcpEStatsListenerTable are initialized to zero when the table row is created. - The tcpEStatsConnectIdTable provides a mapping between the connection indices i.e. source address type, source address, source port, destination address type, destination address and destination port, and the connection index. The connection index is used to index into most the remaining tables in this MIB module, and is designed to facilitate rapid polling of multiple objects associated with one TCP connection. - The tcpEStatsPerfTable contains objects that are useful for measuring TCP performance and first line problem diagnosis. - The tcpEStatsPathTable contains objects that can be used to infer detailed behavior of the Internet path, such as the extent that there are losses or segment reordering, etc. - The tcpEStatsStackTable contains objects that are most useful for determining how well the TCP control algorithms are coping with this particular path. Mathis, et al [Page 5] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 - The tcpEStatsAppTable provides objects that are useful for determining if the application using TCP is limiting TCP performance. - The tcpEStatsTuneTable provides per connection controls that can be used to work around a number of common problems that plague TCP over some paths. - The two notifications defined in this MIB module are tcpEStatsEstablishNotification, indicating that a new connection has been accepted (or established see below), and tcpEStatsCloseNotification, indicating that an existing connection has recently closed. - The tcpEStatsListenerTable is specifically designed to provides information that is useful for diagnosing SYN-flood Denial-of-Service attacks, where a server is overwhelmed by forged or otherwise malicious connection attempts. There are several different techniques that are used to defend against SYN-flooding but none are standardized, and most have never been well described in the literature (ergo there are no normative references). These different techniques all have the same basic characteristics which are instrumentable with a common set of objects even though the techniques differ greatly in the details. All SYN-flood defenses avoid allocating significant resources (memory or CPU) to incoming (passive open) connections until the connections meet some liveness criteria (to defend against forged IP source addresses) and the server has sufficient resources to process the incoming request. Note that allocating resources is an implementation specific event that may not correspond to a observe able protocol event (e.g. segments on the wire). There are two general concepts that can be applied to all known SYN-flood defenses. There is generally a well defined event when a connections is allocated full resources, and a "backlog" - a queue of embryonic connections that have been allocated only partial resources. In many implementation incoming TCP connections are allocated resources as a side affect of the POSIX [POSIX] accept() call. For this reason we use the terminology "accepting a connection" to refer to this event: committing sufficient network resources to process the incoming request. Accepting a connection typically entails allocating memory for the protocol control block [RFC793] and the per connection table rows described in this MIB. Mathis, et al [Page 6] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 Note that it is not useful to accept connections before they are ESTABLISHED, because this would create an easy opportunity for Denial-of-Service attacks, using forged source IP addresses. The backlog consists of connections that are in SYN-RCVD or ESTABLISHED states, that have not been accepted. For purposes of this MIB we assume that these connections that have been allocated some resources (e.g. an embryonic protocol control block) but not full resources (e.g. do not yet have MIB table rows). Note that some SYN-Flood defenses dispense with explicit SYN-RCVD state by cryptographically encoding the state in the ISS of the SYN-ACK, and then using the sequence number of the first ACK to reconstruct the SYN-RCVD state before transitioning to the ESTABLISHED state. For these implementations there is no explicit representation of the SYN-RCVD state and the backlog only consists of connections that are ESTABLISHED and are waiting to be ACCEPTED. Furthermore most SYN-flood defenses have some mechanism to throttle connections that might otherwise overwhelm this endpoint. They generally use some combination of discarding incoming SYNs and discarding connections already in the backlog. This does not cause all connections from legitimate clients to fail, as long as the clients persistently retransmit the SYN or first ACK as specified in RFC793. Most of the diversity in SYN flood defenses arises in variations in these algorithms to limit load, and therefore they can not conveniently be instrumented with a common standard MIB. The Listen Table instruments all passively opened TCP connections in terms of observable protocol events (e.g. sent and received segments) and resource allocation events (entering the backlog and being accepted). This approach eases generalization to SYN-flood mechanism that use alternate TCP state transition diagrams and implicit mechanisms to encode some states. Mathis, et al [Page 7] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 4. TCP Extended Statistics MIB TCP-ESTATS-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, Counter32, Integer32, Unsigned32, Gauge32, OBJECT-TYPE, experimental, NOTIFICATION-TYPE FROM SNMPv2-SMI MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP FROM SNMPv2-CONF ZeroBasedCounter32 FROM RMON2-MIB -- [RFC2021] ZeroBasedCounter64 FROM HCNUM-TC -- [RFC2856] TEXTUAL-CONVENTION, DateAndTime, TruthValue, TimeStamp FROM SNMPv2-TC InetAddressType, InetAddress, InetPortNumber FROM INET-ADDRESS-MIB tcpListenerEntry FROM TCP-MIB; tcpEStatsMIB MODULE-IDENTITY LAST-UPDATED "200502201356Z" -- Feb 20, 2005 ORGANIZATION "IETF TSV Working Group" CONTACT-INFO "Matt Mathis John Heffner Raghu Reddy Web100 Project Pittsburgh Supercomputing Center 4400 Fifth Ave Pittsburgh, PA 15213 Email: mathis@psc.edu, jheffner@psc.edu, rreddy@psc.edu Rajiv Raghunarayan Cisco Systems Inc. San Jose, CA 95134 Phone: 408 853 9612 Email: raraghun@cisco.com Jon Saperia JDS Consulting, Inc. 174 Chapman Street Watertown, MA 02472 Phone: 617-744-1079 Email: saperia@jdscons.com " Mathis, et al [Page 8] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 DESCRIPTION "Documentation of TCP Extended Performance Instrumentation variables from the Web100 project. [Web100] Copyright (C) The Internet Society (2004). This version of this MIB module is a part of RFC xxxx; see the RFC itself for full legal notices." -- RFC Editor: replace xxxx with actual RFC number & remove note REVISION "200502201356Z" -- Feb 20, 2005 DESCRIPTION "Initial version, published as RFC xxxx." -- RFC Editor assigns RFC xxxx ::= { experimental 9999 } tcpEStatsNotifications OBJECT IDENTIFIER ::= { tcpEStatsMIB 0 } tcpEStatsMIBObjects OBJECT IDENTIFIER ::= { tcpEStatsMIB 1 } tcpEStatsConformance OBJECT IDENTIFIER ::= { tcpEStatsMIB 2 } tcpEStats OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 1 } tcpEStatsControl OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 2 } tcpEStatsScalar OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 3 } -- -- Textual Conventions -- TcpEStatsOperation ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Indicates whether the table or notification controlled by an object with this syntax is enabled or in a disabled state." SYNTAX INTEGER { enabled(1), disabled(2) } -- -- TCP Extended statistics scalars -- tcpEStatsListenerTableLastChange OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at the time of the last creation or deletion of an entry in the tcpListenerTable. If the number of entries has been unchanged since the Mathis, et al [Page 9] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 last re-initialization of the local network management subsystem, then this object contains a zero value." ::= { tcpEStatsScalar 3 } -- ================================================================ -- -- The tcpEStatsControl Group -- -- The scalar objects in this group are used to control the -- activation and deactivation of the TCP Extended Statistics -- tables and notifications in this module. -- tcpEStatsControlPath OBJECT-TYPE SYNTAX TcpEStatsOperation MAX-ACCESS read-write STATUS current DESCRIPTION "Controls the activation of the TCP Path Statistics table." DEFVAL { disabled } ::= { tcpEStatsControl 1 } tcpEStatsControlStack OBJECT-TYPE SYNTAX TcpEStatsOperation MAX-ACCESS read-write STATUS current DESCRIPTION "Controls the activation of the TCP Stack Statistics table." DEFVAL { disabled } ::= { tcpEStatsControl 2 } tcpEStatsControlApp OBJECT-TYPE SYNTAX TcpEStatsOperation MAX-ACCESS read-write STATUS current DESCRIPTION "Controls the activation of the TCP Application Statistics table." DEFVAL { disabled } ::= { tcpEStatsControl 3 } tcpEStatsControlTune OBJECT-TYPE SYNTAX TcpEStatsOperation MAX-ACCESS read-write STATUS current Mathis, et al [Page 10] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 DESCRIPTION "Controls the activation of the TCP Tuning table." DEFVAL { disabled } ::= { tcpEStatsControl 4 } tcpEStatsControlNotify OBJECT-TYPE SYNTAX TcpEStatsOperation MAX-ACCESS read-write STATUS current DESCRIPTION "Controls the generation of all notifications defined in this MIB." DEFVAL { disabled } ::= { tcpEStatsControl 5 } tcpEStatsConnTableLatency OBJECT-TYPE SYNTAX Integer32 (0..30) MAX-ACCESS read-only STATUS current DESCRIPTION "Specifies the number of seconds that the entity will retain entries in the TCP connection tables, after the connection first enters the closed state. The entity SHOULD provide a configuration option to enable customization of this value. A value of 0 results in entries being removed from the tables as soon as the connection enters the closed state. The value of this object pertains to the following tables: tcpEStatsConnectIdTable tcpEStatsPerfTable tcpEStatsPathTable tcpEStatsStackTable tcpEStatsAppTable tcpEStatsTuneTable" ::= { tcpEStatsControl 6 } -- ================================================================ -- -- Listener Table -- tcpEStatsListenerTable OBJECT-TYPE SYNTAX SEQUENCE OF TcpEStatsListenerEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains information about TCP Listeners, Mathis, et al [Page 11] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 in addition to the information maintained by the tcpListenerTable RFC2012bis." ::= { tcpEStats 10 } tcpEStatsListenerEntry OBJECT-TYPE SYNTAX TcpEStatsListenerEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Each entry in the table contains information about a specific TCP Listener." AUGMENTS { tcpListenerEntry } ::= { tcpEStatsListenerTable 1 } TcpEStatsListenerEntry ::= SEQUENCE { tcpEStatsListenerStartTime TimeStamp, tcpEStatsListenerSynRcvd ZeroBasedCounter32, tcpEStatsListenerInitial ZeroBasedCounter32, tcpEStatsListenerEstablished ZeroBasedCounter32, tcpEStatsListenerAccepted ZeroBasedCounter32, tcpEStatsListenerExceedBacklog ZeroBasedCounter32, tcpEStatsListenerHCSynRcvd ZeroBasedCounter64, tcpEStatsListenerHCInitial ZeroBasedCounter64, tcpEStatsListenerHCEstablished ZeroBasedCounter64, tcpEStatsListenerHCAccepted ZeroBasedCounter64, tcpEStatsListenerHCExceedBacklog ZeroBasedCounter64, tcpEStatsListenerCurrConns Gauge32, tcpEStatsListenerMaxBacklog Integer32, tcpEStatsListenerCurBacklog Gauge32, tcpEStatsListenerCurEstabBacklog Gauge32 } tcpEStatsListenerStartTime OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at the time this listener was established. If the current state was entered prior to the last re-initialization of the local network management subsystem, then this object contains a zero value." ::= { tcpEStatsListenerEntry 1 } tcpEStatsListenerSynRcvd OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION Mathis, et al [Page 12] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 "The number of SYNs which have been received for this listener. The total number of failed connections for all reasons can be estimated to be tcpEStatsListenerSynRcvd minus tcpEStatsListenerAccepted and tcpEStatsListenerCurBacklog." ::= { tcpEStatsListenerEntry 2 } tcpEStatsListenerInitial OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of connections for which the Listener has allocated initial state and placed the connection in the backlog. The may happen in the SYN-RCVD or ESTABLISHED states, depending on the implementation." ::= { tcpEStatsListenerEntry 3 } tcpEStatsListenerEstablished OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of connections which have been established to this endpoint. E.g. The number of first ACKs which have been received for this listener." ::= { tcpEStatsListenerEntry 4 } tcpEStatsListenerAccepted OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of connections for which the Listener has successfully issued an accept, removing the connection from the backlog." ::= { tcpEStatsListenerEntry 5 } tcpEStatsListenerExceedBacklog OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of connections dropped from the backlog by this listener due to all reasons. This includes all connections that are allocated initial resources but are not accepted for some reason." Mathis, et al [Page 13] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 ::= { tcpEStatsListenerEntry 6 } tcpEStatsListenerHCSynRcvd OBJECT-TYPE SYNTAX ZeroBasedCounter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of SYNs which have been received for this listener on systems that can process (or reject) more than 1 million connections per second. See tcpEStatsListenerSynRcvd." ::= { tcpEStatsListenerEntry 7 } tcpEStatsListenerHCInitial OBJECT-TYPE SYNTAX ZeroBasedCounter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of connections for which the Listener has allocated initial state and placed the connection in the backlog on systems that can process (or reject) more than 1 million connections per second. See tcpEStatsListenerInitial." ::= { tcpEStatsListenerEntry 8 } tcpEStatsListenerHCEstablished OBJECT-TYPE SYNTAX ZeroBasedCounter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of connections which have been established to this endpoint on systems that can process (or reject) more than 1 million connections per second. See tcpEStatsListenerEstablished." ::= { tcpEStatsListenerEntry 9 } tcpEStatsListenerHCAccepted OBJECT-TYPE SYNTAX ZeroBasedCounter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of connections for which the Listener has successfully issued an accept, removing the connection from the backlog on systems that can process (or reject) more than 1 million connections per second. See tcpEStatsListenerAccepted." ::= { tcpEStatsListenerEntry 10 } Mathis, et al [Page 14] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 tcpEStatsListenerHCExceedBacklog OBJECT-TYPE SYNTAX ZeroBasedCounter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of connections dropped from the backlog by this listener due to all reasons on systems that can process (or reject) more than 1 million connections per second. See tcpEStatsListenerHCExceedBacklog." ::= { tcpEStatsListenerEntry 11 } tcpEStatsListenerCurrConns OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The current number of connections in the ESTABLISHED state, which have also been accepted. It excludes connections that have been established but not accepted because they are still subject to being discarded to shed load without explicit action by either endpoint." ::= { tcpEStatsListenerEntry 12 } tcpEStatsListenerMaxBacklog OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum number of connections allowed in backlog at one time." ::= { tcpEStatsListenerEntry 13 } tcpEStatsListenerCurBacklog OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The current number of connections that are in backlog. This counter MUST include connections in ESTABLISHED state, for which the Listener has not yet issued an accept, and MAY include connections in SYN-RECEIVED state." ::= { tcpEStatsListenerEntry 14 } tcpEStatsListenerCurEstabBacklog OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current Mathis, et al [Page 15] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 DESCRIPTION "The current number of connections in backlog that are in the ESTABLISHED state, but for which the Listener has not yet issued an accept." ::= { tcpEStatsListenerEntry 15 } -- ================================================================ -- -- TCP Connection ID Table -- -- There is overlap with the new RFC2012 TCP Connection table -- because there is a semantic difference in the latency of row -- removal in this table. Rows are expected to remain in this -- table longer than in a standard TCP Connection table. Other -- than this latency difference the semantics of the first six -- objects in this table are the same as the new TCP Connection -- table and the DESCRIPTIONS come from the new document. tcpEStatsConnectIdTable OBJECT-TYPE SYNTAX SEQUENCE OF TcpEStatsConnectIdEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table maps a connection ID used by other tables in this MIB Module with the information that uniquely identifies each active TCP connection. Entries are retained in this table for the number of seconds indicated by the tcpEStatsConnTableLatency object, after the TCP connection first enters the closed state." ::= { tcpEStats 1 } tcpEStatsConnectIdEntry OBJECT-TYPE SYNTAX TcpEStatsConnectIdEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Each entry in this table maps a TCP connection 4-tuple to a connection index." INDEX { tcpEStatsConnectLocalAddressType, tcpEStatsConnectLocalAddress, tcpEStatsConnectLocalPort, tcpEStatsConnectRemAddressType, tcpEStatsConnectRemAddress, tcpEStatsConnectRemPort } ::= { tcpEStatsConnectIdTable 1 } Mathis, et al [Page 16] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 TcpEStatsConnectIdEntry ::= SEQUENCE { tcpEStatsConnectLocalAddressType InetAddressType, tcpEStatsConnectLocalAddress InetAddress, tcpEStatsConnectLocalPort InetPortNumber, tcpEStatsConnectRemAddressType InetAddressType, tcpEStatsConnectRemAddress InetAddress, tcpEStatsConnectRemPort InetPortNumber, tcpEStatsConnectIndex Unsigned32 } tcpEStatsConnectLocalAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS not-accessible STATUS current DESCRIPTION "The address type of tcpEStatsConnectLocalAddress." ::= { tcpEStatsConnectIdEntry 1 } tcpEStatsConnectLocalAddress OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The local IP address for this TCP connection.The type of this address is determined by the value of tcpEStatsConnectLocalAddressType. As this object is used in the index for the tcpEStatsConnectIdTable, implementors of this table should be careful not to create entries that would result in OIDs with more than 128 sub-identifiers; else the information cannot be accessed using SNMPv1, SNMPv2c or SNMPv3." ::= { tcpEStatsConnectIdEntry 2 } tcpEStatsConnectLocalPort OBJECT-TYPE SYNTAX InetPortNumber MAX-ACCESS not-accessible STATUS current DESCRIPTION "The local port number for this TCP connection." ::= {tcpEStatsConnectIdEntry 3 } tcpEStatsConnectRemAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS not-accessible STATUS current DESCRIPTION "The address type of tcpEStatsConnectRemAddress." Mathis, et al [Page 17] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 ::= { tcpEStatsConnectIdEntry 4 } tcpEStatsConnectRemAddress OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The remote IP address for this TCP connection. The type of this address is determined by the value of tcpEStatsConnectRemAddressType. As this object is used in the index for the tcpEStatsConnectIdTable, implementors of this table should be careful not to create entries that would result in OIDs with more than 128 sub-identifiers; else the information cannot be accessed using SNMPv1, SNMPv2c or SNMPv3." ::= { tcpEStatsConnectIdEntry 5 } tcpEStatsConnectRemPort OBJECT-TYPE SYNTAX InetPortNumber MAX-ACCESS not-accessible STATUS current DESCRIPTION "The remote port number for this TCP connection." ::= { tcpEStatsConnectIdEntry 6 } tcpEStatsConnectIndex OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "A unique integer value assigned to each TCP Connection entry. Assignment will begin at 1 and increase to the maximum value and then start again at 1 skipping in use values." ::= { tcpEStatsConnectIdEntry 7 } -- ================================================================ -- -- Basic TCP Performance Statistics -- tcpEStatsPerfTable OBJECT-TYPE SYNTAX SEQUENCE OF TcpEStatsPerfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains objects that are useful for Mathis, et al [Page 18] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 measuring TCP performance and first line problem diagnosis. Most objects in this table directly expose some TCP state variable or are easily implemented as simple functions (e.g. Maximum) of TCP state variables." ::= { tcpEStats 2 } tcpEStatsPerfEntry OBJECT-TYPE SYNTAX TcpEStatsPerfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Each entry in this table has information about the characteristics of each active and recently closed tcp connection." INDEX { tcpEStatsConnectIndex } ::= { tcpEStatsPerfTable 1 } TcpEStatsPerfEntry ::= SEQUENCE { tcpEStatsPerfState INTEGER, tcpEStatsPerfSACK TruthValue, tcpEStatsPerfTimeStamps TruthValue, tcpEStatsPerfECN TruthValue, tcpEStatsPerfNagle TruthValue, tcpEStatsPerfSndWindScale Integer32, tcpEStatsPerfRcvWindScale Integer32, tcpEStatsPerfActiveOpen TruthValue, tcpEStatsPerfSegsOut ZeroBasedCounter32, tcpEStatsPerfDataSegsOut ZeroBasedCounter32, tcpEStatsPerfDataOctetsOut ZeroBasedCounter32, tcpEStatsPerfHCDataOctetsOut ZeroBasedCounter64, tcpEStatsPerfSegsIn ZeroBasedCounter32, tcpEStatsPerfDataSegsIn ZeroBasedCounter32, tcpEStatsPerfDataOctetsIn ZeroBasedCounter32, tcpEStatsPerfHCDataOctetsIn ZeroBasedCounter64, tcpEStatsPerfCurMSS Gauge32, tcpEStatsPerfSndUna Counter32, tcpEStatsPerfSndNxt Integer32, tcpEStatsPerfSndMax Counter32, tcpEStatsPerfThruOctetsAcked ZeroBasedCounter32, tcpEStatsPerfHCThruOctetsAcked ZeroBasedCounter64, tcpEStatsPerfRcvNxt Counter32, tcpEStatsPerfThruOctetsReceived ZeroBasedCounter32, tcpEStatsPerfHCThruOctetsReceived ZeroBasedCounter64, tcpEStatsPerfElapsedSecs ZeroBasedCounter32, tcpEStatsPerfElapsedMicroSecs ZeroBasedCounter32, tcpEStatsPerfStartTimeStamp DateAndTime, tcpEStatsPerfSndLimTransRwin ZeroBasedCounter32, Mathis, et al [Page 19] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 tcpEStatsPerfSndLimTransCwnd ZeroBasedCounter32, tcpEStatsPerfSndLimTransSnd ZeroBasedCounter32, tcpEStatsPerfSndLimTimeRwin ZeroBasedCounter32, tcpEStatsPerfSndLimTimeCwnd ZeroBasedCounter32, tcpEStatsPerfSndLimTimeSnd ZeroBasedCounter32, tcpEStatsPerfCongSignals ZeroBasedCounter32, tcpEStatsPerfCurCwnd Gauge32, tcpEStatsPerfMaxSsCwnd Gauge32, tcpEStatsPerfMaxCaCwnd Gauge32, tcpEStatsPerfCurSsthresh Gauge32, tcpEStatsPerfMaxSsthresh Gauge32, tcpEStatsPerfMinSsthresh Gauge32, tcpEStatsPerfTimeouts ZeroBasedCounter32, tcpEStatsPerfSegsRetrans ZeroBasedCounter32, tcpEStatsPerfOctetsRetrans ZeroBasedCounter32, tcpEStatsPerfDupAcksIn ZeroBasedCounter32, tcpEStatsPerfRetranThresh Gauge32, tcpEStatsPerfSampleRTT Gauge32, tcpEStatsPerfSmoothedRTT Gauge32, tcpEStatsPerfRTTVar Gauge32, tcpEStatsPerfMaxRTT Gauge32, tcpEStatsPerfMinRTT Gauge32, tcpEStatsPerfSumRTT ZeroBasedCounter32, tcpEStatsPerfHCSumRTT ZeroBasedCounter64, tcpEStatsPerfCountRTT ZeroBasedCounter32, tcpEStatsPerfCurRTO Gauge32, tcpEStatsPerfMaxRTO Gauge32, tcpEStatsPerfMinRTO Gauge32, tcpEStatsPerfCurRwinSent Gauge32, tcpEStatsPerfMaxRwinSent Gauge32, tcpEStatsPerfZeroRwinSent Gauge32, tcpEStatsPerfDupAckEpisodes ZeroBasedCounter32, tcpEStatsPerfDupAcksOut ZeroBasedCounter32, tcpEStatsPerfCurRwinRcvd Gauge32, tcpEStatsPerfMaxRwinRcvd Gauge32, tcpEStatsPerfZeroRwinRcvd Gauge32 } -- -- The following objects indicate if various TCP features -- (options) or algorithms are enabled. -- tcpEStatsPerfState OBJECT-TYPE SYNTAX INTEGER { wcStateClosed(1), wcStateListen(2), wcStateSynSent(3), Mathis, et al [Page 20] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 wcStateSynReceived(4), wcStateEstablished(5), wcStateFinWait1(6), wcStateFinWait2(7), wcStateCloseWait(8), wcStateLastAck(9), wcStateClosing(10), wcStateTimeWait(11), wcStateDeleteTcb(12) } MAX-ACCESS read-only STATUS current DESCRIPTION "An integer value representing the connection state from the TCP State Transition Diagram. See [RFC793]. The value listen(2) is included only for parallelism to the old tcpConnTable, and should not be used because the listen state in managed by the tcpListenerTable. The value DeleteTcb(12) is included only for parallelism to the tcpConnTable mechanism for terminating connections, although this table does not permit writing." ::= { tcpEStatsPerfEntry 1 } tcpEStatsPerfSACK OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "True(1) if SACK has been negotiated on, else false(2). See [RFC2018]." ::= { tcpEStatsPerfEntry 2 } tcpEStatsPerfTimeStamps OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "True(1) if timestamps have been negotiated on, else false(2). See [RFC1323]." ::= { tcpEStatsPerfEntry 3 } tcpEStatsPerfECN OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION Mathis, et al [Page 21] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 "True(1) if ECN has been negotiated on, else false(2). See [RFC3168]." ::= { tcpEStatsPerfEntry 4 } tcpEStatsPerfNagle OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "True(1) if the Nagle algorithm is being used, else false(2). See [RFC896] and [RFC1122]." ::= { tcpEStatsPerfEntry 5 } tcpEStatsPerfSndWindScale OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The value of Snd.Wind.Scale from [RFC1323]. Note that tcpEStatsPerfSndWindScale is either zero or the same as tcpEStatsStackWinScaleRcvd." ::= { tcpEStatsPerfEntry 6 } tcpEStatsPerfRcvWindScale OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The value of Rcv.Wind.Scale from [RFC1323]. Note that tcpEStatsPerfRcvWindScale is either zero or the same as tcpEStatsStackWinScaleSent." ::= { tcpEStatsPerfEntry 7 } tcpEStatsPerfActiveOpen OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "True(1) if the local connection traversed the SYN-SENT state, else false(2). See [RFC793]." ::= { tcpEStatsPerfEntry 8 } -- -- The following objects provide statistics on aggregate -- segments and data sent on a connection. These provide a -- direct measure of the Internet capacity consumed by a -- connection. -- Mathis, et al [Page 22] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 tcpEStatsPerfSegsOut OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of segments sent." ::= { tcpEStatsPerfEntry 9 } tcpEStatsPerfDataSegsOut OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of segments sent containing a positive length data segment." ::= { tcpEStatsPerfEntry 10 } tcpEStatsPerfDataOctetsOut OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of octets of data contained in transmitted segments, including retransmitted data. Note that this does not include TCP headers." ::= { tcpEStatsPerfEntry 11 } tcpEStatsPerfHCDataOctetsOut OBJECT-TYPE SYNTAX ZeroBasedCounter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of octets of data contained in transmitted segments, including retransmitted data, on systems that can transmit more than 10 million bits per second. Note that this does not include TCP headers." ::= { tcpEStatsPerfEntry 12 } tcpEStatsPerfSegsIn OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of segments received." ::= { tcpEStatsPerfEntry 13 } tcpEStatsPerfDataSegsIn OBJECT-TYPE SYNTAX ZeroBasedCounter32 Mathis, et al [Page 23] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of segments received containing a positive length data segment." ::= { tcpEStatsPerfEntry 14 } tcpEStatsPerfDataOctetsIn OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of octets contained in received data segments, including retransmitted data. Note that this does not include TCP headers." ::= { tcpEStatsPerfEntry 15 } tcpEStatsPerfHCDataOctetsIn OBJECT-TYPE SYNTAX ZeroBasedCounter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of octets contained in received data segments, including retransmitted data, on systems that can receive more than 10 million bits per second. Note that this does not include TCP headers." ::= { tcpEStatsPerfEntry 16 } tcpEStatsPerfCurMSS OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The current maximum segment size (MSS), in octets." ::= { tcpEStatsPerfEntry 17 } -- -- The following object provide throughput statistics for the -- connection including sequence numbers and elapsed time. -- These permit direct observation of the applications -- progress, in terms of elapsed data delivery and elapsed -- time. See [RFC793]. -- tcpEStatsPerfSndUna OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current Mathis, et al [Page 24] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 DESCRIPTION "The value of SND.UNA, the oldest unacknowledged sequence number." ::= { tcpEStatsPerfEntry 18 } tcpEStatsPerfSndNxt OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The value of SND.NXT, the next sequence number to be sent. Note that SndNxt is not a monotonic (and thus not a counter) because TCP sometimes retransmits lost data by pulling SndNxt back to the missing data." ::= { tcpEStatsPerfEntry 19 } tcpEStatsPerfSndMax OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The farthest forward (right most or largest) SND.NXT value. Note that this will be equal to tcpEStatsPerfSndNxt except when tcpEStatsPerfSndNxt is pulled back during recovery." ::= { tcpEStatsPerfEntry 20 } tcpEStatsPerfThruOctetsAcked OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of octets for which cumulative acknowledgments have been received. Note that this will be the sum of changes to tcpEStatsPerfSndUna." ::= { tcpEStatsPerfEntry 21 } tcpEStatsPerfHCThruOctetsAcked OBJECT-TYPE SYNTAX ZeroBasedCounter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of octets for which cumulative acknowledgments have been received, on systems that can receive more than 10 million bits per second. Note that this will be the sum of changes in tcpEStatsPerfSndUna." ::= { tcpEStatsPerfEntry 22 } tcpEStatsPerfRcvNxt OBJECT-TYPE Mathis, et al [Page 25] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The value of RCV.NXT from [RFC793]. The next sequence number expected on an incoming segment, and the left or lower edge of the receive window." ::= { tcpEStatsPerfEntry 23 } tcpEStatsPerfThruOctetsReceived OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of octets for which cumulative acknowledgments have been sent. Note that this will be the sum of changes to tcpEStatsPerfRcvNxt." ::= { tcpEStatsPerfEntry 24 } tcpEStatsPerfHCThruOctetsReceived OBJECT-TYPE SYNTAX ZeroBasedCounter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of octets for which cumulative acknowledgments have been sent, on systems that can transmit more than 10 million bits per second. Note that this will be the sum of changes in tcpEStatsPerfRcvNxt." ::= { tcpEStatsPerfEntry 25 } tcpEStatsPerfElapsedSecs OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The seconds part of the time elapsed between tcpEStatsPerfStartTimeStamp and the most recent protocol event (segment sent or received)." ::= { tcpEStatsPerfEntry 26 } tcpEStatsPerfElapsedMicroSecs OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The micro-second part of time elapsed between tcpEStatsPerfStartTimeStamp to the most recent protocol event (segment sent or received). This may be updated in Mathis, et al [Page 26] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 what ever time granularity is the system supports." ::= { tcpEStatsPerfEntry 27 } tcpEStatsPerfStartTimeStamp OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "Time at which this row was created and all ZeroBasedCounters in the row were initialized to zero." ::= { tcpEStatsPerfEntry 28 } -- -- The next group of instruments can be used to quickly -- identify which subsystems are limiting TCP performance. -- There are three parallel pairs of instruments that measure -- the extent to which TCP performance is limited by the the -- announced receiver window (indicating a receiver -- bottleneck), the current congestion window or -- retransmission timeout (indicating a path bottleneck) and -- all others events (indicating a sender bottleneck). -- -- These instruments should be updated every time the TCP -- output routine stops sending data. The elapsed time since -- the previous stop is accumulated into the appropriate -- object as determined by the previous stop reason (e.g. stop -- state). The current stop reason determines which timer will -- be updated the next time TCP output stops. -- -- Since there is no explicit stop at the beginning of a -- timeout, it is necessary to retroactively reclassify the -- previous stop as 'Congestion Limited'. -- tcpEStatsPerfSndLimTransRwin OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of transitions into the 'Receiver Limited' state from either the 'Congestion Limited' or 'Sender Limited' states. This state is entered whenever TCP transmission stops because the sender has filled the announced receiver window." ::= { tcpEStatsPerfEntry 29 } tcpEStatsPerfSndLimTransCwnd OBJECT-TYPE SYNTAX ZeroBasedCounter32 Mathis, et al [Page 27] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of transitions into the 'Congestion Limited' state from either the 'Receiver Limited' or 'Sender Limited' states. This state is entered whenever TCP transmission stops because the sender has reached some limit defined by congestion control (e.g. cwnd) or other algorithms (retransmission timeouts) designed to control network traffic." ::= { tcpEStatsPerfEntry 30 } tcpEStatsPerfSndLimTransSnd OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of transitions into the 'Sender Limited' state from either the 'Receiver Limited' or 'Congestion Limited' states. This state is entered whenever TCP transmission stops due to some sender limit such as running out of application data or other resources and the Karn algorithm. When TCP stops sending data for any reason which can not be classified as Receiver Limited or Congestion Limited it must be treated as Sender Limited." ::= { tcpEStatsPerfEntry 31 } tcpEStatsPerfSndLimTimeRwin OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The cumulative time (in milliseconds) spent in the 'Receiver Limited' state. See tcpEStatsPerfSndLimTransRwin." ::= { tcpEStatsPerfEntry 32 } tcpEStatsPerfSndLimTimeCwnd OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The cumulative time (in milliseconds) spent in the 'Congestion Limited' state. See tcpEStatsPerfSndLimTransCwnd. When there is a retransmission timeout, it should be counted in tcpEStatsPerfSndLimTimeCwnd (and not the cumulative time for some other state.)" ::= { tcpEStatsPerfEntry 33 } Mathis, et al [Page 28] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 tcpEStatsPerfSndLimTimeSnd OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The cumulative time (in milliseconds) spent in the 'Sender Limited' state. See tcpEStatsPerfSndLimTransSnd." ::= { tcpEStatsPerfEntry 34 } -- -- The following objects instrument the overall operation of -- TCP congestion control and data retransmissions. These -- instruments are sufficient to fit the actual performance to -- an updated macroscopic performance model [RFC2581] [Mat97] -- [Pad98]. -- tcpEStatsPerfCongSignals OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of multiplicative downward congestion window adjustments due to all forms of congestion signals, including Fast Retransmit, ECN and timeouts. Note that retransmission timeouts multiplicatively reduce the window implicitly by setting ssthresh, and should be included in tcpEStatsPerfCongSignals. In order to minimize spurious congestion indications due to out-of-order segments, tcpEStatsPerfCongSignals should be incremented in association with the Fast Retransmit algorithm." ::= { tcpEStatsPerfEntry 35 } tcpEStatsPerfCurCwnd OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The current congestion window, in octets. See [RFC2581]." ::= { tcpEStatsPerfEntry 36 } tcpEStatsPerfMaxSsCwnd OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum congestion window used during Slow Start, in Mathis, et al [Page 29] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 octets." ::= { tcpEStatsPerfEntry 37 } tcpEStatsPerfMaxCaCwnd OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum congestion window used during Congestion Avoidance, in octets." ::= { tcpEStatsPerfEntry 38 } tcpEStatsPerfCurSsthresh OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The current slow start threshold in octets. See [RFC2581]." ::= { tcpEStatsPerfEntry 39 } tcpEStatsPerfMaxSsthresh OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum slow start threshold, excluding the initial value." ::= { tcpEStatsPerfEntry 40 } tcpEStatsPerfMinSsthresh OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The minimum slow start threshold." ::= { tcpEStatsPerfEntry 41 } tcpEStatsPerfTimeouts OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times the retransmit timeout has expired when the RTO backoff multiplier is equal to one. See [RFC2988]." ::= { tcpEStatsPerfEntry 42 } tcpEStatsPerfSegsRetrans OBJECT-TYPE SYNTAX ZeroBasedCounter32 Mathis, et al [Page 30] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of segments transmitted containing at least some retransmitted data." ::= { tcpEStatsPerfEntry 43 } tcpEStatsPerfOctetsRetrans OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of octets retransmitted." ::= { tcpEStatsPerfEntry 44 } tcpEStatsPerfDupAcksIn OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of duplicate ACKs received." ::= { tcpEStatsPerfEntry 45 } tcpEStatsPerfRetranThresh OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of duplicate acknowledgments required to trigger Fast Retransmit." ::= { tcpEStatsPerfEntry 46 } -- -- The following objects instrument the round trip time -- estimator and the retransmission timeout timer. See -- [RFC2988]. -- tcpEStatsPerfSampleRTT OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The most recent raw round trip time measurement, in milliseconds, used in calculation of the RTO." ::= { tcpEStatsPerfEntry 47 } tcpEStatsPerfSmoothedRTT OBJECT-TYPE Mathis, et al [Page 31] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The smoothed round trip time, in milliseconds, used in calculation of the RTO. See SRTT in [RFC2988]." ::= { tcpEStatsPerfEntry 48 } tcpEStatsPerfRTTVar OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The round trip time variation, in milliseconds, used in calculation of the RTO. See RTTVAR in [RFC2988]." ::= { tcpEStatsPerfEntry 49 } tcpEStatsPerfMaxRTT OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum sampled round trip time, in milliseconds." ::= { tcpEStatsPerfEntry 50 } tcpEStatsPerfMinRTT OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The minimum sampled round trip time, in milliseconds." ::= { tcpEStatsPerfEntry 51 } tcpEStatsPerfSumRTT OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The sum of all sampled round trip times, in milliseconds." ::= { tcpEStatsPerfEntry 52 } tcpEStatsPerfHCSumRTT OBJECT-TYPE SYNTAX ZeroBasedCounter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The sum of all sampled round trip times, in milliseconds, on all systems that implement multiple concurrent RTT Mathis, et al [Page 32] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 measurements." ::= { tcpEStatsPerfEntry 53 } tcpEStatsPerfCountRTT OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of round trip time samples included in tcpEStatsPerfSumRTT." ::= { tcpEStatsPerfEntry 54 } tcpEStatsPerfCurRTO OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The current value of the retransmit timer RTO, in milliseconds, not scaled by the RTO backoff multiplier. See [RFC2988]." ::= { tcpEStatsPerfEntry 55 } tcpEStatsPerfMaxRTO OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum value of the retransmit timer RTO, in milliseconds, not scaled by the RTO backoff multiplier. See [RFC2988]." ::= { tcpEStatsPerfEntry 56 } tcpEStatsPerfMinRTO OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The minimum value of the retransmit timer RTO, in milliseconds, not scaled by the RTO backoff multiplier. See [RFC2988]." ::= { tcpEStatsPerfEntry 57 } -- -- The following objects instrument the local receiver. Nearly -- all other instruments report how well the local sender is -- coping with the path and application. These objects -- instrument how the receiver is processing incoming data. -- Mathis, et al [Page 33] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 tcpEStatsPerfCurRwinSent OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The most recent window advertisement sent, in octets." ::= { tcpEStatsPerfEntry 58 } tcpEStatsPerfMaxRwinSent OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum window advertisement sent, in octets." ::= { tcpEStatsPerfEntry 59 } tcpEStatsPerfZeroRwinSent OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of acknowledgements sent announcing a zero receive window, when the previously announced window was not zero." ::= { tcpEStatsPerfEntry 60 } tcpEStatsPerfDupAckEpisodes OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times that a contiguous series of duplicate acknowledgments have been sent." ::= { tcpEStatsPerfEntry 61 } tcpEStatsPerfDupAcksOut OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of duplicate ACKs sent." ::= { tcpEStatsPerfEntry 62 } -- -- The following objects instrument receiver window updates -- from the far end-system to determine if the remote receiver -- has sufficient buffer space or is exerting flow-control -- back pressure on the local sender. These can also be Mathis, et al [Page 34] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 -- observed directly from a packet trace collected anywhere -- along the network path, including at the receiver. -- tcpEStatsPerfCurRwinRcvd OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The most recent window advertisement received, in octets." ::= { tcpEStatsPerfEntry 63 } tcpEStatsPerfMaxRwinRcvd OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum window advertisement received, in octets." ::= { tcpEStatsPerfEntry 64 } tcpEStatsPerfZeroRwinRcvd OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of acknowledgements received announcing a zero receive window, when the previously announced window was not zero." ::= { tcpEStatsPerfEntry 65 } -- ================================================================ -- -- Statistics for diagnosing path problems -- tcpEStatsPathTable OBJECT-TYPE SYNTAX SEQUENCE OF TcpEStatsPathEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains objects that can be used to infer detailed behavior of the Internet path, such as the extent that there is reordering, ECN bits and if RTT fluctuations are correlated to losses." ::= { tcpEStats 3 } tcpEStatsPathEntry OBJECT-TYPE SYNTAX TcpEStatsPathEntry Mathis, et al [Page 35] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 MAX-ACCESS not-accessible STATUS current DESCRIPTION "Each entry in this table has information about the characteristics of each active and recently closed tcp connection." INDEX { tcpEStatsConnectIndex } ::= { tcpEStatsPathTable 1 } TcpEStatsPathEntry ::= SEQUENCE { tcpEStatsPathIpTtl Integer32, tcpEStatsPathIpTosIn Integer32, tcpEStatsPathIpTosOut Integer32, tcpEStatsPathPreCongSumCwnd ZeroBasedCounter32, tcpEStatsPathPreCongSumRTT ZeroBasedCounter32, tcpEStatsPathPostCongSumRTT ZeroBasedCounter32, tcpEStatsPathPostCongCountRTT ZeroBasedCounter32, tcpEStatsPathECNsignals ZeroBasedCounter32, tcpEStatsPathECERcvd ZeroBasedCounter32, tcpEStatsPathQuenchRcvd ZeroBasedCounter32, tcpEStatsPathNonRecovDAEpisodes Integer32, tcpEStatsPathSumOctetsReordered Integer32, tcpEStatsPathNonRecovDA ZeroBasedCounter32, tcpEStatsPathAckAfterFR ZeroBasedCounter32, tcpEStatsPathCERcvd ZeroBasedCounter32, tcpEStatsPathECNSent ZeroBasedCounter32, tcpEStatsPathECNNonceRcvd ZeroBasedCounter32 } -- -- The following objects provide information about how TCP is -- using the IP layer. -- tcpEStatsPathIpTtl OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The value of the TTL field carried in the most recently received IP header. This is sometimes useful to detect changing or unstable routes." ::= { tcpEStatsPathEntry 1 } tcpEStatsPathIpTosIn OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current Mathis, et al [Page 36] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 DESCRIPTION "The value of the IPv4 Type Of Service octet, or the IPv6 traffic class octet, carried in the most recently received IP header. See [RFC2474] and [RFC3260]. This is useful to diagnose interactions between TCP and any IP layer packet scheduling and delivery policy, which might be in effect to implement QoS." ::= { tcpEStatsPathEntry 2 } tcpEStatsPathIpTosOut OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The value of the IPv4 Type Of Service octet, or the IPv6 traffic class octet, carried in the most recently transmitted IP header. See [RFC2474] and [RFC3260]. This is useful to diagnose interactions between TCP and any IP layer packet scheduling and delivery policy, which might be in effect to implement QoS." ::= { tcpEStatsPathEntry 3 } -- -- The following objects characterize the congestion feedback -- signals by collecting statistics on how the congestion -- events are correlated to losses, changes in RTT and other -- protocol events. -- tcpEStatsPathPreCongSumCwnd OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The sum of the values of the congestion window, in octets, captured each time a congestion signal is received. This MUST be updated each time tcpEStatsPerfCongSignals is incremented, such that the ratio is the average window at congestion." ::= { tcpEStatsPathEntry 4 } tcpEStatsPathPreCongSumRTT OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION Mathis, et al [Page 37] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 "Sum of the last sample of the RTT (tcpEStatsPerfSampleRTT) prior to received congestion signals. This MUST be updated each time tcpEStatsPerfCongSignals is incremented, such that the ratio is the average RTT just prior to congestion." ::= { tcpEStatsPathEntry 5 } tcpEStatsPathPostCongSumRTT OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Sum of the first RTT sample following a received congestion signal." ::= { tcpEStatsPathEntry 6 } tcpEStatsPathPostCongCountRTT OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of RTT samples included in tcpEStatsPathPostCongSumRTT and tcpEStatsPathPostCongHCSumRTT, such that the ratio is average RTT just after congestion." ::= { tcpEStatsPathEntry 7 } -- -- The following objects can be used to detect other types of -- non-loss congestion signals such as source quench or ECN. -- tcpEStatsPathECNsignals OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of congestion signals delivered via all forms of explicit congestion notification including the ECE bit and failing the ECN nonce check, etc." ::= { tcpEStatsPathEntry 8 } tcpEStatsPathECERcvd OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of congestion signals received via the [RFC3168] ECE bit." Mathis, et al [Page 38] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 ::= { tcpEStatsPathEntry 9 } tcpEStatsPathQuenchRcvd OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of ICMP quench messages that are treated as congestion signals." ::= { tcpEStatsPathEntry 10 } tcpEStatsPathNonRecovDAEpisodes OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of duplicate acknowledgment episodes that did not trigger a Fast Retransmit because ACK advanced prior to the number of duplicate acknowledgements reaching RetranThresh. See [RFC2581]. In many implementations this is the number of times the 'dupacks' counter is set to zero when it is non-zero but less than RetranThresh. Note that tcpEStatsPathNonRecovDAEpisodes divided by tcpEStatsPerfDataSegsOut is an estimate of the frequency of data reordering on the forward path." ::= { tcpEStatsPathEntry 11 } tcpEStatsPathSumOctetsReordered OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The sum of the amounts SND.UNA advances on the acknowledgment which ends a dup-ack episode without a retransmission. Note tcpEStatsPathSumOctetsReordered divided by tcpEStatsPathNonRecovDAEpisodes is an estimates of the average reordering distance, in octets." ::= { tcpEStatsPathEntry 12 } tcpEStatsPathNonRecovDA OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current Mathis, et al [Page 39] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 DESCRIPTION "Duplicate acks (or SACKS) that did not trigger a Fast Retransmit because ACK advanced prior to the number of duplicate acknowledgements reaching RetranThresh. In many implementations, this is the sum of the 'dupacks' counter, just before it is set to zero because ACK advanced without a Fast Retransmit. Note that tcpEStatsPathNonRecovDA divided by tcpEStatsPathNonRecovDAEpisodes is an estimate of the average reordering distance in segments." ::= { tcpEStatsPathEntry 13 } tcpEStatsPathAckAfterFR OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of acknowledgments reporting out-of-order segments after the segments have already be retransmitted (For example as detected by the Eiffle algorithm, [RFC3522])." ::= { tcpEStatsPathEntry 14 } tcpEStatsPathCERcvd OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Received segments with Congestion Experienced bits. See [RFC3168]." ::= { tcpEStatsPathEntry 15 } tcpEStatsPathECNSent OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of times CE bits have set ECN. See [RFC3168]." ::= { tcpEStatsPathEntry 16 } tcpEStatsPathECNNonceRcvd OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of ECN Nonces received. Note that the low bit is the Mathis, et al [Page 40] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 same as the one bit nonce sum." ::= { tcpEStatsPathEntry 17 } -- ================================================================ -- -- Statistics for diagnosing stack algorithms -- tcpEStatsStackTable OBJECT-TYPE SYNTAX SEQUENCE OF TcpEStatsStackEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains objects that are most useful for determining how well some of the more TCP control algorithms are coping with this particular path." ::= { tcpEStats 4 } tcpEStatsStackEntry OBJECT-TYPE SYNTAX TcpEStatsStackEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Each entry in this table has information about the characteristics of each active and recently closed tcp connection." INDEX { tcpEStatsConnectIndex } ::= { tcpEStatsStackTable 1 } TcpEStatsStackEntry ::= SEQUENCE { tcpEStatsStackMSSSent Unsigned32, tcpEStatsStackMSSRcvd Unsigned32, tcpEStatsStackWinScaleSent Integer32, tcpEStatsStackWinScaleRcvd Integer32, tcpEStatsStackSACKokSent TruthValue, tcpEStatsStackSACKokRcvd TruthValue, tcpEStatsStackTimeStampSent TruthValue, tcpEStatsStackTimeStampRcvd TruthValue, tcpEStatsStackSoftErrors ZeroBasedCounter32, tcpEStatsStackSoftErrorReason INTEGER, tcpEStatsStackSndInitial Counter32, tcpEStatsStackRecInitial Counter32, tcpEStatsStackSlowStart ZeroBasedCounter32, tcpEStatsStackCongAvoid ZeroBasedCounter32, tcpEStatsStackOtherReductions ZeroBasedCounter32, tcpEStatsStackCongOverCount ZeroBasedCounter32, tcpEStatsStackFastRetran ZeroBasedCounter32, Mathis, et al [Page 41] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 tcpEStatsStackSubsequentTimeouts ZeroBasedCounter32, tcpEStatsStackCurTimeoutCount Gauge32, tcpEStatsStackAbruptTimeouts ZeroBasedCounter32, tcpEStatsStackSACKsRcvd ZeroBasedCounter32, tcpEStatsStackSACKBlocksRcvd ZeroBasedCounter32, tcpEStatsStackSendStall ZeroBasedCounter32, tcpEStatsStackDSACKDups ZeroBasedCounter32, tcpEStatsStackMaxMSS Gauge32, tcpEStatsStackMinMSS Gauge32, tcpEStatsStackCurRetxQueue Gauge32, tcpEStatsStackMaxRetxQueue Gauge32, tcpEStatsStackCurReasmQueue Gauge32, tcpEStatsStackMaxReasmQueue Gauge32 } -- -- The following objects reflect the options requested on the -- SYN and/or SYN-ACK. These are useful for debugging problems -- with TCP option negotiation. -- tcpEStatsStackMSSSent OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The value sent in an MSS option, or zero if none." ::= { tcpEStatsStackEntry 1 } tcpEStatsStackMSSRcvd OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The value received in an MSS option, or zero if none." ::= { tcpEStatsStackEntry 2 } tcpEStatsStackWinScaleSent OBJECT-TYPE SYNTAX Integer32 (-1..14) MAX-ACCESS read-only STATUS current DESCRIPTION "The value of the transmitted window scale option if one was sent; otherwise, a value of -1. See [RFC1323]." ::= { tcpEStatsStackEntry 3 } tcpEStatsStackWinScaleRcvd OBJECT-TYPE SYNTAX Integer32 (-1..14) Mathis, et al [Page 42] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 MAX-ACCESS read-only STATUS current DESCRIPTION "The value of the received window scale option if one was received; otherwise, a value of -1. See [RFC1323]." ::= { tcpEStatsStackEntry 4 } tcpEStatsStackSACKokSent OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "True(1) if SACKok option was sent, else false(2). See [RFC2018]." ::= { tcpEStatsStackEntry 5 } tcpEStatsStackSACKokRcvd OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "True(1) if SACKok option was received, else false(2). See [RFC2018]." ::= { tcpEStatsStackEntry 6 } tcpEStatsStackTimeStampSent OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "True(1) if Timestamp option was sent, else false(2). See [RFC1323]." ::= { tcpEStatsStackEntry 7 } tcpEStatsStackTimeStampRcvd OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "True(1) if Timestamp option was received, else false(2). See [RFC1323]." ::= { tcpEStatsStackEntry 8 } -- -- The following objects instrument unusual protocol events -- that probably indicate implementation problems in the -- protocol or path. -- Mathis, et al [Page 43] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 tcpEStatsStackSoftErrors OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number segments that fail various consistency tests during TCP input processing. Soft errors might cause the segment to be discard but some do not. Some of these soft errors cause the the generation of a TCP ancknowledgement, others are silently discarded." ::= { tcpEStatsStackEntry 9 } tcpEStatsStackSoftErrorReason OBJECT-TYPE SYNTAX INTEGER { belowDataWindow(1), aboveDataWindow(2), belowAckWindow(3), aboveAckWindow(4), belowTSWindow(5), aboveTSWindow(6), dataCheckSum(7), otherSoftError(8) } MAX-ACCESS read-only STATUS current DESCRIPTION "This object identities which consistency test most recently failed during tcp input processing. This object should be set every time tcpEStatsStackSoftErrors is incremented. The codes are as follows: belowDataWindow - All data in the segment is to below SND.UNA. (Normal for keep alives and possibly zero window probes). aboveDataWindow - Some data in the segment is above SND.WND. (Indicates an implementation bug or serious fraud). belowAckWindow - ACK below SND.UNA. (Indicates that the return path is reordering ACKs) aboveAckWindow - An ACK for data that we have not sent. (Indicates an implementation bug or serious fraud). belowTSWindow - TSecr on the segment is older than the current TS.Recent [RFC1323] (Normal for PAWS detecting data reordered by the network.) Mathis, et al [Page 44] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 aboveTSWindow - TSecr on the segment is newer than the current TS.Recent [RFC1323]. (Indicates an implementation bug or serious fraud). dataCheckSum - Incorrect checksum. Note that this value is intrinsicly fragile, because the header fields used to identify the connection may have been corrupted. otherSoftError - All other soft errors. Implementors are permitted to assign additional codes greater than 8 such that all SoftErrors in their implementation have unique codes. Management stations are to accumulate all unassigned codes as 'otherSoftErrors'" ::= { tcpEStatsStackEntry 10 } tcpEStatsStackSndInitial OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Initial send sequence number. Note that by definition tcpEStatsStackSndInitial never changes for a given connection. See [RFC793]." ::= { tcpEStatsStackEntry 11 } tcpEStatsStackRecInitial OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Initial receive sequence number. Note that by definition tcpEStatsStackRecInitial never changes for a given connection. See [RFC793]." ::= { tcpEStatsStackEntry 12 } -- -- The following objects expose the detailed operation of the -- congestion control algorithms. -- tcpEStatsStackSlowStart OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times the congestion window has been increased by the Slow Start algorithm. See [RFC2581]." Mathis, et al [Page 45] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 ::= { tcpEStatsStackEntry 13 } tcpEStatsStackCongAvoid OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times the congestion window has been increased by the Congestion Avoidance algorithm. See [RFC2581]." ::= { tcpEStatsStackEntry 14 } tcpEStatsStackOtherReductions OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of congestion window reductions made as a result of anything other than AIMD congestion control algorithms. Examples of non-multiplicative window reductions include experimental algorithms such as Vegas [Bra94], and Congestion Window Validation [RFC2861]. All window reductions MUST be counted as either tcpEStatsPerfCongSignals or tcpEStatsPerfOtherReductions." ::= { tcpEStatsStackEntry 15 } tcpEStatsStackCongOverCount OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of congestion events which were 'backed out' of the congestion control state machine such that the congestion window was restored to a prior value. This can happen due to the Eiffle algorithm [RFC3522] or other algorithms which can be used to detect and cancel spurious invocations of the Fast Retransmit Algorithm. Although it may be feasible to undo the effects of spurious invocation of the Fast Retransmit the congestion events can not easily be backed out of tcpEStatsPerfCongSignals and tcpEStatsPathPreCongSumCwnd, etc." ::= { tcpEStatsStackEntry 16 } tcpEStatsStackFastRetran OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only Mathis, et al [Page 46] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 STATUS current DESCRIPTION "The number of invocations of the Fast Retransmit algorithm. See [RFC2581]." ::= { tcpEStatsStackEntry 17 } tcpEStatsStackSubsequentTimeouts OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times the retransmit timeout has expired when the RTO backoff multiplier is greater than one. See [RFC2988]." ::= { tcpEStatsStackEntry 18 } tcpEStatsStackCurTimeoutCount OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The current number of times the retransmit timeout has expired without receiving an acknowledgment for new data. CurTimeoutCount is reset to zero when new data is acknowledged. See [RFC2988]." ::= { tcpEStatsStackEntry 19 } tcpEStatsStackAbruptTimeouts OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of timeouts that occurred without any immediately preceding duplicate acknowledgments or other indications of congestion. Abrupt Timeouts indicate that the path lost an entire window of data or acknowledgements. Timeouts that are preceded by duplicate acknowledgements or other congestion signals (e.g. ECN) are not counted as abrupt, and might have been avoided by a more sophisticated Fast Retransmit algorithm." ::= { tcpEStatsStackEntry 20 } tcpEStatsStackSACKsRcvd OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION Mathis, et al [Page 47] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 "The number of SACK options received. See [RFC2018]." ::= { tcpEStatsStackEntry 21 } tcpEStatsStackSACKBlocksRcvd OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of SACK blocks received (within SACK options)." ::= { tcpEStatsStackEntry 22 } tcpEStatsStackSendStall OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of interface stalls or other sender local resource limitations that are treated as congestion signals." ::= { tcpEStatsStackEntry 23 } tcpEStatsStackDSACKDups OBJECT-TYPE SYNTAX ZeroBasedCounter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of duplicate segments reported to the local host by D-SACK blocks. See [RFC2883]." ::= { tcpEStatsStackEntry 24 } -- -- The following objects instrument path MTU discovery. -- tcpEStatsStackMaxMSS OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum MSS, in octets. See [RFC1191]." ::= { tcpEStatsStackEntry 25 } tcpEStatsStackMinMSS OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The minimum MSS, in octets. See [RFC1191]." Mathis, et al [Page 48] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 ::= { tcpEStatsStackEntry 26 } -- -- The following objects instrument the senders buffer usage, -- including any buffering in the application interface to TCP -- and the retransmit queue. All 'buffer memory' instruments -- are assumed to include OS data structure overhead. -- tcpEStatsStackCurRetxQueue OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The current number of octets of data occupying the retransmit queue." ::= { tcpEStatsStackEntry 27 } tcpEStatsStackMaxRetxQueue OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum number of octets of data occupying the retransmit queue." ::= { tcpEStatsStackEntry 28 } tcpEStatsStackCurReasmQueue OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The current number of octets of sequence space spanned by the reassembly queue. This is generally the difference between rcv.nxt and the sequence number of the right most edge of the reassembly queue." ::= { tcpEStatsStackEntry 29 } tcpEStatsStackMaxReasmQueue OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum value of tcpEStatsStackCurReasmQueue" ::= { tcpEStatsStackEntry 30 } -- ================================================================ -- Mathis, et al [Page 49] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 -- Statistics for diagnosing interactions with applications -- tcpEStatsAppTable OBJECT-TYPE SYNTAX SEQUENCE OF TcpEStatsAppEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains objects that are useful for determining if the application using TCP is limiting TCP performance" ::= { tcpEStats 5 } tcpEStatsAppEntry OBJECT-TYPE SYNTAX TcpEStatsAppEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Each entry in this table has information about the characteristics of each active and recently closed tcp connection." INDEX { tcpEStatsConnectIndex } ::= { tcpEStatsAppTable 1 } TcpEStatsAppEntry ::= SEQUENCE { tcpEStatsAppCurAppWQueue Gauge32, tcpEStatsAppMaxAppWQueue Gauge32, tcpEStatsAppCurAppRQueue Gauge32, tcpEStatsAppMaxAppRQueue Gauge32 } tcpEStatsAppCurAppWQueue OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The current number of octets of application data buffered by TCP, pending first transmission. i.e. to the left of SND.NXT or SndMax. This data will generally be transmitted (and SND.NXT advanced to the left) as soon as there is available congestion window (cwnd) or receiver window (rwin). This is the amount of data readily available for transmission, without scheduling the application. TCP performance may suffer if there is insufficient queued write data." ::= { tcpEStatsAppEntry 1 } tcpEStatsAppMaxAppWQueue OBJECT-TYPE Mathis, et al [Page 50] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum number of octets of application data buffered by TCP, pending first transmission. This is the maximum value of tcpEStatsAppCurAppWQueue. This pair of objects can be used to determine if insufficient queued data is steady state (suggesting insufficient queue space) or transient (suggesting insufficient application performance or excessive CPU load or scheduler latency)." ::= { tcpEStatsAppEntry 2 } tcpEStatsAppCurAppRQueue OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The current number of octets of application data that has been acknowledged by TCP but not yet delivered to the application." ::= { tcpEStatsAppEntry 3 } tcpEStatsAppMaxAppRQueue OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum number of octets of application data that has been acknowledged by TCP but not yet delivered to the application." ::= { tcpEStatsAppEntry 4 } -- ================================================================ -- -- Controls for Tuning TCP -- tcpEStatsTuneTable OBJECT-TYPE SYNTAX SEQUENCE OF TcpEStatsTuneEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains per connection controls that can be used to work around a number of common problems that plague TCP over some paths. All can be characterize as limiting the growth of the congestion window so as to prevent TCP from overwhelming some component in the path." Mathis, et al [Page 51] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 ::= { tcpEStats 6 } tcpEStatsTuneEntry OBJECT-TYPE SYNTAX TcpEStatsTuneEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Each entry in this table has information about the characteristics of each active and recently closed tcp connection." INDEX { tcpEStatsConnectIndex } ::= { tcpEStatsTuneTable 1 } TcpEStatsTuneEntry ::= SEQUENCE { tcpEStatsTuneLimCwnd Gauge32, tcpEStatsTuneLimSsthresh Gauge32, tcpEStatsTuneLimRwin Gauge32 } tcpEStatsTuneLimCwnd OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-write STATUS current DESCRIPTION "A control to set the maximum congestion window which may be used, in octets." ::= { tcpEStatsTuneEntry 1 } tcpEStatsTuneLimSsthresh OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-write STATUS current DESCRIPTION "A control to limit the maximum queue space (in octets) that this TCP connection is likely to occupy during slowstart. It can be implemented with the algorithm described in RFC3742 by setting the max_sstrhesh parameter to twice tcpEStatsTuneLimSsthresh. This algorithm can be used to overcome some TCP performance problems over network paths that do not have sufficient buffering to withstand the bursts normally present during slowstart." ::= { tcpEStatsTuneEntry 2 } tcpEStatsTuneLimRwin OBJECT-TYPE SYNTAX Gauge32 Mathis, et al [Page 52] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 MAX-ACCESS read-write STATUS current DESCRIPTION "A control to set the maximum window advertisement which may be sent, in octets." ::= { tcpEStatsTuneEntry 3 } -- ================================================================ -- -- TCP Extended Statistics Notifications Group -- tcpEStatsEstablishNotification NOTIFICATION-TYPE OBJECTS { tcpEStatsConnectIndex } STATUS current DESCRIPTION "The indicated connection has been accepted (or alternatively entered the established state)." ::= { tcpEStatsNotifications 1 } tcpEStatsCloseNotification NOTIFICATION-TYPE OBJECTS { tcpEStatsConnectIndex } STATUS current DESCRIPTION "The indicated connection has left the established state" ::= { tcpEStatsNotifications 2 } -- ================================================================ -- -- Conformance Definitions -- tcpEStatsCompliances OBJECT IDENTIFIER ::= { tcpEStatsConformance 1 } tcpEStatsGroups OBJECT IDENTIFIER ::= { tcpEStatsConformance 2 } -- -- Compliance Statements -- tcpEStatsCompliance MODULE-COMPLIANCE STATUS current Mathis, et al [Page 53] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 DESCRIPTION "Compliance statement for all systems that implement TCP extended statistics." MODULE -- this module MANDATORY-GROUPS { tcpEStatsListenerGroup, tcpEStatsConnectIdGroup, tcpEStatsPerfGroup } GROUP tcpEStatsListenerHCGroup DESCRIPTION "This group is mandatory for all systems that can wrap the values of the 32-bit counters in tcpEStatsListenerGroup in less than one hour." GROUP tcpEStatsPerfHCGroup DESCRIPTION "This group is mandatory for systems that can wrap the values of the 32-bit counters in tcpEStatsPerfGroup in less than one hour. Note that any system that can attain 10 Mb/s can potentially wrap 32-Bit Octet counters in under one hour." GROUP tcpEStatsPathGroup DESCRIPTION "This group is optional for all systems." GROUP tcpEStatsStackGroup DESCRIPTION "This group is optional for all systems." GROUP tcpEStatsAppGroup DESCRIPTION "This group is optional for all systems." GROUP tcpEStatsTuneGroup DESCRIPTION "This group is optional for all systems." GROUP tcpEStatsNotificationsGroup DESCRIPTION "This group is optional for all systems." GROUP tcpEStatsNotificationsCtlGroup DESCRIPTION "This group is mandatory for systems that include the Mathis, et al [Page 54] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 tcpEStatsNotificationGroup." OBJECT tcpEStatsControlNotify MIN-ACCESS read-only DESCRIPTION "Write access is not required." ::= { tcpEStatsCompliances 1 } -- ================================================================ -- -- Units of Conformance -- tcpEStatsListenerGroup OBJECT-GROUP OBJECTS { tcpEStatsListenerTableLastChange, tcpEStatsListenerStartTime, tcpEStatsListenerSynRcvd, tcpEStatsListenerInitial, tcpEStatsListenerEstablished, tcpEStatsListenerAccepted, tcpEStatsListenerExceedBacklog, tcpEStatsListenerCurrConns, tcpEStatsListenerMaxBacklog, tcpEStatsListenerCurBacklog, tcpEStatsListenerCurEstabBacklog } STATUS current DESCRIPTION "The tcpEStatsListener group includes objects that provide valuable statistics and debugging information for TCP Listeners." ::= { tcpEStatsGroups 1 } tcpEStatsListenerHCGroup OBJECT-GROUP OBJECTS { tcpEStatsListenerHCSynRcvd, tcpEStatsListenerHCInitial, tcpEStatsListenerHCEstablished, tcpEStatsListenerHCAccepted, tcpEStatsListenerHCExceedBacklog } STATUS current DESCRIPTION "The tcpEStatsListenerHC group includes 64 bit counter in tcpEStatsListenerTable." ::= { tcpEStatsGroups 2 } Mathis, et al [Page 55] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 tcpEStatsConnectIdGroup OBJECT-GROUP OBJECTS { tcpEStatsConnTableLatency, tcpEStatsConnectIndex } STATUS current DESCRIPTION "The tcpEStatsConnectId group includes objects that identify TCP connections and control how long TCP connection entries are retained in the tables." ::= { tcpEStatsGroups 3 } tcpEStatsPerfGroup OBJECT-GROUP OBJECTS { tcpEStatsPerfState, tcpEStatsPerfSACK, tcpEStatsPerfTimeStamps, tcpEStatsPerfECN, tcpEStatsPerfNagle, tcpEStatsPerfSndWindScale, tcpEStatsPerfRcvWindScale, tcpEStatsPerfActiveOpen, tcpEStatsPerfSegsOut, tcpEStatsPerfDataSegsOut, tcpEStatsPerfDataOctetsOut, tcpEStatsPerfSegsIn, tcpEStatsPerfDataSegsIn, tcpEStatsPerfDataOctetsIn, tcpEStatsPerfCurMSS, tcpEStatsPerfSndUna, tcpEStatsPerfSndNxt, tcpEStatsPerfSndMax, tcpEStatsPerfThruOctetsAcked, tcpEStatsPerfRcvNxt, tcpEStatsPerfThruOctetsReceived, tcpEStatsPerfElapsedSecs, tcpEStatsPerfElapsedMicroSecs, tcpEStatsPerfStartTimeStamp, tcpEStatsPerfSndLimTransRwin, tcpEStatsPerfSndLimTransCwnd, tcpEStatsPerfSndLimTransSnd, tcpEStatsPerfSndLimTimeRwin, tcpEStatsPerfSndLimTimeCwnd, tcpEStatsPerfSndLimTimeSnd, tcpEStatsPerfCongSignals, tcpEStatsPerfCurCwnd, tcpEStatsPerfMaxSsCwnd, tcpEStatsPerfMaxCaCwnd, tcpEStatsPerfCurSsthresh, tcpEStatsPerfMaxSsthresh, tcpEStatsPerfMinSsthresh, tcpEStatsPerfTimeouts, tcpEStatsPerfSegsRetrans, tcpEStatsPerfOctetsRetrans, tcpEStatsPerfDupAcksIn, tcpEStatsPerfRetranThresh, tcpEStatsPerfSampleRTT, tcpEStatsPerfSmoothedRTT, tcpEStatsPerfRTTVar, tcpEStatsPerfMaxRTT, tcpEStatsPerfMinRTT, tcpEStatsPerfSumRTT, tcpEStatsPerfCountRTT, tcpEStatsPerfCurRTO, Mathis, et al [Page 56] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 tcpEStatsPerfMaxRTO, tcpEStatsPerfMinRTO, tcpEStatsPerfCurRwinSent, tcpEStatsPerfMaxRwinSent, tcpEStatsPerfZeroRwinSent, tcpEStatsPerfDupAckEpisodes, tcpEStatsPerfDupAcksOut, tcpEStatsPerfCurRwinRcvd, tcpEStatsPerfMaxRwinRcvd, tcpEStatsPerfZeroRwinRcvd } STATUS current DESCRIPTION "The tcpEStatsPerf group includes those objects that provide basic performance data for a TCP connection." ::= { tcpEStatsGroups 4 } tcpEStatsPerfHCGroup OBJECT-GROUP OBJECTS { tcpEStatsPerfHCDataOctetsOut, tcpEStatsPerfHCDataOctetsIn, tcpEStatsPerfHCThruOctetsAcked, tcpEStatsPerfHCThruOctetsReceived, tcpEStatsPerfHCSumRTT } STATUS current DESCRIPTION "The tcpEStatsPerfHC group includes 64 bit counters in the tcpEStatsPerfTable." ::= { tcpEStatsGroups 5 } tcpEStatsPathGroup OBJECT-GROUP OBJECTS { tcpEStatsControlPath, tcpEStatsPathIpTtl, tcpEStatsPathIpTosIn, tcpEStatsPathIpTosOut, tcpEStatsPathPreCongSumCwnd, tcpEStatsPathPreCongSumRTT, tcpEStatsPathPostCongSumRTT, tcpEStatsPathPostCongCountRTT, tcpEStatsPathECNsignals, tcpEStatsPathECERcvd, tcpEStatsPathQuenchRcvd, tcpEStatsPathNonRecovDAEpisodes, tcpEStatsPathSumOctetsReordered, tcpEStatsPathNonRecovDA, tcpEStatsPathAckAfterFR, tcpEStatsPathCERcvd, tcpEStatsPathECNSent, tcpEStatsPathECNNonceRcvd } STATUS current Mathis, et al [Page 57] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 DESCRIPTION "The tcpEStatsPath group includes objects that control the creation of the tcpEStatsPathTable, and provide information about the path for each TCP connection." ::= { tcpEStatsGroups 6 } tcpEStatsStackGroup OBJECT-GROUP OBJECTS { tcpEStatsControlStack, tcpEStatsStackMSSSent, tcpEStatsStackMSSRcvd, tcpEStatsStackWinScaleSent, tcpEStatsStackWinScaleRcvd, tcpEStatsStackSACKokSent, tcpEStatsStackSACKokRcvd, tcpEStatsStackTimeStampSent, tcpEStatsStackTimeStampRcvd, tcpEStatsStackSoftErrors, tcpEStatsStackSoftErrorReason, tcpEStatsStackSndInitial, tcpEStatsStackRecInitial, tcpEStatsStackSlowStart, tcpEStatsStackCongAvoid, tcpEStatsStackOtherReductions, tcpEStatsStackCongOverCount, tcpEStatsStackFastRetran, tcpEStatsStackSubsequentTimeouts, tcpEStatsStackCurTimeoutCount, tcpEStatsStackAbruptTimeouts, tcpEStatsStackSACKsRcvd, tcpEStatsStackSACKBlocksRcvd, tcpEStatsStackSendStall, tcpEStatsStackDSACKDups, tcpEStatsStackMaxMSS, tcpEStatsStackMinMSS, tcpEStatsStackCurRetxQueue, tcpEStatsStackMaxRetxQueue, tcpEStatsStackCurReasmQueue, tcpEStatsStackMaxReasmQueue } STATUS current DESCRIPTION "The tcpEStatsConnState group includes objects that control the creation of the tcpEStatsStackTable, and provide information about the operation of algorithms used within TCP." ::= { tcpEStatsGroups 7 } tcpEStatsAppGroup OBJECT-GROUP OBJECTS { tcpEStatsControlApp, Mathis, et al [Page 58] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 tcpEStatsAppCurAppWQueue, tcpEStatsAppMaxAppWQueue, tcpEStatsAppCurAppRQueue, tcpEStatsAppMaxAppRQueue } STATUS current DESCRIPTION "The tcpEStatsConnState group includes objects that control the creation of the tcpEStatsAppTable, and provide information about how applications are interacting with each TCP connection." ::= { tcpEStatsGroups 8 } tcpEStatsTuneGroup OBJECT-GROUP OBJECTS { tcpEStatsControlTune, tcpEStatsTuneLimCwnd, tcpEStatsTuneLimSsthresh, tcpEStatsTuneLimRwin } STATUS current DESCRIPTION "The tcpEStatsConnState group includes objects that control the creation of the tcpEStatsConnectionTable, which can be used to set tuning parameters for each TCP connection." ::= { tcpEStatsGroups 9 } tcpEStatsNotificationsGroup NOTIFICATION-GROUP NOTIFICATIONS { tcpEStatsEstablishNotification, tcpEStatsCloseNotification } STATUS current DESCRIPTION "Notifications sent by a TCP extended statistics agent." ::= { tcpEStatsGroups 10 } tcpEStatsNotificationsCtlGroup OBJECT-GROUP OBJECTS { tcpEStatsControlNotify } STATUS current DESCRIPTION "The tcpEStatsNotificationsCtl group includes the object that controls the creation of the events in the tcpEStatsNotificationsGroup." ::= { tcpEStatsGroups 11 } Mathis, et al [Page 59] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 END 5. Normative References [RFC2012bis] Bill Fenner, et al, "Management Information Base for the Transmission Control Protocol (TCP)" Internet-Draft draft-ietf- ipngwg-rfc2012-update-00.txt, expires January 2002. [RFC2574] U. Blumenthal, B. Wijnen, "User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3)", RFC2574, April 1999. [RFC2575] Wijnen, B., Presuhn, R., and K. McCloghrie, "View-based Access Control Model (VACM) for the Simple Network Management Protocol (SNMP)", RFC 2575, April 1999. [RFC2578] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., and S. Waldbusser, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. [RFC2579] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., and S. Waldbusser, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999. [RFC2580] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., and S. Waldbusser, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999. 6. Informative References [Mat97] M. Mathis, J. Semke, J. Mahdavi, T. Ott, "The Macroscopic Behav- ior of the TCP Congestion Avoidance Algorithm", Computer Communica- tion Review, volume 27, number3, July 1997. [Bra94] Brakmo, L., O'Malley, S., "TCP Vegas, New Techniques for Conges- tion Detection and Avoidance," SIGCOMM'94, London, pp 24-35, Octo- ber 1994. [POSIX] Portable Operating System Interface, IEEE Std 1003.1 Mathis, et al [Page 60] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 [Pad98] Padhye, J., Firoiu, V., Towsley, D., Kurose, J., "Modeling TCP Throughput: A Simple Model and its Empirical Validation", SIG- COMM'98 [Web100] Mathis, M., J. Heffner, R. Reddy, "Web100: Extended TCP Instru- mentation for Research, Education and Diagnosis", ACM Computer Com- munications Review, Vol 33, Num 3, July 2003. [RFC793] J. Postel Ed., "Transmission Control Protocol", Sep 1981. [RFC896] J. Nagle, "Congestion control in IP/TCP internetworks", Jan-06-1984. [RFC1122] R. Braden, Ed, "Requirements for Internet Hosts - Communica- tion Layers", October 1989. [RFC1191] J.C. Mogul, S.E. Deering, "Path MTU discovery", Nov-01-1990. [RFC1323] V. Jacobson, R. Braden, D. Borman, "TCP Extensions for High Performance", May 1992. [RFC2012] McCloghrie, K., "SNMPv2 Management Information Base for the Transmission Control Protocol using SMIv2", RFC 2012, November 1996. [RFC2018] M. Mathis, J. Mahdavi, S. Floyd, A. Romanow, "TCP Selective Acknowledgement Options", October 1996. [RFC2021] S. Waldbusser, "Remote Network Monitoring Management Informa- tion Base Version 2 using SMIv2", January 1997. [RFC2474] K. Nichols, S. Blake, F. Baker, D. Black, "Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Head- ers", December 1998. [RFC2856] A. Bierman, K. McCloghrie, R. Presuhn, "Textual Conventions for Additional High Capacity Data Types", June 2000. Mathis, et al [Page 61] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 [RFC2861] M. Handley, J. Padhye, S. Floyd, "TCP Congestion Window Vali- dation", June 2000. [RFC2883] S. Floyd, J. Mahdavi, M. Mathis, M. Podolsky, "An Extension to the Selective Acknowledgement (SACK) Option for TCP", July 2000. [RFC3168] K. Ramakrishnan, S. Floyd, D. Black, "The Addition of Explicit Congestion Notification (ECN) to IP", September 2001. [RFC3260] D. Grossman, "New Terminology and Clarifications for Diff- serv", April 2002. [RFC3291bis] M. Daniele, B. Haberman, S. Routhier, J. Schoenwaelder, "Textual Conventions for Internet Network Addresses", Work in progress update to RFC3291, draft-ietf-ops-rfc3291bis-06.txt, August, 2004. [RFC3410] Case, J., Mundy, R., Partain, D. and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002. [RFC3522] R. Ludwig, M. Meyer, "The Eifel Detection Algorithm for TCP", April 2003. [RFC2581] M. Allman, V. Paxson, W. Stevens, "TCP Congestion Control", April 1999. [RFC2988] V. Paxson, M. Allman, "Computing TCP's Retransmission Timer", November 2000. [RFC3291] M. Daniele, B. Haberman, S. Routhier, J. Schoenwaelder, "Tex- tual Conventions for Internet Network Addresses", May 2002. Mathis, et al [Page 62] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 7. Security Considerations There are a number of management objects defined in this MIB that have a MAX-ACCESS clause of read-write and/or read-create. Such objects may be considered sensitive or vulnerable in some network environments. The support for SET operations in a non-secure environment without proper protection can have a negative effect on network operations. There are a number of managed objects in this MIB that may contain sensitive information. These are: tcpEStatsConnectRemAddress tcpEStatsPerfSndUna tcpEStatsPerfSndNxt tcpEStatsPerfSndMax tcpEStatsStackSndInitial tcpEStatsPerfRcvNxt tcpEStatsStackRecInitial It is thus important to control even GET access to these objects and possibly to even encrypt the values of these objects when sending them over the network via SNMP. Not all versions of SNMP provide features for such a secure environment. SNMPv1 by itself is not a secure environment. Even if the network itself is secure (for example by using IPSec) there is no control as to who on the secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB. It is recommended that implementers consider using the security features as provided by the SNMPv3 framework. Specifically, the use of the User-based Security Model RFC 2574 [RFC2574] and the View- based Access Control Model RFC 2575 [RFC2575] is recommended. It is then a customer/user responsibility to ensure that the SNMP entity giving access to an instance of this MIB, is properly configured to only give access to the objects to those principals (users) that have legitimate rights to indeed GET or SET (change/create/delete) them. 8. Contributors The following people have contributed substantially to this document. Some of the objects in this document were moved from an early draft of RFC2012bis, by Bill Fenner et al. Some of the object descriptions are based on an earlier unpublished document by Jeff Semke. Mathis, et al [Page 63] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 9. Acknowledgments This document is a product of Web100 (see: www.web100.org), a joint project of the Pittsburgh Supercomputing Center (www.psc.edu), National Center for Atmospheric Research (www.ncar.ucar.edu) and National Center for Supercomputer Applications (www.ncsa.edu). It was supported by the National Science Foundation under Grant No. 0083285 and a research grant from Cisco Systems. 10. Authors' Addresses Matt Mathis Raghu Reddy John Heffner Pittsburgh Supercomputing Center 4400 Fifth Ave Pittsburgh, PA 15216 Phone: 412-268-4960 Email: mathis@web100.org, rreddy@psc.edu, jheffner@psc.edu Rajiv Raghunarayan Cisco Systems Inc. San Jose, CA 95134 Phone: 408 853 9612 Email: raraghun@cisco.com Jon Saperia JDS Consulting, Inc. 174 Chapman Street Watertown, MA 02472 Phone: 617-744-1079 Email: saperia@jdscons.com 11. Intellectual Property The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an Mathis, et al [Page 64] Internet-Draft Expires Aug 31, 2005 Feb 20, 2005 attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf- ipr@ietf.org. 12. Disclaimer of Validity This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 13. Full Copyright Statement Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. Mathis, et al [Page 65]