draft-ietf-impp-im-01 (was: Re: WG Last Call on multiple documents (deadline Jan 12))
Dave Crocker <[email protected]> Mon, 6 Jan 2003 15:29:13 -0800
| Newsgroups | gmane.ietf.impp |
|---|---|
| Organization | Brandenburg InternetWorking |
| Message-ID | <[email protected]> |
Detailed comments are below.
The general comment is that the current version of the specification does
not contain nearly enough detail to permit unambiguous, interoperable
implementation. Too much is assumed.
Much of this derives from the earliest CPIM specification text, but was
never discussed and resolved.
d/
Detail (compressed to skip text for which there are no comments):
Common Profile: Instant Messaging
<<
Common Profile: Instant Messaging (CPIM)
>>
3.1 Overview of Instant Messaging Service
...
The message operation has the following attributes: source,
destination, MaxForwards and TransID. 'source' and 'destination'
identity the originator and destination of an instant message,
<<
identity -> identify
destination -> recipient
[[ let's use comparable terms for sender and receiver, and we might as
well use the same terminology as is used for email. At the least, we
should be consistent. I'm taking the above usage to mean that
source/destination refer to CPIM service 'target' fields and
originator/recipient refer to the sending mailbox and the receiving
mailbox. /d]
>>
respectively, and consist of an INSTANT INBOX identifier (as
described in Section 3.2). The MaxForwards is a hop counter used in
order to avoid loops through gateways. The TransID is a unique
identifier used to correlate message operations to response
operations.
<<
The MaxForwards is a hop counter used in
order to avoid loops through gateways. The TransID is a unique
identifier used to correlate message operations to response
operations.
->
MaxForwards is MaxForwards used as is a hop counter, to avoid loops
through gateways, with usage details defined in Section 3.4.2. Its
initial value is set by the originator.
[[ What is the maximum value? Minimum? Integer? /d]]
TransID is a unique
identifier used to correlate message operations to response
operations. It is created by the originator and must be unique to the
request. That is, each request shall carry a different TransID.
[[ What is the form of the TransID? How is uniqueness guaranteed? What
are the limits on it? /d ]]
>>
The message operation also has some content, the instant message
itself, which may be textual, or which may consist of other data.
Some further information on content is provided in Section 3.3.
<<
Some further information on content is provided in Section 3.3.
->
Content details are specified in Section 3.3
>>
Upon receiving a message operation, the service immediately responds
by invoking the response operation containing the same transaction-
identifier, e.g.,
The response operation contains the following attributes: TransID and
status. The TransID is used to correlate the response to a
particular instant message. Status indicates whether the delivery of
the message succeeded or failed.
<<
Add:
Valid status values are defined in Section 3.4.1.
>>
3.2.1 Address Resolution
A client determines the address of an appropriate system running a
server by resolving the destination domain name that is part of the
identifier to either an intermediate relay system or a final target
system.
<<
A client determines the address of an appropriate system running a
server by resolving the destination domain name that is part of the
->
An IM service client determines the next hop to forward the IM to
by resolving the domain name portion of the service destination.
>>
<<
The formal semantics of IM domain processing are defined in [2].
Therefore,
>>
Compliant implementations SHOULD follow the guidelines for
dereferencing URIs given in [2].
3.3 Format of Instant Messages
This specification defines an abstract interoperability mechanism for
instant messaging protocols; the message content definition given
here pertains to semantics rather than syntax. However, some
<<
[[ sorry, but this is no longer true. this spec now defines mandatory
content syntax, in order to enable end-to-end security. I suggest simply
removing "; the message content definition given
here pertains to semantics rather than syntax. However," /d]]
>>
important properties for interoperability can only be provided if a
common end-to-end format for instant messaging is employed by the
interoperating instant messaging protocols. Implementations
therefore SHOULD support the format defined in MSGFMT [4].
<<
[[ "should" made sense when this was a spec for translating among
heterogeneous systems. The spec now is for relaying among systems that
use the same end-to-end content (and addressing) syntax and semantics.
Therefore, the requirement now must be a MUST. /d]]
>>
3.4 The Messaging Service
Note that the transaction-identifier parameters used with the instant
messaging service are potentially long-lived. Accordingly, the
<<
[[ why are they potentially long-lived? They are for the
request-response transaction only. Perhaps this is being confused with a
content "message" identifier? /d]]
>>
values generated for this parameter should be unique across a
significant duration of time.
3.4.1 The Message Operation
When an application wants to send an INSTANT MESSAGE, it invokes the
message operation.
When the service is informed of the message operation, it performs
these steps:
<<
[[ What does "When the service is informed of the message operation?
mean? /d]]
>>
1. If the source or destination does not refer to a valid INSTANT
INBOX, a response operation having status "failure" is invoked.
<<
[[ every node along a path must determine the complete validity of both
source and destination fields? This is not viable. What is the real
requirement? /d ]]
>>
3. Otherwise:
If the service is able to successfully deliver the message, a
response operation having status "success" is invoked.
If the service is unable to successfully deliver the message,
a response operation having status "failure" is invoked.
If the service must delegate responsibility for delivery, and
if the delegation will not result in a future authoritative
indication to the service, a response operation having status
"indeterminate" is invoked.
If the service must delegate responsibility for delivery, and
if the delegation will result in a future authoritative
indication to the service, then a response operation is
invoked immediately after the indication is received.
<<
[[ The implication of this "Otherwise" sub-section has just sunk in, for
me. It means that there is an end-to-end, real-time dependency chain for
generating a response to a request. Each node along a relay path must
withhold generating a response until the next node gives it the delivery
-- ie, the final -- status result. Note that this is fundamentally
different from Email. In effect, it uses the equivalent to the Email
SMTP Delivery Status Notification as the SOLE operations response
mechanisms, with no intermediate (hop-by-hop) relaying report. /d]]
>>
When the service invokes the response operation, the transID
parameter is identical to the value found in the message operation
invoked by the application.
3.4.2 Looping
If a CPIM gateway handles an instant message operation that has a
MaxForwards attribute of 0, it discards the message and invokes a
failure operation.
<<
[[ Hop-count loop control requires specification of the precise
place/time the decrement occurs and the precise place/time the zero-value
causes a bounce. That is, where in the state-diagram of a node are these
things done?
I propose that we keep the current language for decrementing, which means
that it can occur at any time within a node's processing, but that we
change "If a CPIM gateway handles" to be "If a CPIM gateway receives". /d ]]
>>
--
Dave <mailto:[email protected]>
Brandenburg InternetWorking <http://www.brandenburg.com>
t +1.408.246.8253; f +1.408.850.1850
[reminder: [email protected] for non-technical discussions, please]