[Search] [txt|pdfized|bibtex] [Tracker] [Email] [Nits]
Versions: 00                                                            
Internet-Draft                                             Matt Mathis
                                                           Raghu Reddy
                                                          John Heffner
                                      Pittsburgh Supercomputing Center
                                                            J. Saperia
                                                   JDS Consulting, Inc




                      TCP Extended Statistics MIB
                 draft-mathis-rfc2012-extension-00.txt
                            November 7, 2001




Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.

   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 mate¡
   rial 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.

Copyright Notice

   Copyright (C) The Internet Society (2001).  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


Mathis, et al                                                   [Page 1]


Internet-Draft Expires May 2002                            November 2001


   in the sender, the receiver or the Internet itself.  If the bottle¡
   neck is in the network, TCP can provide specific information about
   its nature.


11..  IINNTTRROODDUUCCTTIIOONN

   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 Internet itself.  If the bot¡
   tleneck is in the network, TCP can provide specific information about
   its nature.

   The SNMP objects defined in this draft should be merged into the
   existing TCP MIB.  However, RFC2012 describing the current TCP MIB,
   is already under revision to support IPv6 address  by the ipngwg.
   See RFC2012bis.

   As an interim measure to simplify version control, etc we are pre¡
   senting these extensions as a separate document.  However we fully
   expect to merge these objects into the main TCP MIB document at some
   future date.

   To facilitate possible prototype implementations we have duplicated a
   minimal set of objects from RFC2012bis, such that this MIB is self
   contained.   These duplicated objects will be removed when the docu¡
   ments are merged.

   Be aware that this is a very early draft, and the MIB objects here
   are under active development.   Do not be deceived by the polish on
   this draft:  It is automatically generated from a database of poten¡
   tial TCP instruments.  The most current version can be obtained from
   http://www.psc.edu/~mathis/papers/draft-mathis-rfc2012-extension-
   XX.txt



22..  TThhee SSNNMMPP MMaannaaggeemmeenntt FFrraammeewwoorrkk

   The SNMP Management Framework presently consists of five major compo¡
   nents:


    o   An overall architecture, described in RFC 2571 [RFC2571].





Mathis, et al                                                   [Page 2]


    o   Mechanisms for describing and naming objects and events for the
        purpose of management.  The first version of this Structure of
        Management Information (SMI) is called SMIv1 and described in
        STD 16, RFC 1155 [RFC1155], STD 16, RFC 1212 [RFC1212] and RFC
        1215 [RFC1215].  The second version, called SMIv2, is described
        in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and
        STD 58, RFC 2580 [RFC2580].


    o   Message protocols for transferring management information.  The
        first version of the SNMP message protocol is called SNMPv1 and
        described in STD 15, RFC 1157 [RFC1157].  A second version of
        the SNMP message protocol, which is not an Internet standards
        track protocol, is called SNMPv2c and described in RFC 1901
        [RFC1901] and RFC 1906 [RFC1906].  The third version of the mes¡
        sage protocol is called SNMPv3 and described in RFC 1906
        [RFC1906], RFC 2572 [RFC2572] and RFC 2574 [RFC2574].


    o   Protocol operations for accessing management information.  The
        first set of protocol operations and associated PDU formats is
        described in STD 15, RFC 1157 [RFC1157].  A second set of proto¡
        col operations and associated PDU formats is described in RFC
        1905 [RFC1905].

    o   A set of fundamental applications described in RFC 2573
        [RFC2573] and the view-based access control mechanism described
        in RFC 2575 [RFC2575].

   A more detailed introduction to the current SNMP Management Framework
   can be found in RFC 2570 [RFC2570].

   Managed objects are accessed via a virtual information store, termed
   the Management Information Base or MIB.  Objects in the MIB are
   defined using the mechanisms defined in the SMI.

   This memo specifies a MIB module that is compliant to the SMIv2.  A
   MIB conforming to the SMIv1 can be produced through the appropriate
   translations.  The resulting translated MIB must be semantically
   equivalent, except where objects or events are omitted because no
   translation is possible (use of Counter64).  Some machine readable
   information in SMIv2 will be converted into textual descriptions in
   SMIv1 during the translation process.  However, this loss of machine
   readable information is not considered to change the semantics of the
   MIB.





Mathis, et al                                                   [Page 3]


33..  TTCCPP EExxtteennddeedd SSttaattiissttiiccss MMIIBB

















































Mathis, et al                                                   [Page 4]


   TCP-ESTATS-MIB DEFINITIONS ::= BEGIN
   IMPORTS
          MODULE-IDENTITY, Counter32, Integer32,
          Gauge32, OBJECT-TYPE, Counter64, experimental,
          NOTIFICATION-TYPE
              FROM SNMPv2-SMI
          MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
              FROM SNMPv2-CONF
          TEXTUAL-CONVENTION,
          DateAndTime, TruthValue
              FROM SNMPv2-TC
          InetAddressType, InetAddress,
          InetPortNumber
              FROM INET-ADDRESS-MIB;

   tcpEStatsMIB MODULE-IDENTITY
       LAST-UPDATED "200111020000Z"  -- November 2, 2001
       ORGANIZATION "IETF XXX Working Group"
       CONTACT-INFO
           "Matt Mathis
           Raghu Reddy
           Pittsburgh Supercomputing Center
           Web100 Project
           Email:mathis@psc.edu

           Jon Saperia
           JDS Consulting, Inc.
           174 Chapman St.
           Watertown MA 02472-3063
           USA
           Phone: +1-617-744-1079
           Fax:   +1-617-249-0874
           Email: saperia@jdscons.com"

       DESCRIPTION
           "Documentation of TCP performance variables from the
           Web100 project.  See www.web100.org"
       REVISION "200111020000Z"  -- November 2, 2001
       DESCRIPTION
           "Initial version, published as RFC xxxx."
           -- RFC Editor assigns RFC xxxx
           ::= { experimental 9999 }

   tcpEStatsNotifications  OBJECT IDENTIFIER ::= { tcpEStatsMIB 0 }
   tcpEStats               OBJECT IDENTIFIER ::= { tcpEStatsMIB 1 }
   tcpEStatsControl        OBJECT IDENTIFIER ::= { tcpEStatsMIB 2 }
   tcpEStatsConformance    OBJECT IDENTIFIER ::= { tcpEStatsMIB 3 }



Mathis, et al                                                   [Page 5]


   --
   -- Textual Conventions
   --

    TcpEStatsOperation  ::= TEXTUAL-CONVENTION
       STATUS             current
       DESCRIPTION
           "Indicates whether the table controled by an object with
           this syntax is enabled and counting statistics or in a
           disabled state. Requests for object instances in tables
           that have been placed in a disabled state should be
           treated as if the table does not exist, that is a NO SUCH
           should be returned to the requester."
       SYNTAX      INTEGER {
                       enabled(1),
                       disabled(2)
                   }

   --
   -- TCP Connection State Statistics
   --

   tcpEStatsConnectionTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsConnectionEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table contains connection state information for
     each TCP connection. Activation of this table is via the
           tcpEStatsControlState object."
       ::= { tcpEStats 1 }

   tcpEStatsConnectionEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsConnectionEntry
       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 { tcpEStatsConnectIdId }
      ::= { tcpEStatsConnectionTable 1 }

   TcpEStatsConnectionEntry ::= SEQUENCE {
           tcpEStatsConnectionState            INTEGER,
           tcpEStatsConnectionSACK             TruthValue,
           tcpEStatsConnectionTimeStamps       TruthValue,



Mathis, et al                                                   [Page 6]


           tcpEStatsConnectionECN              TruthValue,
           tcpEStatsConnectionNagle            TruthValue,
           tcpEStatsConnectionWinScaleRcvd     Integer32,
           tcpEStatsConnectionWinScaleSent     Integer32
       }

   tcpEStatsConnectionState  OBJECT-TYPE
       SYNTAX          INTEGER {
          wcStateClosed(1),
          wcStateListen(2),
          wcStateSynSent(3),
          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."
       ::= { tcpEStatsConnectionEntry 1 }

   tcpEStatsConnectionSACK  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Non-zero if SACK has been negotiated ON by both ends of the
           connection. Zero otherwise."
       ::= { tcpEStatsConnectionEntry 2 }

   tcpEStatsConnectionTimeStamps  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Non-zero if Timestamps have been negotiated ON by both ends
           of the connection in the SYN. Zero otherwise."
       ::= { tcpEStatsConnectionEntry 3 }

   tcpEStatsConnectionECN  OBJECT-TYPE



Mathis, et al                                                   [Page 7]


       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Non-zero if ECN has been negotiated ON."
       ::= { tcpEStatsConnectionEntry 4 }

   tcpEStatsConnectionNagle  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Non-zero if the Nagle algorithm is being used by the Local
           Host on this connection. Zero otherwise."
       ::= { tcpEStatsConnectionEntry 5 }

   tcpEStatsConnectionWinScaleRcvd  OBJECT-TYPE
       SYNTAX          Integer32 (-1..14)
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The window scale value used by the Local Host in
           calculating incoming window sizes on this connection. Must
           be initialized to be < 0; Winshift will be considered to be
           in effect only if WinScaleSent and WinScaleRcvd are both >=
           0."
       ::= { tcpEStatsConnectionEntry 6 }

   tcpEStatsConnectionWinScaleSent  OBJECT-TYPE
       SYNTAX          Integer32 (-1..14)
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The window scale value used by the Local Host in
           calculating the advertized window on this connection. Must
           be initialized to be < 0; Winshift will be considered to be
           in effect only if WinScaleSent and WinScaleRcvd are both >=
           0."
       ::= { tcpEStatsConnectionEntry 7 }

   --
   -- TCP SYN Options
   --

   tcpEStatsSynOptsTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsSynOptsEntry
       MAX-ACCESS  not-accessible



Mathis, et al                                                   [Page 8]


       STATUS      current
       DESCRIPTION
           "This table contains Statistics on options present
           on the SYN and SYN-ACK. Table activation is
           controlled by the tcpEStatsControlSynOpts object."
      ::= { tcpEStats 2 }

   tcpEStatsSynOptsEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsSynOptsEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           ""
              INDEX { tcpEStatsConnectIdId }
       ::= { tcpEStatsSynOptsTable 1 }

   TcpEStatsSynOptsEntry ::= SEQUENCE {
           tcpEStatsSynOptsSACKSent            TruthValue,
           tcpEStatsSynOptsSACKRcvd            TruthValue,
           tcpEStatsSynOptsTimeStampSent       TruthValue,
           tcpEStatsSynOptsTimeStampRcvd       TruthValue,
           tcpEStatsSynOptsActiveOpen          TruthValue
       }

   tcpEStatsSynOptsSACKSent  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "True if SACKok was sent in SYN or SYN-ACK."
       ::= { tcpEStatsSynOptsEntry 1 }

   tcpEStatsSynOptsSACKRcvd  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "True if SACKok was found in SYN or SYN-ACK."
       ::= { tcpEStatsSynOptsEntry 2 }

   tcpEStatsSynOptsTimeStampSent  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "True if Timestamp was sent in SYN or SYN-ACK."
       ::= { tcpEStatsSynOptsEntry 3 }



Mathis, et al                                                   [Page 9]


   tcpEStatsSynOptsTimeStampRcvd  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "True if Timestamp was found in SYN or SYN-ACK."
       ::= { tcpEStatsSynOptsEntry 4 }

   tcpEStatsSynOptsActiveOpen  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "True if local host was the one that sent the SYN."
       ::= { tcpEStatsSynOptsEntry 5 }

   --
   -- TCP Data Table
   --

   tcpEStatsDataTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsDataEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table contains statistics on aggregate packets and
           data sent on a connection.  These provide a direct
           measure of the Internet capacity consumed by a connection
           and TCPs net throughput."
       ::= { tcpEStats 3 }

   tcpEStatsDataEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsDataEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Per connection statistics for packets and data."
              INDEX { tcpEStatsConnectIdId }
       ::= { tcpEStatsDataTable 1 }

   TcpEStatsDataEntry ::= SEQUENCE {
           tcpEStatsDataPktsOut                Counter32,
           tcpEStatsDataDataPktsOut            Counter32,
           tcpEStatsDataAckPktsOut             Counter32,
           tcpEStatsDataDataBytesOut           Counter64,
           tcpEStatsDataPktsIn                 Counter32,
           tcpEStatsDataDataPktsIn             Counter32,



Mathis, et al                                                  [Page 10]


           tcpEStatsDataAckPktsIn              Counter32,
           tcpEStatsDataDataBytesIn            Counter64,
           tcpEStatsDataSndUna                 Counter32,
           tcpEStatsDataSndNxt                 Integer32,
           tcpEStatsDataSndMax                 Counter32,
           tcpEStatsDataThruBytesSent          Counter32,
           tcpEStatsDataSendInitial            Counter32,
           tcpEStatsDataSendWraps              Counter32,
           tcpEStatsDataRcvNxt                 Counter32,
           tcpEStatsDataThruBytesReceived      Counter32,
           tcpEStatsDataRecInitial             Counter32,
           tcpEStatsDataRecWraps               Counter32,
           tcpEStatsDataCurTime                Counter32,
           tcpEStatsDataStartTime              Counter32
       }

   tcpEStatsDataPktsOut  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The total number of packets that have been sent on this
           connection by the Local Host."
       ::= { tcpEStatsDataEntry 1 }

   tcpEStatsDataDataPktsOut  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of data packets (with len > 0) that have been
           sent on this connection by the Local Host."
       ::= { tcpEStatsDataEntry 2 }

   tcpEStatsDataAckPktsOut  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of pure ack packets that have been sent on this
           connection by the Local Host."
       ::= { tcpEStatsDataEntry 3 }

   tcpEStatsDataDataBytesOut  OBJECT-TYPE
       SYNTAX          Counter64
       MAX-ACCESS      read-only
       STATUS          current



Mathis, et al                                                  [Page 11]


       DESCRIPTION
          "The number of bytes of data that have been sent on this
           connection by the Local Host, not including retransmitted
           packets."
       ::= { tcpEStatsDataEntry 4 }

   tcpEStatsDataPktsIn  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The total number of packets that have been received on this
           connection by the Local Host."
       ::= { tcpEStatsDataEntry 5 }

   tcpEStatsDataDataPktsIn  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of data packets (with len > 0) that have been
           received on this connection by the Local Host."
       ::= { tcpEStatsDataEntry 6 }

   tcpEStatsDataAckPktsIn  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of valid pure ack packets that have been
           received on this connection by the Local Host."
       ::= { tcpEStatsDataEntry 7 }

   tcpEStatsDataDataBytesIn  OBJECT-TYPE
       SYNTAX          Counter64
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of bytes of non-duplicate data that have been
           received on this connection by the Local Host."
       ::= { tcpEStatsDataEntry 8 }

   tcpEStatsDataSndUna  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION



Mathis, et al                                                  [Page 12]


          "Oldest Unacknowledged Sequence Number."
       ::= { tcpEStatsDataEntry 9 }

   tcpEStatsDataSndNxt  OBJECT-TYPE
       SYNTAX          Integer32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Next Sequence Number to be Sent. Note that many TCP
           implementations retransmit lost data by pulling SndNxt back
           to the lost data."
       ::= { tcpEStatsDataEntry 10 }

   tcpEStatsDataSndMax  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "This is equal to snd_next except when doing Tahoe style
           recovery."
       ::= { tcpEStatsDataEntry 11 }

   tcpEStatsDataThruBytesSent  OBJECT-TYPE
       SYNTAX          Counter64
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Total throughput bytes delivered and acknowledged by the
           remote receiver as indicated by the 64 bit sum of changes
           in snd_una."
       ::= { tcpEStatsDataEntry 12 }

   tcpEStatsDataSendInitial  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Initial SYN sequence number."
       ::= { tcpEStatsDataEntry 13 }

   tcpEStatsDataSendWraps  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "This is the number of times snd_max 'passes' ISS."
       ::= { tcpEStatsDataEntry 14 }



Mathis, et al                                                  [Page 13]


   tcpEStatsDataRcvNxt  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Next sequence number expected on an incoming segment, and
           is the left or lower edge of the receive window."
       ::= { tcpEStatsDataEntry 15 }

   tcpEStatsDataThruBytesReceived  OBJECT-TYPE
       SYNTAX          Counter64
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Total throughput bytes received and acknowledged to the
           remote sender as indicated by the 64 bit sum of changes in
           rcv_nxt."
       ::= { tcpEStatsDataEntry 16 }

   tcpEStatsDataRecInitial  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Initial SYN sequence number."
       ::= { tcpEStatsDataEntry 17 }

   tcpEStatsDataRecWraps  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "This is the number of times rcv_max 'passes' ISS."
       ::= { tcpEStatsDataEntry 18 }

   tcpEStatsDataCurTime  OBJECT-TYPE
       SYNTAX          DateAndTime
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Current Time."
       ::= { tcpEStatsDataEntry 19 }

   tcpEStatsDataStartTime  OBJECT-TYPE
       SYNTAX          DateAndTime
       MAX-ACCESS      read-only
       STATUS          current



Mathis, et al                                                  [Page 14]


       DESCRIPTION
          "Time of the start of the connection."
       ::= { tcpEStatsDataEntry 20 }

   --
   -- TCP Sender Table
   --

   tcpEStatsSndCongTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsSndCongEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "First level instruments to determine which subsystems
           are controlling overall performance by throttling TCP
           data transmission.  The three parallel sets of
           instruments measure the extent to which the receiver
           window, network congestion or the senders available data
           limit TCP's performance.  They reflect bottlenecks at the
           receiver, network or sender respectively. It also
           includes instruments on all events needed to model
           congestion along the network path.  The instruments are
           sufficient to fit the actual performance to an updated
           macroscopic performance model [MACRO].  This in turn
           reveals the nature of the congestion "
       ::= { tcpEStats 4 }

   tcpEStatsSndCongEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsSndCongEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Per connection sender information."
              INDEX { tcpEStatsConnectIdId }
       ::= { tcpEStatsSndCongTable 1 }

   TcpEStatsSndCongEntry ::= SEQUENCE {
           tcpEStatsSndCongSndLimTransSnd      Counter32,
           tcpEStatsSndCongSndLimTimeSnd       Counter32,
           tcpEStatsSndCongSndLimBytesSnd      Counter64,
           tcpEStatsSndCongSndLimTransCwnd     Counter32,
           tcpEStatsSndCongSndLimTimeCwnd      Counter32,
           tcpEStatsSndCongSndLimBytesCwnd     Counter64,
           tcpEStatsSndCongSndLimTransRwin     Counter32,
           tcpEStatsSndCongSndLimTimeRwin      Counter32,
           tcpEStatsSndCongSndLimBytesRwin     Counter64,
           tcpEStatsSndCongSlowStart           Counter32,



Mathis, et al                                                  [Page 15]


           tcpEStatsSndCongCongAvoid           Counter32,
           tcpEStatsSndCongCongSignals         Counter32,
           tcpEStatsSndCongOtherReductions     Counter32,
           tcpEStatsSndCongCongOverCount       Counter32,
           tcpEStatsSndCongCurCwnd             Gauge32,
           tcpEStatsSndCongSumCwndAtCong       Counter32,
           tcpEStatsSndCongMaxCwnd             Gauge32,
           tcpEStatsSndCongCurSsthresh         Gauge32,
           tcpEStatsSndCongMaxSsthresh         Gauge32,
           tcpEStatsSndCongMinSsthresh         Gauge32
       }

   tcpEStatsSndCongSndLimTransSnd  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of transitions into the 'Sender Limited' state,
           as determined by the Local Host, when the Local Host is a
           sender. This state is entered whenever TCP transmission
           stops because there no more data in sender's buffer."
       ::= { tcpEStatsSndCongEntry 1 }

   tcpEStatsSndCongSndLimTimeSnd  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The cumulative time (in msecs) spent in the 'Sender
           Limited' state, as determined by the Local Host, when the
           Local Host is a sender. This state is entered whenever TCP
           transmission stops because there is no more data in
           sender's buffer."
       ::= { tcpEStatsSndCongEntry 2 }

   tcpEStatsSndCongSndLimBytesSnd  OBJECT-TYPE
       SYNTAX          Counter64
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The cumulative bytes sent while in the 'Sender Limited'
           state, as determined by the Local Host, when the Local Host
           is a sender. This state is entered whenever TCP
           transmission stops because there is no more data in
           sender's buffer."
       ::= { tcpEStatsSndCongEntry 3 }




Mathis, et al                                                  [Page 16]


   tcpEStatsSndCongSndLimTransCwnd  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of transitions into the 'Congestion Limited'
           state, as determined by the Local Host, when the Local Host
           is a sender. This state is entered whenever TCP
           transmission stops due to congestion."
       ::= { tcpEStatsSndCongEntry 4 }

   tcpEStatsSndCongSndLimTimeCwnd  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The cumulative time (in msecs) spent in the 'Congestion
           Limited' state, as determined by the Local Host, when the
           Local Host is a sender. This state is entered whenever TCP
           transmission stops due to congestion."
       ::= { tcpEStatsSndCongEntry 5 }

   tcpEStatsSndCongSndLimBytesCwnd  OBJECT-TYPE
       SYNTAX          Counter64
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The cumulative bytes sent while in the 'Congestion Limited'
           state, as determined by the Local Host, when the Local Host
           is a sender. This state is entered whenever TCP
           transmission stops due to congestion."
       ::= { tcpEStatsSndCongEntry 6 }

   tcpEStatsSndCongSndLimTransRwin  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of transitions into the 'Receiver Limited'
           state, as determined by the Local Host, when the Local Host
           is a sender. This state is entered whenever TCP
           transmission stops due to Receiver not being able to
           receive data."
       ::= { tcpEStatsSndCongEntry 7 }

   tcpEStatsSndCongSndLimTimeRwin  OBJECT-TYPE
       SYNTAX          Counter32



Mathis, et al                                                  [Page 17]


       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The cumulative time (in msecs) spent in the 'Receiver
           Limited' state, as determined by the Local Host, when the
           Local Host is a sender. This state is entered whenever TCP
           transmission stops due to Receiver not being able to
           receive data."
       ::= { tcpEStatsSndCongEntry 8 }

   tcpEStatsSndCongSndLimBytesRwin  OBJECT-TYPE
       SYNTAX          Counter64
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The cumulative bytes sent while in the 'Receiver Limited'
           state, as determined by the Local Host, when the Local Host
           is a sender. This state is entered whenever TCP
           transmission stops due to Receiver not being able to
           receive data."
       ::= { tcpEStatsSndCongEntry 9 }

   tcpEStatsSndCongSlowStart  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Slow Start Window Opens."
       ::= { tcpEStatsSndCongEntry 10 }

   tcpEStatsSndCongCongAvoid  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Congestion Avoidance Window Opens."
       ::= { tcpEStatsSndCongEntry 11 }

   tcpEStatsSndCongCongSignals  OBJECT-TYPE
       SYNTAX          Counter32
       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. Congestion
           events which are backed out or suppressed due to overlap



Mathis, et al                                                  [Page 18]


           with other events (e.g. Fast Retransmit or ECN followed by
           a timeout) SHOULD NOT be included. Note that retransmission
           timeouts reduce the window implicitly by updating ssthresh
           and a subsequent slowstart."
       ::= { tcpEStatsSndCongEntry 12 }

   tcpEStatsSndCongOtherReductions  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of congestion window reductions made by the
           Local Host as the result anything other than AIMD
           congestion algorithms. All window reductions MUST be
           counted as either CongestionSignals or OtherReductions.
           Examples of non-multiplicative window reductions include
           sloestart restart and experimental algorithms such as Vegas
           [VEGAS] CAM."
       ::= { tcpEStatsSndCongEntry 13 }

   tcpEStatsSndCongCongOverCount  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of events counted in CongestionSignals, which
           were backed out after it is infeasible to backout related
           variables such as SumCwndAtCong."
       ::= { tcpEStatsSndCongEntry 14 }

   tcpEStatsSndCongCurCwnd  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The Local Host's current value of snd_cwnd on this
           connection, in bytes."
       ::= { tcpEStatsSndCongEntry 15 }

   tcpEStatsSndCongSumCwndAtCong  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The sum of the Local Host's values of snd_cwnd captured
           each time recovery is entered, in bytes. This MUST be
           updated with CongestionSignals such that the ratio is the



Mathis, et al                                                  [Page 19]


           average window at congestion signal."
       ::= { tcpEStatsSndCongEntry 16 }

   tcpEStatsSndCongMaxCwnd  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The largest value attained by the Local Host's snd_cwnd on
           this connection, in bytes."
       ::= { tcpEStatsSndCongEntry 17 }

   tcpEStatsSndCongCurSsthresh  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The Local Host's current value of snd_ssthresh on this
           connection, in bytes."
       ::= { tcpEStatsSndCongEntry 18 }

   tcpEStatsSndCongMaxSsthresh  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The largest non-initial value attained by the Local Host's
           snd_ssthresh on this connection, in bytes."
       ::= { tcpEStatsSndCongEntry 19 }

   tcpEStatsSndCongMinSsthresh  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The smallest value attained by the Local Host's
           snd_ssthresh on this connection, in bytes."
       ::= { tcpEStatsSndCongEntry 20 }

   --
   -- TCP Path Table
   --

   tcpEStatsPathTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsPathEntry
       MAX-ACCESS  not-accessible
       STATUS      current



Mathis, et al                                                  [Page 20]


       DESCRIPTION
           "Instruments that characterize the segment loss mechanism
           by collecting statistics on how the losses are correlated
           to other losses and protocol events. Instruments at the
           sender to detect other types of non-loss congestion
           signals such as source quench or ECN. It also Instruments
           at the sender to infer that the TCP's reliable delivery
           mechanisms are being confused by packet reordering on the
           path from the sender to the receiver.  Sender's maximum
           segment size, and the range of values explored by the MTU
           discovery algorithm. "
       ::= { tcpEStats 5 }

   tcpEStatsPathEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsPathEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Stats per connection."
              INDEX { tcpEStatsConnectIdId }
       ::= { tcpEStatsPathTable 1 }

   TcpEStatsPathEntry ::= SEQUENCE {
           tcpEStatsPathFastRetran             Counter32,
           tcpEStatsPathTimeouts               Counter32,
           tcpEStatsPathSubsequentTimeouts     Counter32,
           tcpEStatsPathCurTimeoutCount        Gauge32,
           tcpEStatsPathAbruptTimeouts         Counter32,
           tcpEStatsPathPktsRetrans            Counter32,
           tcpEStatsPathBytesRetrans           Counter32,
           tcpEStatsPathDupAcksIn              Counter32,
           tcpEStatsPathSACKsRcvd              Counter32,
           tcpEStatsPathSACKBlocksRcvd         Counter32,
           tcpEStatsPathPreCongSumRTT          Counter32,
           tcpEStatsPathPreCongCountRTT        Counter32,
           tcpEStatsPathPostCongSumRTT         Counter32,
           tcpEStatsPathPostCongCountRTT       Counter32,
           tcpEStatsPathECERcvd                Counter32,
           tcpEStatsPathSendStall              Counter32,
           tcpEStatsPathQuenchRcvd             Counter32,
           tcpEStatsPathMaxRetranThresh        Gauge32,
           tcpEStatsPathNonRecovDA             Counter32,
           tcpEStatsPathAckAfterFR             Counter32,
           tcpEStatsPathDSACKDups              Counter32,
           tcpEStatsPathSampleRTT              Gauge32,
           tcpEStatsPathSmoothedRTT            Gauge32,
           tcpEStatsPathMaxRTT                 Gauge32,



Mathis, et al                                                  [Page 21]


           tcpEStatsPathMinRTT                 Gauge32,
           tcpEStatsPathSumRTT                 Counter64,
           tcpEStatsPathCountRTT               Counter32,
           tcpEStatsPathCurRTO                 Gauge32,
           tcpEStatsPathMaxRTO                 Gauge32,
           tcpEStatsPathMinRTO                 Gauge32,
           tcpEStatsPathCurMSS                 Gauge32,
           tcpEStatsPathMaxMSS                 Gauge32,
           tcpEStatsPathMinMSS                 Gauge32
       }

   tcpEStatsPathFastRetran  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of invocations of the Fast Retransmit algorithm
           when Local Host is the sender."
       ::= { tcpEStatsPathEntry 1 }

   tcpEStatsPathTimeouts  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The total number of timeouts experienced by the connection,
           when the Local Host is the sender and the RTO multiplier is
           1."
       ::= { tcpEStatsPathEntry 2 }

   tcpEStatsPathSubsequentTimeouts  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The total number of timeouts experienced by the connection,
           when the Local Host is the sender and the RTO multiplier is
           greater than one."
       ::= { tcpEStatsPathEntry 3 }

   tcpEStatsPathCurTimeoutCount  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Current number of times that RTO has been increased due to
           repeated timeouts. The timeout multiplier is typically



Mathis, et al                                                  [Page 22]


           2^CurrTimeoutCount."
       ::= { tcpEStatsPathEntry 4 }

   tcpEStatsPathAbruptTimeouts  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Total number of timeouts that occurred without any
           preceding duplicate acknowledgments or other hints of
           congestion."
       ::= { tcpEStatsPathEntry 5 }

   tcpEStatsPathPktsRetrans  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of pkts retransmitted on the connection by the
           Local Host."
       ::= { tcpEStatsPathEntry 6 }

   tcpEStatsPathBytesRetrans  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of bytes retransmitted on the connection by the
           Local Host."
       ::= { tcpEStatsPathEntry 7 }

   tcpEStatsPathDupAcksIn  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of duplicate ACKs received on the connection by
           the Local Host."
       ::= { tcpEStatsPathEntry 8 }

   tcpEStatsPathSACKsRcvd  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of SACK options on the connection, received by
           the Local Host, that represent new data arriving at the



Mathis, et al                                                  [Page 23]


           Remote Host."
       ::= { tcpEStatsPathEntry 9 }

   tcpEStatsPathSACKBlocksRcvd  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of SACK blocks on the connection, received by
           the Local Host, that represent new data arriving at the
           Remote Host."
       ::= { tcpEStatsPathEntry 10 }

   tcpEStatsPathPreCongSumRTT  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Sum of the RTT as measured just before congestion."
       ::= { tcpEStatsPathEntry 11 }

   tcpEStatsPathPreCongCountRTT  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Count of the RTT as measured just before congestion."
       ::= { tcpEStatsPathEntry 12 }

   tcpEStatsPathPostCongSumRTT  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Sum of the RTT as measured just after congestion."
       ::= { tcpEStatsPathEntry 13 }

   tcpEStatsPathPostCongCountRTT  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Count of the RTT as measured just after congestion."
       ::= { tcpEStatsPathEntry 14 }

   tcpEStatsPathECERcvd  OBJECT-TYPE
       SYNTAX          Counter32



Mathis, et al                                                  [Page 24]


       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of Congestion Signals delivered via ECE."
       ::= { tcpEStatsPathEntry 15 }

   tcpEStatsPathSendStall  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of interface stalls or other sender local
           resources that are treated as congestion signals."
       ::= { tcpEStatsPathEntry 16 }

   tcpEStatsPathQuenchRcvd  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of ICMP quench messages that are treated a
           congestion signals."
       ::= { tcpEStatsPathEntry 17 }

   tcpEStatsPathMaxRetranThresh  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Duplicate ACKs needed to trigger FR."
       ::= { tcpEStatsPathEntry 18 }

   tcpEStatsPathNonRecovDA  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Duplicate acks (or SACKS) that did not tragger
           fastretransmit because they were withdrawn prior to
           reaching MaxRetranThresh."
       ::= { tcpEStatsPathEntry 19 }

   tcpEStatsPathAckAfterFR  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION



Mathis, et al                                                  [Page 25]


          "ACKs following FR, but not due to FR (way ooo)."
       ::= { tcpEStatsPathEntry 20 }

   tcpEStatsPathDSACKDups  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of duplicate segments by the Remote Host using
           DSACKs."
       ::= { tcpEStatsPathEntry 21 }

   tcpEStatsPathSampleRTT  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The most recent round trip time sample in milliseconds for
           this connection, as seen by the Local Host."
       ::= { tcpEStatsPathEntry 22 }

   tcpEStatsPathSmoothedRTT  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The smoothed round trip time in milliseconds for this
           connection, as seen by the Local Host."
       ::= { tcpEStatsPathEntry 23 }

   tcpEStatsPathMaxRTT  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum round trip time sample seen on this connection
           by the Local Host, in milliseconds."
       ::= { tcpEStatsPathEntry 24 }

   tcpEStatsPathMinRTT  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The smallest round trip time sample seen on this connection
           by the Local Host, in milliseconds."
       ::= { tcpEStatsPathEntry 25 }



Mathis, et al                                                  [Page 26]


   tcpEStatsPathSumRTT  OBJECT-TYPE
       SYNTAX          Counter64
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Cumulative round trip times seen on this connection by the
           Local Host, in milliseconds."
       ::= { tcpEStatsPathEntry 26 }

   tcpEStatsPathCountRTT  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Count of RTT samples included in SumRTT."
       ::= { tcpEStatsPathEntry 27 }

   tcpEStatsPathCurRTO  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current value of the retransmit timeout limit (in
           milliseconds, not including the backoff timer) for this
           connection, as kept by the Local Host."
       ::= { tcpEStatsPathEntry 28 }

   tcpEStatsPathMaxRTO  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum value of the retransmit timeout limit (in
           milliseconds, not including the backoff timer) for this
           connection, as seen by the Local Host."
       ::= { tcpEStatsPathEntry 29 }

   tcpEStatsPathMinRTO  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The smallest value of the retransmit timeout limit (in
           milliseconds, not including the backoff timer) for this
           connection, as seen by the Local Host."
       ::= { tcpEStatsPathEntry 30 }




Mathis, et al                                                  [Page 27]


   tcpEStatsPathCurMSS  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current 'maximum segment size' in bytes used by the
           Local Host for this connection."
       ::= { tcpEStatsPathEntry 31 }

   tcpEStatsPathMaxMSS  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum value of the 'maximum segment size' in bytes
           used by the Local Host for this connection."
       ::= { tcpEStatsPathEntry 32 }

   tcpEStatsPathMinMSS  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The smallest value of the 'maximum segment size' in bytes
           used by the Local Host for this connection."
       ::= { tcpEStatsPathEntry 33 }

   --
   -- TCP Sender Buffer Table
   --

   tcpEStatsSendBuffTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsSendBuffEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Instruments on the senders buffer usage, including any
           buffering in the application interface to TCP and the
           retransmit queue."
       ::= { tcpEStats 6 }

   tcpEStatsSendBuffEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsSendBuffEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Per connection sender buffer information."



Mathis, et al                                                  [Page 28]


              INDEX { tcpEStatsConnectIdId }
       ::= { tcpEStatsSendBuffTable 1 }

   TcpEStatsSendBuffEntry ::= SEQUENCE {
           tcpEStatsSendBuffSndBuf             Gauge32,
           tcpEStatsSendBuffCurRetranQueue     Gauge32,
           tcpEStatsSendBuffMaxRetranQueue     Gauge32,
           tcpEStatsSendBuffCurAppWQueue       Gauge32,
           tcpEStatsSendBuffMaxAppWQueue       Gauge32,
           tcpEStatsSendBuffSTuneMode          INTEGER,
           tcpEStatsSendBuffSndbufSet          Gauge32,
           tcpEStatsSendBuffSAppBuf            Gauge32,
           tcpEStatsSendBuffSMaxWinBuf         Gauge32,
           tcpEStatsSendBuffSXtra              Gauge32,
           tcpEStatsSendBuffSTuneErr           TruthValue
       }

   tcpEStatsSendBuffSndBuf  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current total amount of sender buffer memory available
           to the connection."
       ::= { tcpEStatsSendBuffEntry 1 }

   tcpEStatsSendBuffCurRetranQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current amount of memory used for the retransmit queue."
       ::= { tcpEStatsSendBuffEntry 2 }

   tcpEStatsSendBuffMaxRetranQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum amount of memory used for the retransmit queue."
       ::= { tcpEStatsSendBuffEntry 3 }

   tcpEStatsSendBuffCurAppWQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION



Mathis, et al                                                  [Page 29]


          "The current amount of memory used to hold data that has
           been written by the application, but has yet to be
           transmitted on the network for the first time."
       ::= { tcpEStatsSendBuffEntry 4 }

   tcpEStatsSendBuffMaxAppWQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum amount of memory used to hold data that has
           been written by the application, but has yet to be
           transmitted on the network for the first time."
       ::= { tcpEStatsSendBuffEntry 5 }

   tcpEStatsSendBuffSTuneMode  OBJECT-TYPE
       SYNTAX          INTEGER {
          sndTModeDEFAULT(0),
          sndTModeSETSOCKOPT(1),
          sndTModeFIXED(2),
          sndTModeAUTO(3),
          sndTModeEXP1(4),
          sndTModeEXP2(5)
       }
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
          "The mode used for the sender-side TCP tuning by the Local
           Host."
       ::= { tcpEStatsSendBuffEntry 6 }

   tcpEStatsSendBuffSndbufSet  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "A read/write gage to manually set the current buffer size,
           when sndTMode is sndTModeFIXED. Reading SndbufSet always
           reports the most recent write to SndbufSet, even if
           sndTMode is not sndTModeFIXED. Note that when entering
           manual (aka fixed) tuning modes SndbufSet should be updated
           before sndTMode."
       ::= { tcpEStatsSendBuffEntry 7 }

   tcpEStatsSendBuffSAppBuf  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-write



Mathis, et al                                                  [Page 30]


       STATUS          current
       DESCRIPTION
          "Advise to the auto-tuning algorithm in regards to the
           amount of buffer used to decouple the application from the
           TCP end-point. e.g. for the sender, limits (high, low or
           soft reservation) on the data queued before it is first
           transmitted."
       ::= { tcpEStatsSendBuffEntry 8 }

   tcpEStatsSendBuffSMaxWinBuf  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
          "Advise to the auto-tuning algorithm in regards to the
           amount of buffer be used to support TCP retransmissions.
           e.g. limits on the TCP retransmit buffer. Its precise
           definition is tuning mode specific."
       ::= { tcpEStatsSendBuffEntry 9 }

   tcpEStatsSendBuffSXtra  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Additional mode specific advise to the auto-tuning
           algorithm."
       ::= { tcpEStatsSendBuffEntry 10 }

   tcpEStatsSendBuffSTuneErr  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
          "True indicates an autotuning error."
       ::= { tcpEStatsSendBuffEntry 11 }

   --
   -- TCP Local Receiver Table
   --

   tcpEStatsLocRecTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsRecEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Instruments on the state of the Local receiver and



Mathis, et al                                                  [Page 31]


           instruments on the receiver buffer usage, including any
           buffering in the application interface to TCP and the
           reassembly queue."
       ::= { tcpEStats 7 }

   tcpEStatsRecEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsRecEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Per connection information on the local receiver."
              INDEX { tcpEStatsConnectIdId }
       ::= { tcpEStatsLocRecTable 1 }

   TcpEStatsRecEntry ::= SEQUENCE {
           tcpEStatsRecCurRwinSent             Gauge32,
           tcpEStatsRecMaxRwinSent             Gauge32,
           tcpEStatsRecMinRwinSent             Gauge32,
           tcpEStatsRecDupAcksOut              Counter32,
           tcpEStatsRecRcvBuf                  Gauge32,
           tcpEStatsRecCurReasmQueue           Gauge32,
           tcpEStatsRecMaxReasmQueue           Gauge32,
           tcpEStatsRecCurAppRQueue            Gauge32,
           tcpEStatsRecMaxAppRQueue            Gauge32,
           tcpEStatsRecRTuneMode               INTEGER,
           tcpEStatsRecRcvbufSet               Gauge32,
           tcpEStatsRecRAppBuf                 Gauge32,
           tcpEStatsRecRMaxWinBuf              Gauge32,
           tcpEStatsRecRXtra                   Gauge32,
           tcpEStatsRecRTuneErr                TruthValue
       }

   tcpEStatsRecCurRwinSent  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current receiver window, in bytes, advertised by the
           Local Host for this connection."
       ::= { tcpEStatsRecEntry 1 }

   tcpEStatsRecMaxRwinSent  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum receiver window, in bytes, ever advertised by



Mathis, et al                                                  [Page 32]


           the Local Host for this connection."
       ::= { tcpEStatsRecEntry 2 }

   tcpEStatsRecMinRwinSent  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The minimum receiver window, in bytes, ever advertised by
           the Local Host for this connection."
       ::= { tcpEStatsRecEntry 3 }

   tcpEStatsRecDupAcksOut  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of duplicate ACKs sent on the connection by the
           Local Host."
       ::= { tcpEStatsRecEntry 4 }

   tcpEStatsRecRcvBuf  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current total amount of receiver buffer memory
           available to the connection."
       ::= { tcpEStatsRecEntry 5 }

   tcpEStatsRecCurReasmQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current amount of memory used for the reassembly queue."
       ::= { tcpEStatsRecEntry 6 }

   tcpEStatsRecMaxReasmQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum amount of memory used for the reassembly queue."
       ::= { tcpEStatsRecEntry 7 }

   tcpEStatsRecCurAppRQueue  OBJECT-TYPE



Mathis, et al                                                  [Page 33]


       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current amount of memory used to hold data that has
           been acknowledged to the sender but not delivered to the
           application."
       ::= { tcpEStatsRecEntry 8 }

   tcpEStatsRecMaxAppRQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum amount of memory used to hold data that has
           been acknowledged to the sender but not delivered to the
           application."
       ::= { tcpEStatsRecEntry 9 }

   tcpEStatsRecRTuneMode  OBJECT-TYPE
       SYNTAX          INTEGER {
          recTModeDEFAULT(0),
          recTModeSETSOCKOPT(1),
          recTModeFIXED(2),
          recTModeAUTO(3),
          recTModeEXP1(4),
          recTModeEXP2(5)
       }
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
          "The mode used for the receiver-side TCP tuning by the Local
           Host."
       ::= { tcpEStatsRecEntry 10 }

   tcpEStatsRecRcvbufSet  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "A read/write gauge to manually set the current buffer size,
           when RtuneMode is recTModeFIXED. Reading RcvbufSet always
           reports the most recent write to RcvbufSet, even if
           RtuneMode is not recTModeFIXED. Note that when entering
           manual (aka fixed) tuning modes RcvbufSet should be updated
           before RtuneMode."
       ::= { tcpEStatsRecEntry 11 }



Mathis, et al                                                  [Page 34]


   tcpEStatsRecRAppBuf  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
          "Advise to the auto-tuning algorithm in regards to the
           amount of buffer used to decouple the application from the
           TCP end-point. e.g. for the receiver, limits on the amount
           of buffer space available for data that has been
           acknowledged but not read by the application."
       ::= { tcpEStatsRecEntry 12 }

   tcpEStatsRecRMaxWinBuf  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
          "Advise to the auto-tuning algorithm in regards to the
           amount of buffer be used to support TCP retransmissions.
           e.g. limits on the TCP reassembly buffer. Its precise
           definition is tuning mode specific."
       ::= { tcpEStatsRecEntry 13 }

   tcpEStatsRecRXtra  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Additional mode specific advise to the auto-tuning
           algorithm."
       ::= { tcpEStatsRecEntry 14 }

   tcpEStatsRecRTuneErr  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
          "True indicates an autotuning error."
       ::= { tcpEStatsRecEntry 15 }

   --
   -- TCP Observed Receiver Window Table
   --

   tcpEStatsObsRecTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsObsRecEntry
       MAX-ACCESS  not-accessible



Mathis, et al                                                  [Page 35]


       STATUS      current
       DESCRIPTION
           "Instruments on receiver window updates that can be used
           to identify bottlenecks at the receiver.  These can be
           collected at the sender or anywhere along the network
           path, including at the receiver."
       ::= { tcpEStats 8 }

   tcpEStatsObsRecEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsObsRecEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Per connection information on receiver window."
              INDEX { tcpEStatsConnectIdId }
       ::= { tcpEStatsObsRecTable 1 }

   TcpEStatsObsRecEntry ::= SEQUENCE {
           tcpEStatsObsRecCurRwinRcvd          Gauge32,
           tcpEStatsObsRecMaxRwinRcvd          Gauge32,
           tcpEStatsObsRecMinRwinRcvd          Gauge32
       }

   tcpEStatsObsRecCurRwinRcvd  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current receiver window, in bytes, advertised by the
           Remote Host for this connection."
       ::= { tcpEStatsObsRecEntry 1 }

   tcpEStatsObsRecMaxRwinRcvd  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum receiver window, in bytes, ever advertised by
           the Remote Host for this connection."
       ::= { tcpEStatsObsRecEntry 2 }

   tcpEStatsObsRecMinRwinRcvd  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The minimum receiver window, in bytes, ever advertised by



Mathis, et al                                                  [Page 36]


           the Remote Host for this connection."
       ::= { tcpEStatsObsRecEntry 3 }

   --
   -- TCP Connection ID Table

   -- There is overlap with the new RFC2012 TCP Connection
   -- table. This approach was used to make it easier for
   -- implementations that may not have access to information in a
   -- sub-agent realizing the TCP Connection table. Also notice
   -- there is a semantic difference in the latency of row removal
   -- in this table. Row 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 at least 30 seconds after the
           TCP connection first enters the closed state."
       ::= { tcpEStats 9 }

   tcpEStatsConnectIdEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsConnectIdEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           ""
       INDEX   { tcpEStatsConnectLocalAddressType,
                 tcpEStatsConnectLocalAddress,
                 tcpEStatsConnectLocalPort,
                 tcpEStatsConnectRemAddressType,
                 tcpEStatsConnectRemAddress,
                 tcpEStatsConnectRemPort }
       ::= { tcpEStatsConnectIdTable 1 }

   TcpEStatsConnectIdEntry ::= SEQUENCE {
                 tcpEStatsConnectLocalAddressType  InetAddressType,
                 tcpEStatsConnectLocalAddress      InetAddress,
                 tcpEStatsConnectLocalPort         InetPortNumber,



Mathis, et al                                                  [Page 37]


                 tcpEStatsConnectRemAddressType    InetAddressType,
                 tcpEStatsConnectRemAddress        InetAddress,
                 tcpEStatsConnectRemPort           InetPortNumber,
                 tcpEStatsConnectIdId                Integer32
                 }
   tcpEStatsConnectLocalAddressType OBJECT-TYPE
       SYNTAX     InetAddressType
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
           "The address type of tcpEStatsConnectLocalAddress.
     Only IPv4 and IPv6 addresses are expected."
       ::= { tcpEStatsConnectIdEntry 1 }

   tcpEStatsConnectLocalAddress OBJECT-TYPE
       SYNTAX     InetAddress (SIZE(0..36))
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
           "The local IP address for this TCP connection.  In the
           case of a connection in the listen state which is willing
           to accept connections for any IP interface associated
           with the node, a value of all zeroes is used."
       ::= { 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.  Only
           IPv4 and IPv6 addresses are expected.  Must be the same
           as tcpEStatsConnectLocalAddressType."
       ::= { tcpEStatsConnectIdEntry 4 }

   tcpEStatsConnectRemAddress OBJECT-TYPE
       SYNTAX     InetAddress (SIZE(0..36))
       MAX-ACCESS not-accessible
       STATUS     current



Mathis, et al                                                  [Page 38]


       DESCRIPTION
           "The remote IP address for this TCP connection."
       ::= { tcpEStatsConnectIdEntry 5 }

   tcpEStatsConnectRemPort OBJECT-TYPE
       SYNTAX     InetPortNumber
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
           "The remote port number for this TCP connection."
       ::= { tcpEStatsConnectIdEntry 6 }

   tcpEStatsConnectIdId  OBJECT-TYPE
       SYNTAX          Integer32 (0..2147483647)
       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 }

   -- The tcpEStatsControl Group

   -- The scalar objects in this group are used to control the
   -- activation and deactivation of the TCP Extended Statistics
   -- tables in this module.
   --

   tcpEStatsControlState  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the activation of the TCP Connection State
           Statistics table."
       ::= { tcpEStatsControl 1 }

   tcpEStatsControlSynOpts  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the activation of the TCP SYN Options table."
       ::= { tcpEStatsControl 2 }




Mathis, et al                                                  [Page 39]


   tcpEStatsControlData  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the activation of the TCP Data Table."
       ::= { tcpEStatsControl 3 }

   tcpEStatsControlSndCong  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the activation of the TCP Sender Table."
       ::= { tcpEStatsControl 4 }

   tcpEStatsControlPath  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the activation of the TCP Path Table."
       ::= { tcpEStatsControl 5 }

   tcpEStatsControlSendBuff  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the activation of the TCP Sender Buffer Table."
       ::= { tcpEStatsControl 6 }

   tcpEStatsControlLocRec  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the activation of the TCP Local Receiver Table."
       ::= { tcpEStatsControl 7 }

   tcpEStatsControlObsRec  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the activation of the TCP Observed Receiver Window
           Table."



Mathis, et al                                                  [Page 40]


       ::= { tcpEStatsControl 8 }

   tcpEStatsControlConnectId  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the activation of the TCP Connection ID Table."
       ::= { tcpEStatsControl 9 }


   -- TCP Extended Statistics Notifications Group

   tcpEStatsSTuneErrNotification NOTIFICATION-TYPE
       OBJECTS     {
                    tcpEStatsSendBuffSTuneErr
                   }
       STATUS      current
       DESCRIPTION
           ""
       ::= { tcpEStatsNotifications 1 }

   tcpEStatsRTuneErrNotification NOTIFICATION-TYPE
       OBJECTS     {
                   tcpEStatsRecRTuneErr
                   }
       STATUS      current
       DESCRIPTION
           ""
       ::= { tcpEStatsNotifications 2 }

   --
   -- Conformance Definitions
   --

      tcpEStatsCompliances   OBJECT IDENTIFIER
           ::= { tcpEStatsConformance 1 }
      tcpEStatsGroups        OBJECT IDENTIFIER
           ::= { tcpEStatsConformance 2 }

   -- Compliance Statements

     tcpEStatsCompliance MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
            "Compliance statement for all systems that implement TCP
            extended statistics."



Mathis, et al                                                  [Page 41]


        MODULE -- this module
            MANDATORY-GROUPS {
                               tcpEStats,
                               tcpEStatsControl,
                               tcpEStatsNotifications
                             }
      ::= { tcpEStatsCompliances 1 }

   -- Units of Conformance

       tcpEStatsGroup  OBJECT-GROUP
            OBJECTS {
                 tcpEStatsConnectionState, tcpEStatsConnectionSACK,
                 tcpEStatsConnectionTimeStamps,
                 tcpEStatsConnectionECN, tcpEStatsConnectionNagle,
                 tcpEStatsConnectionWinScaleRcvd,
                 tcpEStatsConnectionWinScaleSent,
                 tcpEStatsSynOptsSACKSent,
                 tcpEStatsSynOptsSACKRcvd,
                 tcpEStatsSynOptsTimeStampSent,
                 tcpEStatsSynOptsTimeStampRcvd,
                 tcpEStatsSynOptsActiveOpen, tcpEStatsDataPktsOut,
                 tcpEStatsDataDataPktsOut, tcpEStatsDataAckPktsOut,
                 tcpEStatsDataDataBytesOut, tcpEStatsDataPktsIn,
                 tcpEStatsDataDataPktsIn, tcpEStatsDataAckPktsIn,
                 tcpEStatsDataDataBytesIn, tcpEStatsDataSndUna,
                 tcpEStatsDataSndNxt, tcpEStatsDataSndMax,
                 tcpEStatsDataThruBytesSent,
                 tcpEStatsDataSendInitial, tcpEStatsDataSendWraps,
                 tcpEStatsDataRcvNxt,
                 tcpEStatsDataThruBytesReceived,
                 tcpEStatsDataRecInitial, tcpEStatsDataRecWraps,
                 tcpEStatsDataCurTime, tcpEStatsDataStartTime,
                 tcpEStatsSndCongSndLimTransSnd,
                 tcpEStatsSndCongSndLimTimeSnd,
                 tcpEStatsSndCongSndLimBytesSnd,
                 tcpEStatsSndCongSndLimTransCwnd,
                 tcpEStatsSndCongSndLimTimeCwnd,
                 tcpEStatsSndCongSndLimBytesCwnd,
                 tcpEStatsSndCongSndLimTransRwin,
                 tcpEStatsSndCongSndLimTimeRwin,
                 tcpEStatsSndCongSndLimBytesRwin,
                 tcpEStatsSndCongSlowStart,
                 tcpEStatsSndCongCongAvoid,
                 tcpEStatsSndCongCongSignals,
                 tcpEStatsSndCongOtherReductions,
                 tcpEStatsSndCongCongOverCount,



Mathis, et al                                                  [Page 42]


                 tcpEStatsSndCongCurCwnd,
                 tcpEStatsSndCongSumCwndAtCong,
                 tcpEStatsSndCongMaxCwnd,
                 tcpEStatsSndCongCurSsthresh,
                 tcpEStatsSndCongMaxSsthresh,
                 tcpEStatsSndCongMinSsthresh,
                 tcpEStatsPathFastRetran, tcpEStatsPathTimeouts,
                 tcpEStatsPathSubsequentTimeouts,
                 tcpEStatsPathCurTimeoutCount,
                 tcpEStatsPathAbruptTimeouts,
                 tcpEStatsPathPktsRetrans,
                 tcpEStatsPathBytesRetrans, tcpEStatsPathDupAcksIn,
                 tcpEStatsPathSACKsRcvd,
                 tcpEStatsPathSACKBlocksRcvd,
                 tcpEStatsPathPreCongSumRTT,
                 tcpEStatsPathPreCongCountRTT,
                 tcpEStatsPathPostCongSumRTT,
                 tcpEStatsPathPostCongCountRTT,
                 tcpEStatsPathECERcvd, tcpEStatsPathSendStall,
                 tcpEStatsPathQuenchRcvd,
                 tcpEStatsPathMaxRetranThresh,
                 tcpEStatsPathNonRecovDA, tcpEStatsPathAckAfterFR,
                 tcpEStatsPathDSACKDups, tcpEStatsPathSampleRTT,
                 tcpEStatsPathSmoothedRTT, tcpEStatsPathMaxRTT,
                 tcpEStatsPathMinRTT, tcpEStatsPathSumRTT,
                 tcpEStatsPathCountRTT, tcpEStatsPathCurRTO,
                 tcpEStatsPathMaxRTO, tcpEStatsPathMinRTO,
                 tcpEStatsPathCurMSS, tcpEStatsPathMaxMSS,
                 tcpEStatsPathMinMSS, tcpEStatsSendBuffSndBuf,
                 tcpEStatsSendBuffCurRetranQueue,
                 tcpEStatsSendBuffMaxRetranQueue,
                 tcpEStatsSendBuffCurAppWQueue,
                 tcpEStatsSendBuffMaxAppWQueue,
                 tcpEStatsSendBuffSTuneMode,
                 tcpEStatsSendBuffSndbufSet,
                 tcpEStatsSendBuffSAppBuf,
                 tcpEStatsSendBuffSMaxWinBuf,
                 tcpEStatsSendBuffSXtra, tcpEStatsSendBuffSTuneErr,
                 tcpEStatsRecCurRwinSent, tcpEStatsRecMaxRwinSent,
                 tcpEStatsRecMinRwinSent, tcpEStatsRecDupAcksOut,
                 tcpEStatsRecRcvBuf, tcpEStatsRecCurReasmQueue,
                 tcpEStatsRecMaxReasmQueue,
                 tcpEStatsRecCurAppRQueue,
                 tcpEStatsRecMaxAppRQueue, tcpEStatsRecRTuneMode,
                 tcpEStatsRecRcvbufSet, tcpEStatsRecRAppBuf,
                 tcpEStatsRecRMaxWinBuf, tcpEStatsRecRXtra,
                 tcpEStatsRecRTuneErr, tcpEStatsObsRecCurRwinRcvd,



Mathis, et al                                                  [Page 43]


                 tcpEStatsObsRecMaxRwinRcvd,
                 tcpEStatsObsRecMinRwinRcvd,
                 tcpEStatsConnectIdId
            }
            STATUS current
            DESCRIPTION
                "The tcpEStats group is mandatory for all
                systems that implement this MIB Module."
         ::= { tcpEStatsGroups 1 }

       tcpEStatsControlGroup  OBJECT-GROUP
            OBJECTS {
                    tcpEStatsControlState, tcpEStatsControlSynOpts,
                    tcpEStatsControlData, tcpEStatsControlSndCong,
                    tcpEStatsControlPath, tcpEStatsControlSendBuff,
                    tcpEStatsControlLocRec, tcpEStatsControlObsRec,
                    tcpEStatsControlConnectId
            }
            STATUS current
            DESCRIPTION
                "The tcpEStatsControl group is mandatory for all
                systems that claim conformance to this MIB Module."
      ::= { tcpEStatsGroups 2 }

   tcpEStatsNotificationsGroup  NOTIFICATION-GROUP
       NOTIFICATIONS {
                     tcpEStatsSTuneErrNotification,
                     tcpEStatsRTuneErrNotification
       }
       STATUS        current
       DESCRIPTION
           "Notifications sent by a TCP extended statistics agent."
       ::= { tcpEStatsGroups 3 }

      END




44..  SSeeccuurriittyy CCoonnssiiddeerraattiioonnss


   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 envi¡
   ronment without proper protection can have a negative effect on



Mathis, et al                                                  [Page 44]


   network operations.

   There are a number of managed objects in this MIB that may contain
   sensitive information. These are:

   tcpEStatsConnectRemAddress

   It is thus important to control even GET access to these objects and
   possibly to even encrypt the values of these object 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), even then, 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 the implementers consider the security fea¡
   tures 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 config¡
   ured to give access to the objects only to those principals (users)
   that have legitimate rights to indeed GET or SET (change/cre¡
   ate/delete) them.


55..  AACCKKNNOOWWLLEEDDGGMMEENNTTSS

   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.

   Some of the object descriptions are based on an earlier unpublished
   document by Jeff Semke.

66..  RREEFFEERREENNCCEESS



[RFC1155]  Rose, M., and K. McCloghrie, "Structure and Identification of
     Management Information for TCP/IP-based Internets", STD 16, RFC
     1155, May 1990.



Mathis, et al                                                  [Page 45]


[RFC1157]  Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple
     Network Management Protocol", STD 15, RFC 1157, May 1990.

[RFC1212]  Rose, M., and K. McCloghrie, "Concise MIB Definitions", STD
     16, RFC 1212, March 1991.

[RFC1215]  Rose, M., "A Convention for Defining Traps for use with the
     SNMP", RFC 1215, March 1991.

[RFC1901] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Intro¡
     duction to Community-based SNMPv2", RFC 1901, January 1996.

[RFC1906] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Trans¡
     port Mappings for Version 2 of the Simple Network Management Proto¡
     col (SNMPv2)", RFC 1906, January 1996.

[RFC1905] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Proto¡
     col Operations for Version 2 of the Simple Network Management Pro¡
     tocol (SNMPv2)", RFC 1905, January 1996.

[RFC2012] McCloghrie, K., "SNMPv2 Management Information Base for the
     Transmission Control Protocol using SMIv2", RFC 2012, November
     1996.

[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.

[RFC2573] Levi, D., Meyer, P., and B. Stewart, "SNMPv3 Applications",
     RFC 2573, 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.

[RFC1907] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, q(Man¡
     agement Information Base for Version 2 of the Simple Network Man¡
     agement Protocol (SNMPv2) q, RFC 1907, January 1996.

[RFC2233] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB
     using SMIv2", RFC 2233, Cisco Systems, FTP Software, November 1997.

[RFC2570] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduc¡
     tion to Version 3 of the Internet-standard Network Management
     Framework", RFC 2570, April 1999.





Mathis, et al                                                  [Page 46]


[RFC2571]  Harrington, D., Presuhn, R., and B. Wijnen, "An Architecture
     for Describing SNMP Management Frameworks", RFC 2571, April 1999.

[RFC2572] Case, J., Harrington D., Presuhn R., and B. Wijnen, "Message
     Processing and Dispatching for the Simple Network Management Proto¡
     col (SNMP)", RFC 2572, April 1999.

[RFC2574] Blumenthal, U., and B. Wijnen, "User-based Security Model
     (USM) for version 3 of the Simple Network Management Protocol
     (SNMPv3)", RFC 2574, 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.


12.  EDITORS' ADDRESSES

          Matt Mathis
          Raghu Reddy
          Pittsburgh Supercomputing Center
          4400 Fifth Ave
          Pittsburgh, PA 15216
          mathis@web100.org

          Jon Saperia
          JDS Consulting
          174 Chapman Street
          Watertown, MA 02472
          email - saperia@jdscons.com





     13. INTELLECTUAL PROPERTY

     The IETF takes no position regarding the validity or scope of any
     intellectual property or other rights that might be claimed to



Mathis, et al                                                  [Page 47]


     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; neither does it represent that it
     has made any effort to identify any such rights.  Information on
     the IETF's procedures with respect to rights in standards-track and
     standards-related documentation can be found in BCP-11.  Copies of
     claims of rights made available for publication and any assurances
     of licenses to be made available, or the result of an attempt made
     to obtain a general license or permission for the use of such pro¡
     prietary rights by implementers or users of this specification can
     be obtained from the IETF Secretariat.



     The IETF invites any interested party to bring to its attention any
     copyrights, patents or patent applications, or other proprietary
     rights which may cover technology that may be required to practice
     this standard.  Please address the information to the IETF Execu¡
     tive Director.

     14.  Full Copyright Statement


     Copyright (C) The Internet Society (2000). All Rights Reserved.



     This document and translations of it may be copied and furnished to
     others, and derivative works that comment on or otherwise explain
     it or assist in its implementation may be prepared, copied, pub¡
     lished and distributed, in whole or in part, without restriction of
     any kind, provided that the above copyright notice and this para¡
     graph are included on all such copies and derivative works.  How¡
     ever, this document itself may not be modified in any way, such as
     by removing the copyright notice or references to the Internet
     Society or other Internet organizations, except as needed for the
     purpose of developing Internet standards in which case the proce¡
     dures for copyrights defined in the Internet Standards process must
     be followed, or as required to translate it into languages other
     than English.



     The limited permissions granted above are perpetual and will not be
     revoked by the Internet Society or its successors or assigns.





Mathis, et al                                                  [Page 48]


     This document and the information contained herein is provided on
     an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGI¡
     NEERING TASK FORCE DISCLAIMS 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 WAR¡
     RANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

                              TTaabbllee ooff CCoonntteennttss


     1. INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . .   2
     2. The SNMP Management Framework  . . . . . . . . . . . . . . .   2
     3. TCP Extended Statistics MIB  . . . . . . . . . . . . . . . .   2
     4. Security Considerations  . . . . . . . . . . . . . . . . . .   2
     5. ACKNOWLEDGMENTS  . . . . . . . . . . . . . . . . . . . . . .   2
     6. REFERENCES . . . . . . . . . . . . . . . . . . . . . . . . .   2


































Mathis, et al                                                  [Page 49]