Network Working Group                                      T. Dietz, Ed.
Internet-Draft                                          NEC Europte Ltd.
Expires: April 27, December 25, 2006                                     B. Claise
                                                           Cisco Systems
                                                        October 24, 2005
                                                           June 23, 2006

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

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

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

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

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

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

   This Internet-Draft will expire on April 27, December 25, 2006.

Copyright Notice

   Copyright (C) The Internet Society (2005). (2006).

Abstract

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

Table of Contents

   1.  Introduction . . . . . . . . .  Open Issues/TODOs  . . . . . . . . . . . . . . . .  3
     1.1.  Points of Discussion . . . . . . . . . . . . . . . . . . .  3

   2.  PSAMP Documents Overview . . . . . . . . . . . . . . . . . . .  6
   3.  Terminology  . .  Introduction . . . . . . . . . . . . . . . . . . . . . . .  6
     3.1.  Base Association . .  3

   3.  PSAMP Documents Overview . . . . . . . . . . . . . . . . . . .  6  3

   4.  The Internet-Standard Management Framework . . . . . . . . . .  6  4

   5.  Structure of the PSAMP MIB module  . . . . . . . . . . . . . .  7  4
     5.1.  TEXTUAL CONVENTIONS  . . . . . . . . . . . . . . . . .  The Sampling Group . .  7
     5.2.  The Selection Methods . . . . . . . . . . . . . . . . . .  8
       5.2.1.  5
       5.1.1.  Selecting All Packets  . . . . . . . . . . . . . . . .  8
       5.2.2.  5
       5.1.2.  Systematic Count-based Sampling  . . . . . . . . . . .  8
       5.2.3.  6
       5.1.3.  Systematic Time-based Sampling . . . . . . . . . . . .  9
       5.2.4.  6
       5.1.4.  Random n-out-of-N Sampling . . . . . . . . . . . . . .  9
       5.2.5.  6
       5.1.5.  Uniform Probabilistic Sampling . . . . . . . . . . . .  9
       5.2.6.  6
       5.1.6.  Non-Uniform Probabilistic Sampling . . . . . . . . . .  9
       5.2.7.  7
       5.1.7.  Flow State Sampling  . . . . . . . . . . . . . . . . . 10
       5.2.8.  Match  7
     5.2.  The Filtering Methods Group  . . . . . . . . . . . . . . . . . . . 10
       5.2.9.  Hash  7
       5.2.1.  Match Filtering  . . . . . . . . . . . . . . . . . . . . 10
       5.2.10. Router State  7
       5.2.2.  Hash Filtering . . . . . . . . . . . . . . . . 11
     5.3.  The Hash Functions . . . .  7
       5.2.3.  Router State Filtering . . . . . . . . . . . . . . . . 12
     5.4.  8
     5.3.  The Reporting  . . Hash Functions Group . . . . . . . . . . . . . . . . .  9

   6.  Definition . . . 12
     5.5.  The Base Associations . . . . . . . . . . . . . . . . . . 12
   6.  Definition . . . . . 10

   7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 43

   8.  IANA Considerations  . . 14
   7.  Security Considerations . . . . . . . . . . . . . . . . . . . 60
   8. 43

   9.  Acknowledgment . . . . . . . . . . . . . . . . . . . . . . . . 60
   9. 43

   10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 60
     9.1. 43
     10.1. Normative References . . . . . . . . . . . . . . . . . . . 60
     9.2. 43
     10.2. Informative References . . . . . . . . . . . . . . . . . . 61 44

   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 62 45
   Intellectual Property and Copyright Statements . . . . . . . . . . 63 46

1.  Open Issues/TODOs
   o  Align MIB with other drafts, esp. the Sampling Techniques one.
   o  Is the selecting all method mandatory for all implementations?
   o  Describe row status objects to writable tables.
   o  Elaborate conformance statements.
   o  Add option template id to each parameter set for exporting option
      data.
   o  Check data type for "microseconds", protocol type, port, template
      id and maybe some others.
   o  Need to achieve a common layout and naming on the different MIB
      parts.
   o  Elaborate security considerations, particularly concerning SET
      operations.

2.  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 [8]. [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 PSAMP devices performing packet selection
   by sampling, filtering and hashing.

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

1.1.  Points of Discussion

   This section covers [I-D.ietf-psamp-protocol].  The
   exporter uses the open issues, still to be resolved/updated IPFIX protocol as specified in
   this draft.

   MIB-1: Title should include sampling and filtering not only sampling. [I-D.ietf-ipfix-
   protocol].

   The titles of all documents not only the MIB document should
      reflect that.

   MIB-2: We are missing some examples, such as slide 8 of PSAMP-MIB-
      IETF60.ppt.  It presented here is planned to integrate a entity relationship
      diagram plus some examples module of the IPFIX MIB [I-D.dietz-ipfix-
   mib].  It starts at an Object ID in the next version.  Examples should
      always display named OIDs otherwise they are difficult to
      understand.

   MIB-3: Do we want to be consistent with IPFIX MIB and imports the upper cases in
   textual conventions defined there.

3.  PSAMP Documents Overview

   PSAMP Framework: [I-D.ietf-psamp-framework] "A Framework for Packet
      Selection and Reporting" The document describes the
      terminology?  Do we want PSAMP
      framework for network elements to select subsets of packets by
      statistical and other methods, and to say export a note about it in stream of reports
      on the selected packets to a collector.  Definitions of
      terminology
      section.  Something such as: "all and the use of the terms "must", "should" and "may" in upper cases are defined
      in..." or "all referenced terminology
      this document are written with an upper
      case"

   MIB-4: The following caese definitively requires some more
      explanation, with some examples.

      *  When you refers to an OID informational only.

   PSAMP Sampling Techniques: [I-D.ietf-psamp-sample-tech] "Sampling and
      Filtering Techniques for IP Packet Selection", describes the interface, you don't specify
         if we need the OID set
      of packet selection techniques supported by PSAMP.

   PSAMP MIB: "Definitions of Managed Objects for Packet Sampling" (this
      document) describes the ifIndex, for PSAMP Management Information Base.

   PSAMP Protocol: [I-D.ietf-psamp-protocol] "Packet Sampling (PSAMP)
      Protocol Specifications" specifies the ifDescr, for
         something else

      *  When you refer to an OID for export of packet
      information from a function, an example is needed

      *  When you refer PSAMP Exporting Process to a PSAMP Colleting
      Process.

   PSAMP Information Model: [I-D.ietf-psamp-info] "Information Model for
      Packet Sampling Exports" defines an OID information and data model for set
      PSAMP.

   Section 5 describes the structure of input parameters, which OID
         do we need?  What if there the PSAMP MIB module and section
   6 contains the formal definition.  Security issues are multiple indexes finally
   discussed in the table?
      Thus a new section about undefined function, parameters and
      observation point is really needed.

   MIB-5: 7.

4.  The Internet-Standard Management Framework

   For a detailed overview of the documents that describe the current
   Internet-Standard Management Framework, please refer to section on hash filtering is difficult to understand.  We
      have some terms defined.  And we don't use them.  Hence if I would
      have to implement this MIB, I would not be sure at all what to put
      in there.

     I would like to have 7 of
   RFC 3410 [RFC3410].

   Managed objects are accessed via a structure with:
     IN;
          Parameter1
          Parameter2
          ...
     OUT
          Parameter1
          Parameter2

   MIB-6: Question: as far as I recall (but I could be wrong), when
      using the RowStatus, we have to speficy virtual information store, termed
   the minimum set of Management Information Base or MIB.  MIB
      variables in that table that need to be set in order for objects are generally
   accessed through the
      status to go to "create", i.e. Simple Network Management Protocol (SNMP).
   Objects in the states information.  That's one
      of biggest missing things.

   MIB-7: psampSampNonUniProbFuncParam OBJECT-TYPE: here we must explain
      how to do when several input parameters references MIB are needed!
      See also MIB-2 and MIB-4.

   MIB-8: psampFilterHashPayloadBytes OBJECT-TYPE: What does Payload
      mean?  Above layer 4?  It is not specified defined using the mechanisms defined in [2].

   MIB-9: psampFilterRState OBJECT IDENTIFIER: Try to rename to
      RouterState if maximum OID name length the
   Structure of 32 chars is not
      exceeded.

   MIB-10: psampFilterRStateAvail OBJECT-TYPE: It should be specified
      when this object Management Information (SMI).  This memo specifies a MIB
   module that is "available".  It should be available when one
      of compliant to the given functions SMIv2, which is available."

   MIB-11: PsampFilterRStateParamSetEntry: Specifically described in this case, we
      need to define which minimum set STD 58,
   RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580
   [RFC2580].

5.  Structure of MIB variable should be set up
      for the entry to go "createandgo".  For example, PSAMP MIB module

   The PSAMP MIB module is
      psampFilterRStateVendorFunc enough?  See aslo MIB-6.

   MIB-12: We are missing structure according to the observation domain in both sample techniques
   document [I-D.ietf-psamp-sample-tech].  The main structure follows
   the PSAMP-MIB
      PsampBaseAssocEntry and PSAMP-TECH document.

   MIB-13: psampBaseAssoceObservationPoint OBJECT-TYPE: Where should building blocks of the
      OID PSAMP framework [I-D.ietf-psamp-
   framework], describing sampling/filtering at an observation point to? ifIndex, ifDescr?

   MIB-14: Capitalization should be consistent throughout the document.
      Maybe
   then exporting the solution is collected information to list all reference terms from PSAMP one or more collectors.
   The objects needed for exporting the information and
      IPFIX drafts (the ones describing and
   configuring the selection methods used in the draft).  So just a list, with
      no definition, metering process are
   already defined in the terminology section.  Feedback?

   MIB-15: Consistent usage of data types (especially Unsigned32 and
      Integer32 with ranges) must be checked!  Not sure if especially an
      index can be Unsigned32, if he must have a limited range, etc.
      Can some experts speak up?

   MIB-16: Hash IPFIX MIB Exporter Module [I-D.dietz-ipfix-
   mib].

   The PSAMP MIB Module contains parameter sets for the sampling and
   filtering again (see also MIB-5). methods described in [I-D.ietf-psamp-sample-tech].  The hash
   sampling and filtering methods and their parameter sets are
   controlled by three groups of objects: The sampling group, the
   filtering group is confusing because it was specified before and the hash
      function functions group.  We mainly care about the hash function defined in  The sampling group and
   the appendix of PSAMP-TECH, so why do we have this filtering group before define the parameters for the sampling and
   filtering methods.  The hash function functions group and do defines the available
   hash functions for hash based filtering.  Finally we have this the
   statistics group at all.  If
      someone would that represent all objects collecting the optional
   statistical values like to specify packets observed by a new hash function, he will
      potentially have function or
   reports sent to a new RFC and part of it, collector.

   In the new MIB OID for
      this specific hash function could be specified.

      So next sections we could just introduce two hash filtering method (IPSX and
      Bob) specified in the PSAMP-TECH document will briefly describe every object group and leave other hash
      functions to extended drafts.  But what
   its usage.

5.1.  The Sampling Group

   The first group of objects contains information about vendor specific hash
      functions??  How do we know they exist??

      Potentially because a vendor would produce a new private MIB?
      Maybe a question sampling
   methods.  Each sampling method is covered by an individual sub-tree
   of this group.  The following objects are defined for each method
   except the mailing list!  We mainly need the hash
      function in hardware, where it can not be changed so easily as
      changing first: a mib.

   MIB-17: Hash filtering again (see also MIB-5 sub-group of objects indicating specific
   capabilities and MIB-16).  Question limits of security!  Do we want to the method that may be able to read all empty if no
   capabilities or limits are available, and a sub-group specifying sets
   of the values parameters in a table.  Each row in
      PsampFilterHashParamSetEntry.  Including the output parameter set table
   uniquely specifies all parameters of the hash
      function?  Could an attacker with SNMP read access deduce what
      type a packet sampling instance of traffic to send to manipulate
   the NMS application?  Do we
      want to export method.  Also all the 10 parameters in PSAMP export?  Does
      PSAMP-FW requires it?  See "6.2.2 Guarding Against Pitfalls and
      Vulnerabilities".  So the best thing to do is to ask Nick sets contain a row status.

   Methods and
      Tanja.

   MIB-18: Router State Filtering (see also MIB-10).  It might be easier
      with subtables for each router state function.  That would also
      clarify the point parameters of psampFilterRStateAvail: one capability per
      function -> that make more sense.  That would also solve MIB-10.
      We can extend with new methods easily.

2.  PSAMP Documents Overview

   [PSAMP-FW]: "A Framework for Packet Selection and Reporting" are specified in [I-D.ietf-psamp-
   sample-tech].  The PSAMP MIB document describes specifies all methods defined
   in the PSAMP framework for network elements to
      select subsets of packets by statistical and other methods, and sample tech document.  If some object need further
   specification then OBJECT IDENTIFIERS are used as pointers to
      export a stream
   functions or parameters that are out of reports on the selected packets to a collector.
      Definitions scope of terminology and the use this document.
   They can be implemented in a vendor specific way or may be documented
   in another document or a later version of the terms "must",
      "should" and "may" this document.  An
   implementer may specify e.g., one or more functions used for non-
   uniform probabilistic sampling.  The seven methods specified in this
   document are informational only.

   [PSAMP-TECH]: "Sampling selecting all, systematic count-based sampling,
   systematic time-based sampling, random n-out-of-N sampling, uniform
   probabilistic sampling, non-uniform probabilistic sampling and Filtering Techniques for IP Packet
      Selection", describes the set of flow
   state sampling.

5.1.1.  Selecting All Packets

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

5.1.2.  Systematic Count-based Sampling

   The systematic count-based sampling method has two capability
   objects: The psampSampCountBasedMaxInterval object indicates the
   maximum sampling interval in packets supported by PSAMP.

   PSAMP-MIB: "Definitions of Managed Objects for Packet Sampling" (this
      document) describes the PSAMP Management Information Base.

   [PSAMP-PROTO]: "Packet Sampling (PSAMP) Protocol Specifications"
      specifies implementation,
   whereas psampSampCountBasedMaxSpacing indicates the export of packet information from a PSAMP Exporting
      Process to a PSAMP Colleting Process.

   [PSAMP-INFO]: "Information Model for Packet Sampling Exports" defines
      an information and data model for PSAMP.

3.  Terminology

   The PSAMP terminology defined here includes (and is consistent with)
   all terms listed maximum spacing
   in [2].  We here define additional terms required
   for packets supported by the definition of managed objects.  An architecture overview implementation.

   Finally the psampSampCountBasedParamSetTable contains two parameters:
   the sampling interval length and
   possible configurations of PSAMP elements can be found the spacing specified in [1].
   Detailed definitions numbers of selectors can be found in [2].  PSAMP
   terminology also aims to be consistent with terms used in [9].
   packets.

5.1.3.  Systematic Time-based Sampling

   The
   relationship between some PSAMP and IPFIX terms is described systematic time-based sampling method has two capability objects:
   psampSampTimeBasedMaxInterval indicates the maximum sampling interval
   in [1].

3.1.  Base Association

   The Base Association combines several values defined at a PSAMP
   device.  It is derived from microseconds supported by the ASSOCIATION defined implementation, whereas
   psampSampTimeBasedMaxSpacing indicates the maximum spacing in [2] section 7.
   It
   microseconds supported by the implementation.

   Finally the psampSampTimeBasedParamSetTable contains references to an Observation Point, a template record, a
   list of Collectors, a list of Selectors and process ids of two parameters:
   the
   metering sampling interval length and the reporting process.  It associates these values to
   specify one Measurement Process on the PSAMP device.  Several
   Measurement Processes can be defined on spacing specified in
   microseconds.

5.1.4.  Random n-out-of-N Sampling

   The random n-out-of-N sampling method has two capability objects:
   psampSampRandOutOfNMaxPopulation specifying the PSAMP device maximum population N,
   and every
   Measurement Process will be described by a Base Association.

4.  The Internet-Standard Management Framework
   For a detailed overview psampSampRandOutOfNMaxSample the maximum size of n supported by
   the documents that describe implementation.

   The random n-out-of-N sampling method has also two parameter objects
   in the current
   Internet-Standard Management Framework, please refer to section 7 of
   RFC 3410 [10].

   Managed objects are accessed via a virtual information store, termed
   the Management Information Base or MIB.  MIB objects are generally
   accessed through psampSampRandOutOfNParamSetTable.  The first one is
   psampSampRandOutOfNPopulation and gives the Simple Network Management Protocol (SNMP).
   Objects number of elements N in
   the MIB are defined using the mechanisms defined in parent population.  The second psampSampRandOutOfNSample gives
   the
   Structure number of Management Information (SMI).  This memo specifies a MIB
   module that is compliant to elements n taken from the SMIv2, which is described in STD 58,
   RFC 2578 [4], STD 58, RFC 2579 [5] and STD 58, RFC 2580 [6].

5.  Structure parent population N. With
   these two parameters you sample n packets out of the PSAMP MIB module N.

5.1.5.  Uniform Probabilistic Sampling

   The PSAMP MIB module follows the structures given in [1] uniform probabilistic sampling method has no capabilities and [2].
   The psampBaseAssociations subtree builds
   only one parameter in the heart of psampSampUniProbParamSetTable, the PSAMP MIB.
   psampSampUniProbProbability.  This subtree models the values described by object gives the Base Association. probability that
   a packet is sampled.  The psampBaseAssocTable contains one entry per Base Association. probability is equal for every packet.  The
   list
   given value must be divided by 4294967295 (=2^32-1), so a value of Selectors 0
   means no packet is modelled by sampled (probability is 0) and a second table the
   psampSelectorListTable.  This table value of
   4294967295 means every packet is linked to the
   psampBaseAssocTable by the first index which sampled (probability is the
   psampBaseAssocIndex.  A psampBaseAssocEntry 1).

5.1.6.  Non-Uniform Probabilistic Sampling

   The non-uniform probabilistic sampling method has also references an entry
   in no
   capabilities defined.  The psampSampNonUniProbParamSetTable contains
   two parameters, the psampTemplateRecordTable psampSampNonUniProbFunction and the psampCollectorGroupTable
   psampSampNonUniProbFuncParam.  Those two objects point to
   link the metering process with the reporting process.

   Every selection method described in [2] gets its own subtree in
   function that computes the
   PSAMP MIB.  The subtree always contains a capability section and probability that a
   parameter set table.  So several parameter sets can be defined for
   each selection method.  The parameter set packet is linked to the Base
   Association by an entry in sampled and
   the psampSelectorListTable. parameters used for that function.  The
   psampSelectorListMethod point to the first object id definition of a parameter
   set entry.  The hash functions proposed in [2] are modelled in a
   similar way as the selection methods and are referenced by a
   psampFilterHashParamSetEntry.

   The reporting
   function and exporting processes are modeled by the
   psampCollectorTable, the psampCollectorGroupTable its parameters is implementation dependent and beyond
   the
   psampTemplateRecordTable. scope of this document.

5.1.7.  Flow State Sampling

   The psampTemplateRecordTable contains
   Template Records as defined by capabilities and parameter set of the IPFIX protocol.  They flow state sampling method
   are used to
   export the selected packets equal to those of the collectors.  The collectors itself non-uniform probabilistic sampling method.
   There are modelled in the psampCollectorTable no capabilities defined and the
   psampCollectorGroupTable combines several Collectors
   psampSampFlowStateParamSetTable hold two parameters pointing to which the
   packet reports are sent simultaniously.

5.1.  TEXTUAL CONVENTIONS

   The PSAMP MIB defines one new textual convention,
   flow state function and the
   PsampMethodAvailability.  It is parameters used as SYNTAX of all those objects
   that indicate if a selection method or hash by the flow state
   function is available in
   a specific (psampSampFlowStateFunction and
   psampSampFlowStateFuncParam).  Again the function and its parameters
   are implementation dependent and beyond the scope of a PSAMP device. this document.

5.2.  The Selection Filtering Methods Group

   The first second group of objects contains information about sampling
   methods and the filtering methods.  Each method
   This group is covered by an
   individual subtree.  Expect for the first method that corresponds build up similarly to the exceptional selection of all packets, sampling methods group.  It
   currently contains three filtering methods, the following objects are
   defined for each method: a subtree of objects indicating specific
   capabilities match filtering, the
   hash filtering and limits of the router state filtering.

5.2.1.  Match Filtering

   The match filtering method that may be empty if has no capabilities or limits are available, defined and a subtree specifying sets
   of contains
   four parameters in a table.  Each row in the parameter set table
   uniquely specifies all parameters of a packet selection process of the method.  Also all parameters sets contain a row status. psampFilterMatchParamSetTable: The
   psampFilterMatchFieldId contain the PSAMP MIB covers all methods and their parameters specified or IPFIX field id defined
   in
   [2].  If the given methods could be extended by some implementation
   dependent functionality the MIB contains objects that reference an
   OBJECT IDENTIFIER.  These objects are used information model as pointers reference what to functions
   or parameters that are out of match.  The
   psampFilterMatchStartValue and psampFilterMatchStopValue contain the scope of
   start and stop value to match the content against.  In this document.  These
   functions or parameters way you
   can be either vendor specific or may be
   documented in an additional standard document or an updated version
   of this document.  An implementer may specify match e.g., one or more
   functions used for non-uniform probabilistic sampling, additional
   router state matches or additional hash functions for hash filtering.

5.2.1.  Selecting All Packets

   This is a range x-z of transport protocol ports by specifying
   the most trivial packet selection method. field id that represents the transport protocol port and giving x
   as start value and y as stop value.  If a single value should be
   matched than start and stop value must be equal.  A mask
   psampFilterMatchMask can be applied if it is applied,
   all packets will be selected.

5.2.2.  Systematic Count-based Sampling

   Count-based sampling means, that all packets that arrive in this
   packet interval are selected.  The spacing parameter defines applicable for the
   spacing in number field
   id.  The encoding of packets between the end of one sampling interval values is dependent on the field id and has
   to be done according to the start of PSAMP protocol document.

5.2.2.  Hash Filtering

   Capabilities are not specified for the next succeeding interval.  The systematic count-
   based sampling method has two capability objects: The
   psampSampCountBasedMaxInterval object indicates hash filtering method.  But
   according to the maximum sampling
   interval supported by sample tech document [I-D.ietf-psamp-sample-tech]
   ten parameters are defined in the implementation, whereas
   psampSampCountBasedMinSpacing indicates psampFilterHashParamSetTable.  The
   psampFilterHashAddrType specifies the minimum spacing supported
   by address type to hash - either
   IPv4 or IPv6.  Then psampFilterHashHeaderBits specifies a bit mask
   applied to the implementation.

   Finally packet header selecting the psampSampCountBasedParamSetTable contains two parameters: bits to hash from the sampling interval length and
   packet header.  Then psampFilterHashPayloadBytes gives the spacing specified in number of
   packets.

5.2.3.  Systematic Time-based Sampling

   Time-based sampling means, that all packets
   payload bytes that arrive in this time
   interval are selected.  The spacing parameter defines the spacing should be included in
   time between the end of one sampling interval and hashing.  The final bits
   that are selected from the start of payload bytes are masked with the
   next succeeding interval.  The systematic time-based sampling methods
   have two capability objects:
   psampFilterHashPayloadBits.

   The psampSampTimeBasedMaxInterval object
   indicates above parameters specified what gets feed into the maximum sampling interval supported by hash function.
   The following parameters specify the
   implementation, whereas psampSampTimeBasedMinSpacing indicates hash function itself.  The
   psampFilterHashFunction points to a hash function and
   psampFilterHashFuncParam point to a function specific parameter set
   for the
   minimum spacing supported by hashing function.  The number of input and output bits for
   the implementation: both MIB objects
   units are hash function is specified in microseconds. with psampFilterHashInputBits and
   psampFilterHashOutputBits.  Finally the psampSampTimeBasedParamSetTable contains two parameters: output may be masked with the sampling interval length and
   psampFilterHashOutputMask.  The results gained by applying all those
   parameters are then compared with the spacing specified in number of
   microseconds.

5.2.4.  Random n-out-of-N Sampling psampFilterHashSelection.  The random n-out-of-N sampling method has one capability object:
   psampSampRandOutOfNMaxPopulation specifying
   psampFilterHashSelection contains the maximum population N. hash value ranges or single
   hash values that get selected.  The psampFilterHashSelection is a
   human readable string containing only the ASCII characters 0-9, a-f,
   comma(,) and dash(-).  The ASCII string is defined as follows:

   selections := selection | selections,selection
   selection  := range | value
   range      := value-value
   value      := 0x[0-9,a-f]* | [1-9][0-9]*

   The random n-out-of-N sampling method has also two hash functions given in the sample tech document can be
   referenced within this parameter objects set table and are also contained in
   this PSAMP MIB document.

5.2.3.  Router State Filtering

   The router state filtering does also not specify any capabilities.
   The parameter table psampFilterRStateParamSetTable contains six
   parameters to specify the psampSampRandOutOfNParamSetTable. router state to filter against.  The first
   object psampFilterRStateFunction defines one of nine functions that
   may be used as router state.

   other: an other router state function that is
   psampSampRandOutOfNPopulation and gives not defined here.  Then
      psampFilterRStateVendorFunc points to the number of elements N in implementation specific
      function that is used.

   ingressIf: packets that enter the parent population.  The second psampSampRandOutOfNSample gives probe at the number of elements n taken from interface specified by
      psampFilterRStateIfIndex are matched.

   egressIf: packets that leave the parent population N. With
   these two parameters you sample n probe at the interface specified by
      psampFilterRStateIfIndex are matched.

   aclViolation: packets out of N.

5.2.5.  Uniform Probabilistic Sampling

   Capability objects that violate the access control list are not specified
      matched.

   rpfFailure: packets for that the uniform probabilistic
   sampling method.  It has only one parameter in the
   psampSampUniProbParamSetTable, the psampSampUniProbProbability.  This
   object gives the probability that a packet is sampled.  The
   probability is equal reverse path forwarding fails are
      matched.

   noResources: packets for every packet.  The given value must that not enough resources are allocated will
      be
   divided matched.

   noRoute: packets that could not be routed further are matched.

   originAS: packets that originate in an autonomous system specified by 4294967295 (=2^32-1), so a value
      the range of 0 means no packet is
   sampled (probability is 0) psampFilterRStateStartAS and a value of 4294967295 means every
   packet is sampled (probability is 1).

5.2.6.  Non-Uniform Probabilistic Sampling

   Capability objects psampFilterRStateStopAS
      are not matched.

   destAS: packets whose destination is in an autonomous system
      specified for by the non-uniform
   probabilistic sampling method. range of psampFilterRStateStartAS and
      psampFilterRStateStopAS are matched.

   The psampSampNonUniProbParamSetTable
   contains two parameters, the psampSampNonUniProbFunction parameter psampFilterRStateIfIndex defaults to 0 if not used.
   The parameters psampFilterRStateStartAS and the
   psampSampNonUniProbFuncParam.  Those two objects point psampFilterRStateStopAS
   default to the
   function that computes the probability that 0 if they are not used.  If a packet is sampled and
   the parameters used for that function. single autonomous system
   number should be matched psampFilterRStateStopAS remains 0.

5.3.  The definition of the Hash Functions Group

   The hash function and its parameters is implementation dependent and beyond group specifies the scope of this document.

5.2.7.  Flow State Sampling

   Capability objects two hash functions defined in
   the sample tech document [I-D.ietf-psamp-sample-tech].  The hash
   functions are not specified for defined here so that they can be referenced by the flow state sampling
   method. hash
   filter above.  The psampSampFlowStateParamSetTable holds two parameters
   pointing to design of the flow state hash function and part of the parameters used by the
   flow state function (psampSampFlowStateFunction and
   psampSampFlowStateFuncParam).  Again the function and its parameters
   are implementation dependent and beyond the scope of this document.

5.2.8.  Match Filtering

   Capability objects are not specified for the match filtering method.
   It contains four parameters in the psampFilterMatchParamSetTable: The
   psampFilterMatchFieldId contain the PSAMP or IPFIX information
   element id defined in the information model [7], [11].  The
   psampFilterMatchStartValue and psampFilterMatchStopValue contain the
   start and stop value to match the content against.  In this way you
   can match e.g., a range x-z of transport protocol ports by specifying
   the field id that represents the transport protocol port and giving x
   as start value and y MIB SHOULD
   be taken as stop value.  If a single value should be
   matched than start and stop value must be equal.  A mask
   psampFilterMatchMask can be applied if it is applicable guideline for the field
   id. vendor specific hash function
   definitions.

   The encoding of the values is dependent on the field id and has
   to be done according to the PSAMP protocol document.

5.2.9.  Hash Filtering

   Capability objects are not specified for the two hash filtering method.
   But according to the sample tech document [2] ten functions IPSX and Bob have both an empty parameter set
   table since they both take now additional parameters are
   defined than those
   specified in the psampFilterHashParamSetTable.  The
   psampFilterHashAddrType specifies the address type to hash - either
   IPv4 or IPv6.  Then psampFilterHashHeaderBits specifies a bit mask
   applied to the packet header selecting the bits to filter method.  Other hash from the
   packet header.  Then psampFilterHashPayloadBytes gives the number functions of
   payload bytes that should be included in the hashing.  The final bits
   that are selected from the payload bytes are masked with the
   psampFilterHashPayloadBits.

   The above parameters specified what gets feed into the hash function.
   The following parameters specify the hash function itself.  The
   psampFilterHashFunction points to a hash function and
   psampFilterHashFuncParam point to a function specific parameter set
   for the hashing function.  The number of input and output bits for
   the hash function is specified with psampFilterHashInputBits and
   psampFilterHashOutputBits.  Finally the output may be masked with the
   psampFilterHashOutputMask.  The results gained by applying all those
   parameters are then compared with the psampFilterHashSelection.  The
   psampFilterHashSelection contains the hash value ranges or single
   hash values that get selected.  The psampFilterHashSelection is a
   human readable string containing only the ASCII characters 0-9, a-f,
   comma(,) and dash(-).

   The two hash functions given in the sample tech document can be
   referenced within this parameter set table and are also contained in
   this PSAMP MIB document.

5.2.10.  Router State Filtering

   Capability objects are not specified for the router state filtering
   method.  The parameter table psampFilterRStateParamSetTable contains
   six parameters to specify the router state to filter against.  The
   first object psampFilterRStateFunction defines one of nine functions
   that may be used as router state.

   other: an other router state function that is not defined here.  Then
      psampFilterRStateVendorFunc points to the implementation specific
      function that is used.

   ingressIf: packets that enter the PSAMP device at the interface
      specified by psampFilterRStateIfIndex are matched.

   egressIf: packets that leave the PSAMP device at the interface
      specified by psampFilterRStateIfIndex are matched.

   aclViolation: packets that violate the access control list are
      matched.

   rpfFailure: packets for which the reverse path forwarding fails are
      matched.

   noResources: packets for which not enough resources are allocated
      will be matched.

   noRoute: packets that could not be routed further are matched.

   originAS: packets that originate in an autonomous system specified by
      the range of psampFilterRStateStartAS and psampFilterRStateStopAS
      are matched.

   destAS: packets whose destination is in an autonomous system
      specified by the range of psampFilterRStateStartAS and
      psampFilterRStateStopAS are matched.

   The parameter psampFilterRStateIfIndex defaults to 0 if not used.

   The parameters psampFilterRStateStartAS and psampFilterRStateStopAS
   default to 0 if they are not used.  If a single autonomous system
   number should be matched psampFilterRStateStopAS remains 0.

5.3.  The Hash Functions

   The hash function subtree specifies the two hash functions defined in
   the sample tech document [2].  The hash functions are defined here so
   that they can be referenced by the hash filter above.  The design of
   the hash function part of the MIB SHOULD be taken as a guideline for
   vendor specific hash function definitions.

   The two hash functions IPSX and Bob have both an empty parameter set
   table since they both take now additional parameters than those
   specified in the hash filter method.  Other hash functions of course
   could specify additional parameters.

5.4.  The Reporting

   The reporting subtree of managed objects provides information on
   collectors to which selected packets (sampled, filtered, or hashed)
   are exported and they allow to configure collectors.  The group
   contains two tables, the psampCollectorTable and the
   psampCollectorGroupTable.

   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 default transport
   protocol is SCTP.

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

5.5.  The Base Associations

   The objects in the Base Asssociations subtree combine all the objects
   needed to model the measurement processes on the PSAMP device.  It
   contains three tables, the psampBaseAssocTable, the
   psampSelectorListTable and the psampTemplateRecordTable.  Each entry
   of the psampBaseAssocTable describes one measurement process on the
   PSAMP device.  The observation point is given as a pointer to another
   object in psampBaseAssoceObservationPoint.  This other object could
   be an entry in the mib-II interface table or any other interface
   point where you can observe packets.  The
   psampBaseAssocTemplateRecordId gives the template record id used to
   link the data gathered in the metering process to an export format
   described in the information model of the PSAMP framework.  The
   collectors where the data packets should be sent are specified by
   their index in the psampCollectorGroupTable.  In addition the process
   id of the metering process and the process id of the exporting
   process used for this instance is saved in the instance table.  Last
   but not least statistical values about the packets observed at the
   observation point, packets dropped during the metering process and
   the reports sent to the collectors are maintained.

   The psampSelectorListTable describes the concatenation of methods for
   a given Base Association.  If concatenation of methods is not
   supported on the PSAMP device the table will hold exactly one entry
   per Base Association.

   The methods used for the metering process of an Base Association can
   be retrieved through the index given in the psampBaseAssocTable.  The
   index of the Base Association table is also the first index in the
   psampSelectorListTable.  So each method entry with the same (first)
   index as the Base Association is used to produce the data record for
   the reporting process.  The second index is the running index for the
   method.  The method itself is represented by a pointer (OID) to a
   parameter set.  The methods are applied in the order given by this
   second index psampSelectorListIndex.  Assume the following 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 parameter 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 parameter 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 applied prior to the
   method psampSampCountBased with parameter set
   psampSampCountBasedParamSetTableEntry.4 for the instance with index
   5.

   In addition every entry in the selector list table contains two
   statistical values: the packets observed at the entry point of the
   method and the packets dropped by the method.

   The psampTemplateRecordTable lists all data template records that are
   used by the PSAMP exporter.  It has two indexes.  The first one is
   the template record id and the second one is just a running index for
   the information element ids listed in the table.  So the
   psampTemplateRecordEntry.4.x will list all information element ids
   used for template record id 4 in the order given by x.

6.  Definition
   PSAMP-MIB DEFINITIONS ::= BEGIN

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

   psampMIB MODULE-IDENTITY
       LAST-UPDATED "200502181600Z"         -- 18 February 2005
       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@netlab.nec.de"
       DESCRIPTION
            "The PSAMP MIB defines managed objects for packet sampling
            and filtering techniques for IP packet selection. These
            objects provide information about managed nodes supporting
            packet sampling, including packet sampling capabilities,
            configuration and statistics.  They also allow to configure
            packet sampling and filtering concerning the observation
            point at which packets are sampled, the packet selections
            methods used for sampling and filtering, and the collector
            to which packet samples are exported.

            Copyright (C) The Internet Society (2005).  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     "200502181600Z"         -- 18 February 2005
        DESCRIPTION
            "Initial version, published as RFC yyyy."
   -- RFC Ed.: replace yyyy with actual RFC number & remove this notice

       ::= { mib-2 4937 }
   -- 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 available on the PSAMP
                 device
             notAvailable (2) - the method is not available on the
                 PSAMP device"
       SYNTAX      INTEGER {
                       available(1),
                       notAvailable(2)
                   }

   -- Top level structure of the MIB

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

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

   psampSamplingMethods OBJECT IDENTIFIER ::= { psampObjects 1 }

   --==================================================================
   --* Method 0: Selecting All Packets
   --==================================================================

   psampSelectAll OBJECT IDENTIFIER ::= { psampSamplingMethods 0 }
   psampSelectAllAvail OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the availability of the trivial
            method of selecting all packets."
       DEFVAL { notAvailable }
       ::= { 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
           "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
           "This object indicates the maximum number that can be
            specified for the sampling interval. Sampling means, that
            all packets that arrive in this interval are selected.
            The interval is given in number of packets."
       ::= { psampSampCountBasedCap 1 }

   psampSampCountBasedMinSpacing OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "packets"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the minimum number that can be
            specified for the sampling spacing. The spacing parameter
            defines the spacing number of packets between the end of
            one sampling interval and the start of the next
            succeeding interval."
       ::= { 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 }
       ::= { psampSampCountBasedParamSetTable 1 }

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

   psampSampCountBasedIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of an entry
            in this parameter set table.

            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.

            It is used in entries of the psampSelectorListTable as
            reference to this method and its associated parameter set."
       ::= { psampSampCountBasedParamSetEntry 1 }

   psampSampCountBasedInterval OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "This object specifies the sampling interval for systematic
           count-based sampling. Sampling means, that all packets that
           arrive in this interval are selected. The interval is
           given in number of packets."
       REFERENCE
           "PSAMP-SAMPLE-TECH, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampSampCountBasedParamSetEntry 2 }

   psampSampCountBasedSpacing OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "This object specifies the sampling spacing for systematic
            count-based sampling. The spacing parameter defines the
            spacing number of packets between the end of one sampling
            interval and the start of the next succeeding interval."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampSampCountBasedParamSetEntry 3 }

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

   --==================================================================
   --* Method 2: Systematic Time-based Sampling
   --==================================================================
   psampSampTimeBased OBJECT IDENTIFIER ::= { psampSamplingMethods 2 }

   psampSampTimeBasedAvail OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the availability of systematic
            time-based sampling at the managed node."
       DEFVAL { notAvailable }
       ::= { psampSampTimeBased 1 }

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

   psampSampTimeBasedCap OBJECT IDENTIFIER
       ::= { psampSampTimeBased 2 }

   psampSampTimeBasedMaxInterval OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "micro-seconds"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the maximum number that can be
            specified for the sampling interval. Sampling means, that
            all packets that arrive in an interval are selected. The
            interval is given in micro-seconds."
       ::= { psampSampTimeBasedCap 1 }

   psampSampTimeBasedMinSpacing OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "micro-seconds"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the minimum number that can be
            specified for the sampling spacing. The spacing parameter
            defines the spacing in micro-seconds between the end of
            one sampling interval and the start of the next
            succeeding interval."
       ::= { psampSampTimeBasedCap 2 }

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

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

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

   PsampSampTimeBasedParamSetEntry ::=
       SEQUENCE {
           psampSampTimeBasedIndex     Integer32,
           psampSampTimeBasedInterval  Unsigned32,
           psampSampTimeBasedSpacing   Unsigned32,
           psampSampTimeBasedRowStatus RowStatus
       }

   psampSampTimeBasedIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of an entry
            in this parameter set table.

            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.

            It is used in entries of the psampSelectorListTable as
            reference to this method and its associated parameter set."
       ::= { psampSampTimeBasedParamSetEntry 1 }

   psampSampTimeBasedInterval OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "micro-seconds"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "This object specifies a sampling interval for systematic
           time-based sampling. Sampling means, that all packets that
           arrive in this interval are selected. The interval is
           given in micro-seconds."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampSampTimeBasedParamSetEntry 2 }

   psampSampTimeBasedSpacing OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "micro-seconds"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "This object specifies a sampling spacing for systematic
            time-based sampling. The spacing parameter defines the
            spacing in micro-seconds between the end of one sampling
            interval and the start of the next succeeding interval."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampSampTimeBasedParamSetEntry 3 }

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

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

   psampSampRandOutOfN OBJECT IDENTIFIER ::= { psampSamplingMethods 3 }

   psampSampRandOutOfNAvail OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the availability of random
            n-out-of-N sampling at the managed node."
       DEFVAL { notAvailable }
       ::= { psampSampRandOutOfN 1 }

   -- Capabilities ++++++++++++++++++++++++++++++++++++++++++++++++++++
   psampSampRandOutOfNCap OBJECT IDENTIFIER
       ::= { psampSampRandOutOfN 2 }

   psampSampRandOutOfNMaxPopulation OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "packets"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the maximum number of packets that
           can be specified for the population size."
       ::= { psampSampRandOutOfNCap 1 }

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

   psampSampRandOutOfNParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampSampRandOutOfNParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
          "This table lists configurations of random n-out-of-N
           sampling.  A parameter set describing a configuration
           contains a two parameters: the population size and the
           sample size."
       ::= { psampSampRandOutOfN 3 }

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

   PsampSampRandOutOfNParamSetEntry ::=
       SEQUENCE {
           psampSampRandOutOfNIndex      Integer32,
           psampSampRandOutOfNPopulation Unsigned32,
           psampSampRandOutOfNSample     Unsigned32,
           psampSampRandOutOfNRowStatus  RowStatus
       }

   psampSampRandOutOfNIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of an entry
            in this parameter set table.

            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.

            It is used in entries of the psampSelectorListTable as
            reference to this method and its associated parameter set."
       ::= { psampSampRandOutOfNParamSetEntry 1 }

   psampSampRandOutOfNPopulation OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "This object specifies the number of packets in the parent
          population of the sampling algorithm."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampSampRandOutOfNParamSetEntry 2 }

   psampSampRandOutOfNSample OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "This object specifies the number of packets that are
            sampled from the parent population of the sampling
            algorithm."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampSampRandOutOfNParamSetEntry 3 }

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

   --==================================================================
   --* Method 4: Uniform Probabilistic Sampling
   --==================================================================

   psampSampUniProb OBJECT IDENTIFIER ::= { psampSamplingMethods 4 }

   psampSampUniProbAvail OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the availability of uniform
            probabilistic sampling at the managed node."
       DEFVAL { notAvailable }
       ::= { psampSampUniProb 1 }

   psampSampUniProbCap OBJECT IDENTIFIER
       ::= { psampSampUniProb 2 }

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

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

   psampSampUniProbParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampSampUniProbParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of uniform probabilistic
            sampling.  A parameter set describing a configuration
            contains a single parameter only: the sampling
            probability."
       ::= { psampSampUniProb 3 }

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

   PsampSampUniProbParamSetEntry ::=
       SEQUENCE {
           psampSampUniProbIndex       Integer32,
           psampSampUniProbProbability Unsigned32,
           psampSampUniProbRowStatus   RowStatus
       }

   psampSampUniProbIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of an entry
            in this parameter set table.

            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.

            It is used in entries of the psampSelectorListTable as
            reference to this method and its associated parameter set."
       ::= { psampSampUniProbParamSetEntry 1 }

   psampSampUniProbProbability OBJECT-TYPE
       SYNTAX      Unsigned32 (0..4294967295)
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "This object gives the probability that a packet is sampled.
           The probability is equal for every packet. The given value
           must be divided by 4294967295 (=2^32-1), so a value of 0
           means no packet is sampled (probability is 0) and a value of
           4294967295 means every packet is sampled (probability is
           1)."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampSampUniProbParamSetEntry 2 }

   psampSampUniProbRowStatus OBJECT-TYPE
       SYNTAX      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
           "This object indicates the availability of 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 non-uniform
            probabilistic sampling.  A parameter set describing a
            configuration contains two parameter: a pointer to a
            probability function and a pointer to an associated
            parameter set."
       ::= { 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,
           psampSampNonUniProbFuncParam OBJECT IDENTIFIER,
           psampSampNonUniProbRowStatus RowStatus
       }

   psampSampNonUniProbIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of an entry
            in this parameter set table.

            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.

            It is used in entries of the psampSelectorListTable as
            reference to this method and its associated parameter set."
       ::= { psampSampNonUniProbParamSetEntry 1 }

   psampSampNonUniProbFunction OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "This object specifies the function that is used to compute
            the probability for sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampSampNonUniProbParamSetEntry 2 }

   psampSampNonUniProbFuncParam OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "This object specifies the parameters set for the function
            specified with psampSampNonUniProbFunction that is used to
            compute the probability for sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampSampNonUniProbParamSetEntry 3 }

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

   --==================================================================
   --* Method 6: Flow State Sampling
   --==================================================================
   psampSampFlowState OBJECT IDENTIFIER ::= { psampSamplingMethods 6 }

   psampSampFlowStateAvail OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the availability of flow state
            sampling at the managed node."
       DEFVAL { notAvailable }
       ::= { psampSampFlowState 1 }

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

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

   psampSampFlowStateParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampSampFlowStateParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of flow state sampling.  A
            parameter set describing a configuration contains two
            parameter: a pointer to a flow state function and a pointer
            to an associated parameter set."
       ::= { psampSampFlowState 3 }

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

   PsampSampFlowStateParamSetEntry ::=
       SEQUENCE {
           psampSampFlowStateIndex     Integer32,
           psampSampFlowStateFunction  OBJECT IDENTIFIER,
           psampSampFlowStateFuncParam OBJECT IDENTIFIER,
           psampSampFlowStateRowStatus RowStatus
       }

   psampSampFlowStateIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of an entry
            in this parameter set table.

            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.

            It is used in entries of the psampSelectorListTable as
            reference to this method and its associated parameter set."
       ::= { psampSampFlowStateParamSetEntry 1 }

   psampSampFlowStateFunction OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "This object specifies the function that is used to check
            the flow state for sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampSampFlowStateParamSetEntry 2 }

   psampSampFlowStateFuncParam OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "This object specifies the parameter set for the function
            specified with psampSampFlowStateFunction that is used to
            determine the packet that is to be sampled."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampSampFlowStateParamSetEntry 3 }

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

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

   psampFilteringMethods        OBJECT IDENTIFIER ::= { psampObjects 2 }

   --==================================================================
   --* Method 0: Match filtering
   --==================================================================

   psampFilterMatch OBJECT IDENTIFIER ::= { psampFilteringMethods 0 }

   psampFilterMatchAvail OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the availability of match filtering
            at the managed node."
       DEFVAL { notAvailable }
       ::= { psampFilterMatch 1 }

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

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

   psampFilterMatchParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampFilterMatchParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of match filtering. The
            match filtering is based on the IPFIX/PSAMP Information
            Elements. The parameter set contains the Information
            Element Id, a value or value range and a mask."
       ::= { psampFilterMatch 3 }

   psampFilterMatchParamSetEntry OBJECT-TYPE
       SYNTAX      PsampFilterMatchParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the psampFilterMatchParamSetTable."
       INDEX { psampFilterMatchIndex }
       ::= { psampFilterMatchParamSetTable 1 }

   PsampFilterMatchParamSetEntry course
   could specify additional parameters.

6.  Definition

   PSAMP-MIB DEFINITIONS ::=
       SEQUENCE {
           psampFilterMatchIndex         Integer32,
           psampFilterMatchInfoElementId BEGIN

   IMPORTS
       MODULE-IDENTITY, OBJECT-TYPE, Integer32,
           psampFilterMatchStartValue    OCTET STRING,
           psampFilterMatchEndValue      OCTET STRING,
           psampFilterMatchMask          OCTET STRING,
           psampFilterMatchRowStatus     RowStatus
       }

   psampFilterMatchIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of an entry
            in this parameter set table.

            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.

            It is used in entries of the psampSelectorListTable as
            reference to this method and its associated parameter set."
       ::= { psampFilterMatchParamSetEntry 1 }

   psampFilterMatchInfoElementId OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The id of the information element that is encoded as the
            InfoElementId defined in the IPFIX/PSAMP Information
            Models."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1, ipfix and
            psamp info model!!" Unsigned32, mib-2
           FROM SNMPv2-SMI                  -- Editor Note: get reference right!
       ::= { psampFilterMatchParamSetEntry 2 }

   psampFilterMatchStartValue OBJECT-TYPE
       SYNTAX      OCTET STRING
       MAX-ACCESS  read-create
       STATUS      current RFC2578
       TEXTUAL-CONVENTION, DateAndTime, DisplayString, RowStatus,
       TruthValue
           FROM SNMPv2-TC                   -- RFC2579
       MODULE-COMPLIANCE, OBJECT-GROUP
           FROM SNMPv2-CONF                 -- RFC2580
       InterfaceIndexOrZero
           FROM IF-MIB                      -- RFC2863
       InetAddressType, InetAddress, InetAutonomousSystemNumber
           FROM INET-ADDRESS-MIB            -- RFC3291
       PsampMethodAvailability, ipfixMIB, ipfixGroupMetering,
       ipfixGroupReporting
           FROM IPFIX-EXPORTER-MIB;

   psampMIB MODULE-IDENTITY
       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@netlab.nec.de"
       DESCRIPTION
           "The value of the PSAMP MIB defines managed objects for packet sampling.
            These objects provide information element or the start about managed nodes
            supporting packet sampling, including packet sampling
            capabilities, configuration and statistics.

            Copyright (C) The Internet Society (2006).  This version
            of the
            value range. If psampFilterMatchEndValue is defined then this value MIB module is the start value part of a value range. If
            psampFilterMatchMask is defined then
            psampFilterMatchEndValue is ignored. In this case the
            packet is selected if the masked value exactly matches the
            start value psampFilterMatchStartValue. The data type and
            its encoding is RFC yyyy;  see the same as in PSAMP-PROTO."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1, PROTO!!" RFC
            itself for full legal notices."
   -- Editor Note: get reference right!
       ::= { psampFilterMatchParamSetEntry 3 }

   psampFilterMatchEndValue OBJECT-TYPE
       SYNTAX      OCTET STRING
       MAX-ACCESS  read-create
       STATUS      current RFC Ed.: replace yyyy with actual RFC number & remove this notice

        --  Revision history
        DESCRIPTION
           "The final value of a value range. It should be equal to
           it's default value (''H) if a single value should be
           encoded. It is ignored if psampFilterMatchMask is defined.
           The data type and its encoding is the same
            "Initial version, published as in
           PSAMP-PROTO."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1, PROTO!!" RFC yyyy."
   -- Editor Note: get reference right!
       DEFVAL      { ''H } RFC Ed.: replace yyyy with actual RFC number & remove this notice

       ::= { psampFilterMatchParamSetEntry 4 ipfixMIB 3 }

   psampFilterMatchMask OBJECT-TYPE
       SYNTAX      OCTET STRING
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The selected value

   -- Top level structure of the given information element is
           masked with this value. The resulting value is compared to
           psampFilterMatchStartValue and the packet is selected if
           they match. If psampFilterMatchEndValue and
           psampFilterMatchMask are defined at the same time
           psampFilterMatchEndValue is ignored. Note that a mask does
           not make sense for all information elements and if it is
           specified the mask has the same data type and encoding as
           the information element referenced by the
           psampFilterMatchInfoElementId."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1, PROTO!!" MIB

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

   --==================================================================
   -- Editor Note: get reference right!
       DEFVAL Packet selection sampling methods group of objects
   --==================================================================

   psampSamplingMethods OBJECT IDENTIFIER ::= { ''H psampObjects 1 }

   --==================================================================
   --* Method 0: Selecting All Packets
   --==================================================================

   psampSelectAll OBJECT IDENTIFIER ::= { psampFilterMatchParamSetEntry 5 psampSamplingMethods 0 }

   psampFilterMatchRowStatus

   psampSelectAllAvail OBJECT-TYPE
       SYNTAX      RowStatus      PsampMethodAvailability
       MAX-ACCESS  read-create  read-only
       STATUS      current
       DESCRIPTION
           "The status of
           "When retrieved, this row object indicates the availability of
            the table." trivial method of selecting all packets."
       DEFVAL { available }
       ::= { psampFilterMatchParamSetEntry 6 psampSelectAll 1 }

   --==================================================================
   --* Method 1: Hash filtering Systematic Count-based Sampling
   --==================================================================

   psampFilterHash

   psampSampCountBased OBJECT IDENTIFIER ::= { psampFilteringMethods psampSamplingMethods 1 }

   psampFilterHashAvail

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

   psampFilterHashCapabilities

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

   psampSampCountBasedCap OBJECT IDENTIFIER
       ::= { psampFilterHash psampSampCountBased 2 }

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

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

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

   psampFilterHashParamSetTable

   psampSampCountBasedParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampFilterHashParamSetEntry
                   PsampSampCountBasedParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of hash filtering. systematic count-based
            packet sampling.  A parameter set describing a
            configuration contains ten
            parameter describing the hash function, the input bits feed
            into two parameters: the hash function sampling
            interval length and the output of the function." spacing."
       ::= { psampFilterHash psampSampCountBased 3 }

   psampFilterHashParamSetEntry
   psampSampCountBasedParamSetEntry OBJECT-TYPE
       SYNTAX      PsampFilterHashParamSetEntry      PsampSampCountBasedParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the psampFilterHashParamSetTable."
       INDEX { psampFilterHashIndex }
       ::= { psampFilterHashParamSetTable 1 }
   PsampFilterHashParamSetEntry ::=
       SEQUENCE {
           psampFilterHashIndex        Integer32,
           psampFilterHashAddrType     InetAddressType,
           psampFilterHashHeaderBits   OCTET STRING,
           psampFilterHashPayloadBytes Integer32,
           psampFilterHashPayloadBits  OCTET STRING,
           psampFilterHashFunction     OBJECT IDENTIFIER,
           psampFilterHashFuncParam    OBJECT IDENTIFIER,
           psampFilterHashInputBits    Integer32,
           psampFilterHashOutputBits
       DESCRIPTION
           "Defines an entry in the psampSampCountBasedParamSetTable."
       INDEX { psampSampCountBasedIndex }
       ::= { psampSampCountBasedParamSetTable 1 }

   PsampSampCountBasedParamSetEntry ::=
       SEQUENCE {
           psampSampCountBasedIndex     Integer32,
           psampFilterHashOutputMask   OCTET STRING,
           psampFilterHashSelection    DisplayString,
           psampFilterHashRowStatus
           psampSampCountBasedInterval  Unsigned32,
           psampSampCountBasedSpacing   Unsigned32,
           psampSampCountBasedRowStatus RowStatus
       }

   psampFilterHashIndex

   psampSampCountBasedIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier index of an entry
            in this parameter set table.

            The value is expected to remain constant at least from one
            re-initialization of the entity's network management system
            to in the next re-initialization.
            psampSampCountBasedParamSetTable.  It is used in entries of
            the psampSelectorListTable psampInstanceTable as reference to this method and its associated parameter set."
       ::= { psampFilterHashParamSetEntry psampSampCountBasedParamSetEntry 1 }

   psampFilterHashAddrType

   psampSampCountBasedInterval OBJECT-TYPE
       SYNTAX      InetAddressType      Unsigned32
       UNITS       "number of packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The address type the hash function is applied to (either
            IPv4 or IPv6 packets). If a hash function applies to both
            IPv4 and IPv6 addresses two entries in
           "When retrieved, this table are
            needed." object specifies the sampling interval
            for systematic count-based sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt,
           "PSAMP-SAMPLE-TECH, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampFilterHashParamSetEntry psampSampCountBasedParamSetEntry 2 }

   psampFilterHashHeaderBits

   psampSampCountBasedSpacing OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE (40))      Unsigned32
       UNITS       "number of packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The
           "When retrieved, this object specifies the header bits of the layer 3 header
            used sampling spacing
            for hashing. The size is 40 bytes but when
            psampFilterHashAddrType is IPv4 then only the first 20
            bytes are used." systematic count-based sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt,
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampFilterHashParamSetEntry psampSampCountBasedParamSetEntry 3 }

   psampFilterHashPayloadBytes

   psampSampCountBasedRowStatus OBJECT-TYPE
       SYNTAX      Integer32 (0..2147483647)      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The number status of bytes this row of payload used as input to the hash
            function."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
   -- Editor Note: get reference right! table."
       ::= { psampFilterHashParamSetEntry psampSampCountBasedParamSetEntry 4 }

   psampFilterHashPayloadBits

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

   psampSampTimeBased OBJECT IDENTIFIER ::= { psampSamplingMethods 2 }

   psampSampTimeBasedAvail OBJECT-TYPE
       SYNTAX      OCTET STRING      PsampMethodAvailability
       MAX-ACCESS  read-create  read-only
       STATUS      current
       DESCRIPTION
           "The
           "When retrieved, this object specifies the payload bits used for hashing. The
            size depends on indicates the value availability of psampFilterHashPayloadBytes."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
            systematic time-based sampling at the managed node."
       DEFVAL { notAvailable }
       ::= { psampSampTimeBased 1 }

   -- Editor Note: get reference right! Capabilities ++++++++++++++++++++++++++++++++++++++++++++++++++++

   psampSampTimeBasedCap OBJECT IDENTIFIER
       ::= { psampFilterHashParamSetEntry 5 psampSampTimeBased 2 }

   psampFilterHashFunction

   psampSampTimeBasedMaxInterval OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER      Unsigned32
       UNITS       "microseconds"
       MAX-ACCESS  read-create  read-only
       STATUS      current
       DESCRIPTION
           "This
           "When retrieved, this object specifies indicates the hash function executed by maximum number
            that can be specified for the
            current filtering method." sampling interval."
       ::= { psampFilterHashParamSetEntry 6 psampSampTimeBasedCap 1 }

   psampFilterHashFuncParam

   psampSampTimeBasedMaxSpacing OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER      Unsigned32
       UNITS       "microseconds"
       MAX-ACCESS  read-create  read-only
       STATUS      current
       DESCRIPTION
           "This
           "When retrieved, this object specifies indicates the parameters used in addition to
            those maximum number
            that can be specified in this table." for the sampling spacing."
       ::= { psampFilterHashParamSetEntry 7 psampSampTimeBasedCap 2 }

   psampFilterHashInputBits

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

   psampSampTimeBasedParamSetTable OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)      SEQUENCE OF
                   PsampSampTimeBasedParamSetEntry
       MAX-ACCESS  read-create  not-accessible
       STATUS      current
       DESCRIPTION
           "The number
           "This table lists configurations of bits used as input key to systematic time-based
            packet sampling. A parameter set describing a configuration
            contains two parameters: the hash function.
            Usually this should be in sampling interval length and
            the form of 2^x."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
   -- Editor Note: get reference right! spacing."
       ::= { psampFilterHashParamSetEntry 8 psampSampTimeBased 3 }

   psampFilterHashOutputBits

   psampSampTimeBasedParamSetEntry OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)      PsampSampTimeBasedParamSetEntry
       MAX-ACCESS  read-create  not-accessible
       STATUS      current
       DESCRIPTION
           "The number of bits that form the output value of
           "Defines an entry in the hash
            function."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, Section 5.1"
   -- Editor Note: get reference right! psampSampTimeBasedParamSetTable."
       INDEX { psampSampTimeBasedIndex }
       ::= { psampFilterHashParamSetEntry 9 psampSampTimeBasedParamSetTable 1 }

   psampFilterHashOutputMask

   PsampSampTimeBasedParamSetEntry ::=
       SEQUENCE {
           psampSampTimeBasedIndex     Integer32,
           psampSampTimeBasedInterval  Unsigned32,
           psampSampTimeBasedSpacing   Unsigned32,
           psampSampTimeBasedRowStatus RowStatus
       }

   psampSampTimeBasedIndex OBJECT-TYPE
       SYNTAX      OCTET STRING      Integer32 (1..2147483647)
       MAX-ACCESS  read-create  not-accessible
       STATUS      current
       DESCRIPTION
           "The mask applied to the output bits of the hash function.
            If less hash values are needed the number index of hashes can be
            reduced by masking this parameter set in the output value. The size
            psampSampTimeBasedParameterSetTable.  It is dependent
            on the number used in entries
            of output bits. If the output mask is empty
            then no mask is applied." psampInstanceTable as reference to this parameter
            set."
       ::= { psampSampTimeBasedParamSetEntry 1 }
   psampSampTimeBasedInterval OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "microseconds"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
          "When retrieved, this object specifies a sampling interval
           for systematic time-based sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt,
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       DEFVAL      { ''H }
       ::= { psampFilterHashParamSetEntry 10 psampSampTimeBasedParamSetEntry 2 }

   psampFilterHashSelection

   psampSampTimeBasedSpacing OBJECT-TYPE
       SYNTAX      DisplayString      Unsigned32
       UNITS       "microseconds"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "This
           "When retrieved, this object represents the hash values that select a
            packet. It is represented in specifies a human readable form. The
            only allowed characters are [0-9a-f,-x]. A single hash
            value is represented by its decimal ASCII notation or if
            prefixed with 0x by its hexadecimal ASCII notation. A range
            can be given by hash_value - hash_value and several single
            values or ranges are separated by , (comma). The ASCII
            string is defined as follows:

              selections := selection | selections,selection
              selection  := range | value
              range      := value-value
              value      := 0x[0-9,a-f]* | [1-9][0-9]*

            So, if you with to select hash values 0, 5 - 10 and 250-255
            you could specify: 0,5-10,0xfa-0xff" sampling spacing
            for systematic time-based sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt,
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampFilterHashParamSetEntry 11 psampSampTimeBasedParamSetEntry 3 }

   psampFilterHashRowStatus

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

   --==================================================================
   --* Method 2: Router State filtering 3: Random n-out-of-N Sampling
   --==================================================================

   psampFilterRState

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

   psampFilterRStateAvail

   psampSampRandOutOfNAvail OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This
           "When retrieved, this object indicates the availability of router state
            filtering
            random n-out-of-N sampling at the managed node."
       DEFVAL { notAvailable }
       ::= { psampFilterRState psampSampRandOutOfN 1 }

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

   psampSampRandOutOfNCap OBJECT IDENTIFIER
       ::= { psampSampRandOutOfN 2 }

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

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

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

   psampFilterRStateParamSetTable

   psampSampRandOutOfNParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampFilterRStateParamSetEntry
                   PsampSampRandOutOfNParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations of router state filtering. random n-out-of-N
            sampling.  A parameter set describing a configuration
            contains six
            parameters: the router state function executed, and then
            some parameters that are used dependent on a single parameter only: the router state
            function, like interface index or autonomous system number
            range." sampling rate."
       ::= { psampFilterRState psampSampRandOutOfN 3 }

   psampFilterRStateParamSetEntry

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

   PsampFilterRStateParamSetEntry
   PsampSampRandOutOfNParamSetEntry ::=
       SEQUENCE {
           psampFilterRStateIndex
           psampSampRandOutOfNIndex      Integer32,
           psampFilterRStateFunction   INTEGER,
           psampFilterRStateNegate     TruthValue,
           psampFilterRStateIfIndex    InterfaceIndexOrZero,
           psampFilterRStateStartAS    InetAutonomousSystemNumber,
           psampFilterRStateEndAS      InetAutonomousSystemNumber,
           psampFilterRStateVendorFunc OBJECT IDENTIFIER,
           psampFilterRStateRowStatus
           psampSampRandOutOfNPopulation Unsigned32,
           psampSampRandOutOfNSample     Unsigned32,
           psampSampRandOutOfNRowStatus  RowStatus
       }

   psampFilterRStateIndex

   psampSampRandOutOfNIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier index of an entry
            in this parameter set table.

            The value is expected to remain constant at least from one
            re-initialization of the entity's network management system
            to in the next re-initialization.
            psampSampRandOutOfNParamSetTable.  It is used in entries of
            the psampSelectorListTable psampInstanceTable as reference to this method and its associated parameter set."
       ::= { psampFilterRStateParamSetEntry psampSampRandOutOfNParamSetEntry 1 }

   psampFilterRStateFunction

   psampSampRandOutOfNPopulation OBJECT-TYPE
       SYNTAX      INTEGER {
                       other        (1),
                       ingressIf    (2),
                       egressIf     (3),
                       aclViolation (4),
                       rpfFailure   (5),
                       noResources  (6),
                       noRoute      (7),
                       originAS     (8),
                       destAS       (9)
                   }      Unsigned32
       UNITS       "packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "This
          "When retrieved, this object indicates which function is applied to specifies the
            router state. The validity number of elements
           in the following objects depends
            on parent population of the function selected here. The psampFilterRStateIfIndex
            is only valid if sampling algorithm."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampSampRandOutOfNParamSetEntry 2 }

   psampSampRandOutOfNSample OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "When retrieved, this object specifies the function is ingressIf or egressIf. The
            psampFilterRstateStartAS/StopAS objects number of
            elements that are only valid if sampled from the function is originAS or destAS. The
            psampFilterRStateVendor object is only valid if parent population of the function
            other is chosen; in that case it points to a vendor specific
            function."
            sampling algorithm."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt,
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampFilterRStateParamSetEntry 2 psampSampRandOutOfNParamSetEntry 3 }

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

   psampFilterRStateNegate

   --==================================================================
   --* Method 4: Uniform Probabilistic Sampling
   --==================================================================

   psampSampUniProb OBJECT IDENTIFIER ::= { psampSamplingMethods 4 }

   psampSampUniProbAvail OBJECT-TYPE
       SYNTAX      TruthValue      PsampMethodAvailability
       MAX-ACCESS  read-create  read-only
       STATUS      current
       DESCRIPTION
           "If set to true
           "When retrieved, this object will negate indicates the output availability of
            random uniform probabilistic sampling at the
            psampFilterRStateFunction." managed node."
       DEFVAL { false notAvailable }
       ::= { psampFilterRStateParamSetEntry 3 psampSampUniProb 1 }

   psampFilterRStateIfIndex

   psampSampUniProbCap OBJECT IDENTIFIER
       ::= { psampSampUniProb 2 }

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

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

   psampSampUniProbParamSetTable OBJECT-TYPE
       SYNTAX      InterfaceIndexOrZero      SEQUENCE OF
                   PsampSampUniProbParamSetEntry
       MAX-ACCESS  read-create  not-accessible
       STATUS      current
       DESCRIPTION
           "Used if the function is egressIf or ingressIf. Selects
            the packet if the egressIf/ingressIf is the same as the
            interface indicated by this object. If the object is not
            used it
           "This table lists configurations of random probabilistic
            sampling.  A parameter set describing a configuration
            contains a value of 0."
       DEFVAL      { 0 } single parameter only: the sampling rate."
       ::= { psampFilterRStateParamSetEntry 4 psampSampUniProb 3 }

   psampFilterRStateStartAS

   psampSampUniProbParamSetEntry OBJECT-TYPE
       SYNTAX      InetAutonomousSystemNumber      PsampSampUniProbParamSetEntry
       MAX-ACCESS  read-create  not-accessible
       STATUS      current
       DESCRIPTION
           "Used if the function is originAS or destAS. Selects the
            packet if the AS Number lies
           "Defines an entry in the range of
            psampFilterRStateStartAS and psampFilterRStateEndAS. If
            the object is not used it default to 0."
       DEFVAL psampSampUniProbParamSetTable."
       INDEX { 0 psampSampUniProbIndex }
       ::= { psampFilterRStateParamSetEntry 5 psampSampUniProbParamSetTable 1 }
   PsampSampUniProbParamSetEntry ::=
       SEQUENCE {
           psampSampUniProbIndex       Integer32,
           psampSampUniProbProbability Unsigned32,
           psampSampUniProbRowStatus   RowStatus
       }

   psampFilterRStateEndAS

   psampSampUniProbIndex OBJECT-TYPE
       SYNTAX      InetAutonomousSystemNumber      Integer32 (1..2147483647)
       MAX-ACCESS  read-create  not-accessible
       STATUS      current
       DESCRIPTION
           "Used if the function is originAS or destAS. Selects the
            packet if the AS Number lies in the range
          "The index of
            psampFilterRStateStartAS and psampFilterRStateStopAS. If
            psampFilterRStateStartAS is not 0 and this object is 0 then parameter set in the range
           psampSampUniProbParameterSetTable.  It is single value, the value given used in
            psampFilterRStateStartAS."
       DEFVAL      { 0 } entries of
           the psampInstanceTable as reference to this parameter set."
       ::= { psampFilterRStateParamSetEntry 6 psampSampUniProbParamSetEntry 1 }

   psampFilterRStateVendorFunc

   psampSampUniProbProbability OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER      Unsigned32 (0..4294967295)
       UNITS       "packets"
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "Used if the function is any other than those defined here.
            In
           "When retrieved, this case a vendor specific router state function is
            used. If the object is not used it defaults to
            psampFilterRState."
       DEFVAL      { psampFilterRState } specifies the number of
            elements in the parent population of the sampling
            algorithm."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampFilterRStateParamSetEntry 7 psampSampUniProbParamSetEntry 2 }
   psampFilterRStateRowStatus

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

   --==================================================================
   -- Hash Function Group
   --==================================================================

   psampHashFunctions    OBJECT IDENTIFIER ::= { psampObjects psampSampUniProbParamSetEntry 3 }

   --==================================================================
   --* Hash Function 0: IPSX Method 5: Non-Uniform Probabilistic Sampling
   --==================================================================

   psampHashIPSX

   psampSampNonUniProb OBJECT IDENTIFIER ::= { psampHashFunctions 0 psampSamplingMethods 5 }

   psampHashIPSXAvail

   psampSampNonUniProbAvail OBJECT-TYPE
       SYNTAX      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This
           "When retrieved, this object indicates the availability of the IPSX hash
            function
            random non-uniform probabilistic sampling at the managed
            node."
       DEFVAL { notAvailable }
       ::= { psampHashIPSX psampSampNonUniProb 1 }

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

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

   psampHashIPSXParamSetTable

   psampSampNonUniProbParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampHashIPSXParamSetEntry
                   PsampSampNonUniProbParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations the IPSX hash function.
            Since this hash function takes no additional parameters the
            table if available of random probabilistic
            sampling.  A parameter set describing a configuration
            contains only one entry indicating that
            the functions exists and can be referenced by a single parameter only: the
            psampFilterHashParamSetTable." sampling rate."
       ::= { psampHashIPSX psampSampNonUniProb 3 }

   psampHashIPSXParamSetEntry

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

   PsampHashIPSXParamSetEntry

   PsampSampNonUniProbParamSetEntry ::=
       SEQUENCE {
           psampSampNonUniProbIndex     Integer32,
           psampSampNonUniProbFunction  OBJECT IDENTIFIER,
           psampSampNonUniProbFuncParam 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
            psampSampNonUniProbParameterSetTable. It is used in entries
            of the psampInstanceTable as reference to this parameter
            set."
       ::= { psampSampNonUniProbParamSetEntry 1 }

   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 probability for sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::=
       SEQUENCE {
           psampHashIPSXIndex     Integer32,
           psampHashIPSXRowStatus RowStatus psampSampNonUniProbParamSetEntry 2 }

   psampHashIPSXIndex

   psampSampNonUniProbFuncParam OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)      OBJECT IDENTIFIER
       MAX-ACCESS  not-accessible  read-create
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of an entry
            in
           "When retrieved, this object specifies the parameter set table.

            The value is expected to remain constant at least from one
            re-initialization of the entity's network management system
            to for
            the next re-initialization.

            It function specified with psampSampNonUniProbFunction
            that is used in entries of to compute the psampFilterHashParamSetTable
            as probability for sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference to this method and its associated parameter
            set." right!
       ::= { psampHashIPSXParamSetEntry 1 psampSampNonUniProbParamSetEntry 3 }

   psampHashIPSXRowStatus

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

   --==================================================================
   --* Hash Function 1: Bob Method 6: Flow State Sampling
   --==================================================================

   psampHashBob

   psampSampFlowState OBJECT IDENTIFIER ::= { psampHashFunctions 1 psampSamplingMethods 6 }

   psampHashBobAvail

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

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

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

   psampHashBobParamSetTable

   psampSampFlowStateParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampHashBobParamSetEntry
                   PsampSampFlowStateParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations the Bob hash function.
            Since this hash function takes no additional parameters the
            table if available of random probabilistic
            sampling.  A parameter set describing a configuration
            contains only one entry indicating that
            the functions exists and can be referenced by a single parameter only: the
            psampFilterHashParamSetTable." sampling rate."
       ::= { psampHashBob psampSampFlowState 3 }

   psampHashBobParamSetEntry

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

   PsampHashBobParamSetEntry

   PsampSampFlowStateParamSetEntry ::=
       SEQUENCE {
           psampSampFlowStateIndex     Integer32,
           psampSampFlowStateFunction  OBJECT IDENTIFIER,
           psampSampFlowStateFuncParam OBJECT IDENTIFIER,
           psampSampFlowStateRowStatus RowStatus
       }

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

   psampSampFlowStateFunction OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "When retrieved, this object specifies the function that is
            used to check the flow state for sampling."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::=
       SEQUENCE {
           psampHashBobIndex     Integer32,
           psampHashBobRowStatus RowStatus psampSampFlowStateParamSetEntry 2 }

   psampHashBobIndex

   psampSampFlowStateFuncParam OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)      OBJECT IDENTIFIER
       MAX-ACCESS  not-accessible  read-create
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of an entry
            in
           "When retrieved, this object specifies the parameter set table.

            The value is expected to remain constant at least from one
            re-initialization of the entity's network management system
            to for
            the next re-initialization.

            It function specified with psampSampFlowStateFunction that
            is used in entries of to determine the psampFilterHashParamSetTable
            as reference packet that is to this method and its associated parameter
            set." be sampled."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampHashBobParamSetEntry 1 psampSampFlowStateParamSetEntry 3 }

   psampHashBobRowStatus

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

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

   psampReporting

   psampFilteringMethods        OBJECT IDENTIFIER ::= { psampObjects 4 2 }

   --==================================================================
   --* Method 0: Match filtering
   --==================================================================

   psampFilterMatch OBJECT IDENTIFIER ::= { psampFilteringMethods 0 }

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

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

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

   psampCollectorTable +++++++++++++++++++++++++++++++++++++++++++++

   psampFilterMatchParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF PsampCollectorEntry
                   PsampFilterMatchParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists collectors to which PSAMP selected
            packets are exported." configurations of match filtering. The
            match filtering is based on the IPFIX/PSAMP Information
            Elements. The parameter set contains the Field Id, a value
            or value range and a mask."
       ::= { psampReporting 1 psampFilterMatch 3 }

   psampCollectorEntry

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

   PsampCollectorEntry

   PsampFilterMatchParamSetEntry ::=
       SEQUENCE {
           psampCollectorIndex             Integer32,
           psampCollectorDstIpAddressType  InetAddressType,
           psampCollectorDstIpAddress      InetAddress,
           psampCollectorDstProtocol       Integer32,
           psampCollectorDstPort
           psampFilterMatchIndex      Integer32,
           psampCollectorReportsSent
           psampFilterMatchFieldId    Integer32,
           psampCollectorRowStatus
           psampFilterMatchStartValue OCTET STRING,
           psampFilterMatchStopValue  OCTET STRING,
           psampFilterMatchMask       OCTET STRING,
           psampFilterMatchRowStatus  RowStatus
       }

   psampCollectorIndex

   psampFilterMatchIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier index of an entry
            in this collector table.

            The value is expected to remain constant at least from one
            re-initialization of the entity's network management system
            to parameter set in the next re-initialization.
            psampFilterMatchParameterSetTable. It is used in entries of
            the psampCollectorGroupTable psampInstanceTable as reference to this collector and its associated parameters." parameter set."
       ::= { psampCollectorEntry psampFilterMatchParamSetEntry 1 }

   psampCollectorDstIpAddressType

   psampFilterMatchFieldId OBJECT-TYPE
       SYNTAX      InetAddressType      Integer32 (1..2147483647)
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The IP address type id of the collector. The value for IPv4
            is ipv4(1). The value for IPv6 field that is ipv6(2)." encoded as the FieldId defined
            in the IPFIX/PSAMP Information Models."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1, ipfix and
            psamp info model!!"
   -- Editor Note: get reference right!
       ::= { psampCollectorEntry psampFilterMatchParamSetEntry 2 }

   psampCollectorDstIpAddress

   psampFilterMatchStartValue OBJECT-TYPE
       SYNTAX      InetAddress      OCTET STRING
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The IP address value of the field or the start of the collector." value range if
            psampFilterMatchStopValue is not equal to this value. The
            data type and its encoding is the same as in PSAMP-PROTO."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1, PROTO!!"
   -- Editor Note: get reference right!
       ::= { psampCollectorEntry psampFilterMatchParamSetEntry 3 }

   psampCollectorDstProtocol

   psampFilterMatchStopValue OBJECT-TYPE
       SYNTAX      Integer32 (0..256)      OCTET STRING
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The transport protocol used for exporting sampled packets final value of a value range. It should be equal to the collector.
            psampFilterMatchStartValue if a single value should be
            encoded. The recommended protocols are TCP (6),
            UDP (17) data type and SCTP (132). The default its encoding is SCTP."
       DEFVAL      { 132 } the same as in
            PSAMP-PROTO."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1, PROTO!!"
   -- Editor Note: get reference right!
       ::= { psampCollectorEntry psampFilterMatchParamSetEntry 4 }
   psampCollectorDstPort

   psampFilterMatchMask OBJECT-TYPE
       SYNTAX      Integer32 (0..65535)      OCTET STRING
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The transport protocol port number value of the collector." field is a mask like the netmask for IP
            addresses if this is applicable for the given field Id
            psampFilterMatchFieldId or empty if not. The data type and
            its encoding is the same as in PSAMP-PROTO."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1, PROTO!!"
   -- Editor Note: get reference right!
       DEFVAL      { ''H }
       ::= { psampCollectorEntry psampFilterMatchParamSetEntry 5 }

   psampCollectorReportsSent

   psampFilterMatchRowStatus OBJECT-TYPE
       SYNTAX      Integer32      RowStatus
       MAX-ACCESS  read-only  read-create
       STATUS      current
       DESCRIPTION
           "The number status of this row of packet reports sent to the collector." table."
       ::= { psampCollectorEntry psampFilterMatchParamSetEntry 6 }

   psampCollectorRowStatus

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

   psampFilterHash OBJECT IDENTIFIER ::= { psampFilteringMethods 1 }

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

   psampFilterHashCapabilities OBJECT IDENTIFIER
       ::= { psampFilterHash 2 }

   -- Collector Group Capabilities ++++++++++++++++++++++++++++++++++++++++++++++++++++

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

   psampCollectorGroupTable +++++++++++++++++++++++++++++++++++++++++++++

   psampFilterHashParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF PsampCollectorGroupEntry
                   PsampFilterHashParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists groups configurations of collectors to which PSAMP
            selected packets are exported simultaneously. If PSAMP
            selected packets are exported to only one collector hash filtering. A
            parameter set describing a configuration contains ten
            parameter describing the
            group consists hash function, the input bits feed
            into the hash function and the output of exactly one collector." the function."
       ::= { psampReporting 2 psampFilterHash 3 }

   psampCollectorGroupEntry

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

   PsampCollectorGroupEntry

   PsampFilterHashParamSetEntry ::=
       SEQUENCE {
           psampCollectorGroupIndex
           psampFilterHashIndex        Integer32,
           psampFilterHashAddrType     InetAddressType,
           psampFilterHashHeaderBits   OCTET STRING,
           psampFilterHashPayloadBytes Integer32,
           psampFilterHashPayloadBits  OCTET STRING,
           psampFilterHashFunction     OBJECT IDENTIFIER,
           psampFilterHashFuncParam    OBJECT IDENTIFIER,
           psampFilterHashInputBits    Integer32,
           psampCollectorGroupRowStatus
           psampFilterHashOutputBits   Integer32,
           psampFilterHashOutputMask   OCTET STRING,
           psampFilterHashSelection    DisplayString,
           psampFilterHashRowStatus    RowStatus
       }

   psampCollectorGroupIndex

   psampFilterHashIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier index of an entry
            in this parameter set table.

            The value is expected to remain constant at least from one
            re-initialization of the entity's network management system
            to in the next re-initialization.
            psampFilterHashParamSetTable. It is used in entries of the psampBaseAssocTable
            psampInstanceTable as reference to this parameter set."
       ::= { psampFilterHashParamSetEntry 1 }

   psampFilterHashAddrType OBJECT-TYPE
       SYNTAX      InetAddressType
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The address type the hash function is applied to (either
            IPv4 or IPv6 packets)."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampFilterHashParamSetEntry 2 }

   psampFilterHashHeaderBits OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE (40))
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The object specifies the header bits used for hashing. The
            size is 40 bytes but when psampFilterHashAddrType is IPv4
            then only the first 20 bytes are used."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampFilterHashParamSetEntry 3 }

   psampFilterHashPayloadBytes OBJECT-TYPE
       SYNTAX      Integer32 (0..2147483647)
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The number of bytes of payload used as input to the hash
            function."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference to this collector group and its associated
            parameters." right!
       ::= { psampCollectorGroupEntry 1 psampFilterHashParamSetEntry 4 }

   psampCollectorGroupRowStatus

   psampFilterHashPayloadBits OBJECT-TYPE
       SYNTAX      RowStatus      OCTET STRING
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The status of this row of object specifies the table." payload bits used for hashing. The
            size depends on the value of psampFilterHashPayloadBytes."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampCollectorGroupEntry 3 psampFilterHashParamSetEntry 5 }

   -- (Data) Template Record Table

   psampTemplateRecordTable

   psampFilterHashFunction OBJECT-TYPE
       SYNTAX      SEQUENCE OF PsampTemplateRecordEntry      OBJECT IDENTIFIER
       MAX-ACCESS  not-accessible  read-create
       STATUS      current
       DESCRIPTION
           "This table lists templates used
           "When retrieved, this object specifies the the hash function
            executed by the exporter." current filtering method."
       ::= { psampReporting 3 psampFilterHashParamSetEntry 6 }

   psampTemplateRecordEntry

   psampFilterHashFuncParam OBJECT-TYPE
       SYNTAX      PsampTemplateRecordEntry      OBJECT IDENTIFIER
       MAX-ACCESS  not-accessible  read-create
       STATUS      current
       DESCRIPTION
           "Defines an entry in
           "When retrieved, this object specifies the psampTemplateTable."
       INDEX { psampTemplateRecordId, psampTemplateRecordIndex }
       ::= { psampTemplateRecordTable 1 }

   PsampTemplateRecordEntry the paramters
            used in addition to those specified in this table."
       ::= SEQUENCE {
           psampTemplateRecordId             Integer32,
           psampTemplateRecordIndex          Integer32,
           psampTemplateRecordInfoElementId  Integer32,
           psampTemplateRecordRowStatus      RowStatus psampFilterHashParamSetEntry 7 }

   psampTemplateRecordId

   psampFilterHashInputBits OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible  read-create
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier of an entry
            in this template record table.

            The value is expected to remain constant at least from one
            re-initialization number of the entity's network management system
            to the next re-initialization.

            It is bits used in entries of the psampBaseAssocTable as
            reference input key to this template record and its associated
            parameters. It groups the information element ids hash function.
            Usually this should be in a
            template record." the form of 2^x."
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt,
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampTemplateRecordEntry 1 psampFilterHashParamSetEntry 8 }

   psampTemplateRecordIndex

   psampFilterHashOutputBits OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible  read-create
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier number of a
            information element id in bits that form the template record identified by
            psampTemplateRecordId.

            The output value is expected to remain constant at least from one
            re-initialization of the entity's network management system hash
            function. Usually this should be in the form of 2^x."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampFilterHashParamSetEntry 9 }

   psampFilterHashOutputMask OBJECT-TYPE
       SYNTAX      OCTET STRING
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The mask applied to the next re-initialization. output bits of the hash function.
            If less hash values are needed the number of hashes can be
            reduced by masking the output value. The psampTemplateRecordIndex specifies the order in which size is dependent
            on the informatation element ids are used in number of output bits. If the template
            record." output mask is empty
            then no mask is applied."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       DEFVAL      { ''H }
       ::= { psampTemplateRecordEntry 2 psampFilterHashParamSetEntry 10 }

   psampTemplateRecordInfoElementId

   psampFilterHashSelection OBJECT-TYPE
       SYNTAX      Integer32      DisplayString
       MAX-ACCESS  read-only  read-create
       STATUS      current
       DESCRIPTION
           "The Information Element Id at position
            psampTemplateRecordIndex in the template
            psampTemplateRecordId. This implicitly gives
           "This object represents the data type
            and state hash values that select a
            packet. It is represented in a human readable form. The
            only allowed characters are [0-9a-f,-x]. A single hash
            value is represented by its decimal ASCII notation or if
            prefixed with 0x by its hexadecimal ASCII notation. A range
            can be given by hash_value - hash_value and several single
            values or ranges are exported." separated by , (comma). So, if you
            with to select hash values 0, 5 - 10 and 250-255 you could
            specify: 0,5-10,0xfa-0xff"
       REFERENCE
           "draft-ietf-psamp-sample-tech-07.txt, IPFIX/PSAMP INFO MODEL"
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampTemplateRecordEntry 3 psampFilterHashParamSetEntry 11 }

   psampTemplateRecordRowStatus

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

   --==================================================================
   -- Base Associations Group
   --* Method 2: Router State filtering
   --==================================================================

   psampBaseAssociations

   psampFilterRState OBJECT IDENTIFIER ::= { psampObjects 5 psampFilteringMethods 2 }

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

   psampBaseAssociationTable

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

   psampFilterRStateParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF PsampBaseAssociationEntry
                   PsampFilterRStateParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists all base associations at configurations of router state filtering.
            A parameter set describing a configuration contains six
            parameters: the managed
            node." router state function executed, and then
            some parameters that are used dependent on the router state
            function, like interface index or autonomous system number
            range."
       ::= { psampBaseAssociations 1 psampFilterRState 3 }

   psampBaseAssociationEntry

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

   PsampBaseAssociationEntry

   PsampFilterRStateParamSetEntry ::=
       SEQUENCE {
           psampBaseAssocIndex
           psampFilterRStateIndex      Integer32,
           psampBaseAssocObservationPoint
           psampFilterRStateFunction   INTEGER,
           psampFilterRStateNegate     TruthValue,
           psampFilterRStateIfIndex    InterfaceIndexOrZero,
           psampFilterRStateStartAS    InetAutonomousSystemNumber,
           psampFilterRStateStopAS     InetAutonomousSystemNumber,
           psampFilterRStateVendorFunc OBJECT IDENTIFIER,
           psampBaseAssocTemplateRecordId   Integer32,
           psampBaseAssocCollectorGrpIndex  Integer32,
           psampBaseAssocPacketsObserved    Integer32,
           psampBaseAssocPacketsDropped     Integer32,
           psampBaseAssocMeteringProcessId  Integer32,
           psampBaseAssocReportingProcessId Integer32,
           psampBaseAssocReportsSent        Integer32,
           psampBaseAssocRowStatus
           psampFilterRStateRowStatus  RowStatus
       }

   psampBaseAssocIndex

   psampFilterRStateIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier index of this parameter set in the base
            associations.

            The value
            psampFilterRStateParameterSetTable.
            It is expected to remain constant at least from one
            re-initialization used in entries of the entity's network management system psampInstanceTable as
            reference to the next re-initialization." this parameter set."
       ::= { psampBaseAssociationEntry psampFilterRStateParamSetEntry 1 }

   psampBaseAssocObservationPoint
   psampFilterRStateFunction OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER      INTEGER {
                       other        (1),
                       ingressIf    (2),
                       egressIf     (3),
                       aclViolation (4),
                       rpfFailure   (5),
                       noResources  (6),
                       noRoute      (7),
                       originAS     (8),
                       destAS       (9)
                   }
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The point where
           "This object indicates which function is applied to the packet
            router state. The validity of the following objects depends
            on the function selected here. The psampFilterRStateIfIndex
            is observed. If it only valid if the function is e.g, an
            interface it points to ingressIf or egressIf. The
            psampFilterRstateStartAS/StopAS objects are only valid if
            the mib-II function is originAS or destAS. The
            psampFilterRStateVendor object of is only valid if the interface." function
            other is chosen. Then it point to a vendor specific
            function."
       REFERENCE
           "draft-ietf-psamp-sample-tech-04.txt, Section 5.1"
   -- Editor Note: get reference right!
       ::= { psampBaseAssociationEntry psampFilterRStateParamSetEntry 2 }

   psampBaseAssocTemplateRecordId

   psampFilterRStateNegate OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)      TruthValue
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The Id of a template in the template table. This implies
            the 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
           "If set to true this object will negate the stream output of
            filtered/sampled packets observed after applying the method
            chain at the observation point."
            psampFilterRStateFunction."
       DEFVAL      { false }
       ::= { psampBaseAssociationEntry psampFilterRStateParamSetEntry 3 }

   psampBaseAssocCollectorGrpIndex

   psampFilterRStateIfIndex OBJECT-TYPE
       SYNTAX      Integer32      InterfaceIndexOrZero
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The index of
           "Used if the function is egressIf or ingressIf. Selects
            the collector group to which packet reports
            are sent." if the egressIf/ingressIf is the same as the
            interface indicated by this object. If the object is not
            used it contains a value of 0."
       DEFVAL      { 0 }
       ::= { psampBaseAssociationEntry psampFilterRStateParamSetEntry 4 }

   psampBaseAssocPacketsObserved

   psampFilterRStateStartAS OBJECT-TYPE
       SYNTAX      Integer32      InetAutonomousSystemNumber
       MAX-ACCESS  read-only  read-create
       STATUS      current
       DESCRIPTION
           "The number
           "Used if the function is originAS or destAS. Selects the
            packet if the AS Number lies in the range of packets passing at
            psampFilterRStateStartAS and psampFilterRStateStopAS. If
            the observation point." object is not used it default to 0."
       DEFVAL      { 0 }
       ::= { psampBaseAssociationEntry psampFilterRStateParamSetEntry 5 }

   psampBaseAssocPacketsDropped

   psampFilterRStateStopAS OBJECT-TYPE
       SYNTAX      Integer32      InetAutonomousSystemNumber
       MAX-ACCESS  read-only  read-create
       STATUS      current
       DESCRIPTION
           "The number of packets dropped while filtering/sampling
            packets due to lack
           "Used if the function is originAS or destAS. Selects the
            packet if the AS Number lies in the range of resources."
            psampFilterRStateStartAS and psampFilterRStateStopAS. If
            psampFilterRStateStartAS is not 0 and this object is 0 then
            the range is single value, the value given in
            psampFilterRStateStartAS."
       DEFVAL      { 0 }
       ::= { psampBaseAssociationEntry psampFilterRStateParamSetEntry 6 }

   psampBaseAssocMeteringProcessId

   psampFilterRStateVendorFunc OBJECT-TYPE
       SYNTAX      Integer32      OBJECT IDENTIFIER
       MAX-ACCESS  read-only  read-create
       STATUS      current
       DESCRIPTION
           "The process id of
           "Used if the metering process used by function is any other than those defined here.
            In this
            Base Association." case a vendor specific router state function is
            used. If the object is not used it defaults to
            psampFilterRState."
       DEFVAL      { psampFilterRState }
       ::= { psampBaseAssociationEntry psampFilterRStateParamSetEntry 7 }

   psampBaseAssocReportingProcessId

   psampFilterRStateRowStatus OBJECT-TYPE
       SYNTAX      Integer32      RowStatus
       MAX-ACCESS  read-only  read-create
       STATUS      current
       DESCRIPTION
           "The process id status of the reporting process used by this
            Base Association." row of the table."
       ::= { psampBaseAssociationEntry psampFilterRStateParamSetEntry 8 }

   psampBaseAssocReportsSent OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of packet reports on sampled packets sent to
            the collector."
   --==================================================================
   -- Hash Function Group
   --==================================================================

   psampHashFunctions    OBJECT IDENTIFIER ::= { psampBaseAssociationEntry 9 psampObjects 3 }

   --==================================================================
   --* Hash Function 0: IPSX
   --==================================================================

   psampHashIPSX OBJECT IDENTIFIER ::= { psampHashFunctions 0 }

   psampBaseAssocRowStatus

   psampHashIPSXAvail OBJECT-TYPE
       SYNTAX      RowStatus      PsampMethodAvailability
       MAX-ACCESS  read-create  read-only
       STATUS      current
       DESCRIPTION
           "The status of
           "When retrieved, this row object indicates the availability of
            the table." IPSX hash function at the managed node."
       DEFVAL { notAvailable }
       ::= { psampBaseAssociationEntry 10 psampHashIPSX 1 }

   -- Selector List Capabilities ++++++++++++++++++++++++++++++++++++++++++++++++++++

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

   psampSelectorListTable +++++++++++++++++++++++++++++++++++++++++++++

   psampHashIPSXParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF PsampSelectorListEntry
                   PsampHashIPSXParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table contains lists of selectors and connects them
            to configurations the base associations where they are applied to
            different observation points. The packets IPSX hash function.
            Since this hash function takes no additional parameters the
            table if available contains only one entry indicating that are selected
            the functions exists and can be referenced by the last selection method are then exported."
            psampFilterHashParamSetTable."
       ::= { psampBaseAssociations 4 psampHashIPSX 3 }

   psampSelectorListEntry

   psampHashIPSXParamSetEntry OBJECT-TYPE
       SYNTAX      PsampSelectorListEntry      PsampHashIPSXParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the psampSelectorListTable." psampHashIPSXParamSetTable."
       INDEX { psampBaseAssocIndex, psampSelectorListIndex psampHashIPSXIndex }
       ::= { psampSelectorListTable psampHashIPSXParamSetTable 1 }

   PsampSelectorListEntry
   PsampHashIPSXParamSetEntry ::=
       SEQUENCE {
           psampSelectorListIndex           Integer32,
           psampSelectorListMethod          OBJECT IDENTIFIER,
           psampSelectorListPacketsObserved Integer32,
           psampSelectorListPacketsDropped
           psampHashIPSXIndex     Integer32,
           psampSelectorListRowStatus
           psampHashIPSXRowStatus RowStatus
       }

   psampSelectorListIndex

   psampHashIPSXIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "The locally arbitrary, but unique identifier index of an entry
            in this selector list table.

            The value is expected to remain constant at least from one
            re-initialization of the entity's network management system
            to parameter set in the next re-initialization.
            psampHashIPSXParameterSetTable.  It is used in entries of
            the psampBaseAssocTable psampFilterHashParamSetTable as reference to this selector list and its associated
            parameters."
            parameter set."
       ::= { psampSelectorListEntry 2 psampHashIPSXParamSetEntry 1 }

   psampSelectorListMethod

   psampHashIPSXRowStatus OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
           "The selector used at a certain position in status of this row of the selector
            list." table."
       ::= { psampSelectorListEntry 3 psampHashIPSXParamSetEntry 2 }

   --==================================================================
   --* Hash Function 1: Bob
   --==================================================================

   psampHashBob OBJECT IDENTIFIER ::= { psampHashFunctions 1 }

   psampSelectorListPacketsObserved

   psampHashBobAvail OBJECT-TYPE
       SYNTAX      Integer32      PsampMethodAvailability
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number
           "When retrieved, this object indicates the availability of packets observed
            the Bob hash function at the method managed node."
       DEFVAL { notAvailable }
       ::= { psampHashBob 1 }

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

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

   psampHashBobParamSetTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF
                   PsampHashBobParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table lists configurations the Bob hash function.
            Since this hash function takes no additional parameters the
            table if available contains only one entry point." indicating that
            the functions exists and can be referenced by the
            psampFilterHashParamSetTable."
       ::= { psampSelectorListEntry 4 psampHashBob 3 }

   psampHashBobParamSetEntry OBJECT-TYPE
       SYNTAX      PsampHashBobParamSetEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Defines an entry in the psampHashBobParamSetTable."
       INDEX { psampHashBobIndex }
       ::= { psampHashBobParamSetTable 1 }

   PsampHashBobParamSetEntry ::=
       SEQUENCE {
           psampHashBobIndex     Integer32,
           psampHashBobRowStatus RowStatus
       }

   psampSelectorListPacketsDropped

   psampHashBobIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  read-only  not-accessible
       STATUS      current
       DESCRIPTION
           "The number index of packets dropped due to lack this parameter set in the
            psampHashBobParameterSetTable. It is used in entries of resources by the
            psampFilterHashParamSetTable as reference to this selection method." parameter
            set."
       ::= { psampSelectorListEntry 5 psampHashBobParamSetEntry 1 }

   psampSelectorListRowStatus

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

   --==================================================================
   -- Conformance information
   --==================================================================
   psampCompliances OBJECT IDENTIFIER ::= { psampConformance 1 }
   psampGroups      OBJECT IDENTIFIER ::= { psampConformance 2 }

   --==================================================================
   -- Compliance statements
   --==================================================================

   psampCompliance MODULE-COMPLIANCE
       STATUS  current
       DESCRIPTION
           "An implementation that complies to this module must
            implement the objects defined in the mandatory groups
            psampGroupMetering
            ipfixGroupMetering and psampGroupReporting. ipfixGroupReporting. The
            implementation of all other objects depends on the
            implementation of the corresponding functionality in the
            equipment."
       MODULE  -- this module
           MANDATORY-GROUPS {
                              psampGroupMetering,
                              psampGroupReporting
                              psampGroupSelectAll,
                              ipfixGroupMetering,
                              ipfixGroupReporting
                            }
           GROUP psampGroupSampCountBased
           DESCRIPTION
               "These objects must be implemented if the corresponding
                sampling function is implemented in the equipment."
           GROUP psampGroupSampTimeBased
           DESCRIPTION
               "These objects must be implemented if the corresponding
                sampling function is implemented in the equipment."
           GROUP psampGroupSampRandOutOfN
           DESCRIPTION
               "These objects must be implemented if the corresponding
                sampling function is implemented in the equipment."
           GROUP psampGroupSampUniProb
           DESCRIPTION
               "These objects must be implemented if the corresponding
                sampling function is implemented in the equipment."
           GROUP psampGroupSampNonUniProb
           DESCRIPTION
               "These objects must be implemented if the corresponding
                sampling function is implemented in the equipment."
           GROUP psampGroupSampFlowState
           DESCRIPTION
               "These objects must be implemented if the corresponding
                sampling function is implemented in the equipment."
           GROUP psampGroupFilterMatch
           DESCRIPTION
               "These objects must be implemented if the corresponding
                filter function is implemented in the equipment."
           GROUP psampGroupFilterHash
           DESCRIPTION
               "These objects must be implemented if the corresponding
                filter function is implemented in the equipment."
           GROUP psampGroupFilterRState
           DESCRIPTION
               "These objects must be implemented if the corresponding
                filter function is implemented in the equipment."
           GROUP psampGroupHashIPSX
           DESCRIPTION
               "These objects must be implemented if the corresponding
                hash function is implemented in the equipment."
           GROUP psampGroupHashBob
           DESCRIPTION
               "These objects must be implemented if the corresponding
                hash function is implemented in the equipment."
           GROUP psampGroupStatistics
           DESCRIPTION
               "These objects must be implemented if statistics are
                implemented on the equipment."
       ::= { psampCompliances 1 }

   --==================================================================
   -- MIB groupings
   --==================================================================

   psampGroupMetering

   psampGroupSelectAll OBJECT-GROUP
       OBJECTS {
                 psampSelectAllAvail,
                 psampSampCountBasedAvail,
                 psampSampTimeBasedAvail,
                 psampSampRandOutOfNAvail,
                 psampSampUniProbAvail,
                 psampSampNonUniProbAvail,
                 psampSampFlowStateAvail,
                 psampFilterMatchAvail,
                 psampFilterHashAvail,
                 psampFilterRStateAvail,
                 psampHashIPSXAvail,
                 psampHashBobAvail,

                 psampTemplateRecordInfoElementId,
                 psampTemplateRecordRowStatus,

                 psampSelectorListMethod,
                 psampSelectorListRowStatus,

                 psampBaseAssocObservationPoint,
                 psampBaseAssocTemplateRecordId,
                 psampBaseAssocCollectorGrpIndex,
                 psampBaseAssocMeteringProcessId,
                 psampBaseAssocReportingProcessId,
                 psampBaseAssocRowStatus
                 psampSelectAllAvail
               }
       STATUS  current
       DESCRIPTION
          "All objects that are basic for the metering process. It
           contains a basic metering function (psampSelectAll), The
           template definitions needed for the export of data, the
           method chain
          "The select all Method that fixes the metering functions applied to
           the observation point and several parameters concering
           the export process and the collectors." must be present on all PSAMP
           complient devices."
       ::= { psampGroups 1 }

   psampGroupSampCountBased OBJECT-GROUP
       OBJECTS {
                 psampSampCountBasedAvail,
                 psampSampCountBasedMaxInterval,
                 psampSampCountBasedMinSpacing,
                 psampSampCountBasedMaxSpacing,
                 psampSampCountBasedInterval,
                 psampSampCountBasedSpacing,
                 psampSampCountBasedRowStatus
               }
       STATUS  current
       DESCRIPTION
          "These objects are needed if count based sampling is
           implemented."
       ::= { psampGroups 2 }
   psampGroupSampTimeBased OBJECT-GROUP
       OBJECTS {
                 psampSampTimeBasedAvail,
                 psampSampTimeBasedMaxInterval,
                 psampSampTimeBasedMinSpacing,
                 psampSampTimeBasedMaxSpacing,
                 psampSampTimeBasedInterval,
                 psampSampTimeBasedSpacing,
                 psampSampTimeBasedRowStatus
               }
       STATUS  current
       DESCRIPTION
          "These objects are needed if time based sampling is
           implemented."
       ::= { psampGroups 3 }

   psampGroupSampRandOutOfN OBJECT-GROUP
       OBJECTS {
                 psampSampRandOutOfNAvail,
                 psampSampRandOutOfNMaxPopulation,
                 psampSampRandOutOfNMaxSample,
                 psampSampRandOutOfNPopulation,
                 psampSampRandOutOfNSample,
                 psampSampRandOutOfNRowStatus
               }
       STATUS  current
       DESCRIPTION
          "These objects are needed if random n-out-of-N sampling is
           implemented."
       ::= { psampGroups 4 }

   psampGroupSampUniProb OBJECT-GROUP
       OBJECTS {
                 psampSampUniProbAvail,
                 psampSampUniProbProbability,
                 psampSampUniProbRowStatus
               }
       STATUS  current
       DESCRIPTION
          "These objects are needed if uniform probabilistic sampling
           is implemented."
       ::= { psampGroups 5 }

   psampGroupSampNonUniProb OBJECT-GROUP
       OBJECTS {
                 psampSampNonUniProbAvail,
                 psampSampNonUniProbFunction,
                 psampSampNonUniProbFuncParam,
                 psampSampNonUniProbRowStatus
               }
       STATUS  current
       DESCRIPTION
          "These objects are needed if non-uniform probabilistic
           sampling is implemented."
       ::= { psampGroups 6 }

   psampGroupSampFlowState OBJECT-GROUP
       OBJECTS {
                 psampSampFlowStateAvail,
                 psampSampFlowStateFunction,
                 psampSampFlowStateFuncParam,
                 psampSampFlowStateRowStatus
               }
       STATUS  current
       DESCRIPTION
          "These objects are needed if flow state sampling is
           implemented."
       ::= { psampGroups 7 }

   psampGroupFilterMatch OBJECT-GROUP
       OBJECTS {
                 psampFilterMatchInfoElementId,
                 psampFilterMatchAvail,
                 psampFilterMatchFieldId,
                 psampFilterMatchStartValue,
                 psampFilterMatchEndValue,
                 psampFilterMatchStopValue,
                 psampFilterMatchMask,
                 psampFilterMatchRowStatus
               }
       STATUS  current
       DESCRIPTION
          "These objects are needed if match filtering is implemented."
       ::= { psampGroups 8 }

   psampGroupFilterHash OBJECT-GROUP
       OBJECTS {
                 psampFilterHashAvail,
                 psampFilterHashAddrType,
                 psampFilterHashHeaderBits,
                 psampFilterHashPayloadBytes,
                 psampFilterHashPayloadBits,
                 psampFilterHashFunction,
                 psampFilterHashFuncParam,
                 psampFilterHashInputBits,
                 psampFilterHashOutputBits,
                 psampFilterHashOutputMask,
                 psampFilterHashSelection,
                 psampFilterHashRowStatus
               }
       STATUS  current
       DESCRIPTION
          "These objects are needed if hash filtering is implemented."
       ::= { psampGroups 9 }

   psampGroupFilterRState OBJECT-GROUP
       OBJECTS {
                 psampFilterRStateAvail,
                 psampFilterRStateFunction,
                 psampFilterRStateNegate,
                 psampFilterRStateIfIndex,
                 psampFilterRStateStartAS,
                 psampFilterRStateEndAS,
                 psampFilterRStateStopAS,
                 psampFilterRStateVendorFunc,
                 psampFilterRStateRowStatus
               }
       STATUS  current
       DESCRIPTION
          "These objects are needed if router state filtering is
           implemented."
       ::= { psampGroups 10 }

   psampGroupHashIPSX OBJECT-GROUP
       OBJECTS {
                 psampHashIPSXAvail,
                 psampHashIPSXRowStatus
               }
       STATUS  current
       DESCRIPTION
          "These objects are needed if the IPSX hash function is
           implemented."
       ::= { psampGroups 11 }

   psampGroupHashBob OBJECT-GROUP
       OBJECTS {
                 psampHashBobAvail,
                 psampHashBobRowStatus
               }
       STATUS  current
       DESCRIPTION
          "These objects are needed if the Bob hash function is
           implemented."
       ::= { psampGroups 12 }

   psampGroupReporting OBJECT-GROUP
       OBJECTS {
                 psampCollectorDstIpAddressType,
                 psampCollectorDstIpAddress,
                 psampCollectorDstProtocol,
                 psampCollectorDstPort,
                 psampCollectorRowStatus,

                 psampCollectorGroupRowStatus
               }
       STATUS  current
       DESCRIPTION
          "These objects define the collectors i.e., the destinations
           of the exporting process."
       ::= { psampGroups 13 }

   psampGroupStatistics OBJECT-GROUP
       OBJECTS {
                 psampCollectorReportsSent,

                 psampSelectorListPacketsObserved,
                 psampSelectorListPacketsDropped,

                 psampBaseAssocPacketsObserved,
                 psampBaseAssocReportsSent,
                 psampBaseAssocPacketsDropped
               }
       STATUS  current
       DESCRIPTION
          "These objects contain statistical values gathered at
           different points in the metering process."
       ::= { psampGroups 14 }

   END

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

8.  IANA Considerations

   This document requires no assignment to be made by IANA.

9.  Acknowledgment

   This document is a product of the PSAMP working group.

9.

10.  References

9.1.

10.1.  Normative References

   [1]

   [I-D.ietf-psamp-framework]
              Duffield, N., "A Framework for Packet Selection and
              Reporting", draft-ietf-psamp-framework-10 (work in
              progress), January 2005.

   [2]

   [I-D.ietf-psamp-sample-tech]
              Zseby, T., "Sampling and Filtering Techniques for IP
              Packet Selection", draft-ietf-psamp-sample-tech-07 (work
              in progress), July 2005.

   [3]

   [I-D.ietf-psamp-protocol]
              Claise, B., "Packet Sampling (PSAMP) Protocol
              Specifications",
        draft-ietf-psamp-protocol-01 draft-ietf-psamp-protocol-05 (work in
              progress), April 2006.

   [I-D.ietf-ipfix-protocol]
              Claise, B., "IPFIX Protocol Specification",
              draft-ietf-ipfix-protocol-20 (work in progress),
              April 2006.

   [I-D.dietz-ipfix-mib]
              Dietz, T., Kobayashi, A., and B. Claise, "Definitions of
              Managed Objects for IP Flow Information Export",
              draft-dietz-ipfix-mib-00 (work in progress), February 2004.

   [4] June 2006.

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

   [5]

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

   [6]

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

   [7]

10.2.  Informative References

   [I-D.ietf-psamp-info]
              Dietz, T., "Information Model for Packet Sampling
              Exports",
        draft-ietf-psamp-info-02 draft-ietf-psamp-info-04 (work in progress), July 2004.

9.2.  Informative References

   [8]
              March 2006.

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

   [9]   Quittek, J., "Requirements for IP Flow Information Export",
         draft-ietf-ipfix-reqs-16 (work in progress), June 2004.

   [10]

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

   [11]  Quittek, J., "Information Model for IP Flow Information
         Export", draft-ietf-ipfix-info-11 (work in progress),
         September 2005.

   [12]  Sadasivan, G., "Architecture for IP Flow Information Export",
         draft-ietf-ipfix-architecture-09 (work in progress),
         August 2005.

Authors' Addresses

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

   Phone: +49 6221 90511-28 4342-128
   Email: dietz@netlab.nec.de

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

   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 Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

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

Disclaimer of Validity

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

Copyright Statement

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

Acknowledgment

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