Internet DRAFT - draft-isomaki-simple-list-man-sem
draft-isomaki-simple-list-man-sem
INTERET-DRAFT M. Isom„ki
Document: draft-isomaki-simple-list-man-sem-00.txt O. Ribera
Expires: April 2003 I. Almar
J. Costa
Nokia
October 2002
Semantic Description of SIMPLE List Manipulation Operations
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.
Abstract
In SIMPLE based presence and messaging applications, it is necessary
for the user to be able to configure a number of pieces of information.
One of the most common types of information is a list of URIs. List
management is useful outside the scope of SIMPLE as well, for instance
in conferencing. There are many reasons why it would be beneficial to
manage the lists in a similar fashion regardless of the application.
Before the selection of the actual protocol(s) to manage the lists there
is a need to describe their semantics on an abstract level. This
document proposes the semantics for SIMPLE list manipulation protocol.
Table of Contents
1 Introduction
2 Conventions used in this document
3 List Manipulation in the Overall Manipulation Framework
4 List Manipulation Requirements and Their Impacts on The Protocol
5 Abstract Description of the Protocol
6 Security Considerations
7 Acknowledgements
8 References
9 Author's Addresses
1 Introduction
Presence and Instant Messaging applications typically have a number of
features that users should be able to configure. These include adding
and removing members on various lists, and defining authorization
policies. In most cases the authorization policies also make use of
configurable lists.
SIP extensions for presence [1], presentity collections [2] and instant
messaging [3], allow users to subscribe to each others presence and send
instant messages to each other. However, the manipulation of the lists
used for presentity collections or presence authorization policies has
been left out of the scope of these specifications. In many cases the
manipulation can be done e.g. via Web-pages, but sometimes tighter
integration into the actual presence and IM application is desired. This
is essential especially for devices with small display, such as mobile
handsets. For these reasons, a standardized protocol for the manipulation
purposes is needed.
The SIMPLE working group has chartered a work item for defining protocols
for presence list and presence authorization policy manipulation. The
framework and requirements for these protocols have been described in [4].
Based on this, it has become evident that list manipulation is one of the
key pieces of the solution. It seems clear that the best way is to meet
all list manipulation needs by a single protocol. It is expected that this
protocol should be useful also for other applications requiring list
manipulation. For instance conferencing can use lists for defining
authorization policies (similar to presence) and setting
"mass-invitations".
The aim of this draft is to define the semantics of the list manipulation
protocol, and describe how it fits to the overall framework. First the
list manipulation related requirements in [4] are evaluated one by one
and based on them a set of requests and their parameters for the
manipulation protocol is proposed. It is expected that once the semantics
are agreed on this level, the next step is to make proposals to map them to
concrete protocols.
2 Conventions used in this document
The 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 [1].
3 List Manipulation in the Overall Manipulation Framework
This draft follows the data manipulation framework presented in [4]. The
data manipulation client (from now on referred to as just the client) uses
some protocol to interact with the data manipulation server. The data
manipulation server (from now on referred to as just the server) manages a
persistent storage of the data elements. This storage is accessible by the
actual application whose features the data elements describe. An example for
the presence service is provided in [4].
The actual data elements to be manipulated are dependent on the application.
For instance a Presentity Collection Server requires a list of URIs, while
Presence Agent requires an authorization policy description, and the lists
associated with it. On the other hand a conferencing server might require a
number of data elements, of which various lists are just one part.
It is expected that the client can discover what data elements the server
allows it to manipulate, and what addresses can be used for manipulating the
elements related to a particular application instance. How this discovery
happens is beyond the scope of this document, but at least two ways should
be possible. The first is that the client knows the SIP URI related to an
application instance (such as a presentity collection or a conference), and
can based on that learn the related data element types and their
manipulation URIs. The second is that the client creates the application
instance, and by doing so it learns this information.
OPEN ISSUE: The second case still leaves a problem how to discover the
address/URI which can be used to create an application instance,
such as a presentity collection or a conference.
A list is basically just one type of data element. Based on [4] there are
at least two models how lists are related to the applications - here defined
as static or dynamic. Static relation means that the purpose and number of
lists for a particular application type are known a priori. For instance in
the case of presentity colletion, it is known that the application always
requires exactly one list. Dynamic relation means that the number of lists
used by a particular application instance can vary. Presence authorization
according to [4] is a good example of the dynamic relation. The number of
lists vary and they are referenced from a "script" defining the policy rules.
The static relation is easy to handle. The "placeholders" for the lists can
be allocated directly on the server when the application instance is created.
The dynamic relation requires that the client needs to able to create and
link new lists dynamically to an application instance.
4 List Manipulation Requirements and Their Impacts on The Protocol
List manipulation requirements are expressed in [4] in relation to presentity
collections (in Chapter 4 of [4]) and presence authorization policy management
(in Chapter 5.1 of [4]). In this Chapter these requirements are analysed in
order to see how they affect the design of the manipulation protocol.
4.1 Requirements for Relation of Applications and Lists
Some requirements to the protocol are implied by the framework presented in
Chapter 3 of [4].
Presentity collection basically includes a single list of URIs to manipulate.
This is a static relation. There is a direct 1:1 mapping between a SIP URI of
the presentity collection and the list of URIs. There is no need for separate
list creation. Creating the presentity collection will create the
"placeholder" for the list of URIs as well.
Presence authorization policy uses lists in a dynamic and indirect manner.
There is a direct 1:1 mapping between presentity's SIP URI and the script
defining the authorization policy rules. However, the script may contain
references to one or more lists, and the number of "active" lists varies
based on the contents of the script. This implies that the client needs to
be able to create and delete lists which can be referenced in the script,
and maybe even lists not referenced by the current script need to be
maintained by the server.
4.2 Requirements for Request and Response Types
There are requirements, which imply what request and response types the
protocol needs to have. They are presented below, with the explanations of
the implied request and response types. The requirements are from Chapter 4
of [4].
REQ1: It MUST be possible for a client to create a presentity collection and
associate it with a URI.
REQ2: It MUST be possible for the user to specify the URI for the presentity
collection when one is created. If the name cannot be allocated
(because it already exists, for example), it MUST be possible to
inform the client of the failure, and the reason for it.
REQ3: It SHOULD be possible for the server to provide client a URI for the
list when one is created, in the case where the client does not
provide it.
These requirements imply that the protocol needs to have a CREATE request
from the client to the server. The transaction needs to include the
negotiation of URI, so that the client can propose a URI (this is carried
in the request), which server needs to verify, or if the client does not
propose a URI, the server may issue one (this is carried in the response).
There needs to be an error response for the case that the client proposes
an invalid URI.
REQ4: It MUST be possible to add an entry to the presentity collection.
Each entry MUST consist of at least a URI, and MAY include a display
name. It MUST be possible for the entry to be any URI that is
meaningful in the context of a presentity collection. Examples would
include a SIP URI or pres URI.
This requirement implies that the protocol needs to have an ADDENTRY request
for providing a new list entry from the client to the server. Display name
can be provided as an additional parameter to the entry. The server needs to
verify the validity of the entry, so there needs to be an error response for
an invalid entry.
OPEN ISSUE: Related to Chapter 4.4: Should this be just an operation within
a larger UPDATEENTRIES request, which could contain several operations?
REQ6: It MUST be possible to remove an entry from the presentity collection,
by providing the URI for the specific entry to be removed. If the entry
does not exist, it MUST be possible for the server to inform the client
of this fact.
This requirement implies that the protocol needs to have a REMOVEENTRY
request, in which client provides the URI to be removed. There needs to be
an error response for the case where the URI does not exist.
OPEN ISSUE: Related to Chapter 4.4: Should this be just an operation within a
larger UPDATEENTRIES request, which could contain several operations?
REQ7: It SHOULD be possible to clear all the entries from a presentity
collection.
This requirement implies that the protocol needs to have (an optional)
CLEARENTRIES request.
REQ8: It MUST be possible to delete a presentity collection. In this context,
deleted means that the name of the presentity collection is no longer
defined, so that the subscriptions to the collection would fail.
This requirement implies that the protocol needs to have a DELETE request.
REQ9: It MUST be possible to query for the set of URIs in a particular
presentity collection, by providing the URI for the presentity collection.
This requirement implies that the protocol needs to have a GETENTRIES request.
The response would contain all the entries currently stored in the list.
REQ11: It MUST be possible for a client to store a cached copy of the list.
This implies that it MUST be possible for the server to notify the
client of the change in the list. It MUST be possible for the client to
manipulate the local cached copy even when there is no connectivity
to the server. It MUST be possible to synchronize with the master copy
of the server, when connectivity is re-established.
This requirement implies that the protocol needs to have a NOTIFY request from
the server to the client. NOTIFY needs to contain at least the information that
there is a change in the list. Indirectly the requirement also implies that
there needs to be a SUBSCRIBE request from the client to the server, so that
the server knows where to send the NOTIFYs.
It is probably useful to design the notification so that it is not specific to
any data element, such as a list.
REQ20: It MUST be possible to modify an entry in the presentity collection.
This requirement implies that the protocol needs to have a MODIFYENTRY request,
in which the client provides the URI for the entry to be modified and the new
content for the entry. There needs to be an error response for the case where
the new content is invalid. Also, there needs to be an error response when the
entry to be modified does not exist.
OPEN ISSUE: Related to Chapter 4.4: Should this be just an operation within a
larger UPDATEENTRIES request, which could contain several operations?
The essentially same requirements are listed in [4] in Chapter 5.1 as
REQ 7.1 - REQ 7.9 in the context of the lists used for presence authorization
policies. Since the requirements are identical, they can also be met with the
same set of request and response types.
4.3 Security Requirements
There are requirements for the security of the protocol. These are from
Chapter 4 of [4].
REQ 15: It MUST be possible for the server to authenticate the client.
REQ 16: It MUST be possible for the client to authenticate the server.
REQ 17: It MUST be possible for the message integrity to be insured
between the client and the server.
REQ 18: It MUST be possible for privacy to be insured between the client
and the server.
These imply that the protocol needs to support mutual authentication,
integrity protection and encryption. There are various ways to implement
these, and this version of the document does not propose a particular one.
However, since the protocol is intended to be used in conjunction with SIP,
it seems reasonable that the client identity could be same as for SIP, and
that SIP authentication mechanisms would be usable, e.g. HTTP-Digest [5]
and HTTP-Digest-AKA [6].
4.4 Miscellaneous Requirements
The rest of the list manipulation related requirements presented in
Chapter 4 of [4] are analysed below with their implications.
REQ 5: It MUST be possible for a presentity collection to contain
entries which are themselves presentity collections.
From the manipulation point of view this does not imply any additional
mechanisms to the protocol.
REQ 10: It MUST be possible for the presentity collection to be associated
with a list of authorized users. Those authorized users are the
only ones permitted to manipulate the presentity collection.
It is not clear whether there is a requirement that the client should
be able to manipulate the authorized user's list as well. Even in that case
this would be just another list with a static relation to the presentity
collection.
REQ 12: It MUST be possible for there to be multiple clients with cached
copies of the list.
REQ 13: Manipulations of the presentity collection MUST exhibit the ACID
property; that is, they MUST be atomic, be consistent, durable,
and operate independently.
Multi-client support is basically addressed by the notication and ACID
property requirements. The ACID property can be assumed in the protocol
design, since the request-response pairs identified in Chapter 4.2 are
independent from each other, and each request accomplishes a particular
task.
REQ 14: It MAY be possible for the client to batch multiple operations
(add a presentity, remove a presentity) into a single request that
is processed atomically.
This would be beneficial e.g. for wireless clients. In the terminology used
in this document this would mean that ADDENTRY, REMOVEENTRY and MODIFYENTRY
requests would be actually just operations within a MANIPULATEENTRIES
request, which could contain several of them.
OPEN ISSUE: Should this be supported?
REQ 19: It MUST be possible for the protocol to operate through and
intermediary, such as a proxy.
This requirement does not imply anything new for the end-to-end protocol.
Proxy support is important e.g. for firewall or Network Address
Translator traversal.
5 Abstract Description of the Protocol
This chapter aims to put together a proposal for a list manipulation protcol
semantics. It is based on the erquirements analyzed in Chapter 4. The choise
made in the proposal is to include ADDENTRY, REMOVEENTRY and MODIFYENTRY as
operations within an UPDATEENTRY request that can contain multiple operations.
In addition to the requests clearly needed according to the requirements, it
is assumed that there may be a need for a client to set or at least read some
attributes of the list. These can include e.g. the maximum number of etries
allowed on the list, and other useful information. For that purpose a request
to set and get such attributes has been included.
Security issues are not specified to be solved by any particular solution in
this version of the draft, so the security related parameters are only
indicative.
Sections 5.1 - 5.3 describe the common parts of the protocol, while Sections
5.4 - 5.12 define specific Requests and Responses.
C->S indicates direction from the client to the server.
S->C indicates direction from the server to the client.
5.1 Common Parameters in the Client-originated Requests
All the requests originted by the client have a common set of parameters
that consist of:
¸Transaction identifier
¸Client identifier
¸Client authentication information (Optional)
¸Client signature (Optional)
¸Resource identifier
The transaction identifier is used by the client and the server to match
requests and responses.
Client identifier, client authentication information and client signature
are used to solve the security requirements listed in Chapter 4.3. Their
semantics are not expressed in this version of this draft.
Resource identifier is used to identify the list the request applies to.
5.2 Common Parameters in the Server-originated Requests
All the Requests originated by the server have a common set of parameters
that consist of:
¸Transaction identifier
¸Server identifier
¸Server authentication information (Optional)
¸Server signature (Optional)
The transaction identifier is used by the client and the server to match
requests and responses.
Server identifier, server authentication information and server signature
are used to meet the security requirements listed in Chapter 4.3. Their
semantics are not expressed in this version of this draft.
5.3 Common Parameters and Error Statuses in Responses
The status contains the information of the execution of a request such as:
¸Status code
¸Specific informative text (Optional)
If the request was successful, the response contains "OK" status.
There is a set of error statuses common to all responses. The error codes
themselves are not defined in this draft, however, the conceptual errors
are:
¸Invalid Transaction identifier
¸Authentication failure
¸Request not allowed
¸Not Authorized
¸Resource non existent
5.4 CREATE
C->S: CREATE Request
S->C: CREATE Response
The CREATE Request is always issued by the client for creating a list in
the server. The server creates the list with the attributes, entries and
URI suggested by the client if valid. If no URI is provided by the client,
the server assigns one. In the request, the client could specify the list
attributes and the initial list entries.
CREATE Request may have a wider context than just creating a single list.
It can be used to create a complete application instance, for example a
presentity collection or a conference. This specification only takes into
account the issues related to list creation.
SPECIFIC REQUEST PARAMETERS:
¸List attributes (Optional)
¸List Entries (Optional)
¸Proposed List URI (Optional)
OPEN ISSUE: Should it be possible to assign the entries in CREATE?
OPEN ISSUE: Are there any feasible attributes that the client should be
allowed to set?
In the CREATE Response, the server confirms the operation and the final
URI to be assigned to the list.
SPECIFIC RESPONSE PARAMETERS:
¸Assigned List URI
¸URI where the future list manipulation operations should
be addressed, if that is different from the assigned
list URI
SPECIFIC RESPONSE ERROR STATUSES:
¸Proposed List URI already exists or cannot be used
¸Invalid attributes
¸Invalid entries
5.5 DELETE
C->S: DELETE Request
S->C: DELETE Response
The DELETE Request is always issued by the client for deleting a list
from the server.
DELETE Request may have a wider context than just deleting a single list.
It can be used to delete a complete application instance, for example a
presentity collection or a conference. This specification only takes into
account the issues related to list deletion.
SPECIFIC REQUEST PARAMETERS: No specific parameters.
SPECIFIC RESPONSE PARAMETERS: No specific parameters.
SPECIFIC RESPONSE ERROR STATUSES: No specific errors.
5.6 UPDATEENTRIES
C->S MODIFYENTRY Request
S->C MODIFYENTRY Response
The UPDATEENTRIES Request is used by the client to add, delete or modify
entries on the list. The same request can contain multiple add, modify
and delete operations.
NOTE: This operation MUST be atomic ,thus if the operation can not be
successfully completed for all elements, all changes MUST be rolled back
and client notified of the failure with the status parameter.
SPECIFIC REQUEST PARAMETERS:
¸Operations (ADDENTRY, REMOVEENTRY, MODIFYENTRY) with each having
own set of parameters:
¸ ADDENTRY: URI and (optional) display name of the entry
¸ REMOVEENTRY: URI of the entry
¸ MODIFYENTRY: URI of the entry to be modified and URI and
(optional) display name of the new entry
The UPDATEENTRIES Response informs the client of the success or failure
of the operation.
SPECIFIC RESPONSE PARAMETERS: No specific parameters.
SPECIFIC RESPONSE ERRORS:
¸Entry does not exist
¸Invalid new entry
OPEN ISSUE: It would be possible to also have separate ADDENTRY,
REMOVEENTRY and MODIFYENTRY requests.
5.7 GETENTRIES
C->S GETENTRIES Request
S->C GETENTRIES Response
The "Get Entries Request" is used by the client to obtain the entries
of a list.
SPECIFIC REQUEST PARAMETERS: No specific parameters.
The "Get Entries Response" returns the entries of a list to the client.
SPECIFIC RESPONSE PARAMETERS:
¸Entries of the list
SPECIFIC RESPONSE ERROR STATUSES: No specific errors.
5.8 CLEARENTRIES
C->S: CLEARENTRIES Request
S->C: CLEARENTRIES Response
The SETATTRIBUTES Request removes all the entries of a list.
SPECIFIC REQUEST PARAMETERS: No specific parameters.
The CLEARENTRIES Response informs of the success or failure of the
operation.
SPECIFIC RESPONSE PARAMETERS: No specific parameters.
SPECIFIC RESPONSE ERROR STATUSES: No specific errors.
5.9 SETATTRIBUTES
C->S: SETATTRIBUTES Request
S->C: SETATTRIBUTES Response
The SETATTRIBUTES Request changes the attributes of a list.
SPECIFIC REQUEST PARAMETERS:
¸Attributes to modify
The SETATTRIBUTES Response informs of the success or failure of the
operation.
SPECIFIC RESPONSE PARAMETERS: No specific parameters.
SPECIFIC RESPONSE ERROR STATUSES:
¸Invalid List Attributes
OPEN ISSUE: Are there any useful attributes that the client would
need to set?
5.10 GETATTRIBUTES
C->S: GETATTRIBUTES Request
S->C: GETATTRIBUTES Response
The GETATTRIBUTES Requests retrieves the attributes of a list.
SPECIFIC REQUEST PARAMETERS: No specific parameters.
The GETATTRIBUTES Response returns the attributes of the list or
failure of the operation.
SPECIFIC RESPONSE PARAMETERS:
¸Attributes
SPECIFIC RESPONSE ERRORS: No specific errors.
OPEN ISSUE: Are there any useful attributes that the client
would need to get?
5.11 SUBSCRIBE
C->S SUBSCRIBE Request
S->C SUBSCRIBE Response
The SUBSCRIBE Request is used by the client to request to the
server that when certain lists change, a notification with change
information is to be sent to the client.
SPECIFIC REQUEST PARAMETERS:
¸Proposed Expiration time for the subscription
¸Address to receive the notifications
SPECIFIC RESPONSE PARAMETERS:
¸Final Expiration time for the subscription
SPECIFIC RESPONSE ERROR STATUSES: No specific errors.
5.12 NOTIFY
S->C NOTIFY Request
C->S NOTIFY Response
The "List Change Notification" notifies to the client that a the list
has changed an optionally includes the changes occurred.
SPECIFIC REQUEST PARAMETERS:
¸Identifier for the changed resource
¸Details of the change (optional)
SPECIFIC RESPONSE PARAMETERS: No specific parameters
SPECIFIC RESPONSE ERROR STATUSES:
¸Subscription does not exist
6 Security Considerations
The protocol described here will need to meet the requirements listed in
Chapter 4.3. Otherwise it might be possible for a malicious party to manipulate
the features of the services of some other party. That would for instance allow
the malicious party to authorize himself to see that other party's presence
information.
7 Acknowledgements
The authors would like to thank Aki Niemi for his comments.
8 References
[1] J. Rosenberg, "Session initiation protocol (SIP) extensions for presence,"
Internet Draft, Internet Engineering Task Force, May 2002. Work in progress.
[2] J. Rosenberg and B. Campbell, "A SIP event package for list presence,"
Internet Draft, Internet Engineering Task Force, June 2002. Work in progress.
[3] B. Campbell et al., "Session Initiation Protocol Extension for Instant Messaging",
Internet Draft, Internet Engineering Task Force, September 2002. Work in progress.
[4] J. Rosenberg and M. Isom„ki, "Requirements for Manipulation of Data Elements in
SIMPLE Systems", Internet Draft, Internet Engineering Task Force, October 2002.
Work in progress.
[5] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach, P., Luotonen,
A. and L. Stewart, "HTTP authentication: Basic and Digest Access Authentication",
RFC 2617, June 1999.
[6] A. Niemi, J. Arkko, V. Torvinen, " Hypertext Transfer Protocol (HTTP) Digest
Authentication Using Authentication and Key Agreement (AKA)", RFC 3310,
September 2002.
9 Author's Addresses
Markus Isom„ki
Nokia
It„merenkatu 11-13
00180 Helsinki
Finland
Tel: +358 50 522 5984
E-mail: markus.isomaki@nokia.com
Oriol Ribera
Nokia
Parc De Negocis Mas Blau
Edif. Prima Muntadas Porta B
08820 El Prat Del Llobregat
Barcelona
Spain
Tel: +34 933 796 633
E-mail: oriol.ribera@nokia.com
Ignacio Almar
Nokia
Parc De Negocis Mas Blau
Edif. Prima Muntadas Porta B
08820 El Prat Del Llobregat
Barcelona
Spain
Tel: +34 933 796 633
E-mail: ignacio.almar@nokia.com
Jose Costa
Nokia
Valimotie 9
00380 Helsinki
Finland
Tel: +358 718 008 000
E-mail: jose.costa-requena@nokia.com
INTERNET-DRAFT SIMPLE List Manipulation Operations October 2002
Isom„ki et al. Expires - April 2003 [Page 13]
Isom„ki et al. Expires - April 2003 [Page 1]