INTERNET-DRAFT Vijay K. Gurbani (Editor) June 2002 Alec Brusilovsky Expires: December 2002 Igor Faynberg Hui-Lan Lu Musa Unmehopa Kumar Vemuri Lucent Technologies, Inc. Jorge Gato Vodafone Document: draft-ietf-spirits-protocol-02.txt Category: Standards Track The SPIRITS Protocol STATUS OF THIS MEMO This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. Abstract This document describes SPIRITS protocol. The purpose of the SPIRITS protocol is to support services that originate in the Public Switched Telephone Network (PSTN) and necessitate the interactions between the PSTN and the Internet. On the PSTN side, the SPIRITS services are initiated from the Intelligent Network (IN) entities. Such services are called SPIRITS services. Internet Call Waiting, Internet Caller-ID Delivery, and Internet Call Forwarding are examples of SPIRITS services, but the protocol is to define the building blocks from which many other services can be built. draft-ietf-spirits-protocol-02.txt [Page 1] The SPIRITS Protocol June 2002 Table of Contents 1. INTRODUCTION...............................................2 1.1 Conventions used in this document .......................3 2. OVERVIEW OF OPERATIONS.....................................3 2.1 Brief description of working .........................3 2.2 Specifying a protocol.................................5 2.3 IN-specific details ..................................6 3. ICW AS A SPIRITS SERVICE...................................7 3.1 Call disposition choices..............................7 3.2 Accepting an ICW session using VoIP...................9 4. USING THE SIP EVENTS PACKAGE FOR SPIRITS CLIENTS ON AN IP NETWORK.................................................10 4.1 Normative usage.......................................10 4.1.1 Event package name....................................10 4.1.2 Event package parameters..............................10 4.1.3 SUBSCRIBE bodies......................................11 4.1.4 Subscription duration.................................11 4.1.5 NOTIFY bodies.........................................12 4.1.6 Notifier processing of SUBSCRIBE requests.............12 4.1.7 Notifier generation of NOTIFY requests................12 4.1.8 Subscriber processing of NOTIFY requests..............12 4.1.9 Handling of forked requests...........................12 4.1.10 Rate of notifications.................................12 4.1.11 State agents..........................................12 4.1.12 Examples..............................................12 4.1.13 URI List handling.....................................12 5. EXAMPLE SPIRITS SERVICE CALL FLOW..........................12 5.1 Internet Caller-ID Delivery...........................12 5.2 Converting SMS to SIP Instant Messages................19 6. IANA CONSIDERATIONS..... ..................................19 6.1 Registering event packages...............................19 6.2 Registering MIME type....................................19 7. SECURITY CONSIDERATIONS....................................20 8. CONCLUSION.................................................21 9. ACKNOWLEDGMENTS............................................21 CHANGES....................................................21 AUTHORS' ADDRESS...........................................21 ACRONYMS...................................................22 NORMATIVE REFERENCE........................................22 INFORMATIVE REFERENCE......................................23 1. Introduction SPIRITS (Services in the PSTN Requesting InTernet Services) is an IETF architecture and associated protocol that enables call processing elements in the telephone network such as the PSTN to make service requests that are then processed on Internet hosted servers. The PSTN today supports service models such as the Intelligent Network (IN), whereby some features are executed locally on switching elements called Service Switching Points (SSPs), and other features are executed on service elements called Service Control Points (SCPs). The SPIRITS architecture [1] permits these SCP elements to draft-ietf-spirits-protocol-02.txt [Page 2] The SPIRITS Protocol June 2002 act as intelligent proxies to leverage and use Internet nodes and capabilities to further enhance the telephone end-user's experience. The earlier IETF work on the PSTN/Internet Interworking (PINT) resulted in the protocol (RFC 2848) in support of the services initiated in the reverse direction - from the Internet to PSTN. This Internet-Draft has been written in response to the SPIRITS WG chairs call for SPIRITS Protocol proposals. Among other contributions, this I-D is based on: o Informational RFC2995, "Pre-SPIRITS implementations" o Informational RFC3136, "The SPIRITS Architecture" o SPIRITS Protocol Requirements, presented in draft-ietf- spirits-reqs-04, current candidate for Informational RFC. The remainder of this draft is organized as follows: Section 2 describes INAP parameters of interest to SPIRITS clients in the PSTN. In Section 3 we discuss SIP event package for SPIRITS and its use for SPIRITS protocol. Section 4 contains an example call flow for a SPIRITS service. Section 5, 6, 7, 8 respectively describe IANA Considerations, Security Considerations, provide conclusion, and acknowledgments. 1.1 Conventions used in this document 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 RFC 2119. 2. Overview of operations 2.1 Brief description of working A call model (CM) is a finite state machine used in SSPs and other call processing elements that accurately and concisely reflects the current state of a call at any given point in time. Call models consist of states called PICs (Points In Call) and transitions between states. Inter-state transitions pass through elements called Detection Points or DPs. DPs house one or more triggers. Every trigger has a firing criteria associated with it. When a trigger is armed (made active), and its associated firing criteria are satisfied, it fires. The particulars of firing criteria may vary based on the call model being supported. When a trigger fires, a message is formatted with call state information and transmitted by the SSP to the SCP. The SCP then reads this call related data and generates a response which the SSP then uses in further call processing. Detection Points are of two types: TDPs (or Trigger Detection Points), and EDPs (or Event Detection Points). TDPs are provisioned with statically armed triggers (armed through Service Management Tools). EDPs are dynamically armed triggers (armed by the SCP as call processing proceeds). DPs may also be classified as "Request" or draft-ietf-spirits-protocol-02.txt [Page 3] The SPIRITS Protocol June 2002 "Notification" DPs. Thus, one can have TDP-R's, TDP-N's, EDP-R's and EDP-N's [3], The "-R" type of DPs require the SSP to suspend call processing when communication with the SCP is initiated. Call processing resumes when a response is received. The "-N" type of DPs enable the SSP to continue with call processing when the trigger fires, after it sends out the message to the SCP, notifying it that a certain event has occurred. Call models typically support different types of detection points. Note that while INAP and the IN Capability Set (CS)-2 [8] call model are used in this draft as examples, and for ease of explanation, other call models possess similar properties. For example, the WIN call model also supports the dynamic arming of triggers. Thus, the essence of this discussion applies not just to the wireline domain, but applies equally well to the wireless domain as well. When the SCP receives the INAP formatted message from the SSP, if the SCP supports the SPIRITS architecture, it can encode the INAP message contents into a SPIRITS protocol message which is then transmitted to SPIRITS-capable elements in the IP network. Similarly, when it receives responses back from said SPIRITS capable elements, it can reformat the response content into the INAP format and forward these messages back to SSPs. Thus the process of inter-conversion and/or encoding between the INAP parameters and the SPIRITS protocol is of primary interest. draft-ietf-spirits-protocol-02.txt [Page 4] The SPIRITS Protocol June 2002 +--------------+ | Subscriber's | | IP Host | +--------------+ | | | | | +----------+ | | +----------+ | | | PINT | | A | | PINT | | | | Client +<-------/-------->+ Gateway +<-----+ | +----------+ | | +----------+ | | | | | | | | +----------+ | | +----------+ | | | | SPIRITS | | B | | SPIRITS | | | | | Server +<-------/-------->+ Gateway | | | | +----------+ | | +--------+-+ | | | | | ^ | | +--------------+ +----------|---+ | | | IP Network | | ------------------------------------------|--------|--- PSTN / C / E | | v | +----+------+ | | SPIRITS | | | Client | v +-------------------+ +---+-----D-----+-++ | Service Switching |INAP/SS7 | Service Control | | Function +---------+ Function | +----+--------------+ +------------------+ | |line +-+ [0] Subscriber's Figure 1: The SPIRITS Telephone Architecture. (Note: The interfaces A-E are described in detail in the SPIRITS Architecture document [1]) In other words, this draft is focused on interfaces B, C and D depicted in the above figure. An SCP is a physical manifestation of the Service Control Function. An SSP is a physical manifestation of the Service Switching Function (and the Call Control Function). To support uniformity of nomenclature between the various SPIRITS drafts, we shall use the terms SCP and SCF, and SSP and SSF interchangeably in this document. 2.2 Specifying a protocol The requirements of a SPIRITS protocol are detailed in [5]. For the sake of completeness, we simply re-iterate the decisions that lead to the selection of SIP as a SPIRITS protocol. Most of the pre-SPIRITS implementations [11] of a benchmark SPIRITS draft-ietf-spirits-protocol-02.txt [Page 5] The SPIRITS Protocol June 2002 service, Internet Call Waiting (ICW), were realized in SIP. Furthermore, a companion protocol, PINT [9], successfully used SIP for its operations. SIP also provides the notification capabilities needed by SPIRITS through the SIP event notification framework [4]. Based on all of these factors, it is easy to overcome the temptation to invent yet another protocol and instead, choose to leverage the capabilities of SIP. 2.3 IN-specific details IN-specific details in relation to SPIRITS, namely, how to extract common data types, parameters and response codes information, with their associated descriptions, for particular DPs and triggers of interest to SPIRITS and their associated data elements are captured in [7]. Appendix B of [7] also includes an example XML DTD that may be used to support the XML-encoding for SPIRITS messages. Appendices A and B of [7] contain a select subset of IN CS-2 detection points and information flows that we believe will be useful in the context of SPIRITS services. Admittedly, this list may not be exhaustive. Note that INAP and similar protocols support a large number of optional parameters in each message. Not all such parameters may be useful in the SPIRITS context, thus, only a subset of available information elements are of direct interest. Note also, that depending on what kinds of SPIRITS services are supported, and how they are implemented, the "thickness" of the SPIRITS implementation may drive exactly what subset of parameters received by the SCP are forwarded on towards the SPIRITS server for processing. An SCP could thus function in one of three modes for every incoming request: (1) process the request locally (as is traditionally done today, no SPIRITS involvement) (2) process part of the request locally and forward some parameters to a SPIRITS-entity for further processing, and formulate a response based on both the local processing and the SPIRITS response (3) forward all the received data in a SPIRITS protocol- compliant format to a SPIRITS entity for processing, and forward back the appropriately formatted response to the entity that originated the request. We do not here preclude operation in any of the modes above. As mentioned previously, the first trigger that fires during call processing is typically a TDP (since there is no pre-existing control relationship between the SSF and the SCF prior to this). TDPs are provisioned through a management system interface on the switching element (SSP). In the future, other mechanisms (such as PINT) may be used to provision this data as well, but in this document we limit draft-ietf-spirits-protocol-02.txt [Page 6] The SPIRITS Protocol June 2002 our discussion to pure SPIRITS implementations. Since there is no explicit "subscription" via SUBSCRIBE to the TDP, a SIP INVITE message is used to carry information between the SPIRITS client and server (for TDPs that result in an INVITE, the body of the said INVITE will contain multi-part MIME with two MIME components: the first component will be the DP information encapsulated as "application/spirits-event" and the second optional component will be the actual body of the INVITE (could contain SDP or other session description). Responses to the INVITE message, or subsequent SUBSCRIBE messages from the SCF to the SSF within a current call context may result in EDPs being armed. NOTIFY messages are thus a convenient means of communication in those cases when triggers housed in EDPs fire. See [5], section 3 page 5 for more. Note that [5] uses the term "persistent" to refer to call-related DP arming and associated interactions. 3. ICW as a SPIRITS Service ICW as a benchmark SPIRITS service actually predates SPIRITS itself. Pre- SPIRITS implementations of ICW are detailed in [11]. However, as the draft notes, while a diversity of implementations exists, these implementations are not interoperable. At the time [11] was published, the industry did not have the depth of experience with SIP as is the case now. The use of SIP in [11] does not constitute normative usage of SIP as described in [2,6]; for instance, no mention is made of the SDP (if any) in the initial INVITE (especially since this pertains to "accept the call using VoIP" case). Thus this section serves to provide a normative description of ICW in SPIRITS. The description of ICW is deceptively simple: it is a service most useful for single line phone subscribers that use the line to establish an Internet session. In a nutshell, the service enables a subscriber engaged in an Internet dial-up session to o be notified of an incoming call to the very same telephone line that is being used for the Internet connection; o specify the desirable treatment of the call; and o have the call handled as specified. 3.1 Call disposition choices Section 2 of [11] details the call disposition outcome of a ICW session. They are reproduced here as a numbered list for further discussion: 1. Accepting the call over the PSTN line, thus terminating the Internet (modem) connection 2. Accepting the call over the Internet using Voice over IP (VoIP) draft-ietf-spirits-protocol-02.txt [Page 7] The SPIRITS Protocol June 2002 3. Rejecting the call 4. Playing a pre-recorded message to the calling party and disconnecting the call 5. Forwarding the call to voice mail 6. Forwarding the call to another number 7. Rejecting (or Forwarding) on no Response - If the subscriber fails to respond within a certain period time after the dialog box has been displayed, the incoming call can be either rejected or handled based on the treatment pre-defined by the subscriber. It should be pointed out for the sake of completeness that ICW as a SPIRITS service is not possible without making the SCP aware of the fact that the subscriber line is being used for an Internet session. That awareness, however, is not a part of the ICW service, but solely a pre-requisite. One of the following three methods MUST be utilized to impart this information to the SCP: 1. ICW subscriber based method: the ICW client on the subscriber's PC notifies the SCP of the Internet session by issuing a SIP REGISTER request. 2. IN based method: SCP maintains a list of ISP access numbers for a geographical area; when one of these numbers is dialed and connected to, it (the SCP) assumes that the calling party is engaged in an Internet session. 3. Any combination of methods 1 and 2. ICW depends on a TDP to be provisioned in the SSP. When the said TDP is encountered, the SSP suspends processing of the call and sends a request to the SPIRITS-capable SCP. The SCP determines that the subscriber line is being used for an Internet session. It instructs the SPIRITS client on the SCP to create a SIP INVITE request and send it to the SPIRITS server running on the subscriber's IP host. The SPIRITS server MUST return one of the possible call disposition outcomes cataloged section 3.1. Note that outcomes 1 and 4 through 7 can all be coalesced into one case, namely redirecting (using the SIP 3xx response code) the call to an alternative SIP URI. In case of 1, the URI of the redirected call MUST match the very same number being used by the customer to get online. Rejecting the call implies sending a non-2xx and non-3xx final response; the remaining outcomes result in the call being redirected to an alternate URI which provides the desired service (i.e. play a pre-recorded announcement, or record a voice message). Further processing of a SPIRITS client when it receives a final non- 2xx response can be summarized by the following steps: draft-ietf-spirits-protocol-02.txt [Page 8] The SPIRITS Protocol June 2002 1. If the response is a 4xx, 5xx, or 6xx class of response, generate and transmit an ACK request and instruct the SSP to play a busy tone to the caller. 2. Else, for all 3xx responses, generate and transmit an ACK request, and compare the redirected URI to the subscriber's line number: 2a. If the comparison indicates a match, instruct the SSP to hold onto the call for just enough time to allow the SPIRITS server to disconnect the modem, thus freeing up the line; and then continue with normal call processing, which will result in the subscriber's phone to ring. 2b. If the comparison fails, instruct the SSP to route the call to the redirected URI. 3. Else, for a 2xx response, follow the steps in section 3.2. 3.2 Accepting a ICW session using VoIP One call handling option in ICW is to "accept an incoming call using VoIP". The SPIRITS client has no way of knowing a-priori if the subscriber (callee) will be choosing this option; nonetheless, it has to account for such a choice by adding a SDP in the body of the INVITE request. A possible way of accomplishing this is to have the SPIRITS client control a PSTN gateway and allocate appropriate resources on it. Once this is done, the SPIRITS client adds network information (IP address of the gateway and port numbers where media will be received) and codec information as the SDP portion of the body in the INVITE request. SPIRITS requires the DP information to be carried in the request body as well. To that extent, the SPIRITS client MUST also add the information associated with the TDP that triggered the service. Thus, the body of the INVITE MUST contain multi-part MIME, with two components. The SPIRITS client transmits the INVITE request to the subscriber and now waits for a final response. Further processing when the SPIRITS server returns a 200 OK MUST be handled as follows: On the receipt of a 200 OK containing the SDP of the subscriber's UA, the SPIRITS client will instruct the SSP to terminate the call on a pre-allocated port on the gateway. This port MUST be correlated by the gateway to the SDP that was sent in the earlier INVITE. The end result is that the caller and callee hold a voice session with part of the session occurring over VoIP. 4. Using the SIP Events Package for SPIRITS clients on IP Network draft-ietf-spirits-protocol-02.txt [Page 9] The SPIRITS Protocol June 2002 The SIP Events Package enables IP endpoints (or hosts) to subscribe to and receive subsequent notification of events occurring in the PSTN. With reference to Figure 1 in [1], this includes communication on the interfaces marked "B" and "C". Following the nomenclature outlined in [4], the SPIRITS server (in Figure 1, [1]) is a "Subscriber" and the SPIRITS client (in Figure 1, [1]) is a "Notifier". These terms will be used to refer to the SPIRITS server and SPIRITS clients respectively in the remaining of this section. Please refer to [4] for detailed workings of the SUBSCRIBE/NOTIFY mechanism. 4.1 Normative usage A subscriber, under the effect of the user controlling it, may issue a SUBSCRIBE request which identifies the detection points (DPs) that it is interested in getting the notification of. The SUBSCRIBE request is routed to the notifier, where it is authenticated and may be accepted. Acceptance constitutes arming the said DP until the event of interest occurs. When an event of the nature requested for in the earlier SUBSCRIBE request occurs in the notifier, the notifier will format a NOTIFY request and direct it towards the subscriber. The NOTIFY request will contain the relevant information requested by the subscriber. The subscriber can then choose to act in a manner appropriate to the notification. When an event of interest occurs, the notifier MAY reset the DP. If the subscriber is further interested in the same DP, it MUST issue a new SUBSCRIBE request. The remaining sections fill in the template that is needed in order to fully specify a SIP Event package for the SPIRITS protocol. 4.1.1 Event package name This draft defines two event packages called "spirits-INDPs" and "spirits-user-prof". The former package MUST be used for events corresponding to IN detection points, and the latter MUST be used for events related to the user profile information. All entities that implement the SPIRITS protocol MUST set the "Event" request header to one of "spirits-INDPs" or "spirits-user-prof". The "Allow-Events" general header can be set to "spirits-INDPs" and/or "spirits-user-prof": Event: spirits-INDPs Allow-Events: spirits-INDPs, spirits-user-prof 4.1.2 Event Package Parameters Parameters are not envisioned for the SPIRITS event package. draft-ietf-spirits-protocol-02.txt [Page 10] The SPIRITS Protocol June 2002 4.1.3 SUBSCRIBE bodies SUBSCRIBE requests that serve to terminate the subscription MAY contain an empty body; however, SUBSCRIBE requests that establish a dialog MUST contain a body which encodes three pieces of information: (1) The particular DP that is being subscribed to. (2) Because of the requirement [5] that IN be informed whether the detection point is set as the request or notification, all events in the "INDPs" package (but not in the user-prof package) are require to provide a "mode" parameter, whose values are "R" (for report) and "N" for notification. (3) A list of the values of the parameters associated with the Event detection point (Note: the term "Event" here refers to the IN usage -- a dynamically armed DP is called an Event Detection Point) The default body type for SUBSCRIBEs in SPIRITS is denoted by the MIME type "application/spirits-event". The "Accept" header, if present, MUST include this MIME type. 4.1.4 Subscription Duration The purpose of the SUBSCRIBE request is to arm the DP, since as far as IN is concerned, being armed is the first essential pre-requisite. A DP maybe armed either statically (for instance, through service provisioning), or dynamically (by the SCF). A statically armed DP remains armed until it is disarmed proactively. A dynamically armed DP remains armed for the duration of a call (or more appropriately, no longer than the duration of a particular SSF-SCF relationship). Dynamically armed DPs are automatically disarmed when the event of interest occurs in the notifier. It is up to the subscriber to re- arm the DPs within the context of a call, if it so desires. Statically armed DPs are considered outside the scope of the SPIRITS protocol [5] and thus will not be considered any further. 4.1.5 NOTIFY Bodies 4.1.6 Notifier processing of SUBSCRIBE requests 4.1.7 Notifier generation of NOTIFY requests 4.1.8 Subscriber processing of NOTIFY requests draft-ietf-spirits-protocol-02.txt [Page 11] The SPIRITS Protocol June 2002 4.1.9 Handling of forked requests 4.1.10 Rate of notifications 4.1.11 State Agents 4.1.12 Examples 4.1.13 URI List handling 5. Example SPIRITS service call flow This section contains example call flows for two SPIRITS services. The first service is Internet Caller-ID Delivery (ICID) and the second service consists of converting PSTN short messages to SIP Instant Messages. 5.1 Internet Caller-ID Delivery One of the benchmark SPIRITS service, as described in section 2.2 of [1] is Internet Caller-ID delivery: This service allows the subscriber to see the caller's number or name or both while being connected to the Internet. If the subscriber has only one telephone line and is using the very line for the Internet connection, the service is a subset of the ICW service and follows the relevant description in Section 2.1. Otherwise, the subscriber's IP host serves as an auxiliary device of the telephone to which the call is first sent. We present an example of a SPIRITS call flow to realize this service. Note that this is an example only, not a normative description of the Internet Caller-ID service Further text and details of SIP messages below refer to the call flow provided in Figure 2. Figure 2 depicts the 4 entities that are an integral part of any SPIRITS service (the headings of the entities refer to the names established in Figure 1 in [1]) -- the SPIRITS server (also termed as a "subscriber" as per section 4.0), the SPIRITS gateway (also termed as a "notifier" as per section 4.0), the SPIRITS client, and the SCF. draft-ietf-spirits-protocol-02.txt [Page 12] The SPIRITS Protocol June 2002 SPIRITS server SPIRITS gateway SPIRITS client SCF ("subscriber") ("notifier") S G N | | | | | F1 SUBSCRIBE | | | +--------------------->| F2 SUBSCRIBE | | | +----------------->| | | | F3 200 OK (SUBS) | | | F4 200 OK (SUBS) |<-----------------+ F5 Arm DP | |<---------------------+ +--------------->| | | F6 NOTIFY | | | F7 NOTIFY |<-----------------+ | |<---------------------+ | | | | | | | F8 200 OK (NOT) | | | +--------------------->| F9 200 OK (NOT) | | | +----------------->| | | | | | ~ ~ ~ ~ ~ ~ ~ ~ | | | F10 Evt. Not. | | | F11 NOTIFY |<---------------+ | F12 NOTIFY |<-----------------+ | |<---------------------+ | | | | | | | F13 200 OK (NOT) | | | +--------------------->| F14 200 OK (NOT) | | | +----------------->| | | | | | | | | | \|/ \|/ \|/ \|/ v v v v Figure 2: Sample call flow This call flow depicts an overall operation of a "subscriber" successfully subscribing to the IN Termination_Attempt DP (the "subscriber" is assumed to be a user, possibly at work, who is interested in knowing when he/she gets a phone call to his/her home phone number) -- this interaction is captured in messages F1 through F9 in Figure 2. The user sends (F1) a SIP SUBSCRIBE request identifying the DP it is interested in along with zero or more parameters relevant to that DP (in this example, the Termination_Attempt_DP will be employed). The SPIRITS gateway authorizes the user (F2) and propagates the request to the SPIRITS client (F2). The SPIRITS client in turns interacts with the SCF to arm the Termination_Attempt_DP for the service (F5). An immediate NOTIFY with the current state information is send to the subscriber (F6 through F9). At some later point in time after the above sequence of events has transpired, the PSTN gets a call to the users phone. The SSF informs the SCF of this event when it encounters an armed Termination_Attempt_DP (not shown in Figure 2). The SCF informs the draft-ietf-spirits-protocol-02.txt [Page 13] The SPIRITS Protocol June 2002 SPIRITS client of this event (F10). When the SPIRITS client receives this event, it forms a SIP NOTIFY request and directs it to the SPIRITS gateway (F11). This NOTIFY will contain all the information elements necessary to identify the caller to the subscriber. The subscriber, upon receiving the notification (F12) may pop open a window with the date/time and the number of the caller. The rest of this section contains the details of the SIP messages in Figure 2. The call flow details below assume that the SPIRITS gateway is, for the purpose of this example, a SIP proxy that serves as the default outbound proxy for the notifier and an ingress host of the myprovider.com domain for the subscriber. The subscriber and notifier may be in separate administrative domains. F1: S->G SUBSCRIBE sip:myprovider.com SIP/2.0 From: ;tag=8177-afd-991 To: CSeq: 18992 SUBSCRIBE Call-ID: 3329as77@host.lucent.com Contact: Via: SIP/2.0/UDP host.lucent.com Expires: 3600 Event: spirits.INDPs Allow-Events: spirits.INDPs, spirits.user-prof Accept: application/spirits-event Content-Type: application/spirits-event Content-Length: ... 6302240216 The subscriber forms a SIP SUBSCRIBE request which identifies the DP that it wants to subscribe to (in this case, the TAA DP) and the actual line it wants that DP armed for (in this case, the line associated with the phone number 6302240216). This request eventually arrives at the SPIRITS gateway, G, which forwards it to the SIPRITS client, N: F2: G->N SUBSCRIBE sip:notifier.myprovider.com SIP/2.0 From: ;tag=8177-afd-991 To: CSeq: 18992 SUBSCRIBE Call-ID: 3329as77@host.lucent.com Contact: draft-ietf-spirits-protocol-02.txt [Page 14] The SPIRITS Protocol June 2002 Via: SIP/2.0/UDP gateway.myprovider.com Via: SIP/2.0/UDP host.lucent.com Expires: 3600 Event: spirits.INDPs Accept: application/spirits-event Content-Type: application/spirits-event Content-Length: ... 6302240216 A 200 OK is sent by the notifier when it gets the SUBSCRIBE request and understands the contents in it. The notifier also interfaces with the SCF to arm the DP (F5, not shown in the SIP messages below): F3: N->G SIP/2.0 200 OK From: ;tag=8177-afd-991 To: ;tag=SPIRITS-TAA-6302240216 CSeq: 18992 SUBSCRIBE Call-ID: 3329as77@host.lucent.com Contact: Via: SIP/2.0/UDP gateway.myprovider.com Via: SIP/2.0/UDP host.lucent.com Expires: 3600 Accept: application/spirits-event Content-Length: 0 The 200 OK arrives at the subscriber, thus creating a dialog between the subscriber and the notifier: F4: G->S SIP/2.0 200 OK From: ;tag=8177-afd-991 To: ;tag=SPIRITS-TAA-6302240216 CSeq: 18992 SUBSCRIBE Call-ID: 3329as77@host.lucent.com Contact: Via: SIP/2.0/UDP host.lucent.com Expires: 3600 Accept: application/spirits-event Content-Length: 0 The notifier also sends an immediate NOTIFY towards the subscriber informing the subscriber of the current state of the notification: F6: N->G draft-ietf-spirits-protocol-02.txt [Page 15] The SPIRITS Protocol June 2002 NOTIFY sip:vkg@host.lucent.com SIP/2.0 From: ;tag=SPIRITS-TAA-6302240216 To: ;tag=8177-afd-991 Via: SIP/2.0/UDP notifier.myprovider.com Call-ID: 3329as77@host.lucent.com Contact: CSeq: 3299 NOTIFY Event: spirits.INDPs Allow-Events: spirits.INDPs, spirits.user-prof Subscription-State: active Accept: application/spirits-event Content-Length: 0 The SPIRITS gateway routes the SIP request towards the subscriber: F7: G->S NOTIFY sip:vkg@host.lucent.com SIP/2.0 From: ;tag=SPIRITS-TAA-6302240216 To: ;tag=8177-afd-991 Via: SIP/2.0/UDP gateway.myprovider.com Via: SIP/2.0/UDP notifier.myprovider.com Call-ID: 3329as77@host.lucent.com Contact: Subscription-State: active CSeq: 3299 NOTIFY Accept: application/spirits-event Content-Length: 0 And finally, the 200 OK to the NOTIFY reaches the notifier: F8: S->G SIP/2.0 200 OK From: ;tag=SPIRITS-TAA-6302240216 To: ;tag=8177-afd-991 Via: SIP/2.0/UDP gateway.myprovider.com Via: SIP/2.0/UDP notifier.myprovider.com Call-ID: 3329as77@host.lucent.com Contact: CSeq: 3299 NOTIFY Accept: application/spirits-event Content-Length: 0 F9: G->N SIP/2.0 200 OK From: ;tag=SPIRITS-TAA-6302240216 To: ;tag=8177-afd-991 Via: SIP/2.0/UDP notifier.myprovider.com Call-ID: 3329as77@host.lucent.com Contact: CSeq: 3299 NOTIFY Accept: application/spirits-event draft-ietf-spirits-protocol-02.txt [Page 16] The SPIRITS Protocol June 2002 Content-Length: 0 At some later point in time (before the subscription established in F1 expires at the notifier), a call arrives at the number identified in XML-encoded body of F1 -- 6302240216. The SCF notifies the notifier (F10, not shown in the SIP messages below). Included in this notification is the relevant information from the PSTN, namely, the phone number of the party attempting to call 6302240216. The notifier uses this information to create a SIP NOTIFY request and sends it to the default outbound proxy. The SIP NOTIFY request has a XML-encoded body with the relevant information from the PSTN: F11: N->G NOTIFY sip:vkg@host.lucent.com SIP/2.0 From: ;tag=SPIRITS-TAA-6302240216 To: ;tag=8177-afd-991 Via: SIP/2.0/UDP notifier.myprovider.com Call-ID: 3329as77@host.lucent.com Contact: CSeq: 3300 NOTIFY Subscription-State: terminated;reason=fired Accept: application/spirits-event Event: spirits.INDPs Allow-Events: spirits.INDPs, spirits.user-prof Content-Type: application/spirits-event Content-Length: ... 6302240216 3125675000 The default outbound proxy delivers the SIP NOTIFY request to the subscriber: F12: G->S NOTIFY sip:vkg@host.lucent.com SIP/2.0 From: ;tag=SPIRITS-TAA-6302240216 To: ;tag=8177-afd-991 Via: SIP/2.0/UDP gateway.myprovider.com Via: SIP/2.0/UDP notifier.myprovider.com Call-ID: 3329as77@host.lucent.com Contact: CSeq: 3300 NOTIFY Subscription-State: terminated;reason=fired Accept: application/spirits-event Event: spirits.INDPs Allow-Events: spirits.INDPs, spirits.user-prof Content-Type: application/spirits-event draft-ietf-spirits-protocol-02.txt [Page 17] The SPIRITS Protocol June 2002 Content-Length: ... 6302240216 3125675000 There are a couple of important issues to note in the call flows for F11 or F12: (1) The body of the NOTIFY request contains the information passed to the SPIRITS client from the SCF. In this particular example, this is the phone number of the party (3125675000) that attempted to call 6302240216. (2) Since the notification occurred, the subscription established in F1 terminated (as evident by the Subscription-State header). The subscription terminated normally due to the DP associated with TAA firing (hence the reason code of "fired" in the Subscription-State header). If the subscriber wants to get notified of another attempt to call the number 6302240216, he/she should send a new SUBSCRIBE request to the notifier. The subscriber can take any appropriate action upon the receipt of the NOTIFY in F12. A reasonable implementation may pop up a window populated with the information contained in the body of F12, along with a button asking the subscriber if they would like to re- subscribe to the same event. Alternatively, a re-subscription could be generated automatically by the subscriber's UA based on his/her preferences. To complete the protocol, the subscriber also sends a 200 OK message towards the notifier: F13: S->G 200 OK SIP/2.0 From: ;tag=SPIRITS-TAA-6302240216 To: ;tag=8177-afd-991 Via: SIP/2.0/UDP gateway.myprovider.com Via: SIP/2.0/UDP notifier.myprovider.com Call-ID: 3329as77@host.lucent.com CSeq: 3300 NOTIFY Content-Length: 0 F14: G->N 200 OK SIP/2.0 From: ;tag=SPIRITS-TAA-6302240216 To: ;tag=8177-afd-991 draft-ietf-spirits-protocol-02.txt [Page 18] The SPIRITS Protocol June 2002 Via: SIP/2.0/UDP notifier.myprovider.com Call-ID: 3329as77@host.lucent.com CSeq: 3300 NOTIFY Content-Length: 0 5.2 Converting SMS to SIP Instant Messages 6. IANA considerations 6.1 Registering event packages Package Name: spirits-INDPs Type: package Contact: Vijay K. Gurbani, vkg@lucent.com Reference: RFC XXXX [Note to RFC Editor: please replace with RFC number for this draft]. Package Name: spirits-user-prof Type: package Contact: Vijay K. Gurbani, vkg@lucent.com Reference: RFC XXXX [Note to RFC Editor: please replace with RFC number for this draft]. Package Name: spirits-user-prof Type: package Contact: Vijay K. Gurbani, vkg@lucent.com Reference: RFC XXXX [Note to RFC Editor: please replace with RFC number for this draft]. 6.2 Registering MIME type MIME media type name: application MIME subtype name: spirits-event Mandatory parameters: none Optional parameters: charset (same semantics of charset parameter in application/xml [10]) Encoding considerations: same as considerations outlined for application/xml in [10]. draft-ietf-spirits-protocol-02.txt [Page 19] The SPIRITS Protocol June 2002 Security considerations: section 10 of [10] and section 7 of this document. Interoperability considerations: none. Published specifications: this document. Applications which use this media type: SPIRITS aware entities which adhere to this document. Additional information: Magic number(s): none. File extension(s): none. Macintosh file type code(s): none. Object Identifier(s) or OID(s): none. Person and email address for further information: Vijay K. Gurbani, Intended usage: Common Author/Change controller: The IETF 7. Security considerations Security concerns are listed here as a starting point; this list is by no means exhaustive and will be updated as this I-D progresses. As outlined in Chapter 10 of [5], the following security aspects are applicable to the SPIRITS protocol: Authentication Integrity Confidentiality Availability Non-repudiation For the most part, the SPIRITS protocol will leverage the security infrastructure defined in SIP [6] as well as XML security [12]. In addition, there are other issues of concern to SPIRITS, most of which have to do with the trust relationship between SPIRITS entities. For example, in Figure 1, interface C straddles the boundary between the two networks -- PSTN and the Internet. Thus it crosses both the administrative as well as the network domains. As such, issues like draft-ietf-spirits-protocol-02.txt [Page 20] The SPIRITS Protocol June 2002 authentication, message integrity, and confidentiality take on a deeper meaning. These issues will be identified and addressed as the I-D progresses. 8. Conclusion 9. Acknowledgments The authors are grateful to all participants in the SPIRITS WG for the discussion that has contributed to this work. These include J-L. Bakker, J. Bjorkner, J. Buller, J-E. Chapron, B.Chatras, O. Cleuziou, L. Conroy, R. Forbes, F. Haerens, J. Humphrey, J. Kozik, W. Montgomery, S. Nyckelgard, M. O'Doherty, H. Sinnreich, L. Slutsman, D. Varney, W. Zeuch, J. Rosenberg, and A. Roach. CHANGES Changes in -02 (1) Added section on the ICW service and its realization in SPIRITS (2) Added 'Mode' parameter to SUBSCRIBE/NOTIFY call flow examples (3) Took out Appendix A and B; the information contained in them is now in a new I-D. (4) Filled out IANA consideration section. Changes in -01 (1) Changed the name of the I-D to draft-ietf-spirits-protocol-01.txt to reflect the WG decision of making it an agenda item Changes since draft-gurbani-spirits-protocol-00 (1) Updated section 8.0 (Acknowledgments) (2) Fleshed out the call flow in section 4.0 (Example SPIRITS service call flow) AUTHORS' ADDRESSES Alec Brusilovsky Igor Faynberg Lucent Technologies, Inc. Lucent Technologies, Inc. 2000 Naperville Rd., 101 Crawfords Corner Rd., Naperville, IL 60566 Holmdel, NJ 07733 USA USA abrusilovsky@lucent.com faynberg@lucent.com Jorge Gato Vijay K. Gurbani Airtel Movil, S.A. 2000 Lucent Lane Avda de Europa, 1 Rm 6G-440 draft-ietf-spirits-protocol-02.txt [Page 21] The SPIRITS Protocol June 2002 28108 Alcobendas (Madrid) Naperville, IL 60566 Spain USA jgato@airtel.es vkg@lucent.com Musa Unmehopa Kumar Vemuri Lucent Technologies, Inc. Lucent Technologies, Inc. Larenseweg 50, 2000 Naperville Rd., Postbus 1168 Naperville, IL 60566 1200 BD, Hilversum, USA The Netherlands vvkumar@lucent.com unmehopa@lucent.com ACRONYMS CM Call Model CS Capability Set DP Detection Point DTD Document Type Definition EDP Event Detection Point EDP-N Event Detection Point "Notification" EDP-R Event Detection Point "Request" IANA Internet Assigned Numbers Authority ICW Internet Call Waiting IN Intelligent Network INAP Intelligent Network Application Protocol IP Internet Protocol ITU International Telecommunications Union MIME Multipurpose Internet Mail Extensions OBCSM Originating Basic Call State Model PIC Point In Call PINT PSTN/Internet Interworking PSTN Public Switched Telephone Network SCF Service Control Function SCP Service Control Point SDP Session Description Protocol SIP Session Initiation Protocol SIP-T SIP for Telephones SPIRITS Services in the PSTN/IN Requesting InTernet Services SSF Service Switching Function SSP Service Switching Point STD State Transition Diagram TBCSM Terminating Basic Call State Model TDP Trigger Detection Point TDP-N Trigger Detection Point "Notification" TDP-R Trigger Detection Point "Request" XML Extensible Markup Language Normative references [1] L. Slutsman (Ed.), I. Faynberg, H. Lu, M. Weissman, "The SPIRITS Architecture", IETF RFC 3136, June 2001, [2] Handley, M., Schooler, E., Schulzrinne, H. and J. Rosenberg, draft-ietf-spirits-protocol-02.txt [Page 22] The SPIRITS Protocol June 2002 "SIP: Session Initiation Protocol", RFC 2543, March 1999. [3] Faynberg, I., L. Gabuzda, M. Kaplan, and N.Shah, "The Intelligent Network Standards: Their Application to Services", McGraw-Hill, 1997. [4] Adam Roach, "SIP-Specific Event Notification", IETF I-D, Work in Progress, Expires August 2002, [5] I.Faynberg, et al, "SPIRITS Protocol Requirements", draft-ietf- spirits-reqs-04.txt, work in progress, February, 2001. [6] J. Rosenberg, H. Schulzrinne, G. Camarillo, J. Peterson, R. Sparks, A. Johnston, M. Handley, and E. Schooler, "SIP: Session Initiation Protocol" IETF I-D, Expires August 2002, Work in Progress. [7] M. Unmehopa, K. Vemuri, A. Brusilovsky, E. Dacloush, A. Zaki, F. Haerens, J-L. Bakker, B. Chatras, and J. Dobrowolski, "On selection of IN parameters to be carried by the SPIRITS Protocol", IETF I-D, Expires January 2003, Work In Progress. Informative references [8] Intelligent Network Capability Set 2. ITU-T, Recommendation Q.1228 [9] S. Petrack, L. Conroy, "The PINT Service Protocol: Extensions to SIP and SDP for IP Access to Telephone Call Services", IETF RFC 2848, June 2000, [10] M. Murata, S. St. Laurent, D. Kohn, "XML Media Types", IETF RFC 3023, January 2001, [11] H. Lu (Ed.), I. Faynberg, J. Voelker, M. Weissman, W. Zhang, S. Rhim, J. Hwang, S. Ago, S. Moeenuddin, S. Hadvani, S. Nyckelgard, J. Yoakum, and L. Robart, "Pre-SPIRITS Implementations of PSTN-initiated Services", IETF RFC 2995, November 2000, [12] Donald Eastlake, Joseph Reagle, David Solo at al., "XML- Signature Syntax and Processing", W3C Recommendation 12 February 2002, FULL COPYRIGHT STATEMENT "Copyright (C) The Internet Society (date). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this draft-ietf-spirits-protocol-02.txt [Page 23] The SPIRITS Protocol June 2002 document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. draft-ietf-spirits-protocol-02.txt [Page 24]