Registration Event Package Extension for Session Initiation Protocol (SIP) Globally Routable User Agent URIs (GRUUs)
Extracted elements (17)
A UA cannot always determine which temporary GRUUs are valid from REGISTER responses or RFC 3680 notifications alone. This extension provides the 'first-cseq' attribute so a UA can definitively identify and discard invalidated temporary GRUUs.
In 3GPP IMS, registering one AOR causes implicit registration of associated AORs, each requiring unique GRUUs. The REGISTER response only returns GRUUs for the explicitly registered AOR, so this extension allows the registrar to deliver GRUUs for all implicitly registered AORs via registration event notifications.
Registered contacts are frequently unreachable from outside the UA's domain (private addresses or firewall-blocked public addresses), making them useless for watchers. GRUUs are globally routable and represent additional registration state not included in RFC 3680 notifications, motivating this extension.
Subscribers unaware of this extension will, as required by RFC 3680, ignore the <pub-gruu> and <temp-gruu> elements, ensuring backward compatibility with existing RFC 3680 implementations.
A contact element will never have more than one <pub-gruu> and one <temp-gruu> child element, since a particular contact cannot be associated with more than one instance ID. Multiple contacts sharing the same instance ID will have identical <pub-gruu> and <temp-gruu> child elements.
A notifier MAY include the <temp-gruu> element when a contact has an instance ID and a temporary GRUU is associated with the AOR/instance ID. It SHOULD be included if the subscriber is authorized to register to the AOR, and SHOULD NOT be included otherwise unless explicitly configured.
A notifier SHOULD include the <pub-gruu> element when a contact has an instance ID and a public GRUU is associated with the AOR/instance ID combination. When present, <pub-gruu> MUST be positioned as a child of the <contact> element.
If the notifier includes <pub-gruu>, it MUST populate it with the public GRUU associated with the instance ID and AOR. If it includes <temp-gruu>, it MUST populate it with the most recently assigned temporary GRUU and MUST also set the 'cseq' attribute to the CSeq of the REGISTER that caused the oldest currently active temporary GRUU to be assigned.
When a subscriber receives a notification containing <pub-gruu>, any previously received public GRUU for the same AOR and instance ID MUST be discarded, as it will no longer function.
When a subscriber receives a notification containing <temp-gruu>, it MAY associate the temporary GRUU together with the 'callid' and 'cseq' attributes with the corresponding AOR and instance ID.
The UA MAY manage temporary GRUU validity by subscribing to the registration event package, retaining GRUUs from REGISTER responses, and updating its valid-GRUU set from notifications. It should remove temporary GRUUs with a different 'callid' attribute or a 'cseq' value less than the 'first-cseq' attribute of the <temp-gruu> element.
Two new XML elements are defined: <pub-gruu> containing the public GRUU URI, and <temp-gruu> containing the most recently assigned temporary GRUU URI plus a 'first-cseq' attribute identifying the oldest currently valid temporary GRUU. Both are optional children of the <contact> element in reginfo documents.
A new XML namespace URN is registered: 'urn:ietf:params:xml:ns:gruuinfo', per RFC 3688 guidelines, for the GRUU extension elements to the registration event package.
A new XML schema is registered with URI 'urn:ietf:params:xml:schema:gruuinfo', per RFC 3688 procedures, defining the <pub-gruu> and <temp-gruu> elements.
Including a GRUU in registration event notifications increases risk compared to an unreachable contact address by providing a reachable address. However, requests to a GRUU are always first processed by the servicing proxy, which may control access via white lists just as it does for the AOR, so disclosing a GRUU presents no more risk than disclosing the AOR itself.
Temporary GRUUs are intended to prevent correlation of a caller's identity. An adversary may attempt to confirm a conjectured caller's identity by sending a SUBSCRIBE to the registration event package to obtain their temporary GRUUs. It is recommended that the authorization policy restrict temporary GRUU delivery to subscribers who are authorized to register to the AOR.
The <pub-gruu> element has a single required 'uri' attribute of type xs:anyURI. The <temp-gruu> element extends pubGruu with a required 'first-cseq' attribute of type xs:unsignedLong, holding the CSeq of the REGISTER that created the oldest currently active temporary GRUU.