Internet-Draft             TCP MIB for IPv6            June 1997
Expires December 1997


                IP Version 6 Management Information Base
                  for the Transmission Control Protocol

                 <draft-ietf-ipngwg-ipv6-tcp-mib-00.txt>

                             Mike Daniele
                    Digital Equipment Corporation


Status of this Memo

   This document is an Internet-Draft.  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."

   To view the entire list of current Internet-Drafts, please check
   the "1id-abstracts.txt" listing contained in the Internet-Drafts
   Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net
   (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East
   Coast), or ftp.isi.edu (US West Coast).

Abstract

   This document is one in the series of documents that define
   various MIB objects for IPv6.  Specifically, this document
   is the MIB module which defines managed objects for
   implementations of the Transmission Control Protocol (TCP)
   over IP Version 6 (IPv6).

   This document also recommends a specific policy with respect to
   the applicability of RFC 2012 for implementations of IPv6.
   Namely, the most of managed objects defined in RFC 2012 are
   independent of which IP versions underly TCP, and only the
   TCP connection information is IP version-specific.

   This memo defines an experimental portion of the Management
   Information Base (MIB) for use with network management
   protocols in the IPv6-based internets.

1.  Introduction

   A management system contains: several (potentially many) nodes, each
   with a processing entity, termed an agent, which has access to
   management instrumentation; at least one management station; and, a
   management protocol, used to convey management information between
   the agents and management stations.  Operations of the protocol are
   carried out under an administrative framework which defines
   authentication, authorization, access control, and privacy policies.

   Management stations execute management applications which monitor and
   control managed elements.  Managed elements are devices such as
   hosts, routers, terminal servers, etc., which are monitored and
   controlled via access to their management information.

   Management information is viewed as a collection of managed objects,
   residing in a virtual information store, termed the Management
   Information Base (MIB).  Collections of related objects are defined
   in MIB modules.  These modules are written using a subset of OSI's
   Abstract Syntax Notation One (ASN.1) [1], termed the Structure of
   Management Information (SMI) [2].

2.  Overview

   This document is one in the series of documents that define various
   MIB objects, and statements of conformance, for IPv6.  This document
   defines the required instrumentation for implementations of TCP over
   IPv6.

3.  Transparency of IP versions to TCP

   The fact that a particular TCP connection uses IPv6 as opposed to
   IPv4, is largely invisible to a TCP implementation.  A "TCPng" did
   not need to be defined, implementations simply need to support
   IPv6 addresses.

   As such, the managed objects already defined in [TCP MIB] are
   sufficient for managing TCP in the presence of IPv6.  These objects
   are equally applicable whether the managed node supports IPv4 only,
   IPv6 only, or both IPv4 and IPv6.

   For example, tcpActiveOpens counts "The number of times TCP
   connections have made a direct transition to the SYN-SENT state from
   the CLOSED state", regardless of which version of IP is used between
   the connection endpoints.

   Stated differently, TCP implementations don't need separate counters
   for IPv4 and for IPv6.

4.  Representing TCP Connections

   The exception to the statements in section 3 is the tcpConnTable.
   Since IPv6 addresses cannot be represented with the IpAddress syntax,
   not all TCP connections can be represented in the tcpConnTable
   defined in [TCP MIB].

   This memo defines a new, separate table to represent only those
   TCP connections between IPv6 endpoints.  TCP connections between
   IPv4 endpoints continue to be represented in tcpConnTable [TCP MIB].

   A different approach would have been to define a new table to
   represent all TCP connections regardless of IP version.  This would
   require changes to [TCP MIB] and hence to existing (IPv4-only)
   TCP implementations.  The approach suggested in this memo has the
   advantage of leaving [TCP MIB] intact.

5.  Conformance

   This memo contains conformance statements to define conformance
   to this MIB for TCP over IPv6 implementations.  Conformance is
   defined in terms of both the new TCP connection table defined here,
   and the objects defined in [TCP MIB].

6.  Definitions

        IPV6-TCP-MIB DEFINITIONS ::= BEGIN

        IMPORTS
             MODULE-IDENTITY, OBJECT-TYPE,
             MODULE-COMPLIANCE, OBJECT-GROUP    FROM SNMPv2-CONF
             Unsigned32, Gauge32, Counter32,
             Integer32                          FROM SNMPv2-SMI
             Ipv6, Ipv6Address,
             Ipv6IfIndex, Ipv6IfIndexOrZero     FROM IPV6-TC
             tcpRtoAlgorithm, tcpRtoMin,
             tcpRtoMax, tcpMaxConn, tcpActiveOpens,
             tcpPassiveOpens, tcpAttemptFails,
             tcpEstabResets, tcpCurrEstab, tcpInSegs,
             tcpOutSegs, tcpRetransSegs,
             tcpInErrs, tcpOutRsts              FROM TCP-MIB;

        ipv6TcpMIB MODULE-IDENTITY
             LAST-UPDATED "9706090000Z"
             ORGANIZATION "IETF IPv6 MIB Working Group"
             CONTACT-INFO
               "        Mike Daniele

                Postal: Digital Equipment Corporation
                        110 Spitbrook Rd
                        Nashua, NH 03062.
                        US

                Phone:  +1 603 881 1423
                Email:  daniele@zk3.dec.com"
             DESCRIPTION
               "The MIB module for entities implementing TCP
                over IPv6."
             ::= { ipv6  4}


          -- objects specific to TCP for IPv6

          ipv6TcpMIBObjects OBJECT IDENTIFIER ::= { ipv6TcpMIB 1 }


          -- the TCP over IPv6 Connection table

          -- This connection table contains information about this
          -- entity's existing TCP connections between IPv6 endpoints.
          -- Only connections between IPv6 addresses are contained in
          -- this table.  This entity's connections between IPv4
          -- endpoints are contained in tcpConnTable.

          ipv6TcpConnTable OBJECT-TYPE
             SYNTAX      SEQUENCE OF Ipv6TcpConnEntry
             MAX-ACCESS  not-accessible
             STATUS      current
             DESCRIPTION
              "A table containing TCP connection-specific
              information, for only those connections whose endpoints
              are IPv6 addresses."
             ::= { ipv6TcpMIBObjects 1 } -- eventually to be { tcp 16 }?

          ipv6TcpConnEntry OBJECT-TYPE
             SYNTAX      Ipv6TcpConnEntry
             MAX-ACCESS  not-accessible
             STATUS      current
             DESCRIPTION
              "A conceptual row of the ipv6TcpConnTable containing
               information about a particular current TCP connection.
               Each row of this table is transient, in that it ceases to
               exist when (or soon after) the connection makes the transition
               to the CLOSED state.

               Note that conceptual rows in this table require an additional
               index object compared to tcpConnTable, since IPv6 addresses
               are not guaranteed to be unique on the managed node."
             INDEX   { ipv6TcpConnLocalAddress,
                       ipv6TcpConnLocalPort,
                       ipv6TcpConnRemAddress,
                       ipv6TcpConnRemPort,
                       ipv6TcpConnIfIndex }
             ::= { ipv6TcpConnTable 1 }

          Ipv6TcpConnEntry ::=
             SEQUENCE {
                 ipv6TcpConnLocalAddress    Ipv6Address,
                 ipv6TcpConnLocalPort       INTEGER (0..65535),
                 ipv6TcpConnRemAddress      Ipv6Address,
                 ipv6TcpConnRemPort         INTEGER (0..65535),
                 ipv6TcpConnIfIndex         Ipv6IfIndexOrZero,
                 ipv6TcpConnState           INTEGER
              }

          ipv6TcpConnLocalAddress OBJECT-TYPE
             SYNTAX     Ipv6Address
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
              "The local IPv6 address for this TCP connection. In
              the case of a connection in the listen state which
              is willing to accept connections for any IPv6
              address associated with the managed node, the value
              ::0 is used."
             ::= { ipv6TcpConnEntry 1 }

          ipv6TcpConnLocalPort OBJECT-TYPE
             SYNTAX  INTEGER (0..65535)
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
              "The local port number for this TCP connection."
             ::= { ipv6TcpConnEntry 2 }

          ipv6TcpConnRemAddress OBJECT-TYPE
             SYNTAX     Ipv6Address
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
              "The remote IPv6 address for this TCP connection."
             ::= { ipv6TcpConnEntry 3 }

          ipv6TcpConnRemPort OBJECT-TYPE
             SYNTAX  INTEGER (0..65535)
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
              "The remote port number for this TCP connection."
             ::= { ipv6TcpConnEntry 4 }

          ipv6TcpConnIfIndex OBJECT-TYPE
             SYNTAX     Ipv6IfIndexOrZero
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
              "An index object used to disambiguate conceptual rows in
               the table, since the connection 4-tuple may not be unique.

               If the connection's remote address (ipv6TcpConnRemAddress)
               is a link-local address and the connection's local address
               (ipv6TcpConnLocalAddress) is not a link-local address, this
               object identifies a local interface on the same link as
               the connection's remote link-local address.

               Otherwise, this object identifies the local interface that
               is associated with the ipv6TcpConnLocalAddress for this
               TCP connection.  If such a local interface cannot be determined,
               this object should take on the value 0.  (A possible example
               of this would be if the value of ipv6TcpConnLocalAddress is ::0.)

               The interface identified by a particular non-0 value of this
               index is the same interface as identified by the same value
               of ipv6IfIndex.

               The value of this object must remain constant during the life
               of the TCP connection."
             ::= { ipv6TcpConnEntry 5 }

          ipv6TcpConnState OBJECT-TYPE
             SYNTAX  INTEGER {
                  closed(1),
                  listen(2),
                  synSent(3),
                  synReceived(4),
                  established(5),
                  finWait1(6),
                  finWait2(7),
                  closeWait(8),
                  lastAck(9),
                  closing(10),
                  timeWait(11),
                  deleteTCB(12)
              }
             MAX-ACCESS  read-write
             STATUS      current
             DESCRIPTION
              "The state of this TCP connection.

               The only value which may be set by a management station is
               deleteTCB(12).  Accordingly, it is appropriate for an agent
               to return a `badValue' response if a management station
               attempts to set this object to any other value.

               If a management station sets this object to the value
               deleteTCB(12), then this has the effect of deleting the TCB
               (as defined in RFC 793) of the corresponding connection on
               the managed node, resulting in immediate termination of the
               connection.

               As an implementation-specific option, a RST segment may be
               sent from the managed node to the other TCP endpoint (note
               however that RST segments are not sent reliably)."
             ::= { ipv6TcpConnEntry 6 }

        --
        -- conformance information
        --

        ipv6TcpConformance OBJECT IDENTIFIER ::= { ipv6TcpMIB 2 }

        ipv6TcpCompliances OBJECT IDENTIFIER ::= { ipv6TcpConformance 1 }
        ipv6TcpGroups      OBJECT IDENTIFIER ::= { ipv6TcpConformance 2 }

        -- compliance statements

        ipv6TcpCompliance MODULE-COMPLIANCE
            STATUS  current
            DESCRIPTION
              "The compliance statement for SNMPv2 entities which
              implement TCP over IPv6."
            MODULE  -- this module
                MANDATORY-GROUPS { ipv6TcpGroup }
            ::= { ipv6TcpCompliances 1 }

        ipv6TcpGroup OBJECT-GROUP
            OBJECTS   { -- these are defined in TCP-MIB
                        tcpRtoAlgorithm,
                        tcpRtoMin,
                        tcpRtoMax,
                        tcpMaxConn,
                        tcpActiveOpens,
                        tcpPassiveOpens,
                        tcpAttemptFails,
                        tcpEstabResets,
                        tcpCurrEstab,
                        tcpInSegs,
                        tcpOutSegs,
                        tcpRetransSegs,
                        tcpInErrs,
                        tcpOutRsts,

                        -- these are defined in this module
                        ipv6TcpConnState
                      }
            STATUS    current
            DESCRIPTION
                 "The group of objects providing management of
                  TCP over IPv6."
            ::= { ipv6TcpGroups 1 }

         END

7.  Acknowledgments

   This memo is a product of the IPng work group, and benefited especially
   from the contributions of the following working group members:

        Dimitry Haskin          Bay Networks
        Margaret Forsythe       Epilogue
        Tim Hartrick            Mentat
        Frank Solensky          FTP
        Jack Mccann             DEC

8.  References

   [1]  Information processing systems - Open Systems Interconnection -
        Specification of Abstract Syntax Notation One (ASN.1),
        International Organization for Standardization.  International
        Standard 8824, (December, 1987).

   [2]  McCloghrie, K., Editor, "Structure of Management Information
        for version 2 of the Simple Network Management Protocol
        (SNMPv2)", RFC 1902, Cisco Systems, January 1996.

   [TCP MIB]

        SNMPv2 Working Group, McCloghrie, K., Editor,
        "SNMPv2 Management Information Base for the Transmission
        Control Protocol using SMIv2", RFC 2012, November 1996.

   [IPV6 MIB TC]

        Haskin, D.,  and S. Onishi, "Management Information  Base
        for IP Version 6: Textual Conventions and General Group",
        Work in progress.

   [IPV6]

        Deering, S., and R. Hinden, "Internet Protocol, Version 6
        (IPv6) Specification", RFC 1883, December 1995.

9.  Security Considerations

   Certain management information defined  in  this  MIB  may  be
   considered sensitive in some network environments.

   Therefore,  authentication  of  received  SNMP  requests   and
   controlled access to management information should be employed
   in such environments.

10. Author's Address

      Mike Daniele
      Digital Equipment Corporation
      110 Spit Brook Rd
      Nashua, NH 03062

      Phone: +1-603-881-1423
      EMail: daniele@zk3.dec.com

Expires December 1997