Network Working Group                                      T. Dietz, Ed.
Internet-Draft                                          NEC Europte Ltd.
Expires: August 1, Dezember 30, 2004                                     D. Romascanu
                                                              Avaya Inc.                                     B. Claise
                                                           Cisco Systems
                                                           February
                                                               July 2004

           Definitions of Managed Objects for Packet Sampling
                     <draft-ietf-psamp-mib-02.txt>
                     <draft-ietf-psamp-mib-03.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 August 1, Dezember 30, 2004.

Copyright Notice

   Copyright (C) The Internet Society (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 Systematic Count-based Sampling  . . . . . . . . . . . . . .  4
   3.1.3 Systematic Time-based Sampling . . . . . . . . . . . . . . .  5
   3.1.4 Random n-out-of-N Sampling . . . . . . . . . . . . . . . . .  5
   3.1.5 Random Uniform Probabilistic Sampling . . . . . . . . . . .  6 . . . .  5
   3.1.6 Random Non-Uniform Probabilistic Sampling . . . . . . . . . . . . .  6
   3.1.7 Flow State Sampling  . . . . . . . . . . . . . . . . . . . .  6
   3.2   The Filtering Methods Group  . . . . . . . . . . . . . . . .  6
   3.2.1 Mask Filtering . . . . . . . . . . . . . . . . . . . . . . .  7  6
   3.2.2 Hash Filtering . . . . . . . . . . . . . . . . . . . . . . .  7  6
   3.2.3 Router State Filtering . . . . . . . . . . . . . . . . . . .  7
   3.3   The Reporting Group  . . . . . . . . . . . . . . . . . . . .  7
   3.4   The Instance Group . . . . . . . . . . . . . . . . . . . . .  8  7

   4.    Defnition    Definition . . . . . . . . . . . . . . . . . . . . . . . . .  8

   5.    Security Considerations  . . . . . . . . . . . . . . . . . . 31 38

   6.    Open Issues  . . . . . . . . . . . . . . . . . . . . . . . . 31 38

   7.    Acknowledgment . . . . . . . . . . . . . . . . . . . . . . . 32 39

         Normative References . . . . . . . . . . . . . . . . . . . . 32 39

         Informative References . . . . . . . . . . . . . . . . . . . 32 39

         Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 33 40

         Intellectual Property and Copyright Statements . . . . . . . 34 41

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 performing packet sampling.

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

   Section 3 describes the structure of the PSAMP MIB module and section
   4 contains the formal definition. Security issues are discussed in
   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 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 modeling 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 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 individual sub-tree of
   this group. For each method, the following objects are defined: method a single object indicating the
   availability of the method, method is defined. Furthermore, the following
   objects are defined for each method except the first: a sub-group of
   objects indicating specific capabilities and limits of the method,
   and a sub-group specifying sets of parameters. parameters in a table. Each
   parameter set uniquely specifies all paramerters parameters of a packet sampling
   instance of the method. Also all parameters sets contain a row
   status.

   Methods and parameters of methods are specified in
   [I-D.ietf-psamp-sample-tech]. So far, objects for 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 and
   some Some of the existing methods need to cannot be elaborated finished
   within the PSAMP framework because they are
   just placeholders for need some assistance from the final objects.
   vendor side. The vendor must specify e.g., the algorithm used for
   non-uniform probabilistic sampling. The seven methods are selecting
   all, systematic count-based sampling, systematic time-based sampling,
   random n-out-of-N sampling, random uniform probabilistic sampling, random
   non-uniform probabilistic sampling and flow state sampling.

   All methods contain a pointer (OID) to - except the next sampling selecting all method used - have an object called
   psampSamp"MethodName"Avail indicating if the method is implemented
   and available in the managed node. The capability objects are
   following after that object. These objects depend on the current sampling
   method. Thus concatenation of After the capabilities the parameter set table follows. The
   objects in the table also depend on the sampling
   methods can be realized. Also all parameters method. These
   parameter sets contain are not necessarily instantiated at the managed node,
   but for each instantiated parameter set of a row
   status. TBD: Define method, there MUST be an
   entry in the corresponding table.

   EDITOR NOTE: TBD define usage of RowStatus. The whole paragraph must
   be reviewed before the final version to remove remarks for final
   refinements that must be ready/solved in the final version.

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 Systematic Count-based Sampling

   The first systematic count-based sampling method has two capability
   objects: The psampSampCountBasedMaxInterval 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
   whereas psampSampCountBasedMaxSpacing indicates the maximum spacing
   in packets supported by the implementation.

   Finally psampSystematicCountBasedSamplingParameterSetTable the psampSampCountBasedParamSetTable contains a
   parameter set in each of its entries that completely specifies a
   configuration of an instance of two parameters:
   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 interval length and the spacing specified in numbers of
   packets.

3.1.3 Systematic Time-based 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 systematic time-based sampling method has two capability objects:
   psampSampTimeBasedMaxInterval indicates the maximum sampling interval
   in microseconds supported by the implementation, psampSystematicTimeBasedSamplingMaxSpacing whereas
   psampSampTimeBasedMaxSpacing 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 psampSampTimeBasedParamSetTable contains two parameters:
   the sampling interval length and the spacing specified in
   microseconds.

3.1.4 Random n-out-of-N Sampling

   The first object in this group is
   psampRandomOutOfNSamplingAvailability indicating random n-out-of-N sampling method has two capability objects:
   psampSampRandOutOfNMaxPopulation specifying the availability of
   this method. So far, maximum population N,
   and psampSampRandOutOfNMaxSize the sub-group maximum size of objects specifying capabilities
   is empty for this method. n supported by the
   implementation.

   EDITOR NOTE: this must maximum size of n should be changed since naturally the same as the
   maximum population N! So we somehow can define some
   constraints now.

   The psampRandomOutOfNSamplingParameterSetTable contains a parameter
   set may drop psampSampRandOutOfNMaxSize in each of its entries that completely specifies a configuration
   of an instance of
   the packet next version.

   The random n-out-of-N sampling method. These method has also two parameter sets
   are not necessarily instantiated at the managed node, but for each
   instanciated paramter set of this method, there MUST be an entry objects
   in
   this table. The parameter set contains two parameters. the psampSampRandOutOfNParamSetTable. The first one is psampRandomOutOfNSamplingPopulation
   psampSampRandOutOfNPopulation and gives the number of elements N in
   the parent population. The second
   psampRandomOutOfNSamplingSize psampSampRandOutOfNSize gives the
   number of elements n taken from the parent population. population N. 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 psampRandomUniformProbabilisticSamplingParameterSetTable psampSampUniProbParamSetTable contains
   a parameter set in each of its entries one parameters, the
   psampSampUniProbProbability and gives the probability 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.
   is sampled. The parameter set contains two parameters. probability is equal for every packet. The first one given
   value must be divided by 4294967295 (=2^32-1), so a value of 0 means
   no packet is sampled (probability is psampRandomUniformProbabilisticSamplingPopulation 0) and gives the number of elements N in the parent population. The
   second psampRandomUniformProbabilisticSamplingSize gives the number a value of elements n taken from the parent population.

   EDITOR NOTE: we are missing the description for the functional
   difference to n-out-of-N sampling. 4294967295
   means every packet is sampled (probability is 1).

3.1.6 Random Non-Uniform Probabilistic Sampling

   The first object in this group is
   psampRandomNonUniformProbabilisticSamplingAvailability indicating the
   availability of this method.

   So far, the sub-group of objects specifying capabilities is empty for
   this method.

   EDITOR NOTE:

   The parameter set table psampSampNonUniProbParamSetTable contains one parameters, the
   psampSampNonUniProbFunction object that points to another object
   (OID) describing the function that computes the propability that a
   packet is also still empty and has sampled.

   EDITOR NOTE: Do we need to
   done. define a standard function?

3.1.7 Flow State Sampling

   The first object in this group is psampFlowStateSamplingAvailability
   indicating

   So far, the availability sub-group of objects specifying capabilities is empty for
   this method. So far,

   The psampSampFlowStateParamSetTable contains one parameters, the
   psampSampFlowStateFunction object that points to another object (OID)
   describing the function that checks the sub-group of
   objects specifying capabilities flow state and decides if a
   packet is empty for this method. sampled.

   EDITOR NOTE: The parameter set table is also still empty and has Do we need to
   done. define a standard function?

3.2 The Filtering Methods Group

   EDITOR NOTE: This section does need a complete rewrite. The rewrite
   is deferred until the input for the filtering methods from the other
   WG documents is stable.

   The second group contains information about the filtering methods.
   This group is build up similarly to 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 be done...

3.2.2 Hash Filtering

   The first object in this group 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
   instantiated 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 lists all data templates that are used by the
   PSAMP exporter.

   EDITOR NOTE: The These 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, two tables, the psampInstanceTable. psampInstanceTable and the
   psampMethodChainTable. Each entry of this table the psampInstanceTable describes
   an instance by the IP interface it is acting at, by the packet selection methods it is executing, at and by the collector
   group to which reports on sampled packets are sent. Furthermore a
   start and stop time can be given when the sampling method should run.

   Each
   The collectors are specified by their index in the
   psampCollectorGroupTable. The number of packets sampled and sent by
   the instance is available as statistical value
   psampInstancePacketsObserved for each instance.

   The methods used for the instance can be retrieved through the index
   given in the psampInstanceTable. The index of the instance table is
   also the first index in the psampMethodChainTable. So each method
   entry with the same (first) index as the instance is specified used to produce
   the data record for the instance.

   The psampMethodChainTable describes the concatenation of methods for
   a given instance. If concatenation of methods is not supported on the
   managed node the table will hold exactly one entry per instance.

   The table has two indexes: the first one references an entry in the
   instance table and the second one is the running index for the
   method. The method itself is represented by a reference pointer (OID) to a method-specific
   parameter
   paremeter set. This parameter set also defines a concatenated list of
   sampling The methods if supported. Collectors are specified applied in the order indicated by an the
   second index
   of psampMethodChainIndex. Assume the psampCollectorGroupTable.

   The following statistics table:

   1.4.4.1.2.5.1 = 1 (second index)
   1.4.4.1.2.5.2 = 2 (second index)
   1.4.4.1.3.5.1 = 1.3.6.1.2.1.XXX.1.1.2.3.1.10
     (pointer to a parmeter set psampSampTimeBasedParamSetTableEntry.10)
   1.4.4.1.3.5.2 = 1.3.6.1.2.1.XXX.1.1.1.3.1.4
     (pointer to a parmeter set psampSampCountBasedParamSetTableEntry.4)
   1.4.4.1.4.5.1 = xxx (status of the row)
   1.4.4.1.4.5.2 = xxx (status of the row)

   This would mean that the method psampSampTimeBased with parameter set
   psampSampTimeBasedParamSetTableEntry.10 is available applied prior to the
   method psampSampCountBased with parameter set
   psampSampCountBasedParamSetTableEntry.4 for each instance: number of
   packets observed by the method. instance with index
   5.

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

   IMPORTS
       MODULE-IDENTITY, OBJECT-TYPE, Integer32, Unsigned32, 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 "200401131200Z"         -- 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" dietz@netlab.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 (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     "200401131200Z"     "200407151200Z"         -- 13 February 15 July 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
       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 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
   --==================================================================

   psampSelectAll OBJECT IDENTIFIER ::= { psampSamplingMethods 0 }

   psampSelectAllAvail 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 }
       ::= { psampSelectAll 1 }

   --==================================================================
   --* Method 1: Systematic Count-based Sampling
   --==================================================================
   psampSampCountBased OBJECT IDENTIFIER ::= { psampSamplingMethods 1 }

   psampSampCountBasedAvail 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 }
       ::= { psampSampCountBased 1 }

   -- Capabilities ++++++++++++++++++++++++++++++++++++++++++++++++++++

   psampSampCountBasedCap OBJECT IDENTIFIER
       ::= { psampSampCountBased 2 }

   psampSampCountBasedMaxInterval OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "number of packets"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the the maximum
          number that can be specified for the sampling interval."
       ::= { psampSampCountBasedCap 1 }

   psampSampCountBasedMaxSpacing OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "number of packets"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the the maximum
          number that can be specified for the sampling spacing."
       ::= { psampSampCountBasedCap 2 }

   -- Parameter Set Table +++++++++++++++++++++++++++++++++++++++++++++

   psampSampCountBasedParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampSampCountBasedParamSetEntry
       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."
       ::= { psampSampCountBased 3 }

   psampSampCountBasedParamSetEntry OBJECT-TYPE
       SYNTAX      PsampSampCountBasedParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the
           psampSampCountBasedParamSetTable."
       INDEX { psampSampCountBasedIndex }
       ::= { psampMIB psampSampCountBasedParamSetTable 1 }
   psampConformance   OBJECT IDENTIFIER

   PsampSampCountBasedParamSetEntry ::=
       SEQUENCE { psampMIB 2
           psampSampCountBasedIndex     Integer32,
           psampSampCountBasedInterval  Unsigned32,
           psampSampCountBasedSpacing   Unsigned32,
           psampSampCountBasedRowStatus RowStatus
       }

   -- Packet selection sampling methods group

   psampSampCountBasedIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
          "The index of objects

   psampSamplingMethods        OBJECT IDENTIFIER this parameter set in the
          psampSampCountBasedParamSetTable.
          It is used in entries of the psampInstanceTable as
          reference to this parameter set."
       ::= { psampObjects psampSampCountBasedParamSetEntry 1 }

   -- Method 0: Selecting All Packets

   psampSelectingAll OBJECT IDENTIFIER

   psampSampCountBasedInterval OBJECT-TYPE
       SYNTAX      Unsigned32
       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-04.txt, Section 5.1"
       ::= { psampSamplingMethods 0 psampSampCountBasedParamSetEntry 2 }

   psampSelectingAllAvailability

   psampSampCountBasedSpacing OBJECT-TYPE
       SYNTAX      PsampMethodAvailability      Unsigned32
       UNITS       "number of packets"
       MAX-ACCESS  read-only  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the availability
          of specifies the trivial method of selecting all packets."
       DEFVAL sampling
          spacing for systematic count-based sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
       ::= { available psampSampCountBasedParamSetEntry 3 }

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

   --

   --==================================================================
   --* Method 1: 2: Systematic Count-based Time-based Sampling

   psampSystematicCountBasedSampling
   --==================================================================

   psampSampTimeBased OBJECT IDENTIFIER ::= { psampSamplingMethods 1 2 }

   psampSystematicCountBasedSamplingAvailability

   psampSampTimeBasedAvail 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 psampSampTimeBased 1 }

   psampSystematicCountBasedSamplingCapabilities

   -- Capabilities ++++++++++++++++++++++++++++++++++++++++++++++++++++

   psampSampTimeBasedCap OBJECT IDENTIFIER
       ::= { psampSystematicCountBasedSampling psampSampTimeBased 2 }

   psampSystematicCountBasedSamplingMaxInterval

   psampSampTimeBasedMaxInterval OBJECT-TYPE
       SYNTAX      Integer32      Unsigned32
       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 psampSampTimeBasedCap 1 }
   psampSystematicCountBasedSamplingMaxSpacing

   psampSampTimeBasedMaxSpacing OBJECT-TYPE
       SYNTAX      Integer32      Unsigned32
       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 psampSampTimeBasedCap 2 }

   psampSystematicCountBasedSamplingParameterSetTable

   -- Parameter Set Table +++++++++++++++++++++++++++++++++++++++++++++

   psampSampTimeBasedParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampSystematicCountBasedSamplingParameterSetEntry
                   PsampSampTimeBasedParamSetEntry
       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 psampSampTimeBased 3 }

   psampSystematicCountBasedSamplingParameterSetEntry

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

   PsampSystematicCountBasedSamplingParameterSetEntry

   PsampSampTimeBasedParamSetEntry ::=
       SEQUENCE {
           psampSystematicCountBasedSamplingIndex     Integer32,
           psampSystematicCountBasedSamplingInterval
           psampSampTimeBasedIndex     Integer32,
           psampSystematicCountBasedSamplingSpacing   Integer32,
           psampSystematicCountBasedSamplingNext      OBJECT IDENTIFIER,
           psampSystematicCountBasedSamplingRowStatus
           psampSampTimeBasedInterval  Unsigned32,
           psampSampTimeBasedSpacing   Unsigned32,
           psampSampTimeBasedRowStatus RowStatus
       }

   psampSystematicCountBasedSamplingIndex

   psampSampTimeBasedIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
          "The index of this parameter set in the
          psampSystematicCountBasedSamplingParameterSetTable.
          psampSampTimeBasedParameterSetTable.

          It is used in entries of the psampInstanceTable as
          reference to this parameter set."
       ::= { psampSystematicCountBasedSamplingParameterSetEntry psampSampTimeBasedParamSetEntry 1 }

   psampSystematicCountBasedSamplingInterval

   psampSampTimeBasedInterval OBJECT-TYPE
       SYNTAX      Integer32      Unsigned32
       UNITS       "number of packets"       "microseconds"
       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-03.txt,
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
       ::= { psampSystematicCountBasedSamplingParameterSetEntry psampSampTimeBasedParamSetEntry 2 }

   psampSystematicCountBasedSamplingSpacing

   psampSampTimeBasedSpacing OBJECT-TYPE
       SYNTAX      Integer32      Unsigned32
       UNITS       "number of packets"       "microseconds"
       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-03.txt,
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
       ::= { psampSystematicCountBasedSamplingParameterSetEntry psampSampTimeBasedParamSetEntry 3 }

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

   psampSystematicCountBasedSamplingRowStatus

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

   --

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

   psampSystematicTimeBasedSampling
   --==================================================================

   psampSampRandOutOfN OBJECT IDENTIFIER ::= { psampSamplingMethods 2 3 }
   psampSystematicTimeBasedSamplingAvailability

   psampSampRandOutOfNAvail 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 psampSampRandOutOfN 1 }

   psampSystematicTimeBasedSamplingCapabilities

   -- Capabilities ++++++++++++++++++++++++++++++++++++++++++++++++++++

   psampSampRandOutOfNCap OBJECT IDENTIFIER
       ::= { psampSystematicTimeBasedSampling psampSampRandOutOfN 2 }

   psampSystematicTimeBasedSamplingMaxInterval

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

   psampSystematicTimeBasedSamplingMaxSpacing

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

   psampSystematicTimeBasedSamplingParameterSetTable

   -- Parameter Set Table +++++++++++++++++++++++++++++++++++++++++++++

   psampSampRandOutOfNParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampSystematicTimeBasedSamplingParameterSetEntry
                   PsampSampRandOutOfNParamSetEntry
       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 psampSampRandOutOfN 3 }

   psampSystematicTimeBasedSamplingParameterSetEntry

   psampSampRandOutOfNParamSetEntry OBJECT-TYPE
       SYNTAX      PsampSystematicTimeBasedSamplingParameterSetEntry      PsampSampRandOutOfNParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the
           psampSystematicTimeBasedSamplingParameterSetTable."
           psampSampRandOutOfNParamSetTable."
       INDEX { psampSystematicTimeBasedSamplingIndex psampSampRandOutOfNIndex }
       ::= { psampSystematicTimeBasedSamplingParameterSetTable psampSampRandOutOfNParamSetTable 1 }

   PsampSystematicTimeBasedSamplingParameterSetEntry

   PsampSampRandOutOfNParamSetEntry ::=
       SEQUENCE {
           psampSystematicTimeBasedSamplingIndex
           psampSampRandOutOfNIndex      Integer32,
           psampSystematicTimeBasedSamplingInterval  Integer32,
           psampSystematicTimeBasedSamplingSpacing   Integer32,
           psampSystematicTimeBasedSamplingNext      OBJECT IDENTIFIER,
           psampSystematicTimeBasedSamplingRowStatus
           psampSampRandOutOfNPopulation Unsigned32,
           psampSampRandOutOfNSize       Unsigned32,
           psampSampRandOutOfNRowStatus  RowStatus
       }

   psampSystematicTimeBasedSamplingIndex

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

   psampSystematicTimeBasedSamplingInterval

   psampSampRandOutOfNPopulation OBJECT-TYPE
       SYNTAX      Integer32      Unsigned32
       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-03.txt,
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
       ::= { psampSystematicTimeBasedSamplingParameterSetEntry psampSampRandOutOfNParamSetEntry 2 }

   psampSystematicTimeBasedSamplingSpacing

   psampSampRandOutOfNSize OBJECT-TYPE
       SYNTAX      Integer32      Unsigned32
       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-03.txt,
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
       ::= { psampSystematicTimeBasedSamplingParameterSetEntry psampSampRandOutOfNParamSetEntry 3 }

   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."
       ::= { psampSystematicTimeBasedSamplingParameterSetEntry 4 }

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

   --

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

   psampRandomOutOfNSampling
   --==================================================================

   psampSampUniProb OBJECT IDENTIFIER ::= { psampSamplingMethods 3 4 }

   psampRandomOutOfNSamplingAvailability

   psampSampUniProbAvail 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 psampSampUniProb 1 }

   psampRandomOutOfNSamplingCapabilities

   psampSampUniProbCap OBJECT IDENTIFIER
       ::= { psampRandomOutOfNSampling psampSampUniProb 2 }

   -- Capabilities ++++++++++++++++++++++++++++++++++++++++++++++++++++

   -- No capabilities defined, yet.

   psampRandomOutOfNSamplingParameterSetTable

   -- Parameter Set Table +++++++++++++++++++++++++++++++++++++++++++++

   psampSampUniProbParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampRandomOutOfNSamplingParameterSetEntry
                   PsampSampUniProbParamSetEntry
       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 psampSampUniProb 3 }

   psampRandomOutOfNSamplingParameterSetEntry

   psampSampUniProbParamSetEntry OBJECT-TYPE
       SYNTAX      PsampRandomOutOfNSamplingParameterSetEntry      PsampSampUniProbParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the
           psampRandomOutOfNSamplingParameterSetTable."
           psampSampUniProbParamSetTable."
       INDEX { psampRandomOutOfNSamplingIndex psampSampUniProbIndex }
       ::= { psampRandomOutOfNSamplingParameterSetTable psampSampUniProbParamSetTable 1 }

   PsampRandomOutOfNSamplingParameterSetEntry

   PsampSampUniProbParamSetEntry ::=
       SEQUENCE {
           psampRandomOutOfNSamplingIndex      Integer32,
           psampRandomOutOfNSamplingPopulation
           psampSampUniProbIndex       Integer32,
           psampRandomOutOfNSamplingSize       Integer32,
           psampRandomOutOfNSamplingNext       OBJECT IDENTIFIER,
           psampRandomOutOfNSamplingRowStatus
           psampSampUniProbProbability Unsigned32,
           psampSampUniProbRowStatus   RowStatus
       }

   psampRandomOutOfNSamplingIndex

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

   psampRandomOutOfNSamplingPopulation

   psampSampUniProbProbability OBJECT-TYPE
       SYNTAX      Integer32      Unsigned32 (0..4294967295)
       UNITS       "packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the number
          of elements in the parent population of the sampling
          algorithm."
       REFERENCE
           "draft-ietf-psamp-sample-tech-03.txt,
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
       ::= { psampRandomOutOfNSamplingParameterSetEntry psampSampUniProbParamSetEntry 2 }

   psampRandomOutOfNSamplingSize

   psampSampUniProbRowStatus OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "packets"      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The status of this row of the table."
       ::= { psampSampUniProbParamSetEntry 3 }

   --==================================================================
   --* Method 5: Non-Uniform Probabilistic Sampling
   --==================================================================
   psampSampNonUniProb OBJECT IDENTIFIER ::= { psampSamplingMethods 5 }

   psampSampNonUniProbAvail OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies indicates the number availability
          of elements that are sampled from random non-uniform probabilistic sampling at the managed
          node."
       DEFVAL { notAvailable }
       ::= { psampSampNonUniProb 1 }

   -- Capabilities ++++++++++++++++++++++++++++++++++++++++++++++++++++

   -- Parameter Set Table +++++++++++++++++++++++++++++++++++++++++++++

   psampSampNonUniProbParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampSampNonUniProbParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of random probabilistic
           sampling.  A parameter set describing a configuration
           contains a single parameter only: the sampling rate."
       ::= { psampSampNonUniProb 3 }

   psampSampNonUniProbParamSetEntry OBJECT-TYPE
       SYNTAX      PsampSampNonUniProbParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the
           psampSampNonUniProbParamSetTable."
       INDEX { psampSampNonUniProbIndex }
       ::= { psampSampNonUniProbParamSetTable 1 }

   PsampSampNonUniProbParamSetEntry ::=
       SEQUENCE {
           psampSampNonUniProbIndex     Integer32,
           psampSampNonUniProbFunction  OBJECT IDENTIFIER,
           psampSampNonUniProbRowStatus RowStatus
       }

   psampSampNonUniProbIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
          "The index of this parameter set in the parent
          population
          psampSampNonUniProbParameterSetTable.
          It is used in entries of the sampling algorithm."
       REFERENCE
           "draft-ietf-psamp-sample-tech-03.txt, Section 5.1" psampInstanceTable as
          reference to this parameter set."
       ::= { psampRandomOutOfNSamplingParameterSetEntry 3 psampSampNonUniProbParamSetEntry 1 }

   psampRandomOutOfNSamplingNext

   psampSampNonUniProbFunction OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the function
          that is used to compute the next sampling
          method executed after the current sampling method." probability for sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
       ::= { psampRandomOutOfNSamplingParameterSetEntry 4 psampSampNonUniProbParamSetEntry 2 }

   psampRandomOutOfNSamplingRowStatus

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

   --

   --==================================================================
   --* Method 4: Random Uniform Probabilistic 6: Flow State Sampling

   psampRandomUniformProbabilisticSampling
   --==================================================================

   psampSampFlowState OBJECT IDENTIFIER ::= { psampSamplingMethods 4 6 }

   psampRandomUniformProbabilisticSamplingAvailability

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

   psampRandomUniformProbabilisticSamplingCapabilities OBJECT IDENTIFIER
       ::= { psampRandomUniformProbabilisticSampling 2 }

   -- No capabilities defined, yet.

   psampRandomUniformProbabilisticSamplingParameterSetTable Capabilities ++++++++++++++++++++++++++++++++++++++++++++++++++++

   -- Parameter Set Table +++++++++++++++++++++++++++++++++++++++++++++

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

   psampRandomUniformProbabilisticSamplingParameterSetEntry

   psampSampFlowStateParamSetEntry OBJECT-TYPE
       SYNTAX      PsampRandomUniformProbabilisticSamplingParameterSetEntry      PsampSampFlowStateParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the
           psampRandomUniformProbabilisticSamplingParameterSetTable."
           psampSampFlowStateParamSetTable."
       INDEX { psampRandomUniformProbabilisticSamplingIndex psampSampFlowStateIndex }
       ::= { psampRandomUniformProbabilisticSamplingParameterSetTable psampSampFlowStateParamSetTable 1 }

   PsampRandomUniformProbabilisticSamplingParameterSetEntry

   PsampSampFlowStateParamSetEntry ::=
       SEQUENCE {
           psampRandomUniformProbabilisticSamplingIndex      Integer32,
           psampRandomUniformProbabilisticSamplingPopulation
           psampSampFlowStateIndex     Integer32,
           psampRandomUniformProbabilisticSamplingSize       Integer32,
           psampRandomUniformProbabilisticSamplingNext
           psampSampFlowStateFunction  OBJECT IDENTIFIER,
           psampRandomUniformProbabilisticSamplingRowStatus
           psampSampFlowStateRowStatus RowStatus
       }

   psampRandomUniformProbabilisticSamplingIndex

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

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

   psampRandomUniformProbabilisticSamplingSize

   psampSampFlowStateFunction OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "packets"      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the number
          of elements function
          that are sampled from the parent
          population of is used to check the sampling algorithm." flow state for sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-03.txt,
           "draft-ietf-psamp-sample-tech-04.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."
       ::= { psampRandomUniformProbabilisticSamplingParameterSetEntry 4 psampSampFlowStateParamSetEntry 2 }

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

   -- Method 5: Random Non-Uniform Probabilistic Sampling

   psampRandomNonUniformProbabilisticSampling OBJECT IDENTIFIER ::= { psampSamplingMethods 5 }

   psampRandomNonUniformProbabilisticSamplingAvailability OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object indicates the availability
          of random 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 row of the managed node."
       DEFVAL { notAvailable } table."
       ::= { psampFlowStateSampling 1 psampSampFlowStateParamSetEntry 3 }

   --==================================================================
   -- Packet selection filtering methods group of objects
   --==================================================================

   psampFilteringMethods        OBJECT IDENTIFIER ::= { psampObjects 2 }

   --

   --==================================================================
   --* Method 0: Mask filtering

   psampMaskFiltering
   --==================================================================

   psampFilterMask OBJECT IDENTIFIER ::= { psampFilteringMethods 0 }

   psampMaskFilteringAvailability

   psampFilterMaskAvail 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 psampFilterMask 1 }

   -- to be defined Capabilities ++++++++++++++++++++++++++++++++++++++++++++++++++++

   -- Parameter Set Table +++++++++++++++++++++++++++++++++++++++++++++

   psampFilterMaskParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampFilterMaskParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of random probabilistic
           sampling.  A parameter set describing a configuration
           contains a single parameter only: the sampling rate."
       ::= { psampFilterMask 3 }

   psampFilterMaskParamSetEntry OBJECT-TYPE
       SYNTAX      PsampFilterMaskParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the next version

   --
           psampFilterMaskParamSetTable."
       INDEX { psampFilterMaskIndex }
       ::= { psampFilterMaskParamSetTable 1 }

   PsampFilterMaskParamSetEntry ::=
       SEQUENCE {
           psampFilterMaskIndex     Integer32,
           psampFilterMaskRowStatus RowStatus
       }

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

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

   --==================================================================
   --* Method 1: Hash filtering

   psampHashFiltering
   --==================================================================

   psampFilterHash OBJECT IDENTIFIER ::= { psampFilteringMethods 1 }

   psampHashFilteringAvailability

   psampFilterHashAvail 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 psampFilterHash 1 }
   psampHashFilteringCapabilities
   psampFilterHashCapabilities OBJECT IDENTIFIER
       ::= { psampHashFiltering psampFilterHash 2 }

   -- not defined yet

   psampHashFilteringParameterSetTable Capabilities ++++++++++++++++++++++++++++++++++++++++++++++++++++

   -- Parameter Set Table +++++++++++++++++++++++++++++++++++++++++++++

   psampFilterHashParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampHashFilteringParameterSetEntry
                   PsampFilterHashParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of hash filtering.
           A parameter set describing a configuration
           contains one parameter: the hash function used."
       ::= { psampHashFiltering psampFilterHash 3 }

   psampHashFilteringParameterSetEntry

   psampFilterHashParamSetEntry OBJECT-TYPE
       SYNTAX      PsampHashFilteringParameterSetEntry      PsampFilterHashParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the
           psampHashFilteringParameterSetTable."
           psampFilterHashParamSetTable."
       INDEX { psampHashFilteringIndex psampFilterHashIndex }
       ::= { psampHashFilteringParameterSetTable psampFilterHashParamSetTable 1 }

   PsampHashFilteringParameterSetEntry

   PsampFilterHashParamSetEntry ::=
       SEQUENCE {
           psampHashFilteringIndex
           psampFilterHashIndex     Integer32,
           psampHashFilteringFunction  OBJECT IDENTIFIER,
           psampHashFilteringNext
           psampFilterHashFunction  OBJECT IDENTIFIER,
           psampHashFilteringRowStatus
           psampFilterHashRowStatus RowStatus
       }

   psampHashFilteringIndex

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

   psampHashFilteringFunction

   psampFilterHashFunction OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the the hash
          function executed by the current filtering method."
       ::= { psampHashFilteringParameterSetEntry psampFilterHashParamSetEntry 2 }

   psampHashFilteringNext

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

   --==================================================================
   --* Method 2: Router State filtering
   --==================================================================

   psampFilterRState OBJECT IDENTIFIER ::= { psampFilteringMethods 2 }

   psampFilterRStateAvail OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-create  read-only
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies the indicates the next sampling
          method executed after availability
          of mask filtering at the managed node."
       DEFVAL { notAvailable }
       ::= { psampFilterRState 1 }

   -- Capabilities ++++++++++++++++++++++++++++++++++++++++++++++++++++

   -- Parameter Set Table +++++++++++++++++++++++++++++++++++++++++++++

   psampFilterRStateParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampFilterRStateParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of random probabilistic
           sampling.  A parameter set describing a configuration
           contains a single parameter only: the sampling method." rate."
       ::= { psampFilterRState 3 }

   psampFilterRStateParamSetEntry OBJECT-TYPE
       SYNTAX      PsampFilterRStateParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the
           psampFilterRStateParamSetTable."
       INDEX { psampFilterRStateIndex }
       ::= { psampFilterRStateParamSetTable 1 }

   PsampFilterRStateParamSetEntry ::=
       SEQUENCE { psampHashFilteringParameterSetEntry 3
           psampFilterRStateIndex     Integer32,
           psampFilterRStateRowStatus RowStatus
       }

   psampHashFilteringRowStatus

   psampFilterRStateIndex OBJECT-TYPE
       SYNTAX      RowStatus      Integer32 (1..2147483647)
       MAX-ACCESS  read-create  not-accessible
       STATUS      current
       DESCRIPTION
          "The status index of this row parameter set in the
          psampFilterRStateParameterSetTable.
          It is used in entries of the table."
       ::= { psampHashFilteringParameterSetEntry 4 }

   -- Method 2: Router State filtering

   psampRouterStateFiltering OBJECT IDENTIFIER psampInstanceTable as
          reference to this parameter set."
       ::= { psampFilteringMethods 2 psampFilterRStateParamSetEntry 1 }

   psampRouterStateFilteringAvailability

   psampFilterRStateRowStatus OBJECT-TYPE
       SYNTAX      PsampMethodAvailability      RowStatus
       MAX-ACCESS  read-only  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved,
           "The status of this object indicates the availability row of mask filtering at the managed node."
       DEFVAL { notAvailable } table."
       ::= { psampRouterStateFiltering 1 psampFilterRStateParamSetEntry 2 }

   -- to be defined in the next version

   --==================================================================
   -- Reporting Group
   --==================================================================

   psampReporting        OBJECT IDENTIFIER ::= { psampObjects 3 }

   -- Collector Table +++++++++++++++++++++++++++++++++++++++++++++++++

   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
           psampCollectorDstIpAddressType  InetAddressType,
           psampCollectorTargetIpAddress
           psampCollectorDstIpAddress      InetAddress,
           psampCollectorTargetProtocol
           psampCollectorDstProtocol       Integer32,
           psampCollectorTargetPort
           psampCollectorDstPort           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

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

   psampCollectorTargetIpAddress

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

   psampCollectorTargetProtocol

   psampCollectorDstProtocol 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

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

   -- Collector Group Table +++++++++++++++++++++++++++++++++++++++++++

   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 psampCollectorIndex }
       ::= { 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 }

   -- (Data) Template Table

   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 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,
           psampInstanceTemplateIndex       Integer32,
           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

   psampInstanceTemplateIndex OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER      Integer32 (1..2147483647)
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The OID Index of a parameter set template in one of the method-specific
           tables in template table. This implies
           the Methods group. knowledge about the method chain from the method chain
           table. Furthermore it links the instance, method chain
           (selector) and template together.

           The identified template 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 }

   -- Method Chain Table ++++++++++++++++++++++++++++++++++++++++++++++

   psampMethodChainTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF PsampMethodChainEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table contains method is applied chains lists and
           connects them to instances used by export the stream of packets
           observed at the interface." data."
       ::= { psampInstanceEntry 5 psampInstances 4 }
   psampInstanceCollectorGroupIndex

   psampMethodChainEntry OBJECT-TYPE
       SYNTAX      Integer32      PsampMethodChainEntry
       MAX-ACCESS  read-create  not-accessible
       STATUS      current
       DESCRIPTION
           "The index of
           "Defines an entry in the collector group to which packet reports are sent." psampMethodChainTable."
       INDEX { psampInstanceIndex, psampMethodChainIndex }
       ::= { psampInstanceEntry 6 psampMethodChainTable 1 }

   psampInstancePacketsObserved

   PsampMethodChainEntry ::= SEQUENCE {
           psampMethodChainIndex     Integer32,
           psampMethodChainMethod    OBJECT IDENTIFIER,
           psampMethodChainRowStatus RowStatus
       }

   psampMethodChainIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  read-only  not-accessible
       STATUS      current
       DESCRIPTION
           "The number locally arbitrary, but unique identifier of packets observed by method before selecting
           packets."
           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."
       ::= { psampInstanceEntry 7 psampMethodChainEntry 2 }

   psampInstanceReportsSent

   psampMethodChainMethod OBJECT-TYPE
       SYNTAX      Integer32      OBJECT IDENTIFIER
       MAX-ACCESS  read-only  read-create
       STATUS      current
       DESCRIPTION
           "The number of reports on sampled packets sent to method used for the
           collector." template at a certain position in
           the method chain."
       ::= { psampInstanceEntry 8 psampMethodChainEntry 3 }

   psampInstanceRowStatus

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

   --==================================================================
   -- 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,
                psampRandomOutOfNSamplingPopulation,
                psampRandomOutOfNSamplingSize,
                psampRandomOutOfNSamplingNext,
                psampRandomOutOfNSamplingRowStatus,
                psampRandomUniformProbabilisticSamplingAvailability,
                psampRandomUniformProbabilisticSamplingPopulation,
                psampRandomUniformProbabilisticSamplingSize,
                psampRandomUniformProbabilisticSamplingNext,
                psampRandomUniformProbabilisticSamplingRowStatus,
                psampRandomNonUniformProbabilisticSamplingAvailability,
                psampFlowStateSamplingAvailability,
                psampMaskFilteringAvailability,
                psampHashFilteringAvailability,
                psampHashFilteringFunction,
                psampHashFilteringNext,
                psampHashFilteringRowStatus,
                psampRouterStateFilteringAvailability,
                psampCollectorTargetIpAddressType,
                psampCollectorTargetIpAddress,
                psampCollectorTargetProtocol,
                psampCollectorTargetPort,
                psampSelectAllAvail,

                psampSampCountBasedAvail,
                psampSampCountBasedMaxInterval,
                psampSampCountBasedMaxSpacing,
                psampSampCountBasedInterval,
                psampSampCountBasedSpacing,
                psampSampCountBasedRowStatus,

                psampSampTimeBasedAvail,
                psampSampTimeBasedMaxInterval,
                psampSampTimeBasedMaxSpacing,
                psampSampTimeBasedInterval,
                psampSampTimeBasedSpacing,
                psampSampTimeBasedRowStatus,

                psampSampRandOutOfNAvail,
                psampSampRandOutOfNMaxPopulation,
                psampSampRandOutOfNMaxSize,
                psampSampRandOutOfNPopulation,
                psampSampRandOutOfNSize,
                psampSampRandOutOfNRowStatus,

                psampSampUniProbAvail,
                psampSampUniProbProbability,
                psampSampUniProbRowStatus,

                psampSampNonUniProbAvail,
                psampSampNonUniProbFunction,
                psampSampNonUniProbRowStatus,
                psampSampFlowStateAvail,
                psampSampFlowStateFunction,
                psampSampFlowStateRowStatus,

                psampFilterMaskAvail,
                psampFilterMaskRowStatus,

                psampFilterHashAvail,
                psampFilterHashFunction,
                psampFilterHashRowStatus,

                psampFilterRStateAvail,
                psampFilterRStateRowStatus,

                psampCollectorDstIpAddressType,
                psampCollectorDstIpAddress,
                psampCollectorDstProtocol,
                psampCollectorDstPort,

                psampCollectorReportsSent,
                psampCollectorRowStatus,

                psampCollectorGroupRowStatus,

                psampTemplateId,
                psampTemplateReportsSent,
                psampTemplateRowStatus,

                psampMethodChainMethod,
                psampMethodChainRowStatus,

                psampInstanceIfIndex,
                psampInstanceStartTime,
                psampInstanceStopTime,
                psampInstanceParameterSet,
                psampInstanceTemplateIndex,
                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  is the selecting all method mandatory for all implementations?

   o  should we have standard functions for non-uniform probabilistic
      sampling, flow state sampling and the hash and router state
      filtering?

   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  check definition of selector, currently selector and instance
      represent not quite the same thing

   o  add option template id to each parameter set for exporting option
      data

   o  finish data template table and link it with the other elements.

   o  implement observation point for the sampling/filtering methods.

   o  restrict MIB names  change instance ifIndex to 32 characters observation point in some way.

   o  improve the linking between instance and collector group like it
      is between instance and method chain (take indexes to link those
      tables). Advantage: the collector must exist before an instance
      for it can be created. Same is true for instance and data template
      table.

   o  check data type for "microseconds", protocol type, port, template
      id and maybe some others

   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 draft-ietf-psamp-sample-tech-04 (work in
              progress), October 2003. February 2004.

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

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

   [RFC2579]  McCloghrie, K., Perkins, D. and J. D., Schoenwaelder, J., Case, J.,
              McCloghrie, K., Rose, M. and S. Waldbusser, "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 dietz@netlab.nec.de

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