applPastTransKindEntry OBJECT-TYPE SYNTAX ApplPastTransKindEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An applPastTransKindEntry reports historical data for a specific service instance or running application element's use of a specific transaction stream in a particular direction in requests or responses (as indicated by the applPastTransFlowReqRsp index) broken down by transaction kind, as indicated by the applPastTransKind index." INDEX { applElmtOrSvc, applElmtOrSvcId, applPastChannelIndex, applPastTransFlowDirection, applPastTransFlowReqRsp, applPastTransKind } ::= { applPastTransKindTable 1 } ApplPastTransKindEntry ::= SEQUENCE { applPastTransKind SnmpAdminString, applPastTransKindTrans Unsigned64TC, applPastTransKindTransLow Unsigned32, applPastTransKindBytes Unsigned64TC, applPastTransKindBytesLow Unsigned32, applPastTransKindTime DateAndTime } applPastTransKind OBJECT-TYPE SYNTAX SnmpAdminString (SIZE (1 .. 32)) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The applPastTransKind index is the human-readable identifier for a particular transaction kind within the context of an application protocol. The values to be used for a particular protocol may be identified in an applicability statement. This index corresponds to applTransactKind." ::= { applPastTransKindEntry 1 } applPastTransKindTrans OBJECT-TYPE SYNTAX Unsigned64TC UNITS "transactions" MAX-ACCESS read-only STATUS current
DESCRIPTION "For this transaction stream, this attribute records the total number of transactions of the type identified by the indexes. The type is characterized according to the receive/transmit direction (applPastTransFlowDirecton), whether it was a request or a response (applPastTransFlowReqRsp), and the protocol-specific transaction kind (applPastTransKind). stream for this transaction kind." ::= { applPastTransKindEntry 2 } applPastTransKindTransLow OBJECT-TYPE SYNTAX Unsigned32 UNITS "transactions" MAX-ACCESS read-only STATUS current DESCRIPTION "The applPastTransKindTransLow attribute reports the low thirty-two bits of applPastTransKindTrans." ::= { applPastTransKindEntry 3 } applPastTransKindBytes OBJECT-TYPE SYNTAX Unsigned64TC UNITS "bytes" MAX-ACCESS read-only STATUS current DESCRIPTION "For this transaction stream and transaction kind, the applPastTransKindBytes attribute reports the number of bytes received or generated (as indicated by the applPastTransFlowDirection index) in requests or responses (as indicated by the applPastTransFlowReqRsp index). All application layer bytes are included in this count, including any application layer wrappers, headers, or other overhead." ::= { applPastTransKindEntry 4 } applPastTransKindBytesLow OBJECT-TYPE SYNTAX Unsigned32 UNITS "bytes" MAX-ACCESS read-only STATUS current DESCRIPTION "The applPastTransKindBytesLow attribute corresponds to the low thirty-two bits of applPastTransKindBytes." ::= { applPastTransKindEntry 5 }
applPastTransKindTime OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "The applPastTransKindTime attribute records the time of the processing (receipt or transmission as indicated by the applPastTransFlowDirection index) of the last request/response (as indicated by the applPastTransFlowReqRsp index) of this kind of transaction on this transaction stream. If no requests/responses of this kind were received/transmitted over this transaction stream, the value of this attribute shall be '0000000000000000'H " DEFVAL { '0000000000000000'H } ::= { applPastTransKindEntry 6 } -- **************************************************************** -- -- applElmtRunControlGroup - monitor and control running -- application elements -- -- **************************************************************** applElmtRunStatusTable OBJECT-TYPE SYNTAX SEQUENCE OF ApplElmtRunStatusEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table provides information on running application elements, complementing information available in the correspondingly indexed sysApplElmtRunTable [31]." ::= { applElmtRunControlGroup 1 } applElmtRunStatusEntry OBJECT-TYPE SYNTAX ApplElmtRunStatusEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An applElmtRunStatusEntry contains information to support the control and monitoring of a single running application element." INDEX { sysApplElmtRunIndex } ::= { applElmtRunStatusTable 1 }
ApplElmtRunStatusEntry ::= SEQUENCE { applElmtRunStatusSuspended TruthValue, applElmtRunStatusHeapUsage Unsigned32, applElmtRunStatusOpenConnections Unsigned32, applElmtRunStatusOpenFiles Gauge32, applElmtRunStatusLastErrorMsg SnmpAdminString, applElmtRunStatusLastErrorTime DateAndTime } applElmtRunStatusSuspended OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "The applElmtRunStatusSuspended attribute reports whether processing by this running application element has been suspended, whether by management request or by other means." ::= { applElmtRunStatusEntry 1 } applElmtRunStatusHeapUsage OBJECT-TYPE SYNTAX Unsigned32 UNITS "bytes" MAX-ACCESS read-only STATUS current DESCRIPTION "The applElmtRunStatusHeapUsage reports the current approximate heap usage by this running application element." ::= { applElmtRunStatusEntry 2 } applElmtRunStatusOpenConnections OBJECT-TYPE SYNTAX Unsigned32 UNITS "connections" MAX-ACCESS read-only STATUS current DESCRIPTION "The applElmtRunStatusOpenConnections attribute reports the current number of open connections in use by this running application element." ::= { applElmtRunStatusEntry 3 } applElmtRunStatusOpenFiles OBJECT-TYPE SYNTAX Gauge32 UNITS "files" MAX-ACCESS read-only STATUS current DESCRIPTION "The applElmtRunStatusOpenFiles attribute reports the
current number of open files in use by this running application element." ::= { applElmtRunStatusEntry 4 } applElmtRunStatusLastErrorMsg OBJECT-TYPE SYNTAX SnmpAdminString MAX-ACCESS read-only STATUS current DESCRIPTION "The applElmtRunStatusLastErrorMessage attribute reports the most recent error message (typically written to stderr or a system error logging facility) from this running application element. If no such message has yet been generated, the value of this attribute shall be a zero-length string." DEFVAL { "" } ::= { applElmtRunStatusEntry 5 } applElmtRunStatusLastErrorTime OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "The applElmtRunStatusLastErrorTime attribute reports the time of the most recent error message in applElmtRunStatusLastErrorMsg. If no such message has yet been generated, the value of this attribute shall be '0000000000000000'H " DEFVAL { '0000000000000000'H } ::= { applElmtRunStatusEntry 6 } -- **************************************************************** -- -- applElmtRunControlTable - control running application -- elements -- -- **************************************************************** applElmtRunControlTable OBJECT-TYPE SYNTAX SEQUENCE OF ApplElmtRunControlEntry MAX-ACCESS not-accessible STATUS current
DESCRIPTION "This table provides the ability to control application elements, complementing information available in the correspondingly indexed sysApplElmtRunTable [31]." ::= { applElmtRunControlGroup 2 } applElmtRunControlEntry OBJECT-TYPE SYNTAX ApplElmtRunControlEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An applElmtRunControlEntry contains information to support the control of a single running application element." INDEX { sysApplElmtRunIndex } ::= { applElmtRunControlTable 1 } ApplElmtRunControlEntry ::= SEQUENCE { applElmtRunControlSuspend TruthValue, applElmtRunControlReconfigure TestAndIncr, applElmtRunControlTerminate TruthValue } applElmtRunControlSuspend OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "Setting this variable to 'true' requests the suspension of processing by this running application element. Setting this variable to 'false' requests that processing be resumed. The effect, if any, will be reported by the applElmtRunStatusSuspended attribute." DEFVAL { false } ::= { applElmtRunControlEntry 1 } applElmtRunControlReconfigure OBJECT-TYPE SYNTAX TestAndIncr MAX-ACCESS read-write STATUS current DESCRIPTION "Changing the value of this variable requests that the running application element re-load its configuration (like SIGHUP for many UNIX-based daemons). Note that completion of a SET on this object only implies that configuration reload was initiated, not necessarily that the reload has been completed." ::= { applElmtRunControlEntry 2 }
applElmtRunControlTerminate OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "Setting the value of applElmtRunControlTerminate to 'true' requests that the running application element terminate processing and exit in an orderly manner. This is a 'polite' shutdown request. When read, this object's value will be 'false' except when orderly termination is in progress. Note that completion of a SET on this object only implies that termination was initiated, not necessarily that the termination has been completed." DEFVAL { false } ::= { applElmtRunControlEntry 3 } -- **************************************************************** -- -- Conformance requirements -- -- **************************************************************** applicationMibGroups OBJECT IDENTIFIER ::= { applicationMibConformance 1} applicationMonitorGroup OBJECT-GROUP OBJECTS { applSrvInstQual, applSrvName, applSrvIndex, applSrvInstance, applOpenChannelOpenTime, applOpenChannelReadRequestsLow, applOpenChannelReadFailures, applOpenChannelBytesReadLow, applOpenChannelLastReadTime, applOpenChannelWriteRequestsLow, applOpenChannelWriteFailures, applOpenChannelBytesWrittenLow, applOpenChannelLastWriteTime, applOpenFileName, applOpenFileSizeHigh, applOpenFileSizeLow, applOpenFileMode, applOpenConnectionTransport,
applOpenConnectionNearEndAddr, applOpenConnectionNearEndpoint, applOpenConnectionFarEndAddr, applOpenConnectionFarEndpoint, applOpenConnectionApplication } STATUS current DESCRIPTION "This group represents the basic capabilities of this MIB." ::= { applicationMibGroups 1 } applicationFastMonitorGroup OBJECT-GROUP OBJECTS { applOpenChannelReadRequests, applOpenChannelBytesRead, applOpenChannelWriteRequests, applOpenChannelBytesWritten } STATUS current DESCRIPTION "This group comprises 64-bit counters mandatory in high-throughput environments, where 32-bit counters could wrap in less than an hour." ::= { applicationMibGroups 2 } applicationTransactGroup OBJECT-GROUP OBJECTS { applTransactStreamDescr, applTransactStreamUnitOfWork, applTransactStreamInvokesLow, applTransactStreamInvCumTimes, applTransactStreamInvRspTimes, applTransactStreamPerformsLow, applTransactStreamPrfCumTimes, applTransactStreamPrfRspTimes, applTransactFlowTransLow, applTransactFlowBytesLow, applTransactFlowTime, applTransactKindTransLow, applTransactKindBytesLow, applTransactKindTime } STATUS current DESCRIPTION "This group comprises objects appropriate from monitoring transaction-structured flows." ::= { applicationMibGroups 3 } applicationFastTransactGroup OBJECT-GROUP OBJECTS { applTransactStreamInvokes, applTransactStreamPerforms, applTransactFlowTrans, applTransactFlowBytes,
applTransactKindTrans, applTransactKindBytes } STATUS current DESCRIPTION "This group comprises 64-bit transaction counters required in high-throughput environments, where 32-bit counters could wrap in less than an hour." ::= { applicationMibGroups 4 } applicationHistoryGroup OBJECT-GROUP OBJECTS { applPastChannelControlCollect, applPastChannelControlMaxRows, applPastChannelControlTimeLimit, applPastChannelControlRemItems, applPastChannelOpenTime, applPastChannelCloseTime, applPastChannelReadReqsLow, applPastChannelReadFailures, applPastChannelBytesReadLow, applPastChannelLastReadTime, applPastChannelWriteReqsLow, applPastChannelWriteFailures, applPastChannelBytesWritLow, applPastChannelLastWriteTime, applPastFileName, applPastFileSizeHigh, applPastFileSizeLow, applPastFileMode, applPastConTransport, applPastConNearEndAddr, applPastConNearEndpoint, applPastConFarEndAddr, applPastConFarEndpoint, applPastConApplication} STATUS current DESCRIPTION "This group models basic historical data." ::= { applicationMibGroups 5 } applicationFastHistoryGroup OBJECT-GROUP OBJECTS { applPastChannelReadRequests, applPastChannelBytesRead, applPastChannelWriteRequests, applPastChannelBytesWritten} STATUS current
DESCRIPTION "This group comprises additional 64-bit objects required for recording historical data in high-volume environments, where a 32-bit integer would be insufficient." ::= { applicationMibGroups 6 } applicationTransHistoryGroup OBJECT-GROUP OBJECTS { applPastTransStreamDescr, applPastTransStreamUnitOfWork, applPastTransStreamInvokesLow, applPastTransStreamInvCumTimes, applPastTransStreamInvRspTimes, applPastTransStreamPerformsLow, applPastTransStreamPrfCumTimes, applPastTransStreamPrfRspTimes, applPastTransFlowTransLow, applPastTransFlowBytesLow, applPastTransFlowTime, applPastTransKindTransLow, applPastTransKindBytesLow, applPastTransKindTime } STATUS current DESCRIPTION "This group represents historical data for transaction- structured information streams." ::= { applicationMibGroups 7 } applicationFastTransHistoryGroup OBJECT-GROUP OBJECTS { applPastTransFlowTrans, applPastTransFlowBytes, applPastTransKindTrans, applPastTransKindBytes, applPastTransStreamPerforms, applPastTransStreamInvokes } STATUS current DESCRIPTION "This group contains 64-bit objects required for historical records on high-volume transaction-structured streams, where 32-bit integers would be insufficient." ::= { applicationMibGroups 8 } applicationRunGroup OBJECT-GROUP OBJECTS { applElmtRunStatusSuspended, applElmtRunStatusHeapUsage, applElmtRunStatusOpenConnections, applElmtRunStatusOpenFiles, applElmtRunStatusLastErrorMsg, applElmtRunStatusLastErrorTime,
applElmtRunControlSuspend, applElmtRunControlReconfigure, applElmtRunControlTerminate } STATUS current DESCRIPTION "This group represents extensions to the system application MIB." ::= { applicationMibGroups 9 } applicationMibCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for the application MIB." MODULE MANDATORY-GROUPS { applicationMonitorGroup, applicationHistoryGroup, applicationRunGroup } OBJECT applPastChannelControlCollect MIN-ACCESS read-only DESCRIPTION "This object should be limited to read-only access in environments with inadequate security." OBJECT applPastChannelControlMaxRows MIN-ACCESS read-only DESCRIPTION "This object should be limited to read-only access in environments with inadequate security." OBJECT applPastChannelControlTimeLimit MIN-ACCESS read-only DESCRIPTION "This object should be limited to read-only access in environments with inadequate security." OBJECT applElmtRunControlSuspend MIN-ACCESS read-only DESCRIPTION "This object should be limited to read-only access in environments with inadequate security."
OBJECT applElmtRunControlReconfigure MIN-ACCESS read-only DESCRIPTION "This object should be limited to read-only access in environments with inadequate security." OBJECT applElmtRunControlTerminate MIN-ACCESS read-only DESCRIPTION "This object should be limited to read-only access in environments with inadequate security." GROUP applicationTransactGroup DESCRIPTION "The applicationTransactGroup is required when the information stream processed has a transaction structure. " GROUP applicationTransHistoryGroup DESCRIPTION "The applicationTransHistoryGroup must be implemented if applicationTransactGroup and applicationHistoryGroup are implemented." GROUP applicationFastMonitorGroup DESCRIPTION "The applicationFastMonitorGroup is mandatory when the applicationMonitorGroup is implemented and its counts group may exceed what can be represented in 32 bits." GROUP applicationFastTransactGroup DESCRIPTION "The applicationFastTransactGroup is mandatory when the applicationTransactGroup is implemented and its counts may exceed what can be represented in 32 bits." GROUP applicationFastHistoryGroup DESCRIPTION "The applicationFastHistoryGroup is mandatory when the applicationHistoryGroup is implemented and its counts may exceed what can be represented in 32 bits."
GROUP applicationFastTransHistoryGroup DESCRIPTION "The applicationFastTransHistoryGroup is mandatory when the applicationTransHistoryGroup is implemented and its counts may exceed what can be represented in 32 bits." ::= { applicationMibConformance 2 } END6. Implementation Issues
Unlike the system application MIB [31], in many environments support for much of this MIB requires instrumentation built into the managed resource. Some tables may be implemented by a single monitor process; for others, the implementation may be distributed within the managed system with the resources being managed. As a practical matter, this means that the management infrastructure of the managed system must support different subagents taking responsibility for different rows of a single table. This can be supported by AgentX [25], as well as some other subagent protocols such as [8], [9], and [11]. The sysApplRunElmtIndex is the key connection between this MIB and the systems application MIB. Implementations of these two MIBs intended to run concurrently on a given platform must employ a consistent policy for assigning this value to running application elements. Some of the objects defined in this MIB may carry a high run-time cost in some environments. For example, tracking transaction elapsed time could be expensive if it required two kernel calls (start and finish) per transaction. Similarly, maintaining tables of per- transaction information, rather than aggregating information by transaction type or transaction stream, could have significant storage and performance impacts. Unless a collision-free mechanism for allocating service instance indexes is in place, the structure of the service-level tables makes an index-reservation mechanism necessary. AgentX [25] is an example of a subagent protocol capable of satisfying this requirement.7. Intellectual Property
The IETF takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on the IETF's procedures with respect to rights in standards-track and standards-related documentation can be found in BCP-11. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification can be obtained from the IETF Secretariat. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to practice this standard. Please address the information to the IETF Executive Director.8. Acknowledgements
This document was produced by the Application MIB working group. The editor gratefully acknowledges the comments and contributions of the following individuals: Harrie Hazewinkel Carl Kalbfleisch Cheryl Krupczak David Partain Jon Saperia Juergen Schoenwaelder Kenneth White9. Security Considerations
By making potentially sensitive information externally accessible, the capabilities supported by the MIB have the potential of becoming security problems. How security fits into SNMP frameworks is described in [26], and a specific access control model is described in [30]. The tables in this MIB are organized to separate sensitive control capabilities from less sensitive usage information. For example, the objects to control application suspend/resume are separated from those to handle reconfiguration, which in turn are distinct from those for termination. This recognizes the need to support configurations where the level of authorization needed by a manager to do a "reconfigure" might be substantially less than the level needed to terminate an application element. By keeping these in
separate columns, we make it possible to set up access control that allows, for example, "reconfigure" but not "kill". The MIB is structured to be useful for managers with read-only access rights. In some environments, it may be approprate to restrict even read-only access to these MIBs. The capabilities supported by this MIB include several that may be of value to a security administrator. These include the ability to monitor the level of usage of a given application, and to check the integrity of application components.10. References
[1] ARM Working Group, "Application Response Measurement (ARM) API Guide, Version 2", September, 1997. [2] IEEE P1387.2, POSIX System Administration - Part 2: Software Administration. (Draft) [3] ITU-T Recommendation X.744 | ISO/IEC IS 10164-18:1996, Information Technology - Open Systems Interconnection - Systems Management: Software Management Function, 1996. [4] Rose, M. and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based Internets", STD 16, RFC 1155, May 1990. [5] Case, J., Fedor, M., Schoffstall, M. and J. Davin, "Simple Network Management Protocol", STD 15, RFC 1157, May 1990. [6] Rose, M. and K. McCloghrie, "Concise MIB Definitions", STD 16, RFC 1212, March 1991. [7] Rose, M., "A Convention for Defining Traps for use with the SNMP", RFC 1215, March 1991. [8] Rose, M., "SNMP MUX Protocol and MIB", RFC 1227, May 1991. [9] Carpenter, G. and B. Wijnen, "SNMP-DPI Simple Network Management Protocol Distributed Program Interface", RFC 1228, May 1991. [10] Grillo, P. and S. Waldbusser, "Host Resources MIB", RFC 1514, September 1993. [11] Carpenter, G., Curran, K., Sehgal, A., Waters, G. and B. Wijnen, "Simple Network Management Protocol Distributed Protocol Interface Version 2.0", RFC 1592, March 1994.
[12] Brower, D., Purvy, R., Daniel, A., Sinykin, M. and J. Smith, "Relational Database Management System (RDBMS) Management Information Base (MIB) using SMIv2", RFC 1697, August 1994. [13] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700, October 1994. [14] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Introduction to Community-based SNMPv2", RFC 1901, January 1996. [15] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. [16] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999. [17] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999. [18] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Protocol Operations for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1905, January 1996. [19] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Transport Mappings for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1906, January 1996. [20] McCloghrie, K. and A. Bierman, "Entity MIB using SMIv2", RFC 2037, October 1996. [21] Kalbfleisch, C., "Applicability of Standards Track MIBs to Management of World Wide Web Servers", RFC 2039, November 1996. [22] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [23] Freed, N. and S. Kille, "Network Services Monitoring MIB", RFC 2248, January 1998. [24] Freed, N. and S. Kille, "Mail Monitoring MIB", RFC 2249, January 1998. [25] Daniele, M., Francisco, D. and B. Wijnen, "Agent Extensibility (AgentX) Protocol", RFC 2257, January, 1998. [26] Harrington, D., Presuhn, R. and B. Wijnen, "An Architecture for
describing SNMP Management Frameworks", RFC 2571, May 1999. [27] Case, J., Harrington D., Presuhn R. and B. Wijnen, "Message Processing and Dispatching for the Simple Network Management Protocol (SNMP)", RFC 2572, May 1999. [28] Levi, D., Meyer, P. and B. Stewart, "SNMPv3 Applications", RFC 2573, May 1999. [29] Blumenthal, U. and B. Wijnen, "User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3)", RFC 2574, May 1999. [30] Wijnen, B., Presuhn, R. and K. McCloghrie, "View-based Access Control Model for the Simple Network Management Protocol (SNMP)", RFC 2575, May 1999. [31] Krupczak, C. and J. Saperia, "Definitions of System-Level Managed Objects for Applications", RFC 2287, February 1998.11. Authors' Addresses
Carl Kalbfleisch Verio, Inc. 1950 Stemmons Freeway 2004 INFOMART Dallas, TX 75207 USA Phone: +1 972-238-8303 Fax: +1 972-238-0268 EMail: cwk@verio.net Cheryl Krupczak Empire Technologies, Inc. 541 Tenth Street, NW Suite 169 Atlanta, GA 30318 USA Phone: +1 770-384-0184 EMail: cheryl@empiretech.com
Randy Presuhn (Editor) BMC Software, Inc. 965 Stewart Drive Sunnyvale, CA 94086 USA Phone: +1 408-616-3100 Fax: +1 408-616-3101 EMail: randy_presuhn@bmc.com Jon Saperia IronBridge Networks 55 Hayden Avenue Lexington, MA 02173 USA Phone: +1 781-402-8029 Fax: +1 781-402-8090 EMail: saperia@mediaone.net
12. Full Copyright Statement
Copyright (C) The Internet Society (1999). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Acknowledgement Funding for the RFC Editor function is currently provided by the Internet Society.