diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc6910.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc6910.txt')
-rw-r--r-- | doc/rfc/rfc6910.txt | 2075 |
1 files changed, 2075 insertions, 0 deletions
diff --git a/doc/rfc/rfc6910.txt b/doc/rfc/rfc6910.txt new file mode 100644 index 0000000..f62329a --- /dev/null +++ b/doc/rfc/rfc6910.txt @@ -0,0 +1,2075 @@ + + + + + + +Internet Engineering Task Force (IETF) D. Worley +Request for Comments: 6910 Ariadne Internet Services, Inc. +Category: Standards Track M. Huelsemann +ISSN: 2070-1721 R. Jesske + Deutsche Telekom + D. Alexeitsev + TeleFLASH + April 2013 + + + Completion of Calls for the Session Initiation Protocol (SIP) + +Abstract + + The "completion of calls" feature defined in this specification + allows the caller of a failed call to be notified when the callee + becomes available to receive a call. + + For the realization of a basic solution without queuing, this + document references the usage of the dialog event package (RFC 4235) + that is described as 'Automatic Redial' in "Session Initiation + Protocol Service Examples" (RFC 5359). + + For the realization of a more comprehensive solution with queuing, + this document introduces an architecture for implementing these + features in the Session Initiation Protocol where "completion of + calls" implementations associated with the caller's and callee's + endpoints cooperate to place the caller's request for completion of + calls into a queue at the callee's endpoint; when a caller's request + is ready to be serviced, re-attempt of the original, failed call is + then made. + + The architecture is designed to interoperate well with existing + completion of calls solutions in other networks. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 5741. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + http://www.rfc-editor.org/info/rfc6910. + + + +Worley, et al. Standards Track [Page 1] + +RFC 6910 Completion of Calls April 2013 + + +Copyright Notice + + Copyright (c) 2013 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + +Table of Contents + + 1. Introduction ....................................................3 + 2. Requirements Terminology ........................................4 + 3. Terminology .....................................................4 + 4. Solution ........................................................6 + 4.1. CC Architecture ............................................6 + 4.2. CC Procedures ..............................................8 + 4.3. Automatic Redial as a Fallback ............................11 + 4.4. Differences from SS7 ......................................11 + 5. CC Queue Model .................................................12 + 6. Caller's Agent Behavior ........................................13 + 6.1. Receiving the CC Possible Indication ......................13 + 6.2. Subscribing to CC .........................................13 + 6.3. Receiving a CC Recall Notification ........................14 + 6.4. Initiating a CC Call ......................................15 + 6.5. Suspending CC .............................................15 + 6.6. Resuming CC ...............................................15 + 7. Callee's Monitor Behavior ......................................16 + 7.1. Sending the CC Possible Indication ........................16 + 7.2. Receiving a CC Subscription ...............................17 + 7.3. Sending a CC Notification .................................18 + 7.4. Receiving a CC Call .......................................19 + 7.5. Receiving a CC Suspension .................................19 + 7.6. Receiving a CC Resumption .................................20 + 8. Examples .......................................................20 + 9. 'call-completion' Event Package ................................24 + 9.1. Event Package Name ........................................24 + 9.2. Event Package Parameters ..................................24 + 9.3. SUBSCRIBE Bodies ..........................................25 + 9.4. Subscribe Duration ........................................25 + 9.5. NOTIFY Bodies .............................................26 + 9.6. Subscriber Generation of SUBSCRIBE Requests ...............26 + + + +Worley, et al. Standards Track [Page 2] + +RFC 6910 Completion of Calls April 2013 + + + 9.7. Notifier Processing of SUBSCRIBE Requests .................26 + 9.8. Notifier Generation of NOTIFY Requests ....................27 + 9.9. Subscriber Processing of NOTIFY Requests ..................27 + 9.10. Handling of Forked Requests ..............................28 + 9.11. Rate of Notifications ....................................28 + 9.12. State Agents .............................................28 + 10. CC Information Format .........................................28 + 10.1. CC Status ................................................29 + 10.2. CC Service-Retention Indication ..........................29 + 10.3. CC URI ...................................................29 + 11. Security Considerations .......................................29 + 12. IANA Considerations ...........................................31 + 12.1. SIP Event Package Registration for CC ....................31 + 12.2. MIME Registration for application/call-completion ........31 + 12.3. SIP/SIPS URI Parameter 'm' ...............................32 + 12.4. The 'purpose' Parameter Value 'call-completion' ..........33 + 12.5. 'm' Header Parameter for Call-Info .......................33 + 13. Acknowledgements ..............................................33 + 14. References ....................................................34 + 14.1. Normative References .....................................34 + 14.2. Informative References ...................................35 + Appendix A. Example Caller's Agent ................................36 + Appendix B. Example Callee's Monitor ..............................36 + +1. Introduction + + The Completion of Calls (CC) feature allows the caller of a failed + call to have the call completed without having to make a new call + attempt while guessing when the callee becomes available. When the + caller requests the use of the CC feature, the callee will be + monitored for its availability. When the callee becomes available, + the callee will be given a certain time frame for initiating a call. + If the callee does not initiate a new call within this time frame, + then the caller will be recalled. When the caller accepts the CC + recall, then a CC call to the callee will automatically start. If + several callers have requested the CC feature on the same callee, + they will be recalled in a predefined order, which is usually the + order in which they have requested the CC feature. + + This document defines the following CC features: + + Completion of Calls to Busy Subscriber (CCBS): The callee is busy. + The caller is recalled after the callee is no longer busy. + + Completion of Calls on No Reply (CCNR): The callee does not answer + the call. The caller is recalled after the callee has completed a + new call. + + + + +Worley, et al. Standards Track [Page 3] + +RFC 6910 Completion of Calls April 2013 + + + Completion of Calls on Not Logged-in (CCNL): The callee is not + registered. The caller is recalled after the callee has + registered again. + +2. Requirements Terminology + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [RFC2119]. + + This document uses terms from [RFC3261]. + +3. Terminology + + For the purpose of this service, we provide the following + terminology: + + Callee: a destination of the original call, and a target of the CC + call. + + Caller: the initiator of the original call and the CC request. The + user on whose behalf the CC call is made. + + Callee's monitor: a logical component that implements the CC queue + for destination user(s)/UA(s) (User Agent(s)) and performs the + associated tasks, including sending CC recall events, analogous to + the destination local exchange's role in Signaling System 7 + (SS7) CC. + + Caller's agent: a logical component that makes CC requests and + responds to CC recall events on behalf of originating + user(s)/UA(s), analogous to the originating local exchange's role + in SS7 CC. + + CC, or Completion of Calls: a service that allows a caller who + failed to reach a desired callee to be notified when the callee + becomes available to receive a call. + + CC activation: the indication by the caller to the caller's agent + that the caller desires CC for a failed original call; this + implies an indication transmitted from the caller's agent to the + callee's monitor of the desire for CC processing. + + CCBS, or Completion of Calls to Busy Subscriber: a CC service + provided when the initial failure was that the destination UA was + busy. + + + + + +Worley, et al. Standards Track [Page 4] + +RFC 6910 Completion of Calls April 2013 + + + CCNR, or Completion of Calls on No Reply: a CC service provided when + the initial failure was that the destination UA did not answer. + + CCNL, or Completion of Calls on Not Logged-in: a CC service provided + when the initial failure was that the destination UA was not + registered. + + CC call: a call from the caller to the callee, triggered by the CC + service when it has determined that the callee is available. + + CC indicator: an indication in the CC call INVITE used to prioritize + the call at the destination. + + CC possible indication: the data in responses to the INVITE of the + original call that indicate that CC is available for the call. + + CC recall: the action of the callee's monitor selecting a particular + CC request for initiation of a CC call, resulting in an indication + from the caller's agent to the caller that it is now possible to + initiate a CC call. + + CC recall events: event notifications of event package + "call-completion", sent by the callee's monitor to the caller's + agent to inform it of the status of its CC request. + + CC recall timer: maximum time the callee's monitor will wait for the + caller's response to a CC recall. + + CC request: the entry in the callee's monitor queue representing the + caller's request for CC processing, that is, the caller's CC + subscription. + + CC service duration timer: maximum time a CC request may remain + active within the network. + + CC queue: a buffer at the callee's monitor that stores incoming + calls that are targets for CC. Note: This buffer may or may not + be organized as a queue. The use of the term "queue" is analogous + to SS7 usage. + + CCE, or CC Entity: the representation of a CC request, or, + equivalently, an existing CC subscription within the queue of a + callee's monitor. + + + + + + + + +Worley, et al. Standards Track [Page 5] + +RFC 6910 Completion of Calls April 2013 + + + Failed call: a call that does not reach a desired callee, from the + caller's point of view. Note that a failed call may be successful + from the SIP point of view; e.g., if the call reached the callee's + voicemail but the caller desired to speak to the callee in real + time, the INVITE receives a 200 response, but the caller considers + the call to have failed. + + Notifier: the UA that generates NOTIFY requests for the purpose of + notifying subscribers of the callee's availability; for the CC + service, this is the task of the callee's monitor. + + Original call: the initial call that failed to reach a desired + destination. + + Retain option: a characteristic of the CC service; if supported, CC + calls that again encounter a busy callee will not be queued again, + but the position of the caller's entry in the queue is retained. + Note that SIP CC always operates with the retain option active; a + failed CC call does not cause the CC request to lose its position + in the queue. + + Signaling System 7, or SS7: the signaling protocol of the public + switched telephone network, defined by ITU-T Recommendations Q.700 + through Q.849. + + Subscriber: the UA that receives NOTIFY requests with information of + the callee's availability; for the CC service, this is the task of + the caller's agent. + + Suspended CC request: a CC request that is temporarily not to be + selected for CC recall. + +4. Solution + +4.1. CC Architecture + + The CC architecture augments each caller's UA (or User Agent Client + (UAC)) wishing to use the CC features with a "CC agent" (also written + as "caller's agent"). + + It augments each callee's UA (or User Agent Server (UAS)) wishing to + be the target of the CC features with a "CC monitor" (also written as + "callee's monitor"). + + The caller's agent and callee's monitor functions can be integrated + into the respective UAs, be independent end-systems, or be provided + by centralized application servers. The two functions, though + associated with the two UAs (caller and callee), also may be provided + + + +Worley, et al. Standards Track [Page 6] + +RFC 6910 Completion of Calls April 2013 + + + as services by the endpoints' home proxies or by other network + elements. Though it is expected that a UA that implements CC will + have both functions so that it can participate in CC as both caller + and callee, the two functions are independent of each other. + + A caller's agent may service more than one UA as a collective group + if a caller or population of users will be shared between the UAs, + and especially if the UAs share an address of record (AOR). + + The caller's agent monitors calls made from the caller's UA(s) in + order to determine their destinations and (potentially) their final + response statuses, and the Call-Info header fields of provisional and + final responses to invoke the CC feature. + + A callee's monitor may service more than one UA as a collective group + if a callee or population of users will be shared between the UAs, + and especially if the UAs share an AOR. The callee's monitor may + supply the callee's UAS(s) with Call-Info header field values for + provisional and final responses. + + The callee's monitor also instantiates a presence server used to + monitor the caller's availability for CC recall. + + The callees using the UA(s) may be able to indicate to the callee's + monitor when they wish to receive CC calls. + + In order to allow flexibility and innovation, most of the interaction + between the caller's agent, the caller(s) (user(s)), and the caller's + UA(s) is out of the scope of this document. Similarly, most of the + interaction between the callee's monitor, the callee(s), and the + callee's UA(s) is out of the scope of this document, as is the policy + by which the callee's monitor arbitrates between multiple CC + requests. + + The caller's agent must be capable of performing a number of + functions relative to the UA(s). The method by which it does so is + outside the scope of this document, but an example method is + described in Appendix A. The callee's monitor must be capable of + performing a number of functions relative to the UA(s). The method + by which it does so is outside the scope of this document, but an + example method is described in Appendix B. + + As a proof of concept, simple caller's agents and callee's monitors + can be devised that interact with users and UAs entirely through + standard SIP mechanisms [RFC6665] [RFC4235] [RFC3515], as described + in the Appendices. + + + + + +Worley, et al. Standards Track [Page 7] + +RFC 6910 Completion of Calls April 2013 + + + The callers using the UA(s) can indicate to the caller's agent when + they wish to avail themselves of CC for a recently made call that the + callers determined to be unsuccessful. The caller's agent monitors + the status of the caller's UA(s) to determine when they are available + to be used for a CC recall. The caller's agent can communicate to + the caller's UA(s) that a CC recall is in progress and inquire if the + relevant caller is available for the CC recall. + + The callee's monitor may utilize several methods to monitor the + status of the callee's UA(s) and/or their users for availability to + receive a CC call. This can be achieved through monitoring calls + made to the callee's UA(s) to determine the callee's status, the + identity of callers, and the final responses for incoming calls. And + in a system with rich presence information, the presence information + may directly provide this status. In a more restricted system, this + determination can depend on the mode of the CC call in question, + which is provided by the URI 'm' parameter. For example, a UA is + considered available for CCBS ("m=BS") when it is not busy, but a UA + is considered available for CCNR ("m=NR") when it becomes not busy + after being busy with an established call. + + The callee's monitor maintains information about the set of INVITEs + received by the callee's UA(s) considered unsuccessful by the caller. + In practice, the callee's monitor may remove knowledge about an + incoming dialog from its set if local policy at the callee's monitor + establishes that the dialog is no longer eligible for CC activations. + +4.2. CC Procedures + + The caller's UA sends an INVITE to a request-URI. One or more forks + of this request reach one or more of the callee's UAs. If the CC + feature is available, the callee's monitor (note there can be a + monitor for each of the callee's UAs) inserts a Call-Info header + field with its URI and with "purpose=call-completion" in appropriate + non-100 provisional or final responses to the initial INVITE and + forwards them to the caller. The provisional response SHOULD be sent + reliably if the INVITE contained a Supported header field with the + option tag 100rel. On receipt of a non-100 provisional or a final + response with the indication that the CC feature is available, the + calling user can invoke the CC feature. + + The caller indicates to the caller's agent that he wishes to invoke + CC services on the recent call. Note that from the SIP point of + view, the INVITE may have been successful, but from the user's point + of view, the call may have been unsuccessful. For example, the call + may have connected to the callee's voicemail, which would return a + 200 status to the INVITE but from the caller's point of view is "no + reply". + + + +Worley, et al. Standards Track [Page 8] + +RFC 6910 Completion of Calls April 2013 + + + In order to receive information necessary for the caller to complete + the call at the callee, the caller's agent subscribes to the + call-completion event package at the callee's monitor. + + The possibility of the caller completing the call at the callee is + also known as the CC state (cc-state) of the caller. The cc-states + comprehend the values "queued" and "ready" (for CC). + + In order to receive information from all destinations where the + callee will be reachable, the caller's agent sends a SUBSCRIBE + request for the call-completion event package to the original + destination URI of the call and to all known URIs of the callees' + monitors (which are provided by Call-Info header fields in + provisional and final responses to the INVITE). Each callee's + monitor uses the subscription as an indication that the caller is + interested in using the CC feature with regard to the particular + callee. + + Each callee's monitor keeps a list or queue of subscriptions from + callers' agents, representing the requests from the callers' agents + to the callee's monitor for CC services. These subscriptions are + created, refreshed, and terminated according to the procedures of + [RFC6665]. + + Upon receiving a SUBSCRIBE request from the caller's agent, the + callee's monitor instantiates a presence state for the caller's UA + that can be modified by the caller's UA to indicate its availability + for the CC call. Upon instantiation, the caller's presence status at + the callee's monitor is "open". + + When the callee's monitor determines that the callee and/or callee's + UA is available for a CC call, it selects a caller to execute the CC + call and sends a CC event update ("cc-state: ready") via a NOTIFY + request to the selected subscription of the caller's agent, telling + it to begin the CC call to the callee's UA. + + When the caller's agent receives this update, it initiates a CC + recall by calling the caller's UA and then starts the CC call to the + callee's UA, using third-party call control procedures in accordance + with [RFC3725]. The caller's agent can also check by other means + whether the caller is available to initiate the CC call to the + callee's UA. If the caller is available, the caller's agent directs + the caller's UA to initiate the CC call to the callee's UA. + + The caller's agent marks the CC call as such by adding a specific SIP + URI parameter to the Request-URI, so it can be given precedence by + the callee's monitor in reaching the callee's UA. + + + + +Worley, et al. Standards Track [Page 9] + +RFC 6910 Completion of Calls April 2013 + + + If the caller is not available on receipt of the "ready for recall" + notification, the caller's agent suspends the CC request at the + callee's monitor by sending a PUBLISH request containing presence + information to the presence server of the callee's monitor, informing + the server that the presence status is "closed". Once the caller + becomes available for a CC call again, the caller's agent resumes the + CC request by sending another PUBLISH request to the callee's + monitor, informing the monitor that the presence status is "open". + + On receipt of the suspension request, the callee's monitor performs + the monitoring for the next non-suspended CC request in the queue. + On receipt of the resume from the previously suspended caller's agent + that was at the top of the queue, the callee's monitor performs the + callee monitoring for this caller's agent. + + When the CC call fails, there are two possible options: the CC + feature has to be activated again by the caller's agent subscribing + to the callee's monitor, or CC remains activated and the original CC + request retains its position in the queue if the retain option is + supported. + + The retain option (see Section 3) determines the behavior of the + callee's monitor when a CC call fails. If the retain option is + supported, CC remains activated, and the original CC request + retains its position in the queue. Otherwise, the CC feature is + deactivated, and the caller's agent would have to subscribe again to + reactivate it. + + A monitor that supports the retain option provides the + cc-service-retention header in its CC events. A caller's agent that + also supports the retain option uses the presence of this header to + know not to generate a new CC request after a failed CC call. + + Monitors not supporting the retain option do not provide the + cc-service-retention header. A failed CC call causes the CC request + to be deleted from the queue, and these monitors will terminate the + corresponding subscription of the caller's agent to inform that agent + that its CC request is no longer in the queue. A caller's agent that + does not support the retain option can also terminate its + subscription when a CC call fails, so it is possible that both the + caller's agent and the callee's monitor may be signaling the + termination of the subscription concurrently. This is a normal SIP + events [RFC6665] scenario. After the subscription is terminated, the + caller's agent may create a new subscription (as described in + Section 6.2) to reactivate the CC feature for the original call. + + + + + + +Worley, et al. Standards Track [Page 10] + +RFC 6910 Completion of Calls April 2013 + + +4.3. Automatic Redial as a Fallback + + Automatic Redial is a simple end-to-end design. An Automatic Redial + scenario is described in [RFC5359], Section 2.17. This solution is + based on the usage of the dialog event package. If the callee is + busy when the call arrives, then the caller subscribes to the + callee's call state. The callee's UA sends a notification when the + callee's call state changes. This means the caller is also notified + when the callee's call state changes to 'terminated'. The caller is + alerted, then the caller's UA starts a call establishment to the + callee again. If several callers have subscribed to a busy callee's + call state, they will be notified at the same time that the call + state has changed to 'terminated'. The problem with this solution is + that it might happen that several recalls are started at the same + time. This means it is a heuristic approach with no guarantee of + success. + + There is no interaction between CC and Automatic Redial, as there is + a difference in the behavior of the callee's monitor and the caller + when using the dialog event package for receiving dialog information + or for aggregating a CC state. + +4.4. Differences from SS7 + + SIP CC differs in some ways from the CCBS and CCNR features of SS7 + (which is used in the Public Switched Telephone Network (PSTN)). For + ease of understanding, we enumerate some of the differences here. + + As there is no equivalent to the forking mechanism in SS7, in the + PSTN, calls can be clearly differentiated as successful or + unsuccessful. Due to the complex forking situations that are + possible in SIP, a call may fail from the point of view of the user + and yet have a success response from SIP's point of view. (This can + happen even in simple situations: e.g., a call to a busy user that + fails over to his voicemail receives a SIP success response, even + though the caller may consider it "busy subscriber".) Thus, the + caller must be able to invoke CC even when the original call appeared + to succeed. To support this, the caller's agent must record + successful calls as well as unsuccessful calls. + + In SIP, only the caller's UA or service system on the originating + side and the callee's UA or service system on the terminating side + need to support CC for CC to work successfully between the UAs. + Intermediate SIP systems (proxies or back-to-back user agents + (B2BUAs)) do not need to implement CC; they only need to be + transparent to the usual range of SIP messages. In the PSTN, + additionally, intermediate nodes like media gateway controllers have + to implement the CC service. + + + +Worley, et al. Standards Track [Page 11] + +RFC 6910 Completion of Calls April 2013 + + +5. CC Queue Model + + The callee's monitor manages CC for a single URI. This URI is likely + to be a published AOR, or more likely "non-voicemail AOR", but it may + be as narrowly scoped as a single UA's contact URI. The callee's + monitor manages a dynamic set of CC entities (called "CCEs"), which + represent CC requests, or equivalently, the existing incoming CC + subscriptions. This set is also called a queue, because a queue data + structure often aids in implementing the policies of the callee's + monitor for selecting CCEs for CC recall. + + Each CCE has an availability state, determined through the caller's + presence status at the callee's monitor. A presence status of "open" + represents a CCE's availability state of "available", and a presence + status of "closed" represents a CCE's availability state of + "unavailable". + + Each CCE has a recall state that is visible via subscriptions. The + recall state is either "queued" or "ready". + + Each CCE carries the From URI of the SUBSCRIBE request that caused + its creation. + + CC subscriptions arrive at the callee's monitor by addressing the + URIs the callee's monitor returns in Call-Info header fields. The + request-URI of the SUBSCRIBE request determines the queue to which + the resulting CCE is added. The resulting subscription reports the + status of the queue. The base event data is the status of all the + CCEs in the queue, but the data returned by each subscription is + filtered to report only the status of that subscription's CCE. + (Further standardization may define means for obtaining more + comprehensive information about a queue.) + + When a CCE is created, it is given the availability state "available" + and recall state "queued". + + When the callee's monitor receives Presence Information Data Format + (PIDF) bodies [RFC3863] via PUBLISH requests [RFC3903], these PUBLISH + requests are expected to be sent by subscribers to indirectly suspend + and resume their CC requests by modifying its CCE availability state. + A CCE is identified by the request-URI (if it was taken from a CC + event notification that identifies the CCE) or the From URI of the + request (matching the From URI recorded in the CCE). Receipt of a + PUBLISH with status "open" sets the availability state of the CCE to + "available" (resume); status "closed" sets the availability state of + the CCE to "unavailable" (suspend). + + + + + +Worley, et al. Standards Track [Page 12] + +RFC 6910 Completion of Calls April 2013 + + + A CC request is eligible for recall only when its CCE's availability + state is "available" and the "m" value of the CCE also indicates an + available state. The callee's monitor MUST NOT select for recall any + CC requests that fail to meet those criteria. Within that + constraint, the selections made by the callee's monitor are + determined by its local policy. Often, a callee's monitor will + choose the acceptable CCE that has been in the queue the longest. + When the callee's monitor has selected a CCE for recall, it changes + the CCE's recall state from "queued" to "ready", which triggers a + notification on the CCE's subscription. + + If a selected subscriber then suspends its request by sending a + PUBLISH with the presence status "closed", the CCE becomes + "unavailable", and the callee's monitor changes the CCE's recall + state to "queued". This may cause another CCE (e.g., a CCE that has + been in the queue for less time) to be selected for recall. + + The caller's presence status at the callee's monitor is terminated + when the caller completes its CC call or when the subscription of the + caller's agent at the callee's monitor is terminated. + +6. Caller's Agent Behavior + +6.1. Receiving the CC Possible Indication + + The caller's agent MUST record the From URI and SHOULD record the + final request status that the caller's UA received along with the + contents of Call-Info header fields of provisional and final + responses. + + Note that receiving a CC possible indication also depends on the + aggregation of final responses by proxies; in the case of 4xx + responses, some 4xx responses are more likely to be sent to the + caller. + +6.2. Subscribing to CC + + For CC activation, the caller's agent MUST send a SUBSCRIBE to all + known callee's monitor URIs. A callee's monitor URI may be provided + in the Call-Info header field in provisional and final responses to + the INVITE sent back by the callee's monitor(s). Additionally, the + caller's agent SHOULD include the original request-URI that it sent + the original INVITE to, in its set of callee's monitor URIs, when it + is unclear if the call has forked to additional callees whose + responses the caller has not seen. A SUBSCRIBE to the original + request-URI alone is used in cases where the caller's agent has not + received or does not remember any callee's monitor URI. The caller's + agent SHOULD add an 'm' parameter to these URIs in order to indicate + + + +Worley, et al. Standards Track [Page 13] + +RFC 6910 Completion of Calls April 2013 + + + to the callee's monitor the desired CC mode. The 'm' parameter + SHOULD have the value of the 'm' parameter received in the Call-Info + header field of the responses to the original INVITE. + + To minimize redundant subscriptions, these SUBSCRIBEs SHOULD be + presented as forks of the same transaction, as defined by + Section 8.2.2.2 of [RFC3261], if the caller's agent is capable of + doing so. + + The agent MUST NOT maintain more than one CC request for a single + caller and directed to a single original destination URI. If a + caller requests CC a second time for the same destination URI, the + agent MUST consolidate the new request with the existing CC request + by either reusing the existing CC subscriptions or terminating and + then recreating them. For this purpose, equality of callers is + determined by comparing callers' AORs and equality of destination + URIs is determined by comparing them per [RFC3261] Section 19.1.4. + + When generating these SUBSCRIBEs, the From URI MUST be the caller's + AOR. The To URI SHOULD be the destination URI of the original call + (if the agent knows that and can insert it into the To header) and + otherwise MUST be the request-URI of the SUBSCRIBE. + + The SUBSCRIBE SHOULD have header fields to optimize its routing. In + particular, it SHOULD contain "Request-Disposition: parallel" and an + Accept-Contact header field to eliminate callee UAs that are not + acceptable to the caller. + + The caller's agent MUST be prepared to receive multiple responses for + multiple forks of the SUBSCRIBE and to have multiple subscriptions + established. The caller's agent must also be prepared to have the + SUBSCRIBE fail; in which case, CC cannot be invoked for this original + call. + + If the caller's agent no longer wants to initiate the CC call (e.g., + because the caller has deactivated CC), the caller's agent terminates + the subscription in accordance with [RFC6665] or suspends the + subscription(s) as specified in Section 6.5. + +6.3. Receiving a CC Recall Notification + + When receiving a NOTIFY with the cc-state set to "ready", the + caller's agent SHOULD suspend all other subscriptions to CC, by + following the step in Section 6.5, in order to prevent any other CC + requests from this caller from receiving CC recalls. The caller's + agent starts the CC recall to the caller by confirming that the + caller would be able to initiate a CC call, e.g., by calling the + caller's UA(s). + + + +Worley, et al. Standards Track [Page 14] + +RFC 6910 Completion of Calls April 2013 + + +6.4. Initiating a CC Call + + If the caller is available for the CC call and willing to initiate + the CC call, the caller's agent causes the caller's UA to generate a + new INVITE towards the callee. The caller's UA MAY add an 'm' URI + parameter with the value of the 'm' parameter received in the + Call-Info header in the response to the original INVITE, in order to + specify his preferences in CC processing and to prioritize the CC + call. The INVITE SHOULD be addressed to the URI specified in the + cc-URI of the NOTIFY, or, if that's not available, it SHOULD use the + URI in the Call-Info header field of the response to the original + INVITE; if that's not available, it MAY use the request-URI of the + original INVITE, if this URI was recorded. Note that the latter + choice may not provide ideal routing, but, in simple cases, it is + likely to reach the desired callee or callee's monitor. + +6.5. Suspending CC + + If the caller is not available for the CC recall, the CC request + SHALL be suspended by the caller's agent until the caller becomes + available again or if the conditions relevant to the local suspension + policy of the caller's agent have changed. To suspend the CC + request, the caller's agent SHALL publish the caller's presence state + by sending a PUBLISH request to each callee's monitor where the + presence server for CC resides in accordance with the procedures + described in [RFC3903], giving the PIDF state "closed" for the + caller's identity as presentity. The PUBLISH request SHOULD contain + an Expires header field with a value that corresponds to the current + value of the remaining CC subscription duration. + + Each PUBLISH SHOULD be sent to the CC URI as received in the NOTIFY, + or within the corresponding SUBSCRIBE dialog, or if that is not + possible, to the corresponding callee's monitor URI received in the + Call-Info header field of the NOTIFY, or if one is not available, the + Contact address of the subscription. + +6.6. Resuming CC + + When the caller is no longer busy, or if the conditions relevant to + the suspension policy of the caller's agent have changed, then the CC + request SHALL be resumed by the caller's agent. To resume a CC + request, the caller's agent SHALL publish the caller's presence state + by sending a PUBLISH request to each callee's monitor in accordance + with the procedures described in [RFC3903], informing each monitor + that the PIDF state is "open"; this request will otherwise be + constructed in the same way as the suspend PUBLISH request. + + + + + +Worley, et al. Standards Track [Page 15] + +RFC 6910 Completion of Calls April 2013 + + + In the case where the caller's agent has sent several CC suspension + requests to different callee's monitors and the caller becomes + available again, as determined by the local resumption policy of the + caller's agent, the caller's agent MAY send a PUBLISH to resume a CC + request to each callee's monitor for which there is a suspended CC + request. Note that the resumption policy of the caller's agent may + prescribe a manual resumption; thus, a suspended CC request should + not be automatically resumed. + +7. Callee's Monitor Behavior + +7.1. Sending the CC Possible Indication + + The callee's monitor MUST record the From URI and MAY record the + final request status(es) returned by the callee's UA(s). + + If the callee's monitor wants to enable the caller to make use of the + CC service, it MUST insert a Call-Info header field with + "purpose=call-completion" in the final response message (e.g., in a + 486 to enable CC due to busy subscriber) and at least one non-100 + provisional response message (e.g., in a 180 due to no response) to + the initial INVITE when forwarding it to the caller. The non-100 + provisional response message SHOULD be sent reliably if the INVITE + contained a Supported header field with the option tag 100rel. The + Call-Info header field values defined in this specification + positively indicate that CC is available for the failed fork of the + call. + + The callee's monitor SHOULD insert a URI in the Call-Info header + field where the caller's agent should subscribe for CC. Ideally, it + is a globally routable URI [RFC5627] for the callee's monitor. In + practice, it may be the callee's AOR, and the SUBSCRIBE will be + routed to the callee's monitor only because it specifies "Event: + call-completion". + + In order to enable CC, the Call-Info header field MUST be set up + according to the following scheme: + + Call-Info: monitor-URI;purpose=call-completion;m=XX + + The 'm' parameter defines the "mode" of CC. The "m=NR" parameter + indicates that it failed due to lack of response, the "m=BS" + parameter indicates that it failed due to busy subscriber, and the + "m=NL" parameter indicates that it failed due to non-registered + subscriber (no devices are registered for the AOR contacted). The + 'm' parameter is useful for PSTN interworking and assessing presence + information in the callee's monitor. It is possible that other + values will be defined in future. It is also permissible to omit the + + + +Worley, et al. Standards Track [Page 16] + +RFC 6910 Completion of Calls April 2013 + + + 'm' parameter entirely. Implementations MUST accept CC operations in + which the 'm' parameter is missing or has an unknown value, and + execute them as best they can in their environment (which is likely + to be a degraded service, especially when interoperating with SS7). + +7.2. Receiving a CC Subscription + + The callee's monitor MUST be prepared to receive SUBSCRIBEs for the + call-completion event package directed to the URIs of UA(s) that it + is servicing and any URIs that the callee's monitor provides in + Call-Info header fields. The SUBSCRIBEs MUST be processed in + accordance with the procedures defined in [RFC6665], establishing + subscriptions. These subscriptions represent the request from the + caller's agent for CC services. + + If the monitor receives two or more SUBSCRIBEs that have the same + Call-Id header field value and the monitor considers the request-URIs + of the received SUBSCRIBEs to request the status of the same set of + UAs, then they are redundant forks of one SUBSCRIBE request, and the + monitor SHOULD reject all but one of the requests with 482 (Merged + Request) responses. + + The monitor MAY determine that an incoming CC SUBSCRIBE is a + duplicate of an existing CC subscription if (1) the Call-Id header + field values are different, (2) the From URIs (i.e., the caller's + AORs) are the same (per [RFC3261] Section 19.1.4), (3) the To URIs + (which should be the request-URI of the original call) have the same + user and hostport components, and (4) the monitor considers the + request-URIs of the received SUBSCRIBEs to request the status of the + same set of UAs. + + If the monitor determines that a new subscription is a duplicate of + an existing subscription, it MAY terminate the existing subscription + in accordance with the procedures defined in [RFC6665]. In any case, + it MUST establish the new subscription. + + The callee's monitor may apply restrictions as to which caller's + agents may subscribe. + + The continuation of the subscription of the caller's agent indicates + to the callee's monitor that the caller's agent is prepared to + initiate the CC call if it is selected for the "ready" state. If the + callee's monitor becomes aware of a subscription that cannot be + selected for a CC recall, it SHOULD terminate the subscription in + accordance with [RFC6665]. + + + + + + +Worley, et al. Standards Track [Page 17] + +RFC 6910 Completion of Calls April 2013 + + +7.3. Sending a CC Notification + + The call-completion event package returns various points of + information to the caller's agent, but the vital datum it contains is + the cc-state of the CC request of the caller's agent as stored in the + CC queue; in the beginning, this cc-state is "queued". When the + cc-state of the agent's request changes, the callee's monitor MUST + send a NOTIFY for a CC event to the caller's agent. The notification + SHOULD also contain a URI that can be used for suspension requests. + Ideally, it is a globally routable URI [RFC5627] for the callee's + monitor. In practice, it may be the callee's AOR, and the SUBSCRIBE + will be routed to the callee's monitor only because it specifies + "Event: call-completion". + + The call-completion event package provides limited information about + the policy of the callee's monitor. In particular, as in the PSTN, + the "cc-service-retention" datum gives an indication of the "service + retention" attribute, which indicates whether the CC request can be + continued to a later time if the CC call fails due to the callee's + UA(s) being busy. If the callee's monitor supports the + service-retention option, the callee's monitor SHOULD include the + cc-service-retention parameter. + + The callee's monitor has a policy regarding when and how it selects + CC requests for the recall. This policy may take into account the + type of the requests (e.g., CCNR vs. CCBS), the state of the callee's + UA(s), the order in which the CC requests arrived, the length of time + the CC requests have been active, and any previous attempts of CC + activations for the same original call. The callee's monitor will + usually choose only one CC request for the recall at a time, but if + the callee's UA(s) can support multiple calls, it may choose more + than one. The callee's monitor will usually choose the oldest active + request. + + When the callee's monitor changes the state datum for the chosen + subscription from "queued" to "ready", the callee's monitor MUST send + a NOTIFY for the subscription of the caller's agent with the cc-state + set to "ready" (recall notification). The NOTIFY SHOULD also contain + in the cc-URI a URI to be used in the CC call. In practice, this may + be the AOR of the callee. + + Upon sending the recall notification, the callee's monitor MUST start + a recall timer. It is RECOMMENDED to use a value between 10 and + 20 seconds, which corresponds to the recommendation for the CC + services in the ETSI [ETS300.356-18] and ITU-T [ITU-T.Q.733] + documents. + + + + + +Worley, et al. Standards Track [Page 18] + +RFC 6910 Completion of Calls April 2013 + + +7.4. Receiving a CC Call + + The callee's UA(s) and the callee's monitor may give the CC call + precedence over non-CC calls by evaluating the presence of the 'm' + URI parameter and the From header of the INVITE request. The + callee's monitor supervises the receiving of the CC call. Upon + arrival of the CC call, the recall timer MUST be stopped. If the CC + call does not arrive at the callee's UA(s) before the expiry of the + recall timer, the callee's monitor SHOULD stop processing the recall + and change the value of the cc-state datum to "queued" if it supports + the retain option, and terminate the subscription if it doesn't + support the retain option. Similarly, if the CC call is not + accepted, the callee's monitor will stop the CC recall processing. + Depending on its policy, the same original call may be selected again + for a CC recall at a later time. If the CC call succeeds, the + callee's monitor MUST terminate the relevant subscription in + accordance with [RFC6665] and MUST remove any associated presence + event state used for suspend and resume for the caller of the CC + call. + + Once the CC call has been terminated, successfully or unsuccessfully, + the policy of the callee's monitor MAY specify that another CC + request for a recall be selected. Note also that according to the + policy of the callee's monitor several recalls may be processed at + the same time. + +7.5. Receiving a CC Suspension + + The monitor may receive PUBLISH requests to suspend CC requests from + the caller's agent as described in Section 6.5. The PUBLISH requests + may be received via the URI it manages, any URI that it inserts into + a Call-Info header, any contact URI it uses as a notifier for + "call-completion" events, or any URI it returns as the "URI" line of + the call-completion event packages. + + The receipt of the PUBLISH request initiates a presence event state + for the caller's identity at the presence server of the callee's + monitor as specified in [RFC3903], together with a logical presence + server if this has not been done before for another call. + + Note: The presence server may initiate a presence event state for the + caller's identity on receipt of a SUBSCRIBE request as well, + dependent on the implementation. + + The monitor SHOULD identify the addressed CCE by the request-URI of + the PUBLISH request, or if that is not possible, by the From URI. + + + + + +Worley, et al. Standards Track [Page 19] + +RFC 6910 Completion of Calls April 2013 + + + If the processing of a CC request results in suspending that CC + request by receiving a PUBLISH request from the caller's agent as + described in Section 6.5, the callee's monitor MUST stop the recall + timer and MUST ensure that the request is set to a "queued" state, + and then the callee's monitor MUST attempt to process another CC + request in the queue according to its local policy. + +7.6. Receiving a CC Resumption + + When a CC request has been resumed after the callee's monitor has + received a PUBLISH request from the caller's agent as described in + Section 6.6, the presence event state for the caller's identity at + the presence server of the CC monitor MUST be modified as described + in [RFC3903]. If the callee is not busy and there is no entry in the + CC queue that is currently being processed, the callee's monitor MUST + process the queue as described in Section 7.3 above. + +8. Examples + + A basic call flow, with only the most significant messages of a CC + activation and invocation shown, is as follows (please note that this + is an example, and there may be variations in the failure responses): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Worley, et al. Standards Track [Page 20] + +RFC 6910 Completion of Calls April 2013 + + + Caller Callee + sip:123@a.com sip:456@b.com + | | + | INVITE sip:456@b.com | [original call] + | From: sip:123@a.com | + |------------------------->| + | | + | 487 | + | Call-Info:<sip:456@z.b.com>;purpose=call-completion;m=NR + |<-------------------------| + | | + | SUBSCRIBE sip:456@z.b.com;m=NR [initial SUBSCRIBE] + | From: sip:123@a.com | + | Contact: sip:123@y.a.com | + | Request-Disposition: parallel + | Call-Id: abcd-efgh | + | Event: call-completion | + |------------------------->| + | | + | 200 | + |<-------------------------| + | | + | NOTIFY sip:123@y.a.com | [initial NOTIFY] + | Body: cc-state: queued | + |<-------------------------| + | | + | SUBSCRIBE sip:456@b.com;m=NR [another init. SUB.] + | From: sip:foo@example.com| + | Request-Disposition: parallel + | Call-Id: abcd-efgh | + | Event: call-completion | + |------------------------->| + | | + | 482 | [duplicate SUB. rej.] + |<-------------------------| + | | + | NOTIFY sip:123@y.a.com | [CC invoked] + | Body: cc-state: ready | + | URI: sip:recall@z.b.com + |<-------------------------| + | | + | INVITE sip:recall@z.b.com;m=NR [CC call] + | From: sip:foo@example.com| + |------------------------->| + | | + | NOTIFY sip:123@y.a.com | [CC terminated] + | Expires = 0 | + |<-------------------------| + + + +Worley, et al. Standards Track [Page 21] + +RFC 6910 Completion of Calls April 2013 + + + The original call is an ordinary INVITE. It fails due to no-response + (ring-no-answer). In this case, the callee's governing proxy + generates a 487 response because the proxy canceled the INVITE to the + UA when it rang too long without an answer. The 487 response carries + a Call-Info header field with "purpose=call-completion". The + Call-Info header field positively indicates that CC is available for + this failed fork of the call. The "m=NR" parameter indicates that it + failed due to no-response, which is useful for PSTN interworking and + assessing presence information in the callee's monitor. + + The URI in the Call-Info header field (<sip:456@z.b.com>) is where + the caller's agent should subscribe for CC processing. Ideally, it + is a globally routable URI for the callee's monitor. In practice, it + may be the callee's AOR, and the SUBSCRIBE will be routed to the + callee's monitor only because it specifies "Event: call-completion". + + CC is activated by sending a SUBSCRIBE to all known callee's monitor + URIs. These can be provided by the Call-Info header field in the + response to the INVITE. + + Additionally, the caller's agent needs to include the original + request-URI in its set of callee's monitor URIs, because the call may + have forked to additional callees whose responses the caller has not + seen. (A SUBSCRIBE to the request-URI alone is used in cases where + the caller's agent has not received or cannot remember any callee's + monitor URI.) + + The caller's agent adds to these URIs an 'm' parameter (if possible). + In this case, the caller's agent forks the SUBSCRIBE to two + destinations as defined by Section 8.2.2.2 of [RFC3261], with + appropriate Request-Disposition. The first SUBSCRIBE is to the URI + from Call-Info. + + The second SUBSCRIBE is to the original request-URI and reaches the + same callee's monitor. Because it has the same Call-Id as the + SUBSCRIBE that has already reached the callee's monitor, the callee's + monitor rejects it with a 482, thus avoiding redundant subscriptions. + + The initial NOTIFY for the successful SUBSCRIBE has "cc-state: + queued" in its body. Eventually, this caller is selected for CC and + is informed of this via a NOTIFY containing "cc-state: ready". This + NOTIFY carries a URI to which the INVITE for the CC call should be + sent. In practice, this may be the AOR of the callee. + + The caller generates a new INVITE to the URI specified in the NOTIFY, + or if there was no such URI or if the caller's agent cannot remember + it, it may use the original request-URI. The caller adds the 'm' + parameters (if possible), to specify CC processing. + + + +Worley, et al. Standards Track [Page 22] + +RFC 6910 Completion of Calls April 2013 + + + Finally, the subscription for the CC request is terminated by the + callee's monitor. + + Another flow, with only the most significant messages of CC + suspension and resumption shown, is as follows: + + Caller Callee + sip:123@a.com sip:456@b.com + | | + | NOTIFY sip:123@y.a.com | [CC notification, caller not + | Body: cc-state: ready | available for CC recall] + | URI: sip:recall@z.b.com + |<-------------------------| + | | + | 200 | + |------------------------->| + | | + | PUBLISH sip:456@z.b.com | [non-availability for recall + | From: sip:123@a.com | is published] + | Contact: sip:123@y.a.com | + | Event: presence | + | Content-Type: 'app/pidf' | + | Body: status=closed | + |------------------------->| + | | + | 200 | + |<-------------------------| + | | + | | [caller becomes available + | | again] + | | + | PUBLISH sip:456@z.b.com | [availability for recall + | From: sip:123@a.com | is published] + | Contact: sip:123@y.a.com | + | Event: presence | + | Content-Type: 'app/pidf' | + | Body: status=open | + |------------------------->| + | | + | 200 | + |<-------------------------| + | | + + The caller is selected for CC and is informed of this via a NOTIFY + request containing "cc-state: ready". At this time, the caller is + not available for the CC recall. + + + + + +Worley, et al. Standards Track [Page 23] + +RFC 6910 Completion of Calls April 2013 + + + For updating its presence event state at the callee's presence + server, the caller sends a PUBLISH request informing the presence + server that the PIDF state is "closed". The PUBLISH request is sent + (in order of preference) as follows: (1) out-of-dialog to the CC URI + as received in the NOTIFY, (2) within the corresponding SUBSCRIBE + dialog, (3) out-of-dialog to the corresponding callee's monitor URI + received in the Call-Info header field of the NOTIFY, or (4) out-of- + dialog to the remote Contact address of the corresponding SUBSCRIBE + dialog. + + When the caller is again available for the CC recall, the caller + updates his presence event state at the callee's presence server by + generating a PUBLISH request informing the server that the PIDF state + is "open"; this request will otherwise be constructed in the same way + as the suspend PUBLISH request. + +9. 'call-completion' Event Package + + This section specifies the call-completion event package, in + accordance with Section 5.4 of [RFC6665]. The call-completion event + package has the media type "application/call-completion". + + Note that if the callee has a caller-queuing facility, the callee's + monitor may want to treat the CC queue as part of the queuing + facility and include in the event package information regarding the + state of the queue. How this information is conveyed is left for + further standardization. + +9.1. Event Package Name + + The SIP events specification [RFC6665] requires package definitions + to specify the name of their package or template-package. The name + of this package is "call-completion". This value appears in the + Event and Allow-Events header fields. + +9.2. Event Package Parameters + + No package-specific Event header field parameters are defined for + this event package. + + + + + + + + + + + + +Worley, et al. Standards Track [Page 24] + +RFC 6910 Completion of Calls April 2013 + + +9.3. SUBSCRIBE Bodies + + [RFC6665] requires package definitions to define the usage, if any, + of bodies in SUBSCRIBE requests. + + The SUBSCRIBE request MAY contain an Accept header field. If no + such header field is present, it has a default value of + "application/call-completion". If the header field is present, it + MUST include "application/call-completion". + + A SUBSCRIBE request for a CC package MAY contain a body. This body + defines a filter to be applied to the subscription. Filter documents + are not specified in this document and may be the subject of future + standardization activity. + + A SUBSCRIBE request requests CC information regarding calls recently + made from the same caller to the callee UA(s) serviced by the + notifier. Calls are defined to be "from the same caller" if the + URI-part of the From header field value in the INVITE is the same as + the URI-part of the From header field value in the SUBSCRIBE. + +9.4. Subscribe Duration + + [RFC6665] requires package definitions to define a default value for + subscription durations and to discuss reasonable choices for + durations when they are explicitly specified. + + If a SUBSCRIBE does not explicitly request a duration, the default + requested duration is 3600 seconds, as that is the highest service + duration timer value recommended for the CC services in the ETSI + [ETS300.356-18] and ITU-T [ITU-T.Q.733] documents. Because the + subscription duration means that no explicit timer is needed, and the + subscription duration can be seen as an equivalent to the SS7 service + duration timer, this specification refers to the subscription + duration also as the service duration timer. It is RECOMMENDED that + subscribers request, and that notifiers grant, a subscription time of + at least 3600 seconds. + + If a notifier can determine that, according to its policy, after a + certain duration the requested subscription can no longer proceed to + the "ready" state, it SHOULD reduce the granted subscription time to + that duration. If a notifier can determine that, according to its + policy, the requested subscription can never proceed to the "ready" + state, it should refuse the subscription. + + + + + + + +Worley, et al. Standards Track [Page 25] + +RFC 6910 Completion of Calls April 2013 + + +9.5. NOTIFY Bodies + + [RFC6665] requires package definitions to describe the allowed set of + body types in NOTIFY requests and to specify the default value to be + used when there is no Accept header field in the SUBSCRIBE request. + A NOTIFY for a call-completion event package MUST contain a body that + describes the CC states. + + As described in [RFC6665], the NOTIFY message will contain bodies + that describe the state of the subscribed resource. This body is in + a format listed in the Accept header field of the SUBSCRIBE, or in a + package-specific default format if the Accept header field was + omitted from the SUBSCRIBE. + + In this event package, the body of the notification contains a CC + document. All subscribers and notifiers MUST support the + "application/call-completion" data format described in Section 10. + The SUBSCRIBE request MAY contain an Accept header field. If no + such header field is present, it has a default value of + "application/call-completion". If the header field is present, it + MUST include "application/call-completion". Of course, the + notifications generated by the server MUST be in one of the formats + specified in the Accept header field in the SUBSCRIBE request. + +9.6. Subscriber Generation of SUBSCRIBE Requests + + Subscribers MUST generate SUBSCRIBE requests when they want to + subscribe to the call-completion event package at the terminating + side in order to receive CC notifications. The generation of + SUBSCRIBE requests can imply the usage of a CC service-specific timer + as described in Section 9.4. + +9.7. Notifier Processing of SUBSCRIBE Requests + + Upon receiving a subscription refresh, the notifier MUST set the + "expires" parameter of the Subscription-State header field to a value + not higher than the current remaining duration of the subscription, + regardless of the value received in the Expires header field (if + present) of the subscription refresh. + + If a subscription is not successful because the CC queue has reached + the maximum allowed number of entries (short-term denial), the + notifier MUST send a 480 Temporarily Unavailable response to the + subscriber, possibly with a retry-after parameter in accordance with + the notifier's policy. If a subscription is not successful because a + condition has occurred that prevents and will continue to prevent the + CC service (long-term denial), the notifier MUST send a 403 Forbidden + response to the subscriber. + + + +Worley, et al. Standards Track [Page 26] + +RFC 6910 Completion of Calls April 2013 + + + A notifier MAY receive multiple forks of the same SUBSCRIBE, as + defined by Section 8.2.2.2 of [RFC3261]. In such a case, the + notifier MUST reject all but one of the SUBSCRIBEs with a 482 Merged + Request response, unless some other failure response applies. + + The CC information can be sensitive. Therefore, all subscriptions + SHOULD be handled with consideration of the security considerations + discussed in Section 11, in particular for verifying the identity of + the subscriber. + +9.8. Notifier Generation of NOTIFY Requests + + Notifiers MUST generate NOTIFY requests when the CC request's state + changes to "queued" or to "ready (for CC)". A NOTIFY that is sent + with non-zero expiration MUST contain the "cc-state" parameter. The + parameter's value MUST be "queued" if the CC request represented by + the subscription is not at this time selected by the callee's monitor + for CC recall, and the parameter's value MUST be "ready" if the + request is at this time selected by the callee's monitor for CC + recall. + + A NOTIFY sent with a zero expiration (e.g., as a confirmation of a + request to unsubscribe) MAY contain the "cc-state" parameter. + + When the callee's monitor withdraws the selection of the request for + the CC recall (e.g., because the caller's agent has not initiated the + CC recall INVITE before the CC recall timer expires, or because the + agent has suspended the request from being considered for CC recall), + the notifier MUST send a NOTIFY to the subscription of the selected + request. This NOTIFY MUST contain the "cc-state" parameter set to + "queued". + + If the CC subscription was successful and the retain option is + supported at the callee, the NOTIFY MUST contain the + "cc-service-retention" parameter. + +9.9. Subscriber Processing of NOTIFY Requests + + When receiving a NOTIFY request with the cc-state set to "ready", + subscribers SHOULD suspend all other CC subscriptions for the + original call at other notifiers. The receipt of a NOTIFY request + with the cc-state set to "ready" by the subscriber will also cause an + interaction with the instances at the subscriber's side that are + responsible for starting the CC recall. + + + + + + + +Worley, et al. Standards Track [Page 27] + +RFC 6910 Completion of Calls April 2013 + + +9.10. Handling of Forked Requests + + Forked requests are expected to be common for the CC event type. The + subscriber MUST be prepared to process NOTIFY requests from multiple + notifiers and to coordinate its processing of the information + obtained from them in accordance with the procedures in this + document. + +9.11. Rate of Notifications + + The CC service typically involves a single notification, per notifier + and per subscription, regarding the change to "ready" (for CC) but + MAY involve several notifications about the change to the "ready" + state, separated by a CC call that failed due to a busy callee. + Typically, notifications will be separated by at least tens of + seconds. Notifiers SHOULD NOT generate more than three notifications + for one subscription in any ten-second interval. Since it is + important to avoid useless recalls, a notifier SHOULD send state + changes to "queued" from "ready" promptly. Thus, a notifier SHOULD + NOT send a state change to "ready" as the third notification in a + ten-second interval, as that would make it impossible to promptly + send a further state change to "queued". + +9.12. State Agents + + State agents have no defined role in the handling of the + call-completion event package. + +10. CC Information Format + + The following syntax specification uses the Augmented Backus-Naur + Form (ABNF) as described in [RFC5234]. The formal syntax for the + application/call-completion MIME type is described below. In + general, the CC body is to be interpreted in the same way as SIP + headers: (1) the names of the lines are case-insensitive, (2) the + lines can be continued over line boundaries if the succeeding lines + start with horizontal white space, and (3) lines with unknown names + are to be ignored. The header lines defined in this document can + occur at most once in any given CC information format document. + + call-completion = 1*(cc-header CRLF) + + cc-header = cc-state / cc-service-retention / cc-URI / + extension-header + + The above rules whose names start with "cc-" are described below. + Other rules are described in [RFC3261]. + + + + +Worley, et al. Standards Track [Page 28] + +RFC 6910 Completion of Calls April 2013 + + +10.1. CC Status + + The cc-state line indicates the CC status of a particular user with + an entry in a CC queue. It MUST be present, unless the expiration + time indicated in the NOTIFY is zero. + + cc-state = "cc-state" HCOLON ( "queued" / "ready" ) + + The value "queued" indicates that a subscriber's entry in the CC + queue is not selected for CC recall. The value "ready" indicates + that a user's entry in the CC queue has been selected for CC recall. + +10.2. CC Service-Retention Indication + + The service-retention line indicates the support of the retain + option. The retain option, if supported at the callee, will maintain + the entry in the CC queue, if a CC call has failed due to a callee + busy condition. If present, this parameter indicates that the retain + option is supported; otherwise, it is not supported. This parameter + MAY be present in NOTIFY requests. + + cc-service-retention = "cc-service-retention" HCOLON "true" + +10.3. CC URI + + The cc-URI line provides a URI that the agent SHOULD use as the + request-URI of the CC recall INVITE and the suspend/resume PUBLISH. + It SHOULD be provided in all NOTIFYs. The URI SHOULD be globally + routable and SHOULD uniquely identify the CCE in question. The + syntax provides for generic-params in the value, but this document + defines no such parameters. Parameters that are not understood by + the subscriber MUST be retained with the URI. + + cc-URI = "cc-URI" HCOLON addr-spec + +11. Security Considerations + + The CC facility allows the caller's agent to determine some status + information regarding the callee. This information intrinsically + diminishes the privacy of the callee; in order to protect + sufficiently the privacy of the callee, the overall amount of + disclosure must be limited, and the amount of disclosure to any + single caller must be limited. + + Of course, if a caller is not permitted to call the callee, that + caller should not be allowed to establish a CC subscription. Callers + that are particularly sensitive about their privacy may reject all CC + subscriptions. But in the ordinary case, the optimal protection is + + + +Worley, et al. Standards Track [Page 29] + +RFC 6910 Completion of Calls April 2013 + + + to permit any caller to subscribe but prevent any caller from + subscribing for too long, or too often, or in a pattern that does not + reveal to the callee (through CC calls) that the subscriptions are + taking place. + + In legitimate use, CC event subscriptions will be made in stereotyped + ways that limit the disclosure of status information: + + 1. When a subscriber is selected for CC, a call should arrive + promptly for the callee, or the subscription should be + terminated. This expectation may be violated by a race condition + between selection of the subscription for CC and the caller + becoming unavailable, but it should be rare that a single + subscription will exhibit the race condition more than once. + + 2. Subscriptions should not remain suspended for longer than the + expected duration of a call (a call by the caller to a third + party). + + 3. Subscriptions should be initiated only shortly after failed + incoming calls. + + 4. Most of the time, a callee should have no queued subscriptions. + + Violations of these expectations should be detected by the callee's + monitor and reported as possible attempts at privacy violation. + + The CC facility may enhance the effectiveness of Spam over Internet + Telephony (SPIT) via the following technique: the caller makes calls + to a group of callees. The caller then requests CC for the calls + that do not connect to the callees. The resultant CC calls are + probably more likely to reach the callees than original calls to a + further group of targets. + + In order to prevent senders of SUBSCRIBE and PUBLISH requests from + causing Denial-of-Service (DoS) attacks and suspending other CC + entries than their own, a mechanism to correlate the identity of the + original caller and the sender of SUBSCRIBE and PUBLISH requests is + needed. The RECOMMENDED mechanism to authenticate the identity of + the originator of requests relevant to CC is the SIP Identity + mechanism [RFC4474]. Alternatively, CC agents and monitors within an + administrative domain or federation of domains MAY use the mechanism + described in [RFC3325] to authenticate their identities with a + P-Asserted-Identity header field. + + Furthermore, the use of the presence server to suspend or resume + SHOULD be limited to a caller that has an active queue in the + callee's monitor. This can be achieved first by monitoring and + + + +Worley, et al. Standards Track [Page 30] + +RFC 6910 Completion of Calls April 2013 + + + logging incoming calls to the callee and the destination where CC + indication was sent, then to ensure that subscription to the + call-completion event package is permitted only within a short time + frame after the initial call failed and to only accept PUBLISH + requests to the presence server if there is an active queue for the + caller in question. + + Note that regarding authentication/authorization/billing logic + subject to operator policy, CC calls or subscriptions do not differ + from other basic calls or event subscriptions. + +12. IANA Considerations + +12.1. SIP Event Package Registration for CC + + This specification registers an event package, based on the + registration procedures defined in [RFC6665]. The following + information is required for such a registration: + + Package name: call-completion + + Is this registration for a Template-Package: No. + + Published specification: RFC 6910. + + Person & email address to contact for further information: Martin + Huelsemann, martin.huelsemann@telekom.de + +12.2. MIME Registration for application/call-completion + + MIME media type name: application + + MIME subtype name: call-completion + + Required parameters: none. + + Optional parameters: none. + + Encoding considerations: Consists of lines of UTF-8-encoded + characters, ended with CRLF. + + Security considerations: There are no security considerations + internal to the media type. Its typical usage involves the security + considerations described in RFC 6910. + + Interoperability considerations: See RFC 6910. + + Published specification: RFC 6910. + + + +Worley, et al. Standards Track [Page 31] + +RFC 6910 Completion of Calls April 2013 + + + Applications that use this media type: The implementations of the CC + features of the Session Initiation Protocol. + + Additional information: + + Magic number(s): none + + File extension(s): Not expected to be stored in files. + + Macintosh file type code(s): Not expected to be stored in files. + + Person & email address to contact for further information: + Martin Huelsemann, martin.huelsemann@telekom.de + + Intended usage: LIMITED USE + + Restrictions on usage: none + + Author/Change controller: The IETF + +12.3. SIP/SIPS URI Parameter 'm' + + This specification defines one new SIP/SIPS URI parameter 'm' as per + the registry created by [RFC3969]. It is used to identify that an + INVITE request is a CC call, or to further identify that a SUBSCRIBE + request is for the call-completion event package. The parameter may + have a value that describes the type of the CC operation, as + described in this specification. + + Name of the parameter: m + + Predefined values: yes + + Reference: [RFC6910] + + + + + + + + + + + + + + + + + +Worley, et al. Standards Track [Page 32] + +RFC 6910 Completion of Calls April 2013 + + +12.4. The 'purpose' Parameter Value 'call-completion' + + This specification adds a new predefined value "call-completion" for + the 'purpose' header field parameter of the Call-Info header field. + This modifies the registry header field parameters and parameter + values by adding this RFC as a reference to the line for header field + "Call-Info" and parameter name 'purpose': + + Header field: Call-Info + + Parameter name: purpose + + Predefined values: yes + + Reference: [RFC3261] [RFC5367] [RFC6910] + +12.5. 'm' Header Parameter for Call-Info + + This specification extends [RFC3261] to add a new header field + parameter 'm' to the Call-Info header field. This adds a row to the + registry header field parameters and parameter values: + + Header field: Call-Info + + Parameter name: m + + Predefined values: yes + + Reference: [RFC6910] + + The predefined values are 'BS', 'NR', and 'NL'. + +13. Acknowledgements + + Thanks to Paul Kyzivat, John Elwell, Keith Drage, Andrew Hutton, + Thomas Stach, Dennis Luebbers, and Christer Holmberg, who provided + helpful comments, feedback, and suggestions. + + + + + + + + + + + + + + +Worley, et al. Standards Track [Page 33] + +RFC 6910 Completion of Calls April 2013 + + +14. References + +14.1. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, + A., Peterson, J., Sparks, R., Handley, M., and E. + Schooler, "SIP: Session Initiation Protocol", RFC 3261, + June 2002. + + [RFC3515] Sparks, R., "The Session Initiation Protocol (SIP) Refer + Method", RFC 3515, April 2003. + + [RFC3863] Sugano, H., Fujimoto, S., Klyne, G., Bateman, A., Carr, + W., and J. Peterson, "Presence Information Data Format + (PIDF)", RFC 3863, August 2004. + + [RFC3903] Niemi, A., "Session Initiation Protocol (SIP) Extension + for Event State Publication", RFC 3903, October 2004. + + [RFC3969] Camarillo, G., "The Internet Assigned Number Authority + (IANA) Uniform Resource Identifier (URI) Parameter + Registry for the Session Initiation Protocol (SIP)", + BCP 99, RFC 3969, December 2004. + + [RFC4235] Rosenberg, J., Schulzrinne, H., and R. Mahy, "An INVITE- + Initiated Dialog Event Package for the Session Initiation + Protocol (SIP)", RFC 4235, November 2005. + + [RFC4474] Peterson, J. and C. Jennings, "Enhancements for + Authenticated Identity Management in the Session + Initiation Protocol (SIP)", RFC 4474, August 2006. + + [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax + Specifications: ABNF", STD 68, RFC 5234, January 2008. + + [RFC5367] Camarillo, G., Roach, A.B., and O. Levin, "Subscriptions + to Request-Contained Resource Lists in the Session + Initiation Protocol (SIP)", RFC 5367, October 2008. + + [RFC5627] Rosenberg, J., "Obtaining and Using Globally Routable User + Agent URIs (GRUUs) in the Session Initiation Protocol + (SIP)", RFC 5627, October 2009. + + [RFC6665] Roach, A.B., "SIP-Specific Event Notification", RFC 6665, + July 2012. + + + +Worley, et al. Standards Track [Page 34] + +RFC 6910 Completion of Calls April 2013 + + +14.2. Informative References + + [ETS300.356-18] + European Telecommunications Standards Institute, + "Completion of Calls to Busy Subscriber (CCBS) + supplementary service", February 1995. + + [ITU-T.Q.733] + International Telecommunication Union, "Description for + Call Completion Supplementary Services Using SS No. 7", + February 1995. + + [RFC3325] Jennings, C., Peterson, J., and M. Watson, "Private + Extensions to the Session Initiation Protocol (SIP) for + Asserted Identity within Trusted Networks", RFC 3325, + November 2002. + + [RFC3725] Rosenberg, J., Peterson, J., Schulzrinne, H., and G. + Camarillo, "Best Current Practices for Third Party Call + Control (3pcc) in the Session Initiation Protocol (SIP)", + BCP 85, RFC 3725, April 2004. + + [RFC5359] Johnston, A., Sparks, R., Cunningham, C., Donovan, S., and + K. Summers, "Session Initiation Protocol Service + Examples", BCP 144, RFC 5359, October 2008. + + + + + + + + + + + + + + + + + + + + + + + + + + +Worley, et al. Standards Track [Page 35] + +RFC 6910 Completion of Calls April 2013 + + +Appendix A. Example Caller's Agent + + This section outlines how an autonomous caller's agent can operate + using only standard SIP features to interact with the caller's UA. + This example is suitable only as a learning aid, as its performance + is poor. + + The agent monitors calls made from the UA(s) by subscribing to the + dialog event package of the UA(s). + + The UA(s) or their proxy routes calls made with either of two special + dial sequences to the agent, which interprets the INVITEs as + indications to make a CC request with BS or NR or NL mode for the + latest call made by the UA. + + The agent monitors the status of the UA(s) for availability to be + used for a CC call by examining the dialog events. + + The agent indicates to the UA(s) that CC recall is in progress by + making call to the UA(s). If the UA is answered, the agent assumes + that the caller is available and plays pre-recorded audio to indicate + that CC recall is in progress. + + After playing the pre-recorded audio, the caller's agent uses REFER + to order the UA to make the CC call to the callee. + +Appendix B. Example Callee's Monitor + + This section outlines how an autonomous callee's monitor can operate + using only standard SIP features to interact with the callee's UA. + This example is suitable only as a learning aid, as its performance + is poor. + + The callee's monitor monitors calls made to the UA(s) by subscribing + to the dialog events of the UA(s). This enables it to determine + their Call-Ids and their final response statuses. + + The proxy for the UA(s) routes to the callee's monitor any SUBSCRIBEs + for the call-completion event package directed to the URIs serviced + by the UA(s). + + The callee's monitor monitors the status of the UA(s) to determine + when they are in a suitable state to receive a CC call by watching + the busy/not-busy status of the UA(s): for example, a UA is available + for CCBS when it is not busy, but a UA is available for CCNR when it + becomes not busy after being busy with an established call. + + + + + +Worley, et al. Standards Track [Page 36] + +RFC 6910 Completion of Calls April 2013 + + +Authors' Addresses + + Dale R. Worley + Ariadne Internet Services, Inc. + 738 Main St. + Waltham, MA 02451 + US + + Phone: +1 781 647 9199 + EMail: worley@ariadne.com + + + Martin Huelsemann + Deutsche Telekom + Heinrich-Hertz-Strasse 3-7 + Darmstadt 64307 + Germany + + Phone: +4961515812765 + EMail: martin.huelsemann@telekom.de + URI: http://www.telekom.de + + + Roland Jesske + Deutsche Telekom + Heinrich-Hertz-Strasse 3-7 + Darmstadt 64307 + Germany + + Phone: +4961515812766 + EMail: r.jesske@telekom.de + URI: http://www.telekom.de + + + Denis Alexeitsev + TeleFLASH + Mainzer Landstrasse 47 + Frankfurt 60329 + Germany + + Phone: +49-69-257-378-230 + EMail: alexeitsev@teleflash.com + URI: http://www.teleflash.com + + + + + + + + +Worley, et al. Standards Track [Page 37] + |