Network Working Group M. Rose
Internet-Draft Invisible Worlds, Inc.
Expires: December 26, 2001 G. Klyne
Baltimore Technologies
D. Crocker
Brandenburg Consulting
June 27, 2001
The APEX Access Service
draft-ietf-apex-access-05
Status of this Memo
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026.
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 December 26, 2001.
Copyright Notice
Copyright (C) The Internet Society (2001). All Rights Reserved.
Abstract
This memo describes the APEX access service, addressed as the well-
known endpoint "apex=access". The access service is used to control
use of both the APEX "relaying mesh" and other APEX services.
Rose, et. al. Expires December 26, 2001 [Page 1]
Internet-Draft The APEX Access Service June 2001
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Management of Access Information . . . . . . . . . . . . . . . 4
2.1 Querying Access Information . . . . . . . . . . . . . . . . . 5
2.2 Retrieval of Access Information . . . . . . . . . . . . . . . 7
2.3 Update of Access Information . . . . . . . . . . . . . . . . . 8
3. Format of Access Entries . . . . . . . . . . . . . . . . . . . 12
3.1 Finding the Appropriate Entry: Matching Owners and Actors . . 14
4. The Access Service . . . . . . . . . . . . . . . . . . . . . . 16
4.1 Use of XML and MIME . . . . . . . . . . . . . . . . . . . . . 17
4.2 The Query Operation . . . . . . . . . . . . . . . . . . . . . 19
4.3 The Get Operation . . . . . . . . . . . . . . . . . . . . . . 20
4.4 The Set Operation . . . . . . . . . . . . . . . . . . . . . . 21
4.5 The Reply Operation . . . . . . . . . . . . . . . . . . . . . 24
5. Registration: The Access Service . . . . . . . . . . . . . . . 25
6. The Access Service DTD . . . . . . . . . . . . . . . . . . . . 26
7. Security Considerations . . . . . . . . . . . . . . . . . . . 29
References . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 30
A. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 31
B. Revision History . . . . . . . . . . . . . . . . . . . . . . . 32
B.1 Changes from draft-ietf-apex-access-04 . . . . . . . . . . . . 32
B.2 Changes from draft-ietf-apex-access-03 . . . . . . . . . . . . 32
B.3 Changes from draft-ietf-apex-access-02 . . . . . . . . . . . . 32
B.4 Changes from draft-ietf-apex-access-01 . . . . . . . . . . . . 32
B.5 Changes from draft-ietf-apex-access-00 . . . . . . . . . . . . 32
Full Copyright Statement . . . . . . . . . . . . . . . . . . . 33
Rose, et. al. Expires December 26, 2001 [Page 2]
Internet-Draft The APEX Access Service June 2001
1. Introduction
This memo describes a access service that is built upon the APEX [1]
"relaying mesh". The APEX access service is used to control use of
both the relaying mesh and other APEX services.
APEX, at its core, provides a best-effort datagram service. Within
an administrative domain, all relays must be able to handle messages
for any endpoint within that domain. APEX services are logically
defined as endpoints but given their ubiquitous semantics they do not
necessarily need to be associated with a single physical endpoint.
As such, they may be provisioned co-resident with each relay within
an administrative domain, even though they are logically provided on
top of the relaying mesh, i.e.,
+----------+ +----------+ +----------+ +---------+
| APEX | | APEX | | APEX | | |
| access | | presence | | report | | ... |
| service | | service | | service | | |
+----------+ +----------+ +----------+ +---------+
| | | |
| | | |
+----------------------------------------------------------------+
| |
| APEX core |
| |
+----------------------------------------------------------------+
That is, applications communicate with an APEX service by exchanging
data with a "well-known endpoint" (WKE).
APEX applications communicate with the access service by exchanging
data with the well-known endpoint "apex=access" in the corresponding
administrative domain, e.g., "apex=access@example.com" is the
endpoint associated with the access service in the "example.com"
administrative domain.
Note that within a single administrative domain, the relaying mesh
makes use of the APEX access service in order to determine if an
originator is allowed to transmit data to a recipient (c.f., Step 5.3
of Section 4.4.4.1 of [1]).
Rose, et. al. Expires December 26, 2001 [Page 3]
Internet-Draft The APEX Access Service June 2001
2. Management of Access Information
Access information is organized around access entries, each of which
contains:
o an owner: an APEX address with which the entry is associated;
o an actor: an APEX address that is granted permission to perform
some action in the context of the owner;
o a list of actions; and,
o a timestamp indicating when the service last created or modified
the access entry.
The access entry for a given owner controls access to a potentially
large range of different APEX services, such as data delivery, access
control, and presence information. In addition, Section 4.5 of [1]
discusses APEX access policies that govern such activities as peer
authentication, message relaying, and so on.
Management of access information falls into three categories:
o applications may query the access service to see if one or more
actions are allowed;
o applications may retrieve access information associated with an
owner/actor combination; and,
o applications may modify (i.e., create, replace, or delete) access
information associated with an owner/actor combination.
Each is now described in turn.
Rose, et. al. Expires December 26, 2001 [Page 4]
Internet-Draft The APEX Access Service June 2001
2.1 Querying Access Information
When an application wants to determine whether one or more actions
are allowed for an owner/actor combination, it sends a "query"
element to the service, e.g.,
+-------+ +-------+
| | -- data -------> | |
| appl. | | relay |
| | <--------- ok -- | |
+-------+ +-------+
C:
S:
Rose, et. al. Expires December 26, 2001 [Page 5]
Internet-Draft The APEX Access Service June 2001
The service immediately responds with either an allow or deny
operation containing the same transaction-identifier, e.g.,
+-------+ +-------+
| | <------- data -- | |
| relay | |access |
| | -- ok ---------> | svc. |
+-------+ +-------+
C:
S:
or
C:
S:
Rose, et. al. Expires December 26, 2001 [Page 6]
Internet-Draft The APEX Access Service June 2001
2.2 Retrieval of Access Information
When an application wants to retrieve the access entry associated
with an owner/actor combination, it sends a "get" element to the
service, e.g.,
+-------+ +-------+
| | -- data -------> | |
| appl. | | relay |
| | <--------- ok -- | |
+-------+ +-------+
C:
S:
The service immediately responds with a set operation containing the
access entry and the same transaction-identifier, e.g.,
+-------+ +-------+
| | <------- data -- | |
| relay | |access |
| | -- ok ---------> | svc. |
+-------+ +-------+
C:
S:
Rose, et. al. Expires December 26, 2001 [Page 7]
Internet-Draft The APEX Access Service June 2001
2.3 Update of Access Information
When an application wants to create or modify an access entry
associated with an owner/actor combination, it sends a "set" element
to the service containing the new access entry, e.g.,
+-------+ +-------+
| | -- data -------> | |
| appl. | | relay |
| | <--------- ok -- | |
+-------+ +-------+
C:
S:
Note that Step 4 of Section 4.4 requires that the "lastUpdate"
attribute of an access entry be supplied in order to update that
entry; accordingly, applications must successfully retrieve an access
entry prior to trying to modify that entry.
Rose, et. al. Expires December 26, 2001 [Page 8]
Internet-Draft The APEX Access Service June 2001
The service immediately responds with a reply operation containing
the same transaction-identifier, e.g.,
+-------+ +-------+
| | <------- data -- | |
| relay | |access |
| | -- ok ---------> | svc. |
+-------+ +-------+
C:
S:
Note that Steps 6.2 and 9.2 of Section 4.4 require that the access
service update the "lastUpdate" attribute of an access entry when it
is created or modified.
The service also immediately sends a set operation to the address
associated with the access entry, e.g.,
+-------+ +-------+
| | <------- data -- | |
| relay | |access |
| | -- ok ---------> | svc. |
+-------+ +-------+
C:
S:
Rose, et. al. Expires December 26, 2001 [Page 9]
Internet-Draft The APEX Access Service June 2001
When an application wants to delete the access entry associated with
an owner/actor combination, it sends a "set" element to the service
omitting the permitted actions, e.g.,
+-------+ +-------+
| | -- data -------> | |
| appl. | | relay |
| | <--------- ok -- | |
+-------+ +-------+
C:
S:
The service immediately responds with a reply operation containing
the same transaction-identifier, e.g.,
+-------+ +-------+
| | <------- data -- | |
| relay | |access |
| | -- ok ---------> | svc. |
+-------+ +-------+
C:
S:
Rose, et. al. Expires December 26, 2001 [Page 10]
Internet-Draft The APEX Access Service June 2001
The service also immediately sends a set operation to the address
associated with the access entry, e.g.,
+-------+ +-------+
| | <------- data -- | |
| relay | |access |
| | -- ok ---------> | svc. |
+-------+ +-------+
C:
S:
Because there are no actions associated with this access entry, the
owner knows that the entry has been deleted.
Rose, et. al. Expires December 26, 2001 [Page 11]
Internet-Draft The APEX Access Service June 2001
3. Format of Access Entries
Each administrative domain is responsible for maintaining one or more
"access entries" for each of its endpoints and associated
subaddresses (regardless of whether those addresses are currently
attached to the relaying mesh).
A separate access entry is required for each actor or group of actors
for whom access permission is specified. Section 6 defines the
syntax for access entries. Each access entry has an "owner"
attribute, an "actor" attribute, an "actions" attribute, a
"lastUpdate" attribute, and no content:
o the "owner" attribute specifies the address (endpoint or
subaddress) associated with the access entry;
o the "actor" attribute specifies an entity or group of entities for
whom access permissions are specified, as described below;
o the "actions" attribute specifies the permissions granted to the
actor in the context of the owner; and,
o the "lastUpdate" attribute specifies the date and time that the
service last created or modified the access entry.
An action is specified as a service/operation pair, e.g., the action
"presence:publish" refers to the "publish" operation of the
"presence" service. Two values are reserved:
o "all" is used to refer to all services and/or operations, e.g.,
"all:data", "presence:all"; and,
o "core" is used to refer to the service implemented by the relaying
mesh, e.g., the "core:data" permission is consulted by the
relaying mesh (c.f., Step 5.3 of Section 4.4.4.1 of [1]).
Rose, et. al. Expires December 26, 2001 [Page 12]
Internet-Draft The APEX Access Service June 2001
An actor is an APEX address and is specified using the "entity"
syntax specified in Section 2.2 of [1]. However, both the "local"
and "domain" parts may contain limited wildcarding:
o The "local" part is either:
* a literal string (e.g., "fred"); or,
* the value "apex=*", specifying all APEX services; or,
* the value "*", specifying any address other than an APEX
service.
o The "domain" part is either:
* a FQDN (e.g., "example.com"); or,
* the value "*", specifying all administrative domains.
In the absence of specific access entries to the contrary, the
following default actor/action permissions are applied for each
owner:
actor='local@domain' actions='all:all'
actor='apex=*@domain' actions='all:all'
actor='apex=*@*' actions='core:data'
actor='*@*' actions=''
where "local@domain" specifies the owner associated with the access
entry.
Rose, et. al. Expires December 26, 2001 [Page 13]
Internet-Draft The APEX Access Service June 2001
3.1 Finding the Appropriate Entry: Matching Owners and Actors
The use of actor wildcarding makes it possible for several access
entries to apply for a given owner/actor combination. When
determining which access entry to use, the following selection
priorities, from highest to lowest, are applied in this order:
1. An exact match (e.g., "fred@example.com")
2. Any service in the specified domain (e.g., "apex=*@example.com")
3. Any local-part in the specified domain (e.g., "*@example.com")
4. The specified local-part in any domain (e.g., "fred@*" or
"apex=presence@*")
5. Any service in any domain (i.e., "apex=*@*")
6. Any local-part in any domain (i.e., "*@*")
For example, consider these access entries:
Rose, et. al. Expires December 26, 2001 [Page 14]
Internet-Draft The APEX Access Service June 2001
Briefly:
o For addresses within the "example.com" administrative domain:
* "fred", "wilma", and all APEX services within the "example.com"
administrative domain are allowed access to all operations for
"fred@example.com";
* "mr.slate" is allowed access only to send data through the
relaying mesh to "fred@example.com";
* "barney/appl=wb" is allowed access only to send data to
"fred/appl=wb", a subaddress of "fred@example.com"; and,
* any other address within the "example.com" administrative
domain is allowed access to send data and invoke the
"subscribe" and "watch" operations of the APEX presence service
with respect to "fred@example.com".
o For any address outside the "example.com" administrative domain,
the address is allowed access to send data, regardless of whether
it is an APEX service.
Note that although the four default entries are always available, the
explicit entry for actor "*@*" overrides the corresponding default
entry.
Rose, et. al. Expires December 26, 2001 [Page 15]
Internet-Draft The APEX Access Service June 2001
4. The Access Service
Section 5 contains the APEX service registration for the access
service:
o Within an administrative domain, the service is addressed using
the well-known endpoint of "apex=access".
o Section 6 defines the syntax of the operations exchanged with the
service.
o A consumer of the service initiates communications by sending data
containing a query, get, or set operation.
o The service replies to these operations.
o When an access entry is changed, the service sends a notification
to the owner associated with the changed entry.
An implementation of the service must maintain information about
access entries in persistent storage.
Consult Section 6.1.1 of [1] for a discussion on the properties of
long-lived transaction-identifiers.
Rose, et. al. Expires December 26, 2001 [Page 16]
Internet-Draft The APEX Access Service June 2001
4.1 Use of XML and MIME
Section 4.1 of [1] describes how arbitrary MIME content is exchanged
as a BEEP [2] payload. For example, to transmit:
where "..." refers to:
then the corresponding BEEP message might look like this:
C: MSG 1 2 . 42 1234
C: Content-Type: multipart/related; boundary="boundary";
C: start="<1@example.com>";
C: type="application/beep+xml"
C:
C: --boundary
C: Content-Type: application/beep+xml
C: Content-ID: <1@example.com>
C:
C:
C:
C:
C:
C: --boundary
C: Content-Type: application/beep+xml
C: Content-ID: <2@example.com>
C:
C:
C: --boundary--
C: END
Rose, et. al. Expires December 26, 2001 [Page 17]
Internet-Draft The APEX Access Service June 2001
or this:
C: MSG 1 1 . 42 267
C: Content-Type: application/beep+xml
C:
C:
C:
C:
C:
C:
C:
C:
C: END
Rose, et. al. Expires December 26, 2001 [Page 18]
Internet-Draft The APEX Access Service June 2001
4.2 The Query Operation
When an application wants to see if a particular operation is
allowed, it sends a "query" element to the service.
The "query" element has an "owner" attribute, an "actor" attribute,
an "actions" attribute, a "transID" attribute, and no content:
o the "owner" attribute specifies the address associated with the
access entry;
o the "actor" attribute specifies the address (without wildcarding)
for which access permissions are queried;
o the "actions" attribute specifies one or more actions for which
permission is queried; and,
o the "transID" attribute specifies the transaction-identifier
associated with this operation.
When the service receives a "query" element, we refer to the "owner"
attribute as the "subject". The service performs these steps:
1. If the subject is outside this administrative domain, a "reply"
element having code 553 is sent to the originator.
2. If the subject does not refer to a valid address, a "reply"
element having code 550 is sent to the originator.
3. If the subject's access entry matching the originator does not
contain an "access:query" token, a "reply" element having code
537 is sent to the originator.
4. The subject's access entry matching the actor attribute of the
query element is selected.
5. If all of the permissions in the "actions" attribute of the query
element are contained in the selected access entry, then an
"allow" element is sent to the originator.
6. Otherwise, a "deny" element is sent to the originator.
Regardless of whether an "allow", "deny", or "reply" element is sent
to the originator, the "transID" attribute is identical to the value
found in the "query" element sent by the originator.
Rose, et. al. Expires December 26, 2001 [Page 19]
Internet-Draft The APEX Access Service June 2001
4.3 The Get Operation
When an application wants to retrieve the access entry associated
with an owner/actor combination, it sends a "get" element to the
service.
The "get" element has an "owner" attribute, an "actor" attribute, a
"transID" attribute, and no content:
o the "owner" attribute specifies the address associated with the
access entry;
o the "actor" attribute specifies the address (with possible
wilcarding) for which access permissions are retrieved; and,
o the "transID" attribute specifies the transaction-identifier
associated with this operation.
When the service receives a "get" element, we refer to the "owner"
attribute as the "subject". The service performs these steps:
1. If the subject is outside this administrative domain, a "reply"
element having code 553 is sent to the originator.
2. If the subject does not refer to a valid address, a "reply"
element having code 550 is sent to the originator.
3. If the subject's access entry matching the originator does not
contain an "access:get" token, a "reply" element having code 537
is sent to the originator.
4. The subject's access entry whose "actor" attribute identically
matches the "actor" attribute of the "get" element is selected.
5. If no such entry exists, a "reply" element having code 550 is
sent to the originator.
6. Otherwise, a "set" element corresponding to the selected access
entry is sent to the originator.
Regardless of whether a "set" or "reply" element is sent to the
originator, the "transID" attribute is identical to the value found
in the "get" element sent by the originator.
Rose, et. al. Expires December 26, 2001 [Page 20]
Internet-Draft The APEX Access Service June 2001
4.4 The Set Operation
When an application wants to modify (i.e., create, replace, or
delete) the access entry associated with an owner/actor combination,
it sends a "set" element to the service.
The "set" element has a "transID" attribute, and contains an "access"
element:
o the "transID" attribute specifies the transaction-identifier
associated with this operation; and,
o the "access" element contains the access entry to be created,
replaced, or deleted.
The "access" element has an "owner" attribute, an "actor" attribute,
an optional "actions" attribute, an optional "lastUpdate" attribute,
and no content:
o the "owner" attribute specifies the address associated with the
access entry;
o the "actor" attribute specifies the address (with possible
wilcarding) for which access permissions are specified;
o the "actions" attribute (present only to add or replace an entry)
specifies one or more actions for which permission is to be
determined; and,
o the "lastUpdate" attribute (presently only to replace an entry)
specifies the current timestamp of the access entry that is to be
replaced.
Rose, et. al. Expires December 26, 2001 [Page 21]
Internet-Draft The APEX Access Service June 2001
When the service receives a "set" element, we refer to the "owner"
attribute of the access element as the "subject". The service
performs these steps:
1. If the subject is outside this administrative domain, a "reply"
element having code 553 is sent to the originator.
2. If the subject does not refer to a valid address, a "reply"
element having code 550 is sent to the originator.
3. If the subject's access entry matching the originator does not
contain an "access:set" token, a "reply" element having code 537
is sent to the originator.
4. The subject's access entry whose "actor" attribute identically
matches the "actor" attribute of the "set" element is selected.
5. If no such entry exists and the "lastUpdate" attribute of the
supplied element is present, a "reply" element having code 555 is
sent to the originator.
6. If no such entry exists, then:
1. The access entry for the owner/actor combination is created
from the supplied "access" element.
2. The "lastUpdate" attribute of that access entry set to the
service's notion of the current date and time.
3. A "reply" element having code 250 is sent to the originator.
4. A "set" element corresponding to the newly-created access
entry is sent to the subject's address.
7. If the selected entry's "lastUpdate" attribute is not identical
to the "lastUpdate" attribute of the supplied "access" element, a
"reply" element having code 555 is sent to the originator.
8. If "actions" attribute of the supplied "access" element is empty,
then:
1. The selected entry is deleted.
2. A "reply" element having code 250 is sent to the originator.
3. A "set" element corresponding to the owner/actor combination,
but containing an empty "actions" attribute is sent to the
subject's address.
Rose, et. al. Expires December 26, 2001 [Page 22]
Internet-Draft The APEX Access Service June 2001
9. Otherwise:
1. The access entry for the owner/actor combination is updated
from the supplied "access" element.
2. The "lastUpdate" attribute of the updated access entry is set
to the service's notion of the current date and time (which
should be different from the "lastUpdate" value associated
with any replaced entry).
3. A "reply" element having code 250 is sent to the originator.
4. A "set" element corresponding to the newly-updated access
entry is sent to the subject's address.
When sending the "reply" element, the "transID" attribute is
identical to the value found in the "set" element sent by the
originator.
Rose, et. al. Expires December 26, 2001 [Page 23]
Internet-Draft The APEX Access Service June 2001
4.5 The Reply Operation
While processing operations, the service may respond with a "reply"
element. Consult Sections 10.2 and 6.1.2 of [1], respectively, for
the syntax and semantics of the reply operation.
Rose, et. al. Expires December 26, 2001 [Page 24]
Internet-Draft The APEX Access Service June 2001
5. Registration: The Access Service
Well-Known Endpoint: apex=access
Syntax of Messages Exchanged: c.f., Section 6
Sequence of Messages Exchanged: c.f., Section 4
Access Control Tokens: access:query, access:get, access:set
Contact Information: c.f., the "Authors' Addresses" section of this
memo
Rose, et. al. Expires December 26, 2001 [Page 25]
Internet-Draft The APEX Access Service June 2001
6. The Access Service DTD
%APEXCORE;
Rose, et. al. Expires December 26, 2001 [Page 26]
Internet-Draft The APEX Access Service June 2001
Rose, et. al. Expires December 26, 2001 [Page 27]
Internet-Draft The APEX Access Service June 2001
Rose, et. al. Expires December 26, 2001 [Page 28]
Internet-Draft The APEX Access Service June 2001
7. Security Considerations
Consult [1]'s Section 11 for a discussion of security issues.
Rose, et. al. Expires December 26, 2001 [Page 29]
Internet-Draft The APEX Access Service June 2001
References
[1] Rose, M., Klyne, G. and D. Crocker, "The Application Exchange
Core", draft-ietf-apex-core-03 (work in progress), June 2001.
[2] Rose, M., "The Blocks Extensible Exchange Protocol Core", RFC
3080, March 2001.
Authors' Addresses
Marshall T. Rose
Invisible Worlds, Inc.
131 Stony Circle
Suite 500
Santa Rosa, CA 95401
US
Phone: +1 707 578 2350
EMail: mrose@invisible.net
URI: http://invisible.net/
Graham Klyne
Baltimore Technologies
1310 Waterside
Arlington Business Park
Theale, Reading RG7 4SA
UK
Phone: +44 118 903 8000
EMail: gk@acm.org
David H. Crocker
Brandenburg Consulting
675 Spruce Drive
Sunnyvale, CA 94086
US
Phone: +1 408 246 8253
EMail: dcrocker@brandenburg.com
URI: http://www.brandenburg.com/
Rose, et. al. Expires December 26, 2001 [Page 30]
Internet-Draft The APEX Access Service June 2001
Appendix A. Acknowledgements
The authors gratefully acknowledge the contributions of: Neil Cook,
Darren New, Chris Newman, and Scott Pead.
Rose, et. al. Expires December 26, 2001 [Page 31]
Internet-Draft The APEX Access Service June 2001
Appendix B. Revision History
B.1 Changes from draft-ietf-apex-access-04
o Re-organization previous version for consistency.
B.2 Changes from draft-ietf-apex-access-03
o Change access service to use an owner/actor combination as the
fundamental unit of access information.
o Separate access query function from access information management
functions.
o Remove redundant "owner" attribute from "set" element.
o Merge "access" and "entry" elements into just "access". Multiple
"access" elements are now needed for a single subject.
o Change framework for applying defaults: default entries are
applied in the absence of any overriding access entry.
o Add some introductory text about the relationship between access
permision owners and APEX operations.
B.3 Changes from draft-ietf-apex-access-02
o A small number of typos were corrected.
B.4 Changes from draft-ietf-apex-access-01
o It is made more clear that each subaddress has its own access
entry.
o A successful set operation results in the new access entry being
sent to the endpoint associated with the entry.
o A small number of typos were corrected.
B.5 Changes from draft-ietf-apex-access-00
o Change "addr-spec" syntax from RFC 822 to APEX's custom ABNF.
Rose, et. al. Expires December 26, 2001 [Page 32]
Internet-Draft The APEX Access Service June 2001
Full Copyright Statement
Copyright (C) The Internet Society (2001). 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.
Rose, et. al. Expires December 26, 2001 [Page 33]