Subject: [Insipid] Endpoint Behavior

From: "Paul E. Jones" <[email-masked]>
Date: Wed, 10 Apr 2013 02:49:41 -0400

Folks,

Below is what I presently have in Section 6 ("Endpoint Behavior") of the
draft.  Please suggest how we should move things or split things to improve
clarity.  Suggested wording changes are welcome, of course.

Paul

-------------------------

6. Endpoint Behavior

To comply with this specification, SIP UAs MUST include a Session-ID
header-value in all SIP messages transmitted as a part of a
communication session.  The UUID of the sender of the message MUST
appear first in the Session-ID header and the UUID of the peer device,
if known, must appear as the "remote" parameter following the sender's
UUID.

Once a UA allocates a UUID value for a communication session, the UA
MUST NOT change that UUID value for the duration of the session,
including when

    - communication attempts are retried due to receipt of 4xx messages;
    - the session is redirected in response to a 3xx message; or
    - a session is transferred via a REFER message [RFC3515], or when a
      SIP dialog is replaced via an INVITE with Replaces [RFC3891].

A non-intermediary UAS UA that receives a Session-ID header MUST take
note of the first UUID value (i.e., the "local-UUID") that it receives
in the Session-ID header and assume that that is the UUID of the peer
endpoint within that communications session.  UAs MUST include this
received UUID value as the "remote" parameter when transmitting
subsequent messages.

It should be noted that messages received by a UA might contain a
"remote" parameter that does not match the UAs UUID.  This might happen
as a result of service interactions by intermediaries and MUST NOT
negatively affect the communication session.  However, the UA may log
this event for the purposes of troubleshooting.

For any purpose the UA has for the Session-ID, it MUST assume that the
Session-ID is {A,B} where "A" is the UUID value of this endpoint and "B"
is the UUID value of the peer endpoint, taken from the most recently
received message within this session.

An endpoint MUST assume that the UUID value of the peer UA MAY change at
any time due to service interactions.  If the UUID value of the peer UA
changes, the UA MUST include this new UUID as the "remote" parameter in
any subsequent messages.

It is also important to note that if a session is forked by an
intermediary in the network, the initiating UA may receive multiple
responses back from different endpoints, each of which will contain a
different UUID value.  UAs MUST take care to ensure that the correct
UUID value is returned in the "remote" parameter when responding to
those endpoints.