In versions of Office Communications Server prior to Office Communications Server 2007, the server used a proprietary extension called End-point Identifier (EPID) to address a specific User Agent. Starting with Office Communications Server 2007, Globally Routable User Agent URI (GRUU) replaces EPID where possible. Office Communications Server 2007 R2 supports backwards compatibility with EPID, but to the degree possible, all new applications and clients use GRUU instead.

SIP Processing and GRUU

GRUU is an extension of Session Initiation Protocol (SIP) that is currently defined in an Internet draft at http://go.microsoft.com/fwlink/?LinkId=144418 . GRUU is specifically designed to implement reliable routing to a specific device for an end user. While a plain SIP URI (for example, janedoe@contoso.com), is a URI that refers to a user, GRUU is an URI that refers to a specific device.

GRUU can be used within multiple separate SIP dialogs to reach the same device. This works not just for client applications but also server applications (for example, the Mediation Server). The Office Communicator client running on each computer has its own GRUU that allows other applications to route messages specifically to that device.

GRUU is widely applied across the server to solve a variety of problems, including, but not limited to, Enterprise Voice call transfer or conference escalation scenarios, which require the ability to establish a new dialog with a specific endpoint in an existing dialog. GRUU is also used to address scenarios where one endpoint in a dialog is server based and, therefore, the To/From header in the dialog cannot be resolved to a specific endpoint. In the original SIP standard, it was not possible to construct an URI which could be routed to from anywhere (including the Internet) and reach a specific device or User Agent.

GRUU is a SIP URI that generally follows the form:

Copy Code
sip:<user>@<domain or
FQDN>;opaque=<private>;grid=<optional cookie>;gruu

For example:

Copy Code
sip:janedoe@contoso.com;opaque=user:epid:qIIWS2j5AVeD_HxnQdxmlwAA;gruu

The opaqueparameter, in combination with the address of record (AOR), makes this URI unique even though the prefix of the URI is still the standard user address. The gruuparameter specifies that this URI has all the properties of a GRUU and can be used within multiple separate SIP dialogs to reach the same user agent (device). The gridparameter is optional and is inserted by a user agent instance when the user agent uses the GRUU to route to itself. If the grid is included in a request, it helps the user agent instance determine the context of the request.

GRUU Creation

The server is responsible for creating a GRUU and returning it to the client through the SIP registration mechanism, if the client requests one at registration time. The GRUU returned to the client during the registration process is not managed or exposed to the administrator in any way. This process is handled entirely by the User Services module and can be inspected only by examining the registration database itself. The GRUU can be used anywhere you would typically use a URI.

How GRUU Is Used by Office Communications Server

GRUU is used by Office Communications Server in the following ways:

  • Office Communicator 2007 R2 clients request and receive a GRUU at registration time, which they will use in their Contact header for all subsequent SIP dialogs, such as Enterprise Voice calls, conferencing, and so on.

  • The Microsoft Office Live Meeting client uses one aspect of GRUU known as the "sip.instance" to create a unique identifier for each meeting client in a conference. This is necessary since the meeting client does not actually register with the server and therefore cannot obtain a genuine GRUU from the server for use in its SIP Contact header.

  • The client uses the GRUU of the Media Relay Authentication Server (MRAS) application (collocated with the A/V Conferencing Server) to send requests to the MRAS server, without necessarily having to know the FQDN of the server or be able to directly connect to the MRAS server. The client learns the MRAS applications GRUU through in-band provisioning. (The A/V Conferencing Server will use the MRAS application GRUU that is configured in WMI.)

  • Enterprise Voice endpoints send their Quality of Service (QoS) metric reports to a GRUU, which identifies the metrics collection point. (The Mediation Server and A/V Conferencing Server will use the collection point GRUU configured in WMI.)

  • The voicemail server (generally Exchange Unified Messaging) for a given user will be identified by a GRUU. The client will learn this GRUU through in-band provisioning (for itself) and through presence (for someone else). An application running on the server, ExUM Routing, resolves the GRUU to a specific Exchange Unified Messaging server that handles user voice mailboxes. An application can be written that will resolve the GRUU for non-Exchange voice mail systems.

  • Pools use GRUU to address other pools for batched subscriptions.

  • The Mediation Server uses GRUU to identify different outbound gateways that are connected to the Mediation Server. This allows Office Communications Server to send messages to a single FQDN/port on the Mediation Server and have the messages routed correctly to the proper outbound IP-PSTN gateway. (This GRUU is not exposed in any way to the client; it is used only for server-to-server communications.)

During conference creation, the client addresses the Focus Factory by using a GRUU that is composed in part by the meeting organizers SIP URI. This Focus Factory GRUU is sent to the client through in-band provisioning.