Internet-Draft                                            Matt Mathis
                                                          Raghu Reddy
                                                         John Heffner
                                     Pittsburgh Supercomputing Center
                                                           J. Saperia
                                                  JDS Consulting, Inc



                      TCP Extended Statistics MIB
               draft-ietf-tsvwg-tcp-mib-extension-00.txt
                           February 22, 2002



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 in the sender, the receiver or the network itself.  If the bottle-
   neck is in the network, TCP can provide specific information about
   its nature.



Mathis, et al                                                   [Page 1]


Internet-Draft Expires Sep 2002                            February 2002


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 network itself.  If the bottle-
   neck 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 document:  It is automatically generated from a database of
   potential TCP instruments.  The most current version can be obtained
   from http://www.psc.edu/~mathis/papers/draft-ietf-tsvwg-tcp-mib-
   extension-XX.txt Please use tsvwg@ietf.org to send comments to the
   entire TSV WG.


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


    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


Mathis, et al                                                   [Page 2]


        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.


33..  TTCCPP EExxtteennddeedd SSttaattiissttiiccss MMIIBB







Mathis, et al                                                   [Page 3]


   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 "200202202002Z"  -- February 20, 2002
       ORGANIZATION "IETF TSV 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 "200202202002Z"  -- February 20, 2002
       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 4]


   --
   -- 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 5]


           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 6]


       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 advertised 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 7]


       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
           "Per connection SYN and SYN-ACk options."
              INDEX { tcpEStatsConnectIdId }
       ::= { tcpEStatsSynOptsTable 1 }

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

   tcpEStatsSynOptsMSSSent  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The value sent in an MSS option, or zero if none"
       ::= { tcpEStatsSynOptsEntry 1 }

   tcpEStatsSynOptsMSSRcvd  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The value received in an MSS option, or zero if none"
       ::= { tcpEStatsSynOptsEntry 2 }

   tcpEStatsSynOptsSACKSent  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION



Mathis, et al                                                   [Page 8]


          "True if SACKok was sent in SYN or SYN-ACK."
       ::= { tcpEStatsSynOptsEntry 3 }

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

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

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

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

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



Mathis, et al                                                   [Page 9]


           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,
           tcpEStatsDataAckPktsIn              Counter32,
           tcpEStatsDataDataBytesIn            Counter64,
           tcpEStatsDataSndUna                 Counter32,
           tcpEStatsDataSndNxt                 Integer32,
           tcpEStatsDataSndMax                 Counter32,
           tcpEStatsDataThruBytesSent          Counter64,
           tcpEStatsDataSndInitial             Counter32,
           tcpEStatsDataSendWraps              Counter32,
           tcpEStatsDataRcvNxt                 Counter32,
           tcpEStatsDataThruBytesReceived      Counter64,
           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



Mathis, et al                                                  [Page 10]


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



Mathis, et al                                                  [Page 11]


       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
          "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



Mathis, et al                                                  [Page 12]


           remote receiver as indicated by the 64 bit sum of changes
           in snd_una."
       ::= { tcpEStatsDataEntry 12 }

   tcpEStatsDataSndInitial  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 }

   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 }




Mathis, et al                                                  [Page 13]


   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
       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 }




Mathis, et al                                                  [Page 14]


   tcpEStatsSndCongEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsSndCongEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Per connection sender triage statistics."
              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,
           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



Mathis, et al                                                  [Page 15]


       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 }

   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



Mathis, et al                                                  [Page 16]


          "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
       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



Mathis, et al                                                  [Page 17]


          "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
           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 of anything other than AIMD
           congestion algorithms. All window reductions MUST be
           counted as either CongestionSignals or OtherReductions.
           Examples of non-multiplicative window reductions include
           slowstart 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



Mathis, et al                                                  [Page 18]


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



Mathis, et al                                                  [Page 19]


           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
       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
           "Per connection path statistics."
              INDEX { tcpEStatsConnectIdId }
       ::= { tcpEStatsPathTable 1 }

   TcpEStatsPathEntry ::= SEQUENCE {
           tcpEStatsPathFastRetran             Counter32,
           tcpEStatsPathTimeouts               Counter32,
           tcpEStatsPathSubsequentTimeouts     Counter32,
           tcpEStatsPathCurTimeoutCount        Gauge32,



Mathis, et al                                                  [Page 20]


           tcpEStatsPathAbruptTimeouts         Counter32,
           tcpEStatsPathPktsRetrans            Counter32,
           tcpEStatsPathBytesRetrans           Counter32,
           tcpEStatsPathDupAcksIn              Counter32,
           tcpEStatsPathSACKsRcvd              Counter32,
           tcpEStatsPathSACKBlocksRcvd         Counter32,
           tcpEStatsPathPreCongSumRTT          Counter32,
           tcpEStatsPathPreCongCountRTT        Counter32,
           tcpEStatsPathPostCongSumRTT         Counter32,
           tcpEStatsPathPostCongCountRTT       Counter32,
           tcpEStatsPathECNsignals             Counter32,
           tcpEStatsPathECERcvd                Counter32,
           tcpEStatsPathSendStall              Counter32,
           tcpEStatsPathQuenchRcvd             Counter32,
           tcpEStatsPathRetranThresh           Gauge32,
           tcpEStatsPathNonRecovDA             Counter32,
           tcpEStatsPathAckAfterFR             Counter32,
           tcpEStatsPathDSACKDups              Counter32,
           tcpEStatsPathSampleRTT              Gauge32,
           tcpEStatsPathSmoothedRTT            Gauge32,
           tcpEStatsPathMaxRTT                 Gauge32,
           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,



Mathis, et al                                                  [Page 21]


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



Mathis, et al                                                  [Page 22]


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



Mathis, et al                                                  [Page 23]


          "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 }

   tcpEStatsPathECNsignals  OBJECT-TYPE
       SYNTAX          Counter32
       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 15 }

   tcpEStatsPathECERcvd  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of Congestion Signals received via the RFC3168
           ECE bit."
       ::= { tcpEStatsPathEntry 16 }

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



Mathis, et al                                                  [Page 24]


   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 18 }

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

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

   tcpEStatsPathAckAfterFR  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "ACKs following FR, but not due to FR (way out-of-order).
           @@@@@ This is intended to instrument premature fast
           retransmits. It may be as simple as counting partial acks
           that are not followed by more duplicate acknowledgements.
           This may also instrument the Eifel algorithm."
       ::= { tcpEStatsPathEntry 21 }

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



Mathis, et al                                                  [Page 25]


   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 23 }

   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 24 }

   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 25 }

   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 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 27 }

   tcpEStatsPathCountRTT  OBJECT-TYPE
       SYNTAX          Counter32



Mathis, et al                                                  [Page 26]


       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Count of RTT samples included in SumRTT."
       ::= { tcpEStatsPathEntry 28 }

   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 29 }

   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 30 }

   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 31 }

   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 32 }

   tcpEStatsPathMaxMSS  OBJECT-TYPE
       SYNTAX          Gauge32



Mathis, et al                                                  [Page 27]


       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 33 }

   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 34 }

   --
   -- 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 statistics."
              INDEX { tcpEStatsConnectIdId }
       ::= { tcpEStatsSendBuffTable 1 }

   TcpEStatsSendBuffEntry ::= SEQUENCE {
           tcpEStatsSendBuffSndBuf             Gauge32,
           tcpEStatsSendBuffCurRetranQueue     Gauge32,
           tcpEStatsSendBuffMaxRetranQueue     Gauge32,
           tcpEStatsSendBuffCurAppWQueue       Gauge32,
           tcpEStatsSendBuffMaxAppWQueue       Gauge32,
           tcpEStatsSendBuffSTuneMode          INTEGER,
           tcpEStatsSendBuffSndbufSet          Gauge32,



Mathis, et al                                                  [Page 28]


           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
          "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



Mathis, et al                                                  [Page 29]


           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 STuneMode is sndTModeFIXED. Reading SndbufSet always
           reports the most recent write to SndbufSet, even if
           STuneMode is not sndTModeFIXED. Note that when entering
           manual (aka fixed) tuning modes SndbufSet should be updated
           before STuneMode."
       ::= { tcpEStatsSendBuffEntry 7 }

   tcpEStatsSendBuffSAppBuf  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 sender, limits (high, low or
           soft reservation) on the data queued before it is first
           transmitted."
       ::= { tcpEStatsSendBuffEntry 8 }

   tcpEStatsSendBuffSMaxWinBuf  OBJECT-TYPE
       SYNTAX          Gauge32



Mathis, et al                                                  [Page 30]


       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 tuning error. Error indications must be
           explicitly cleared."
       ::= { tcpEStatsSendBuffEntry 11 }

   --
   -- TCP Local Receiver Table
   --

   tcpEStatsRecTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsRecEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Instruments on the state of the Local receiver and
           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



Mathis, et al                                                  [Page 31]


           "Per connection local receiver statistics."
              INDEX { tcpEStatsConnectIdId }
       ::= { tcpEStatsRecTable 1 }

   TcpEStatsRecEntry ::= SEQUENCE {
           tcpEStatsRecCurRwinSent             Gauge32,
           tcpEStatsRecMaxRwinSent             Gauge32,
           tcpEStatsRecMinRwinSent             Gauge32,
           tcpEStatsRecOutOfWindowDiscards     Counter32,
           tcpEStatsRecOutOfWindowReason       INTEGER,
           tcpEStatsRecDupAckEpisodes          Counter32,
           tcpEStatsRecDupAcksOut              Counter32,
           tcpEStatsRecCERcvd                  Counter32,
           tcpEStatsRecECNSent                 Counter32,
           tcpEStatsRecECNNonceRcvd            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
           the Local Host for this connection."
       ::= { tcpEStatsRecEntry 2 }

   tcpEStatsRecMinRwinSent  OBJECT-TYPE



Mathis, et al                                                  [Page 32]


       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 }

   tcpEStatsRecOutOfWindowDiscards  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Packets discarded because they fail a window test,
           including data, ack number or PAWS."
       ::= { tcpEStatsRecEntry 4 }

   tcpEStatsRecOutOfWindowReason  OBJECT-TYPE
       SYNTAX          INTEGER {
          belowDataWindow(1),
          aboveDataWindow(2),
          belowAckWindow(3),
          aboveAckWindow(4),
          belowTSWindow(5),
          aboveTSWindow(6)
       }
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Identifies the window test that most recently failed"
       ::= { tcpEStatsRecEntry 5 }

   tcpEStatsRecDupAckEpisodes  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of transitions into recovery states (requiring
           the transmission of duplicate acknowledgements)"
       ::= { tcpEStatsRecEntry 6 }

   tcpEStatsRecDupAcksOut  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of duplicate ACKs sent on the connection by the



Mathis, et al                                                  [Page 33]


           Local Host."
       ::= { tcpEStatsRecEntry 7 }

   tcpEStatsRecCERcvd  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Received segments with Congestion Experienced bits."
       ::= { tcpEStatsRecEntry 8 }

   tcpEStatsRecECNSent  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Number of times CE bits have set ECN."
       ::= { tcpEStatsRecEntry 9 }

   tcpEStatsRecECNNonceRcvd  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Number of ECN Nonces received. Note that the low bit is the
           same as the 1 bit nonce sum. @@@@ not yet standards track"
       ::= { tcpEStatsRecEntry 10 }

   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 11 }

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

   tcpEStatsRecMaxReasmQueue  OBJECT-TYPE
       SYNTAX          Gauge32



Mathis, et al                                                  [Page 34]


       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum amount of memory used for the reassembly queue."
       ::= { tcpEStatsRecEntry 13 }

   tcpEStatsRecCurAppRQueue  OBJECT-TYPE
       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 14 }

   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 15 }

   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 16 }

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



Mathis, et al                                                  [Page 35]


          "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 17 }

   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 18 }

   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 19 }

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

   tcpEStatsRecRTuneErr  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
          "True indicates an tuning error. Error indications must be
           explicitly cleared."



Mathis, et al                                                  [Page 36]


       ::= { tcpEStatsRecEntry 21 }

   --
   -- TCP Observed Receiver Window Table
   --

   tcpEStatsObsRecTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsObsRecEntry
       MAX-ACCESS  not-accessible
       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



Mathis, et al                                                  [Page 37]


           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
           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
           "Connection ID table."
       INDEX   { tcpEStatsConnectLocalAddressType,
                 tcpEStatsConnectLocalAddress,
                 tcpEStatsConnectLocalPort,



Mathis, et al                                                  [Page 38]


                 tcpEStatsConnectRemAddressType,
                 tcpEStatsConnectRemAddress,
                 tcpEStatsConnectRemPort }
       ::= { tcpEStatsConnectIdTable 1 }

   TcpEStatsConnectIdEntry ::= SEQUENCE {
                 tcpEStatsConnectLocalAddressType  InetAddressType,
                 tcpEStatsConnectLocalAddress      InetAddress,
                 tcpEStatsConnectLocalPort         InetPortNumber,
                 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



Mathis, et al                                                  [Page 39]


           "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
       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 }



Mathis, et al                                                  [Page 40]


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

   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 }



Mathis, et al                                                  [Page 41]


   tcpEStatsControlObsRec  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the activation of the TCP Observed Receiver Window
           Table."
       ::= { 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
           "Sender tuning error"
       ::= { tcpEStatsNotifications 1 }

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

   --
   -- Conformance Definitions
   --

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




Mathis, et al                                                  [Page 42]


   -- Compliance Statements

     tcpEStatsCompliance MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
            "Compliance statement for all systems that implement TCP
            extended statistics."
        MODULE -- this module
            MANDATORY-GROUPS {
                               tcpEStats,
                               tcpEStatsControl,
                               tcpEStatsNotifications
                             }
      ::= { tcpEStatsCompliances 1 }

   -- Units of Conformance

       tcpEStatsGroup  OBJECT-GROUP
            OBJECTS {
                 tcpEStatsConnectionState, tcpEStatsConnectionSACK,
                 tcpEStatsConnectionTimeStamps,
                 tcpEStatsConnectionECN, tcpEStatsConnectionNagle,
                 tcpEStatsConnectionWinScaleRcvd,
                 tcpEStatsConnectionWinScaleSent,
                 tcpEStatsSynOptsMSSSent, tcpEStatsSynOptsMSSRcvd,
                 tcpEStatsSynOptsSACKSent,
                 tcpEStatsSynOptsSACKRcvd,
                 tcpEStatsSynOptsTimeStampSent,
                 tcpEStatsSynOptsTimeStampRcvd,
                 tcpEStatsSynOptsActiveOpen, tcpEStatsDataPktsOut,
                 tcpEStatsDataDataPktsOut, tcpEStatsDataAckPktsOut,
                 tcpEStatsDataDataBytesOut, tcpEStatsDataPktsIn,
                 tcpEStatsDataDataPktsIn, tcpEStatsDataAckPktsIn,
                 tcpEStatsDataDataBytesIn, tcpEStatsDataSndUna,
                 tcpEStatsDataSndNxt, tcpEStatsDataSndMax,
                 tcpEStatsDataThruBytesSent,
                 tcpEStatsDataSndInitial, tcpEStatsDataSendWraps,
                 tcpEStatsDataRcvNxt,
                 tcpEStatsDataThruBytesReceived,
                 tcpEStatsDataRecInitial, tcpEStatsDataRecWraps,
                 tcpEStatsDataCurTime, tcpEStatsDataStartTime,
                 tcpEStatsSndCongSndLimTransSnd,
                 tcpEStatsSndCongSndLimTimeSnd,
                 tcpEStatsSndCongSndLimBytesSnd,
                 tcpEStatsSndCongSndLimTransCwnd,
                 tcpEStatsSndCongSndLimTimeCwnd,
                 tcpEStatsSndCongSndLimBytesCwnd,



Mathis, et al                                                  [Page 43]


                 tcpEStatsSndCongSndLimTransRwin,
                 tcpEStatsSndCongSndLimTimeRwin,
                 tcpEStatsSndCongSndLimBytesRwin,
                 tcpEStatsSndCongSlowStart,
                 tcpEStatsSndCongCongAvoid,
                 tcpEStatsSndCongCongSignals,
                 tcpEStatsSndCongOtherReductions,
                 tcpEStatsSndCongCongOverCount,
                 tcpEStatsSndCongCurCwnd,
                 tcpEStatsSndCongSumCwndAtCong,
                 tcpEStatsSndCongMaxCwnd,
                 tcpEStatsSndCongCurSsthresh,
                 tcpEStatsSndCongMaxSsthresh,
                 tcpEStatsSndCongMinSsthresh,
                 tcpEStatsPathFastRetran, tcpEStatsPathTimeouts,
                 tcpEStatsPathSubsequentTimeouts,
                 tcpEStatsPathCurTimeoutCount,
                 tcpEStatsPathAbruptTimeouts,
                 tcpEStatsPathPktsRetrans,
                 tcpEStatsPathBytesRetrans, tcpEStatsPathDupAcksIn,
                 tcpEStatsPathSACKsRcvd,
                 tcpEStatsPathSACKBlocksRcvd,
                 tcpEStatsPathPreCongSumRTT,
                 tcpEStatsPathPreCongCountRTT,
                 tcpEStatsPathPostCongSumRTT,
                 tcpEStatsPathPostCongCountRTT,
                 tcpEStatsPathECNsignals, tcpEStatsPathECERcvd,
                 tcpEStatsPathSendStall, tcpEStatsPathQuenchRcvd,
                 tcpEStatsPathRetranThresh,
                 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,



Mathis, et al                                                  [Page 44]


                 tcpEStatsRecMinRwinSent,
                 tcpEStatsRecOutOfWindowDiscards,
                 tcpEStatsRecOutOfWindowReason,
                 tcpEStatsRecDupAckEpisodes,
                 tcpEStatsRecDupAcksOut, tcpEStatsRecCERcvd,
                 tcpEStatsRecECNSent, tcpEStatsRecECNNonceRcvd,
                 tcpEStatsRecRcvBuf, tcpEStatsRecCurReasmQueue,
                 tcpEStatsRecMaxReasmQueue,
                 tcpEStatsRecCurAppRQueue,
                 tcpEStatsRecMaxAppRQueue, tcpEStatsRecRTuneMode,
                 tcpEStatsRecRcvbufSet, tcpEStatsRecRAppBuf,
                 tcpEStatsRecRMaxWinBuf, tcpEStatsRecRXtra,
                 tcpEStatsRecRTuneErr, tcpEStatsObsRecCurRwinRcvd,
                 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 }




Mathis, et al                                                  [Page 45]


      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 net-
   work operations.

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

   tcpEStatsConnectRemAddress tcpEStatsDataSndUna tcpEStatsDataSndNxt
   tcpEStatsDataSndMax tcpEStatsDataSendInitial tcpEStatsDataRcvNxt
   tcpEStatsDataRecInitial

   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),



Mathis, et al                                                  [Page 46]


   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.

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




Mathis, et al                                                  [Page 47]


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

[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



Mathis, et al                                                  [Page 48]


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



Mathis, et al                                                  [Page 49]


     However, 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.



     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 50]