Internet DRAFT - draft-dusseault-rvp-addr
draft-dusseault-rvp-addr
INTERNET-DRAFT Dusseault, Microsoft
Expires Sept 1998 Mohr, Activerse
Addressing and Location for RVP
draft-dusseault-rvp-addr-00.txt
Status of this Memo
This document is an Internet-Draft. 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."
To view the entire list of current Internet-Drafts, please check the
"1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
Directories on ftp.is.co.za (Africa), ftp.nordu.net (Europe),
munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
ftp.isi.edu (US West Coast).
Abstract
A core part of a presence and instant messaging protocol, such as
RVP [7], must be the ability to find users online. This draft
defines several aspects of finding a user online:
- Schema of RVP URL
- How to find a user’s RVP address (URL)
- How to find a RVP server
The problem may be generalized to finding a non-user object online.
In this draft, the client is the process which is searching for a
RVP object. This can be a RVP server acting as a client or on
behalf of a user. The server is the process which is responsible
for answering queries and receiving messages for a RVP object. A
RVP client may sometimes act as its own server.
1. URLs
RVP URLs are used in RVP requests and headers to indicate the
originator and target of an RVP message, and to specify redirection
addresses. Since the URL is only an address, an RVP message must
also include headers to specify the action, properties, and other
details of a request or a response.
Dusseault & Mohr [Page 1]
INTERNET-DRAFT RVP Addressing March 1998
The target of a RVP request is always a node in the RVP namespace.
Nodes are identified by URL syntax. The URL is only used to
identify a node, much as a HTTP URL identifies a directory or
document. The URL follows the syntax for hierarchical schemes set
out in RFC1738 [6]:
rvp://<host>:<port>/<path>
The scheme name is "rvp". The host component is used to resolve to
the server or servers which is responsible for the node named in the
path. The path is an identifier for a particular node in that
server’s namespace. The path needs to be unique for that host, but
not unique for all hosts.
Note that the path may be literally the path to the node in a
storage system, depending on the implementation, but this is not
required of implementations.
1.2 URL Format
RVP-URL = "rvp://" host [ ":" port ] "/" path
host = defined in RFC 1738
port = *digit
path = name | name "/" path
name = alphanumeric atom
Note that all URL reserved characters must be encoded.
Examples of user URLs:
rvp://rvp.widgets.com/users/juser
rvp://rvp.widgets.com/users/engineering/username
Examples of general-purpose node URLs:
rvp://rvp.widgets.com/engineering/SDE
rvp://rvp.widgets.com/engineering/SDE/announce
rvp://rvp.widgets.com/engineering/SDE/discussion
1.3. Default URLs
There are many cases where a user may have more than one RVP
address. In these cases, a user may have multiple URLs.
To make the case of multiple RVP addresses simpler for clients, the
concept of the "default" address is introduced. A "default" address
is one that the user has designated as the address that other users
should use to send instant messages or find out if the user is
online.
The default URL should be marked as such in VCard or LDAP entries.
1.4 Identity URLs
Dusseault & Mohr [Page 2]
INTERNET-DRAFT RVP Addressing March 1998
The RVP URLs which users share are "identity URLs", which serve to
both identify a person and provide the canonical location for
reaching them.
Internally, RVP also uses syntactically-equivalent "location URLs"
to describe the endpoints of communication. However, such URLs are
not useful or visible to end-users, and are hence not discussed
further here.
Identity URLs are used to initiate contact with others, identify the
originator of communications, and qualify access-privileges for RVP
objects.
For the purposes of comparing two RVP identity URLs, to determine if
they refer to the same RVP object, RVP applications must follow the
rules set forth in Section 3.2.3 of the HTTP/1.1 specification.
Fielding et. al. RFC 2068]. This implies that RVP applications...
- MUST NOT treat case as significant in the 'scheme' or 'host'
portions of an URL.
- MUST treat case as significant in the 'url-path' portion of an
URL, as per Section
- MUST NOT consider hostnames which resolve to the same IP address
as identical.
- MUST NOT consider the presence or absence of a trailing "/" to be
significant, if the 'url-path' portion is empty.
- MUST NOT consider the explicit specification of the default port
to be any different than implied specification of the default port.
For example, the following RVP identity URLs are prima facie
identical:
rvp://rvp.widgets.com
RVP://rvp.widgets.com
rvp://RVP.widgets.COM
rvp://rvp.widgets.com/
rvp://rvp.widgets.com:XXXX
RVP://rvp.WIDgets.com:XXXX/
The following two URLs MUST NOT be assumed to represent the same
identity:
rvp://rvp.widgets.com/bill
rvp://rvp.widgets.com/Bill
Similarly, the following two URLs MUST NOT be assumed to represent
the same identity, even if the current DNS resolution of
"rvp.widgets.com" is "207.8.29.7":
rvp://rvp.widgets.com/bill
rvp://207.8.29.7/bill
Dusseault & Mohr [Page 3]
INTERNET-DRAFT RVP Addressing March 1998
If a particular RVP server wishes to adopt a policy of case-
insensitivity or hostname-equivalence, it should choose a preferred
identity URL representation for each RVP object hosted. Requests for
that entity under acceptably-close "Subject" names MAY then generate
"301-Moved Permanently" replies which include the preferred name.
For example, a request for "rvp://207.8.29.7/BILL" might result in a
301 reply, with the new "Location" as "rvp://rvp.widgets.com/Bill".
2. Discovering RVP Addresses
2.1. Manual Transfer
The simplest way to obtain these URLs is for a user to communicate
the URLs using some out-of-band mechanism such as verbally, in an e-
mail message, on a web page, or by printing these URLs on a paper
business card.
When using this mechanism, the user obtains these URLs using an out-
of-band mechanism and enters these URLs into their client manually.
Manual transfer is the typical way for non-user addresses to be
discovered.
2.2. Personal Data Exchange Using A vCard
A more sophisticated way to obtain user URLs is for users to publish
vCards containing these URLs. The vCard object can be transferred
between one another. Since many e-mail clients allow a user to
automatically include a vCard with every message that the user
sends, this provides a simple transparent way for a user to
distribute their online presence URLs.
On the receiving end, an e-mail client that provides an integrated
vCard database can provide a way to lookup RVP URLs for users whose
vCards are stored locally.
2.2.1. vCard Schema Extensions
Since the vCard [1] specification doesn't specify how to encode RVP
URLs in a vCard, this section is provided as an extension to vCard
which specifies how to encode RVP URLs within a vCard.
Inside a vCard object, a new property is defined: "RVPURL". Any
vCard can have one or more of these properties, each representing a
RVP URL that is associated with the user. One of these properties
can be designated as the "default" by adding the "PREF" parameter.
Here is a simple example of a vCard containing a "RVPURL".
BEGIN:VCARD
Dusseault & Mohr [Page 4]
INTERNET-DRAFT RVP Addressing March 1998
VERSION:3.0
FN:Joe User
N:User,Joe
ORG:Microsoft Corporation
ADR;WORK;POSTAL;PARCEL:;;One Microsoft Way;
Redmond;WA;98052-6399;USA
TEL;WORK;MSG:+1-206-936-2472
TEL;WORK;FAX:+1-206-936-7329
EMAIL;INTERNET:user@host1.com
RVPURL;PREF:http://rvp.host1.com/user
END:VCARD
Next step is to register this property with IANA.
2.3. Directory Lookup Using The LDAP v3 Protocol
Another way to obtain user URLs is to look them up in a directory
using the LDAP protocol.
If an user’s e-mail address or domain is known, then using DNS [4],
the attendee’s directory server can be found. From the directory
server, the client can look up the RVP URL.
Here’s how it works: the client first parses the domain name from
the rfc822 mailbox name. For the fictitious mailbox
"joeuser@host1.com", the domain name would be "host1.com".
Given the domain name, the client prepends "ldap.tcp" to the domain
name and formulating a host. Next the client queries the DNS server
for the SRV record for "ldap.tcp.host1.com". The mechanism for
adding "ldap.tcp" onto the original domain name is described in
detail in[3], [2]. The DNS server returns the IP address for the
associated server for "ldap.tcp.host1.com".
Once the IP address for the LDAP server has been obtained, the
client obtains a list of possible search bases by querying the LDAP
server with a NULL baseObject. The client iterates through each
baseObject and queries the server for all entries where the
attribute named "mail" [5] "equalityMatch"es the user’s email
address. From the first matching entry, the client obtains the RVP
URL.
If a user’s RVP URL can be found using directory lookup, they
should, in general, be considered "more up-to-date" than URLs in any
vCards that are stored locally.
2.3.1. LDAP Schema Extensions
In order to encode the RVP URLs in the directory, the following are
defined:
Dusseault & Mohr [Page 5]
INTERNET-DRAFT RVP Addressing March 1998
one object class:
@ RVPEntry
and two attributes:
@ RVPURL
@ RVPOtherURLs
The RVPURL attribute contains the user’s RVP URL.
The RVPOtherURLs is a multi-valued property containing other RVP
URLs that the user may have. There is no predetermined order to the
values in a multi-valued property.
TBD: Define precisely the RVPEntry object class and attributes.
3. Finding RVP Servers
3.1. DNS SRV Records
RFC 2052 [2] recommends use of DNS SRV records to discover the
responsible server for a service.
Given the domain name, which can be parsed from the URL, the client
prepends "rvp.tcp." or "rvp.udp." to the domain name. Next the
client queries the DNS server for the SRV record for
"rvp.tcp.host1.com". The mechanism for adding "rvp.tcp" onto the
original domain name is described in detail in [3], [2]. The DNS
server returns the IP address for the associated server for
"rvp.tcp.host1.com". The RVP packet is sent to this server.
DNS A records can be consulted if DNS SRV records are not present.
There is some discussion of whether use of DNS SRV records pollutes
the DNS namespace, but this issue is not well-understood yet.
3.2. Use Service Location Protocol
The Service Location Protocol version 2.0 [8] is in development but
may serve our needs in the future. A SLP URL for an RVP server
could look like:
Server:rvp://widgets.com
However, SLP may not be useful on the internet and this bears more
investigation.
Dusseault & Mohr [Page 6]
INTERNET-DRAFT RVP Addressing March 1998
Authors' Addresses
Lisa Dusseault
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052
EMail: lisadu@microsoft.com
Fax: (425) 936-7329
Gordon Mohr
Activerse, Inc.
1301 W. 25th St
Suite 500
Austin, TX 78705
Email: gojomo@activerse.com
Bibliography
[1] Dawson F. and Howes T., 'vCard MIME Directory Profile',
INTERNET-DRAFT <draft-ietf-asid-mime-vcard-04.txt>,
May 1998
[2] Gulbrandsen A. and Vixie P., "A DNS RR for specifying the
location of services (DNS SRV)", RFC 2052,
<ftp://ds.internic.net/rfc/rfc2052.txt>, October 1996.
[3] Leach P., ‘Locating Native Internet LDAP Servers’,
INTERNET DRAFT <draft-leach-asid-ldap-locating-00.txt>,
March 1997
[4] Mockapetris, P., "Domain Names - Implementation and
Specification", STD 13, RFC 1035, USC/Information Sciences
Institute, November 1987.
<URL:ftp://ds.internic.net/rfc/rfc1035.txt>
[5] Network Applications Consortium 'Lightweight Internet Person
Schema', April 1997, <URL:http://www.netapps.org>
[6] Berners-Lee T., Masinter L., McCahill M., "Uniform Resource
Locators (URL)", RFC 1738, Dec 1994. <URL:ftp://ftp.isi.edu/in-
notes/rfc1738.txt>
Dusseault & Mohr [Page 7]
INTERNET-DRAFT RVP Addressing March 1998
[7] Calsyn M. and Dusseault L., "RVP: A Presence Information
Protocol", INTERNET-DRAFT <draft-calsyn-rvp-01.txt>, March 1998.
[8] Day M, Veizades J., Perkins C. and Guttman E. "Service Location
Protocol", INTERNET-DRAFT <draft-ietf-svrloc-protocol-v2-03.txt>,
March 1998
Dusseault & Mohr [Page 8]