rfc-5628

Registration Event Package Extension for Session Initiation Protocol (SIP) Globally Routable User Agent URIs (GRUUs)

P. Kyzivat
date2009-10 streamIETF arearai wgsipping statusPROPOSED STANDARD pages14 canonicalhttps://www.rfc-editor.org/rfc/rfc5628 doi10.17487/RFC5628 errataview
RFC 3680 defines a Session Initiation Protocol (SIP) event package for registration state. This package allows a watcher to learn about information stored by a SIP registrar, including its registered contact. However, the registered contact is frequently unreachable and thus not useful for watchers. The Globally Routable User Agent URI (GRUU), defined in RFC 5627, is a URI that is capable of reaching a particular contact. However this URI is not included in the document format defined in RFC 3680. This specification defines an extension to the registration event package to include GRUUs assigned by the registrar. [STANDARDS-TRACK]

Extracted elements (17)

design-rationale §1

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.

sip, realtime

design-rationale §1

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.

sip, realtime

design-rationale §1

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.

sip, realtime

interoperability-note §6

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.

sip, realtime

normative-requirement §5 MUST NOT

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.

sip, realtime

normative-requirement §5 SHOULD NOT

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.

sip, realtime

normative-requirement §5 SHOULD

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.

sip, realtime

normative-requirement §5 MUST

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.

sip, realtime

normative-requirement §6 MUST

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.

sip, realtime

normative-requirement §6 MAY

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.

sip, realtime

protocol-element §6.1

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.

sip, realtime

protocol-element §3

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.

sip, realtime

registry §10.1

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.

sip, registry

registry §10.2

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.

sip, registry

security-consideration §11

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.

sip, security

security-consideration §11

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.

sip, security, privacy

wire-format §9

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.

sip, realtime