3.4.4.1 User Agent Operation

To use the GRUU-based endpoint identification mechanism defined in this section, a user agent MUST use the GRUU that it previously obtained, as described in section 3.4.3.1, to populate the URI in the Contact header field of the messages which would otherwise carry the Contact header field because of SIP protocol requirements. [RFC3261] requires the addition of the Contact header field to the dialog creating the requests. Although [RFC3261] also requires the presence of a Contact header field in the REGISTER request, the GRUU MUST NOT be used to populate it.

When using GRUU as a URI in the Contact header field, the user agent can also add a grid URI parameter to the Contact header field with a value that satisfies the syntax defined in section 2.2.2. As noted in [IETFDRAFT-OUGRUAUSIP-10] section 8.1.1, the user agent can manufacture an infinite supply of GRUUs, each of which differs by the value of the grid parameter. When a user agent receives a request that was sent to the GRUU, it is able to tell which GRUU was invoked by looking at the grid parameter.

When sending a request that contains a GRUU in the Contact header field, the user agent compliant with this protocol MUST forward it to a SIP registrar or proxy in the same domain as the one from which the user agent obtained the GRUU.

If the same user agent also uses the EPID mechanism, as described in section 3.2, and it uses the registration procedure defined in [MS-SIPREGE] to obtain the GRUU, it MUST insert the same epid parameter value into the From header field of every request as the one it used when performing the registration.