A Session Initiation Protocol (SIP) Event Package for Registrations
updated by
- rfc-6140 — Registration for Multiple Phone Numbers in the Session Initiation Protocol (SIP)
Extracted elements (25)
Forked SUBSCRIBE requests are prohibited for this package because registration state is stored in a single repository, making it readily handled by a single element, so there is no compelling need for a subscription to fork.
The contact "id" attribute for same-URI contacts SHOULD (not MUST) be stable across notifications because SIP URI equality is non-transitive, making it impossible for a hash function to strictly satisfy a MUST-level requirement.
The default subscription duration is 3761 seconds (slightly longer than the default registration expiration of 3600 seconds) to avoid coupling of subscription and registration refresh cycles.
A notification MUST NOT be sent for the transition from terminated to init in the address-of-record state machine. For other transitions, whether a notification is sent is policy dependent.
A subscriber MUST NOT create multiple dialogs as a result of a single subscription request, since registration state resides in a single repository and forking provides no benefit.
All subscribers and notifiers MUST support the "application/reginfo+xml" format for NOTIFY bodies. If no Accept header is present in SUBSCRIBE, the default value is "application/reginfo+xml".
If the contact event attribute is "shortened", the "expires" attribute MUST be present, containing the seconds remaining until binding expiry. If the event is "probation", the "retry-after" attribute MUST be present with the retry delay in seconds.
It is RECOMMENDED that a user be allowed to subscribe to their own registration state, as this is useful when multiple devices represent a single user.
It is RECOMMENDED that the server not generate notifications for a single subscriber at a rate faster than once every 5 seconds, for congestion control reasons.
Notifications SHOULD contain information about contacts which have changed state rather than the full state of all contacts. However, notifications triggered by a fetch operation (SUBSCRIBE with Expires of 0) SHOULD contain full state of all contacts.
Registration information documents MUST be well-formed XML, SHOULD be valid, MUST be based on XML 1.0, and MUST be encoded using UTF-8. The namespace URI is urn:ietf:params:xml:ns:reginfo.
Subscriptions to registration state SHOULD be authenticated and authorized before approval. Authentication MAY be performed using digest, S/MIME, TLS, or other transport-specific mechanisms.
The "version" attribute in reginfo MUST be representable using a 32-bit integer, starts at 0, and increments by one per document sent to a subscriber within a subscription scope.
Subscribers maintain a per-registration table keyed by contact "id". On receiving a full-state document, all tables are flushed and repopulated. On partial state, existing tables are updated with changed contacts; if the version gap is more than 1, the subscriber SHOULD send a refresh request for full state.
The "contact" element has required attributes "id" (unique contact identifier), "state" ("active" or "terminated"), and "event" (registered, created, refreshed, shortened, expired, deactivated, probation, unregistered, or rejected). Optional attributes include "expires", "retry-after", "duration-registered", "q", "callid", and "cseq".
The event package name for SIP registration subscriptions is "reg". This value appears in the Event header of SUBSCRIBE and NOTIFY requests.
The reginfo XML document has a root "reginfo" element with required "version" (32-bit non-negative integer, incremented per document per subscription) and "state" ("full" or "partial") attributes, and contains zero or more "registration" sub-elements.
The "registration" element has required attributes: "aor" (the address-of-record URI), "id" (unique identifier stable across notifications within a subscription), and "state" ("init", "active", or "terminated"). Registration state for a single AOR MUST be in a single "registration" element.
This document registers the MIME type "application/reginfo+xml" for the registration information XML document format.
This document registers the SIP event package named "reg" in the SIP Event Package registry, as defined in RFC 3265.
This document registers the XML namespace urn:ietf:params:xml:ns:reginfo in the IETF XML Registry per BCP 81 (RFC 3688).
Registration information is sensitive and potentially private. Subscriptions SHOULD be authenticated and authorized per local policy. Notifications SHOULD be sent with confidentiality, message integrity, and subscriber identity verification, e.g., using SIPS URLs or S/MIME-protected bodies.
The address-of-record registration state machine has three states: init (no contacts registered), active (at least one contact bound), and terminated (last contact removed). The transition from terminated back to init MUST NOT ever be reported to a subscriber in a NOTIFY.
The per-contact state machine transitions from init to active via "registered" or "created" events, remains active on "refreshed" or "shortened" events, and moves to terminated via "expired", "deactivated", "probation", "unregistered", or "rejected" events.
The application/reginfo+xml MIME type is an XML document conforming to the XML schema defined in Section 5.4, with namespace urn:ietf:params:xml:ns:reginfo. File extensions are .rif or .xml.