What is a GRUU? When is it needed?
GRUU stands for Globally Routable User-agent URI’s. Often there are situations where a single public user identity is common to many private user identities. In such cases, an incoming session request is ‘forked’ to the UE’s. This forking may be sequential or parallel.
Sometimes, there may be a need to avoid such forking of requests to multiple UE instances, and we might need to send a request to a particular UE instance. For such scenarios we need the support of GRUU’s.
When the use of GRUU’s become crucial?
As mentioned above, a GRUU enables routing to a specific UE instance. I am discussing below, various scenarios where a GRUU is needed, so that an IMS application may operate correctly.
1) Combinational Services:
Combinational services are created, when a CS call is added to an existing IMS session, or vice-versa. This CS call or IMS session is established between the same set of participants. (i.e. between UE1 and UE2. There can be no other UE). Now, let us take an example where UE1 is in a CS call with UE2. Now, UE1 needs to find out the IMS capabilities of UE2. For this purpose, UE1 will need to send a SIP OPTIONS request to the specific instance of UE2 with which UE1 is involved in a CS call with. If UE2 has multiple terminals (multiple private user identities) that have the same public user identity, then the response to the OPTIONS request may not be from the UE2 instance that is currently engaged with UE1 in a CS call. This response may come from some other instance (terminal) sharing the same public user identity. Therefore, UE1 will have the incorrect set of UE2 capabilities to add an IMS session. In such a scenario, a GRUU is needed to refer to the correct UE instance.
2) Voice Call Continuity (VCC):
Even in this case, there is a need that an IMS session is established with the same specific UE instance which is currently engaged in a CS call. Therfore, when a handover takes place, the CS call should not be handed over to a different UE instance which is registered with the same public user identity. For this purpose a GRUU is needed to point to the correct UE instance so that the call can be handed over from CS to IMS.
3) Presence service:
The presence server has to generate notifications about the state of the user. This state is represented by a Presence Information Document File (PIDF). Inside this PIDF document, the user is represented by a series of tuples. These tuples contain a field, where a URI (public user identity) of the user is stored. When the watcher will subscribe to the presence state of a particular user who has multiple private user identities sharing the same public user identity, then the URI in the PIDF should route to that specific UE instance. This UE instance can be represented by a GRUU.
A GRUU set corresponds to a unique instance ID and public user identity. Therefore, it can refer to a specific UE instance. This is in contrast to the AOR (Address Of Record) mechanism, which refers to a group of UEs, rather than a specific UE.