Minutes - IETF #40 Washington, D.C. ------------------------------------ WG: RMONMIB Area: OPS Meeting: 08dec97 1930-2200 WG Chair: Andy Bierman Minutes: Andy Bierman Summary ------- The RMONMIB MIB WG met to discuss RMON interoperability issues. Many issues were identified and clarified. As a result, some editorial changes will be made to the documents recently submitted to the IESG for review (PI Spec. v2, HC-RMON, and SMON). Agenda ------ - Agenda Bashing - Working Group Status - RMON Interoperability Discussion - Future RMON Projects Discussion Detailed Account of Agenda Items -------------------------------- 1) WG Status The 'final' versions of all work in progress were sent to the Area Director on 12nov97. This included the following documents: * draft-ietf-rmonmib-rmonprot-v2-03.txt (RMON Protocol Identifiers v2) * draft-ietf-rmonmib-smon-04.txt (SMON MIB) * draft-ietf-rmonmib-hcrmon-03.txt (HC-RMON MIB) There will be some clarifying changes made to these documents, which will be reflected in the version published after the first round of reviews. 2) RMON Interoperability Discussion All RMON MIBs were discussed, focusing on (real or potential) implementation differences, caused by ambiguities or errors in the RMON documents. 2.1) TimeFilter MIB walk The RMON-2 MIB clearly states that the TimeMark index should be incremented in a MIB walk of a time-filtered table. Some implementations do not increment the TimeMark, but rather jump to the next table instead of the next TimeMark value for the current table. This is non-compliant, but it allows a simple MIB walk to finish. This is important in some situations, such as during development testing. It was decided that no new MIB object will be added to identify a 'TimeFilter mode'. It was noted that some implementations may provide this capability in a proprietary manner, but the compliant behavior, as specified in the document, will not be changed. 2.2) Gauge64 vs. Counter64 The RMON MIBs define some TCs: ZeroBasedCounter32 (based on Gauge32, defined in RMON-2) ZeroBasedCounter64 (based on Counter64, defined in HC-RMON) ZeroBasedGauge64 (based on Counter64, defined in HC-RMON) The use of Counter64 for the base type is not correct. The correct approach for the HC-RMON MIB is to add an unsigned 64-bit data type to the SNMP SMI. This issue has been deferred to the SNMPv3 WG. 2.3) SmonDataSource Syntax The SMON MIB defines 3 variants of the SmonDataSource TC. The Entity MIB variant is inconsistent with other sources, such as the Interfaces MIB. Resolution: The reference to entPhysicalEntry. will be changed to entPhysicalIndex.. 2.4) Bit Encoding There are some differences in the way bits are encoded in the protocolDirParameters OCTET STRING. There is no confusion related to MIB objects declared as BITS, but this MIB object is only encoded as OCTET STRING INDEX components. The RMON Protocol Identifiers document states that the protocolDirParameter OCTET should be encoded the same as a BIT is encoded (i.e., Least Significant Bit (LSB) on the left). However, the HTTP example shows this OCTET encoded with the (intuitive) LSB on the right (e.g., bit 0 = 0x01, not 0x80). All implementations of this object followed this intuitive approach. Resolution: The 'LSB on the right' encoding will be used Sec. 4.2.6, paragraphs 3 and 4 contradict this, and will be removed. 2.5) Row Creation Many aspects of row creation for specific RMON tables were discussed, as well as proper interpretation of the RowStatus TC defined in RFC 1903. The following is a summary of the issues discussed: 2.5.1) Setting columns in the first PDU without RowStatus NMS apps should be aware that an agent may accept or reject SetPDUs which do not contain a RowStatus varbind for the row (i.e. fooRowStatus = 'createAndGo' or 'createAndWait'). 2.5.2) Creating an Existing Row If an agent receives a SetPDU containing a RowStatus varbind equal to 'createAndGo' or 'createAndWait', for an existing row, the agent must reject the request. 2.5.3) Common Practices It was noted that all probes seem to support multiple step row creation, and that the safest NMS algorithm is the '3 step' approach: PDU 1: Set rowStatus='createAndWait' and ownerString='' PDU 2: Set rest of r/c columns to appropriate values. Do not assume DEFVALs are applied. PDU 3: Set rowStatus to active It is suggested that an agent support row creation which takes an arbitrary number of Set and Get PDU transactions. 2.5.4) notInService vs. notReady Some ambiguity exists in the event an agent does not retain all required resources for a given function. Resolution: RFC 1903 does not mandate that resources must be held by the agent for a row with RowStatus = 'notInService', i.e., the agent may change the RowStatus to 'notReady' at some point after the row was taken out of service by an NMS. Therefore, an RMON probe is not required to honor a Set request to change a given RowStatus value to 'active' at all times, although support for this feature is encouraged. 2.6) ProbeReset Behavior An agent is encouraged to send an SNMP Response, before executing a system reboot, when processing a RMON-2 'probeReset' varbind. If the agent does not respond, the NMS may repeatedly retransmit the request, possibly causing further reboots. An NMS is encouraged to check for coldstart or warmstart traps from the probe, as well as an SNMP Response, when using this reboot feature. 2.7) nlMaxDesired/alMaxDesired Quota Some aspects of the separate 'maxDesired' objects for the network and application layers were clarified: * Each entry in the NL table must be duplicated in the AL table * If an entry isn't in the NL table, it can't be in the AL table * The duplicated AL entries (e.g. alHostInPkts.IP..IP) count towards the alMaxDesired quota * The agent should not reject configurations which cause zero or a seemingly inappropriate number of NL and AL entries to be collected. (Garbage in, Garbage out). * The inserts and deletes counters should be incremented each time a 'maxDesired' quota is enforced, rather than incrementing the associated 'droppedFrames' counter. This should be done even if the 'maxDesired' quota for the table is zero. 2.8) Clearing inserts/deletes counters The 'inserts' and 'deletes' counters within a given control row should not be reset to zero when the associated RowStatus is set to 'notInService'. Instead, the 'deletes' counter should be incremented as all the data entries are removed, so that 'inserts = deletes'. These counters should only be set to zero when the control row is first created. 2.9) UsrHistory Issues 2.9.1) usrHistoryObjectVariable The RMON-2 MIB states that this MIB object must point at a 32-bit INTEGER-based object instance. The UsrHistory extensions in the HC-RMON MIB state that the usrHistoryObjectVariable should be pointed at Counter64 instances to cause rows in the 'HC' usrHistoryTable to be created. The RMON-2 text needs to be changed somehow, to lift the 32-bit restriction on INTEGER-based objects, and allow usrHistoryObjectVariable to point at 64-bit MIB objects if the HC-RMON UsrHistory group is supported. 2.9.2) usrHistoryControlStatus The MIB text is ambiguous with respect to the conditions places on allowing this object to be set to 'active'. Resolution: This object can be set to 'active' as soon as all columns in the usrHistoryControlEntry are valid. None of the entries in the associated usrHistoryObjectTable need to be valid before the usrHistoryControlEntry can be activated. 2.9.3) usrHistoryControlBucketsRequested The RMON-2 MIB states that this object may be changed while the collection is active, causing the usrHistory buffer to be dynamically resized. The WG agreed to remove this feature, since it was not used in the RMON-1 etherHistory feature. Resolution: The RMON-2 MIB needs to be changed to clarify that this object cannot be changed if the associated usrHistoryControlRowStatus is 'active', and all references to dynamic buffer resizing should be removed. 2.10) Protocol Directory Issues Some aspects of prtocolDirTable were clarified: * A probe must count past 'supportedOff' inner nodes, e.g., If ether2.ip.udp.snmp is configured to be counted, then it must be counted, even if ether2.ip.udp is 'supportedOff' for a given function. * When a 'protocolDirConfig' object is set to 'supportedOff', the probe should delete all NL, AL, and/or addressMap data entries. Do not delete any AL entries for child protocols. * A protocolDirEntry for an inner node cannot be deleted if any child entries for that protocol exist in the protocolDirTable. * If an NL protocol is deleted, than all data collection for that protocol and its children is disabled. This only applies to NL protocols, since an NL protocolDirLocalIndex is required to represent any child in an AL table. 2.11) ProtocolDir Wildcarding Network protocols not identified with an EtherType (or LLC/SNAP value), must not be identified as 'wildcard-ether2' when representing the wildcarded version of the protocol. The RMON PI Spec could be more clear on this issue, e.g. NL protocols only encapsulated over LLC should be wildcarded with a base layer value for 'wildcard-llc'. 2.12) ProtocolDirDescr Parsing NMS applications should not parse the protocol description string to identify a given application or inner node, instead of parsing the protocolDirId string. The syntax of this string is not strictly defined, in a manner suitable for parsing. Resolution: The WG may pursue development of some function to make it easy for an NMS to identify any encapsulation of a given application, such as a 'wildcard-terminal' function or an 'application mapping function', from ASCII string to list of protocolDirLocalIndex values, representing the specified application. 2.13) Multiple Network Layers (IP Tunneling) There is some ambiguity regarding the detection and representation of encapsulated network layers, such as 'ipip'. The RMON-2 MIB is not very specific regarding the counting of such packets in the addressMap, NL, and AL tables. An agent may make one of several implementation decisions: * count the innermost NL protocol only * count the outermost NL protocol only * count both the innermost and outermost NL protocols only * count all the NL encapsulations An NMS can detect encapsulations by examining addressMapPhysicalAddress and addressMapNetworkAddress pairs, to detect layering 'upwards' from the MAC address through the highest NL layer. It was noted that an NMS has no way to differentiate between counter increments (or addressMapTable changes) due to tunneled traffic and normal traffic (e.g., A.X sends to B.Y, or X sends to Y). Note also that tunneled network encapsulations can only be counted if such an encapsulation is active in the protocolDirTable (e.g., ether2.ip.ipip or wildcard-ether2.ip.ipip.udp.snmp). 2.14) ProtocolDirTable Auto-Population An agent may add protocol encapsulations as detected on the wire, or it may populate the protocolDirTable with 'everything it knows' upon startup. If an NMS deletes a protocolDirEntry, the probe should not add it back, due to the auto-learning feature. Note that not all WG members feel that auto-learning is a feature, since it causes everything to be counted by default, and forces an NMS to explicitly disable or delete a protocol, for every encapsulation of that protocol, and for every possible encapsulation of all children of that protocol, in order to counteract the auto-learn 'feature'. 2.15) AddressMapTable Configuration When an addressMapControlEntry is deleted, the associated addressMapEntries are not deleted. No new entries or entry updates will be done for the associated value of addressMapSource, and existing adderssMapEntries with that addressMapSource value are untouched until they are removed (because the NL address was detected on a different source port, or the entry is aged out). An agent may disallow multiple addressMapControlEntries with the same value of addressMapControlDataSource, since more than one of such a control entry does not affect the addressMapTable behavior for that data source. An agent must keep only the 'newest' source port mapping for a given network address, even if that network address is detected on multiple source ports. Only one entry per network address is maintained, even though the addressMapSource object appears in the addressMapEntry INDEX. 3) Future RMON Work The remaining meeting time was spent discussing ideas for future development by the RMONMIB WG. Note that there are no plans to recharter the WG after the current RFCs are published, and this discussion was held only to gauge working group interest in various features. 3.1) Application Response Measurement (ARM) Although an effort exists for application-based ARM calculation, a probe-based ARM feature is also desirable. Some RMON vendors have discovered that the RMON-2 Protocol Directory can be used to identify applications to be 'timed', and the existing 'alMatrix' functions can be augmented to convey such information. There is some concern about how to implement this feature in a scalable way, especially for high speed switches, but there is also a great deal of interest in this feature. 3.2) Wildcarded Terminals A protocolDirTable enhancement to allow applications (terminals) to be wildcarded has been suggested. It was rejected at the last interim meeting as a 'base layer extension', as being too disruptive a change. This feature would allow an NMS to count any encapsulation of an application by knowing at least one encapsulation of that application, and would allow an agent to conserve memory by not counting separate encapsulations (above the network layer) for the same application. 3.3) RMON for WAN interfaces This feature is almost completely supported by the new mediaIndependentStatsTable in the HC-RMON MIB, which supports high speed full-duplex interfaces. The RMON MIBs do not support specific WAN media errors or conditions (ala etherStats or tokenRingPStats), but this incremental improvement over a single 'errorInPkts' or 'errorOutPkts' counter is not seen to be worth the effort of developing a WAN_RMON MIB. 3.4) DISMAN-like Extensions for RMON-2 The ability to execute user-defined scripts upon receipt of certain packet types (e.g., via the alMatrixSDTable or the channelTable) can be quite useful. This type of feature has been developed by at least one RMON vendor. The WG agreed that this complicated feature should wait until (at least) the DISMAN solution for notification dispatching is completed, which may not be for a long time. 3.4) FDDI-RMON MIB A suggestion was made to develop media-specific RMON functions for FDDI interfaces. The WG has declined to develop a FDDI-RMON MIB in the past, and nothing has changed to alter that sentiment. 3.5) Username to Address Mapping Table A suggestion was made to augment the existing address mapping function with a 'username to address' mapping function. This may be a mapping between various types of usernames and either a network address or a MAC address. There was a great deal of interest in this feature, although the details are not well understood at this time. 3.6) portCopyTable for full-duplex ports The SMON MIB does not allow an NMS to specify which traffic should be copied from a full-duplex source port, in a portCopyEntry. A future augmentation of this table may be developed to allow the traffic direction to be specified by an NMS for full-duplex source ports (i.e., rx-only, tx-only, or both). 4) Conclusions The WG will remain active under the current charter until the current drafts are published as RFCs. The document changes agreed upon at this meeting will be added to the next release of each draft. After the three documents are published as RFCs, the WG will remain inactive until the Area Director determines there is sufficient need to recharter the RMONMIB WG.