ietf-corpus

rfc-3428

Session Initiation Protocol (SIP) Extension for Instant Messaging

B. Campbell (Editor), J. Rosenberg, H. Schulzrinne, C. Huitema, D. Gurle
date2002-12 streamIETF arearai wgsip statusPROPOSED STANDARD pages18 canonicalhttps://www.rfc-editor.org/rfc/rfc3428 doi10.17487/RFC3428 errataview
Instant Messaging (IM) refers to the transfer of messages between users in near real-time. These messages are usually, but not required to be, short. IMs are often used in a conversational mode, that is, the transfer of messages back and forth is fast enough for participants to maintain an interactive conversation. This document proposes the MESSAGE method, an extension to the Session Initiation Protocol (SIP) that allows the transfer of Instant Messages. Since the MESSAGE request is an extension to SIP, it inherits all the request routing and security features of that protocol. MESSAGE requests carry the content in the form of MIME body parts. MESSAGE requests do not themselves initiate a SIP dialog; under normal usage each Instant Message stands alone, much like pager messages. MESSAGE requests may be sent in the context of a dialog initiated by some other SIP request. [STANDARDS-TRACK]

updated by

Extracted elements (28)

design-rationale §2

Implementations SHOULD NOT create dialogs for the primary purpose of associating MESSAGE requests with one another, because dialog-associated MESSAGE requests must follow the same network path as other SIP requests, causing likely congestion when IM volume is high and preventing separation between IM and signaling endpoints.

sip, congestion, realtime

design-rationale §8

The 1300-byte message size limit is not based on path MTU to the next hop (as SIP does for transport decisions) because a MESSAGE client is unlikely to know the MTU for upstream devices beyond the next hop; a fixed conservative limit ensures no upstream proxy forwards large content over UDP.

sip, congestion, realtime

design-rationale §2

The document addresses the pager model only (each IM stands alone), not the session model (explicit conversation with clear beginning and end). The session model for IM requires additional work and was deferred to the SIMPLE working group.

sip, realtime

interoperability-note §3

Using message/cpim bodies is expected to enable interoperability between endpoints using different IM protocols, since message/cpim is designed for support across multiple instant message protocols and allows end-to-end security even through gateways.

sip, realtime, security

normative-requirement §5 SHOULD

A UA presented with an IM URI SHOULD resolve it to a SIP URI and place it in the Request-URI before sending. If unable to resolve, it MAY place the IM URI directly, delegating resolution to a downstream device.

sip, realtime

normative-requirement §8 MUST NOT

A UAC MUST NOT initiate a new out-of-dialog MESSAGE transaction to a given URI if there is a previous out-of-dialog transaction pending for the same URI. A UAC SHOULD NOT initiate overlapping MESSAGE transactions inside a dialog unless the route set uses congestion-controlled transport at every hop.

sip, congestion, realtime

normative-requirement §7 MUST NOT

A UAS receiving a MESSAGE request SHOULD respond with a final response immediately. A 2xx response to a MESSAGE request MUST NOT contain a body, and a UAS MUST NOT insert a Contact header field into a 2xx response.

sip, realtime

normative-requirement §7 MUST

A UAS that supports the MESSAGE method MUST be prepared to receive and render bodies of type text/plain, and may support message/cpim.

sip, realtime

normative-requirement §4 MUST

All UACs which support the MESSAGE method MUST be prepared to send MESSAGE requests with a body of type text/plain. They may send bodies of type message/cpim.

sip, realtime

normative-requirement §7 SHOULD

If the MESSAGE request containing an Expires header field also contains a Date header field, the UAS SHOULD interpret the Expires value as delta time from the Date field; otherwise from the time the UAS received the request.

sip, realtime

normative-requirement §4 SHOULD

If the UAC adds an Expires header field with a non-zero value, it SHOULD also add a Date header field containing the time the message is sent.

sip, realtime

normative-requirement §4 MUST NOT

If the UAC receives a 202 Accepted response, it MUST NOT assume the message has been delivered to the final destination, as it was only accepted by an intermediary such as a gateway or store-and-forward server.

sip, realtime

normative-requirement §1 REQUIRED

Implementations of the MESSAGE method SHALL support all instant message requirements in RFC 2779 relevant to its scope of applicability.

sip, realtime

normative-requirement §8 SHOULD

MESSAGE requests SHOULD be sent over transports that implement end-to-end congestion control such as TCP or SCTP whenever possible.

sip, congestion, realtime

normative-requirement §5 MUST NOT

Record-Route and Route header fields MUST NOT contain IM URIs; these header fields contain concrete SIP or SIPS URIs according to SIP rules.

sip, realtime

normative-requirement §8 MUST NOT

The size of MESSAGE requests outside of a media session MUST NOT exceed 1300 bytes, unless the UAC has positive knowledge that the message will not traverse a congestion-unsafe link or that the message size is at least 200 bytes less than the lowest MTU value en route.

sip, congestion, realtime

normative-requirement §4 MUST NOT

User Agents MUST NOT insert Contact header fields into MESSAGE requests. MESSAGE requests do not initiate dialogs.

sip, realtime

protocol-element §9

A MESSAGE request MAY contain a body, using standard MIME header fields to identify the content. Header field tables define which SIP header fields are mandatory (m), optional (o), or not applicable (-) for MESSAGE requests and responses.

sip, realtime

protocol-element §7

Response semantics: 200 OK means the UAS accepted the message (not that the user has read it); 202 Accepted means delivery to an intermediary; 4xx/5xx means unsuccessful delivery; 6xx means successfully delivered but refused.

sip, realtime

protocol-element §9

The BNF for the MESSAGE method is: MESSAGEm = %x4D.45.53.53.41.47.45 (MESSAGE in caps). The method name is case sensitive.

sip, realtime

protocol-element §1

The MESSAGE method is a new SIP method that carries instant message content in the request body as MIME parts. MESSAGE requests do not establish dialogs; each message stands alone like a pager message, though they may be sent within an existing dialog.

sip, realtime

registry §12

This specification registers the MESSAGE method in the IANA SIP Parameters Method registry at http://www.iana.org/assignments/sip-parameters/Method.

sip, registry, realtime

security-consideration §11.3 MUST

MESSAGE bodies MUST be secured with S/MIME when end-to-end protection is required. SIP MESSAGE endpoints MUST support encryption (CMS EnvelopeData) and S/MIME signatures (CMS SignedData).

sip, security, crypto, realtime

security-consideration §11.5

The message/cpim format allows S/MIME protection of metadata across protocol boundaries, enabling sender authentication even when a message crosses a gateway to another CPIM-compliant IM service that does not understand SIP headers.

sip, security, realtime

security-consideration §11.2

The SIPS URI mechanism provides hop-by-hop integrity and privacy but requires trusting all proxies to not fork to unauthorized destinations. A forking proxy can deliver a MESSAGE to additional endpoints without UAC knowledge.

sip, security, realtime

security-consideration §11.4 MUST

To prevent replay attacks, all signed MESSAGE requests and responses MUST contain a Date header field covered by the message signature. Messages with dates more than several minutes old or in the future SHOULD be rejected with 400 (Incorrect Date or Time).

sip, security, realtime

security-consideration §11 MUST

UAs that support MESSAGE MUST implement end-to-end authentication, body integrity, and body confidentiality mechanisms, because MESSAGE carries actual communication payload rather than session signaling.

sip, security, realtime

security-consideration §11.1 RECOMMENDED

When local proxies are used for outbound transmission, proxy authentication as specified in RFC 3261 is RECOMMENDED to verify originator identity and prevent spoofing and spamming.

sip, security, realtime