Host Resources MIB
RFC 2790
Document | Type |
RFC
- Draft Standard
(March 2000)
Obsoletes RFC 1514
Was
draft-ops-hostmib
(individual)
|
|
---|---|---|---|
Authors | Pete Grillo , Steven Waldbusser | ||
Last updated | 2013-03-02 | ||
RFC stream | Legacy stream | ||
Formats | |||
IESG | Responsible AD | (None) | |
Send notices to | (None) |
RFC 2790
Network Working Group P. Saint-Andre Internet-Draft JSF Expires: October 2, 2006 March 31, 2006 Internationalized Resource Identifiers (IRIs) and Uniform Resource Identifiers (URIs) for the Extensible Messaging and Presence Protocol (XMPP) draft-saintandre-xmpp-iri-04 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 October 2, 2006. Copyright Notice Copyright (C) The Internet Society (2006). Abstract This document defines the use of Internationalized Resource Identifiers (IRIs) and Uniform Resource Identifiers (URIs) in identifying or interacting with entities that can communicate via the Extensible Messaging and Presence Protocol (XMPP). Saint-Andre Expires October 2, 2006 [Page 1] Internet-Draft XMPP IRIs/URIs March 2006 Table of Contents"KBytes" MAX-ACCESS read-only STATUS current DESCRIPTION "The size of this partition." ::= { hrPartitionEntry 4 } hrPartitionFSIndex OBJECT-TYPE Waldbusser & Grillo Standards Track [Page 22] RFC 2790 Host Resources MIB March 2000 SYNTAX Integer32 (0..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The index of the file system mounted on this partition. If no file system is mounted on this partition, then this value shall be zero. Note that multiple partitions may point to one file system, denoting that that file system resides on those partitions. Multiple file systems may not reside on one partition." ::= { hrPartitionEntry 5 } -- The File System Table -- Registration point for popular File System types, -- for use with hrFSType. These are defined in the -- HOST-RESOURCES-TYPES module. hrFSTypes OBJECT IDENTIFIER ::= { hrDevice 9 } hrFSTable OBJECT-TYPE SYNTAX SEQUENCE OF HrFSEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The (conceptual) table of file systems local to this host or remotely mounted from a file server. File systems that are in only one user's environment on a multi-user system will not be included in this table." ::= { hrDevice 8 } hrFSEntry OBJECT-TYPE SYNTAX HrFSEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A (conceptual) entry for one file system local to this host or remotely mounted from a file server. File systems that are in only one user's environment on a multi-user system will not be included in this table. As an example of how objects in this table are named, an instance of the hrFSMountPoint object might be named hrFSMountPoint.3" INDEX { hrFSIndex } ::= { hrFSTable 1 } Waldbusser & Grillo Standards Track [Page 23] RFC 2790 Host Resources MIB March 2000 HrFSEntry ::= SEQUENCE { hrFSIndex Integer32, hrFSMountPoint InternationalDisplayString, hrFSRemoteMountPoint InternationalDisplayString, hrFSType AutonomousType, hrFSAccess INTEGER, hrFSBootable TruthValue, hrFSStorageIndex Integer32, hrFSLastFullBackupDate DateAndTime, hrFSLastPartialBackupDate DateAndTime } hrFSIndex OBJECT-TYPE SYNTAX Integer32 (1..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "A unique value for each file system local to this host. The value for each file system must remain constant at least from one re-initialization of the agent to the next re-initialization." ::= { hrFSEntry 1 } hrFSMountPoint OBJECT-TYPE SYNTAX InternationalDisplayString (SIZE(0..128)) MAX-ACCESS read-only STATUS current DESCRIPTION "The path name of the root of this file system." ::= { hrFSEntry 2 } hrFSRemoteMountPoint OBJECT-TYPE SYNTAX InternationalDisplayString (SIZE(0..128)) MAX-ACCESS read-only STATUS current DESCRIPTION "A description of the name and/or address of the server that this file system is mounted from. This may also include parameters such as the mount point on the remote file system. If this is not a remote file system, this string should have a length of zero." ::= { hrFSEntry 3 } hrFSType OBJECT-TYPE SYNTAX AutonomousType MAX-ACCESS read-only STATUS current DESCRIPTION Waldbusser & Grillo Standards Track [Page 24] RFC 2790 Host Resources MIB March 2000 "The value of this object identifies the type of this file system." ::= { hrFSEntry 4 } hrFSAccess OBJECT-TYPE SYNTAX INTEGER { readWrite(1), readOnly(2) } MAX-ACCESS read-only STATUS current DESCRIPTION "An indication if this file system is logically configured by the operating system to be readable and writable or only readable. This does not represent any local access-control policy, except one that is applied to the file system as a whole." ::= { hrFSEntry 5 } hrFSBootable OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "A flag indicating whether this file system is bootable." ::= { hrFSEntry 6 } hrFSStorageIndex OBJECT-TYPE SYNTAX Integer32 (0..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The index of the hrStorageEntry that represents information about this file system. If there is no such information available, then this value shall be zero. The relevant storage entry will be useful in tracking the percent usage of this file system and diagnosing errors that may occur when it runs out of space." ::= { hrFSEntry 7 } hrFSLastFullBackupDate OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-write STATUS current DESCRIPTION "The last date at which this complete file system was Waldbusser & Grillo Standards Track [Page 25] RFC 2790 Host Resources MIB March 2000 copied to another storage device for backup. This information is useful for ensuring that backups are being performed regularly. If this information is not known, then this variable shall have the value corresponding to January 1, year 0000, 00:00:00.0, which is encoded as (hex)'00 00 01 01 00 00 00 00'." ::= { hrFSEntry 8 } hrFSLastPartialBackupDate OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-write STATUS current DESCRIPTION "The last date at which a portion of this file system was copied to another storage device for backup. This information is useful for ensuring that backups are being performed regularly. If this information is not known, then this variable shall have the value corresponding to January 1, year 0000, 00:00:00.0, which is encoded as (hex)'00 00 01 01 00 00 00 00'." ::= { hrFSEntry 9 } -- The Host Resources Running Software Group -- -- The hrSWRunTable contains an entry for each distinct piece of -- software that is running or loaded into physical or virtual -- memory in preparation for running. This includes the host's -- operating system, device drivers, and applications. hrSWOSIndex OBJECT-TYPE SYNTAX Integer32 (1..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The value of the hrSWRunIndex for the hrSWRunEntry that represents the primary operating system running on this host. This object is useful for quickly and uniquely identifying that primary operating system." ::= { hrSWRun 1 } hrSWRunTable OBJECT-TYPE SYNTAX SEQUENCE OF HrSWRunEntry MAX-ACCESS not-accessible STATUS current Waldbusser & Grillo Standards Track [Page 26] RFC 2790 Host Resources MIB March 2000 DESCRIPTION "The (conceptual) table of software running on the host." ::= { hrSWRun 2 } hrSWRunEntry OBJECT-TYPE SYNTAX HrSWRunEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A (conceptual) entry for one piece of software running on the host Note that because the installed software table only contains information for software stored locally on this host, not every piece of running software will be found in the installed software table. This is true of software that was loaded and run from a non-local source, such as a network-mounted file system. As an example of how objects in this table are named, an instance of the hrSWRunName object might be named hrSWRunName.1287" INDEX { hrSWRunIndex } ::= { hrSWRunTable 1 } HrSWRunEntry ::= SEQUENCE { hrSWRunIndex Integer32, hrSWRunName InternationalDisplayString, hrSWRunID ProductID, hrSWRunPath InternationalDisplayString, hrSWRunParameters InternationalDisplayString, hrSWRunType INTEGER, hrSWRunStatus INTEGER } hrSWRunIndex OBJECT-TYPE SYNTAX Integer32 (1..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "A unique value for each piece of software running on the host. Wherever possible, this should be the system's native, unique identification number." ::= { hrSWRunEntry 1 } hrSWRunName OBJECT-TYPE SYNTAX InternationalDisplayString (SIZE (0..64)) MAX-ACCESS read-only Waldbusser & Grillo Standards Track [Page 27] RFC 2790 Host Resources MIB March 2000 STATUS current DESCRIPTION "A textual description of this running piece of software, including the manufacturer, revision, and the name by which it is commonly known. If this software was installed locally, this should be the same string as used in the corresponding hrSWInstalledName." ::= { hrSWRunEntry 2 } hrSWRunID OBJECT-TYPE SYNTAX ProductID MAX-ACCESS read-only STATUS current DESCRIPTION "The product ID of this running piece of software." ::= { hrSWRunEntry 3 } hrSWRunPath OBJECT-TYPE SYNTAX InternationalDisplayString (SIZE(0..128)) MAX-ACCESS read-only STATUS current DESCRIPTION "A description of the location on long-term storage (e.g. a disk drive) from which this software was loaded." ::= { hrSWRunEntry 4 } hrSWRunParameters OBJECT-TYPE SYNTAX InternationalDisplayString (SIZE(0..128)) MAX-ACCESS read-only STATUS current DESCRIPTION "A description of the parameters supplied to this software when it was initially loaded." ::= { hrSWRunEntry 5 } hrSWRunType OBJECT-TYPE SYNTAX INTEGER { unknown(1), operatingSystem(2), deviceDriver(3), application(4) } MAX-ACCESS read-only STATUS current DESCRIPTION "The type of this software." Waldbusser & Grillo Standards Track [Page 28] RFC 2790 Host Resources MIB March 2000 ::= { hrSWRunEntry 6 } hrSWRunStatus OBJECT-TYPE SYNTAX INTEGER { running(1), runnable(2), -- waiting for resource -- (i.e., CPU, memory, IO) notRunnable(3), -- loaded but waiting for event invalid(4) -- not loaded } MAX-ACCESS read-write STATUS current DESCRIPTION "The status of this running piece of software. Setting this value to invalid(4) shall cause this software to stop running and to be unloaded. Sets to other values are not valid." ::= { hrSWRunEntry 7 } -- The Host Resources Running Software Performance Group -- -- The hrSWRunPerfTable contains an entry corresponding to -- each entry in the hrSWRunTable. hrSWRunPerfTable OBJECT-TYPE SYNTAX SEQUENCE OF HrSWRunPerfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The (conceptual) table of running software performance metrics." ::= { hrSWRunPerf 1 } hrSWRunPerfEntry OBJECT-TYPE SYNTAX HrSWRunPerfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A (conceptual) entry containing software performance metrics. As an example, an instance of the hrSWRunPerfCPU object might be named hrSWRunPerfCPU.1287" AUGMENTS { hrSWRunEntry } -- This table augments information in -- the hrSWRunTable. ::= { hrSWRunPerfTable 1 } HrSWRunPerfEntry ::= SEQUENCE { hrSWRunPerfCPU Integer32, Waldbusser & Grillo Standards Track [Page 29] RFC 2790 Host Resources MIB March 2000 hrSWRunPerfMem KBytes } hrSWRunPerfCPU OBJECT-TYPE SYNTAX Integer32 (0..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The number of centi-seconds of the total system's CPU resources consumed by this process. Note that on a multi-processor system, this value may increment by more than one centi-second in one centi-second of real (wall clock) time." ::= { hrSWRunPerfEntry 1 } hrSWRunPerfMem OBJECT-TYPE SYNTAX KBytes UNITS "KBytes" MAX-ACCESS read-only STATUS current DESCRIPTION "The total amount of real system memory allocated to this process." ::= { hrSWRunPerfEntry 2 } -- The Host Resources Installed Software Group -- -- The hrSWInstalledTable contains an entry for each piece -- of software installed in long-term storage (e.g. a disk -- drive) locally on this host. Note that this does not -- include software loadable remotely from a network -- server. -- -- Different implementations may track software in varying -- ways. For example, while some implementations may track -- executable files as distinct pieces of software, other -- implementations may use other strategies such as keeping -- track of software "packages" (e.g., related groups of files) -- or keeping track of system or application "patches". -- -- This table is useful for identifying and inventorying -- software on a host and for diagnosing incompatibility -- and version mismatch problems between various pieces -- of hardware and software. hrSWInstalledLastChange OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only Waldbusser & Grillo Standards Track [Page 30] RFC 2790 Host Resources MIB March 2000 STATUS current DESCRIPTION "The value of sysUpTime when an entry in the hrSWInstalledTable was last added, renamed, or deleted. Because this table is likely to contain many entries, polling of this object allows a management station to determine when re-downloading of the table might be useful." ::= { hrSWInstalled 1 } hrSWInstalledLastUpdateTime OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime when the hrSWInstalledTable was last completely updated. Because caching of this data will be a popular implementation strategy, retrieval of this object allows a management station to obtain a guarantee that no data in this table is older than the indicated time." ::= { hrSWInstalled 2 } hrSWInstalledTable OBJECT-TYPE SYNTAX SEQUENCE OF HrSWInstalledEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The (conceptual) table of software installed on this host." ::= { hrSWInstalled 3 } hrSWInstalledEntry OBJECT-TYPE SYNTAX HrSWInstalledEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A (conceptual) entry for a piece of software installed on this host. As an example of how objects in this table are named, an instance of the hrSWInstalledName object might be named hrSWInstalledName.96" INDEX { hrSWInstalledIndex } ::= { hrSWInstalledTable 1 } HrSWInstalledEntry ::= SEQUENCE { hrSWInstalledIndex Integer32, Waldbusser & Grillo Standards Track [Page 31] RFC 2790 Host Resources MIB March 2000 hrSWInstalledName InternationalDisplayString, hrSWInstalledID ProductID, hrSWInstalledType INTEGER, hrSWInstalledDate DateAndTime } hrSWInstalledIndex OBJECT-TYPE SYNTAX Integer32 (1..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "A unique value for each piece of software installed on the host. This value shall be in the range from 1 to the number of pieces of software installed on the host." ::= { hrSWInstalledEntry 1 } hrSWInstalledName OBJECT-TYPE SYNTAX InternationalDisplayString (SIZE (0..64)) MAX-ACCESS read-only STATUS current DESCRIPTION "A textual description of this installed piece of software, including the manufacturer, revision, the name by which it is commonly known, and optionally, its serial number." ::= { hrSWInstalledEntry 2 } hrSWInstalledID OBJECT-TYPE SYNTAX ProductID MAX-ACCESS read-only STATUS current DESCRIPTION "The product ID of this installed piece of software." ::= { hrSWInstalledEntry 3 } hrSWInstalledType OBJECT-TYPE SYNTAX INTEGER { unknown(1), operatingSystem(2), deviceDriver(3), application(4) } MAX-ACCESS read-only STATUS current DESCRIPTION "The type of this software." ::= { hrSWInstalledEntry 4 } Waldbusser & Grillo Standards Track [Page 32] RFC 2790 Host Resources MIB March 2000 hrSWInstalledDate OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "The last-modification date of this application as it would appear in a directory listing. If this information is not known, then this variable shall have the value corresponding to January 1, year 0000, 00:00:00.0, which is encoded as (hex)'00 00 01 01 00 00 00 00'." ::= { hrSWInstalledEntry 5 } -- Conformance information hrMIBCompliances OBJECT IDENTIFIER ::= { hrMIBAdminInfo 2 } hrMIBGroups OBJECT IDENTIFIER ::= { hrMIBAdminInfo 3 } -- Compliance Statements hrMIBCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The requirements for conformance to the Host Resources MIB." MODULE -- this module MANDATORY-GROUPS { hrSystemGroup, hrStorageGroup, hrDeviceGroup } OBJECT hrSystemDate MIN-ACCESS read-only DESCRIPTION "Write access is not required." OBJECT hrSystemInitialLoadDevice MIN-ACCESS read-only DESCRIPTION "Write access is not required." OBJECT hrSystemInitialLoadParameters MIN-ACCESS read-only DESCRIPTION "Write access is not required." OBJECT hrStorageSize MIN-ACCESS read-only DESCRIPTION "Write access is not required." Waldbusser & Grillo Standards Track [Page 33] RFC 2790 Host Resources MIB March 2000 OBJECT hrFSLastFullBackupDate MIN-ACCESS read-only DESCRIPTION "Write access is not required." OBJECT hrFSLastPartialBackupDate MIN-ACCESS read-only DESCRIPTION "Write access is not required." GROUP hrSWRunGroup DESCRIPTION "The Running Software Group. Implementation of this group is mandatory only when the hrSWRunPerfGroup is implemented." OBJECT hrSWRunStatus MIN-ACCESS read-only DESCRIPTION "Write access is not required." GROUP hrSWRunPerfGroup DESCRIPTION "The Running Software Performance Group. Implementation of this group is at the discretion of the implementor." GROUP hrSWInstalledGroup DESCRIPTION "The Installed Software Group. Implementation of this group is at the discretion of the implementor." ::= { hrMIBCompliances 1 } hrSystemGroup OBJECT-GROUP OBJECTS { hrSystemUptime, hrSystemDate, hrSystemInitialLoadDevice, hrSystemInitialLoadParameters, hrSystemNumUsers, hrSystemProcesses, hrSystemMaxProcesses } STATUS current DESCRIPTION "The Host Resources System Group." ::= { hrMIBGroups 1 } Waldbusser & Grillo Standards Track [Page 34] RFC 2790 Host Resources MIB March 2000 hrStorageGroup OBJECT-GROUP OBJECTS { hrMemorySize, hrStorageIndex, hrStorageType, hrStorageDescr, hrStorageAllocationUnits, hrStorageSize, hrStorageUsed, hrStorageAllocationFailures } STATUS current DESCRIPTION "The Host Resources Storage Group.& 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 2. Use of XMPP IRIs and URIs . . . . . . . . . . . . . . . . . 3 2.1 Rationale . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 Form . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Authority Component . . . . . . . . . . . . . . . . . . . 6 2.4 Path Component . . . . . . . . . . . . . . . . . . . . . . 7 2.5 Query Component . . . . . . . . . . . . . . . . . . . . . 7 2.6 Fragment Identifier Component . . . . . . . . . . . . . . 8 2.7 Generation of XMPP IRIs/URIs . . . . . . . . . . . . . . . 9 2.8 Processing of XMPP IRIs/URIs . . . . . . . . . . . . . . . 11 2.9 Internationalization . . . . . . . . . . . . . . . . . . . 14 3. IANA Registration of xmpp URI Scheme . . . . . . . . . . . . 14 3.1 URI scheme name . . . . . . . . . . . . . . . . . . . . . 14 3.2 Status . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.3 URI scheme syntax . . . . . . . . . . . . . . . . . . . . 14 3.4 URI scheme semantics . . . . . . . . . . . . . . . . . . . 15 3.5 Encoding considerations . . . . . . . . . . . . . . . . . 15 3.6 Applications/protocols that use this URI scheme name . . . 16 3.7 Interoperability considerations . . . . . . . . . . . . . 16 3.8 Security considerations . . . . . . . . . . . . . . . . . 16 3.9 Contact . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.10 Author/change controller . . . . . . . . . . . . . . . . 16 3.11 References . . . . . . . . . . . . . . . . . . . . . . . 16 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . 16 5. Security Considerations . . . . . . . . . . . . . . . . . . 16 5.1 Reliability and Consistency . . . . . . . . . . . . . . . 17 5.2 Malicious Construction . . . . . . . . . . . . . . . . . . 17 5.3 Back-End Transcoding . . . . . . . . . . . . . . . . . . . 18 5.4 Sensitive Information . . . . . . . . . . . . . . . . . . 18 5.5 Semantic Attacks . . . . . . . . . . . . . . . . . . . . . 18 5.6 Spoofing . . . . . . . . . . . . . . . . . . . . . . . . . 19 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 6.1 Normative References . . . . . . . . . . . . . . . . . . . 19 6.2 Informative References . . . . . . . . . . . . . . . . . . 19 Author's Address . . . . . . . . . . . . . . . . . . . . . . 22 Intellectual Property and Copyright Statements . . . . . . . 23 Saint-Andre Expires October 2, 2006 [Page 2] Internet-Draft XMPP IRIs/URIs March 2006 1. Introduction The Extensible Messaging and Presence Protocol (XMPP) is a streaming XML technology that enables any two entities on a network to exchange well-defined but extensible XML elements (called "XML stanzas") in close to real time. As specified in [XMPP-CORE], entity addresses as used in communications over an XMPP network must not be prepended with a Uniform Resource Identifier (URI) scheme (as specified in [URI]). However, applications external to an XMPP network may need to identify XMPP entities either as URIs or, in a more modern fashion, as Internationalized Resource Identifiers (IRIs; see [IRI]). Examples of such external applications include databases that need to store XMPP addresses and non-native user agents such as web browsers and calendaring applications that provide interfaces to XMPP services. The format for an XMPP address is defined in [XMPP-CORE]. Such an address may contain nearly any [UNICODE] character and must adhere to various profiles of [STRINGPREP]. The result is that an XMPP address is fully internationalizable and is very close to being an IRI without a scheme. However, given that there is no freestanding registry of IRI schemes, it is necessary to define XMPP identifiers primarily as URIs rather than as IRIs, and to register an xmpp URI scheme rather than an IRI scheme. Therefore this document does the following: o Specifies how to identify XMPP entities as IRIs or URIs. o Specifies how to interact with XMPP entities as IRIs or URIs. o Formally defines the syntax for XMPP IRIs and URIs. o Specifies how to transform XMPP IRIs into URIs and vice-versa. o Registers the xmpp URI scheme. 1.1 Terminology This document inherits terminology from [IRI], [URI], and [XMPP- CORE]. The capitalized 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 [TERMS]. 2. Use of XMPP IRIs and URIs Saint-Andre Expires October 2, 2006 [Page 3] Internet-Draft XMPP IRIs/URIs March 2006 2.1 Rationale As described in [XMPP-IM], instant messaging and presence applications of XMPP must handle im: and pres: URIs (as specified by [CPIM] and [CPP]). However, there are many other applications of XMPP (including network management, workflow systems, generic publish-subscribe, remote procedure calls, content syndication, gaming, and middleware), and these applications do not implement instant messaging and presence semantics. Neither does a generic XMPP entity implement the semantics of any existing URI scheme, such as the http:, ftp:, or mailto: scheme. Therefore, it is appropriate to define a new URI scheme that makes it possible to identify or interact with any XMPP entity (not just instant messaging and presence entities) as an IRI or URI. XMPP IRIs and URIs are defined for use by non-native interfaces and applications, and primarily for the purpose of identification rather than interaction (on the latter distinction, see Section 1.2.2 of [URI]). In order to ensure interoperability on XMPP networks, when data is routed to an XMPP entity (e.g., when an XMPP address is contained in the 'to' or 'from' attribute of an XML stanza) or an XMPP entity is otherwise identified in standard XMPP protocol elements, the entity MUST be addressed as <[node@]domain[/resource]> (i.e., without a prepended scheme), where the "node identifier", "domain identifier", and "resource identifier" portions of an XMPP address conform to the definitions provided in Section 3 of [XMPP- CORE]. (Note: For historical reasons, the term "resource identifier" is used in XMPP to refer to the optional portion of an XMPP address that follows the domain identifier and the "/" separator character (for details, refer to Section 3.4 of [XMPP-CORE]); this use of the term "resource identifier" is not to be confused with the meanings of "resource" and "identifier" provided in Section 1.1 of [URI].) 2.2 Form As described in [XMPP-CORE], an XMPP address used natively on an XMPP network is a string of Unicode characters that (1) conforms to a certain set of [STRINGPREP] profiles and [IDNA] restrictions, (2) follows a certain set of syntax rules, and (3) is encoded as [UTF-8]. The form of such an address can be represented using Augmented Backus-Naur Form ([ABNF]) as: [ node "@" ] domain [ "/" resource ] In this context, the "node" and "resource" rules rely on distinct profiles of [STRINGPREP] and the "domain" rule relies on the concept Saint-Andre Expires October 2, 2006 [Page 4] Internet-Draft XMPP IRIs/URIs March 2006 of an internationalized domain name as described in [IDNA]. (Note: there is no need to refer to punycode in the IRI syntax itself, since any punycode representation would occur only inside an XMPP application in order to represent internationalized domain names; however, it is the responsibility of the processing application to convert [IRI] syntax into [IDNA] syntax before addressing XML stanzas to the specified entity on an XMPP network). Naturally, in order to be converted into an IRI or URI, an XMPP address must be prepended with a scheme (specifically the xmpp scheme) and may also need to undergo transformations that adhere to the rules defined in [IRI] and [URI]. Furthermore, in order to enable more advanced interaction with an XMPP entity rather than simple identification, it is desirable to take advantage of additional aspects of URI syntax and semantics, such as authority components, query components, and fragment identifier components. Therefore, the ABNF syntax for an XMPP IRI is defined as shown below using Augmented Backus-Naur Form as specified by [ABNF], where the "ifragment", "ihost", and "iunreserved" rules are defined in [IRI], the "pct-encoded" rule is defined in [URI], and DQUOTE is defined in [ABNF]: xmppiri = "xmpp" ":" ihierxmpp [ "?" iquerycomp ] [ "#" ifragment ] ihierxmpp = iauthpath / ipathxmpp iauthpath = "//" iauthxmpp [ "/" ipathxmpp ] iauthxmpp = inodeid "@" ihost ipathxmpp = [ inodeid "@" ] ihost [ "/" iresid ] inodeid = *( iunreserved / pct-encoded / nodeallow ) nodeallow = "!" / "$" / "(" / ")" / "*" / "+" / "," / ";" / "=" / "[" / "\" / "]" / "^" / "`" / "{" / "|" / "}" iresid = *( iunreserved / pct-encoded / resallow ) resallow = "!" / DQUOTE / "$" / "(" / ")" / "*" / "+" / "," / ":" / ";" / "<" / "=" / ">" / "[" / "\" / "]" / "^" / "`" / "{" / "|" / "}" iquerycomp = iquerytype [ *ipair ] iquerytype = *iunreserved ipair = ";" ikey "=" ivalue ikey = *iunreserved ivalue = *( iunreserved / pct-encoded ) However, the foregoing syntax is not appropriate for inclusion in the registration of the xmpp URI scheme, since the IANA recognizes only URI schemes rather than IRI schemes. Therefore, the ABNF syntax for an XMPP URI rather than IRI is defined as shown in Section 3.3 Saint-Andre Expires October 2, 2006 [Page 5] Internet-Draft XMPP IRIs/URIs March 2006 section of this document (see below under "IANA Registration"). If it is necessary to convert the IRI syntax into URI syntax, an application MUST adhere to the mapping procedure specified in Section 3.1 of [IRI]. The following is an example of a basic XMPP IRI/URI used for purposes of identifying a node associated with an XMPP server: xmpp:node@example.com Descriptions of the various components of an XMPP IRI/URI are provided in the following sections. 2.3 Authority Component As explained in Section 2.8 of this document, in the absence of an authority component the processing application would authenticate as a configured user at a configured XMPP server. That is, the authority component section is unnecessary and should be ignored if the processing application has been configured with a set of default credentials. In accordance with Section 3.2 of RFC 3986, the authority component is preceded by a double slash ("//") and is terminated by the next slash ("/"), question mark ("?"), or number sign ("#") character, or by the end of the IRI/URI. As explained more fully in Section 2.8.1 of this document, the presence of an authority component signals the processing application to authenticate as the node@domain specified in the authority component rather than as a configured node@domain (see the Security Considerations section of this document regarding authentication). (While it is unlikely that the authority component will be included in most XMPP IRIs or URIs, the scheme allows for its inclusion if appropriate.) Thus, the following XMPP IRI/URI indicates to authenticate as "guest@example.com": xmpp://guest@example.com Note well that this is quite different from the following XMPP IRI/ URI, which identifies a node "guest@example.com" but does not signal the processing application to authenticate as that node: xmpp:guest@example.com Similarly, using a possible query component of "?message" to trigger an interface for sending a message, the following XMPP IRI/URI signals the processing application to authenticate as "guest@example.com" and send a message to "support@example.com": Saint-Andre Expires October 2, 2006 [Page 6] Internet-Draft XMPP IRIs/URIs March 2006 xmpp://guest@example.com/support@example.com?message By contrast, the following XMPP IRI/URI signals the processing application to authenticate as its configured default account and send a message to "support@example.com": xmpp:support@example.com?message 2.4 Path Component The path component of an XMPP IRI/URI identifies an XMPP address or specifies the XMPP address to which an XML stanza shall be directed at the end of IRI/URI processing. For example, the following XMPP IRI/URI identifies a node associated with an XMPP server: xmpp:example-node@example.com The following XMPP IRI/URI identifies a node associated with an XMPP server along with a particular XMPP resource identifier associated with that node: xmpp:example-node@example.com/some-resource Inclusion of a node is optional in XMPP addresses, so that the following XMPP IRI/URI simply identifies an XMPP server: xmpp:example.com 2.5 Query Component There are many potential use cases for encapsulating information in the query component of an XMPP IRI/URI; examples include but are not limited to: o Sending an XMPP message stanza (see [XMPP-IM]). o Adding a roster item (see [XMPP-IM]). o Sending a presence subscription (see [XMPP-IM]). o Probing for current presence information (see [XMPP-IM]). o Triggering a remote procedure call (see [JEP-0009]). o Discovering the identity or capabilities of another entity (see [JEP-0030]). o Joining an XMPP-based text chat room (see [JEP-0045]). Saint-Andre Expires October 2, 2006 [Page 7] Internet-Draft XMPP IRIs/URIs March 2006quot; ::= { hrMIBGroups 2 } hrDeviceGroup OBJECT-GROUP OBJECTS { hrDeviceIndex, hrDeviceType, hrDeviceDescr, hrDeviceID, hrDeviceStatus, hrDeviceErrors, hrProcessorFrwID, hrProcessorLoad, hrNetworkIfIndex, hrPrinterStatus, hrPrinterDetectedErrorState, hrDiskStorageAccess, hrDiskStorageMedia, hrDiskStorageRemoveble, hrDiskStorageCapacity, hrPartitionIndex, hrPartitionLabel, hrPartitionID, hrPartitionSize, hrPartitionFSIndex, hrFSIndex, hrFSMountPoint, hrFSRemoteMountPoint, hrFSType, hrFSAccess, hrFSBootable, hrFSStorageIndex, hrFSLastFullBackupDate, hrFSLastPartialBackupDate } STATUS current DESCRIPTION "The Host Resources Device Group." ::= { hrMIBGroups 3 } hrSWRunGroup OBJECT-GROUP OBJECTS { hrSWOSIndex, hrSWRunIndex, hrSWRunName, hrSWRunID, hrSWRunPath, hrSWRunParameters, hrSWRunType, hrSWRunStatus } STATUS current DESCRIPTION "The Host Resources Running Software Group." ::= { hrMIBGroups 4 } hrSWRunPerfGroup OBJECT-GROUP OBJECTS { hrSWRunPerfCPU, hrSWRunPerfMem } STATUS current Waldbusser & Grillo Standards Track [Page 35] RFC 2790 Host Resources MIB March 2000 DESCRIPTION "The Host Resources Running Software Performance Group." ::= { hrMIBGroups 5 } hrSWInstalledGroup OBJECT-GROUP OBJECTS { hrSWInstalledLastChange, hrSWInstalledLastUpdateTime, hrSWInstalledIndex, hrSWInstalledName, hrSWInstalledID, hrSWInstalledType, hrSWInstalledDate } STATUS current DESCRIPTION "The Host Resources Installed Software Group." ::= { hrMIBGroups 6 } END 5. Type Definitions HOST-RESOURCES-TYPES DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-IDENTITY FROM SNMPv2-SMI hrMIBAdminInfo, hrStorage, hrDevice FROM HOST-RESOURCES-MIB; hostResourcesTypesModule MODULE-IDENTITY LAST-UPDATED "200003060000Z" -- 6 March, 2000 ORGANIZATION "IETF Host Resources MIB Working Group" CONTACT-INFO "Steve Waldbusser Postal: Lucent Technologies, Inc. 1213 Innsbruck Dr. Sunnyvale, CA 94089 USA Phone: 650-318-1251 Fax: 650-318-1633 Email: waldbusser@ins.com In addition, the Host Resources MIB mailing list is dedicated to discussion of this MIB. To join the mailing list, send a request message to hostmib-request@andrew.cmu.edu. The mailing list address is hostmib@andrew.cmu.edu." DESCRIPTION "This MIB module registers type definitions for storage types, device types, and file system types. Waldbusser & Grillo Standards Track [Page 36] RFC 2790 Host Resources MIB March 2000 After the initial revision, this module will be maintained by IANA." REVISION "200003060000Z" -- 6 March 2000 DESCRIPTION "The original version of this module, published as RFC 2790." ::= { hrMIBAdminInfo 4 } -- Registrations for some storage types, for use with hrStorageType hrStorageTypes OBJECT IDENTIFIER ::= { hrStorage 1 } hrStorageOther OBJECT-IDENTITY STATUS current DESCRIPTION "The storage type identifier used when no other defined type is appropriate." ::= { hrStorageTypes 1 } hrStorageRam OBJECT-IDENTITY STATUS current DESCRIPTION "The storage type identifier used for RAM." ::= { hrStorageTypes 2 } hrStorageVirtualMemory OBJECT-IDENTITY STATUS current DESCRIPTION "The storage type identifier used for virtual memory, temporary storage of swapped or paged memory." ::= { hrStorageTypes 3 } hrStorageFixedDisk OBJECT-IDENTITY STATUS current DESCRIPTION "The storage type identifier used for non-removable rigid rotating magnetic storage devices." ::= { hrStorageTypes 4 } hrStorageRemovableDisk OBJECT-IDENTITY STATUS current DESCRIPTION "The storage type identifier used for removable rigid rotating magnetic storage devices." ::= { hrStorageTypes 5 } hrStorageFloppyDisk OBJECT-IDENTITY STATUS current DESCRIPTION Waldbusser & Grillo Standards Track [Page 37] RFC 2790 Host Resources MIB March 2000 "The storage type identifier used for non-rigid rotating magnetic storage devices." ::= { hrStorageTypes 6 } hrStorageCompactDisc OBJECT-IDENTITY STATUS current DESCRIPTION "The storage type identifier used for read-only rotating optical storage devices." ::= { hrStorageTypes 7 } hrStorageRamDisk OBJECT-IDENTITY STATUS current DESCRIPTION "The storage type identifier used for a file system that is stored in RAM." ::= { hrStorageTypes 8 } hrStorageFlashMemory OBJECT-IDENTITY STATUS current DESCRIPTION "The storage type identifier used for flash memory." ::= { hrStorageTypes 9 } hrStorageNetworkDisk OBJECT-IDENTITY STATUS current DESCRIPTION "The storage type identifier used for a networked file system." ::= { hrStorageTypes 10 } -- Registrations for some device types, for use with hrDeviceType hrDeviceTypes OBJECT IDENTIFIER ::= { hrDevice 1 } hrDeviceOther OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used when no other defined type is appropriate." ::= { hrDeviceTypes 1 } hrDeviceUnknown OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used when the device type is unknown." ::= { hrDeviceTypes 2 } Waldbusser & Grillo Standards Track [Page 38] RFC 2790 Host Resources MIB March 2000 hrDeviceProcessor OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a CPU." ::= { hrDeviceTypes 3 } hrDeviceNetwork OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a network interface." ::= { hrDeviceTypes 4 } hrDevicePrinter OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a printer." ::= { hrDeviceTypes 5 } hrDeviceDiskStorage OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a disk drive." ::= { hrDeviceTypes 6 } hrDeviceVideo OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a video device." ::= { hrDeviceTypes 10 } hrDeviceAudio OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for an audio device." ::= { hrDeviceTypes 11 } hrDeviceCoprocessor OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a co-processor." ::= { hrDeviceTypes 12 } hrDeviceKeyboard OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a keyboard device." ::= { hrDeviceTypes 13 } Waldbusser & Grillo Standards Track [Page 39] RFC 2790 Host Resources MIB March 2000 hrDeviceModem OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a modem." ::= { hrDeviceTypes 14 } hrDeviceParallelPort OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a parallel port." ::= { hrDeviceTypes 15 } hrDevicePointing OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a pointing device (e.g., a mouse)." ::= { hrDeviceTypes 16 } hrDeviceSerialPort OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a serial port." ::= { hrDeviceTypes 17 } hrDeviceTape OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a tape storage device." ::= { hrDeviceTypes 18 } hrDeviceClock OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a clock device." ::= { hrDeviceTypes 19 } hrDeviceVolatileMemory OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a volatile memory storage device." ::= { hrDeviceTypes 20 } hrDeviceNonVolatileMemory OBJECT-IDENTITY STATUS current DESCRIPTION "The device type identifier used for a non-volatile memory Waldbusser & Grillo Standards Track [Page 40] RFC 2790 Host Resources MIB March 2000 storage device." ::= { hrDeviceTypes 21 } -- Registrations for some popular File System types, -- for use with hrFSType. hrFSTypes OBJECT IDENTIFIER ::= { hrDevice 9 } hrFSOther OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used when no other defined type is appropriate." ::= { hrFSTypes 1 } hrFSUnknown OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used when the type of file system is unknown." ::= { hrFSTypes 2 } hrFSBerkeleyFFS OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the Berkeley Fast File System." ::= { hrFSTypes 3 } hrFSSys5FS OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the System V File System." ::= { hrFSTypes 4 } hrFSFat OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for DOS's FAT file system." ::= { hrFSTypes 5 } hrFSHPFS OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for OS/2's High Performance File System." ::= { hrFSTypes 6 } Waldbusser & Grillo Standards Track [Page 41] RFC 2790 Host Resources MIB March 2000 hrFSHFS OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the Macintosh Hierarchical File System." ::= { hrFSTypes 7 } hrFSMFS OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the Macintosh File System." ::= { hrFSTypes 8 } hrFSNTFS OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the Windows NT File System." ::= { hrFSTypes 9 } hrFSVNode OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the VNode File System." ::= { hrFSTypes 10 } hrFSJournaled OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the Journaled File System." ::= { hrFSTypes 11 } hrFSiso9660 OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the ISO 9660 File System for CD's." ::= { hrFSTypes 12 } hrFSRockRidge OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the RockRidge File System for CD's." ::= { hrFSTypes 13 } Waldbusser & Grillo Standards Track [Page 42] RFC 2790 Host Resources MIB March 2000 hrFSNFS OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the NFS File System." ::= { hrFSTypes 14 } hrFSNetware OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the Netware File System." ::= { hrFSTypes 15 } hrFSAFS OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the Andrew File System." ::= { hrFSTypes 16 } hrFSDFS OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the OSF DCE Distributed File System." ::= { hrFSTypes 17 } hrFSAppleshare OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the AppleShare File System." ::= { hrFSTypes 18 } hrFSRFS OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the RFS File System." ::= { hrFSTypes 19 } hrFSDGCFS OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the Data General DGCFS." ::= { hrFSTypes 20 } Waldbusser & Grillo Standards Track [Page 43] RFC 2790 Host Resources MIB March 2000 hrFSBFS OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the SVR4 Boot File System." ::= { hrFSTypes 21 } hrFSFAT32 OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the Windows FAT32 File System." ::= { hrFSTypes 22 } hrFSLinuxExt2 OBJECT-IDENTITY STATUS current DESCRIPTION "The file system type identifier used for the Linux EXT2 File System." ::= { hrFSTypes 23 } END 6. Internationalization Considerations This MIB has many objects that identify file-system pathnames on the managed host. Many file systems allow pathnames to be encoded in a variety of character sets (other than ASCII), but do not support the encoding of the actual character set used with the pathname. The implementation strategy is that user interfaces (i.e. character-based shells or graphical applications) will have configuration options that control with which character set they will interpret and display all pathnames. This is often a per-user configuration (e.g. an environment variable), so that users using different languages and character sets on a multi-user system may each work effectively with their preferred character set. A human usually controls this configuration. If an application is not configured or is configured incorrectly, it will often have trouble displaying pathnames in the intended character set. This situation made it important for this MIB to handle two issues: 1) Pathname objects must be able to transfer a variety of character sets with potentially multi-byte encodings; and, Waldbusser & Grillo Standards Track [Page 44] RFC 2790 Host Resources MIB March 2000 2) HostMIB agents will generally not be correctly configured for the appropriate character set to be used for all files on the system, particularly on a system with multiple users using different character sets. It was thus impossible to mandate that the agent tag pathnames with the character set in use. These issues were solved with the introduction of the InternationalDisplayString textual convention, which supports multi- byte encodings. Network management stations should use a local algorithm to determine which character set is in use and how it should be displayed. It is expected that network management station applications will rely on human configuration to choose which character set in which to interpret InternationalDisplayString objects, much like an application running locally on that host. 7. Security Considerations There are a number of management objects defined in this MIB that have a MAX-ACCESS clause of read-write. 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 system operations. There are a number of managed objects in this MIB that may contain sensitive information. The objects in the Running Software Group list information about running software on the system (including the operating system software and version). Some may wish not to disclose to others what software they are running. Further, an inventory of the running software and versions may be helpful to an attacker who hopes to exploit software bugs in certain applications. The same issues exist for the objects in the Installed Software Group. It is thus important to control even GET access to these objects and possibly to even encrypt the values of these object when sending them over the network via SNMP. Not all versions of SNMP provide features for such a secure environment. SNMPv1 by itself is not a secure environment. Even if the network itself is secure (for example by using IPSec), even then, there is no control as to who on the secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB. It is recommended that the implementers consider the security features as provided by the SNMPv3 framework. Specifically, the use of the User-based Security Model RFC 2574 [RFC2574] and the View- based Access Control Model RFC 2575 [RFC2575] is recommended. Waldbusser & Grillo Standards Track [Page 45] RFC 2790 Host Resources MIB March 2000 It is then a customer/user responsibility to ensure that the SNMP entity giving access to an instance of this MIB, is properly configured to give access to the objects only to those principals (users) that have legitimate rights to indeed GET or SET (change/create/delete) them. 8. References [RFC2571] Harrington, D., Presuhn, R. and B. Wijnen, "An Architecture for Describing SNMP Management Frameworks", RFC 2571, April 1999. [RFC1155] Rose, M. and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based Internets", STD 16, RFC 1155, May 1990. [RFC1212] Rose, M. and K. McCloghrie, "Concise MIB Definitions", STD 16, RFC 1212, March 1991. [RFC1215] Rose, M., "A Convention for Defining Traps for use with the SNMP& o Interacting with publish-subscribe channels (see [JEP-0060]). o Providing a SOAP interface (see [JEP-0072]). o Registering with another entity (see [JEP-0077]). Many of these potential use cases are application-specific, and the full range of such applications cannot be foreseen in advance given the continued expansion in XMPP development; however, there is agreement within the Jabber/XMPP developer community that all of the uses envisioned to date can be encapsulated via a "query type", optionally supplemented by one or more "key-value" pairs (this is similar to the "application/x-www-form-urlencoded" MIME type described in [HTML]). As an example, an XMPP IRI/URI intended to launch an interface for sending a message to the XMPP entity "example-node@example.com" might be represented as follows: xmpp:example-node@example.com?message Similarly, an XMPP IRI/URI intended to launch an interface for sending a message to the XMPP entity "example-node@example.com" with a particular subject might be represented as follows: xmpp:example-node@example.com?message;subject=Hello%20World If the processing application does not understand query components or the specified query type, it MUST ignore the query component and treat the IRI/URI as consisting of, for example, <xmpp:example-node@example.com> rather than <xmpp:example-node@example.com?query>. If the processing application does not understand a particular key within the query component, it MUST ignore that key and its associated value. As noted, there exist many kinds of XMPP applications (both actual and potential), and such applications may define query types and keys for use in the query component portion of XMPP URIs. The Jabber Registrar function (see [JEP-0053]) of the Jabber Software Foundation maintains a registry of such query types and keys at <http://www.jabber.org/registrar/querytypes.html>. To help ensure interoperability, any application using the formats defined in this document SHOULD submit any associated query types and keys to that registry in accordance with the procedures specified in [JEP-0147]. 2.6 Fragment Identifier Component As stated in Section 3.5 of [URI], "The fragment identifier component of a URI allows indirect identification of a secondary resource by reference to a primary resource and additional identifying Saint-Andre Expires October 2, 2006 [Page 8] Internet-Draft XMPP IRIs/URIs March 2006 information." Because the resource identified by an XMPP IRI/URI does not make available any media type (see [MIME]) and therefore (in the terminology of [URI]) no representation exists at an XMPP resource, the semantics of the fragment identifier component in XMPP IRIs/URIs are to be "considered unknown and, effectively, unconstrained" (ibid.). Particular XMPP applications MAY make use of the fragment identifier component for their own purposes. However, if a processing application does not understand fragment identifier components or the syntax of a particular fragment identifier component included in an XMPP IRI/URI, it MUST ignore the fragment identifier component. 2.7 Generation of XMPP IRIs/URIs 2.7.1 Generation Method In order to form an XMPP IRI from an XMPP node identifier, domain identifier, and resource identifier, the generating application MUST first ensure that the XMPP address conforms to the rules specified in [XMPP-CORE], including application of the relevant [STRINGPREP]; it MUST then concatenate: 1. the "xmpp" scheme and the ":" character 2. optionally (if an authority component is to be included before the node identifier), the characters "//", an authority component of the form node@domain, and the character "/" 3. optionally (if the XMPP address contained an XMPP "node identifier"), a string of Unicode characters that conforms to the "inodeid" rule, followed by the "@" character 4. a string of Unicode characters that conforms to the "ihost" rule 5. optionally (if the XMPP address contained an XMPP "resource identifier"), the character "/" and a string of Unicode characters that conforms to the "iresid" rule 6. optionally (if a query component is to be included), the "?" character and query component 7. optionally (if a fragment identifier component is to be included), the "#" character and fragment identifier component In order to form an XMPP URI from the resulting IRI, an application MUST adhere to the mapping procedure specified in Section 3.1 of [IRI]. 2.7.2 Generation Notes Certain characters are allowed in the node identifier, domain identifier, and resource identifier portions of a native XMPP address but prohibited by the "inodeid", "ihost", and "iresid" rules of an XMPP IRI. Specifically, the "#" and "?" characters are allowed in Saint-Andre Expires October 2, 2006 [Page 9] Internet-Draft XMPP IRIs/URIs March 2006 node identifiers and the "/", "?", "#", and "@" characters are allowed in resource identifiers, but these characters are used as delimiters in XMPP IRIs; in addition, the " " (US-ASCII space) character is allowed in resource identifiers but prohibited in IRIs. Therefore, all of the foregoing characters MUST be percent-encoded when transforming an XMPP address into an XMPP IRI. Consider the following nasty node in an XMPP address: nasty!#$%()*+,-.;=?[\]^_`{|}~node@example.com That address would be transformed into the following XMPP IRI: xmpp:nasty!%23$%25()*+,-.;=%3F[\]^_`{|}~node@example.com Consider the following repulsive resource in an XMPP address (split into two lines for layout purposes): node@example.com /repulsive !#"$%&'()*+,-./:;<=>?@[\]^_`{|}~resource That address would be transformed into the following XMPP IRI (split into two lines for layout purposes): xmpp:node@example.com /repulsive%20!%23"$%25&'()*+,-.%2F:;<=>%3F%40[\]^_`{|}~resource Furthermore, virtually any non-US-ASCII character is allowed in an XMPP address and therefore also in an XMPP IRI, but URI syntax forbids such characters directly and specifies that such characters MUST be percent-encoded. In order to determine the URI associated with an XMPP IRI, an application MUST adhere to the mapping procedure specified in Section 3.1 of [IRI]. 2.7.3 Generation Example Consider the following XMPP address: <jiři@čechy.example/v Praze> (Note: The string "ř" stands for the Unicode character LATIN SMALL LETTER R WITH CARON and the string "č" stands for the Unicode character LATIN SMALL LETTER C WITH CARON, following the "XML Notation" used in [IRI] to represent characters that cannot be rendered in ASCII-only documents (note also that these characters are represented in their stringprep canonical form). The '<' and '>' characters are not part of the address itself, but are provided to set off the address for legibility. For those who do not read Czech, Saint-Andre Expires October 2, 2006 [Page 10] Internet-Draft XMPP IRIs/URIs March 2006 this example could be Anglicized as "george@czech-lands.example/In Prague".) In accordance with the process specified above, the generating application would do the following to generate a valid XMPP IRI from this address: 1. Ensure that the XMPP address conforms to the rules specified in [XMPP-CORE], including application of the relevant [STRINGPREP] profiles and encoding as a [UTF-8] string. 2. Concatenate the following: 1. the "xmpp" scheme and the ":" character 2. an "authority component" if included (not shown in this example) 3. a string of Unicode characters that represents the XMPP address, transformed in accordance with the "inodeid", "ihost", and "iresid" rules 4. the "?" character followed by a "query component" if appropriate to the application (not shown in this example) 5. the "#" character followed by a "fragment identifier component" if appropriate to the application (not shown in this example) The result is this XMPP IRI: <xmpp:jiři@čechy.example/v%20Praze> In order to generate a valid XMPP URI from the foregoing IRI, the application MUST adhere to the procedure specified in Section 3.1 of [IRI], resulting in the following URI: <xmpp:ji%C5%99i@%C4%8Dechy.example/v%20Praze> 2.8 Processing of XMPP IRIs/URIs 2.8.1 Processing Method If a processing application is presented with an XMPP URI rather than an XMPP IRI, it MUST first convert the URI into an IRI by following the procedure specified in Section 3.2 of [IRI]. In order to decompose an XMPP IRI for interaction with the entity it identifies, a processing application MUST separate: 1. the "xmpp" scheme and the ":" character Saint-Andre Expires October 2, 2006 [Page 11] Internet-Draft XMPP IRIs/URIs March 2006 2. the authority component if included (the string of Unicode characters between the "//" characters and the next "/" character, the "?" character, the "#" character, or the end of the IRI) 3. a string of Unicode characters that represents an XMPP address as transformed in accordance with the "inodeid", "ihost", and "iresid" rules 4. optionally the query component if included, using the "?" character as a separator 5. optionally the fragment identifier component if included, using the "#" character as a separator At this point, the processing application MUST ensure that the resulting XMPP address conforms to the rules specified in [XMPP- CORE], including application of the relevant [STRINGPREP]. The processing application then would either (1) complete further XMPP handling itself or (2) invoke a helper application to complete XMPP handling; such XMPP handling would most likely consist of the following steps: 1. If not already connected to an XMPP server, connecting either as the user specified in the authority component or as the configured user at the configured XMPP server, normally by adhering to the XMPP connection procedures defined in [XMPP- CORE]. (Note: the processing application SHOULD ignore the authority component if it has been configured with a set of default credentials.) 2. Optionally determining the nature of the intended recipient (e.g., via [JEP-0030]). 3. Optionally presenting an appropriate interface to a user based on the nature of the intended recipient and/or the contents of the query component. 4. Generating an XMPP stanza that translates any user or application inputs into their corresponding XMPP equivalents. 5. Sending the XMPP stanza via the authenticated server connection for delivery to the intended recipient. 2.8.2 Processing Notes It may help implementors to note that the first two steps of "further XMPP handling" as described at the end of Section 2.8.1 are similar to HTTP authentication ([HTTP-AUTH]), while the next three steps are similar to the handling of mailto: URIs ([MAILTO]). As noted in Section 2.7.2 of this document, certain characters are allowed in the node identifier, domain identifier, and resource identifier portions of a native XMPP address but prohibited by the "inodeid", "ihost", and "iresid" rules of an XMPP IRI. The percent- Saint-Andre Expires October 2, 2006 [Page 12] Internet-Draft XMPP IRIs/URIs March 2006 encoded octets corresponding to these characters in XMPP IRIs MUST be transformed into the characters allowed in XMPP addresses when processing an XMPP IRI for interaction with the represented XMPP entity. Consider the following nasty node in an XMPP IRI: xmpp:nasty!%23$%()*+,-.;=%3F[\]^_`{|}~node@example.com That IRI would be transformed into the following XMPP address: nasty!#$%()*+,-.;=?[\]^_`{|}~node@example.com Consider the following repulsive resource in an XMPP IRI (split into two lines for layout purposes): xmpp:node@example.com /repulsive%20!%23"$%25&'()*+,-.%2F:;<=>%3F%40[\]^_`{|}~resource That IRI would be transformed into the following XMPP address (split into two lines for layout purposes): node@example.com /repulsive !#"$%&'()*+,-./:;<=>?@[\]^_`{|}~resource 2.8.3 Processing Example Consider the XMPP URI that resulted from the previous example: <xmpp:ji%C5%99i@%C4%8Dechy.example/v%20Praze> In order to generate a valid XMPP IRI from that URI, the application MUST adhere to the procedure specified in Section 3.2 of [IRI], resulting in the following IRI: <xmpp:jiři@čechy.example/v%20Praze> In accordance with the process specified above, the processing application would remove the "xmpp" scheme and ":" character to extract the XMPP address from this XMPP IRI, converting any percent- encoded octets from the "inodeid", "ihost", and "iresid" rules into their character equivalents (e.g., "%20" into the space character). The result is this XMPP address: <jiři@čechy.example/v Praze> Saint-Andre Expires October 2, 2006 [Page 13] Internet-Draft XMPP IRIs/URIs March 2006 2.9 Internationalization Because XMPP addresses are [UTF-8] strings and because the non-US- ASCII octets in XMPP addresses can be easily converted to percent- encoded octets, XMPP addresses are designed to work well with Internationalized Resource Identifiers ([IRI]). In particular, with the exception of stringprep verification, the conversion of syntax- relevant US-ASCII characters (e.g., "?"), and the conversion of percent-encoded octets from the "inodeid", "ihost", and "iresid" rules into their character equivalents (e.g., "%20" into the US-ASCII space character), an XMPP IRI can be constructed directly by prepending the "xmpp" scheme and ":" character to an XMPP address. Furthermore, an XMPP IRI can be converted into URI syntax by adhering to the procedure specified in Section 3.1 of [IRI] and an XMPP URI can be converted into IRI syntax by adhering to the procedure specified in Section 3.2 of [IRI], thus ensuring interoperability with applications that are able to process URIs but unable to process IRIs. 3. IANA Registration of xmpp URI Scheme In accordance with [URI-SCHEMES], this section provides the information required to register the xmpp URI scheme. 3.1 URI scheme name xmpp 3.2 Status permanent 3.3 URI scheme syntax The syntax for an xmpp URI is defined below using Augmented Backus- Naur Form as specified by [ABNF], where the "fragment", "host", "pct- encoded", and "unreserved" rules are defined in [URI] and DQUOTE is defined in [ABNF]: Saint-Andre Expires October 2, 2006 [Page 14] Internet-Draft XMPP IRIs/URIs March 2006 xmppuri = "xmpp" ":" hierxmpp [ "?" querycomp ] [ "#" fragment ] hierxmpp = authpath / pathxmpp authpath = "//" authxmpp [ "/" pathxmpp ] authxmpp = nodeid "@" host pathxmpp = [ nodeid "@" ] host [ "/" resid ] nodeid = *( unreserved / pct-encoded / nodeallow ) nodeallow = "!" / "$" / "(" / ")" / "*" / "+" / "," / ";" / "=" / "[" / "\" / "]" / "^" / "`" / "{" / "|" / "}" resid = *( unreserved / pct-encoded / resallow ) resallow = "!" / DQUOTE / "$" / "(" / ")" / "*" / "+" / "," / ":" / ";" / "<" / "=" / ">" / "[" / "\" / "]" / "^" / "`" / "{" / "|" / "}" querycomp = querytype [ *pair ] querytype = *( unreserved / pct-encoded ) pair = ";" key "=" value key = *( unreserved / pct-encoded ) value = *( unreserved / pct-encoded ) 3.4 URI scheme semantics The xmpp URI scheme identifies entities that natively communicate using the Extensible Messaging and Presence Protocol (XMPP), and is mainly used for identification rather than resource location. However, if an application that processes an xmpp URI enables interaction with the XMPP address identified by the URI, it MUST follow the methodology defined in the Use of XMPP IRIs and URIs (Section 2) section of XXXX to reconstruct the encapsulated XMPP address, connect to an appropriate XMPP server, and send an appropriate XMPP "stanza" (XML fragment) to the XMPP address. (Note: There is no MIME type associated with the xmpp URI scheme.) 3.5 Encoding considerations In addition to XMPP URIs, there will also be XMPP Internationalized Resource Identifiers (IRIs). Prior to converting an Extensible Messaging and Presence Protocol (XMPP) address into an IRI (and in accordance with [XMPP-CORE]), the XMPP address must be represented as [UTF-8] by the generating application (e.g., by transforming an application's internal representation of the address as a UTF-16 string into a UTF-8 string) and the UTF-8 string must then be prepended with the "xmpp" scheme and ":" character. However, because an XMPP URI must contain only US-ASCII characters, the UTF-8 string of an XMPP IRI must be transformed into URI syntax by adhering to the procedure specified in RFC 3987. Saint-Andre Expires October 2, 2006 [Page 15] Internet-Draft XMPP IRIs/URIs March 2006 3.6 Applications/protocols that use this URI scheme name The xmpp URI scheme is intended to be used by interfaces to an XMPP network from non-native user agents such as web browsers, as well as by non-native applications that need to identify XMPP entities as full URIs or IRIs. 3.7 Interoperability considerations There are no known interoperability concerns related to use of the xmpp URI scheme. In order to help ensure interoperability, the Jabber Registrar function of the Jabber Software Foundation maintains a registry of query types and keys that can be used in the query components of XMPP URIs and IRIs, located at <http://www.jabber.org/registrar/querytypes.html>. 3.8 Security considerations See the Security Considerations (Section 5) section of XXXX. 3.9 Contact Peter Saint-Andre [mailto:stpeter@jabber.org, xmpp:stpeter@jabber.org] 3.10 Author/change controller This scheme is registered under the IETF tree. As such, the IETF maintains change control. 3.11 References [XMPP-CORE] 4. IANA Considerations This document registers a URI scheme. The registration template can be found in Section 3 of this document. In order to help ensure interoperability, the Jabber Registrar function of the Jabber Software Foundation maintains a registry of query types and keys that can be used in the query components of XMPP URIs and IRIs, located at <http://www.jabber.org/registrar/querytypes.html>. 5. Security Considerations Providing an interface to XMPP services from non-native applications introduces new security concerns. The security considerations discussed in [IRI], [URI], and [XMPP-CORE] apply to XMPP IRIs, and Saint-Andre Expires October 2, 2006 [Page 16] Internet-Draft XMPP IRIs/URIs March 2006 the security considerations discussed in [URI] and [XMPP-CORE] apply to XMPP URIs. In accordance with Section 2.7 of [URI-SCHEMES] and Section 7 of [URI], particular security considerations are specified in the following sections. 5.1 Reliability and Consistency Given that XMPP addresses of the form node@domain.tld are typically created via registration at an XMPP server or provisioned by an administrator of such a server, it is possible that such addresses may also be unregistered or deprovisioned; therefore the XMPP IRI/URI that identifies such an XMPP address may not reliably and consistently be associated with the same principal, account owner, application, or device. XMPP addresses of the form node@domain.tld/resouce are typically even more ephemeral (since a given XMPP resource identifier is typically associated with a particular, temporary session of an XMPP client at an XMPP server); therefore the XMPP IRI/URI that identifies such an XMPP address probably will not reliably and consistently be associated with the same session. However, the procedures specified in Section 10 of [XMPP-CORE] effectively eliminate any potential confusion that might be introduced by the lack of reliability and consistency for the XMPP IRI/URI that identifies such an XMPP address. XMPP addresses of the form domain.tld are typically long-lived XMPP servers or associated services; although naturally it is possible for server or service administrators to de-commission the server or service at any time, typically the IRIs/URIs that identify such servers or services are the most reliable and consistent of XMPP IRIs/URIs. XMPP addresses of the form domain.tld/resource are not yet common on XMPP networks; however, the reliability and consistency of XMPP IRIs/ URIs that identify such XMPP addresses would likely fall somewhere between those that identify XMPP addresses of the form domain.tld and those that identify XMPP addresses of the form node@domain.tld. 5.2 Malicious Construction Malicious construction of XMPP IRIs/URIs is made less likely by the prohibition on port numbers in XMPP IRIs/URIs (since port numbers are to be discovered using [DNS-SRV] records as specified in [XMPP- CORE]). Saint-Andre Expires October 2, 2006 [Page 17] Internet-Draft XMPP IRIs/URIs March 2006quot;, RFC 1215, March 1991. [RFC2578] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and S. Waldbusser, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. [RFC2579] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and S. Waldbusser, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999. [RFC2580] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and S. Waldbusser, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999. [RFC1157] Case, J., Fedor, M., Schoffstall, M. and J. Davin, "Simple Network Management Protocol", STD 15, RFC 1157, May 1990. [RFC1901] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Introduction to Community-based SNMPv2", RFC 1901, January 1996. [RFC1906] 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. Waldbusser & Grillo Standards Track [Page 46] RFC 2790 Host Resources MIB March 2000 [RFC2572] Case, J., Harrington D., Presuhn R. and B. Wijnen, "Message Processing and Dispatching for the Simple Network Management Protocol (SNMP)", RFC 2572, April 1999 [RFC2574] Blumenthal, U. and B. Wijnen, "User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3)", RFC 2574, April 1999. [RFC1905] 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. [RFC2573] Levi, D., Meyer, P. and B. Stewart, "SNMPv3 Applications", RFC 2573, April 1999. [RFC2575] Wijnen, B., Presuhn, R. and K. McCloghrie, "View-based Access Control Model (VACM) for the Simple Network Management Protocol (SNMP)", RFC 2575, April 1999. [RFC2570] Case, J., Mundy, R., Partain, D. and B. Stewart, "Introduction to Version 3 of the Internet- standard Network Management Framework", RFC 2570, April 1999. [RFC1907] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Management Information Base for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1907, January 1996. [RFC2233] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB", RFC 2233, November 1997. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. Waldbusser & Grillo Standards Track [Page 47] RFC 2790 Host Resources MIB March 2000 9. Acknowledgments This document was produced by the Host Resources MIB working group. Bobby Krupczak's efforts were particularly helpful in the creation of the draft standard version of this document. In addition, the authors gratefully acknowledge the comments of the following individuals: Amatzia Ben-Artzi NetManage Ron Bergman Hitachi, Inc. Steve Bostock Novell Stephen Bush GE Information Systems Jeff Case SNMP Research Chuck Davin Bellcore Ray Edgarton Bell Atlantic Mike Erlinger Aerospace Corporation Tim Farley Magee Enterprises Mark Kepke Hewlett Packard Bobby Krupczak Empire Technologies, Inc. Cheryl Krupczak Empire Technologies, Inc. Harry Lewis IBM Corp. Keith McCloghrie Cisco Systems Greg Minshall Novell Steve Moulton SNMP Research Dave Perkins Synoptics Ed Reeder Objective Systems Integrators Mike Ritter Apple Computer Marshall Rose Dover Beach Consulting Jon Saperia DEC Rodney Thayer Sable Technology Kaj Tesink Bellcore Dean Throop Data General Bert Wijnen Lucent Lloyd Young Lexmark International Waldbusser & Grillo Standards Track [Page 48] RFC 2790 Host Resources MIB March 2000 10. Authors' Addresses Pete Grillo WeSync.com 1001 SW Fifth Ave, Fifth Floor Portland, OR 97204 Phone: 503-425-5051 Fax: 503-827-6718 email: pete@wesync.com Phone: +1 503 827 6717 Steven Waldbusser Lucent Technologies, Inc. 1213 Innsbruck Dr. Sunnyvale CA 94089 Phone: +1 650 318 1251 Fax: +1 650 318 1633 EMail: waldbusser@ins.com 11. 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. Waldbusser & Grillo Standards Track [Page 49] RFC 2790 Host Resources MIB March 2000 12. Full Copyright Statement Copyright (C) The Internet Society (2000). 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. Waldbusser & Grillo Standards Track [Page 50]