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

                      TCP Extended Statistics MIB
               draft-ietf-tsvwg-tcp-mib-extension-06.txt
                      Sun Feb 20 13:56:25 EST 2005

Status of this Memo

   By submitting this Internet-Draft, I certify that any applicable
   patent or other IPR claims of which I am aware have been disclosed,
   and any of which I become aware will be disclosed, in accordance with
   RFC 3668.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups. Note that other
   groups may also distribute working documents as Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time. It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at http://
   www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire Aug 31, 2005

Copyright Notice

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

Abstract

   This draft describes extended performance statistics for TCP.  They
   are designed to use TCP's ideal vantage point to diagnose performance
   problems in both the network and the application.  If a network based
   application is performing poorly, TCP can determine if the bottleneck
   is in the sender, the receiver or the network itself.  If the



Mathis, et al                                                   [Page 1]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


   bottleneck is in the network, TCP can provide specific information
   about its nature.

Table of Contents


      1. Introduction  . . . . . . . . . . . . . . . . . . . . . . . 2
      2. The Internet-Standard Management Framework  . . . . . . . . 4
      3. Overview  . . . . . . . . . . . . . . . . . . . . . . . . . 4
      4. TCP Extended Statistics MIB . . . . . . . . . . . . . . . . 8
      5. Normative References  . . . . . . . . . . . . . . . . . . . 58
      6. Informative References  . . . . . . . . . . . . . . . . . . 59
      7. Security Considerations . . . . . . . . . . . . . . . . . . 59
      8. Contributors  . . . . . . . . . . . . . . . . . . . . . . . 60
      9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 60
      10. Authors' Addresses . . . . . . . . . . . . . . . . . . . . 60
      11. Intellectual Property  . . . . . . . . . . . . . . . . . . 61
      12. Disclaimer of Validity . . . . . . . . . . . . . . . . . . 61
      13. Full Copyright Statement . . . . . . . . . . . . . . . . . 62

1. Introduction


   This draft describes extended performance statistics for TCP.  They
   are designed to use TCP's ideal vantage point to diagnose performance
   problems in both the network and the application.  If a network based
   application is performing poorly, TCP can determine if the bottleneck
   is in the sender, the receiver or the network itself.  If the
   bottleneck is in the network, TCP can provide specific information
   about its nature.

   The SNMP objects defined in this draft extend TCP MIB, already under
   revision by the IPv6 team [RFC2012bis].

   This document is automatically generated from a database of potential
   TCP instruments.  Beware that the OIDs are still likely to change
   with future versions.  The most current version can be obtained from
   http://www.web100.org/mib/ .  Please use tsvwg@ietf.org to send
   comments to the entire TSV WG.

X. Changes

   This virtual section will be removed as the draft nears completion.

   Changes since draft-ietf-tsvwg-tcp-mib-extension-04.txt (27-Oct-2003)
   Many changes to object descriptions MIB comments and overview to
   improve clarity.




Mathis, et al                                                   [Page 2]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


   Completely restructured the perconnection tables.   Seven table were
   reduced to five.   The main perconnection table tcpEStatsPerfTable is
   now mandatory.  Three other new tables are focused on understanding
   the details of the behavior of the path, internal TCP algorithms and
   the application.   In addition, there is a new tuning table with per-
   connection writable controls to work around a number of common
   problems.  Note that due to the table restructuring, most of the
   object names listed below have changed.

   Restructured the Listen Table (tcpEStatsListenerTable) to better
   instrument various SYN flood defenses.

   Removed minimul receiver window objects, and replaced them by the
   count of the number of transitions to zero window from non-zero
   window.

   Replaced tcpEStatsPathIpTos by tcpEStatsPathIpTosOut and added
   tcpEStatsPathIpTosIn.

   Updated the descriptions of tcpEStatsDataSndNxt, tcpEStatsDataSndMax,
   tcpEStatsDataThruOctetsAcked, tcpEStatsDataHCThruBytesAcked,
   tcpEStatsDataThruBytesReceived, tcpEStatsDataHCThruBytesReceived,
   consistiently use RFC791 variables (SND.NXT, etc) or refer to other
   TCP-ESTATS-MIB objects.

   Changed tcpEStatsSynOptsMSSSent and tcpEStatsSynOptsMSSRcvd from
   Gauge32 to Unsigned32

   Updated descriptions of tcpEStatsConnectLocalAddress and
   tcpEStatsConnectRemAddress to new conventions for InetAddress
   [RFC3291bis]

   Updated ID boiler plate to RFC3668, ID-Guidelines and fixed some
   formatting glitches

   Added a Table of Contents

   Updated the description of tcpEStatsConnectionState to indicate that
   the listen state included only for document parallelism and should
   not be used.

   Explained why it is useful for tcpEStatsConnectIdTable and others to
   remain for 30 seconds after a connection closes (so you retrieve the
   total statistics for the entire connection).

   Added comment about not supporting writing DeleteTcb into the TCP
   State.




Mathis, et al                                                   [Page 3]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


   Explained that SndNxt is not a counter because it is non-monotonic.

   Clarified StartTime to be row creation

   Clarified row creation to be at the first SYN unless techniques to
   defend against SYN floods are in effect, then at connection
   establishment.

   Added tcpEStatsControlNotify to control the generation of
   notifications.

   Changed sequence numbers from ZeroBasedCounter32 to Counter32.

   Changes since draft-ietf-tsvwg-tcp-mib-extension-03.txt (2-Mar-2003)

   Replaced "queued" with "buffered by TCP"

   Changed all counters in the TCP connection tables to be ZeroBased

   Remove tcpEStatsHCInSegs, tcpEStatsHCOutSegs, which appear in as
   tcpHCInSegs and tcpHCOutSegs in draft-ietf-ipv6-rfc2012-update-03.txt
   and later drafts.

   Added changes section.

2. The Internet-Standard Management Framework

   For a detailed overview of the documents that describe the current
   Internet-Standard Management Framework, please refer to section 7 of
   RFC 3410 [RFC3410].

   Managed objects are accessed via a virtual information store, termed
   the Management Information Base or MIB.  MIB objects are generally
   accessed through the Simple Network Management Protocol (SNMP).
   Objects in the MIB are defined using the mechanisms defined in the
   Structure of Management Information (SMI).  This memo specifies a MIB
   module that is compliant to the SMIv2, which is described in STD 58,
   RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580
   [RFC2580].


3. Overview

      The TCP-ESTATS-MIB defined in this memo consists of 6 tables,
      two groups of scalars and two notifications:

      - The first group of scalars in this MIB contain a statistic
        of a TCP protocol engine not covered in [RFC2012bis].  The



Mathis, et al                                                   [Page 4]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


        scalar tcpEStatsListenerTableLastChange, provides management
        stations with an an easier mechanism to validate their
        listener caches.

      - The second group of scalars consist of knobs to enable and
        disable information collection by the tables containing
        connection-related statistics/information.  For example the
        tcpEStatsControlPath object controls the activation of the
        tcpEStatsPathTable.

        The tcpEStatsConnTableLatency object determines how long
        table rows are retained after connection close, to permit
        reading final connection completion statistics.

        Changing any of these controls may affect the correctness of
        other management applications accessing this MIB.  Generally
        local policy should only permit limited write access to
        these controls (e.g. only by one management station or only
        during system configuration).

      - The tcpEStatsListenerTable provides information on the
        active TCP listeners on a device.   It supports objects to
        monitor and diagnose SYN-flood denial-of-service attacks as
        described below.

      - The ZeroBasedCounter32 and ZeroBasedCounter64 objects
        in the tcpEStatsListenerTable and tcpEStatsListenerTable
        are initialized to zero when the table row is created.

      - The tcpEStatsConnectIdTable provides a mapping between the
        connection indices i.e. source address type, source address,
        source port, destination address type, destination address and
        destination port, and the connection index.  The connection
        index is used to index into most the remaining tables in this
        MIB module, and is designed to facilitate rapid polling of
        multiple objects associated with one TCP connection.

      - The tcpEStatsPerfTable contains objects that are useful for
        measuring TCP performance and first line problem diagnosis.

      - The tcpEStatsPathTable contains objects that can be used to
        infer detailed behavior of the Internet path, such as the
        extent that there are losses or segment reordering, etc.

      - The tcpEStatsStackTable contains objects that are most
        useful for determining how well the TCP control algorithms
        are coping with this particular path.




Mathis, et al                                                   [Page 5]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


      - The tcpEStatsAppTable provides objects that are useful for
        determining if the application using TCP is limiting TCP
        performance.

      - The tcpEStatsTuneTable provides per connection controls that can
        be used to work around a number of common problems that
        plague TCP over some paths.

      - The two notifications defined in this MIB module are
        tcpEStatsEstablishNotification, indicating that a new
        connection has been accepted (or established see below), and
        tcpEStatsCloseNotification, indicating that an existing
        connection has recently closed.

      - The tcpEStatsListenerTable is specifically designed to
        provides information that is useful for diagnosing SYN-flood
        Denial-of-Service attacks, where a server is overwhelmed by
        forged or otherwise malicious connection attempts.  There
        are several different techniques that are used to defend
        against SYN-flooding but none are standardized, and most
        have never been well described in the literature (ergo there
        are no normative references).  These different techniques
        all have the same basic characteristics which are
        instrumentable with a common set of objects even though the
        techniques differ greatly in the details.

        All SYN-flood defenses avoid allocating significant
        resources (memory or CPU) to incoming (passive open)
        connections until the connections meet some liveness
        criteria (to defend against forged IP source addresses) and
        the server has sufficient resources to process the incoming
        request.  Note that allocating resources is an
        implementation specific event that may not correspond to a
        observe able protocol event (e.g. segments on the wire).
        There are two general concepts that can be applied to all
        known SYN-flood defenses.  There is generally a well defined
        event when a connections is allocated full resources, and a
        "backlog" - a queue of embryonic connections that have been
        allocated only partial resources.

        In many implementation incoming TCP connections are allocated
        resources as a side affect of the POSIX [POSIX] accept() call.
        For this reason we use the terminology "accepting a connection"
        to refer to this event: committing sufficient network resources
        to process the incoming request.  Accepting a connection
        typically entails allocating memory for the protocol control
        block [RFC793] and the per connection table rows described in
        this MIB.



Mathis, et al                                                   [Page 6]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


        Note that it is not useful to accept connections before they
        are ESTABLISHED, because this would create an easy opportunity
        for Denial-of-Service attacks, using forged source IP
        addresses.

        The backlog consists of connections that are in SYN-RCVD or
        ESTABLISHED states, that have not been accepted.  For
        purposes of this MIB we assume that these connections that
        have been allocated some resources (e.g. an embryonic
        protocol control block) but not full resources (e.g. do not
        yet have MIB table rows).

        Note that some SYN-Flood defenses dispense with explicit
        SYN-RCVD state by cryptographically encoding the state in
        the ISS of the SYN-ACK, and then using the sequence number
        of the first ACK to reconstruct the SYN-RCVD state before
        transitioning to the ESTABLISHED state.  For these
        implementations there is no explicit representation of the
        SYN-RCVD state and the backlog only consists of connections
        that are ESTABLISHED and are waiting to be ACCEPTED.

        Furthermore most SYN-flood defenses have some mechanism to
        throttle connections that might otherwise overwhelm this
        endpoint.  They generally use some combination of discarding
        incoming SYNs and discarding connections already in the
        backlog.  This does not cause all connections from
        legitimate clients to fail, as long as the clients
        persistently retransmit the SYN or first ACK as specified in
        RFC793.  Most of the diversity in SYN flood defenses arises
        in variations in these algorithms to limit load, and
        therefore they can not conveniently be instrumented with a
        common standard MIB.

        The Listen Table instruments all passively opened TCP
        connections in terms of observable protocol events
        (e.g. sent and received segments) and resource allocation
        events (entering the backlog and being accepted).  This
        approach eases generalization to SYN-flood mechanism that
        use alternate TCP state transition diagrams and implicit
        mechanisms to encode some states.











Mathis, et al                                                   [Page 7]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


4. TCP Extended Statistics MIB

   TCP-ESTATS-MIB DEFINITIONS ::= BEGIN
   IMPORTS
          MODULE-IDENTITY, Counter32, Integer32, Unsigned32,
          Gauge32, OBJECT-TYPE, experimental,
          NOTIFICATION-TYPE
              FROM SNMPv2-SMI
          MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
              FROM SNMPv2-CONF
          ZeroBasedCounter32
              FROM RMON2-MIB                  -- [RFC2021]
          ZeroBasedCounter64
              FROM HCNUM-TC                   -- [RFC2856]
          TEXTUAL-CONVENTION,
          DateAndTime, TruthValue, TimeStamp
              FROM SNMPv2-TC
          InetAddressType, InetAddress,
          InetPortNumber
              FROM INET-ADDRESS-MIB
          tcpListenerEntry
              FROM TCP-MIB;

   tcpEStatsMIB MODULE-IDENTITY
       LAST-UPDATED "200502201356Z"  -- Feb 20, 2005
       ORGANIZATION "IETF TSV Working Group"
       CONTACT-INFO
           "Matt Mathis
           John Heffner
           Raghu Reddy
           Web100 Project
           Pittsburgh Supercomputing Center
           4400 Fifth Ave
           Pittsburgh, PA 15213
           Email: mathis@psc.edu, jheffner@psc.edu, rreddy@psc.edu

           Rajiv Raghunarayan
           Cisco Systems Inc.
           San Jose, CA 95134
           Phone: 408 853 9612
           Email: raraghun@cisco.com

           Jon Saperia
           JDS Consulting, Inc.
           174 Chapman Street
           Watertown, MA 02472
           Phone: 617-744-1079
           Email: saperia@jdscons.com "



Mathis, et al                                                   [Page 8]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       DESCRIPTION
           "Documentation of TCP Extended Performance Instrumentation
            variables from the Web100 project.  [Web100]

            Copyright (C) The Internet Society (2004). This version
            of this MIB module is a part of RFC xxxx; see the RFC
            itself for full legal notices."
   -- RFC Editor: replace xxxx with actual RFC number & remove note

       REVISION "200502201356Z"  -- Feb 20, 2005
       DESCRIPTION
           "Initial version, published as RFC xxxx."
   -- RFC Editor assigns RFC xxxx
           ::= { experimental 9999 }
   tcpEStatsNotifications OBJECT IDENTIFIER ::= { tcpEStatsMIB 0 }
   tcpEStatsMIBObjects    OBJECT IDENTIFIER ::= { tcpEStatsMIB 1 }
   tcpEStatsConformance   OBJECT IDENTIFIER ::= { tcpEStatsMIB 2 }
   tcpEStats             OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 1 }
   tcpEStatsControl      OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 2 }
   tcpEStatsScalar       OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 3 }

   --
   -- Textual Conventions
   --

    TcpEStatsOperation  ::= TEXTUAL-CONVENTION
       STATUS             current
       DESCRIPTION
           "Indicates whether the table or notification controlled
           by an object with this syntax is enabled or in a
           disabled state."
       SYNTAX      INTEGER {
                       enabled(1),
                       disabled(2)
                   }

   --
   -- TCP Extended statistics scalars
   --

   tcpEStatsListenerTableLastChange OBJECT-TYPE
       SYNTAX     TimeStamp
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
              "The value of sysUpTime at the time of the last
               creation or deletion of an entry in the tcpListenerTable.
               If the number of entries has been unchanged since the



Mathis, et al                                                   [Page 9]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


               last re-initialization of the local network management
               subsystem, then this object contains a zero value."
       ::= { tcpEStatsScalar 3 }

   -- ================================================================
   --
   -- The tcpEStatsControl Group
   --

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

   tcpEStatsControlPath  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the activation of the TCP Path
           Statistics table."
       DEFVAL          { disabled }
       ::= { tcpEStatsControl 1 }

   tcpEStatsControlStack  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the activation of the TCP Stack
           Statistics table."
       DEFVAL          { disabled }
       ::= { tcpEStatsControl 2 }

   tcpEStatsControlApp  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the activation of the TCP Application
           Statistics table."
       DEFVAL          { disabled }
       ::= { tcpEStatsControl 3 }

   tcpEStatsControlTune  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current



Mathis, et al                                                  [Page 10]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       DESCRIPTION
           "Controls the activation of the TCP Tuning
           table."
       DEFVAL          { disabled }
       ::= { tcpEStatsControl 4 }

   tcpEStatsControlNotify  OBJECT-TYPE
       SYNTAX          TcpEStatsOperation
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "Controls the generation of all notifications defined in
           this MIB."
       DEFVAL          { disabled }
       ::= { tcpEStatsControl 5 }

   tcpEStatsConnTableLatency OBJECT-TYPE
       SYNTAX          Integer32 (0..30)
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
           "Specifies the number of seconds that the entity will
            retain entries in the TCP connection tables, after the
            connection first enters the closed state.  The entity
            SHOULD provide a configuration option to enable
            customization of this value.  A value of 0
            results in entries being removed from the tables as soon as
            the connection enters the closed state.  The value of
            this object pertains to the following tables:
              tcpEStatsConnectIdTable
              tcpEStatsPerfTable
              tcpEStatsPathTable
              tcpEStatsStackTable
              tcpEStatsAppTable
              tcpEStatsTuneTable"
       ::= { tcpEStatsControl 6 }

   -- ================================================================
   --
   -- Listener Table
   --

   tcpEStatsListenerTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsListenerEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table contains information about TCP Listeners,



Mathis, et al                                                  [Page 11]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


           in addition to the information maintained by the
           tcpListenerTable RFC2012bis."
       ::= { tcpEStats 10 }

   tcpEStatsListenerEntry OBJECT-TYPE
       SYNTAX       TcpEStatsListenerEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Each entry in the table contains information about
           a specific TCP Listener."
       AUGMENTS { tcpListenerEntry }
       ::= { tcpEStatsListenerTable 1 }

   TcpEStatsListenerEntry ::= SEQUENCE {
           tcpEStatsListenerStartTime         TimeStamp,
           tcpEStatsListenerSynRcvd           ZeroBasedCounter32,
           tcpEStatsListenerInitial           ZeroBasedCounter32,
           tcpEStatsListenerEstablished       ZeroBasedCounter32,
           tcpEStatsListenerAccepted          ZeroBasedCounter32,
           tcpEStatsListenerExceedBacklog     ZeroBasedCounter32,
           tcpEStatsListenerHCSynRcvd         ZeroBasedCounter64,
           tcpEStatsListenerHCInitial         ZeroBasedCounter64,
           tcpEStatsListenerHCEstablished     ZeroBasedCounter64,
           tcpEStatsListenerHCAccepted        ZeroBasedCounter64,
           tcpEStatsListenerHCExceedBacklog   ZeroBasedCounter64,
           tcpEStatsListenerCurrConns         Gauge32,
           tcpEStatsListenerMaxBacklog        Integer32,
           tcpEStatsListenerCurBacklog        Gauge32,
           tcpEStatsListenerCurEstabBacklog   Gauge32
   }

   tcpEStatsListenerStartTime   OBJECT-TYPE
       SYNTAX     TimeStamp
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
           "The value of sysUpTime at the time this listener was
           established.  If the current state was entered prior to
           the last re-initialization of the local network management
           subsystem, then this object contains a zero value."
       ::= { tcpEStatsListenerEntry 1 }

   tcpEStatsListenerSynRcvd OBJECT-TYPE
       SYNTAX     ZeroBasedCounter32
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION



Mathis, et al                                                  [Page 12]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


           "The number of SYNs which have been received for this
           listener.   The total number of failed connections for
           all reasons can be estimated to be tcpEStatsListenerSynRcvd
           minus tcpEStatsListenerAccepted and
           tcpEStatsListenerCurBacklog."
       ::= { tcpEStatsListenerEntry 2 }

   tcpEStatsListenerInitial     OBJECT-TYPE
      SYNTAX     ZeroBasedCounter32
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
         "The total number of connections for which the Listener
          has allocated initial state and placed the
          connection in the backlog.  The may happen in the
          SYN-RCVD or ESTABLISHED states, depending on the
          implementation."
       ::= { tcpEStatsListenerEntry 3 }

   tcpEStatsListenerEstablished OBJECT-TYPE
       SYNTAX     ZeroBasedCounter32
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
           "The number of connections which have been established to
           this endpoint.  E.g. The number of first ACKs which have
           been received for this listener."
       ::= { tcpEStatsListenerEntry 4 }

   tcpEStatsListenerAccepted    OBJECT-TYPE
      SYNTAX     ZeroBasedCounter32
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
         "The total number of connections for which the Listener
          has successfully issued an accept, removing the connection
          from the backlog."
       ::= { tcpEStatsListenerEntry 5 }

   tcpEStatsListenerExceedBacklog OBJECT-TYPE
      SYNTAX     ZeroBasedCounter32
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
         "The total number of connections dropped from the
         backlog by this listener due to all reasons.  This
         includes all connections that are allocated initial
         resources but are not accepted for some reason."



Mathis, et al                                                  [Page 13]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       ::= { tcpEStatsListenerEntry 6 }

   tcpEStatsListenerHCSynRcvd OBJECT-TYPE
       SYNTAX     ZeroBasedCounter64
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
           "The number of SYNs which have been received for this
           listener on systems that can process (or reject) more
           than 1 million connections per second.   See
           tcpEStatsListenerSynRcvd."
       ::= { tcpEStatsListenerEntry 7 }

   tcpEStatsListenerHCInitial     OBJECT-TYPE
      SYNTAX     ZeroBasedCounter64
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
         "The total number of connections for which the Listener
          has allocated initial state and placed the connection
          in the backlog on systems that can process (or reject)
          more than 1 million connections per second.   See
          tcpEStatsListenerInitial."
       ::= { tcpEStatsListenerEntry 8 }

   tcpEStatsListenerHCEstablished OBJECT-TYPE
       SYNTAX     ZeroBasedCounter64
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
           "The number of connections which have been established to
           this endpoint on systems that can process (or reject) more
           than 1 million connections per second.   See
           tcpEStatsListenerEstablished."
       ::= { tcpEStatsListenerEntry 9 }

   tcpEStatsListenerHCAccepted    OBJECT-TYPE
      SYNTAX     ZeroBasedCounter64
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
         "The total number of connections for which the Listener
          has successfully issued an accept, removing the connection
          from the backlog on systems that can process (or reject)
          more than 1 million connections per second.   See
          tcpEStatsListenerAccepted."
       ::= { tcpEStatsListenerEntry 10 }




Mathis, et al                                                  [Page 14]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


   tcpEStatsListenerHCExceedBacklog OBJECT-TYPE
      SYNTAX     ZeroBasedCounter64
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
         "The total number of connections dropped from the
         backlog by this listener due to all reasons on
         systems that can process (or reject) more than
         1 million connections per second.   See
         tcpEStatsListenerHCExceedBacklog."
       ::= { tcpEStatsListenerEntry 11 }

   tcpEStatsListenerCurrConns   OBJECT-TYPE
      SYNTAX     Gauge32
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
         "The current number of connections in the ESTABLISHED
          state, which have also been accepted.  It excludes
          connections that have been established but not accepted
          because they are still subject to being discarded to
          shed load without explicit action by either endpoint."
       ::= { tcpEStatsListenerEntry 12 }

   tcpEStatsListenerMaxBacklog OBJECT-TYPE
      SYNTAX     Integer32
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
         "The maximum number of connections allowed in
          backlog at one time."
       ::= { tcpEStatsListenerEntry 13 }

   tcpEStatsListenerCurBacklog OBJECT-TYPE
      SYNTAX     Gauge32
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
         "The current number of connections that are in backlog.
          This counter MUST include connections in ESTABLISHED state,
          for which the Listener has not yet issued an accept,
          and MAY include connections in SYN-RECEIVED state."
       ::= { tcpEStatsListenerEntry 14 }

   tcpEStatsListenerCurEstabBacklog OBJECT-TYPE
      SYNTAX     Gauge32
      MAX-ACCESS read-only
      STATUS     current



Mathis, et al                                                  [Page 15]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


      DESCRIPTION
         "The current number of connections in backlog that are
          in the ESTABLISHED state, but for which the Listener has
          not yet issued an accept."
       ::= { tcpEStatsListenerEntry 15 }


   -- ================================================================
   --
   -- TCP Connection ID Table
   --

   -- There is overlap with the new RFC2012 TCP Connection table
   -- because there is a semantic difference in the latency of row
   -- removal in this table. Rows are expected to remain in this
   -- table longer than in a standard TCP Connection table. Other
   -- than this latency difference the semantics of the first six
   -- objects in this table are the same as the new TCP Connection
   -- table and the DESCRIPTIONS come from the new document.

   tcpEStatsConnectIdTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsConnectIdEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table maps a connection ID used by other tables in
           this MIB Module with the information that uniquely
           identifies each active TCP connection. Entries are
           retained in this table for the number of seconds
           indicated by the tcpEStatsConnTableLatency object, after
           the TCP connection first enters the closed state."
       ::= { tcpEStats 1 }

   tcpEStatsConnectIdEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsConnectIdEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Each entry in this table maps a TCP connection
           4-tuple to a connection index."
       INDEX   { tcpEStatsConnectLocalAddressType,
                 tcpEStatsConnectLocalAddress,
                 tcpEStatsConnectLocalPort,
                 tcpEStatsConnectRemAddressType,
                 tcpEStatsConnectRemAddress,
                 tcpEStatsConnectRemPort }
       ::= { tcpEStatsConnectIdTable 1 }




Mathis, et al                                                  [Page 16]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


   TcpEStatsConnectIdEntry ::= SEQUENCE {
                 tcpEStatsConnectLocalAddressType  InetAddressType,
                 tcpEStatsConnectLocalAddress      InetAddress,
                 tcpEStatsConnectLocalPort         InetPortNumber,
                 tcpEStatsConnectRemAddressType    InetAddressType,
                 tcpEStatsConnectRemAddress        InetAddress,
                 tcpEStatsConnectRemPort           InetPortNumber,
                 tcpEStatsConnectIndex             Unsigned32
                 }

   tcpEStatsConnectLocalAddressType OBJECT-TYPE
       SYNTAX     InetAddressType
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
           "The address type of tcpEStatsConnectLocalAddress."
       ::= { tcpEStatsConnectIdEntry 1 }

   tcpEStatsConnectLocalAddress OBJECT-TYPE
       SYNTAX     InetAddress
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
           "The local IP address for this TCP connection.The type
            of this address is determined by the value of
            tcpEStatsConnectLocalAddressType.

            As this object is used in the index for the
            tcpEStatsConnectIdTable, implementors of this table should
            be careful not to create entries that would result in OIDs
            with more than 128 sub-identifiers; else the information
            cannot be accessed using SNMPv1, SNMPv2c or SNMPv3."
       ::= { tcpEStatsConnectIdEntry 2 }

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

   tcpEStatsConnectRemAddressType OBJECT-TYPE
       SYNTAX     InetAddressType
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
           "The address type of tcpEStatsConnectRemAddress."



Mathis, et al                                                  [Page 17]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       ::= { tcpEStatsConnectIdEntry 4 }

   tcpEStatsConnectRemAddress OBJECT-TYPE
       SYNTAX     InetAddress
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
           "The remote IP address for this TCP connection.  The type
            of this address is determined by the value of
            tcpEStatsConnectRemAddressType.

            As this object is used in the index for the
            tcpEStatsConnectIdTable, implementors of this table should
            be careful not to create entries that would result in OIDs
            with more than 128 sub-identifiers; else the information
            cannot be accessed using SNMPv1, SNMPv2c or SNMPv3."
       ::= { tcpEStatsConnectIdEntry 5 }

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

   tcpEStatsConnectIndex  OBJECT-TYPE
       SYNTAX          Unsigned32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
           "A unique integer value assigned to each TCP Connection
           entry. Assignment will begin at 1 and increase to the
           maximum value and then start again at 1 skipping in use
           values."
       ::= { tcpEStatsConnectIdEntry 7 }

   -- ================================================================
   --
   -- Basic TCP Performance Statistics
   --

   tcpEStatsPerfTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsPerfEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table contains objects that are useful for



Mathis, et al                                                  [Page 18]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


           measuring TCP performance and first line problem
           diagnosis.   Most objects in this table directly
           expose some TCP state variable or are easily
           implemented as simple functions (e.g. Maximum)
           of TCP state variables."
       ::= { tcpEStats 2 }

   tcpEStatsPerfEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsPerfEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Each entry in this table has information about the
           characteristics of each active and recently closed tcp
           connection."
      INDEX { tcpEStatsConnectIndex }
      ::= { tcpEStatsPerfTable 1 }

   TcpEStatsPerfEntry ::= SEQUENCE {
           tcpEStatsPerfState                  INTEGER,
           tcpEStatsPerfSACK                   TruthValue,
           tcpEStatsPerfTimeStamps             TruthValue,
           tcpEStatsPerfECN                    TruthValue,
           tcpEStatsPerfNagle                  TruthValue,
           tcpEStatsPerfSndWindScale           Integer32,
           tcpEStatsPerfRcvWindScale           Integer32,
           tcpEStatsPerfActiveOpen             TruthValue,
           tcpEStatsPerfSegsOut                ZeroBasedCounter32,
           tcpEStatsPerfDataSegsOut            ZeroBasedCounter32,
           tcpEStatsPerfDataOctetsOut          ZeroBasedCounter32,
           tcpEStatsPerfHCDataOctetsOut        ZeroBasedCounter64,
           tcpEStatsPerfSegsIn                 ZeroBasedCounter32,
           tcpEStatsPerfDataSegsIn             ZeroBasedCounter32,
           tcpEStatsPerfDataOctetsIn           ZeroBasedCounter32,
           tcpEStatsPerfHCDataOctetsIn         ZeroBasedCounter64,
           tcpEStatsPerfCurMSS                 Gauge32,
           tcpEStatsPerfSndUna                 Counter32,
           tcpEStatsPerfSndNxt                 Integer32,
           tcpEStatsPerfSndMax                 Counter32,
           tcpEStatsPerfThruOctetsAcked        ZeroBasedCounter32,
           tcpEStatsPerfHCThruOctetsAcked      ZeroBasedCounter64,
           tcpEStatsPerfRcvNxt                 Counter32,
           tcpEStatsPerfThruOctetsReceived     ZeroBasedCounter32,
           tcpEStatsPerfHCThruOctetsReceived    ZeroBasedCounter64,
           tcpEStatsPerfElapsedSecs            ZeroBasedCounter32,
           tcpEStatsPerfElapsedMicroSecs       ZeroBasedCounter32,
           tcpEStatsPerfStartTimeStamp         DateAndTime,
           tcpEStatsPerfSndLimTransRwin        ZeroBasedCounter32,



Mathis, et al                                                  [Page 19]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


           tcpEStatsPerfSndLimTransCwnd        ZeroBasedCounter32,
           tcpEStatsPerfSndLimTransSnd         ZeroBasedCounter32,
           tcpEStatsPerfSndLimTimeRwin         ZeroBasedCounter32,
           tcpEStatsPerfSndLimTimeCwnd         ZeroBasedCounter32,
           tcpEStatsPerfSndLimTimeSnd          ZeroBasedCounter32,
           tcpEStatsPerfCongSignals            ZeroBasedCounter32,
           tcpEStatsPerfCurCwnd                Gauge32,
           tcpEStatsPerfMaxSsCwnd              Gauge32,
           tcpEStatsPerfMaxCaCwnd              Gauge32,
           tcpEStatsPerfCurSsthresh            Gauge32,
           tcpEStatsPerfMaxSsthresh            Gauge32,
           tcpEStatsPerfMinSsthresh            Gauge32,
           tcpEStatsPerfTimeouts               ZeroBasedCounter32,
           tcpEStatsPerfSegsRetrans            ZeroBasedCounter32,
           tcpEStatsPerfOctetsRetrans          ZeroBasedCounter32,
           tcpEStatsPerfDupAcksIn              ZeroBasedCounter32,
           tcpEStatsPerfRetranThresh           Gauge32,
           tcpEStatsPerfSampleRTT              Gauge32,
           tcpEStatsPerfSmoothedRTT            Gauge32,
           tcpEStatsPerfRTTVar                 Gauge32,
           tcpEStatsPerfMaxRTT                 Gauge32,
           tcpEStatsPerfMinRTT                 Gauge32,
           tcpEStatsPerfSumRTT                 ZeroBasedCounter32,
           tcpEStatsPerfHCSumRTT               ZeroBasedCounter64,
           tcpEStatsPerfCountRTT               ZeroBasedCounter32,
           tcpEStatsPerfCurRTO                 Gauge32,
           tcpEStatsPerfMaxRTO                 Gauge32,
           tcpEStatsPerfMinRTO                 Gauge32,
           tcpEStatsPerfCurRwinSent            Gauge32,
           tcpEStatsPerfMaxRwinSent            Gauge32,
           tcpEStatsPerfZeroRwinSent           Gauge32,
           tcpEStatsPerfDupAckEpisodes         ZeroBasedCounter32,
           tcpEStatsPerfDupAcksOut             ZeroBasedCounter32,
           tcpEStatsPerfCurRwinRcvd            Gauge32,
           tcpEStatsPerfMaxRwinRcvd            Gauge32,
           tcpEStatsPerfZeroRwinRcvd           Gauge32
       }

   --
   --  The following objects indicate if various TCP features
   --  (options) or algorithms are enabled.
   --

   tcpEStatsPerfState  OBJECT-TYPE
       SYNTAX          INTEGER {
          wcStateClosed(1),
          wcStateListen(2),
          wcStateSynSent(3),



Mathis, et al                                                  [Page 20]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


          wcStateSynReceived(4),
          wcStateEstablished(5),
          wcStateFinWait1(6),
          wcStateFinWait2(7),
          wcStateCloseWait(8),
          wcStateLastAck(9),
          wcStateClosing(10),
          wcStateTimeWait(11),
          wcStateDeleteTcb(12)
       }
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "An integer value representing the connection state from the
           TCP State Transition Diagram. See [RFC793].

           The value listen(2) is included only for parallelism to the
           old tcpConnTable, and should not be used because the listen
           state in managed by the tcpListenerTable.

           The value DeleteTcb(12) is included only for parallelism to
           the tcpConnTable mechanism for terminating connections,
           although this table does not permit writing."
       ::= { tcpEStatsPerfEntry 1 }

   tcpEStatsPerfSACK  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "True(1) if SACK has been negotiated on, else false(2). See
           [RFC2018]."
       ::= { tcpEStatsPerfEntry 2 }

   tcpEStatsPerfTimeStamps  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "True(1) if timestamps have been negotiated on, else
           false(2). See [RFC1323]."
       ::= { tcpEStatsPerfEntry 3 }

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



Mathis, et al                                                  [Page 21]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


          "True(1) if ECN has been negotiated on, else false(2). See
           [RFC3168]."
       ::= { tcpEStatsPerfEntry 4 }

   tcpEStatsPerfNagle  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "True(1) if the Nagle algorithm is being used, else
           false(2). See [RFC896] and [RFC1122]."
       ::= { tcpEStatsPerfEntry 5 }

   tcpEStatsPerfSndWindScale  OBJECT-TYPE
       SYNTAX          Integer32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The value of Snd.Wind.Scale from [RFC1323]. Note that
           tcpEStatsPerfSndWindScale is either zero or the same as
           tcpEStatsStackWinScaleRcvd."
       ::= { tcpEStatsPerfEntry 6 }

   tcpEStatsPerfRcvWindScale  OBJECT-TYPE
       SYNTAX          Integer32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The value of Rcv.Wind.Scale from [RFC1323]. Note that
           tcpEStatsPerfRcvWindScale is either zero or the same as
           tcpEStatsStackWinScaleSent."
       ::= { tcpEStatsPerfEntry 7 }

   tcpEStatsPerfActiveOpen  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "True(1) if the local connection traversed the SYN-SENT
           state, else false(2). See [RFC793]."
       ::= { tcpEStatsPerfEntry 8 }

   --
   --  The following objects provide statistics on aggregate
   --  segments and data sent on a connection. These provide a
   --  direct measure of the Internet capacity consumed by a
   --  connection.
   --



Mathis, et al                                                  [Page 22]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


   tcpEStatsPerfSegsOut  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The total number of segments sent."
       ::= { tcpEStatsPerfEntry 9 }

   tcpEStatsPerfDataSegsOut  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of segments sent containing a positive length
           data segment."
       ::= { tcpEStatsPerfEntry 10 }

   tcpEStatsPerfDataOctetsOut  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of octets of data contained in transmitted
           segments, including retransmitted data. Note that this does
           not include TCP headers."
       ::= { tcpEStatsPerfEntry 11 }

   tcpEStatsPerfHCDataOctetsOut  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter64
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of octets of data contained in transmitted
           segments, including retransmitted data, on systems that can
           transmit more than 10 million bits per second. Note that
           this does not include TCP headers."
       ::= { tcpEStatsPerfEntry 12 }

   tcpEStatsPerfSegsIn  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The total number of segments received."
       ::= { tcpEStatsPerfEntry 13 }

   tcpEStatsPerfDataSegsIn  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32



Mathis, et al                                                  [Page 23]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of segments received containing a positive
           length data segment."
       ::= { tcpEStatsPerfEntry 14 }

   tcpEStatsPerfDataOctetsIn  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of octets contained in received data segments,
           including retransmitted data. Note that this does not
           include TCP headers."
       ::= { tcpEStatsPerfEntry 15 }

   tcpEStatsPerfHCDataOctetsIn  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter64
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of octets contained in received data segments,
           including retransmitted data, on systems that can receive
           more than 10 million bits per second. Note that this does
           not include TCP headers."
       ::= { tcpEStatsPerfEntry 16 }

   tcpEStatsPerfCurMSS  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current maximum segment size (MSS), in octets."
       ::= { tcpEStatsPerfEntry 17 }

   --
   --  The following object provide throughput statistics for the
   --  connection including sequence numbers and elapsed time.
   --  These permit direct observation of the applications
   --  progress, in terms of elapsed data delivery and elapsed
   --  time. See [RFC793].
   --

   tcpEStatsPerfSndUna  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current



Mathis, et al                                                  [Page 24]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       DESCRIPTION
          "The value of SND.UNA, the oldest unacknowledged sequence
           number."
       ::= { tcpEStatsPerfEntry 18 }

   tcpEStatsPerfSndNxt  OBJECT-TYPE
       SYNTAX          Integer32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The value of SND.NXT, the next sequence number to be sent.
           Note that SndNxt is not a monotonic (and thus not a
           counter) because TCP sometimes retransmits lost data by
           pulling SndNxt back to the missing data."
       ::= { tcpEStatsPerfEntry 19 }

   tcpEStatsPerfSndMax  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The farthest forward (right most or largest) SND.NXT value.
           Note that this will be equal to tcpEStatsPerfSndNxt except
           when tcpEStatsPerfSndNxt is pulled back during recovery."
       ::= { tcpEStatsPerfEntry 20 }

   tcpEStatsPerfThruOctetsAcked  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of octets for which cumulative acknowledgments
           have been received. Note that this will be the sum of
           changes to tcpEStatsPerfSndUna."
       ::= { tcpEStatsPerfEntry 21 }

   tcpEStatsPerfHCThruOctetsAcked  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter64
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of octets for which cumulative acknowledgments
           have been received, on systems that can receive more than
           10 million bits per second. Note that this will be the sum
           of changes in tcpEStatsPerfSndUna."
       ::= { tcpEStatsPerfEntry 22 }

   tcpEStatsPerfRcvNxt  OBJECT-TYPE



Mathis, et al                                                  [Page 25]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The value of RCV.NXT from [RFC793]. The next sequence
           number expected on an incoming segment, and the left or
           lower edge of the receive window."
       ::= { tcpEStatsPerfEntry 23 }

   tcpEStatsPerfThruOctetsReceived  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of octets for which cumulative acknowledgments
           have been sent. Note that this will be the sum of changes
           to tcpEStatsPerfRcvNxt."
       ::= { tcpEStatsPerfEntry 24 }

   tcpEStatsPerfHCThruOctetsReceived  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter64
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of octets for which cumulative acknowledgments
           have been sent, on systems that can transmit more than 10
           million bits per second. Note that this will be the sum of
           changes in tcpEStatsPerfRcvNxt."
       ::= { tcpEStatsPerfEntry 25 }

   tcpEStatsPerfElapsedSecs  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The seconds part of the time elapsed between
           tcpEStatsPerfStartTimeStamp and the most recent protocol
           event (segment sent or received)."
       ::= { tcpEStatsPerfEntry 26 }

   tcpEStatsPerfElapsedMicroSecs  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The micro-second part of time elapsed between
           tcpEStatsPerfStartTimeStamp to the most recent protocol
           event (segment sent or received). This may be updated in



Mathis, et al                                                  [Page 26]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


           what ever time granularity is the system supports."
       ::= { tcpEStatsPerfEntry 27 }

   tcpEStatsPerfStartTimeStamp  OBJECT-TYPE
       SYNTAX          DateAndTime
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Time at which this row was created and all
           ZeroBasedCounters in the row were initialized to zero."
       ::= { tcpEStatsPerfEntry 28 }

   --
   --  The next group of instruments can be used to quickly
   --  identify which subsystems are limiting TCP performance.
   --  There are three parallel pairs of instruments that measure
   --  the extent to which TCP performance is limited by the the
   --  announced receiver window (indicating a receiver
   --  bottleneck), the current congestion window or
   --  retransmission timeout (indicating a path bottleneck) and
   --  all others events (indicating a sender bottleneck).
   --
   --  These instruments should be updated every time the TCP
   --  output routine stops sending data. The elapsed time since
   --  the previous stop is accumulated into the appropriate
   --  object as determined by the previous stop reason (e.g. stop
   --  state). The current stop reason determines which timer will
   --  be updated the next time TCP output stops.
   --
   --  Since there is no explicit stop at the beginning of a
   --  timeout, it is necessary to retroactively reclassify the
   --  previous stop as 'Congestion Limited'.
   --

   tcpEStatsPerfSndLimTransRwin  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of transitions into the 'Receiver Limited' state
           from either the 'Congestion Limited' or 'Sender Limited'
           states. This state is entered whenever TCP transmission
           stops because the sender has filled the announced receiver
           window."
       ::= { tcpEStatsPerfEntry 29 }

   tcpEStatsPerfSndLimTransCwnd  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32



Mathis, et al                                                  [Page 27]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of transitions into the 'Congestion Limited'
           state from either the 'Receiver Limited' or 'Sender
           Limited' states. This state is entered whenever TCP
           transmission stops because the sender has reached some
           limit defined by congestion control (e.g. cwnd) or other
           algorithms (retransmission timeouts) designed to control
           network traffic."
       ::= { tcpEStatsPerfEntry 30 }

   tcpEStatsPerfSndLimTransSnd  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of transitions into the 'Sender Limited' state
           from either the 'Receiver Limited' or 'Congestion Limited'
           states. This state is entered whenever TCP transmission
           stops due to some sender limit such as running out of
           application data or other resources and the Karn algorithm.
           When TCP stops sending data for any reason which can not be
           classified as Receiver Limited or Congestion Limited it
           must be treated as Sender Limited."
       ::= { tcpEStatsPerfEntry 31 }

   tcpEStatsPerfSndLimTimeRwin  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The cumulative time (in milliseconds) spent in the
           'Receiver Limited' state. See tcpEStatsPerfSndLimTransRwin."
       ::= { tcpEStatsPerfEntry 32 }

   tcpEStatsPerfSndLimTimeCwnd  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The cumulative time (in milliseconds) spent in the
           'Congestion Limited' state. See
           tcpEStatsPerfSndLimTransCwnd. When there is a
           retransmission timeout, it should be counted in
           tcpEStatsPerfSndLimTimeCwnd (and not the cumulative time
           for some other state.)"
       ::= { tcpEStatsPerfEntry 33 }



Mathis, et al                                                  [Page 28]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


   tcpEStatsPerfSndLimTimeSnd  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The cumulative time (in milliseconds) spent in the 'Sender
           Limited' state. See tcpEStatsPerfSndLimTransSnd."
       ::= { tcpEStatsPerfEntry 34 }

   --
   --  The following objects instrument the overall operation of
   --  TCP congestion control and data retransmissions. These
   --  instruments are sufficient to fit the actual performance to
   --  an updated macroscopic performance model [RFC2581] [Mat97]
   --  [Pad98].
   --

   tcpEStatsPerfCongSignals  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of multiplicative downward congestion window
           adjustments due to all forms of congestion signals,
           including Fast Retransmit, ECN and timeouts.

           Note that retransmission timeouts multiplicatively reduce
           the window implicitly by setting ssthresh, and should be
           included in tcpEStatsPerfCongSignals. In order to minimize
           spurious congestion indications due to out-of-order
           segments, tcpEStatsPerfCongSignals should be incremented in
           association with the Fast Retransmit algorithm."
       ::= { tcpEStatsPerfEntry 35 }

   tcpEStatsPerfCurCwnd  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current congestion window, in octets. See [RFC2581]."
       ::= { tcpEStatsPerfEntry 36 }

   tcpEStatsPerfMaxSsCwnd  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum congestion window used during Slow Start, in



Mathis, et al                                                  [Page 29]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


           octets."
       ::= { tcpEStatsPerfEntry 37 }

   tcpEStatsPerfMaxCaCwnd  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum congestion window used during Congestion
           Avoidance, in octets."
       ::= { tcpEStatsPerfEntry 38 }

   tcpEStatsPerfCurSsthresh  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current slow start threshold in octets. See [RFC2581]."
       ::= { tcpEStatsPerfEntry 39 }

   tcpEStatsPerfMaxSsthresh  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum slow start threshold, excluding the initial
           value."
       ::= { tcpEStatsPerfEntry 40 }

   tcpEStatsPerfMinSsthresh  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The minimum slow start threshold."
       ::= { tcpEStatsPerfEntry 41 }

   tcpEStatsPerfTimeouts  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of times the retransmit timeout has expired when
           the RTO backoff multiplier is equal to one. See [RFC2988]."
       ::= { tcpEStatsPerfEntry 42 }

   tcpEStatsPerfSegsRetrans  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32



Mathis, et al                                                  [Page 30]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of segments transmitted containing at least some
           retransmitted data."
       ::= { tcpEStatsPerfEntry 43 }

   tcpEStatsPerfOctetsRetrans  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of octets retransmitted."
       ::= { tcpEStatsPerfEntry 44 }

   tcpEStatsPerfDupAcksIn  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of duplicate ACKs received."
       ::= { tcpEStatsPerfEntry 45 }

   tcpEStatsPerfRetranThresh  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of duplicate acknowledgments required to trigger
           Fast Retransmit."
       ::= { tcpEStatsPerfEntry 46 }

   --
   --  The following objects instrument the round trip time
   --  estimator and the retransmission timeout timer. See
   --  [RFC2988].
   --

   tcpEStatsPerfSampleRTT  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The most recent raw round trip time measurement, in
           milliseconds, used in calculation of the RTO."
       ::= { tcpEStatsPerfEntry 47 }

   tcpEStatsPerfSmoothedRTT  OBJECT-TYPE



Mathis, et al                                                  [Page 31]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The smoothed round trip time, in milliseconds, used in
           calculation of the RTO. See SRTT in [RFC2988]."
       ::= { tcpEStatsPerfEntry 48 }

   tcpEStatsPerfRTTVar  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The round trip time variation, in milliseconds, used in
           calculation of the RTO. See RTTVAR in [RFC2988]."
       ::= { tcpEStatsPerfEntry 49 }

   tcpEStatsPerfMaxRTT  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum sampled round trip time, in milliseconds."
       ::= { tcpEStatsPerfEntry 50 }

   tcpEStatsPerfMinRTT  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The minimum sampled round trip time, in milliseconds."
       ::= { tcpEStatsPerfEntry 51 }

   tcpEStatsPerfSumRTT  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The sum of all sampled round trip times, in milliseconds."
       ::= { tcpEStatsPerfEntry 52 }

   tcpEStatsPerfHCSumRTT  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter64
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The sum of all sampled round trip times, in milliseconds,
           on all systems that implement multiple concurrent RTT



Mathis, et al                                                  [Page 32]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


           measurements."
       ::= { tcpEStatsPerfEntry 53 }

   tcpEStatsPerfCountRTT  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of round trip time samples included in
           tcpEStatsPerfSumRTT."
       ::= { tcpEStatsPerfEntry 54 }

   tcpEStatsPerfCurRTO  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current value of the retransmit timer RTO, in
           milliseconds, not scaled by the RTO backoff multiplier. See
           [RFC2988]."
       ::= { tcpEStatsPerfEntry 55 }

   tcpEStatsPerfMaxRTO  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum value of the retransmit timer RTO, in
           milliseconds, not scaled by the RTO backoff multiplier. See
           [RFC2988]."
       ::= { tcpEStatsPerfEntry 56 }

   tcpEStatsPerfMinRTO  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The minimum value of the retransmit timer RTO, in
           milliseconds, not scaled by the RTO backoff multiplier. See
           [RFC2988]."
       ::= { tcpEStatsPerfEntry 57 }

   --
   --  The following objects instrument the local receiver. Nearly
   --  all other instruments report how well the local sender is
   --  coping with the path and application. These objects
   --  instrument how the receiver is processing incoming data.
   --



Mathis, et al                                                  [Page 33]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


   tcpEStatsPerfCurRwinSent  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The most recent window advertisement sent, in octets."
       ::= { tcpEStatsPerfEntry 58 }

   tcpEStatsPerfMaxRwinSent  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum window advertisement sent, in octets."
       ::= { tcpEStatsPerfEntry 59 }

   tcpEStatsPerfZeroRwinSent  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of acknowledgements sent announcing a zero
           receive window, when the previously announced window was
           not zero."
       ::= { tcpEStatsPerfEntry 60 }

   tcpEStatsPerfDupAckEpisodes  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of times that a contiguous series of duplicate
           acknowledgments have been sent."
       ::= { tcpEStatsPerfEntry 61 }

   tcpEStatsPerfDupAcksOut  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of duplicate ACKs sent."
       ::= { tcpEStatsPerfEntry 62 }

   --
   --  The following objects instrument receiver window updates
   --  from the far end-system to determine if the remote receiver
   --  has sufficient buffer space or is exerting flow-control
   --  back pressure on the local sender. These can also be



Mathis, et al                                                  [Page 34]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


   --  observed directly from a packet trace collected anywhere
   --  along the network path, including at the receiver.
   --

   tcpEStatsPerfCurRwinRcvd  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The most recent window advertisement received, in octets."
       ::= { tcpEStatsPerfEntry 63 }

   tcpEStatsPerfMaxRwinRcvd  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum window advertisement received, in octets."
       ::= { tcpEStatsPerfEntry 64 }

   tcpEStatsPerfZeroRwinRcvd  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of acknowledgements received announcing a zero
           receive window, when the previously announced window was
           not zero."
       ::= { tcpEStatsPerfEntry 65 }

   -- ================================================================
   --
   -- Statistics for diagnosing path problems
   --

   tcpEStatsPathTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsPathEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table contains objects that can be used to infer
           detailed behavior of the Internet path, such as the
           extent that there is reordering, ECN bits and if
           RTT fluctuations are correlated to losses."
       ::= { tcpEStats 3 }

   tcpEStatsPathEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsPathEntry



Mathis, et al                                                  [Page 35]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Each entry in this table has information about the
           characteristics of each active and recently closed tcp
           connection."
      INDEX { tcpEStatsConnectIndex }
      ::= { tcpEStatsPathTable 1 }

   TcpEStatsPathEntry ::= SEQUENCE {
           tcpEStatsPathIpTtl                  Integer32,
           tcpEStatsPathIpTosIn                Integer32,
           tcpEStatsPathIpTosOut               Integer32,
           tcpEStatsPathPreCongSumCwnd         ZeroBasedCounter32,
           tcpEStatsPathPreCongSumRTT          ZeroBasedCounter32,
           tcpEStatsPathPostCongSumRTT         ZeroBasedCounter32,
           tcpEStatsPathPostCongCountRTT       ZeroBasedCounter32,
           tcpEStatsPathECNsignals             ZeroBasedCounter32,
           tcpEStatsPathECERcvd                ZeroBasedCounter32,
           tcpEStatsPathQuenchRcvd             ZeroBasedCounter32,
           tcpEStatsPathNonRecovDAEpisodes     Integer32,
           tcpEStatsPathSumOctetsReordered     Integer32,
           tcpEStatsPathNonRecovDA             ZeroBasedCounter32,
           tcpEStatsPathAckAfterFR             ZeroBasedCounter32,
           tcpEStatsPathCERcvd                 ZeroBasedCounter32,
           tcpEStatsPathECNSent                ZeroBasedCounter32,
           tcpEStatsPathECNNonceRcvd           ZeroBasedCounter32
       }

   --
   --  The following objects provide information about how TCP is
   --  using the IP layer.
   --

   tcpEStatsPathIpTtl  OBJECT-TYPE
       SYNTAX          Integer32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The value of the TTL field carried in the most recently
           received IP header. This is sometimes useful to detect
           changing or unstable routes."
       ::= { tcpEStatsPathEntry 1 }

   tcpEStatsPathIpTosIn  OBJECT-TYPE
       SYNTAX          Integer32
       MAX-ACCESS      read-only
       STATUS          current



Mathis, et al                                                  [Page 36]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       DESCRIPTION
          "The value of the IPv4 Type Of Service octet, or the IPv6
           traffic class octet, carried in the most recently received
           IP header. See [RFC2474] and [RFC3260].

           This is useful to diagnose interactions between TCP and any
           IP layer packet scheduling and delivery policy, which might
           be in effect to implement QoS."
       ::= { tcpEStatsPathEntry 2 }

   tcpEStatsPathIpTosOut  OBJECT-TYPE
       SYNTAX          Integer32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The value of the IPv4 Type Of Service octet, or the IPv6
           traffic class octet, carried in the most recently
           transmitted IP header. See [RFC2474] and [RFC3260].

           This is useful to diagnose interactions between TCP and any
           IP layer packet scheduling and delivery policy, which might
           be in effect to implement QoS."
       ::= { tcpEStatsPathEntry 3 }

   --
   --  The following objects characterize the congestion feedback
   --  signals by collecting statistics on how the congestion
   --  events are correlated to losses, changes in RTT and other
   --  protocol events.
   --

   tcpEStatsPathPreCongSumCwnd  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The sum of the values of the congestion window, in octets,
           captured each time a congestion signal is received. This
           MUST be updated each time tcpEStatsPerfCongSignals is
           incremented, such that the ratio is the average window at
           congestion."
       ::= { tcpEStatsPathEntry 4 }

   tcpEStatsPathPreCongSumRTT  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION



Mathis, et al                                                  [Page 37]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


          "Sum of the last sample of the RTT (tcpEStatsPerfSampleRTT)
           prior to received congestion signals. This MUST be updated
           each time tcpEStatsPerfCongSignals is incremented, such
           that the ratio is the average RTT just prior to congestion."
       ::= { tcpEStatsPathEntry 5 }

   tcpEStatsPathPostCongSumRTT  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Sum of the first RTT sample following a received congestion
           signal."
       ::= { tcpEStatsPathEntry 6 }

   tcpEStatsPathPostCongCountRTT  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of RTT samples included in
           tcpEStatsPathPostCongSumRTT and
           tcpEStatsPathPostCongHCSumRTT, such that the ratio is
           average RTT just after congestion."
       ::= { tcpEStatsPathEntry 7 }

   --
   --  The following objects can be used to detect other types of
   --  non-loss congestion signals such as source quench or ECN.
   --

   tcpEStatsPathECNsignals  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of congestion signals delivered via all forms of
           explicit congestion notification including the ECE bit and
           failing the ECN nonce check, etc."
       ::= { tcpEStatsPathEntry 8 }

   tcpEStatsPathECERcvd  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of congestion signals received via the [RFC3168]
           ECE bit."



Mathis, et al                                                  [Page 38]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       ::= { tcpEStatsPathEntry 9 }

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

   tcpEStatsPathNonRecovDAEpisodes  OBJECT-TYPE
       SYNTAX          Integer32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of duplicate acknowledgment episodes that did
           not trigger a Fast Retransmit because ACK advanced prior to
           the number of duplicate acknowledgements reaching
           RetranThresh. See [RFC2581].

           In many implementations this is the number of times the
           'dupacks' counter is set to zero when it is non-zero but
           less than RetranThresh.

           Note that tcpEStatsPathNonRecovDAEpisodes divided by
           tcpEStatsPerfDataSegsOut is an estimate of the frequency of
           data reordering on the forward path."
       ::= { tcpEStatsPathEntry 11 }

   tcpEStatsPathSumOctetsReordered  OBJECT-TYPE
       SYNTAX          Integer32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The sum of the amounts SND.UNA advances on the
           acknowledgment which ends a dup-ack episode without a
           retransmission.

           Note tcpEStatsPathSumOctetsReordered divided by
           tcpEStatsPathNonRecovDAEpisodes is an estimates of the
           average reordering distance, in octets."
       ::= { tcpEStatsPathEntry 12 }

   tcpEStatsPathNonRecovDA  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current



Mathis, et al                                                  [Page 39]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       DESCRIPTION
          "Duplicate acks (or SACKS) that did not trigger a Fast
           Retransmit because ACK advanced prior to the number of
           duplicate acknowledgements reaching RetranThresh.

           In many implementations, this is the sum of the 'dupacks'
           counter, just before it is set to zero because ACK advanced
           without a Fast Retransmit.

           Note that tcpEStatsPathNonRecovDA divided by
           tcpEStatsPathNonRecovDAEpisodes is an estimate of the
           average reordering distance in segments."
       ::= { tcpEStatsPathEntry 13 }

   tcpEStatsPathAckAfterFR  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of acknowledgments reporting out-of-order
           segments after the segments have already be retransmitted
           (For example as detected by the Eiffle algorithm,
           [RFC3522])."
       ::= { tcpEStatsPathEntry 14 }

   tcpEStatsPathCERcvd  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Received segments with Congestion Experienced bits. See
           [RFC3168]."
       ::= { tcpEStatsPathEntry 15 }

   tcpEStatsPathECNSent  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Number of times CE bits have set ECN. See [RFC3168]."
       ::= { tcpEStatsPathEntry 16 }

   tcpEStatsPathECNNonceRcvd  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Number of ECN Nonces received. Note that the low bit is the



Mathis, et al                                                  [Page 40]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


           same as the one bit nonce sum."
       ::= { tcpEStatsPathEntry 17 }

   -- ================================================================
   --
   -- Statistics for diagnosing stack algorithms
   --

   tcpEStatsStackTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsStackEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table contains objects that are most useful for
           determining how well some of the more TCP control
           algorithms are coping with this particular
           path."
       ::= { tcpEStats 4 }

   tcpEStatsStackEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsStackEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Each entry in this table has information about the
           characteristics of each active and recently closed tcp
           connection."
      INDEX { tcpEStatsConnectIndex }
      ::= { tcpEStatsStackTable 1 }

   TcpEStatsStackEntry ::= SEQUENCE {
           tcpEStatsStackMSSSent               Unsigned32,
           tcpEStatsStackMSSRcvd               Unsigned32,
           tcpEStatsStackWinScaleSent          Integer32,
           tcpEStatsStackWinScaleRcvd          Integer32,
           tcpEStatsStackSACKokSent            TruthValue,
           tcpEStatsStackSACKokRcvd            TruthValue,
           tcpEStatsStackTimeStampSent         TruthValue,
           tcpEStatsStackTimeStampRcvd         TruthValue,
           tcpEStatsStackSoftErrors            ZeroBasedCounter32,
           tcpEStatsStackSoftErrorReason       INTEGER,
           tcpEStatsStackSndInitial            Counter32,
           tcpEStatsStackRecInitial            Counter32,
           tcpEStatsStackSlowStart             ZeroBasedCounter32,
           tcpEStatsStackCongAvoid             ZeroBasedCounter32,
           tcpEStatsStackOtherReductions       ZeroBasedCounter32,
           tcpEStatsStackCongOverCount         ZeroBasedCounter32,
           tcpEStatsStackFastRetran            ZeroBasedCounter32,



Mathis, et al                                                  [Page 41]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


           tcpEStatsStackSubsequentTimeouts    ZeroBasedCounter32,
           tcpEStatsStackCurTimeoutCount       Gauge32,
           tcpEStatsStackAbruptTimeouts        ZeroBasedCounter32,
           tcpEStatsStackSACKsRcvd             ZeroBasedCounter32,
           tcpEStatsStackSACKBlocksRcvd        ZeroBasedCounter32,
           tcpEStatsStackSendStall             ZeroBasedCounter32,
           tcpEStatsStackDSACKDups             ZeroBasedCounter32,
           tcpEStatsStackMaxMSS                Gauge32,
           tcpEStatsStackMinMSS                Gauge32,
           tcpEStatsStackCurRetxQueue          Gauge32,
           tcpEStatsStackMaxRetxQueue          Gauge32,
           tcpEStatsStackCurReasmQueue         Gauge32,
           tcpEStatsStackMaxReasmQueue         Gauge32
       }

   --
   --  The following objects reflect the options requested on the
   --  SYN and/or SYN-ACK. These are useful for debugging problems
   --  with TCP option negotiation.
   --

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

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

   tcpEStatsStackWinScaleSent  OBJECT-TYPE
       SYNTAX          Integer32 (-1..14)
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The value of the transmitted window scale option if one was
           sent; otherwise, a value of -1. See [RFC1323]."
       ::= { tcpEStatsStackEntry 3 }

   tcpEStatsStackWinScaleRcvd  OBJECT-TYPE
       SYNTAX          Integer32 (-1..14)



Mathis, et al                                                  [Page 42]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The value of the received window scale option if one was
           received; otherwise, a value of -1. See [RFC1323]."
       ::= { tcpEStatsStackEntry 4 }

   tcpEStatsStackSACKokSent  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "True(1) if SACKok option was sent, else false(2). See
           [RFC2018]."
       ::= { tcpEStatsStackEntry 5 }

   tcpEStatsStackSACKokRcvd  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "True(1) if SACKok option was received, else false(2). See
           [RFC2018]."
       ::= { tcpEStatsStackEntry 6 }

   tcpEStatsStackTimeStampSent  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "True(1) if Timestamp option was sent, else false(2). See
           [RFC1323]."
       ::= { tcpEStatsStackEntry 7 }

   tcpEStatsStackTimeStampRcvd  OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "True(1) if Timestamp option was received, else false(2).
           See [RFC1323]."
       ::= { tcpEStatsStackEntry 8 }

   --
   --  The following objects instrument unusual protocol events
   --  that probably indicate implementation problems in the
   --  protocol or path.
   --



Mathis, et al                                                  [Page 43]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


   tcpEStatsStackSoftErrors  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number segments that fail various consistency tests
           during TCP input processing. Soft errors might cause the
           segment to be discard but some do not. Some of these soft
           errors cause the the generation of a TCP ancknowledgement,
           others are silently discarded."
       ::= { tcpEStatsStackEntry 9 }

   tcpEStatsStackSoftErrorReason  OBJECT-TYPE
       SYNTAX          INTEGER {
          belowDataWindow(1),
          aboveDataWindow(2),
          belowAckWindow(3),
          aboveAckWindow(4),
          belowTSWindow(5),
          aboveTSWindow(6),
          dataCheckSum(7),
          otherSoftError(8)
       }
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "This object identities which consistency test most recently
           failed during tcp input processing. This object should be
           set every time tcpEStatsStackSoftErrors is incremented. The
           codes are as follows:

           belowDataWindow - All data in the segment is to below
           SND.UNA. (Normal for keep alives and possibly zero window
           probes).

           aboveDataWindow - Some data in the segment is above
           SND.WND. (Indicates an implementation bug or serious
           fraud).

           belowAckWindow - ACK below SND.UNA. (Indicates that the
           return path is reordering ACKs)

           aboveAckWindow - An ACK for data that we have not sent.
           (Indicates an implementation bug or serious fraud).

           belowTSWindow - TSecr on the segment is older than the
           current TS.Recent [RFC1323] (Normal for PAWS detecting data
           reordered by the network.)



Mathis, et al                                                  [Page 44]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


           aboveTSWindow - TSecr on the segment is newer than the
           current TS.Recent [RFC1323]. (Indicates an implementation
           bug or serious fraud).

           dataCheckSum - Incorrect checksum. Note that this value is
           intrinsicly fragile, because the header fields used to
           identify the connection may have been corrupted.

           otherSoftError - All other soft errors.

           Implementors are permitted to assign additional codes
           greater than 8 such that all SoftErrors in their
           implementation have unique codes. Management stations are
           to accumulate all unassigned codes as 'otherSoftErrors'"
       ::= { tcpEStatsStackEntry 10 }

   tcpEStatsStackSndInitial  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Initial send sequence number. Note that by definition
           tcpEStatsStackSndInitial never changes for a given
           connection. See [RFC793]."
       ::= { tcpEStatsStackEntry 11 }

   tcpEStatsStackRecInitial  OBJECT-TYPE
       SYNTAX          Counter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "Initial receive sequence number. Note that by definition
           tcpEStatsStackRecInitial never changes for a given
           connection. See [RFC793]."
       ::= { tcpEStatsStackEntry 12 }

   --
   --  The following objects expose the detailed operation of the
   --  congestion control algorithms.
   --

   tcpEStatsStackSlowStart  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of times the congestion window has been
           increased by the Slow Start algorithm. See [RFC2581]."



Mathis, et al                                                  [Page 45]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       ::= { tcpEStatsStackEntry 13 }

   tcpEStatsStackCongAvoid  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of times the congestion window has been
           increased by the Congestion Avoidance algorithm. See
           [RFC2581]."
       ::= { tcpEStatsStackEntry 14 }

   tcpEStatsStackOtherReductions  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of congestion window reductions made as a result
           of anything other than AIMD congestion control algorithms.
           Examples of non-multiplicative window reductions include
           experimental algorithms such as Vegas [Bra94], and
           Congestion Window Validation [RFC2861].

           All window reductions MUST be counted as either
           tcpEStatsPerfCongSignals or tcpEStatsPerfOtherReductions."
       ::= { tcpEStatsStackEntry 15 }

   tcpEStatsStackCongOverCount  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of congestion events which were 'backed out' of
           the congestion control state machine such that the
           congestion window was restored to a prior value. This can
           happen due to the Eiffle algorithm [RFC3522] or other
           algorithms which can be used to detect and cancel spurious
           invocations of the Fast Retransmit Algorithm.

           Although it may be feasible to undo the effects of spurious
           invocation of the Fast Retransmit the congestion events can
           not easily be backed out of tcpEStatsPerfCongSignals and
           tcpEStatsPathPreCongSumCwnd, etc."
       ::= { tcpEStatsStackEntry 16 }

   tcpEStatsStackFastRetran  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only



Mathis, et al                                                  [Page 46]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       STATUS          current
       DESCRIPTION
          "The number of invocations of the Fast Retransmit algorithm.
           See [RFC2581]."
       ::= { tcpEStatsStackEntry 17 }

   tcpEStatsStackSubsequentTimeouts  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of times the retransmit timeout has expired when
           the RTO backoff multiplier is greater than one. See
           [RFC2988]."
       ::= { tcpEStatsStackEntry 18 }

   tcpEStatsStackCurTimeoutCount  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current number of times the retransmit timeout has
           expired without receiving an acknowledgment for new data.
           CurTimeoutCount is reset to zero when new data is
           acknowledged. See [RFC2988]."
       ::= { tcpEStatsStackEntry 19 }

   tcpEStatsStackAbruptTimeouts  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of timeouts that occurred without any
           immediately preceding duplicate acknowledgments or other
           indications of congestion. Abrupt Timeouts indicate that
           the path lost an entire window of data or acknowledgements.

           Timeouts that are preceded by duplicate acknowledgements or
           other congestion signals (e.g. ECN) are not counted as
           abrupt, and might have been avoided by a more sophisticated
           Fast Retransmit algorithm."
       ::= { tcpEStatsStackEntry 20 }

   tcpEStatsStackSACKsRcvd  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION



Mathis, et al                                                  [Page 47]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


          "The number of SACK options received. See [RFC2018]."
       ::= { tcpEStatsStackEntry 21 }

   tcpEStatsStackSACKBlocksRcvd  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of SACK blocks received (within SACK options)."
       ::= { tcpEStatsStackEntry 22 }

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

   tcpEStatsStackDSACKDups  OBJECT-TYPE
       SYNTAX          ZeroBasedCounter32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The number of duplicate segments reported to the local host
           by D-SACK blocks. See [RFC2883]."
       ::= { tcpEStatsStackEntry 24 }

   --
   --  The following objects instrument path MTU discovery.
   --

   tcpEStatsStackMaxMSS  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum MSS, in octets. See [RFC1191]."
       ::= { tcpEStatsStackEntry 25 }

   tcpEStatsStackMinMSS  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The minimum MSS, in octets. See [RFC1191]."



Mathis, et al                                                  [Page 48]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       ::= { tcpEStatsStackEntry 26 }

   --
   --  The following objects instrument the senders buffer usage,
   --  including any buffering in the application interface to TCP
   --  and the retransmit queue. All 'buffer memory' instruments
   --  are assumed to include OS data structure overhead.
   --

   tcpEStatsStackCurRetxQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current number of octets of data occupying the
           retransmit queue."
       ::= { tcpEStatsStackEntry 27 }

   tcpEStatsStackMaxRetxQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum number of octets of data occupying the
           retransmit queue."
       ::= { tcpEStatsStackEntry 28 }

   tcpEStatsStackCurReasmQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current number of octets of sequence space spanned by
           the reassembly queue. This is generally the difference
           between rcv.nxt and the sequence number of the right most
           edge of the reassembly queue."
       ::= { tcpEStatsStackEntry 29 }

   tcpEStatsStackMaxReasmQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum value of tcpEStatsStackCurReasmQueue"
       ::= { tcpEStatsStackEntry 30 }

   -- ================================================================
   --



Mathis, et al                                                  [Page 49]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


   -- Statistics for diagnosing interactions with applications
   --

   tcpEStatsAppTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsAppEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table contains objects that are useful for
           determining if the application using TCP is
           limiting TCP performance"
       ::= { tcpEStats 5 }

   tcpEStatsAppEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsAppEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Each entry in this table has information about the
           characteristics of each active and recently closed tcp
           connection."
      INDEX { tcpEStatsConnectIndex }
      ::= { tcpEStatsAppTable 1 }

   TcpEStatsAppEntry ::= SEQUENCE {
           tcpEStatsAppCurAppWQueue            Gauge32,
           tcpEStatsAppMaxAppWQueue            Gauge32,
           tcpEStatsAppCurAppRQueue            Gauge32,
           tcpEStatsAppMaxAppRQueue            Gauge32
       }

   tcpEStatsAppCurAppWQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current number of octets of application data buffered
           by TCP, pending first transmission. i.e. to the left of
           SND.NXT or SndMax. This data will generally be transmitted
           (and SND.NXT advanced to the left) as soon as there is
           available congestion window (cwnd) or receiver window
           (rwin). This is the amount of data readily available for
           transmission, without scheduling the application. TCP
           performance may suffer if there is insufficient queued
           write data."
       ::= { tcpEStatsAppEntry 1 }

   tcpEStatsAppMaxAppWQueue  OBJECT-TYPE



Mathis, et al                                                  [Page 50]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum number of octets of application data buffered
           by TCP, pending first transmission. This is the maximum
           value of tcpEStatsAppCurAppWQueue. This pair of objects can
           be used to determine if insufficient queued data is steady
           state (suggesting insufficient queue space) or transient
           (suggesting insufficient application performance or
           excessive CPU load or scheduler latency)."
       ::= { tcpEStatsAppEntry 2 }

   tcpEStatsAppCurAppRQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The current number of octets of application data that has
           been acknowledged by TCP but not yet delivered to the
           application."
       ::= { tcpEStatsAppEntry 3 }

   tcpEStatsAppMaxAppRQueue  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-only
       STATUS          current
       DESCRIPTION
          "The maximum number of octets of application data that has
           been acknowledged by TCP but not yet delivered to the
           application."
       ::= { tcpEStatsAppEntry 4 }

   -- ================================================================
   --
   -- Controls for Tuning TCP
   --

   tcpEStatsTuneTable    OBJECT-TYPE
       SYNTAX      SEQUENCE OF TcpEStatsTuneEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table contains per connection controls that can
           be used to work around a number of common problems that
           plague TCP over some paths.   All can be characterize as
           limiting the growth of the congestion window so as to
           prevent TCP from overwhelming some component in the path."



Mathis, et al                                                  [Page 51]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       ::= { tcpEStats 6 }

   tcpEStatsTuneEntry  OBJECT-TYPE
       SYNTAX       TcpEStatsTuneEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Each entry in this table has information about the
           characteristics of each active and recently closed tcp
           connection."
      INDEX { tcpEStatsConnectIndex }
      ::= { tcpEStatsTuneTable 1 }

   TcpEStatsTuneEntry ::= SEQUENCE {
           tcpEStatsTuneLimCwnd                Gauge32,
           tcpEStatsTuneLimSsthresh            Gauge32,
           tcpEStatsTuneLimRwin                Gauge32
       }

   tcpEStatsTuneLimCwnd  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
          "A control to set the maximum congestion window which may be
           used, in octets."
       ::= { tcpEStatsTuneEntry 1 }

   tcpEStatsTuneLimSsthresh  OBJECT-TYPE
       SYNTAX          Gauge32
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
          "A control to limit the maximum queue space (in octets) that
           this TCP connection is likely to occupy during slowstart.

           It can be implemented with the algorithm described in
           RFC3742 by setting the max_sstrhesh parameter to twice
           tcpEStatsTuneLimSsthresh.

           This algorithm can be used to overcome some TCP performance
           problems over network paths that do not have sufficient
           buffering to withstand the bursts normally present during
           slowstart."
       ::= { tcpEStatsTuneEntry 2 }

   tcpEStatsTuneLimRwin  OBJECT-TYPE
       SYNTAX          Gauge32



Mathis, et al                                                  [Page 52]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
          "A control to set the maximum window advertisement which may
           be sent, in octets."
       ::= { tcpEStatsTuneEntry 3 }

   -- ================================================================
   --
   -- TCP Extended Statistics Notifications Group
   --

   tcpEStatsEstablishNotification NOTIFICATION-TYPE
       OBJECTS     {
                     tcpEStatsConnectIndex
                   }
       STATUS      current
       DESCRIPTION
           "The indicated connection has been accepted
           (or alternatively entered the established state)."
       ::= { tcpEStatsNotifications 1 }

   tcpEStatsCloseNotification NOTIFICATION-TYPE
       OBJECTS     {
                     tcpEStatsConnectIndex
                   }
       STATUS      current
       DESCRIPTION
           "The indicated connection has left the
           established state"
       ::= { tcpEStatsNotifications 2 }

   -- ================================================================
   --
   -- Conformance Definitions
   --

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

   --
   -- Compliance Statements
   --

     tcpEStatsCompliance MODULE-COMPLIANCE
        STATUS current



Mathis, et al                                                  [Page 53]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


        DESCRIPTION
            "Compliance statement for all systems that implement TCP
            extended statistics."
        MODULE -- this module
            MANDATORY-GROUPS {
                               tcpEStatsListenerGroup,
                               tcpEStatsConnectIdGroup,
                               tcpEStatsPerfGroup
                             }
            GROUP tcpEStatsListenerHCGroup
            DESCRIPTION
                "This group is mandatory for all systems that can
                 wrap the values of the 32-bit counters in
                 tcpEStatsListenerGroup in less than one hour."

            GROUP tcpEStatsPerfHCGroup
            DESCRIPTION
                "This group is mandatory for systems that can
                wrap the values of the 32-bit counters in
                tcpEStatsPerfGroup in less than one hour.

                Note that any system that can attain 10 Mb/s
                can potentially wrap 32-Bit Octet counters in
                under one hour."

            GROUP tcpEStatsPathGroup
            DESCRIPTION
                "This group is optional for all systems."

            GROUP tcpEStatsStackGroup
            DESCRIPTION
                "This group is optional for all systems."

            GROUP tcpEStatsAppGroup
            DESCRIPTION
                "This group is optional for all systems."

            GROUP tcpEStatsTuneGroup
            DESCRIPTION
                "This group is optional for all systems."

            GROUP tcpEStatsNotificationsGroup
            DESCRIPTION
                "This group is optional for all systems."

            GROUP tcpEStatsNotificationsCtlGroup
            DESCRIPTION
                "This group is mandatory for systems that include the



Mathis, et al                                                  [Page 54]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


                 tcpEStatsNotificationGroup."

            OBJECT      tcpEStatsControlNotify
            MIN-ACCESS  read-only
            DESCRIPTION
                "Write access is not required."

      ::= { tcpEStatsCompliances 1 }

   -- ================================================================
   --
   -- Units of Conformance
   --
       tcpEStatsListenerGroup  OBJECT-GROUP
            OBJECTS {
                 tcpEStatsListenerTableLastChange,
                 tcpEStatsListenerStartTime,
                 tcpEStatsListenerSynRcvd,
                 tcpEStatsListenerInitial,
                 tcpEStatsListenerEstablished,
                 tcpEStatsListenerAccepted,
                 tcpEStatsListenerExceedBacklog,
                 tcpEStatsListenerCurrConns,
                 tcpEStatsListenerMaxBacklog,
                 tcpEStatsListenerCurBacklog,
                 tcpEStatsListenerCurEstabBacklog
            }
            STATUS current
            DESCRIPTION
                 "The tcpEStatsListener group includes objects that
                 provide valuable statistics and debugging
                 information for TCP Listeners."
         ::= { tcpEStatsGroups 1 }

       tcpEStatsListenerHCGroup  OBJECT-GROUP
            OBJECTS {
                 tcpEStatsListenerHCSynRcvd,
                 tcpEStatsListenerHCInitial,
                 tcpEStatsListenerHCEstablished,
                 tcpEStatsListenerHCAccepted,
                 tcpEStatsListenerHCExceedBacklog
            }
            STATUS current
            DESCRIPTION
                 "The tcpEStatsListenerHC group includes 64 bit
                  counter in tcpEStatsListenerTable."
         ::= { tcpEStatsGroups 2 }




Mathis, et al                                                  [Page 55]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


       tcpEStatsConnectIdGroup  OBJECT-GROUP
            OBJECTS {
                 tcpEStatsConnTableLatency,
                 tcpEStatsConnectIndex
            }
            STATUS current
            DESCRIPTION
                 "The tcpEStatsConnectId group includes objects that
                 identify TCP connections and control how long TCP
                 connection entries are retained in the tables."
         ::= { tcpEStatsGroups 3 }

       tcpEStatsPerfGroup  OBJECT-GROUP
            OBJECTS {
                 tcpEStatsPerfState, tcpEStatsPerfSACK,
                 tcpEStatsPerfTimeStamps, tcpEStatsPerfECN,
                 tcpEStatsPerfNagle, tcpEStatsPerfSndWindScale,
                 tcpEStatsPerfRcvWindScale,
                 tcpEStatsPerfActiveOpen, tcpEStatsPerfSegsOut,
                 tcpEStatsPerfDataSegsOut,
                 tcpEStatsPerfDataOctetsOut, tcpEStatsPerfSegsIn,
                 tcpEStatsPerfDataSegsIn,
                 tcpEStatsPerfDataOctetsIn, tcpEStatsPerfCurMSS,
                 tcpEStatsPerfSndUna, tcpEStatsPerfSndNxt,
                 tcpEStatsPerfSndMax, tcpEStatsPerfThruOctetsAcked,
                 tcpEStatsPerfRcvNxt,
                 tcpEStatsPerfThruOctetsReceived,
                 tcpEStatsPerfElapsedSecs,
                 tcpEStatsPerfElapsedMicroSecs,
                 tcpEStatsPerfStartTimeStamp,
                 tcpEStatsPerfSndLimTransRwin,
                 tcpEStatsPerfSndLimTransCwnd,
                 tcpEStatsPerfSndLimTransSnd,
                 tcpEStatsPerfSndLimTimeRwin,
                 tcpEStatsPerfSndLimTimeCwnd,
                 tcpEStatsPerfSndLimTimeSnd,
                 tcpEStatsPerfCongSignals, tcpEStatsPerfCurCwnd,
                 tcpEStatsPerfMaxSsCwnd, tcpEStatsPerfMaxCaCwnd,
                 tcpEStatsPerfCurSsthresh,
                 tcpEStatsPerfMaxSsthresh,
                 tcpEStatsPerfMinSsthresh, tcpEStatsPerfTimeouts,
                 tcpEStatsPerfSegsRetrans,
                 tcpEStatsPerfOctetsRetrans,
                 tcpEStatsPerfDupAcksIn, tcpEStatsPerfRetranThresh,
                 tcpEStatsPerfSampleRTT, tcpEStatsPerfSmoothedRTT,
                 tcpEStatsPerfRTTVar, tcpEStatsPerfMaxRTT,
                 tcpEStatsPerfMinRTT, tcpEStatsPerfSumRTT,
                 tcpEStatsPerfCountRTT, tcpEStatsPerfCurRTO,



Mathis, et al                                                  [Page 56]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


                 tcpEStatsPerfMaxRTO, tcpEStatsPerfMinRTO,
                 tcpEStatsPerfCurRwinSent,
                 tcpEStatsPerfMaxRwinSent,
                 tcpEStatsPerfZeroRwinSent,
                 tcpEStatsPerfDupAckEpisodes,
                 tcpEStatsPerfDupAcksOut, tcpEStatsPerfCurRwinRcvd,
                 tcpEStatsPerfMaxRwinRcvd,
                 tcpEStatsPerfZeroRwinRcvd
            }
            STATUS current
            DESCRIPTION
                 "The tcpEStatsPerf group includes those objects that
                 provide basic performance data for a TCP connection."
         ::= { tcpEStatsGroups 4 }

       tcpEStatsPerfHCGroup  OBJECT-GROUP
            OBJECTS {
                 tcpEStatsPerfHCDataOctetsOut,
                 tcpEStatsPerfHCDataOctetsIn,
                 tcpEStatsPerfHCThruOctetsAcked,
                 tcpEStatsPerfHCThruOctetsReceived,
                 tcpEStatsPerfHCSumRTT
            }
            STATUS current
            DESCRIPTION
                 "The tcpEStatsPerfHC group includes 64 bit
                 counters in the tcpEStatsPerfTable."
         ::= { tcpEStatsGroups 5 }


       tcpEStatsPathGroup  OBJECT-GROUP
            OBJECTS {
                 tcpEStatsControlPath,
                 tcpEStatsPathIpTtl, tcpEStatsPathIpTosIn,
                 tcpEStatsPathIpTosOut,
                 tcpEStatsPathPreCongSumCwnd,
                 tcpEStatsPathPreCongSumRTT,
                 tcpEStatsPathPostCongSumRTT,
                 tcpEStatsPathPostCongCountRTT,
                 tcpEStatsPathECNsignals, tcpEStatsPathECERcvd,
                 tcpEStatsPathQuenchRcvd,
                 tcpEStatsPathNonRecovDAEpisodes,
                 tcpEStatsPathSumOctetsReordered,
                 tcpEStatsPathNonRecovDA, tcpEStatsPathAckAfterFR,
                 tcpEStatsPathCERcvd, tcpEStatsPathECNSent,
                 tcpEStatsPathECNNonceRcvd
            }
            STATUS current



Mathis, et al                                                  [Page 57]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


            DESCRIPTION
                 "The tcpEStatsPath group includes objects that
                 control the creation of the tcpEStatsPathTable,
                 and provide information about the path
                 for each TCP connection."
         ::= { tcpEStatsGroups 6 }

       tcpEStatsStackGroup  OBJECT-GROUP
            OBJECTS {
                 tcpEStatsControlStack,
                 tcpEStatsStackMSSSent, tcpEStatsStackMSSRcvd,
                 tcpEStatsStackWinScaleSent,
                 tcpEStatsStackWinScaleRcvd,
                 tcpEStatsStackSACKokSent,
                 tcpEStatsStackSACKokRcvd,
                 tcpEStatsStackTimeStampSent,
                 tcpEStatsStackTimeStampRcvd,
                 tcpEStatsStackSoftErrors,
                 tcpEStatsStackSoftErrorReason,
                 tcpEStatsStackSndInitial,
                 tcpEStatsStackRecInitial, tcpEStatsStackSlowStart,
                 tcpEStatsStackCongAvoid,
                 tcpEStatsStackOtherReductions,
                 tcpEStatsStackCongOverCount,
                 tcpEStatsStackFastRetran,
                 tcpEStatsStackSubsequentTimeouts,
                 tcpEStatsStackCurTimeoutCount,
                 tcpEStatsStackAbruptTimeouts,
                 tcpEStatsStackSACKsRcvd,
                 tcpEStatsStackSACKBlocksRcvd,
                 tcpEStatsStackSendStall, tcpEStatsStackDSACKDups,
                 tcpEStatsStackMaxMSS, tcpEStatsStackMinMSS,
                 tcpEStatsStackCurRetxQueue,
                 tcpEStatsStackMaxRetxQueue,
                 tcpEStatsStackCurReasmQueue,
                 tcpEStatsStackMaxReasmQueue
            }
            STATUS current
            DESCRIPTION
                 "The tcpEStatsConnState group includes objects that
                 control the creation of the tcpEStatsStackTable,
                 and provide information about the operation of
                 algorithms used within TCP."
         ::= { tcpEStatsGroups 7 }

       tcpEStatsAppGroup  OBJECT-GROUP
            OBJECTS {
                 tcpEStatsControlApp,



Mathis, et al                                                  [Page 58]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


                 tcpEStatsAppCurAppWQueue,
                 tcpEStatsAppMaxAppWQueue,
                 tcpEStatsAppCurAppRQueue,
                 tcpEStatsAppMaxAppRQueue
            }
            STATUS current
            DESCRIPTION
                 "The tcpEStatsConnState group includes objects that
                 control the creation of the tcpEStatsAppTable,
                 and provide information about how applications
                 are interacting with each TCP connection."
         ::= { tcpEStatsGroups 8 }

       tcpEStatsTuneGroup  OBJECT-GROUP
            OBJECTS {
                 tcpEStatsControlTune,
                 tcpEStatsTuneLimCwnd, tcpEStatsTuneLimSsthresh,
                 tcpEStatsTuneLimRwin
            }
            STATUS current
            DESCRIPTION
                 "The tcpEStatsConnState group includes objects that
                 control the creation of the tcpEStatsConnectionTable,
                 which can be used to set tuning parameters
                 for each TCP connection."
         ::= { tcpEStatsGroups 9 }

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

       tcpEStatsNotificationsCtlGroup  OBJECT-GROUP
            OBJECTS {
                          tcpEStatsControlNotify
            }
            STATUS   current
            DESCRIPTION
                "The tcpEStatsNotificationsCtl group includes the
                 object that controls the creation of the events
                 in the tcpEStatsNotificationsGroup."
         ::= { tcpEStatsGroups 11 }




Mathis, et al                                                  [Page 59]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


      END


5. Normative References


[RFC2012bis] Bill Fenner, et al, "Management Information Base for the
     Transmission Control Protocol (TCP)" Internet-Draft draft-ietf-
     ipngwg-rfc2012-update-00.txt, expires January 2002.

[RFC2574] U. Blumenthal, B. Wijnen, "User-based Security Model (USM) for
     version 3 of the Simple Network Management Protocol (SNMPv3)",
     RFC2574, April 1999.

[RFC2575] Wijnen, B., Presuhn, R., and K. McCloghrie, "View-based Access
     Control Model (VACM) for the Simple Network Management Protocol
     (SNMP)", RFC 2575, April 1999.

[RFC2578]  McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
     Rose, M., and S. Waldbusser, "Structure of Management Information
     Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.

[RFC2579]  McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
     Rose, M., and S. Waldbusser, "Textual Conventions for SMIv2", STD
     58, RFC 2579, April 1999.

[RFC2580]  McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
     Rose, M., and S. Waldbusser, "Conformance Statements for SMIv2",
     STD 58, RFC 2580, April 1999.

6. Informative References



[Mat97] M. Mathis, J. Semke, J. Mahdavi, T. Ott, "The Macroscopic Behav-
     ior of the TCP Congestion Avoidance Algorithm", Computer Communica-
     tion Review, volume 27, number3, July 1997.


[Bra94] Brakmo, L., O'Malley, S., "TCP Vegas, New Techniques for Conges-
     tion Detection and Avoidance," SIGCOMM'94, London, pp 24-35, Octo-
     ber 1994.


[POSIX] Portable Operating System Interface, IEEE Std 1003.1






Mathis, et al                                                  [Page 60]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


[Pad98] Padhye, J., Firoiu, V., Towsley, D., Kurose, J., "Modeling TCP
     Throughput: A Simple Model and its Empirical Validation", SIG-
     COMM'98


[Web100] Mathis, M., J. Heffner, R. Reddy, "Web100: Extended TCP Instru-
     mentation for Research, Education and Diagnosis", ACM Computer Com-
     munications Review, Vol 33, Num 3, July 2003.


[RFC793] J. Postel Ed., "Transmission Control Protocol", Sep 1981.


[RFC896] J. Nagle, "Congestion control in IP/TCP internetworks",
     Jan-06-1984.


[RFC1122] R. Braden, Ed, "Requirements for Internet Hosts - Communica-
     tion Layers", October 1989.


[RFC1191] J.C. Mogul, S.E. Deering, "Path MTU discovery", Nov-01-1990.


[RFC1323] V. Jacobson, R. Braden, D. Borman, "TCP Extensions for High
     Performance", May 1992.


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


[RFC2018] M. Mathis, J. Mahdavi, S. Floyd, A. Romanow, "TCP Selective
     Acknowledgement Options", October 1996.


[RFC2021] S. Waldbusser, "Remote Network Monitoring Management Informa-
     tion Base Version 2 using SMIv2", January 1997.


[RFC2474] K. Nichols, S. Blake, F. Baker, D. Black, "Definition of the
     Differentiated Services Field (DS Field) in the IPv4 and IPv6 Head-
     ers", December 1998.


[RFC2856] A. Bierman, K. McCloghrie, R. Presuhn, "Textual Conventions
     for Additional High Capacity Data Types", June 2000.



Mathis, et al                                                  [Page 61]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


[RFC2861] M. Handley, J. Padhye, S. Floyd, "TCP Congestion Window Vali-
     dation", June 2000.


[RFC2883] S. Floyd, J. Mahdavi, M. Mathis, M. Podolsky, "An Extension to
     the Selective Acknowledgement (SACK) Option for TCP", July 2000.


[RFC3168] K. Ramakrishnan, S. Floyd, D. Black, "The Addition of Explicit
     Congestion Notification (ECN) to IP", September 2001.


[RFC3260] D. Grossman, "New Terminology and Clarifications for Diff-
     serv", April 2002.


[RFC3291bis] M. Daniele, B. Haberman, S. Routhier, J. Schoenwaelder,
     "Textual Conventions for Internet Network Addresses", Work in
     progress update to RFC3291, draft-ietf-ops-rfc3291bis-06.txt,
     August, 2004.


[RFC3410] Case, J., Mundy, R., Partain, D. and B. Stewart, "Introduction
     and Applicability Statements for Internet-Standard Management
     Framework", RFC 3410, December 2002.


[RFC3522] R. Ludwig, M. Meyer, "The Eifel Detection Algorithm for TCP",
     April 2003.


[RFC2581] M. Allman, V. Paxson, W. Stevens, "TCP Congestion Control",
     April 1999.


[RFC2988] V. Paxson, M. Allman, "Computing TCP's Retransmission Timer",
     November 2000.


[RFC3291] M. Daniele, B. Haberman, S. Routhier, J. Schoenwaelder, "Tex-
     tual Conventions for Internet Network Addresses", May 2002.










Mathis, et al                                                  [Page 62]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


7. Security Considerations

   There are a number of management objects defined in this MIB that
   have a MAX-ACCESS clause of read-write and/or read-create.  Such
   objects may be considered sensitive or vulnerable in some network
   environments.  The support for SET operations in a non-secure
   environment without proper protection can have a negative effect on
   network operations.

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

   tcpEStatsConnectRemAddress tcpEStatsPerfSndUna tcpEStatsPerfSndNxt
   tcpEStatsPerfSndMax tcpEStatsStackSndInitial tcpEStatsPerfRcvNxt
   tcpEStatsStackRecInitial

   It is thus important to control even GET access to these objects and
   possibly to even encrypt the values of these objects when sending
   them over the network via SNMP.  Not all versions of SNMP provide
   features for such a secure environment.  SNMPv1 by itself is not a
   secure environment.  Even if the network itself is secure (for
   example by using IPSec) there is no control as to who on the secure
   network is allowed to access and GET/SET (read/change/create/delete)
   the objects in this MIB.

   It is recommended that implementers consider using the security
   features as provided by the SNMPv3 framework.  Specifically, the use
   of the User-based Security Model RFC 2574 [RFC2574] and the View-
   based Access Control Model RFC 2575 [RFC2575] is recommended.

   It is then a customer/user responsibility to ensure that the SNMP
   entity giving access to an instance of this MIB, is properly
   configured to only give access to the objects to those principals
   (users) that have legitimate rights to indeed GET or SET
   (change/create/delete) them.


8. Contributors

   The following people have contributed substantially to this document.

   Some of the objects in this document were moved from an early draft
   of RFC2012bis, by Bill Fenner et al.

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





Mathis, et al                                                  [Page 63]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


9. Acknowledgments

   This document is a product of Web100 (see: www.web100.org), a joint
   project of the Pittsburgh Supercomputing Center (www.psc.edu),
   National Center for Atmospheric Research (www.ncar.ucar.edu) and
   National Center for Supercomputer Applications (www.ncsa.edu).   It
   was supported by the National Science Foundation under Grant No.
   0083285 and a research grant from Cisco Systems.


10. Authors' Addresses

        Matt Mathis
        Raghu Reddy
        John Heffner
        Pittsburgh Supercomputing Center
        4400 Fifth Ave
        Pittsburgh, PA 15216
        Phone: 412-268-4960
        Email: mathis@web100.org, rreddy@psc.edu, jheffner@psc.edu

        Rajiv Raghunarayan
        Cisco Systems Inc.
        San Jose, CA 95134
        Phone: 408 853 9612
        Email: raraghun@cisco.com

        Jon Saperia
        JDS Consulting, Inc.
        174 Chapman Street
        Watertown, MA 02472
        Phone: 617-744-1079
        Email: saperia@jdscons.com


11. Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an



Mathis, et al                                                  [Page 64]


Internet-Draft Expires Aug 31, 2005                         Feb 20, 2005


   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at ietf-
   ipr@ietf.org.

12. Disclaimer of Validity

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

13. Full Copyright Statement

   Copyright (C) The Internet Society (2004).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.

























Mathis, et al                                                  [Page 65]