SFLOW-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, Integer32, enterprises FROM SNMPv2-SMI TEXTUAL-CONVENTION FROM SNMPv2-TC SnmpAdminString FROM SNMP-FRAMEWORK-MIB OwnerString FROM RMON-MIB InetAddressType, InetAddress FROM INET-ADDRESS-MIB MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; sFlowMIB MODULE-IDENTITY LAST-UPDATED "200309240000Z" -- September 24, 2003 ORGANIZATION "sFlow.org" CONTACT-INFO "Peter Phaal sFlow.org http://www.sflow.org/ Tel: +1-415-283-3260 Email: peter.phaal@sflow.org" DESCRIPTION "The MIB module for managing the generation and transportation of sFlow data records." -- -- Revision History -- REVISION "200310180000Z" -- November 18, 2003 DESCRIPTION "Version 1.3 (draft 5) Allow set to SFlowReceiver if it doesn't change value." REVISION "200309240000Z" -- September 24, 2003 DESCRIPTION "Version 1.3 (draft 4) Default value of sFlowRcvrAddress should be '00000000' h. Default value of sFlowCpReceiver should be 0." REVISION "200304080000Z" -- April 8, 2003 DESCRIPTION "Version 1.3 (draft 3) Clarify semantics of counter polling interval, sFlowCpInterval." REVISION "200209170000Z" -- September 17, 2002 DESCRIPTION "Version 1.3 (draft 2) Adds support for multiple sFlow samplers per sFlowDataSource. Moved to sflow.org enterprise number. Splits flow sampling, counter polling and receiver specification into separate tables." REVISION "200107310000Z" -- July 31, 2001 DESCRIPTION "Version 1.2 Brings MIB into SMI v2 compliance." REVISION "200105010000Z" -- May 1, 2001 DESCRIPTION "Version 1.1 Adds sfDatagramVersion." ::= { enterprises 14706 1 } sFlowAgent OBJECT IDENTIFIER ::= { sFlowMIB 1 } SFlowDataSource ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Identifies a source of sFlow data. The following data source types are currently defined: - ifIndex. SFlowDataSources of this traditional form are called 'port-based'. Ideally the sampling entity will perform sampling on all flows originating from or destined to the specified interface. However, if the switch architecture only allows input or output sampling then the sampling agent is permitted to only sample input flows input or output flows. Each packet must only be considered once for sampling, irrespective of the number of ports it will be forwarded to. Note: Port 0 is used to indicate that all ports on the device are represented by a single data source. - sFlowFsPacketSamplingRate applies to all ports on the device capable of packet sampling. - smonVlanDataSource. An SFlowDataSource of this form refers to a 'Packet-based VLAN' and is called a 'VLAN-based' dataSource. is the VLAN ID as defined by the IEEE 802.1Q standard. The value is between 1 and 4094 inclusive, and it represents an 802.1Q VLAN-ID with global scope within a given bridged domain. Sampling is performed on all packets received that are part of the specified VLAN (no matter which port they arrived on). Each packet will only be considered once for sampling, irrespective of the number of ports it will be forwarded to. - entPhysicalEntry. An SFlowDataSource of this form refers to a physical entity within the agent (e.g. entPhysicalClass = backplane(4)) and is called an 'entity-based' dataSource. Sampling is performed on all packets entering the resource (e.g. If the backplane is being sampled, all packets transmitted onto the backplane will be considered as single candidates for sampling irrespective of the number of ports they ultimately reach). Note: Since each SFlowDataSource operates independently a packet that crosses multiple DataSources may generate multiple flow records." SYNTAX OBJECT IDENTIFIER SFlowInstance ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "If more than one sFlow sampler is available for this SFlowDataSource then individual samplers are distinguished using the SFlowInstance variable. The value of SFlowInstance ranges from 1..n where n is the number of samplers associated with this SFlowDataSource. Note: Each sFlow sampler instance must operate independently of all other instances. Setting an attribute of one sampler must not alter the the behavior and settings of other sampler instances." SYNTAX Integer32 (1..65535) SFlowReceiver ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Identify the sFlow receiver associated with this resource. A value of zero indicates that this resource is available. If non-zero the value must correspond to a valid, active sFlowRcvrIndex. If the value is currently zero it may be set to any active entry in the sFlowRcvrTable. If the value is not zero then a set to anything other than zero or its current value will result in an SNMP error (bad value). Setting to zero frees the resource and returns all the values in this entry to their default values. If an entry in the sFlowRcvrTable expires, either because the sFlowRcvrOwner is set to the empty string or because the sFlowRcvrTimeout reaches zero, then the agent must mark all associated resources as available (by setting the associated SFlowReceiver entry to zero) and all values in these records must be restored to their default values. This mechanism provides no enforcement and relies on the cooperation of management entities in order to ensure that competition for a resource is fairly resolved. A management entity should not make any changes to a resource without first aquiring it by successfully writing its sFlowRcvrIndex value as the SFlowReceiver for the resource." SYNTAX Integer32 sFlowVersion OBJECT-TYPE SYNTAX SnmpAdminString MAX-ACCESS read-only STATUS current DESCRIPTION "Uniquely identifies the version and implementation of this MIB. The version string must have the following structure: ;; where: must be '1.3', the version of this MIB. the name of the organization responsible for the agent implementation. the specific software build of this agent. As an example, the string '1.3;InMon Corp.;2.1.1' indicates that this agent implements version '1.2' of the SFLOW MIB, that it was developed by 'InMon Corp.' and that the software build is '2.1.1'. The MIB Version will change with each revision of the SFLOW MIB. Management entities must check the MIB Version and not attempt to manage agents with MIB Versions greater than that for which they were designed. Note: The sFlow Datagram Format has an independent version number which may change independently from . applies to the structure and semantics of the SFLOW MIB only." DEFVAL { "1.3;;" } ::= { sFlowAgent 1 } sFlowAgentAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS read-only STATUS current DESCRIPTION "The address type of the address associated with this agent. Only ipv4 and ipv6 types are supported." ::= { sFlowAgent 2 } sFlowAgentAddress OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The IP address associated with this agent. In the case of a multi-homed agent, this should be the loopback address of the agent. The sFlowAgent address must provide SNMP connectivity to the agent. The address should be an invariant that does not change as interfaces are reconfigured, enabled, disabled, added or removed. A manager should be able to use the sFlowAgentAddress as a unique key that will identify this agent over extended periods of time so that a history can be maintained." ::= { sFlowAgent 3 } -- -- Receiver Table -- sFlowRcvrTable OBJECT-TYPE SYNTAX SEQUENCE OF SFlowRcvrEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of the receivers of sFlow information." ::= { sFlowAgent 4 } sFlowRcvrEntry OBJECT-TYPE SYNTAX SFlowRcvrEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Attributes of an sFlow Receiver." INDEX { sFlowRcvrIndex } ::= { sFlowRcvrTable 1 } SFlowRcvrEntry ::= SEQUENCE { sFlowRcvrIndex Integer32, sFlowRcvrOwner OwnerString, sFlowRcvrTimeout Integer32, sFlowRcvrMaximumDatagramSize Integer32, sFlowRcvrAddressType InetAddressType, sFlowRcvrAddress InetAddress, sFlowRcvrPort Integer32, sFlowRcvrDatagramVersion Integer32 } sFlowRcvrIndex OBJECT-TYPE SYNTAX Integer32 (1..65535) MAX-ACCESS not-accessible STATUS current DESCRIPTION "Index into sFlowReceiverTable." ::= { sFlowRcvrEntry 1 } sFlowRcvrOwner OBJECT-TYPE SYNTAX OwnerString MAX-ACCESS read-write STATUS current DESCRIPTION "The entity making use of this sFlowRcvrTable entry. The empty string indicates that the entry is currently unclaimed. An entity wishing to claim an sFlowRcvrTable entry must ensure that the entry is unclaimed before trying to claim it. The entry is claimed by setting the owner string. The entry must be claimed before any changes can be made to other sampler objects. In order to avoid a race condition, the entity taking control of the sampler must set both the owner and a value for sFlowRcvrTimeout in the same SNMP set request. When a management entity is finished using the sampler, it should set the value of sFlowRcvrOwner back to unclaimed. The agent must restore all other entities this row to their default values when the owner is set to unclaimed. It must also free all other resources associated with this sFlowRcvrTable entry. This mechanism provides no enforcement and relies on the cooperation of management entities in order to ensure that competition for a receiver entry is fairly resolved." DEFVAL { "" } ::= { sFlowRcvrEntry 2 } sFlowRcvrTimeout OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The time (in seconds) remaining before the sampler is released and stops sampling. When set, the owner establishes control for the specified period. When read, the remaining time in the interval is returned. A management entity wanting to maintain control of the sampler is responsible for setting a new value before the old one expires. When the interval expires, the agent is responsible for restoring all other entities in this row to their default values. It must also free all other resources associated with this sFlowRcvrTable entry." DEFVAL { 0 } ::= { sFlowRcvrEntry 3 } sFlowRcvrMaximumDatagramSize OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of data bytes that can be sent in a single sample datagram. The manager should set this value to avoid fragmentation of the sFlow datagrams." DEFVAL { 1400 } ::= { sFlowRcvrEntry 4 } sFlowRcvrAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS read-write STATUS current DESCRIPTION "The type of sFlowRcvrCollectorAddress." DEFVAL { ipv4 } ::= { sFlowRcvrEntry 5 } sFlowRcvrAddress OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS read-write STATUS current DESCRIPTION "The IP address of the sFlow collector. If set to 0.0.0.0 not sFlow datagrams will be sent." DEFVAL { '00000000'h } -- 0.0.0.0 ::= { sFlowRcvrEntry 6 } sFlowRcvrPort OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The destination port for sFlow datagrams." DEFVAL { 6343 } ::= { sFlowRcvrEntry 7 } sFlowRcvrDatagramVersion OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The version of sFlow datagrams that should be sent. When set to a value not support by the agent, the agent should adjust the value to the highest supported value less than the requested value, or return an SNMP bad value error if no such value exists." DEFVAL { 5 } ::= { sFlowRcvrEntry 8 } -- -- Flow Sampling Table -- sFlowFsTable OBJECT-TYPE SYNTAX SEQUENCE OF SFlowFsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of the flow samplers within a device." ::= { sFlowAgent 5 } sFlowFsEntry OBJECT-TYPE SYNTAX SFlowFsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Attributes of a flow sampler." INDEX { sFlowFsDataSource, sFlowFsInstance } ::= { sFlowFsTable 1 } SFlowFsEntry ::= SEQUENCE { sFlowFsDataSource SFlowDataSource, sFlowFsInstance SFlowInstance, sFlowFsReceiver SFlowReceiver, sFlowFsPacketSamplingRate Integer32, sFlowFsMaximumHeaderSize Integer32 } sFlowFsDataSource OBJECT-TYPE SYNTAX SFlowDataSource MAX-ACCESS not-accessible STATUS current DESCRIPTION "sFlowDataSource for this flow sampler." ::= { sFlowFsEntry 1 } sFlowFsInstance OBJECT-TYPE SYNTAX SFlowInstance MAX-ACCESS not-accessible STATUS current DESCRIPTION "The sFlow instance for this flow sampler." ::= { sFlowFsEntry 2 } sFlowFsReceiver OBJECT-TYPE SYNTAX SFlowReceiver MAX-ACCESS read-write STATUS current DESCRIPTION "The SFlowReceiver for this flow sampler." DEFVAL { 0 } ::= { sFlowFsEntry 3 } sFlowFsPacketSamplingRate OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The statistical sampling rate for packet sampling from this source. Set to N to sample 1/Nth of the packets in the monitored flows. An agent should choose its own algorithm to introduce variance into the sampling so that exactly every Nth packet is not counted. A sampling rate of 1 counts all packets. A sampling rate of 0 disables sampling. The agent is permitted to have minimum and maximum allowable values for the sampling rate. A minimum rate lets the agent designer set an upper bound on the overhead associated with sampling, and a maximum rate may be the result of hardware restrictions (such as counter size). In addition not all values between the maximum and minimum may be realizable as the sampling rate (again because of implementation considerations). When the sampling rate is set the agent is free to adjust the value so that it lies between the maximum and minimum values and has the closest achievable value. When read, the agent must return the actual sampling rate it will be using (after the adjustments previously described). The sampling algorithm must converge so that over time the number of packets sampled approaches 1/Nth of the total number of packets in the monitored flows." DEFVAL { 0 } ::= { sFlowFsEntry 4 } sFlowFsMaximumHeaderSize OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of bytes that should be copied from a sampled packet. The agent may have an internal maximum and minimum permissible sizes. If an attempt is made to set this value outside the permissible range then the agent should adjust the value to the closest permissible value." DEFVAL { 128 } ::= { sFlowFsEntry 5 } -- -- Counter Polling Table -- sFlowCpTable OBJECT-TYPE SYNTAX SEQUENCE OF SFlowCpEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of the counter pollers within a device." ::= { sFlowAgent 6 } sFlowCpEntry OBJECT-TYPE SYNTAX SFlowCpEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Attributes of a counter poller." INDEX { sFlowCpDataSource, sFlowCpInstance } ::= { sFlowCpTable 1 } SFlowCpEntry ::= SEQUENCE { sFlowCpDataSource SFlowDataSource, sFlowCpInstance SFlowInstance, sFlowCpReceiver SFlowReceiver, sFlowCpInterval Integer32 } sFlowCpDataSource OBJECT-TYPE SYNTAX SFlowDataSource MAX-ACCESS not-accessible STATUS current DESCRIPTION "Identifies the source of the data for the counter poller." ::= { sFlowCpEntry 1 } sFlowCpInstance OBJECT-TYPE SYNTAX SFlowInstance MAX-ACCESS not-accessible STATUS current DESCRIPTION "The sFlowInstance for this counter poller." ::= { sFlowCpEntry 2 } sFlowCpReceiver OBJECT-TYPE SYNTAX SFlowReceiver MAX-ACCESS read-write STATUS current DESCRIPTION "The SFlowReciever associated with this counter poller." DEFVAL { 0 } ::= { sFlowCpEntry 3 } sFlowCpInterval OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of seconds between successive samples of the counters associated with this data source. A sampling interval of 0 disables counter sampling. The agent is permitted to have minimum and maximum allowable values for the counter polling interval. A minimum interval lets the agent designer set an upper bound on the overhead associated with polling, and a maximum interval may be the result of implementation restrictions (such as counter size). In addition not all values between the maximum and minimum may be realizable as the sampling interval (again because of implementation considerations). When the sampling rate is set the agent is free to adjust the value so that it lies between the maximum and minimum values and has the closest achievable value. When read, the agent must return the actual sampling interval it will be using (after the adjustments previously described). The sampling algorithm must converge so that over time the number of packets sampled approaches 1/Nth of the total number of packets in the monitored flows." DEFVAL { 0 } ::= { sFlowCpEntry 4 } -- -- Compliance Statements -- sFlowMIBConformance OBJECT IDENTIFIER ::= { sFlowMIB 2 } sFlowMIBGroups OBJECT IDENTIFIER ::= { sFlowMIBConformance 1 } sFlowMIBCompliances OBJECT IDENTIFIER ::= { sFlowMIBConformance 2 } sFlowCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "Compliance statements for the sFlow Agent." MODULE -- this module MANDATORY-GROUPS { sFlowAgentGroup } OBJECT sFlowAgentAddressType SYNTAX InetAddressType { ipv4(1) } DESCRIPTION "Agents need only support ipv4." OBJECT sFlowRcvrAddressType SYNTAX InetAddressType { ipv4(1) } DESCRIPTION "Agents need only support ipv4." ::= { sFlowMIBCompliances 1 } sFlowAgentGroup OBJECT-GROUP OBJECTS { sFlowVersion, sFlowAgentAddressType, sFlowAgentAddress, sFlowRcvrOwner, sFlowRcvrTimeout, sFlowRcvrMaximumDatagramSize, sFlowRcvrAddressType, sFlowRcvrAddress, sFlowRcvrPort, sFlowRcvrDatagramVersion, sFlowFsReceiver, sFlowFsPacketSamplingRate, sFlowFsMaximumHeaderSize, sFlowCpReceiver, sFlowCpInterval } STATUS current DESCRIPTION "A collection of objects for managing the generation and transportation of sFlow data records." ::= { sFlowMIBGroups 1 } END