Updated Implementation Report Received: May 5, 2003 (original follows) RMONMIB WG, OPS-NM Area Implementation Report for RFC 2021 : Remote Network Monitoring Management Information Base Version 2 WG Chair: Andy Bierman April 19, 2003 ------------------------------ Introduction ------------ This report summarizes the implementation reports received for RFC 2021. A survey for this RFC was sent to the WG mailing list and the results shown below are aligned with that survey form. Survey Issues ------------- The primary statistical object groups seem to be widely implemented. There were some implementation issues raised, such as: - dropped frames counters not always correct due to limitations in the HW or device driver. - resource limitations constrain number of control entries that may be created and/or number of related protocol entries in the protocolDirTable. - flexible configuration of the protocol directory and complex protocol encapsulation representation makes agent implementation too complicated. None of these issues are considered critical, but they do indicate that the RMON-2 design and functional requirements are too complicated in some areas. There are several secondary statistical objects and configuration objects which are not widely implemented. The lack of implementation experience for these objects indicates that they are not widely useful or applicable to current market requirements for RMON-2 agent technology. A significant design flaw was exposed in the process of collecting implementation reports. The defined behavior of the TimeFilter textual convention (used in many statistical data tables) is quite sub-optimal for SNMP GetNext and GetBulk protocol operations. Basically, TimeFilter causes simple mibwalks to continue without end, and GetBulk response PDUs to contain lots of duplicate information. As a result, many vendors have relaxed the specification for TimeFilter and automatically 'wrap' the lexinext retrieval of tables that include a TimeFilter index, such that duplicate entries are not returned. There is no benefit whatsoever to the official behavior of the TimeFilter. The RMONMIB WG has decided that an attempt should be made to fix the TimeFilter specification such that duplicate entries are not returned by the agent during lexinext retrieval of a table that uses a TimeFilter index. Survey Conclusion ----------------- There are many objects in the RMON2-MIB which are implemented consistently in agents. In particular, the objects which provide statistical information are widely implemented. However, there are also many objects which are not implemented, which are related to configuration of stand-alone RMON probes. The RMON2-MIB contains textual conventions and some objects which are used in other MIB modules. The protocol directory is an important component of the RMON framework, which is used in several RMON MIB modules to identify protocol encapsulations. The RMONMIB WG believes it is useful to advance the implemented portions of RFC 2021 at this time, because they are stable, and the RMON2-MIB is holding up advancement of other RFCs which utilize some of these stable portions of the RMON2-MIB module. The WG recommends that an update to RFC 2021 be created which can then be published as a Draft Standard RFC. The following actions will be taken by the WG: 1) The following MIB objects will be deprecated: probeDownloadFile probeDownloadTFTPServer probeDownloadAction probeDownloadStatus serialMode serialProtocol serialTimeout serialModemInitString serialModemHangUpString serialModemConnectResp serialModemNoConnectResp serialDialoutTimeout serialStatus serialConnectDestIpAddress serialConnectType serialConnectDialString serialConnectSwitchConnectSeq serialConnectSwitchDisconnectSeq serialConnectSwitchResetSeq serialConnectOwner serialConnectStatus netConfigIPAddress netConfigSubnetMask netConfigStatus netDefaultGateway tokenRingMLStatsDroppedFrames tokenRingMLStatsCreateTime tokenRingPStatsDroppedFrames tokenRingPStatsCreateTime ringStationControlDroppedFrames ringStationControlCreateTime sourceRoutingStatsDroppedFrames sourceRoutingStatsCreateTime 2) A new MODULE-COMPLIANCE and appropriate GROUP macros will be added which removes the newly deprecated objects. 3) The boilerplate and references will be updated to be aligned with the current template. 4) The nlMatrixTopNControlRateBase and nlMatrixTopNControlRateBase objects will be updated to integrate the changes described in section 3 of the HC-RMON MIB (RFC 3273). The conformance section of the RMON2-MIB module will be updated to indicate that the addition high capacity enumerations are not required for compliance to the RMON2-MIB. 5) The WG will attempt to address the TimeFilter issues in a manner that does not require the RMON2-MIB module to cycle at Proposed Standard. It is not clear if a separate document is required to accomplish this goal. Survey Respondents ------------------ There were four responses, labeled 'A' through 'D' in the response summary section, which correspond to the following vendor implementations: A == Triticom agent B == Network Harmoni agent C == Cisco Systems Network Analysis Module agent D == Enterasys agent Survey Response Summary ----------------------- Key: x == fully implemented r == implemented read-only, no user entries allowed in table a == implemented as OCTET STRING instead of BITS b == value will be reused if entry deleted and then recreated with same semantics, in order to simplify code Developer ID MIB object description A B C D ------------------------------------------------------- management application | | | | | agent | x | x | x | x | ------------------------------------------------------- implemented on an RMON probe | x | x | x | | embedded in a network device | | | | x | ------------------------------------------------------- protocolDirLocalIndex | x | x | b | x | protocolDirDescr | x | x | x | x | protocolDirType | x | x | x | x | protocolDirAddressMapConfig | x | x | x | x | protocolDirHostConfig | x | x | x | x | protocolDirMatrixConfig | x | x | x | x | protocolDirOwner | x | x | x | x | protocolDirStatus | r | x | x | x | ------------------------------------------------------- protocolDistControlDataSource | x | x | x | x | protocolDistControlDroppedFrames | x | x | x | x | protocolDistControlCreateTime | x | x | x | x | protocolDistControlOwner | x | x | x | x | protocolDistControlStatus | x | x | x | x | protocolDistStatsPkts | x | x | x | x | protocolDistStatsOctets | x | x | x | x | ------------------------------------------------------- addressMapInserts | x | x | x | x | addressMapDeletes | x | x | x | x | addressMapMaxDesiredEntries | x | x | x | x | addressMapControlDataSource | x | x | x | x | addressMapControlDroppedFrames | x | x | x | x | addressMapControlOwner | x | x | x | x | addressMapControlStatus | x | x | x | x | addressMapPhysicalAddress | x | x | x | x | addressMapLastChange | x | x | x | x | ------------------------------------------------------- hlHostControlDataSource | x | x | x | x | hlHostControlNlDroppedFrames | x | x | x | x | hlHostControlNlInserts | x | x | x | x | hlHostControlNlDeletes | x | x | x | x | hlHostControlNlMaxDesiredEntries | x | x | x | x | hlHostControlAlDroppedFrames | x | x | x | x | hlHostControlAlInserts | x | x | x | x | hlHostControlAlDeletes | x | x | x | x | hlHostControlAlMaxDesiredEntries | x | x | x | x | hlHostControlOwner | x | x | x | x | hlHostControlStatus | x | x | x | x | nlHostInPkts | x | x | x | x | nlHostOutPkts | x | x | x | x | nlHostInOctets | x | x | x | x | nlHostOutOctets | x | x | x | x | nlHostOutMacNonUnicastPkts | x | x | x | x | nlHostCreateTime | x | x | x | x | alHostInPkts | x | x | x | x | alHostOutPkts | x | x | x | x | alHostInOctets | x | x | x | x | alHostOutOctets | x | x | x | x | alHostCreateTime | x | x | x | x | ------------------------------------------------------- hlMatrixControlDataSource | x | x | x | x | hlMatrixControlNlDroppedFrames | x | x | x | x | hlMatrixControlNlInserts | x | x | x | x | hlMatrixControlNlDeletes | x | x | x | x | hlMatrixControlNlMaxDesiredEntries | x | x | x | x | hlMatrixControlAlDroppedFrames | x | x | x | x | hlMatrixControlAlInserts | x | x | x | x | hlMatrixControlAlDeletes | x | x | x | x | hlMatrixControlAlMaxDesiredEntries | x | x | x | x | hlMatrixControlOwner | x | x | x | x | hlMatrixControlStatus | x | x | x | x | nlMatrixSDPkts | x | x | x | x | nlMatrixSDOctets | x | x | x | x | nlMatrixSDCreateTime | x | x | x | x | nlMatrixDSPkts | x | x | x | x | nlMatrixDSOctets | x | x | x | x | nlMatrixDSCreateTime | x | x | x | x | alMatrixSDPkts | x | x | x | x | alMatrixSDOctets | x | x | x | x | alMatrixSDCreateTime | x | x | x | x | alMatrixDSPkts | x | x | x | x | alMatrixDSOctets | x | x | x | x | alMatrixDSCreateTime | x | x | x | x | ------------------------------------------------------- nlMatrixTopNControlMatrixIndex | x | x | x | x | nlMatrixTopNControlRateBase | x | x | x | x | nlMatrixTopNControlTimeRemaining | x | x | x | x | nlMatrixTopNControlGeneratedReports | x | x | x | x | nlMatrixTopNControlDuration | x | x | x | x | nlMatrixTopNControlRequestedSize | x | x | x | x | nlMatrixTopNControlGrantedSize | x | x | x | x | nlMatrixTopNControlStartTime | x | x | x | x | nlMatrixTopNControlOwner | x | x | x | x | nlMatrixTopNControlStatus | x | x | x | x | nlMatrixTopNProtocolDirLocalIndex | x | x | x | x | nlMatrixTopNSourceAddress | x | x | x | x | nlMatrixTopNDestAddress | x | x | x | x | nlMatrixTopNPktRate | x | x | x | x | nlMatrixTopNReversePktRate | x | x | x | x | nlMatrixTopNOctetRate | x | x | x | x | nlMatrixTopNReverseOctetRate | x | x | x | x | ------------------------------------------------------- alMatrixTopNControlMatrixIndex | x | x | x | x | alMatrixTopNControlRateBase | x | x | x | x | alMatrixTopNControlTimeRemaining | x | x | x | x | alMatrixTopNControlGeneratedReports | x | x | x | x | alMatrixTopNControlDuration | x | x | x | x | alMatrixTopNControlRequestedSize | x | x | x | x | alMatrixTopNControlGrantedSize | x | x | x | x | alMatrixTopNControlStartTime | x | x | x | x | alMatrixTopNControlOwner | x | x | x | x | alMatrixTopNControlStatus | x | x | x | x | alMatrixTopNProtocolDirLocalIndex | x | x | x | x | alMatrixTopNSourceAddress | x | x | x | x | alMatrixTopNDestAddress | x | x | x | x | alMatrixTopNAppProtocolDirLocalIndex | x | x | x | x | alMatrixTopNPktRate | x | x | x | x | alMatrixTopNReversePktRate | x | x | x | x | alMatrixTopNOctetRate | x | x | x | x | alMatrixTopNReverseOctetRate | x | x | x | x | ------------------------------------------------------- usrHistoryControlObjects | x | x | x | x | usrHistoryControlBucketsRequested | x | x | x | x | usrHistoryControlBucketsGranted | x | x | x | x | usrHistoryControlInterval | x | x | x | x | usrHistoryControlOwner | x | x | x | x | usrHistoryControlStatus | x | x | x | x | usrHistoryObjectVariable | x | x | x | x | usrHistoryObjectSampleType | x | x | x | x | usrHistoryIntervalStart | x | x | x | x | usrHistoryIntervalEnd | x | x | x | x | usrHistoryAbsValue | x | x | x | x | usrHistoryValStatus | x | x | x | x | ------------------------------------------------------- probeCapabilities | x | a | x | x | probeSoftwareRev | x | x | x | x | probeHardwareRev | x | | | x | probeDateTime | x | x | r | x | probeResetControl | | x | r | x | probeDownloadFile | | x | | | probeDownloadTFTPServer | | x | | | probeDownloadAction | | x | | | probeDownloadStatus | | x | | | ------------------------------------------------------- serialMode | | | | | serialProtocol | | | | | serialTimeout | | | | | serialModemInitString | | | | | serialModemHangUpString | | | | | serialModemConnectResp | | | | | serialModemNoConnectResp | | | | | serialDialoutTimeout | | | | | serialStatus | | | | | serialConnectDestIpAddress | | | | | serialConnectType | | | | | serialConnectDialString | | | | | serialConnectSwitchConnectSeq | | | | | serialConnectSwitchDisconnectSeq | | | | | serialConnectSwitchResetSeq | | | | | serialConnectOwner | | | | | serialConnectStatus | | | | | ------------------------------------------------------- netConfigIPAddress | | | | | netConfigSubnetMask | | | | | netConfigStatus | | | | | netDefaultGateway | | | x | | ------------------------------------------------------- trapDestCommunity | | x | x | x | trapDestProtocol | | x | x | x | trapDestAddress | | x | x | x | trapDestOwner | | x | x | x | trapDestStatus | | x | x | x | ------------------------------------------------------- etherStatsDroppedFrames | | x | x | x | etherStatsCreateTime | | x | x | x | historyControlDroppedFrames | | x | x | x | hostControlDroppedFrames | | x | x | x | hostControlCreateTime | | x | x | x | matrixControlDroppedFrames | | x | x | x | matrixControlCreateTime | | x | x | x | channelDroppedFrames | | x | x | x | channelCreateTime | | x | x | x | filterProtocolDirDataLocalIndex | | x | x | x | filterProtocolDirLocalIndex | | x | x | x | ------------------------------------------------------- tokenRingMLStatsDroppedFrames | | x | | | tokenRingMLStatsCreateTime | | x | | | tokenRingPStatsDroppedFrames | | x | | | tokenRingPStatsCreateTime | | x | | | ringStationControlDroppedFrames | | x | | | ringStationControlCreateTime | | x | | | sourceRoutingStatsDroppedFrames | | x | | | sourceRoutingStatsCreateTime | | x | | | ------------------------------------------------------- follow the TimeFilter specification | | x | | x | relax the TimeFilter specification | x | | | | both, configurable | | | x | | ------------------------------------------------------- Original Implementation Report Implementation Report for RFC 2021 : Remote Network Monitoring Management Information Base Version 2 WG Chair: Andy Bierman December 4, 2002 ------------------------------ Introduction ------------ This report summarizes the implementation reports received for RFC 2021. A survey for this RFC was sent to the WG mailing list and the results shown below are aligned with that survey form. Survey Issues ------------- The primary statistical object groups seem to be widely implemented. There were some implementation issues raised, such as: - dropped frames counters not always correct due to limitations in the HW or device driver. - resource limitations constrain number of control entries that may be created and/or number of related protocol entries in the protocolDirTable. - flexible configuration of the protocol directory and complex protocol encapsulation representation makes agent implementation too complicated. None of these issues are considered critical, but they do indicate that the RMON-2 design and functional requirements are too complicated in some areas. There are several secondary statistical objects and configuration objects which are not widely implemented. The lack of implementation experience for these objects indicates that they are not widely useful or applicable to current market requirements for RMON-2 agent technology. A significant design flaw was exposed in the process of collecting implementation reports. The defined behavior of the TimeFilter textual convention (used in many statistical data tables) is quite sub-optimal for SNMP GetNext and GetBulk protocol operations. Basically, TimeFilter causes simple mibwalks to continue without end, and GetBulk response PDUs to contain lots of duplicate information. As a result, many vendors have relaxed the specification for TimeFilter and automatically 'wrap' the lexinext retrieval of tables that include a TimeFilter index, such that duplicate entries are not returned. There is no benefit whatsoever to the official behavior of the TimeFilter. The RMONMIB WG has decided that an attempt should be made to fix the TimeFilter specification such that duplicate entries are not returned by the agent during lexinext retrieval of a table that uses a TimeFilter index. Survey Conclusion ----------------- Due to the numerous unimplemented MIB objects and the problem with tables using a TimeFilter index, the RMONMIB WG believes that RFC 2021 is not ready for advancement at this time. The RMONMIB WG will attempt to fix the TimeFilter issues and cycle the RMON-2 MIB at Proposed Standard. Survey Respondents ------------------ There were three responses, labeled 'A' through 'C' in the response summary section, which correspond to the following vendor implementations: A == Triticom agent B == Network Harmoni agent C == Cisco Systems Network Analysis Module agent Survey Response Summary ----------------------- Key: x == fully implemented r == implemented read-only, no user entries allowed in table a == implemented as OCTET STRING instead of BITS b == value will be reused if entry deleted and then recreated with same semantics, in order to simplify code Developer ID MIB object description A B C --------------------------------------------------- management application | | | | agent | x | x | x | --------------------------------------------------- implemented on an RMON probe | x | x | x | embedded in a network device | | | | --------------------------------------------------- protocolDirLocalIndex | x | x | b | protocolDirDescr | x | x | x | protocolDirType | x | x | x | protocolDirAddressMapConfig | x | x | x | protocolDirHostConfig | x | x | x | protocolDirMatrixConfig | x | x | x | protocolDirOwner | x | x | x | protocolDirStatus | r | x | x | --------------------------------------------------- protocolDistControlDataSource | x | x | x | protocolDistControlDroppedFrames | x | x | x | protocolDistControlCreateTime | x | x | x | protocolDistControlOwner | x | x | x | protocolDistControlStatus | x | x | x | protocolDistStatsPkts | x | x | x | protocolDistStatsOctets | x | x | x | --------------------------------------------------- addressMapInserts | x | x | x | addressMapDeletes | x | x | x | addressMapMaxDesiredEntries | x | x | x | addressMapControlDataSource | x | x | x | addressMapControlDroppedFrames | x | x | x | addressMapControlOwner | x | x | x | addressMapControlStatus | x | x | x | addressMapPhysicalAddress | x | x | x | addressMapLastChange | x | x | x | --------------------------------------------------- hlHostControlDataSource | x | x | x | hlHostControlNlDroppedFrames | x | x | x | hlHostControlNlInserts | x | x | x | hlHostControlNlDeletes | x | x | x | hlHostControlNlMaxDesiredEntries | x | x | x | hlHostControlAlDroppedFrames | x | x | x | hlHostControlAlInserts | x | x | x | hlHostControlAlDeletes | x | x | x | hlHostControlAlMaxDesiredEntries | x | x | x | hlHostControlOwner | x | x | x | hlHostControlStatus | x | x | x | nlHostInPkts | x | x | x | nlHostOutPkts | x | x | x | nlHostInOctets | x | x | x | nlHostOutOctets | x | x | x | nlHostOutMacNonUnicastPkts | x | x | x | nlHostCreateTime | x | x | x | alHostInPkts | x | x | x | alHostOutPkts | x | x | x | alHostInOctets | x | x | x | alHostOutOctets | x | x | x | alHostCreateTime | x | x | x | --------------------------------------------------- hlMatrixControlDataSource | x | x | x | hlMatrixControlNlDroppedFrames | x | x | x | hlMatrixControlNlInserts | x | x | x | hlMatrixControlNlDeletes | x | x | x | hlMatrixControlNlMaxDesiredEntries | x | x | x | hlMatrixControlAlDroppedFrames | x | x | x | hlMatrixControlAlInserts | x | x | x | hlMatrixControlAlDeletes | x | x | x | hlMatrixControlAlMaxDesiredEntries | x | x | x | hlMatrixControlOwner | x | x | x | hlMatrixControlStatus | x | x | x | nlMatrixSDPkts | x | x | x | nlMatrixSDOctets | x | x | x | nlMatrixSDCreateTime | x | x | x | nlMatrixDSPkts | x | x | x | nlMatrixDSOctets | x | x | x | nlMatrixDSCreateTime | x | x | x | alMatrixSDPkts | x | x | x | alMatrixSDOctets | x | x | x | alMatrixSDCreateTime | x | x | x | alMatrixDSPkts | x | x | x | alMatrixDSOctets | x | x | x | alMatrixDSCreateTime | x | x | x | --------------------------------------------------- nlMatrixTopNControlMatrixIndex | x | x | x | nlMatrixTopNControlRateBase | x | x | x | nlMatrixTopNControlTimeRemaining | x | x | x | nlMatrixTopNControlGeneratedReports | x | x | x | nlMatrixTopNControlDuration | x | x | x | nlMatrixTopNControlRequestedSize | x | x | x | nlMatrixTopNControlGrantedSize | x | x | x | nlMatrixTopNControlStartTime | x | x | x | nlMatrixTopNControlOwner | x | x | x | nlMatrixTopNControlStatus | x | x | x | nlMatrixTopNProtocolDirLocalIndex | x | x | x | nlMatrixTopNSourceAddress | x | x | x | nlMatrixTopNDestAddress | x | x | x | nlMatrixTopNPktRate | x | x | x | nlMatrixTopNReversePktRate | x | x | x | nlMatrixTopNOctetRate | x | x | x | nlMatrixTopNReverseOctetRate | x | x | x | --------------------------------------------------- alMatrixTopNControlMatrixIndex | x | x | x | alMatrixTopNControlRateBase | x | x | x | alMatrixTopNControlTimeRemaining | x | x | x | alMatrixTopNControlGeneratedReports | x | x | x | alMatrixTopNControlDuration | x | x | x | alMatrixTopNControlRequestedSize | x | x | x | alMatrixTopNControlGrantedSize | x | x | x | alMatrixTopNControlStartTime | x | x | x | alMatrixTopNControlOwner | x | x | x | alMatrixTopNControlStatus | x | x | x | alMatrixTopNProtocolDirLocalIndex | x | x | x | alMatrixTopNSourceAddress | x | x | x | alMatrixTopNDestAddress | x | x | x | alMatrixTopNAppProtocolDirLocalIndex | x | x | x | alMatrixTopNPktRate | x | x | x | alMatrixTopNReversePktRate | x | x | x | alMatrixTopNOctetRate | x | x | x | alMatrixTopNReverseOctetRate | x | x | x | --------------------------------------------------- usrHistoryControlObjects | x | x | x | usrHistoryControlBucketsRequested | x | x | x | usrHistoryControlBucketsGranted | x | x | x | usrHistoryControlInterval | x | x | x | usrHistoryControlOwner | x | x | x | usrHistoryControlStatus | x | x | x | usrHistoryObjectVariable | x | x | x | usrHistoryObjectSampleType | x | x | x | usrHistoryIntervalStart | x | x | x | usrHistoryIntervalEnd | x | x | x | usrHistoryAbsValue | x | x | x | usrHistoryValStatus | x | x | x | --------------------------------------------------- probeCapabilities | x | a | x | probeSoftwareRev | x | x | x | probeHardwareRev | x | | | probeDateTime | x | x | r | probeResetControl | | x | r | probeDownloadFile | | x | | probeDownloadTFTPServer | | x | | probeDownloadAction | | x | | probeDownloadStatus | | x | | --------------------------------------------------- serialMode | | | | serialProtocol | | | | serialTimeout | | | | serialModemInitString | | | | serialModemHangUpString | | | | serialModemConnectResp | | | | serialModemNoConnectResp | | | | serialDialoutTimeout | | | | serialStatus | | | | serialConnectDestIpAddress | | | | serialConnectType | | | | serialConnectDialString | | | | serialConnectSwitchConnectSeq | | | | serialConnectSwitchDisconnectSeq | | | | serialConnectSwitchResetSeq | | | | serialConnectOwner | | | | serialConnectStatus | | | | --------------------------------------------------- netConfigIPAddress | | | | netConfigSubnetMask | | | | netConfigStatus | | | | netDefaultGateway | | | x | --------------------------------------------------- trapDestCommunity | | x | x | trapDestProtocol | | x | x | trapDestAddress | | x | x | trapDestOwner | | x | x | trapDestStatus | | x | x | --------------------------------------------------- etherStatsDroppedFrames | | x | x | etherStatsCreateTime | | x | x | historyControlDroppedFrames | | x | x | hostControlDroppedFrames | | x | x | hostControlCreateTime | | x | x | matrixControlDroppedFrames | | x | x | matrixControlCreateTime | | x | x | channelDroppedFrames | | x | x | channelCreateTime | | x | x | filterProtocolDirDataLocalIndex | | x | x | filterProtocolDirLocalIndex | | x | x | --------------------------------------------------- tokenRingMLStatsDroppedFrames | | x | | tokenRingMLStatsCreateTime | | x | | tokenRingPStatsDroppedFrames | | x | | tokenRingPStatsCreateTime | | x | | ringStationControlDroppedFrames | | x | | ringStationControlCreateTime | | x | | sourceRoutingStatsDroppedFrames | | x | | sourceRoutingStatsCreateTime | | x | | --------------------------------------------------- follow the TimeFilter specification | | x | | relax the TimeFilter specification | x | | | both, configurable | | | x | ---------------------------------------------------