The SPIRITS (Services in PSTN requesting Internet Services) Protocol
Extracted elements (30)
For spirits-INDPs, the subscription dialog terminates when the event fires, requiring a new SUBSCRIBE for the next occurrence. For spirits-user-prof (cellular events), the subscription persists until expiry because cellular location events may fire at far greater frequency and it is more expedient to allow normal expiration.
SIP was chosen as the protocol enabler for SPIRITS because the SPIRITS protocol requirements mandate that parameters be carried in a manner consistent with SIP practices, and SIP already provides payload description capabilities (Content-Type, Content-Length). The rationale for this choice is detailed in the SPIRITS requirements RFC 3298.
The document intentionally reverses the intuitive naming: the 'SPIRITS server' (IP host) acts as the SIP subscriber (issues SUBSCRIBE requests), and the 'SPIRITS client' (PSTN gateway) acts as the SIP notifier (issues NOTIFY requests). This was done to adhere to RFC 3265 nomenclature and reduce architectural ambiguity.
Implementations MUST support the base XML schema (Section 9) to ensure interoperability. Richer event sets MAY be supported via additional XML namespaces; if an unknown extension is received, a SPIRITS subscriber MUST search for mandatory elements which MUST be present in all notification schemas.
Support for SIP REGISTER is included for PINT (RFC 3298) compatibility, and support for SIP INVITE is mandated because pre-existing SPIRITS implementations did not use SIP event notification but instead used INVITE to deliver the initial PSTN detection point.
All SPIRITS subscribers MUST support the base XML schema defined in Section 9 for subscribing to PSTN events. All SPIRITS notifiers MUST support this schema; the schema MAY be extended via additional XML namespaces.
Both 'spirits-INDPs' and 'spirits-user-prof' packages MUST NOT use URIs to retrieve state. Implementations MUST use a congestion-controlled transport if the request size is within 200 bytes of path MTU or exceeds 1300 bytes when path MTU is unknown.
For ICW service, one of three methods MUST be used to inform the SCP that the subscriber line is in use for an Internet session: ICW subscriber-based SIP REGISTER, IN-based ISP number list, or a combination of both.
For static DP (TDP) notifications via SIP INVITE, the body of the SIP request MUST contain multi-part MIME with two components: the normal payload and SPIRITS-specific information about the fired DP.
For the spirits-user-prof package, whenever a location update NOTIFY is sent, the notifier MUST start a 15-second throttle timer (Tn). Any subsequent location update NOTIFY that would be sent before Tn expires MUST be discarded; transmissions are allowed only after Tn expires.
Forking of SUBSCRIBE requests is prohibited for both event packages. The normal SIP DNS lookup and routing rules should result in a target set with exactly one element: the notifier.
If a subscriber wants the event to be monitored again after a 'terminated;reason=fired' notification, it MUST issue a new SUBSCRIBE request establishing a new dialog; the existing terminated dialog cannot be reused.
If arming of detection points is expected to take more than 200 ms, the notifier MUST send a 202 response immediately, then send a NOTIFY with an empty body and Subscription-State: pending. Once the SCF interface succeeds, a subsequent NOTIFY with Subscription-State: active MUST be sent.
SPIRITS mandates support of S/MIME as a security mechanism. TLS or HTTP Digest authentication may additionally be utilized by SPIRITS operators.
SUBSCRIBE requests that establish a dialog MUST contain a body encoding: the set of detection points (DPs) subscribed to, the mode parameter ('R' or 'N') for spirits-INDPs events, and associated DP parameter values. SUBSCRIBE requests terminating a subscription MAY have an empty body.
The MIME type 'application/spirits-event+xml' MUST be present in the Content-Type header of all SPIRITS requests and responses. The Accept header, if present, MUST include this MIME type in SUBSCRIBE requests.
The <spirits-event> root element MUST contain a namespace declaration ('xmlns') with the URN 'urn:ietf:params:xml:ns:spirits-1.0' and MUST contain at least one <Event> element.
When the notifier receives a SUBSCRIBE request, it MUST authenticate the request and ensure the subscriber is authorized to access the PSTN resource being subscribed to.
When the subscribed event fires, the notifier MUST send a NOTIFY containing a body (per Section 5.3.6) with Subscription-State header set to 'terminated' and reason parameter 'fired'. All un-encountered DPs from the same SUBSCRIBE dialog MUST be dis-armed by the SPIRITS notifier and/or SCF.
SPIRITS defines 11 originating-side Detection Points (OAA, OCI, OAI, OA, OTS, ONA, OCPB, ORSF, OMC, OAB, OD) and 8 terminating-side DPs (TA, TNA, TMC, TAB, TD, TAA, TFSA, TB), each with mandatory CallingPartyNumber or CalledPartyNumber parameters in SUBSCRIBE/NOTIFY.
SPIRITS defines 5 non-call related cellular events: LUSV (location update same VLR), LUDV (location update different VLR), REG (IMSI attach), UNREGMS (MS-initiated IMSI detach), and UNREGNTWK (network-initiated IMSI detach), each with CalledPartyNumber and optionally Cell-ID.
The <Event> XML element has two mandatory attributes: 'type' (either 'INDPs' or 'userprof') and 'name' (a SPIRITS mnemonic such as OAA, TAA, REG). An optional 'mode' attribute takes values 'N' (notification) or 'R' (request), defaulting to 'N'.
The 'spirits-INDPs' SIP event package is used for events corresponding to IN detection points in the cellular or wireline PSTN. The Event request header MUST be set to 'spirits-INDPs' and Allow-Events MUST include this token for entities supporting IN detection points.
The 'spirits-user-prof' SIP event package is used for non-call-related cellular events (location updates, IMSI attach/detach). The Event header MUST be set to 'spirits-user-prof' and Allow-Events MUST include this token for supporting entities.
A new MIME type 'application/spirits-event+xml' is registered under the 'application' media type. It has no mandatory parameters and an optional 'charset' parameter with the same semantics as application/xml.
Two new SIP event packages are registered: 'spirits-INDPs' for IN detection point events and 'spirits-user-prof' for non-call-related cellular events. Both are registered per RFC 3265 event package procedures.
Two URNs are registered: the XML namespace 'urn:ietf:params:xml:ns:spirits-1.0' and the XML schema 'urn:ietf:params:xml:schema:spirits-1.0', both per the IETF XML registry procedures.
SPIRITS security requirements address four aspects: authentication, integrity, confidentiality, and non-repudiation. SPIRITS mandates S/MIME support; TLS and HTTP Digest are optional supplementary mechanisms available to operators.
The SPIRITS subscription state machine has three states: 'pending' (subscription accepted but DP not yet armed, triggered when arming takes >200ms), 'active' (DP successfully armed in PSTN), and 'terminated' (DP fired, reason='fired', or subscription expired). States are communicated via the Subscription-State header in NOTIFY requests.
SPIRITS XML documents use the 'application/spirits-event+xml' MIME type. The root element is <spirits-event> with namespace 'urn:ietf:params:xml:ns:spirits-1.0', containing one or more <Event> elements each optionally containing child elements such as <CallingPartyNumber>, <CalledPartyNumber>, <DialledDigits>, <Cause>, or <Cell-ID> as string values.