Network Working Group                                      T. Dietz, Ed.
Internet-Draft                                          NEC Europte Ltd.
Expires: April 23, August 1, 2004                                     D. Romascanu
                                                              Avaya Inc.
                                                               B. Claise
                                                           Cisco Systems
                                                        October 24, 2003
                                                           February 2004

           Definitions of Managed Objects for Packet Sampling
                     <draft-ietf-psamp-mib-01.txt>
                     <draft-ietf-psamp-mib-02.txt>

Status of this Memo

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

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

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time. It is inappropriate to use Internet-Drafts as reference
   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 on April 23, August 1, 2004.

Copyright Notice

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

Abstract

   This memo defines managed objects for packet sampling. These objects
   provide information about managed nodes supporting packet sampling,
   including packet sampling capabilities, configuration and statistics.
   They also allow to configure packet sampling concerning the IP
   interface at which packets are sampled, the packet selections methods
   used for sampling, and the collector to which packet samples are
   exported.

Table of Contents

   1.    Introduction . . . . . . . . . . . . . . . . . . . . . . . .  3

   2.    The Internet-Standard Management Framework . . . . . . . . .  3

   3.    Structure of the PSAMP MIB module  . . . . . . . . . . . . .  3
   3.1   The Sampling Methods Group . . . . . . . . . . . . . . . . . . . . .  4
   3.1.1 Selecting All Packets  . . . . . . . . . . . . . . . . . . .  4
   3.1.2 Count-based Systematic Count-based Sampling  . . . . . . . . . . . . . .  4
   3.1.3 Time-based Systematic Time-based Sampling . . . . . . . . . . . . . . .  6  5
   3.1.4 n-out-of-N Random n-out-of-N Sampling . . . . . . . . . . . . . . . . .  6  5
   3.1.5 Random Uniform Probabilistic Sampling  . . . . . . . . . . .  6
   3.1.6 Random Non-Uniform Probabilistic Sampling  . . . . . . . . .  6
   3.1.7 Flow State Sampling  . . . . . . . . . . . . . . . . . . . .  6
   3.2   The Reporting Filtering Methods Group  . . . . . . . . . . . . . . . .  6
   3.2.1 Mask Filtering . . . . . . . . . . . . . . . . . . . . . . .  7
   3.2.2 Hash Filtering . . . . . . . . . . . . . . . . . . . . . . .  7
   3.2.3 Router State Filtering . . . . . . . . . . . . . . . . . . .  7
   3.3   The Reporting Group  . . . . . . . . . . . . . . . . . . . .  7
   3.4   The Instance Group . . . . . . . . . . . . . . . . . . . . .  7  8

   4.    Defnitions    Defnition  . . . . . . . . . . . . . . . . . . . . . . . . .  7  8

   5.    Security Considerations  . . . . . . . . . . . . . . . . . . 25 31

   6.    Open Issues  . . . . . . . . . . . . . . . . . . . . . . . . 25 31

   7.    Acknowledgment . . . . . . . . . . . . . . . . . . . . . . . 26 32

         Normative References . . . . . . . . . . . . . . . . . . . . 26 32

         Informative References . . . . . . . . . . . . . . . . . . . 26 32

         Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 27 33

         Intellectual Property and Copyright Statements . . . . . . . 28 34

1. Introduction

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

   This document is a product of the Packet Sampling (PSAMP) working
   group. Its purpose is to define standards-based MIB modules for
   monitoring and configuring managed nodes performaing packet sampling.

   It is assumed that packet sampling is performed according to the
   framework defined in [PS-FMWK]. [I-D.ietf-psamp-framework]. Packet selection
   methods considered in the MIB module are specified in [PS-PSEL].
   [I-D.ietf-psamp-sample-tech]. Configuration of the export of samples
   to a collector is modeled according to [PS-TRSP]. [I-D.ietf-psamp-protocol].

   Section 2 3 describes the structure of the PSAMP MIB module and Section
   3 section
   4 contains the formal definition. Security issues are discussed in
   Section
   section 5.

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. Structure of the PSAMP MIB module

   This first draft does still not contain a complete PSAMP MIB module
   definition, but some essential components of it sketching the
   structure of the complete module. The sketch serves as input to a
   discussion of the MIB module structure, particular of the modelling
   of capabilities and configured packet sampling instances. Please find
   a (not complete) list of open issues at the end of the document.

   The PSAMP-MIB module defined below contains three four groups of objects:
   the sampling methods group, the filtering methods group, the
   reporting group, and the instances group.

3.1 The Sampling Methods Group

   The first group of objects contains information about sampling
   methods. Each sampling method is covered by an indovidual individual sub-tree of
   this group. For each method, the following objects are defined: a
   single object indicating the availability of the method, a sub-group
   of objects indicating specific capabilities and limits of the method,
   and a sub-group specifying sets of parameters. Each parameter set
   uniquely specifies all paramerters of a packet sampling instance of
   the method.

   Methods and parameters of methods are specified in
   draft-ietf-psamp-sample-tech-01.txt.
   [I-D.ietf-psamp-sample-tech]. So far, objects for four six methods defined
   in this Internet drafts are contained in the PSAMP MIB module plus an
   additional trivial method. Further methods need to be added
   later. later and
   some of the existing methods need to be elaborated because they are
   just placeholders for the final objects. The five seven methods are
   selecting all, count-based systematic count-based sampling, time-based systematic time-based
   sampling, random n-out-of-N sampling, random uniform probabilistic
   sampling, random non-uniform probabilistic sampling and probabilistic flow state
   sampling.

   All methods contain a pointer (OID) to the next sampling method used
   after the current sampling method. Thus concatenation of sampling
   methods can be realized. Also all parameters sets contain a row
   status. TBD: Define usage of RowStatus.

3.1.1 Selecting All Packets

   This trivial packet selection method is alway available. If it is
   applied, all packets will be selected.

3.1.2 Count-based Systematic Sampling Count-based systematic sampling is specified in Sections 4 and 5 of
   draft-ietf-psamp-sample-tech-01.txt. Sampling

   The first object in this group is
   psampSystematicCountBasedSamplingAvailability indicating the
   availability of this method. It is followed by a sub-group of objects
   specifying capabilities. psampSystematicCountBasedSamplingMaxInterval
   indicates the maximum sampling interval in packets supported by the
   implementation, psampSystematicCountBasedSamplingMaxSpacing indicates
   the maximum spacing in packets supported by the implementation.

   Finally psampSystematicCountBasedSamplingParameterSetTable contains a
   parameter set in each of its entries that completely specifies a
   configuration of an instance of the packet sampling method.  These
   parameter sets are not necessarily instantiated at the managed node,
   but for each instanciated paramter set of this method, there MUST be
   an entry in this table. The parameter set contains two parameters:

   the sampling interval length and the spacing specified in numbers of
   packets.

3.1.3 Time-based Systematic Sampling Time-based systematic sampling is specified in Sections 4 and 5 of
   draft-ietf-psamp-sample-tech-01.txt. Sampling

   The first object in this group is
   psampSystematicTimeBasedSamplingAvailability indicating the
   availability of this method. It is followed by a sub-group of objects
   specifying capabilities. psampSystematicTimeBasedSamplingMaxInterval
   indicates the maximum sampling interval in microseconds supported by
   the implementation, psampSystematicTimeBasedSamplingMaxSpacing
   indicates the maximum spacing in microseconds supported by the
   implementation.

   Finally psampSystematicTimeBasedSamplingParameterSetTable contains a
   parameter set in each of its entries that completely specifies a
   configuration of an instance of the packet sampling method.  These
   parameter sets are not necessarily instantiated at the managed node,
   but for each instanciated paramter set of this method, there MUST be
   an entry in this table. The parameter set contains two parameters:
   the sampling interval length and the spacing specified in
   microseconds.

3.1.4 n-out-of-N Random Sampling n-out-of-N Random sampling is specified in Sections 4 and 5 of
   draft-ietf-psamp-sample-tech-01.txt. Sampling

   The first object in this group is
   psampRandomOutOfNSamplingAvailability indicating the availability of
   this method. So far, the sub-group of objects specifying capabilities
   is empty for this method.

   EDITOR NOTE: this must be changed since we somehow can define some
   constraints now.

   The psampRandomOutOfNSamplingParameterSetTable contains a parameter
   set in each of its entries that completely specifies a configuration
   of an instance of the packet sampling method. These parameter sets
   are not necessarily instantiated at the managed node, but for each
   instanciated paramter set of this method, there MUST be an entry in
   this table. The parameter set contains a single parameter only, the
   sampling rate.

3.1.5 Probabilistic Sampling

   Probabilistic sampling is specified in Sections 4 and 5 of
   draft-ietf-psamp-sample-tech-01.txt. two parameters. The first object in this group one
   is psampRandomProbabilisticSamplingAvailability indicating psampRandomOutOfNSamplingPopulation and gives the
   availability number of this method.

   So
   elements N in the parent population. The second
   psampRandomOutOfNSamplingSize gives the number of elements n taken
   from the parent population. With these two parameters you sample n
   packets out of N.

3.1.5 Random Uniform Probabilistic Sampling

   The first object in this group is
   psampRandomUniformProbabilisticSamplingAvailability indicating the
   availability of this method. So far, the sub-group of objects
   specifying capabilities is empty for this method.

   EDITOR NOTE: this must be changed since we somehow can define some
   constraints now.

   The psampRandomProbabilisticSamplingParameterSetTable psampRandomUniformProbabilisticSamplingParameterSetTable contains
   a parameter set in each of its entries that completely specifies a
   configuration of an instance of the packet sampling method. These
   parameter sets are not necessarily instantiated at the managed node,
   but for each instanciated paramter set of this method, there MUST be
   an entry in this table. The parameter set contains a single parameter
   only, the sampling rate.

3.2 two parameters.
   The Reporting Group first one is psampRandomUniformProbabilisticSamplingPopulation
   and gives the number of elements N in the parent population. The reporting group
   second psampRandomUniformProbabilisticSamplingSize gives the number
   of managed objects provides information on
   collectors to which sampled packets elements n taken from the parent population.

   EDITOR NOTE: we are exported and they allow missing the description for the functional
   difference to
   configure collectors. n-out-of-N sampling.

3.1.6 Random Non-Uniform Probabilistic Sampling

   The first object in this group contains a two tables, is
   psampRandomNonUniformProbabilisticSamplingAvailability indicating the psampCollectorTable and
   availability of this method. So far, the
   psampCollectorGroupTable.  Each entry sub-group of objects
   specifying capabilities is empty for this method.

   EDITOR NOTE: The parameter set table is also still empty and has to
   done.

3.1.7 Flow State Sampling

   The first object in this group is psampFlowStateSamplingAvailability
   indicating the psampCollectorTable
   specifies a collector by its IP address, used transport protocol and
   port number.  Also it contains availability of this method. So far, the number sub-group of reports sent to
   objects specifying capabilities is empty for this
   collector. method.

   EDITOR NOTE: The psampCollectorGroupTable groups one or more collectors
   to a parameter set of collectors where sampled packets are sent to. Thus
   reporting to more than one collector at the same time table is possible.

3.3 also still empty and has to
   done.

3.2 The Instance Filtering Methods Group

   The instance second group of managed objects provides contains information about
   active packet sampling instances at the managed node.  It also allows filtering methods.
   This group is build up similarly to create new instances the sampling methods group. It
   currently contains three filtering methods, the mask filtering, the
   hash filtering and the router state filtering.

3.2.1 Mask Filtering

   to terminate them. be done...

3.2.2 Hash Filtering

   The first object in this group contains a is psampHashFilteringAvailability
   indicating the availability of this method. So far, the sub-group of
   objects specifying capabilities is empty for this method.

   EDITOR NOTE: The capabilites should somehow say what hash functions
   are available.

   The psampHashFilteringParameterSetTable contains a parameter set in
   each of its entries that completely specifies a configuration of an
   instance of the packet filtering method. These parameter sets are not
   necessarily instantiated at the managed node, but for each
   instanciated parameter set of this method, there MUST be an entry in
   this table. The parameter set contains one parameters, the
   psampHashFilteringFunction contains an object ID poiting to the hash
   function used.

3.2.3 Router State Filtering

   to be done...

3.3 The Reporting Group

   The reporting group of managed objects provides information on
   collectors to which sampled packets are exported and they allow to
   configure collectors.

   The group contains a three tables, the psampCollectorTable, the
   psampCollectorGroupTable and the psampTemplateTable. Each entry in
   the psampCollectorTable specifies a collector by its IP address, used
   transport protocol and port number. Also it contains the number of
   reports sent to this collector. The psampCollectorGroupTable groups
   one or more collectors to a set of collectors where sampled packets
   are sent to. Thus reporting to more than one collector at the same
   time is possible. The psampTemplateTable list all templates that are
   used by the PSAMP exporter.

   EDITOR NOTE: The table must be completed and the templates must be
   somehow linked to the collector and an instance.

3.4 The Instance Group

   The instance group of managed objects provides information about
   active packet sampling instances at the managed node.  It also allows
   to create new instances and to terminate them.

   The group contains a single table, the psampInstanceTable.  Each
   entry of this table describes an instance by the IP interface it is
   acting at, by the packet selection methods it is executing, and by
   the collector to which reports on sampled packets are sent.
   Furthermore a start and stop time can be given when the sampling
   method should run.

   Each method is specified by a reference to a method-specific
   parameter set. This parameter set also defines a concatenated list of
   sampling methods if supported. Collectors are specified by an index
   of the psampCollectorGroupTable.

   The following statistics is available for each instance: number of
   packets observed by the method.

4. Defnitions Defnition
   PSAMP-MIB DEFINITIONS ::= BEGIN

   IMPORTS
       MODULE-IDENTITY, OBJECT-TYPE, Integer32, mib-2
           FROM SNMPv2-SMI                  -- RFC2578
       TEXTUAL-CONVENTION, DateAndTime, RowStatus
           FROM SNMPv2-TC                   -- RFC2579
       MODULE-COMPLIANCE, OBJECT-GROUP
           FROM SNMPv2-CONF                 -- RFC2580
       InterfaceIndex                       -- RFC2863
           FROM IF-MIB
       InetAddressType, InetAddress
           FROM INET-ADDRESS-MIB;           -- RFC3291

   psampMIB MODULE-IDENTITY
       LAST-UPDATED "200310240841Z" "200401131200Z"         -- 24 October 2003 13 February 2004
       ORGANIZATION "IETF Packet Sampling Working Group"
       CONTACT-INFO
           "WG charter:
              http://www.ietf.org/html.charters/psamp-charter.html

            Mailing Lists:
              General Discussion: psamp@ops.ietf.org
              To Subscribe: psamp-request@ops.ietf.org
              In Body: subscribe
              Archive: https://ops.ietf.org/lists/psamp/
            Editor:
              Thomas Dietz
              NEC Europe Ltd.
              Network Laboratories
              Kurfuersten-Anlage 36
              69115 Heidelberg
              Germany
              Phone: +49 6221 90511-28
              Email: dietz@ccrle.nec.de"
       DESCRIPTION
           "The PSAMP MIB defines managed objects for packet sampling.
            These objects provide information about managed nodes
            supporting packet sampling, including packet sampling
            capabilities, configuration and statistics.  They also allow
            to configure packet sampling concerning the IP interface at
            which packets are sampled, the packet selections methods used
            for sampling, and the collector to which packet samples are
            exported.

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

        --  Revision history

        REVISION     "200310240841Z"     "200401131200Z"         -- 24 October 2003 13 February 2004
        DESCRIPTION
            "Initial version, published as RFC yyyy."
   -- RFC Ed.: replace yyyy with actual RFC number & remove this notice

       ::= { mib-2 XXX }
   -- XXX to be assigned by IANA.

   -- Textual Conventions

   PsampMethodAvailability ::= TEXTUAL-CONVENTION TEXTUAL-CONVENTION
       STATUS  current
       DESCRIPTION
           "Used to report the availability of a packet selection method:

            available(1) - the method is supported and can be used
            notAvailable(2) - the mothos is not available"
       SYNTAX      INTEGER {
                       available(1),
                       notAvailable(2)
                   }
   -- Top level structure of the MIB

   psampObjects       OBJECT IDENTIFIER ::= { psampMIB 1 }
   psampConformance   OBJECT IDENTIFIER ::= { psampMIB 2 }

   -- Packet selection sampling methods group of objects

   psampSamplingMethods        OBJECT IDENTIFIER ::= { psampObjects 1 }

   -- Method 0: Selecting All Packets

   psampSelectingAll OBJECT IDENTIFIER ::= { psampSamplingMethods 0 }

   psampSelectingAllAvailability OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the availability
          of the trivial method of selecting all packets."
       DEFVAL { available }
       ::= { psampSelectingAll 1 }

   -- Method 1: Systematic Count-based Sampling

   psampSystematicCountBasedSampling OBJECT IDENTIFIER ::= { psampSamplingMethods 1 }

   psampSystematicCountBasedSamplingAvailability OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the availability
          of systematic count-based sampling at the managed node."
       DEFVAL { notAvailable }
       ::= { psampSystematicCountBasedSampling 1 }

   psampSystematicCountBasedSamplingCapabilities OBJECT IDENTIFIER
       ::= { psampSystematicCountBasedSampling 2 }

   psampSystematicCountBasedSamplingMaxInterval OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the the maximum
          number that can be specified for the sampling interval."
       ::= { psampSystematicCountBasedSamplingCapabilities 1 }
   psampSystematicCountBasedSamplingMaxSpacing OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the the maximum
          number that can be specified for the sampling spacing."
       ::= { psampSystematicCountBasedSamplingCapabilities 2 }

   psampSystematicCountBasedSamplingParameterSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampSystematicCountBasedSamplingParameterSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of systematic count-
           based packet sampling.  A parameter set describing a
           configuration contains two parameters: the sampling
           interval length and the spacing."
       ::= { psampSystematicCountBasedSampling 3 }

   psampSystematicCountBasedSamplingParameterSetEntry OBJECT-TYPE
       SYNTAX      PsampSystematicCountBasedSamplingParameterSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the
           psampSystematicCountBasedSamplingParameterSetTable."
       INDEX { psampSystematicCountBasedSamplingIndex }
       ::= { psampSystematicCountBasedSamplingParameterSetTable 1 }

   PsampSystematicCountBasedSamplingParameterSetEntry ::=
       SEQUENCE {
           psampSystematicCountBasedSamplingIndex     Integer32,
           psampSystematicCountBasedSamplingInterval  Integer32,
           psampSystematicCountBasedSamplingSpacing   Integer32,
           psampSystematicCountBasedSamplingNext      OBJECT IDENTIFIER,
           psampSystematicCountBasedSamplingRowStatus RowStatus
       }

   psampSystematicCountBasedSamplingIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Used to report the availability
          "The index of a packet selection method:

            available(1) - this parameter set in the method
          psampSystematicCountBasedSamplingParameterSetTable.
          It is supported and can be used
            notAvailable(2) - the mothos is not available"
       SYNTAX      INTEGER {
                       available(1),
                       notAvailable(2)
                   }

   -- Top level structure in entries of the MIB

   psampObjects       OBJECT IDENTIFIER psampInstanceTable as
          reference to this parameter set."
       ::= { psampMIB psampSystematicCountBasedSamplingParameterSetEntry 1 }
   psampConformance   OBJECT IDENTIFIER

   psampSystematicCountBasedSamplingInterval OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "number of packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the sampling
          interval for systematic count-based sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-03.txt, Section 5.1"
       ::= { psampMIB psampSystematicCountBasedSamplingParameterSetEntry 2 }

   -- Packet selection methods group

   psampSystematicCountBasedSamplingSpacing OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "number of objects

   psampMethods        OBJECT IDENTIFIER ::= { psampObjects 1 }

   -- Method 0: Selecting All Packets

   psampSelectingAll OBJECT IDENTIFIER packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the sampling
          spacing for systematic count-based sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-03.txt, Section 5.1"
       ::= { psampMethods 0 psampSystematicCountBasedSamplingParameterSetEntry 3 }

   psampSelectingAllAvailability

   psampSystematicCountBasedSamplingNext OBJECT-TYPE
       SYNTAX      PsampMethodAvailability      OBJECT IDENTIFIER
       MAX-ACCESS  read-only  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates specifies the availability
          of the trivial next sampling
          method of selecting all packets."
       DEFVAL executed after the current sampling method."
       ::= { available psampSystematicCountBasedSamplingParameterSetEntry 4 }

   psampSystematicCountBasedSamplingRowStatus OBJECT-TYPE
       SYNTAX      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The status of this row of the table."
       ::= { psampSelectingAll 1 psampSystematicCountBasedSamplingParameterSetEntry 5 }

   -- Method 1: 2: Systematic Count-based Time-based Sampling
   psampSystematicCountBasedSampling

   psampSystematicTimeBasedSampling OBJECT IDENTIFIER ::= { psampMethods 1 psampSamplingMethods 2 }

   psampSystematicCountBasedSamplingAvailability
   psampSystematicTimeBasedSamplingAvailability OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the availability
          of systematic count-based time-based sampling at the managed node."
       DEFVAL { notAvailable }
       ::= { psampSystematicCountBasedSampling psampSystematicTimeBasedSampling 1 }

   psampSystematicCountBasedSamplingCapabilities

   psampSystematicTimeBasedSamplingCapabilities OBJECT IDENTIFIER
       ::= { psampSystematicCountBasedSampling psampSystematicTimeBasedSampling 2 }

   psampSystematicCountBasedSamplingMaxInterval

   psampSystematicTimeBasedSamplingMaxInterval OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "microseconds"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the the maximum
          number that can be specified for the sampling interval."
       ::= { psampSystematicCountBasedSamplingCapabilities psampSystematicTimeBasedSamplingCapabilities 1 }

   psampSystematicCountBasedSamplingMaxSpacing

   psampSystematicTimeBasedSamplingMaxSpacing OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "microseconds"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the the maximum
          number that can be specified for the sampling spacing."
       ::= { psampSystematicCountBasedSamplingCapabilities psampSystematicTimeBasedSamplingCapabilities 2 }

   psampSystematicCountBasedSamplingParameterSetTable

   psampSystematicTimeBasedSamplingParameterSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampSystematicCountBasedSamplingParameterSetEntry
                   PsampSystematicTimeBasedSamplingParameterSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of systematic count- time-
           based packet sampling.  A parameter set describing a
           configuration contains two parameters: the sampling
           interval length and the spacing."
       ::= { psampSystematicCountBasedSampling psampSystematicTimeBasedSampling 3 }

   psampSystematicCountBasedSamplingParameterSetEntry

   psampSystematicTimeBasedSamplingParameterSetEntry OBJECT-TYPE
       SYNTAX      PsampSystematicCountBasedSamplingParameterSetEntry      PsampSystematicTimeBasedSamplingParameterSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the
           psampSystematicCountBasedSamplingParameterSetTable."
           psampSystematicTimeBasedSamplingParameterSetTable."
       INDEX { psampSystematicCountBasedSamplingIndex psampSystematicTimeBasedSamplingIndex }
       ::= { psampSystematicCountBasedSamplingParameterSetTable psampSystematicTimeBasedSamplingParameterSetTable 1 }

   PsampSystematicCountBasedSamplingParameterSetEntry

   PsampSystematicTimeBasedSamplingParameterSetEntry ::=
       SEQUENCE {
           psampSystematicCountBasedSamplingIndex
           psampSystematicTimeBasedSamplingIndex     Integer32,
           psampSystematicCountBasedSamplingInterval
           psampSystematicTimeBasedSamplingInterval  Integer32,
           psampSystematicCountBasedSamplingSpacing
           psampSystematicTimeBasedSamplingSpacing   Integer32,
           psampSystematicCountBasedSamplingNext
           psampSystematicTimeBasedSamplingNext      OBJECT IDENTIFIER,
           psampSystematicCountBasedSamplingRowStatus
           psampSystematicTimeBasedSamplingRowStatus RowStatus
       }

   psampSystematicCountBasedSamplingIndex

   psampSystematicTimeBasedSamplingIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
          "The index of this parameter set in the
          psampSystematicCountBasedSamplingParameterSetTable.
          psampSystematicTimeBasedSamplingParameterSetTable.
          It is used in entries of the psampInstanceTable as
          reference to this parameter set."
       ::= { psampSystematicCountBasedSamplingParameterSetEntry psampSystematicTimeBasedSamplingParameterSetEntry 1 }

   psampSystematicCountBasedSamplingInterval

   psampSystematicTimeBasedSamplingInterval OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "number of packets"       "microseconds"        -- might still be too coarse grained
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the a sampling
          interval for systematic count-based time-based sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-01.txt,
           "draft-ietf-psamp-sample-tech-03.txt, Section 5.1"
       ::= { psampSystematicCountBasedSamplingParameterSetEntry psampSystematicTimeBasedSamplingParameterSetEntry 2 }

   psampSystematicCountBasedSamplingSpacing

   psampSystematicTimeBasedSamplingSpacing OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "number of packets"       "microseconds"        -- might still be too coarse grained
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the a sampling
          spacing for systematic count-based time-based sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-01.txt,
           "draft-ietf-psamp-sample-tech-03.txt, Section 5.1"
       ::= { psampSystematicCountBasedSamplingParameterSetEntry psampSystematicTimeBasedSamplingParameterSetEntry 3 }

   psampSystematicCountBasedSamplingNext

   psampSystematicTimeBasedSamplingNext OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the the next sampling
          method executed after the current sampling method."
       ::= { psampSystematicCountBasedSamplingParameterSetEntry psampSystematicTimeBasedSamplingParameterSetEntry 4 }

   psampSystematicCountBasedSamplingRowStatus

   psampSystematicTimeBasedSamplingRowStatus OBJECT-TYPE
       SYNTAX      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The status of this row of the table."
       ::= { psampSystematicCountBasedSamplingParameterSetEntry psampSystematicTimeBasedSamplingParameterSetEntry 5 }

   -- Method 2: Systematic Time-based 3: Random n-out-of-N Sampling

   psampSystematicTimeBasedSampling

   psampRandomOutOfNSampling OBJECT IDENTIFIER ::= { psampMethods 2 psampSamplingMethods 3 }

   psampSystematicTimeBasedSamplingAvailability

   psampRandomOutOfNSamplingAvailability OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the availability
          of systematic time-based random n-out-of-N sampling at the managed node."
       DEFVAL { notAvailable }
       ::= { psampSystematicTimeBasedSampling psampRandomOutOfNSampling 1 }

   psampSystematicTimeBasedSamplingCapabilities

   psampRandomOutOfNSamplingCapabilities OBJECT IDENTIFIER
       ::= { psampSystematicTimeBasedSampling 2 }

   psampSystematicTimeBasedSamplingMaxInterval OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "microseconds"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the the maximum
          number that can be specified for the sampling interval."
       ::= { psampSystematicTimeBasedSamplingCapabilities 1 }

   psampSystematicTimeBasedSamplingMaxSpacing OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "microseconds"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the the maximum
          number that can be specified for the sampling spacing."
       ::= { psampSystematicTimeBasedSamplingCapabilities psampRandomOutOfNSampling 2 }

   psampSystematicTimeBasedSamplingParameterSetTable

   -- No capabilities defined, yet.

   psampRandomOutOfNSamplingParameterSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampSystematicTimeBasedSamplingParameterSetEntry
                   PsampRandomOutOfNSamplingParameterSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of systematic time-
           based packet random n-out-of-N
           sampling.  A parameter set describing a configuration
           contains two parameters: a single parameter only: the sampling
           interval length and the spacing." rate."
       ::= { psampSystematicTimeBasedSampling psampRandomOutOfNSampling 3 }

   psampSystematicTimeBasedSamplingParameterSetEntry

   psampRandomOutOfNSamplingParameterSetEntry OBJECT-TYPE
       SYNTAX      PsampSystematicTimeBasedSamplingParameterSetEntry      PsampRandomOutOfNSamplingParameterSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the
           psampSystematicTimeBasedSamplingParameterSetTable."
           psampRandomOutOfNSamplingParameterSetTable."
       INDEX { psampSystematicTimeBasedSamplingIndex psampRandomOutOfNSamplingIndex }
       ::= { psampSystematicTimeBasedSamplingParameterSetTable psampRandomOutOfNSamplingParameterSetTable 1 }

   PsampSystematicTimeBasedSamplingParameterSetEntry

   PsampRandomOutOfNSamplingParameterSetEntry ::=
       SEQUENCE {
           psampSystematicTimeBasedSamplingIndex
           psampRandomOutOfNSamplingIndex      Integer32,
           psampSystematicTimeBasedSamplingInterval
           psampRandomOutOfNSamplingPopulation Integer32,
           psampSystematicTimeBasedSamplingSpacing
           psampRandomOutOfNSamplingSize       Integer32,
           psampSystematicTimeBasedSamplingNext
           psampRandomOutOfNSamplingNext       OBJECT IDENTIFIER,
           psampSystematicTimeBasedSamplingRowStatus
           psampRandomOutOfNSamplingRowStatus  RowStatus
       }

   psampSystematicTimeBasedSamplingIndex

   psampRandomOutOfNSamplingIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
          "The index of this parameter set in the
          psampSystematicTimeBasedSamplingParameterSetTable.
          psampRandomOutOfNSamplingParameterSetTable.
          It is used in entries of the psampInstanceTable as
          reference to this parameter set."
       ::= { psampSystematicTimeBasedSamplingParameterSetEntry psampRandomOutOfNSamplingParameterSetEntry 1 }

   psampSystematicTimeBasedSamplingInterval

   psampRandomOutOfNSamplingPopulation OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "microseconds"        -- might still be too coarse grained       "packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies a the number
          of elements in the parent population of the sampling
          interval for systematic time-based sampling."
          algorithm."
       REFERENCE
           "draft-ietf-psamp-sample-tech-01.txt,
           "draft-ietf-psamp-sample-tech-03.txt, Section 5.1"
       ::= { psampSystematicTimeBasedSamplingParameterSetEntry psampRandomOutOfNSamplingParameterSetEntry 2 }

   psampSystematicTimeBasedSamplingSpacing

   psampRandomOutOfNSamplingSize OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "microseconds"        -- might still be too coarse grained       "packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies a the number
          of elements that are sampled from the parent
          population of the sampling
          spacing for systematic time-based sampling." algorithm."
       REFERENCE
           "draft-ietf-psamp-sample-tech-01.txt,
           "draft-ietf-psamp-sample-tech-03.txt, Section 5.1"
       ::= { psampSystematicTimeBasedSamplingParameterSetEntry psampRandomOutOfNSamplingParameterSetEntry 3 }

   psampSystematicTimeBasedSamplingNext

   psampRandomOutOfNSamplingNext OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the the next sampling
          method executed after the current sampling method."
       ::= { psampSystematicTimeBasedSamplingParameterSetEntry psampRandomOutOfNSamplingParameterSetEntry 4 }

   psampSystematicTimeBasedSamplingRowStatus

   psampRandomOutOfNSamplingRowStatus OBJECT-TYPE
       SYNTAX      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The status of this row of the table."
       ::= { psampSystematicTimeBasedSamplingParameterSetEntry psampRandomOutOfNSamplingParameterSetEntry 5 }

   -- Method 3: 4: Random n-out-of-N Uniform Probabilistic Sampling

   psampRandomOutOfNSampling

   psampRandomUniformProbabilisticSampling OBJECT IDENTIFIER ::= { psampMethods 3 psampSamplingMethods 4 }
   psampRandomOutOfNSamplingAvailability

   psampRandomUniformProbabilisticSamplingAvailability OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the availability
          of random n-out-of-N uniform probabilistic sampling at the managed node."
       DEFVAL { notAvailable }
       ::= { psampRandomOutOfNSampling psampRandomUniformProbabilisticSampling 1 }

   psampRandomOutOfNSamplingCapabilities

   psampRandomUniformProbabilisticSamplingCapabilities OBJECT IDENTIFIER
       ::= { psampRandomOutOfNSampling psampRandomUniformProbabilisticSampling 2 }

   -- No capabilities defined, yet.

   psampRandomOutOfNSamplingParameterSetTable

   psampRandomUniformProbabilisticSamplingParameterSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampRandomOutOfNSamplingParameterSetEntry
                   PsampRandomUniformProbabilisticSamplingParameterSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of random n-out-of-N probabilistic
           sampling.  A parameter set describing a configuration
           contains a single parameter only: the sampling rate."
       ::= { psampRandomOutOfNSampling psampRandomUniformProbabilisticSampling 3 }

   psampRandomOutOfNSamplingParameterSetEntry

   psampRandomUniformProbabilisticSamplingParameterSetEntry OBJECT-TYPE
       SYNTAX      PsampRandomOutOfNSamplingParameterSetEntry      PsampRandomUniformProbabilisticSamplingParameterSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the
           psampRandomOutOfNSamplingParameterSetTable."
           psampRandomUniformProbabilisticSamplingParameterSetTable."
       INDEX { psampRandomOutOfNSamplingIndex psampRandomUniformProbabilisticSamplingIndex }
       ::= { psampRandomOutOfNSamplingParameterSetTable psampRandomUniformProbabilisticSamplingParameterSetTable 1 }

   PsampRandomOutOfNSamplingParameterSetEntry

   PsampRandomUniformProbabilisticSamplingParameterSetEntry ::=
       SEQUENCE {
           psampRandomOutOfNSamplingIndex
           psampRandomUniformProbabilisticSamplingIndex      Integer32,
           psampRandomOutOfNSamplingRate
           psampRandomUniformProbabilisticSamplingPopulation Integer32,
           psampRandomOutOfNSamplingNext
           psampRandomUniformProbabilisticSamplingSize       Integer32,
           psampRandomUniformProbabilisticSamplingNext       OBJECT IDENTIFIER,
           psampRandomOutOfNSamplingRowStatus
           psampRandomUniformProbabilisticSamplingRowStatus  RowStatus
       }

   psampRandomOutOfNSamplingIndex

   psampRandomUniformProbabilisticSamplingIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
          "The index of this parameter set in the
          psampRandomOutOfNSamplingParameterSetTable.
          psampRandomUniformProbabilisticSamplingParameterSetTable.
          It is used in entries of the psampInstanceTable as
          reference to this parameter set."
       ::= { psampRandomOutOfNSamplingParameterSetEntry psampRandomUniformProbabilisticSamplingParameterSetEntry 1 }

   psampRandomOutOfNSamplingRate

   psampRandomUniformProbabilisticSamplingPopulation OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "1/1000000"       "packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies a the number
          of elements in the parent population of the sampling
          rate for random n-out-of-N sampling."
          algorithm."
       REFERENCE
           "draft-ietf-psamp-sample-tech-01.txt,
           "draft-ietf-psamp-sample-tech-03.txt, Section 5.2" 5.1"
       ::= { psampRandomOutOfNSamplingParameterSetEntry psampRandomUniformProbabilisticSamplingParameterSetEntry 2 }

   psampRandomOutOfNSamplingNext

   psampRandomUniformProbabilisticSamplingSize OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the number
          of elements that are sampled from the parent
          population of the sampling algorithm."
       REFERENCE
           "draft-ietf-psamp-sample-tech-03.txt, Section 5.1"
       ::= { psampRandomUniformProbabilisticSamplingParameterSetEntry 3 }

   psampRandomUniformProbabilisticSamplingNext OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the the next sampling
          method executed after the current sampling method."
       ::= { psampRandomOutOfNSamplingParameterSetEntry 3 psampRandomUniformProbabilisticSamplingParameterSetEntry 4 }

   psampRandomOutOfNSamplingRowStatus

   psampRandomUniformProbabilisticSamplingRowStatus OBJECT-TYPE
       SYNTAX      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The status of this row of the table."
       ::= { psampRandomOutOfNSamplingParameterSetEntry 4 psampRandomUniformProbabilisticSamplingParameterSetEntry 5 }

   -- Method 4: 5: Random Non-Uniform Probabilistic Sampling

   psampRandomProbabilisticSampling

   psampRandomNonUniformProbabilisticSampling OBJECT IDENTIFIER ::= { psampMethods 4 psampSamplingMethods 5 }

   psampRandomProbabilisticSamplingAvailability

   psampRandomNonUniformProbabilisticSamplingAvailability OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the availability
          of random probabilisticf non-uniform probabilistic sampling at the managed node."
       DEFVAL { notAvailable }
       ::= { psampRandomNonUniformProbabilisticSampling 1 }
   -- Method 6: Flow State Sampling

   psampFlowStateSampling OBJECT IDENTIFIER ::= { psampSamplingMethods 6 }

   psampFlowStateSamplingAvailability OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the availability
          of flow state sampling at the managed node."
       DEFVAL { notAvailable }
       ::= { psampRandomProbabilisticSampling psampFlowStateSampling 1 }

   psampRandomProbabilisticSamplingCapabilities

   -- Packet selection filtering methods group of objects

   psampFilteringMethods        OBJECT IDENTIFIER ::= { psampRandomProbabilisticSampling psampObjects 2 }

   -- No capabilities defined, yet.

   psampRandomProbabilisticSamplingParameterSetTable Method 0: Mask filtering

   psampMaskFiltering OBJECT IDENTIFIER ::= { psampFilteringMethods 0 }

   psampMaskFilteringAvailability OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the availability
          of mask filtering at the managed node."
       DEFVAL { notAvailable }
       ::= { psampMaskFiltering 1 }

   -- to be defined in the next version

   -- Method 1: Hash filtering

   psampHashFiltering OBJECT IDENTIFIER ::= { psampFilteringMethods 1 }

   psampHashFilteringAvailability OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the availability
          of hash filtering at the managed node."
       DEFVAL { notAvailable }
       ::= { psampHashFiltering 1 }
   psampHashFilteringCapabilities OBJECT IDENTIFIER
       ::= { psampHashFiltering 2 }

   -- not defined yet

   psampHashFilteringParameterSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampRandomProbabilisticSamplingParameterSetEntry
                   PsampHashFilteringParameterSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of random probabilistic
           sampling. hash filtering.
           A parameter set describing a configuration
           contains a single parameter only: configuration
           contains one parameter: the sampling rate." hash function used."
       ::= { psampRandomProbabilisticSampling psampHashFiltering 3 }

   psampRandomProbabilisticSamplingParameterSetEntry

   psampHashFilteringParameterSetEntry OBJECT-TYPE
       SYNTAX      PsampRandomProbabilisticSamplingParameterSetEntry      PsampHashFilteringParameterSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the
           psampRandomProbabilisticSamplingParameterSetTable."
           psampHashFilteringParameterSetTable."
       INDEX { psampRandomProbabilisticSamplingIndex psampHashFilteringIndex }
       ::= { psampRandomProbabilisticSamplingParameterSetTable psampHashFilteringParameterSetTable 1 }

   PsampRandomProbabilisticSamplingParameterSetEntry

   PsampHashFilteringParameterSetEntry ::=
       SEQUENCE {
           psampRandomProbabilisticSamplingIndex
           psampHashFilteringIndex     Integer32,
           psampRandomProbabilisticSamplingRate      Integer32,
           psampRandomProbabilisticSamplingNext
           psampHashFilteringFunction  OBJECT IDENTIFIER,
           psampHashFilteringNext      OBJECT IDENTIFIER,
           psampRandomProbabilisticSamplingRowStatus
           psampHashFilteringRowStatus RowStatus
       }

   psampRandomProbabilisticSamplingIndex

   psampHashFilteringIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
          "The index of this parameter set in the
          psampRandomProbabilisticSamplingParameterSetTable.
          psampHashFilteringParameterSetTable.
          It is used in entries of the psampInstanceTable as
          reference to this parameter set."
       ::= { psampRandomProbabilisticSamplingParameterSetEntry psampHashFilteringParameterSetEntry 1 }

   psampRandomProbabilisticSamplingRate

   psampHashFilteringFunction OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "1/1000000"      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies a sampling
          rate for random probabilistic sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-01.txt, Section 5.2" the the hash
          function executed by the current filtering method."
       ::= { psampRandomProbabilisticSamplingParameterSetEntry psampHashFilteringParameterSetEntry 2 }

   psampRandomProbabilisticSamplingNext

   psampHashFilteringNext OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the the next sampling
          method executed after the current sampling method."
       ::= { psampRandomProbabilisticSamplingParameterSetEntry psampHashFilteringParameterSetEntry 3 }

   psampRandomProbabilisticSamplingRowStatus

   psampHashFilteringRowStatus OBJECT-TYPE
       SYNTAX      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The status of this row of the table."
       ::= { psampRandomProbabilisticSamplingParameterSetEntry psampHashFilteringParameterSetEntry 4 }

   -- Method 2: Router State filtering

   psampRouterStateFiltering OBJECT IDENTIFIER ::= { psampFilteringMethods 2 }

   psampRouterStateFilteringAvailability OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the availability
          of mask filtering at the managed node."
       DEFVAL { notAvailable }
       ::= { psampRouterStateFiltering 1 }

   -- to be defined in the next version

   -- Reporting Group

   psampReporting        OBJECT IDENTIFIER ::= { psampObjects 2 3 }

   psampCollectorTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF PsampCollectorEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists collectors to which sampled packets are
           exported."
       ::= { psampReporting 1 }

   psampCollectorEntry OBJECT-TYPE
       SYNTAX      PsampCollectorEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the psampCollectorTable."
       INDEX { psampCollectorIndex }
       ::= { psampCollectorTable 1 }

   PsampCollectorEntry ::= SEQUENCE {
           psampCollectorIndex                Integer32,
           psampCollectorTargetIpAddressType  InetAddressType,
           psampCollectorTargetIpAddress      InetAddress,
           psampCollectorTargetProtocol       Integer32,
           psampCollectorTargetPort           Integer32,
           psampCollectorReportsSent          Integer32,
           psampCollectorRowStatus            RowStatus
       }

   psampCollectorIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of
           a collector.

           The value is expected to remain constant at least from one
           re-initialization of the entity's network management system
           to the next re-initialization."
       ::= { psampCollectorEntry 1 }

   psampCollectorTargetIpAddressType OBJECT-TYPE
       SYNTAX      InetAddressType
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The IP address type of the collector."
       ::= { psampCollectorEntry 2 }

   psampCollectorTargetIpAddress OBJECT-TYPE
       SYNTAX      InetAddress
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The IP address of the collector."
       ::= { psampCollectorEntry 3 }

   psampCollectorTargetProtocol OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The transport protocol used for exporting sampled
           packets to the collector. Allowed values are ... "
       ::= { psampCollectorEntry 4 }

   psampCollectorTargetPort OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The port number of the collector."
       ::= { psampCollectorEntry 5 }

   psampCollectorReportsSent OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of reports sent to the collector."
       ::= { psampCollectorEntry 6 }

   psampCollectorRowStatus OBJECT-TYPE
       SYNTAX      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The status of this row of the table."
       ::= { psampCollectorEntry 7 }

   psampCollectorGroupTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF PsampCollectorGroupEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists groups of collectors to which sampled packets are
           exported. If sampled packets are exported to only one collector the
           group consists of exactly one collector."
       ::= { psampReporting 2 }

   psampCollectorGroupEntry OBJECT-TYPE
       SYNTAX      PsampCollectorGroupEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the psampCollectorGroupTable."
       INDEX { psampCollectorGroupIndex, psampCollectorGroupCollectorIndex }
       ::= { psampCollectorGroupTable 1 }

   PsampCollectorGroupEntry ::= SEQUENCE {
           psampCollectorGroupIndex                Integer32,
           psampCollectorGroupCollectorIndex       Integer32,
           psampCollectorGroupRowStatus            RowStatus
       }

   psampCollectorGroupIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of
           a collector group.

           The value is expected to remain constant at least from one
           re-initialization of the entity's network management system
           to the next re-initialization."
       ::= { psampCollectorGroupEntry 1 }

   psampCollectorGroupCollectorIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The index of a collector defined in the psampCollectorTable."
       ::= { psampCollectorGroupEntry 2 }

   psampCollectorGroupRowStatus OBJECT-TYPE
       SYNTAX      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The status of this row of the table."
       ::= { psampCollectorGroupEntry 3 }

   psampTemplateTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF PsampTemplateEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists templates used by the exporter."
       ::= { psampReporting 3 }

   psampTemplateEntry OBJECT-TYPE
       SYNTAX      PsampTemplateEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the psampTemplateTable."
       INDEX { psampTemplateIndex }
       ::= { psampTemplateTable 1 }

   PsampTemplateEntry ::= SEQUENCE {
           psampTemplateIndex       Integer32,
           psampTemplateId          Integer32,
           psampTemplateReportsSent Integer32,
           psampTemplateRowStatus   RowStatus
       }

   psampTemplateIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of
           a template.

           The value is expected to remain constant at least from one
           re-initialization of the entity's network management system
           to the next re-initialization."
       ::= { psampTemplateEntry 1 }

   psampTemplateId OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The unique identifier for the template."
       REFERENCE
           "draft-ietf-ipfix-protocol-02.txt"
       ::= { psampTemplateEntry 2 }

   psampTemplateReportsSent OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of reports sent with this template."
       ::= { psampTemplateEntry 3 }

   psampTemplateRowStatus OBJECT-TYPE
       SYNTAX      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The status of this row of the table."
       ::= { psampTemplateEntry 4 }

   -- Instance Group

   psampInstances        OBJECT IDENTIFIER ::= { psampObjects 3 4 }

   psampInstanceTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF PsampInstanceEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists active instances of packet sampling at
           the managed node."
       ::= { psampInstances 1 }

   psampInstanceEntry OBJECT-TYPE
       SYNTAX      PsampInstanceEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the psampInstanceTable."
       INDEX { psampInstanceIndex }
       ::= { psampInstanceTable 1 }

   PsampInstanceEntry ::= SEQUENCE {
           psampInstanceIndex               Integer32,
           psampInstanceIfIndex             InterfaceIndex,
           psampInstanceStartTime           DateAndTime,
           psampInstanceStopTime            DateAndTime,
           psampInstanceParameterSet        OBJECT IDENTIFIER,
           psampInstanceCollectorGroupIndex Integer32,
           psampInstancePacketsObserved     Integer32,
           psampInstanceReportsSent         Integer32,
           psampInstanceRowStatus           RowStatus
       }

   psampInstanceIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of
           an instance.

           The value is expected to remain constant at least from one
           re-initialization of the entity's network management system
           to the next re-initialization."
       ::= { psampInstanceEntry 1 }

   psampInstanceIfIndex OBJECT-TYPE
       SYNTAX      InterfaceIndex
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "Index of the IP interface at which the packet stream
           is observed by packet selection method 1."
       ::= { psampInstanceEntry 2 }

   psampInstanceStartTime OBJECT-TYPE
       SYNTAX      DateAndTime
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The date and time when collecting samples for this parameter
           set should start."
       ::= { psampInstanceEntry 3 }

   psampInstanceStopTime OBJECT-TYPE
       SYNTAX      DateAndTime
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The date and time when collecting samples for this parameter
           set should stop."
       ::= { psampInstanceEntry 4 }

   psampInstanceParameterSet OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The OID of a parameter set in one of the method-specific
           tables in the Methods group.

           The identified method is applied to the stream of packets
           observed at the interface."
       ::= { psampInstanceEntry 5 }
   psampInstanceCollectorGroupIndex OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The index of the collector group to which packet reports are sent."
       ::= { psampInstanceEntry 6 }

   psampInstancePacketsObserved OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of packets observed by method before selecting
           packets."
       ::= { psampInstanceEntry 7 }

   psampInstanceReportsSent OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of reports on sampled packets sent to the
           collector."
       ::= { psampInstanceEntry 8 }

   psampInstanceRowStatus OBJECT-TYPE
       SYNTAX      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The status of this row of the table."
       ::= { psampInstanceEntry 9 }

    -- Conformance information
    -- Compliance statements

    psampCompliances OBJECT IDENTIFIER ::= { psampConformance 1 }
    psampGroups      OBJECT IDENTIFIER ::= { psampConformance 2 }

    -- Compliance statements

    psampCompliance MODULE-COMPLIANCE
       STATUS  current
       DESCRIPTION
               "The compliance statement for the PSAMP-MIB."
       MODULE  -- this module
           MANDATORY-GROUPS { psampGroup }
       ::= { psampCompliances 1 }

    -- MIB groupings

    psampGroup OBJECT-GROUP
      OBJECTS {
                psampSelectingAllAvailability,
                psampSystematicCountBasedSamplingAvailability,
                psampSystematicCountBasedSamplingMaxInterval,
                psampSystematicCountBasedSamplingMaxSpacing,
                psampSystematicCountBasedSamplingInterval,
                psampSystematicCountBasedSamplingSpacing,
                psampSystematicCountBasedSamplingNext,
                psampSystematicCountBasedSamplingRowStatus,
                psampSystematicTimeBasedSamplingAvailability,
                psampSystematicTimeBasedSamplingMaxInterval,
                psampSystematicTimeBasedSamplingMaxSpacing,
                psampSystematicTimeBasedSamplingInterval,
                psampSystematicTimeBasedSamplingInterval,
                psampSystematicTimeBasedSamplingSpacing,
                psampSystematicTimeBasedSamplingNext,
                psampSystematicTimeBasedSamplingRowStatus,
                psampRandomOutOfNSamplingAvailability,
                psampRandomOutOfNSamplingRate,
                psampRandomOutOfNSamplingPopulation,
                psampRandomOutOfNSamplingSize,
                psampRandomOutOfNSamplingNext,
                psampRandomOutOfNSamplingRowStatus,
                psampRandomProbabilisticSamplingAvailability,
                psampRandomProbabilisticSamplingRate,
                psampRandomProbabilisticSamplingNext,
                psampRandomProbabilisticSamplingRowStatus,
                psampRandomUniformProbabilisticSamplingAvailability,
                psampRandomUniformProbabilisticSamplingPopulation,
                psampRandomUniformProbabilisticSamplingSize,
                psampRandomUniformProbabilisticSamplingNext,
                psampRandomUniformProbabilisticSamplingRowStatus,
                psampRandomNonUniformProbabilisticSamplingAvailability,
                psampFlowStateSamplingAvailability,
                psampMaskFilteringAvailability,
                psampHashFilteringAvailability,
                psampHashFilteringFunction,
                psampHashFilteringNext,
                psampHashFilteringRowStatus,
                psampRouterStateFilteringAvailability,
                psampCollectorTargetIpAddressType,
                psampCollectorTargetIpAddress,
                psampCollectorTargetProtocol,
                psampCollectorTargetPort,
                psampCollectorReportsSent,
                psampCollectorRowStatus,
                psampCollectorGroupRowStatus,
                psampTemplateId,
                psampTemplateReportsSent,
                psampTemplateRowStatus,
                psampInstanceIfIndex,
                psampInstanceStartTime,
                psampInstanceStopTime,
                psampInstanceParameterSet,
                psampInstanceCollectorGroupIndex,
                psampInstancePacketsObserved,
                psampInstanceReportsSent,
                psampInstanceRowStatus
              }
      STATUS  current
      DESCRIPTION
          "The group of all accessible objects of the PSAMP MIB."
       ::= { psampGroups 1 }

   END

5. Security Considerations

   There are a number of management objects defined in this MIB module
   with 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.  These are the tables and objects and their
   sensitivity/vulnerability:

   To be done.

6. Open Issues

   o  describe row status objects to writable tables

   o  support for reporting from a single instance to multiple
      collectors may be refined

   o  elaborate conformance statements

   o  complete security considerations

   o  observed packets may be expanded to number of packets before
      sampling and after sampling or something similar.

   o  align wording with the other draft documents (e.g. instance vs.
      selector)
   o  finish template table and link it with the other elements.

   o  implement observation point for the sampling/filtering methods.

   o  restrict MIB names to 32 characters

   o  ...

7. Acknowledgment

   This document is a product of the PSAMP working group.

Normative References

   [I-D.ietf-psamp-framework]
              Duffield, N., "A Framework for Passive Packet
              Measurement", draft-ietf-psamp-framework-05 (work in
              progress), January 2004.

   [I-D.ietf-psamp-sample-tech]
              Zseby, T., Molina, M., Raspall, F. and N. Duffield,
              "Sampling and Filtering Techniques for IP Packet
              Selection", draft-ietf-psamp-sample-tech-03 (work in
              progress), October 2003.

   [I-D.ietf-psamp-protocol]
              Claise, B., "Packet Sampling (PSAMP) Protocol
              Specifications", draft-ietf-psamp-protocol-00 (work in
              progress), October 2003.

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

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

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

Informative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

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

Authors' Addresses

   Thomas Dietz (editor)
   NEC Europte Ltd.
   Network Laboratories
   Kurfuersten-Anlage 36
   69115 Heidelberg
   Germany

   Phone: +49 6221 90511-28
   EMail: dietz@ccrle.nec.de

   Dan Romascanu
   Avaya Inc.
   Atidim Technology Park
   Bldg. #3
   Tel Aviv,  61131
   Israel

   Phone: +972-3-545-8414
   EMail: dromasca@avaya.com

   Benoit Claise
   Cisco Systems
   De Kleetlaan 6a b1
   1831 Degem
   Belgium

   Phone: +32 2 704 5622
   EMail: bclaise@cisco.com

Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   intellectual property or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; neither does it represent that it
   has made any effort to identify any such rights. Information on the
   IETF's procedures with respect to rights in standards-track and
   standards-related documentation can be found in BCP-11. Copies of
   claims of rights made available for publication and any assurances of
   licenses to be made available, or the result of an attempt made to
   obtain a general license or permission for the use of such
   proprietary rights by implementors or users of this specification can
   be obtained from the IETF Secretariat.

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

Full Copyright Statement

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

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

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

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Acknowledgment

   Funding for the RFC Editor function is currently provided by the
   Internet Society.