ietf-corpus

rfc-7463

Shared Appearances of a Session Initiation Protocol (SIP) Address of Record (AOR)

A. Johnston (Editor), M. Soroushnejad (Editor), V. Venkataramanan
date2015-03 streamIETF arearai wgbliss statusPROPOSED STANDARD pages72 canonicalhttps://www.rfc-editor.org/rfc/rfc7463 doi10.17487/RFC7463 errataview
This document describes the requirements and implementation of a group telephony feature commonly known as Bridged Line Appearance (BLA) or Multiple Line Appearance (MLA), or Shared Call/Line Appearance (SCA). When implemented using the Session Initiation Protocol (SIP), it is referred to as shared appearances of an Address of Record (AOR) since SIP does not have the concept of lines. This feature is commonly offered in IP Centrex services and IP Private Branch Exchange (IPBX) offerings and is likely to be implemented on SIP IP telephones and SIP feature servers used in a business environment. This feature allows several user agents (UAs) to share a common AOR, learn about calls placed and received by other UAs in the group, and pick up or join calls within the group. This document discusses use cases, lists requirements, and defines extensions to implement this feature. This specification updates RFCs 3261 and 4235.

updates

Extracted elements (31)

design-rationale §5.3

PUBLISH is used to communicate desired appearance operations rather than as a continuous state-synchronization mechanism. Once a dialog transitions from early to confirmed state, the Appearance Agent is assumed to track state via other means (call stateful proxy, B2BUA), so publication refreshes are no longer required.

sip, realtime

design-rationale §4.2

The appearance number is embedded in the INVITE's Alert-Info header field (not only delivered via NOTIFY) to satisfy REQ-9: if the NOTIFY is delayed or lost, a UA still knows the correct appearance number to render during alerting. Dialog package notification takes precedence should the two conflict.

sip, realtime

design-rationale §5.3

The four-hour minimum retry interval for SUBSCRIBE after failure was chosen to limit discovery probes to six per day per UA. A shorter interval was rejected to reduce failure traffic, while keeping the interval short enough for timely discovery of a newly activated Appearance Agent.

sip, realtime

interoperability-note §9.3

A UA supporting dialog events but not shared appearances will simply ignore <appearance> elements in NOTIFYs. However, it may attempt to join or replace dialogs marked exclusive; the proxy or UA must actively reject such requests or the unintended join/takeover will succeed.

sip, realtime

interoperability-note §9.1

A UA with no knowledge of shared appearances can still register against the group AOR; the Appearance Agent assigns appearance numbers for its calls. If the UA does not support Join or Replaces, all its dialogs SHOULD be marked exclusive to avoid unnecessary SIP messaging failures.

sip, realtime

normative-requirement §5.3 MUST NOT

A UA MUST NOT insert an 'appearance' parameter into an Alert-Info header field in an INVITE or other request. The Appearance Agent is solely responsible for inserting this value.

sip, realtime

normative-requirement §5.3 SHOULD

A UA SHOULD register against the AOR only if it will be answering incoming calls. If a UA is mainly monitoring or picking up calls, it SHOULD subscribe but not register, to avoid generating large amounts of unnecessary network traffic.

sip, realtime

normative-requirement §5.3.3 MUST

During a transfer where the UA is the transferee, if a PUBLISH is sent to reassign the appearance number from the old dialog to the new one, that PUBLISH MUST be sent prior to sending the BYE to avoid a race condition where the Appearance Agent prematurely releases the appearance.

sip, realtime

normative-requirement §5.3 MUST

For emergency calls, a UA MUST never wait for a confirmed seizure before sending an INVITE; the emergency call MUST proceed without waiting for the PUBLISH transaction.

sip, realtime

normative-requirement §5.3 MUST

If a UA requires a particular appearance number, it MUST send a dialog package PUBLISH and wait for a 2xx response before sending the INVITE. This applies when seizing an appearance for an outgoing call, requesting no appearance be used, or joining/replacing an existing call.

sip, realtime

normative-requirement §5.3 MUST

If From tag and Call-ID were not present in the initial seizure PUBLISH, a new PUBLISH MUST be sent as soon as that information is available so the Appearance Agent can assign the appearance number to a specific dialog.

sip, realtime

normative-requirement §5.4 MUST

The Appearance Agent MUST allocate an appearance number for all incoming calls and send immediate notifications to subscribed UAs. An Appearance Agent returning a 400 Bad Request on an invalid PUBLISH SHOULD also send an immediate NOTIFY with full dialog event state.

sip, realtime

normative-requirement §5.4 MUST

The Appearance Agent MUST implement a dialog package state agent and MUST support the shared appearance extensions and 'shared' Event header field parameter. It MUST also have a way of discovering the state of all dialogs associated with the AOR.

sip, realtime

normative-requirement §5.4 MUST

The registrar MUST support the registration event package (RFC 3680) so that the Appearance Agent can discover UAs registered against the AOR and subscribe to their individual dialog state.

sip, realtime

normative-requirement §5.3 MUST

UAs implementing call pickup, joining, and bridging MUST support sending an INVITE with Replaces (RFC 3891) or Join (RFC 3911), and all UAs implementing shared appearances that support INVITE MUST support receiving an INVITE with those header fields.

sip, realtime

normative-requirement §5.3 MUST

Upon initialization, a UA MUST subscribe to the dialog event package of the AOR and refresh the subscription per RFC 6665. If the SUBSCRIBE fails, the feature is inactive for that AOR. The UA MAY retry at intervals no shorter than four hours.

sip, realtime

normative-requirement §5.3.2 MUST

When a UA generates an INVITE with Join or Replaces targeting a dialog in the shared appearance group, the UA MUST first send a PUBLISH carrying the appearance number, <joined-dialog>, or <replaced-dialog> element as appropriate, before sending the INVITE.

sip, realtime

protocol-element §5.4

The Appearance Agent is the single point of control for a shared appearance group, implementing a dialog package State Agent (ESC). It allocates and releases appearance numbers, resolves contention, and sends NOTIFY messages to all subscribed UAs whenever dialog state changes for the AOR.

sip, realtime

protocol-element §5.2.1

The <appearance> element is a child of <dialog> in the shared appearance dialog package extension. When sent by a UA in a PUBLISH with state 'trying', it requests a specific appearance number; when sent by the Appearance Agent in a NOTIFY, it confirms the assigned number.

sip, realtime

protocol-element §5.2.2

The <exclusive> boolean element, a child of <dialog>, indicates when true that the UA will not accept an INVITE with Join or Replaces for that dialog. It is a hint only; a UA must still be ready to reject such INVITEs independently. Absent, it defaults to false.

sip, realtime

protocol-element §5.2.3

The <joined-dialog> element, a child of <dialog>, carries the call-id, local-tag, and remote-tag of any dialogs mixed or bridged with the current dialog. Joined dialogs share the same appearance number, and only the UA controlling the mixing should include this element in publications.

sip, realtime

protocol-element §5.2.4

The <replaced-dialog> element, a child of <dialog>, carries the call-id, local-tag, and remote-tag of a dialog being replaced by this one. Replaced dialogs share the same appearance number, preventing the Appearance Agent from reassigning the number when the replaced dialog is torn down.

sip, realtime

protocol-element §5.3

The 'shared' Event header field parameter is included in SUBSCRIBE, NOTIFY, and PUBLISH requests for the dialog event package to signal support for this specification. Its presence in a NOTIFY also allows UAs to discover the Appearance Agent without a failed SUBSCRIBE.

sip, realtime

registry §13.2

IANA registration of the SIP Alert-Info Header Field Parameter 'appearance', defined with ABNF appearance-param = "appearance" EQUAL 1*DIGIT. This parameter carries the appearance number assigned by the Appearance Agent in forked INVITEs.

registry, sip

registry §13.1

IANA registration of the SIP Event Header Field Parameter 'shared' for the 'dialog' event package. This parameter in SUBSCRIBE/NOTIFY/PUBLISH signals that the sender supports the shared appearances specification.

registry, sip

registry §13.3

IANA registration of URN sub-namespace 'sa-dialog-info' under 'urn:ietf:params:xml:ns:sa-dialog-info', and the corresponding XML schema, for the shared appearance dialog package extensions (<appearance>, <exclusive>, <joined-dialog>, <replaced-dialog>).

registry, sip

security-consideration §12

All publications and subscriptions must be authorized before they are accepted to prevent UAs outside the group from selecting, seizing, or manipulating appearance numbers. Registrar and Appearance Agent must accept credentials of the shared AOR or the individual user depending on the domain's authorization policy.

security, sip

security-consideration §5.2.2

Appearance information (who is on which call) must not be leaked outside the group. A UA may deliberately omit dialog identifiers (Call-ID, to-tag, from-tag) from publications to prevent other UAs from constructing Join or Replaces headers, providing a mechanism beyond the <exclusive> hint.

security, privacy, sip

state-machine §5.4

Appearance lifecycle: allocated when a PUBLISH with appearance number is received or an incoming INVITE arrives; held through early and confirmed dialog states; released when the last associated dialog (including joined or replaced ones) terminates. During the early state, the Appearance Agent controls PUBLISH rate via Expires; after confirmation, publication expiry has no effect on allocation.

sip, realtime

wire-format §7

The Alert-Info header field is extended with an 'appearance' parameter: appearance-param = "appearance" EQUAL 1*DIGIT. There MUST NOT be more than one appearance parameter per Alert-Info header field. Inserted only by the forking proxy on behalf of the Appearance Agent.

sip, realtime

wire-format §6

The XML namespace for shared appearance extensions is 'urn:ietf:params:xml:ns:sa-dialog-info'. The schema defines <appearance> (xs:integer, 0..1), <exclusive> (xs:boolean, 0..1), <joined-dialog> (0..unbounded, with mandatory call-id/local-tag/remote-tag attributes), and <replaced-dialog> (same structure).

sip, realtime