INTERNET-DRAFT Vijay K. Gurbani (Editor) February 2003 Igor Faynberg Expires: August 2003 Hui-Lan Lu Musa Unmehopa Kumar Vemuri Lucent Technologies, Inc. Alec Brusilovsky ArtCare Jorge Gato Vodafone Document: draft-ietf-spirits-protocol-04.txt Category: Standards Track The SPIRITS (Services in PSTN requesting Internet services) 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. Such services are called SPIRITS services. On the PSTN side, the SPIRITS services are most often initiated from the Intelligent Network (IN) entities. Internet Call Waiting, Internet Caller-ID Delivery, are examples of SPIRITS services; as are location-based services or application-specific ones. The protocol is to define the building blocks from which many other services can be built. draft-ietf-spirits-protocol-04.txt [Page 1] The SPIRITS Protocol February 2003 Table of Contents 1. INTRODUCTION...............................................2 1.1 Conventions used in this document .....................3 2. OVERVIEW OF OPERATIONS.....................................3 3. CALL-RELATED EVENTS........................................ 3.1 Background............................................. 3.2 IN-specific details.................................... 3.3 Services through dynamic DPs........................... 3.3.1 Normative usage................................. 3.3.2 Event package name.............................. 3.3.3 Event package parameters........................ 3.3.4 SUBSCRIBE bodies................................ 3.3.5 Subscription duration........................... 3.3.6 NOTIFY bodies................................... 3.3.7 Notifier processing of SUBSCRIBE requests....... 3.3.8 Notifier generation of NOTIFY requests.......... 3.3.9 Subscriber processing of NOTIFY requests........ 3.3.10 Handling of forked requests..................... 3.3.11 Rate of notifications........................... 3.3.12 State Agents.................................... 3.3.13 Examples........................................ 3.3.14 Use of URIs to retrieve state................... 3.4 Services through static DPs............................ 3.4.1 Internet Call Waiting............................ 3.4.2 Call disposition choices......................... 3.4.3 Accepting an ICW session using VoIP.............. 4. NON-CALL RELATED EVENTS.................................... 4.1 Background............................................ 4.2 Normative usage....................................... 4.3 Event package name.................................... 4.4 Event package parameters.............................. 4.5 SUBSCRIBE bodies...................................... 4.6 Subscription duration................................. 4.7 NOTIFY bodies......................................... 4.8 Notifier processing of SUBSCRIBE requests............. 4.9 Notifier generation of NOTIFY requests................ 4.10 Subscriber processing of NOTIFY requests.............. 4.11 Handling of forked requests........................... 4.12 Rate of notifications................................. 4.13 State Agents.......................................... 4.14 Examples.............................................. 4.15 Use of URIs to retrieve state......................... 5. IANA CONSIDERATIONS..... .................................. 5.1 Registering event packages............................. 5.2 Registering MIME type.................................. 6. SECURITY CONSIDERATIONS.................................... ACKNOWLEDGMENTS............................................ CHANGES.................................................... AUTHORS' ADDRESS........................................... ACRONYMS................................................... NORMATIVE REFERENCE........................................ INFORMATIVE REFERENCE...................................... draft-ietf-spirits-protocol-04.txt [Page 2] The SPIRITS Protocol February 2003 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 term PSTN is used here to include all manner of access; i.e. wireline circuit-switched network as well as the wireless circuit- switched network. 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 Informational RFC3298, "SPIRITS Protocol Requirements" The rest of this document is organized as follows: section 2 provides an overview of SPIRITS operations; sections 3 and 4 discusses the mechanisms for an Internet host expressing an interest in PSTN events, and the PSTN propagating such events to the Internet host. Section 5 is concerned with the tokens defined in this document with IANA. Finally, section 6 discusses the important aspect of securing the communications between the PSTN and the Internet. 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 The purpose of the SPIRITS protocol is to enable the execution of services in the Internet based on certain events occurring in the PSTN. The term PSTN is used here to include all manner of switching; i.e. wireline circuit-switched network as well as the wireless circuit-switched network. In general terms, an Internet host will express an interest in getting notifications of certain events occurring in the PSTN. When the event of interest occurs, the PSTN notifies the Internet host. The Internet host can execute approrpiate services based on the notification. +------+ | PSTN | |Events| +------+ draft-ietf-spirits-protocol-04.txt [Page 3] The SPIRITS Protocol February 2003 / \ / \ +-------+ +--------+ |Call | |Non-Call| |Related| |Related | +-------+ +--------+ / \ / \ / \ / \ +---/--+ +---\--+ +--/-----+ +-------------+ |Static| |Dynamic| |Mobility| |App. Specific| ... | | | | |Mgmt. | | | +------+ +-------+ +--------+ +-------------+ Figure 1: The SPIRITS hierarchy. Figure 1 contains the SPIRITS events heirarchy including their subdivision in two discrete classes for service execution: events related to the setup, teardown, and maintenence of a call; and events un-related to call setup, teardown or maintenance. Example of the latter class of events are geo-location mobility events that are tracked by the cellular PSTN. SPIRITS will specify the framework to provide services for both these types of events. Call-related events, its further subdivisions and how they enable services in the Internet is contained in section {X-Ref 3}. Services enabled from events not related to call setup, teardown, or maintenance are covered in detail in section {X-Ref 4}. For reference, the SPIRITS architecture from [1] is reproduced below. This document is primarily focused on interfaces B and C. Interface D, is a matter of local policy; the PSTN operator may have a functional interface between the SPIRITS client or a message passing interface. This document does not discuss interface D in any detail. +--------------+ | Subscriber's | | IP Host | +--------------+ | | | | | +----------+ | | +----------+ | | | PINT | | A | | PINT | | | | Client +<-------/-------->+ Gateway +<-----+ | +----------+ | | +----------+ | | | | | | | | +----------+ | | +----------+ | | | | SPIRITS | | B | | SPIRITS | | | | | Server +<-------/-------->+ Gateway | | | | +----------+ | | +--------+-+ | | | | | ^ | | +--------------+ +----------|---+ | | | IP Network | | ------------------------------------------|--------|--- PSTN / C / E | | draft-ietf-spirits-protocol-04.txt [Page 4] The SPIRITS Protocol February 2003 v | +----+------+ | | SPIRITS | | | Client | v +-------------------+ +---+-----D-----+-++ | Service Switching |INAP/SS7 | Service Control | | Function +---------+ Function | +----+--------------+ +------------------+ | |line +-+ [0] Subscriber's Figure 2: The SPIRITS Architecture. (Note: The interfaces A-E are described in detail in the SPIRITS Architecture document [1]) 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 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, the protocol used on interfaces B and C is SIP. 3. Call-related events 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 act as intelligent entities to leverage and use Internet hosts and capabilities to further enhance the telephone end-user's experience. 3.1 Background 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 draft-ietf-spirits-protocol-04.txt [Page 5] The SPIRITS Protocol February 2003 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 "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. 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. 3.2 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 draft-ietf-spirits-protocol-04.txt [Page 6] The SPIRITS Protocol February 2003 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 our discussion to pure SPIRITS implementations. 3.3 Services through dynamic DPs Triggers in the PSTN can be armed dynamically, often outside the context of a call. The SIP event notification mechanism [4] is, therefore, a convenient means to exploit in those cases where triggers housed in EDPs fire (see section 3 of [5]). Note that [5] uses the term "persistent" to refer to call-related DP arming and associated interactions. 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 2, this includes communication on the interfaces marked "B" and "C". Following the nomenclature outlined in [4], the SPIRITS server in Figure 2 is a "Subscriber" and the SPIRITS client in Figure 2 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 draft-ietf-spirits-protocol-04.txt [Page 7] The SPIRITS Protocol February 2003 mechanism. 3.3.1 Normative usage A subscriber, under the effect of the user controlling it, will issue a SUBSCRIBE request which identifies a set of events (DPs) it is interested in getting the notification of. There MAY be exactly one DP in this set, or multiple DPs. The SUBSCRIBE request is routed to the notifier, where it is accepted, pending a successful authentication. When any of the DPs identified in the set of events triggers, the notifier will format a NOTIFY request and direct it towards the subscriber. The NOTIFY request will contain information pertinent to the event that was triggered. The unencountered DPs MUST be subsequently dis-armed by the SPIRITS client and/or the SCF. The dialog established by the SUBSCRIBE terminates when the event of interest occurs and this notification is passed to the subscriber through a NOTIFY request. If the subscriber is interested in the future occurrence of the same event, it MUST issue a new SUBSCRIBE request, establishing a new dialog. When the subscriber receives a NOTIFY request, it can subsequently choose to act in a manner appropriate to the notification. The remaining sections fill in the template that is needed in order to fully specify a SIP Event package for the SPIRITS protocol. 3.3.2 Event package name This document defines two event packages; the first of these is defined in this section and is called "spirits-INDPs". This package MUST be used for events corresponding to IN detection points. All entities that implement the SPIRITS protocol and support IN detection points MUST set the "Event" request header [4] to "spirits-INDPs." The "Allow-Events" general header [4] MUST include the token "spirits-INDPs" if the entity implements the SPIRITS protocol and supports IN detection points. Event: spirits-INDPs Allow-Events: spirits-INDPs 3.3.3 Event package parameters The "spirits-INDPs" event package does not support any additional parameters to the Event header. 3.3.4 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: draft-ietf-spirits-protocol-04.txt [Page 8] The SPIRITS Protocol February 2003 (1) The set of events (DPs) that is being subscribed to. A subscriber MAY subscribe to multiple DPs in one SUBSCRIBE request, or MAY issue a different SUBSCRIBE requests for each DP it is interested in receiving a notification for. The protocol allows for both forms of representation, however, it recommends the former manner of subscribing to DPs if the service depends on any of the DPs being triggered. (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 "spirits-INDPs" package (but not in the "spirits-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. 3.3.5 Subscription duration For package "spirits-INDPs", 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 requirements [5] and thus will not be considered any further. 3.3.6 NOTIFY bodies Bodies in NOTIFY requests for the "spirits-INDPs" package are optional. If present, they MUST be of the MIME type "application/spirits-event". The body in a NOTIFY request encapsulates the following pieces of information which can be used by the subscriber: (1) The event that resulted in the NOTIFY being generated (typically, but not always, this will be the same event present in the corresponding SUBSCRIBE request). draft-ietf-spirits-protocol-04.txt [Page 9] The SPIRITS Protocol February 2003 (2) The "mode" parameter; it is simply reflected back from the corresponding SUBSCRIBE request. (3) A list of values of the parameters associated with the event that the NOTIFY is being generated for. Depending on the actual event, the list of the parameters will vary. If the subscriber armed multiple DPs as part of a single SUBSCRIBE request, all the unencountered DPs that were part of the same SUBSCRIBE dialog MUST be dis-armed by the SPIRITS client and/or the SCF. 3.3.7 Notifier processing of SUBSCRIBE requests When the notifier receives a SUBSCRIBE request, it MUST authenticate the request and ensure that the subscriber is authorized to access the resource being subscribed to, in this case, PSTN/IN events on a certain PSTN line. Once the SUBSCRIBE request has been authenticated and authorized, the notifier interfaces with the SCF over interface D to arm the detection points corresponding to the PSTN line contained in the SUBSCRIBE body. The particulars about interface D is out of scope for this draft; here we will simply assume that the notifier can effect the arming (and disarming) of triggers in the PSTN through interface D. 3.3.8 Notifier generation of NOTIFY requests If the notifier expects the arming of triggers to take more than 200 ms (NOTE: is this too small, too large, okay?), it MUST send a 202 response to the SUBSCRIBE request immediately, accepting the subscription. It should then send a NOTIFY request with an empty body. This NOTIFY request MUST have a "Subscription-State" header with a value of "pending". This immediate NOTIFY with an empty body is needed since the resource identified in the SUBSCRIBE request does not have as yet a meaningful state. Once the notifier has successfully interfaced with the SCF, it MUST send a subsequent NOTIFY request with an empty body and a "Subscription-State" header with a value of "active." When the event of interest identified in the SUBSCRIBE request occurs, the notifier sends out a new NOTIFY request which MUST contain a body (see X-Ref 3.3.6). The NOTIFY request MUST have a "Subscription-State" header and its value MUST be set to "terminated" with a reason parameter of "fired". 3.3.9 Subscriber processing of NOTIFY requests The exact steps executed at the subscriber when it gets a NOTIFY draft-ietf-spirits-protocol-04.txt [Page 10] The SPIRITS Protocol February 2003 request will depend on the nature of the information contained in the request. As a generality, the UA associated with the subscriber should somehow impart this information to the user, by visual or auditory means, if at all possible. If the NOTIFY request contained a "Subscription-State" header with a value of "terminated" and a reason parameter of "fired", the UA associated with the subscriber MAY initiate a new subscription for the event that was just reported through the NOTIFY request. Whether or not to initiate a new subscription when an existing one expires is upto the context of the service that is being implemented. For instance, a user may configure her UA to always re-subscribe to the same event when it fires, but this is not necessarily the normative case. 3.3.10 Handling of forked requests Forking of SUBSCRIBE requests is prohibited. Since the SUBSCRIBE request is targetted towards the PSTN, highly irregular behaviors occur if the request is allowed to fork. The normal SIP DNS lookup and routing rules [7b] should result in a target set with exactly one element: the notifier. 3.3.11 Rate of notifications For reasons of security more than network traffic, it is RECOMMENDED that the notifier issue two or, at most three NOTIFY requests for a subscription. If the subscription was accepted with a 202 response, a NOTIFY will be sent immediately towards the subscriber. This NOTIFY serves to inform the subscriber that the request has been accepted and is being acted on. Once the resource (detection points) identified in the SUBSCRIBE request have been initialized, the notifier MUST send a second NOTIFY request. This request contains the base state of the resource. When an event of interst occurs which leads to the firing of the detection points identified in the SUBSCRIBE request, a final NOTIFY is sent to the subscriber. This NOTIFY request contains more information about the event of interest. If the subscription was accepted with a 200 response, the notifier simply sends two NOTIFY requests: one containing the base state of the resource, and the other containing information that lead to the firing of the detection point. 3.3.12 State agents State agents are not used in SPIRITS. 3.3.13 Examples This section contains example call flows for a SPIRITS service called draft-ietf-spirits-protocol-04.txt [Page 11] The SPIRITS Protocol February 2003 Internet Caller-ID Delivery (ICID). 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. 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) | | | +----------------->| | | | | | draft-ietf-spirits-protocol-04.txt [Page 12] The SPIRITS Protocol February 2003 | | | | \|/ \|/ \|/ \|/ 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 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 draft-ietf-spirits-protocol-04.txt [Page 13] The SPIRITS Protocol February 2003 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: 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: draft-ietf-spirits-protocol-04.txt [Page 14] The SPIRITS Protocol February 2003 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 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 draft-ietf-spirits-protocol-04.txt [Page 15] The SPIRITS Protocol February 2003 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 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: ... draft-ietf-spirits-protocol-04.txt [Page 16] The SPIRITS Protocol February 2003 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 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. draft-ietf-spirits-protocol-04.txt [Page 17] The SPIRITS Protocol February 2003 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 Via: SIP/2.0/UDP notifier.myprovider.com Call-ID: 3329as77@host.lucent.com CSeq: 3300 NOTIFY Content-Length: 0 3.3.14 Use of URIs to retrieve state The "spirits-INDPs" package MUST not use URIs to retrieve state. All state information for this package is compact enough to fit in a SIP message body. 3.4 Services through static DPs We mentioned in section {X-Ref 3.2} that the first trigger that fires during call processing is typically a TDP since there isn't any pre- existing control relationship between the SSF and the SCF. Some Internet hosts may have expressed an interest in executing services based on TDPs (through an a-priori arrangement, which is not a part of this specificiation). Thus, the PSTN will notify such hosts. To do so, it will send a SIP request (typically an INVITE) towards the Internet host. The body of the SIP request MUST contain multi-part MIME with two MIME components: the first part corresponding to the normal payload, if any, of the request; and the second part will contain SPIRITS-specific information (e.g. the DP that fired). Responses to the INVITE request, or subsequent SUBSCRIBE messages from the Internet host to the PSTN within a current call context may result in EDPs being armed. draft-ietf-spirits-protocol-04.txt [Page 18] The SPIRITS Protocol February 2003 3.4.1 Internet Call Waiting (ICW) 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 [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.4.2 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) 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 draft-ietf-spirits-protocol-04.txt [Page 19] The SPIRITS Protocol February 2003 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: 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 draft-ietf-spirits-protocol-04.txt [Page 20] The SPIRITS Protocol February 2003 route the call to the redirected URI. 3. Else, for a 2xx response, follow the steps in section 3.2. 3.4.3 Accepting an 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. Non-call related events There are network events that are not related to setting up, maintaining, or tearing down voice calls. Such events occur on the cellular wireless network and can be used by SPIRITS to provide services. The SPIRITS protocol requirement RFC [5] explicitly includes the following events (see Section 5(b) of [5]) for which SPIRITS notification is needed: o Location Update in the same VLR service area o Location Update in another VLR service area o IMSI attach o MS initiated IMSI detach o Network initiated IMSI detach 4.1 Background draft-ietf-spirits-protocol-04.txt [Page 21] The SPIRITS Protocol February 2003 4.2 Normative usage 4.3 Event package name This document defines a second event package called "spirits-user- prof". This package MUST be used for events not corresponding to IN detection points, or for non-call related events in general. All entities that implement the SPIRITS protocol and support non-call related events MUST set the value of the "Event" request header [4] to the token "sprits-user-prof". For such entities, the "Allow- Events" general header [4] MUST include this token as well. Example: Event: spirits-user-prof Allow-Events: spirits-user-prof, spirits-INDPs 4.4 Event package parameters The "spirits-user-prof" event package does not support any additional parameters to the Event header 4.5 SUBSCRIBE bodies 4.6 Subscription duration 4.7 NOTIFY bodies 4.8 Notifier processing of SUBSCRIBE requests 4.9 Notifier generation of NOTIFY requests 4.10 Subscriber processing of NOTIFY requests 4.11 Handling of forked requests 4.12 Rate of notifications draft-ietf-spirits-protocol-04.txt [Page 22] The SPIRITS Protocol February 2003 4.13 State agents 4.14 Examples 4.15 Use of URIs to retrieve state 5. IANA considerations 5.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]. 5.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 draft-ietf-spirits-protocol-04.txt [Page 23] The SPIRITS Protocol February 2003 application/xml [10]) Encoding considerations: same as considerations outlined for application/xml in [10]. 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 6. 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 draft-ietf-spirits-protocol-04.txt [Page 24] The SPIRITS Protocol February 2003 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 authentication, message integrity, and confidentiality take on a deeper meaning. These issues are being discussed in a separate I-D [7a] and the results of that discussion will be merged into this specification upon their conclusion. ACKNOWLEDGMENTS The authors are grateful to 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, A. Roach, J. Rosenberg, H. Sinnreich, L. Slutsman, D. Varney, and W. Zeuch. CHANGES Changes in -04 (1) SUBSCRIBE requests can now contain a set of DPs. Included guidelines on how to handle a set of DPs and the behavior of the system for unencountered DPs. Changes in -03 (1) Re-organized much of the I-D to better reflect the nature of SPIRITS services; specifically, divided the services in two classes: call-related events and non-call related events. 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) draft-ietf-spirits-protocol-04.txt [Page 25] The SPIRITS Protocol February 2003 (2) Fleshed out the call flow in section 4.0 (Example SPIRITS service call flow) AUTHORS' ADDRESSES Alec Brusilovsky Igor Faynberg ArtCare Lucent Technologies, Inc. 559 Roxbury Drive 101 Crawfords Corner Rd., Naperville, IL 60565 Holmdel, NJ 07733 USA USA abrusilovsky@ieee.org faynberg@lucent.com Jorge Gato Vijay K. Gurbani Airtel Movil, S.A. 2000 Lucent Lane Avda de Europa, 1 Rm 6G-440 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 IMSI International Mobile Subscriber Identity IN Intelligent Network INAP Intelligent Network Application Protocol IP Internet Protocol ITU International Telecommunications Union MIME Multipurpose Internet Mail Extensions MS Mobile Station 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 draft-ietf-spirits-protocol-04.txt [Page 26] The SPIRITS Protocol February 2003 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] [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 RFC 3265, June 2002, [5] I.Faynberg, J. Gato, H. Lu, and L. Slutsman, "SPIRITS Protocol Requirements", IETF RFC 3298, August 2002, [6] J. Rosenberg, H. Schulzrinne, G. Camarillo, J. Peterson, R. Sparks, A. Johnston, M. Handley, and E. Schooler, "SIP: Session Initiation Protocol" IETF RFC 3261, June 2002, [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. [7a] Vijay K. Gurbani, "Security for SPIRITS services", IETF Internet-Draft, Work in Progress. [7b] J. Rosenberg, H. Schulzrinne, "Session Initiation Protocol (SIP): Locating SIP Servers", IETF RFC 3263, June 2002, 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, draft-ietf-spirits-protocol-04.txt [Page 27] The SPIRITS Protocol February 2003 [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 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-04.txt [Page 28]