Network Working Group                                       J. Rosenberg
Request for Comments: 5627                                 Cisco Systems
Category: Standards Track                                   October 2009
     Obtaining and Using Globally Routable User Agent URIs (GRUUs)
                in the Session Initiation Protocol (SIP)



Several applications of the Session Initiation Protocol (SIP) require a user agent (UA) to construct and distribute a URI that can be used by anyone on the Internet to route a call to that specific UA instance. A URI that routes to a specific UA instance is called a Globally Routable UA URI (GRUU). This document describes an extension to SIP for obtaining a GRUU from a registrar and for communicating a GRUU to a peer within a dialog.

セッション開始プロトコル(SIP)のいくつかのアプリケーションは、ルートにインターネット上の誰もが、その特定のUAインスタンスへの呼び出しを使用することができるURIを構築し、配布するユーザエージェント(UA)を必要とします。特定UAインスタンスへのルートがグローバルにルーティング可能なUA URIと呼ばれるURI(GRUU)。この文書では、レジストラからGRUUを取得するために、ダイアログ内のピアにGRUUを通信するためのSIPの拡張を記述しています。

Status of This Memo


This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

この文書は、インターネットコミュニティのためのインターネット標準トラックプロトコルを指定し、改善のための議論と提案を要求します。このプロトコルの標準化状態と状態への「インターネット公式プロトコル標準」(STD 1)の最新版を参照してください。このメモの配布は無制限です。

Copyright Notice


Copyright (c) 2009 IETF Trust and the persons identified as the document authors. All rights reserved.

著作権(C)2009 IETF信託とドキュメントの作成者として特定の人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents ( in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the BSD License.

この文書では、BCP 78と、この文書の発行日に有効なIETFドキュメント(に関連IETFトラストの法律の規定に従うものとします。彼らは、この文書に関してあなたの権利と制限を説明するように、慎重にこれらの文書を確認してください。コードコンポーネントは、トラスト法規定のセクション4.eに記載されており、BSDライセンスで説明したように、保証なしで提供されているよう簡体BSDライセンスのテキストを含める必要があり、この文書から抽出されました。

This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s) controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate it into languages other than English.


Table of Contents


   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  5
   3.  Overview of Operation  . . . . . . . . . . . . . . . . . . . .  5
     3.1.  Structure of GRUUs . . . . . . . . . . . . . . . . . . . .  5
       3.1.1.  GRUUs That Expose the Underlying AOR . . . . . . . . .  6
       3.1.2.  GRUUs That Hide the Underlying AOR . . . . . . . . . .  6
     3.2.  Obtaining a GRUU . . . . . . . . . . . . . . . . . . . . .  7
     3.3.  Using a GRUU . . . . . . . . . . . . . . . . . . . . . . .  8
     3.4.  Dereferencing a GRUU . . . . . . . . . . . . . . . . . . .  8
   4.  User Agent Behavior  . . . . . . . . . . . . . . . . . . . . .  9
     4.1.  Generating a REGISTER Request  . . . . . . . . . . . . . .  9
     4.2.  Learning GRUUs from REGISTER Responses . . . . . . . . . . 10
     4.3.  Constructing a Self-Made GRUU  . . . . . . . . . . . . . . 11
     4.4.  Using One's Own GRUUs  . . . . . . . . . . . . . . . . . . 12
       4.4.1.  Considerations for Multiple AORs . . . . . . . . . . . 13
     4.5.  Dereferencing a GRUU . . . . . . . . . . . . . . . . . . . 14
     4.6.  Rendering GRUUs on a User Interface  . . . . . . . . . . . 14
   5.  Registrar Behavior . . . . . . . . . . . . . . . . . . . . . . 14
     5.1.  Processing a REGISTER Request  . . . . . . . . . . . . . . 14
     5.2.  Generating a REGISTER Response . . . . . . . . . . . . . . 16
     5.3.  Timing Out a Registration  . . . . . . . . . . . . . . . . 16
     5.4.  Creation of a GRUU . . . . . . . . . . . . . . . . . . . . 17
     5.5.  Registration Event Support . . . . . . . . . . . . . . . . 19
   6.  Proxy Behavior . . . . . . . . . . . . . . . . . . . . . . . . 19
     6.1.  Request Targeting  . . . . . . . . . . . . . . . . . . . . 19
     6.2.  Record-Routing . . . . . . . . . . . . . . . . . . . . . . 21
   7.  Grammar  . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
   8.  Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 23
   9.  Example Call Flow  . . . . . . . . . . . . . . . . . . . . . . 24
   10. Security Considerations  . . . . . . . . . . . . . . . . . . . 29
     10.1. Outside Attacks  . . . . . . . . . . . . . . . . . . . . . 29
     10.2. Inside Attacks . . . . . . . . . . . . . . . . . . . . . . 30
     10.3. Privacy Considerations . . . . . . . . . . . . . . . . . . 31
   11. IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 33
     11.1. Header Field Parameter . . . . . . . . . . . . . . . . . . 33
     11.2. URI Parameter  . . . . . . . . . . . . . . . . . . . . . . 33
     11.3. SIP Option Tag . . . . . . . . . . . . . . . . . . . . . . 33
   12. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 34
   13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 34
     13.1. Normative References . . . . . . . . . . . . . . . . . . . 34
     13.2. Informative References . . . . . . . . . . . . . . . . . . 35
   Appendix A.  Example GRUU Construction Algorithms  . . . . . . . . 37
     A.1.  Public GRUU  . . . . . . . . . . . . . . . . . . . . . . . 37
     A.2.  Temporary GRUU . . . . . . . . . . . . . . . . . . . . . . 37
   Appendix B.  Network Design Considerations . . . . . . . . . . . . 39
1. Introduction
1. はじめに

In the Session Initiation Protocol (SIP), RFC 3261 [1], the basic unit of reference is the Address of Record (AOR). However, in SIP systems a single user can have a number of user agents (handsets, softphones, voicemail accounts, etc.) that are all referenced by the same AOR. There are a number of contexts in which it is desirable to have an identifier that addresses a single user agent rather than the group of user agents indicated by an AOR.

セッション開始プロトコル(SIP)、RFC 3261 [1]、基準の基本的な単位は、レコード(AOR)のアドレスです。しかしながら、SIPシステムでは、単一のユーザが全て同じAORによって参照されるユーザエージェント(携帯電話、ソフトフォン、ボイスメール・アカウントなど)の数を有することができます。単一のユーザエージェントではなく、AORが示すユーザエージェントのグループに対処する識別子を有することが望まれる状況は数多くあります。

As an example, consider a blind transfer application (see RFC 5589 [19]). User A is talking to user B. User A wants to transfer the call to user C. So, user A sends a REFER to user C. That REFER looks like, in part:

一例として、(RFC 5589 [19]参照)ブラインド転送アプリケーションを考えます。 :ユーザーAは、BユーザーAがユーザーC.そうにコールを転送したい、利用者Aは、部分的に、のようなルックスをREFERユーザーC.を参照して送信し、ユーザーに話しています

       REFER SIP/2.0
       Refer-To: (URI that identifies B's UA)

The Refer-To header field needs to contain a URI that can be used by user C to place a call to user B. However, this call needs to route to the specific UA instance that user B is using to talk to user A. If it doesn't, the transfer service will not execute properly. For example, if A provides C with B's AOR, the call might be routed to B's voicemail rather than B's current handset.

参照の-にフィールドをヘッダしかしながら、このコールがユーザBがいる場合、ユーザAに話を使用している特定のUAインスタンスにルーティングする必要があるユーザBに電話をかけるためにユーザCが使用することができるURIを含む必要がありますそれは、転送サービスが正しく実行されませんしません。 AはBのAORとCを提供した場合、コールはBのボイスメールではなく、Bの現在の携帯電話にルーティングされる可能性があります。

In order to enable this functionality, user B provides an instance-specific URI to user A in the Contact header of their SIP exchange. This URI refers to the user agent B is currently using, and it can be dereferenced by C's user agent. Because user B doesn't know in advance who user A will transfer the call to, the URI has to be usable by anyone.


Many current clients attempt to meet the need for an instance-specific identifier by using explicit IP addresses in the values they provide in the Contact header field. However, this interacts poorly with NATs and firewalls, and as a practical matter, these URIs cannot be used by arbitrary external clients. Usage of hostnames has proven problematic for similar reasons. In addition, many SIP clients do not have or cannot obtain a hostname for themselves at all.


This specification describes a mechanism for providing a unique user-agent identifier which is still globally routable. This identifier is called a Globally Routable User Agent (UA) URI (GRUU).


2. Terminology

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [4].

この文書のキーワード "MUST"、 "MUST NOT"、 "REQUIRED"、、、、 "べきではない" "べきである" "ないもの" "ものとし"、 "推奨"、 "MAY"、および "OPTIONAL" はありますRFC 2119に記載されるように解釈される[4]。

This specification defines the following additional terms:


contact: The term "contact", when used in all lowercase, refers to a URI that is bound to an AOR and GRUU by means of a registration. A contact is usually a SIP URI, and is bound to the AOR and GRUU through a REGISTER request by appearing as a value of the Contact header field. The contact URI identifies a specific UA.

連絡先:すべて小文字で使用される用語「接触」は、登録によってAORとGRUUにバインドされているURIを指します。接触は、通常、SIP URIであり、Contactヘッダーフィールドの値として現れることによってREGISTERリクエストを通してAORとGRUUに結合されます。連絡先URIは、特定のUAを識別します。

remote target: The term "remote target" refers to a URI that a user agent uses to identify itself for receipt of both mid-dialog and out-of-dialog requests. A remote target is established by placing a URI in the Contact header field of a dialog-forming request or response and is updated by target refresh requests or responses.


Contact header field: The term "Contact header field", with a capitalized C, refers to the header field that can appear in REGISTER requests and responses, redirects, or dialog-creating requests and responses. Depending on the semantics, the Contact header field sometimes conveys a contact, and sometimes conveys a remote target.


3. Overview of Operation

The basic idea behind a GRUU is simple. GRUUs are issued by SIP domains and always route back to a proxy in that domain. In turn, the domain maintains the binding between the GRUU and the particular UA instance. When a GRUU is dereferenced while sending a SIP request, that request arrives at the proxy. It maps the GRUU to the contact for the particular UA instance, and sends the request there.

GRUUの背後にある基本的な考え方は単純です。 GRUUsは、そのドメイン内のプロキシに戻っていつものルートをSIPドメインによって発行されています。次に、ドメインは、GRUUおよび特定のUAのインスタンス間の結合を維持します。 SIPリクエストを送信中にGRUUが逆参照された場合、その要求は、プロキシに到着します。これは、特定のUAインスタンスの連絡先にGRUUをマップし、そこにリクエストを送信します。

3.1. Structure of GRUUs
3.1. GRUUsの構造

A GRUU is a SIP URI that has two properties:

GRUUは、2つのプロパティを持つSIP URIです。

o It routes to a specific UA instance.


o It can be successfully dereferenced by any user agent on the Internet, not just ones in the same domain or IP network as the UA instance to which the GRUU points.


In principle, a GRUU can be constructed in any way the domain chooses, as long as it meets the criteria above. However, all GRUUs contain the "gr" URI parameter (either with or without a value), so that a recipient of a GRUU can tell that it has these two properties.

原則として、GRUUは、それが上記の基準を満たしているとして、ドメインを選択した任意の方法で構築することができます。 GRUUの受信者は、これらの2つのプロパティを持っていることを伝えることができるようにしかし、すべてのGRUUsは、(または値なしのいずれか)「GR」URIパラメータが含まれています。

In practice, there are two different types of GRUUs:


1. GRUUs that expose the underlying AOR
根本的なAORを公開1. GRUUs
2. GRUUs that hide the underlying AOR
根本的なAORを隠す2. GRUUs
3.1.1. GRUUs That Expose the Underlying AOR
3.1.1. 基礎となるAORを公開GRUUs

In many cases, it is desirable to construct the GRUU in such a way that the mapping to the AOR is apparent. For example, many user agents retain call logs, which keep track of incoming and outgoing call attempts. If the UA had made a call to a GRUU (perhaps as a consequence of a transfer request), the call log will contain the GRUU. Since the call log is rendered to the user, it would be useful to be able to present the user with the AOR instead, since the AOR is meaningful to users as an identifier.

多くの場合、AORへのマッピングは明らかであるようにGRUUを構築することが望ましいです。例えば、多くのユーザエージェントは、着信および発信の試行を追跡するコールログを保持します。 UAは(おそらく転送要求の結果として)GRUUへの呼び出しをしていた場合は、コールログは、GRUUが含まれます。通話履歴をユーザにレンダリングされるので、AORは、識別子としてユーザに意味があるので、代わりに、AORをユーザに提示することができることは有用であろう。

This type of GRUU is called a public GRUU. It is constructed by taking the AOR, and adding the "gr" URI parameter with a value chosen by the registrar in the domain. The value of the "gr" URI parameter contains a representation of the UA instance. For instance, if the AOR was "", the GRUU might be:

GRUUのこのタイプは、公開GRUUと呼ばれています。それは、AORを取って、そしてドメインのレジストラによって選択された値を持つ「GR」URIパラメータを追加することによって構築されます。 「GR」URIパラメータの値は、UAインスタンスの表現を含みます。 AORは、「」であった場合例えば、GRUUは次のようになります。;gr=kjh29x97us97d; GR = kjh29x97us97d

If a UA removes the "gr" URI parameter, the result is the AOR. Since many systems ignore unknown parameters anyway, a public GRUU will "look" like the AOR to those systems.


3.1.2. GRUUs That Hide the Underlying AOR
3.1.2. 基礎となるAORを隠すGRUUs

In other cases, it is desirable to construct a GRUU that obfuscates the AOR such that it cannot be extracted by a recipient of the GRUU. Such a GRUU is called a temporary GRUU. The most obvious reason to do this is to protect the user's privacy. In such cases, the GRUU can have any content, provided that it meets the requirements in Sections 3.1 and 5.4, and the AOR cannot be readily determined from the GRUU. The GRUU will have the "gr" URI parameter, either with or without a value. In order to avoid creating excessive state in the registrar, it is often desirable to construct cryptographically protected "stateless" GRUUs using an algorithm like that described in Appendix A.

他の場合には、GRUUの受信者によって抽出することができないようなAORを難読化GRUUを構築することが望ましいです。このようなGRUUは、一時的なGRUUと呼ばれています。これを行うための最も明白な理由は、ユーザーのプライバシーを保護することです。このような場合、GRUUは、任意のコンテンツを有することができ、それはセクション3.1および5.4での要件を満たし、そしてAORが容易GRUUから決定することができないことを条件とします。 GRUUは、値の有無にかかわらずどちらか、「GR」URIパラメータを持つことになります。レジストラに過度の状態を作成しないようにするためには、付録Aに記載されているようなアルゴリズムを使用して、暗号で保護「ステートレス」GRUUsを構築することが望ましい場合が多いです

An example of a temporary GRUU constructed using a stateful algorithm would be:

一時的なGRUUの例は以下のようになりステートフルなアルゴリズムを使用して構築しました:;gr; GR

3.2. Obtaining a GRUU
3.2. GRUUを取得

A user agent can obtain a GRUU in one of several ways:


o As part of its REGISTER transaction.


o By constructing one locally, using the IP address or hostname of the user agent instance as the domain part of the URI. These are called self-made GRUUs, and are only really GRUUs when constructed by UAs that know they are globally reachable using their IP address or hostname.


o Via some locally specified administrative mechanism.


A UA that wants to obtain a GRUU via its REGISTER request does so by providing an instance ID in the "+sip.instance" Contact header field parameter, defined in RFC 5626 [14]. For example:

そのREGISTER要求を介してGRUUを得たいUAは、RFC 5626 [14]で定義された「+ sip.instance」ContactヘッダーフィールドパラメータでインスタンスIDを提供することによってそうします。例えば:

        Contact: <sip:callee@>

The registrar detects this header field parameter and provides two GRUUs in the REGISTER response. One of these is a temporary GRUU, and the other is the public GRUU. These two GRUUs are returned in the "temp-gruu" and "pub-gruu" Contact header field parameters in the response, respectively. For example:


<allOneLine> Contact: <sip:callee@> ;pub-gruu=";gr=urn: uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" ;temp-gruu="sip:tgruu.7hs==;gr" ;+sip.instance="<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>" ;expires=3600 </allOneLine>

<allOneLine>連絡先:<SIP:callee@>;パブ-GRUU = "一口;グラム= URN:UUID:f81d4fae-7dec-11D0-a765-00a0c91e6bf6";一時-GRUU =」 SIP:tgruu.7hs ==; GR」; + sip.instance = "<URN:UUID:f81d4fae-7dec-11D0-a765-00a0c91e6bf6>"; = 3600 </ allOneLine>満了します

Note that the <allOneLine> tag is used as defined in [17].


When a user agent refreshes this registration prior to its expiration, the registrar will return back the same public GRUU, but will create a new temporary GRUU. Despite the fact that each refresh provides the UA with a new temporary GRUU, all of the temporary GRUUs learned from previous REGISTER responses during the lifetime of a contact remain valid as long as (1) a contact with that instance ID remains registered, and (2) the UA doesn't change the Call-ID in its REGISTER request compared to previous ones for the same reg-id [14]. When the last contact for the instance expires, either through explicit de-registration or timeout, all of the temporary GRUUs become invalidated. Similarly, if a register refresh for a contact (or, if RFC 5626 is being used, for a reg-id) changes the Call-ID compared to previous register refreshes, all of the previous temporary GRUUs are invalidated. When the user agent later creates a new registration with the same instance ID, the public GRUU is the same. The temporary GRUU will be new (as it is with refreshes), and it will be the only valid temporary GRUU for the instance until the next refresh, at which point a second one becomes valid too. Consequently, temporary GRUUs "accumulate" during the lifetime of a registration.

ユーザーエージェントは、その満了前にこの登録をリフレッシュすると、レジストラは、同じ公開GRUUをバック返しますが、新しい一時GRUUを作成します。各リフレッシュは、新しい一時GRUUとUAを提供しているという事実にもかかわらず、一時的GRUUsのすべてが、接触の存続期間中に、以前のREGISTER応答から学んだが(1)そのインスタンスのIDとの接触が登録されたまま限り有効のまま、および( 2)UAは、同じREG-ID [14]の前のものと比較してREGISTERリクエストのCall-IDを変更しません。たとえば、最後の接触が経過すると、いずれかの明示的な登録解除またはタイムアウトによって、一時的GRUUsのすべてが無効化になります。 (RFC 5626は、REG-IDのために、使用されている場合、または、)連絡先のレジスタの更新は、前のレジスタの更新に比べコールIDを変更した場合、同様に、以前の一時的GRUUsの全てが無効化されます。ユーザエージェントは、後で同じインスタンスIDを持つ新規登録を作成すると、公衆GRUUは同じです。一時的なGRUUは、(それがリフレッシュであるとして)新しいなり、それが二番目があまりにも有効になる時点で、次のリフレッシュまでのインスタンスに対してのみ有効な一時GRUUとなります。その結果、一時的GRUUsは、登録の有効期間中に「蓄積します」。

3.3. Using a GRUU
3.3. GRUUを使用します

Once a user agent obtains GRUUs from the registrar, it uses them in several ways. First, it uses them as the contents of the Contact header field in non-REGISTER requests and responses that it emits (for example, an INVITE request and 200 OK response). According to RFC 3261 [1], the Contact header field is supposed to contain a URI that routes to that user agent. Prior to this specification, there hasn't been a way to really meet that requirement. The user agent would use one of its temporary GRUUs for anonymous calls, and use its public GRUU otherwise.

ユーザーエージェントは、レジストラからGRUUsを取得したら、それはいくつかの方法でそれらを使用しています。まず、それは(例えば、要求200 OKレスポンスをINVITE)が発する非REGISTER要求および応答のContactヘッダフィールドの内容としてそれらを使用します。 RFC 3261によれば、[1]、Contactヘッダーフィールドは、URIそのユーザエージェントへの経路を含むと考えられます。この仕様に先立ち、実際にその要件を満たすための方法がなかったです。ユーザーエージェントは、匿名のコールのために一時GRUUsのいずれかを使用し、それ以外の場合はその公開GRUUを使用します。

Second, the UA can use the GRUU in any other place it needs to use a URI that resolves to itself, such as a webpage.


3.4. Dereferencing a GRUU
3.4. GRUUを間接参照

Because a GRUU is simply a URI, a UA dereferences it in exactly the same way as it would any other URI. However, once the request has been routed to the appropriate proxy, the behavior is slightly different. The proxy will map the GRUU to the AOR and determine the set of contacts that the particular UA instance has registered. The GRUU is then mapped to those contacts, and the request is routed towards the UA.

GRUUは、単にURIであるため、UAは、他のURIそれと同じようにまったく同じ方法でそれを逆参照します。要求が適切なプロキシにルーティングされた後しかし、動作が若干異なっています。プロキシは、AORにGRUUをマップし、特定のUAインスタンスが登録された連絡先のセットを決定します。 GRUUはその後、それらの連絡先にマッピングされ、要求がUAに向けてルーティングされます。

4. User Agent Behavior

This section defines the normative behavior for user agents.


4.1. Generating a REGISTER Request
4.1. REGISTER要求の作成

When a UA compliant to this specification generates a REGISTER request (initial or refresh), it MUST include the Supported header field in the request. The value of that header field MUST include "gruu" as one of the option tags. This alerts the registrar for the domain that the UA supports the GRUU mechanism.


Furthermore, for each contact for which the UA desires to obtain a GRUU, the UA MUST include a "sip.instance" media feature tag (see RFC 5626 [14]) as a UA characteristic (see [7]), whose value MUST be the instance ID that identifies the UA instance being registered. Each such Contact header field SHOULD NOT contain a "pub-gruu" or "temp-gruu" header field. The contact URI MUST NOT be equivalent, based on the URI equality rules in RFC 3261 [1], to the AOR in the To header field. If the contact URI is a GRUU, it MUST NOT be a GRUU for the AOR in the To header field.

また、UAは、GRUUを取得することを希望する各コンタクトのために、UAは、UA特性として「sip.instance」メディア特徴タグは、(RFC 5626 [14]参照)、その値がなければならない([7]を参照)を含める必要があります登録されるUAインスタンスを識別するインスタンスIDです。そのようなそれぞれのContactヘッダーフィールドは、「パブ-GRUU」または「TEMP-GRUU」ヘッダフィールドを含むべきではありません。接触URIは、RFC 3261 [1]にAORにToヘッダーフィールドにおけるURI平等ルールに基づいて、同等であるはずがありません。連絡先URIがGRUUであれば、それはToヘッダーフィールドでAORのためにGRUUにすることはできません。

As in RFC 3261 [1], the Call-ID in a REGISTER refresh SHOULD be identical to the Call-ID used to previously register a contact. With GRUU, an additional consideration applies. If the Call-ID changes in a register refresh, the server will invalidate all temporary GRUUs associated with that UA instance; the only valid one will be the new one returned in that REGISTER response. When RFC 5626 is in use, this rule applies to the reg-ids: If the Call-ID changes for the registration refresh for a particular reg-id, the server will invalidate all temporary GRUUs associated with that UA instance as a whole. Consequently, if a UA wishes its previously obtained temporary GRUUs to remain valid, it MUST utilize the same Call-ID in REGISTER refreshes. However, it MAY change the Call-ID in a refresh if invalidation is the desired objective.

RFC 3261のように、[1]、REGISTERリフレッシュのCall-IDは、以前の接触を登録するために使用されるコールIDと同一でなければなりません。 GRUUでは、追加の考慮事項が適用されます。レジスタリフレッシュのCall-IDが変更された場合、サーバーはそのUAインスタンスに関連付けられたすべての一時GRUUsが無効になります。唯一有効なものは、REGISTER応答で返された新しいものになります。 RFC 5626が使用されている場合は、このルールは、REG-IDに適用されます。特定のREG-IDの登録更新のためのコールIDが変更された場合、サーバーは、全体としてそのUAインスタンスに関連付けられたすべての一時GRUUsが無効になります。その結果、UAが有効なままにその以前に取得した一時的なGRUUsを希望する場合、それはREGISTERで同じCall-IDを利用しなければなりません更新されます。無効化は、所望の目的である場合は、それがリフレッシュ中のCall-IDを変更することがあります。

Note that, if any dialogs are in progress that utilize a temporary GRUU as a remote target, and a UA performs a registration refresh with a change in Call-ID, those temporary GRUUs become invalid, and the UA will not be reachable for subsequent mid-dialog messages.


If a UA instance is trying to register multiple contacts for the same instance for the purposes of redundancy, it MUST use the procedures defined in RFC 5626 [14].

UAインスタンスは冗長性の目的のために同じインスタンスに対して複数の連絡先を登録しようとしている場合は、RFC 5626 [14]で定義された手順を使用しなければなりません。

A UA utilizing GRUUs can still perform third-party registrations and can include contacts that omit the "+sip.instance" Contact header field parameter.

UA利用GRUUsはまだサードパーティの登録を行うことができ、「+ sip.instance」Contactヘッダーフィールドパラメータを省略連絡先を含めることができます。

If a UA wishes to guarantee that the REGISTER request is not processed unless the domain supports and uses this extension, it MAY include a Require header field in the request with a value that contains the "gruu" option tag. This is in addition to the presence of the Supported header field, also containing the "gruu" option tag. The use of Proxy-Require is not necessary and is NOT RECOMMENDED.

UAは、ドメインをサポートしており、この拡張機能を使用しない限り、REGISTERリクエストが処理されないことを保証したい場合、それは「GRUU」オプションタグを含む値を持つリクエストのヘッダフィールドを要求含むかもしれません。これはまた、「GRUU」オプションタグを含む、サポートされているヘッダフィールドの存在に加えています。 -必要とするプロキシを使用することは必要ではなく、推奨されません。

4.2. Learning GRUUs from REGISTER Responses
4.2. REGISTER応答からGRUUsを学びます

If the REGISTER response is a 2xx, each Contact header field that contains the "+sip.instance" Contact header field parameter can also contain a "pub-gruu" and "temp-gruu" Contact header field parameter. These header field parameters convey the public and a temporary GRUU for the UA instance, respectively. A UA MUST be prepared for a Contact header field to contain just a "pub-gruu", just a "temp-gruu", neither, or both. The temporary GRUU will be valid for the duration of the registration (that is, through refreshes), while the public GRUU persists across registrations. The UA will receive a new temporary GRUU in each successful REGISTER response, while the public GRUU will typically be the same. However, a UA MUST be prepared for the public GRUU to change from a previous one, since the persistence property is not guaranteed with complete certainty. If a UA changed its Call-ID in this REGISTER request compared to a previous REGISTER request for the same contact or reg-id, the UA MUST discard all temporary GRUUs learned through prior REGISTER responses. A UA MAY retain zero, one, some, or all of the temporary GRUUs that it is provided during the time over which at least one contact or reg-id remains continuously registered. If a UA stores any temporary GRUUs for use during its registration, it needs to be certain that the registration does not accidentally lapse due to clock skew between the UA and registrar. Consequently, the UA MUST refresh its registration such that the REGISTER refresh transaction will either complete or timeout prior to the expiration of the registration. For default transaction timers, this would be at least 32 seconds prior to expiration, assuming the registration expiration is larger than 64 seconds. If the registration expiration is less than 64 seconds, the UA SHOULD refresh its registration halfway prior to expiration.

REGISTER応答が2XX、また、「パブ-GRUU」と「TEMP-GRUU」Contactヘッダーフィールドパラメータを含むことができ、「+ sip.instance」Contactヘッダーフィールドパラメータを含む各Contactヘッダーフィールドである場合。これらのヘッダーフィールドのパラメータは、それぞれ、公共及びUAインスタンスの一時的GRUUを伝えます。 UAは、単に「パブ-GRUU」、ただ「TEMP-GRUU」、どちらも、あるいはその両方を含むようにContactヘッダーフィールドのために準備しなければなりません。公衆GRUUが登録渡って持続している間、一時的なGRUUは、登録(つまりリフレッシュを通じて、である)の期間中に有効になります。公衆GRUUは、一般的に同じになりながら、UAは、各成功したREGISTER応答に新しい一時GRUUを受信します。永続プロパティは、完全な確信を持って保証されていないので、UAは、以前のものから変更するには、公開GRUUのために準備しなければなりません。 UAは、同じ連絡先またはREG-idの前のREGISTERリクエストに比べて、このREGISTERリクエストにそのコールIDを変更した場合、UAはすべての一時GRUUs前REGISTER応答を通じて学習捨てなければなりません。 UAは、保持することができる、ゼロ、1つ、いくつか、またはそれが少なくとも一つの接触又はREG-IDを連続的に登録されたままれる時間の間に提供される一時GRUUsの全。 UA店の登録時に使用するために一時的なGRUUs場合は、登録は偶然によるUAとレジストラ間のクロック・スキューに失効しないことを確実にする必要があります。したがって、UAはその登録を更新する必要がありますようにREGISTERリフレッシュ取引するか、完全または登録の満了する前にタイムアウト。デフォルトのトランザクションタイマーの場合、これは、登録の有効期限が64秒よりも大きいと仮定すると、有効期限前に、少なくとも32秒になります。登録の有効期限が64未満秒である場合、UAは途中で有効期限前にその登録を更新する必要があります。

Note that, when [14] is in use, and the UA is utilizing multiple flows for purposes of redundancy, the temporary GRUUs remain valid as long as at least one flow is registered. Thus, even if the registration of one flow expires, the temporary GRUUs learned previously remain valid.


In cases where registrars forcefully shorten registration intervals, the registration event package, RFC 3680 [24], is used by user agents to learn of these changes. A user agent implementing both RFC 3680 [24] and GRUU MUST also implement the extensions to RFC 3680 [24] for

レジストラは、強制的に登録間隔を短くする場合には、登録イベントパッケージ、RFC 3680 [24]は、これらの変化を知るためにユーザエージェントによって使用されます。両方のRFC 3680 [24]及びGRUUはまた、RFC 3680 [24]のための拡張機能を実装しなければなりませんを実現するユーザエージェント

conveying information on GRUU, as defined in RFC 5628 [28], as these are necessary to keep the set of temporary GRUUs synchronized between the UA and the registrar. More generally, the utility of temporary GRUUs depends on the UA and registrar being in sync on the set of valid temporary GRUUs at any time. Without support of RFC 3680 [24] and its extension for GRUU, the client will remain in sync only as long as it always re-registers well before the registration expiration. Besides forceful de-registrations, other events (such as network outages, connection failures, and short refresh intervals) can lead to potential inconsistencies in the set of valid temporary GRUUs. For this reason, it is RECOMMENDED that a UA that utilizes temporary GRUUs implement RFC 3680 [24] and RFC 5628 [28].

これらは、UAおよびレジストラの間で同期一時GRUUsのセットを維持するために必要であるように、RFC 5628 [28]で定義されるように、GRUUの情報を伝えます。より一般的には、一時的GRUUsのユーティリティはUAに依存し、任意の時点で有効な一時GRUUsのセットに同期しているレジストラ。 RFC 3680 [24]とGRUUのためにその拡張のサポートがなければ、クライアントは限りそれは常にうまく登録の有効期限の前に再登録と同期のままになります。強力デ登録のほかに、(そのようなネットワークの停止、接続障害、および短いリフレッシュ間隔など)他のイベントは、有効な一時GRUUsのセットの潜在的な不整合が生じることができます。このような理由から、一時的なGRUUsを利用UAは、RFC 3680 [24]およびRFC 5628 [28]を実装することをお勧めします。

A non-2xx response to the REGISTER request has no impact on any existing GRUUs previously provided to the UA. Specifically, if a previously successful REGISTER request provided the UA with a GRUU, a subsequent failed request does not remove, delete, or otherwise invalidate the GRUU.


The user and host parts of the GRUU learned by the UA in the REGISTER response MUST be treated opaquely by the UA. That is, the UA MUST NOT modify them in any way. A UA MUST NOT modify or remove URI parameters it does not recognize. Furthermore, the UA MUST NOT add, remove, or modify URI parameters relevant for receipt and processing of request at the proxy, including the transport, lr, maddr, ttl, user, and comp (see RFC 3486 [25]) URI parameters. The other URI parameter defined in RFC 3261 [1], method, would not typically be present in a GRUU delivered from a registrar, and a UA MAY add a method URI parameter to the GRUU before handing it out to another entity. Similarly, the URI parameters defined in RFC 4240 [26] and RFC 4458 [27] are meant for consumption by the UA. These would not be included in the GRUU returned by a registrar and MAY be added by a UA wishing to provide services associated with those URI parameters.

REGISTER応答にUAによって学習されたGRUUのユーザーとホスト部分は、UAによって不透明に処理しなければなりません。つまり、UAは、どのような方法でそれらを変更してはいけません。 UAは、それが認識されないURIパラメータを変更したり、削除してはいけません。また、UAは、追加、削除、または輸送、LR、MADDR、TTL、ユーザ、およびCOMP(参照RFC 3486 [25])、URIパラメータを含む、プロキシで受信および要求の処理に関連するURIパラメータを変更してはいけません。 RFC 3261で定義された他のURIパラメータは、[1]、この方法は、典型的には、レジストラから送達GRUUに存在しないであろう、そしてUAは別のエンティティにそれを渡す前にGRUUにメソッドURIのパラメータを追加することもできます。同様に、URIパラメータは、RFC 4240 [26]およびRFC 4458 [27]で定義されるが、UAによる消費のために意図されています。これらは、レジストラによって返されたGRUUには含まれないであろうと、それらのURIパラメータに関連付けられたサービスを提供したいUAによって追加される場合があります。

Note, however, that should another UA dereference the GRUU, the parameters will be lost at the proxy when the Request-URI is translated into the registered contact, unless some other means is provided for the attributes to be delivered to the UA. Mechanisms for such delivery are currently the subject of future standardization activity (see "Delivery of Request-URI Targets to User Agents" [29]).


4.3. Constructing a Self-Made GRUU
4.3. セルフメイドGRUUを構築

Many user agents (such as gateways to the Public Switched Telephone Network (PSTN), conferencing servers, and media servers) do not perform registrations, and cannot obtain GRUUs through that mechanism. These types of user agents can be publicly reachable. This would mean that the policy of the domain is that requests can come from anywhere on the public Internet and be delivered to the user agent without requiring processing by intervening proxies within the domain. Furthermore, firewall and NAT policies administered by the domain would allow such requests into the network. When a user agent is certain that these conditions are met, a UA MAY construct a self-made GRUU. Of course, a user agent that does REGISTER, but for whom these conditions are met regardless, MAY also construct a self-made GRUU. However, usage of GRUUs obtained by the registrar is RECOMMENDED instead.


A self-made GRUU is one whose domain part equals the IP address or hostname of the user agent. The user part of the SIP URI is chosen arbitrarily by the user agent. Like all other GRUUs, the URI MUST contain the "gr" URI parameter, with or without a value, indicating it is a GRUU.

自作GRUUは、そのドメイン部分ユーザーエージェントのIPアドレスまたはホスト名に等しいものです。 SIP URIのユーザ部分は、ユーザエージェントによって任意に選択されます。他のすべてのGRUUsと同様に、URIは、それがGRUUであることを示す、値の有無にかかわらず、「GR」URIパラメータを含まなければなりません。

If a user agent does not register, but is not publicly reachable, it would need to obtain a GRUU through some other means. Typically, the UA would be configured with a GRUU, the GRUU would be configured into the proxy, and the proxy will be configured with a mapping from the GRUU to the IP address (or hostname) and port of the UA.


4.4. Using One's Own GRUUs
4.4. 自分のGRUUsを使用して

A UA SHOULD use a GRUU when populating the Contact header field of dialog-forming and target refresh requests and responses. In other words, a UA compliant to this specification SHOULD use one of its GRUUs as its remote target. This includes:


o the INVITE request


o a 2xx or 18x response to an INVITE which contains a To tag


o the SUBSCRIBE request (see [5])


o a 2xx response to a SUBSCRIBE which contains a To tag


o the NOTIFY request


o the REFER request (see [6])

([6]参照)要求をREFER O

o a 2xx response to NOTIFY

O 2xx応答を通知するために、

o the UPDATE request


o a 2xx response to NOTIFY

O 2xx応答を通知するために、

The only reason not to use a GRUU would be privacy considerations; see Section 10.3.


When using a GRUU obtained through registrations, a UA MUST have an active registration prior to using a GRUU, and MUST use a GRUU learned through that registration. It MUST NOT reuse a GRUU learned through a previous registration that has lapsed (in other words, one obtained when registering a contact that has expired). The UA MAY use either the public or one of its temporary GRUUs provided by its registrar. A UA MUST NOT use a temporary GRUU learned in a REGISTER response whose Call-ID differs from the one in the most recent REGISTER request generated by the UA for the same AOR and instance ID (and, if RFC 5626 [14] is in use, reg-id). When a UA wishes to construct an anonymous request as described in RFC 3323 [15], it SHOULD use a temporary GRUU. See Section 10.3 for a more complete discussion on the level of privacy afforded by temporary GRUUs.

登録によって得られたGRUUを使用する場合、UAは、GRUUを使用する前にアクティブな登録を持たなければならない、とGRUUはその登録を通じて学習使用しなければなりません。これは、GRUUが(つまり、期限が切れている連絡先を登録したときに得られる1)経過した以前の登録を通じて学習再利用してはいけません。 UAは、パブリックまたはそのレジストラが提供する一時GRUUsのいずれかを使用するかもしれません。 UAは、一時的なGRUUは、そのコールID RFC 5626 [14]が使用されている場合、同じAORおよびインスタンスIDのためにUAによって生成された最新のREGISTERリクエスト(中1と異なり、REGISTER応答で学ん使用してはなりません、REG-ID)。 UAは、RFC 3323 [15]に記載のように匿名の要求を構築したい場合、それは一時的GRUUを使用すべきです。一時的GRUUsによってもたらされるプライバシーのレベルのより完全な議論については、セクション10.3を参照してください。

As per RFC 3261 [1], a UA SHOULD include a Supported header with the option tag "gruu" in requests and responses it generates.

RFC 3261ごとに[1]、UAは、それが生成する要求と応答にオプションタグ「GRUU」でサポートされているヘッダを含むべきです。

4.4.1. Considerations for Multiple AORs
4.4.1. 複数のAORに関する考慮事項

In some SIP networks, a user agent can have a multiplicity of AORs, either in different domains or within the same domain. In such cases, additional considerations apply.


When a UA sends a request, the request will be sent 'using' one of its AORs. This AOR will typically show up in the From header field of the request, and credentials unique to that AOR will be used to authenticate the request. The GRUU placed into the Contact header field of such a request SHOULD be one that is associated with the AOR used to send the request. In cases where the UA uses a tel URI (as defined in [11]) to populate the From header field, the UA typically has a SIP AOR that is treated as an alias for the tel URI. The GRUU associated with that SIP AOR SHOULD be used in the Contact header field.

UAが要求を送信すると、要求はそののAORの1「を使用して」送信されます。このAORは通常、リクエストのFromヘッダーフィールドに表示されます、そのAORに固有の資格情報は、要求を認証するために使用されます。このような要求のContactヘッダーフィールドに置かGRUUは、要求を送信するために使用されるAORと関連しているものであるべきです。 UAは、ヘッダフィールドから移入するTEL URIを([11]で定義されるように)を使用する場合には、UAは、典型的には、TEL URIの別名として扱われたSIP AORを有しています。そのSIPのAORと関連するGRUUは、Contactヘッダーフィールドで使用されるべきです。

When a UA receives a request, the GRUU placed into the Contact header field of a 2xx response SHOULD be the one associated with the AOR or GRUU to which the request was most recently targeted. There are several ways to determine the AOR or GRUU to which a request was sent. For example, if a UA registered a different contact to each AOR (by using a different user part of the URI), the Request-URI (which contains that contact) will indicate the AOR.

UAが要求を受信すると、GRUUは、要求が最近目標としたためAORまたはGRUUに関連付けられたものでなければならない2xx応答のContactヘッダーフィールドに入れました。リクエストが送信されたAORまたはGRUUを決定する方法はいくつかあります。 UAは(URIの異なるユーザ部分を使用して)各AORに異なる連絡先を登録した場合、例えば、(その連絡先が含まれている)のRequest-URIをAORを示すであろう。

4.5. Dereferencing a GRUU
4.5. GRUUを間接参照

A GRUU is identified by the presence of the "gr" URI parameter, and this URI parameter might or might not have a value. A UA that wishes to send a request to a URI that contains a GRUU knows that the request will be delivered to a specific UA instance without further action on the part of the requestor.

GRUUは、「GR」URIパラメータの存在によって同定され、このURIパラメータがまたは値を持たない場合があります。 GRUUが含まれているURIに要求を送信することを希望するUAは、要求が要求者の側での処置をすることなく、特定のUAインスタンスに配信されることを知っています。

Some UAs implement non-standard URI-handling mechanisms that compensate for the fact that heretofore many contact URIs have not been globally routable. Since any URI containing the "gr" URI parameter is known to be globally routable, a UA SHOULD NOT apply such mechanisms when a contact URI contains the "gr" URI parameter.

いくつかのUAは、これまで多くの接触URIはグローバルにルーティング可能なされていないという事実を補うため、非標準URI処理メカニズムを実装しています。 「GR」URIパラメータを含む任意のURIがグローバルにルーティング可能であることが知られているので、接触URIが「GR」URIパラメータを含む場合、UAは、そのようなメカニズムを適用しないでください。

Because the instance ID is a callee capabilities parameter, a UA might be tempted to send a request to the AOR of a user, and include an Accept-Contact header field (defined in [12]) that indicates a preference for routing the request to a UA with a specific instance ID. Although this would appear to have the same effect as sending a request to the GRUU, it does not. The caller preferences expressed in the Accept-Contact header field are just preferences. Their efficacy depends on a UA constructing an Accept-Contact header field that interacts with domain-processing logic for an AOR, to cause a request to route to a particular instance. Given the variability in routing logic in a domain (for example, time-based routing to only selected contacts), this doesn't work for many domain-routing policies. However, this specification does not forbid a client from attempting such a request, as there can be cases where the desired operation truly is a preferential routing request.

インスタンスIDは、着信機能パラメータであるので、UAは、ユーザのAORに要求を送信したく、かつへリクエストをルーティングするための優先度を示す([12]で定義される)のAccept-Contactヘッダフィールドを含むかもしれません特定のインスタンスIDを持つUA。これはGRUUにリクエストを送信するのと同じ効果を持っているように見えるが、それはしていません。 Accept-Contactヘッダーフィールドで表現、発信者の好みがちょうど好みです。その有効性は、特定のインスタンスへの経路に要求を引き起こすことが、AORのドメイン-処理ロジックと相互作用のAccept-連絡先をヘッダフィールドを構築UAに依存します。ドメイン(のみ選択した連絡先に例えば、時間ベースのルーティング)にルーティングロジックの変動を考えると、これは多くのドメイン・ルーティングポリシーでは動作しません。所望の動作が真に優先ルーティング要求である場合があることができるしかし、本明細書は、そのような要求を試行からクライアントを禁止しません。

4.6. Rendering GRUUs on a User Interface
4.6. ユーザーインターフェイスにGRUUsレンダリング

When rendering a GRUU to a user through a user interface, it is RECOMMENDED that the "gr" URI parameter be removed. For public GRUUs, this will produce the AOR, as desired. For temporary GRUUs, the resulting URI will be seemingly random. Future work might provide improved mechanisms that would allow an automaton to know that a URI is anonymized, and therefore inappropriate to render.


5. Registrar Behavior
5.1. Processing a REGISTER Request
5.1. REGISTER要求を処理

A REGISTER request might contain a Require header field with the "gruu" option tag; this indicates that the registrar has to understand this extension in order to process the request. It does not require the registrar to create GRUUs, however.


As the registrar is processing the contacts in the REGISTER request according to the procedures of step 7 in Section 10.3 of RFC 3261 [1], the registrar checks whether each Contact header field in the REGISTER message contains a "+sip.instance" header field parameter. If present with a non-zero expiration, the contact is processed further based on the rules in the remainder of this section. Otherwise, the contact is processed based on normal RFC 3261 [1] rules.

レジストラは、[1] RFC 3261のセクション10.3にステップ7の手順に従ってREGISTER要求の連絡先を処理REGISTERメッセージ内の各Contactヘッダフィールドが「+ sip.instance」ヘッダフィールドを含むかどうかレジストラチェックされるようにパラメータ。非ゼロの満了とともに存在する場合、接触は、このセクションの残りのルールに基づいてさらに処理されます。そうでなければ、コンタクトは、通常、RFC 3261 [1]の規則に基づいて処理されます。

Note that handling of a REGISTER request containing a Contact header field with value "*" and an expiration of zero still retains the meaning defined in RFC 3261 [1] -- all contacts, not just those with a specific instance ID, are deleted. As described in Section 5.4, this removes the binding of each contact to the AOR and the binding of each contact to its GRUUs.

「*」値とのコンタクトヘッダフィールドを含むREGISTERリクエストの取り扱いに注意し、ゼロの有効期限がまだRFC 3261で定義された意味を保持している[1] - すべての連絡先、特定のインスタンスIDを持つだけでなく、それらは、削除されます。セクション5.4で説明したように、これはAORに各コンタクトの結合およびそのGRUUsに各接点の結合を除去します。

If the contact URI is equivalent (based on URI equivalence in RFC 3261 [1]) to the AOR, the registrar MUST reject the request with a 403, since this would cause a routing loop. If the contact URI is a GRUU for the AOR in the To header field of the REGISTER request, the registrar MUST reject the request with a 403, for the same reason. If the contact is not a SIP URI, the REGISTER request MUST be rejected with a 403.

接触URIが同等である場合、これは、ルーティングループを引き起こすので、AORに、レジストラ403との要求を拒絶しなければなりません(RFC 3261 [1]にURI等価に基づきます)。接触URIは、REGISTERリクエストのヘッダーフィールドにAORためGRUUである場合、レジストラは、同じ理由で、403で要求を拒絶しなければなりません。連絡先がSIP URIでない場合は、REGISTER要求は403で拒絶しなければなりません。

Next, the registrar checks if there is already a valid public GRUU for the AOR (present in the To header field of the REGISTER request) and the instance ID (present as the content of the "+sip.instance" Contact header field parameter). If there is no valid public GRUU, the registrar SHOULD construct a public GRUU at this time according to the procedures of Section 5.4. The public GRUU MUST be constructed by adding the "gr" URI parameter, with a value, to the AOR. If the contact contained a "pub-gruu" Contact header field parameter, the header field parameter MUST be ignored by the registrar. A UA cannot suggest or otherwise provide a public GRUU to the registrar.

次に、レジストラチェックAORための有効な公開GRUU(REGISTERリクエストのヘッダーフィールドに存在する)と(「+ sip.instance」Contactヘッダフィールドパラメータの内容として存在する)インスタンスIDがすでに存在する場合。有効な公衆GRUUがない場合は、レジストラは、5.4節の手順に従って、現時点では公共のGRUUを構築すべきです。公衆GRUUはAORに、値が、「GR」URIパラメータを追加することによって構築されなければなりません。連絡先は、「パブ-GRUU」Contactヘッダーフィールドパラメータが含まれていた場合、ヘッダフィールドパラメータは、レジストラによって無視されなければなりません。 UAは示唆あるいはレジストラへの公衆GRUUを提供することはできません。

Next, the registrar checks for any existing contacts registered to the same AOR, instance ID, and if the contact in the REGISTER request is registering a flow [14], reg-id. If there is at least one, the registrar finds the one that was most recently registered, and examines the Call-ID value associated with that registered contact. If it differs from the one in the REGISTER request, the registrar MUST invalidate all previously generated temporary GRUUs for the AOR and instance ID. A consequence of this invalidation is that requests addressed to those GRUUs will be rejected by the domain with a 404 from this point forward.


Next, the registrar SHOULD create a new temporary GRUU for the AOR and instance ID with the characteristics described in Section 5.4. The temporary GRUU construction algorithm MUST have the following two properties:


1. The likelihood that the temporary GRUU is equal to another GRUU that the registrar has created MUST be vanishingly small.


2. Given a pair of GRUUs, it MUST be computationally infeasible to determine whether they were issued for the same AOR or instance ID or for different AORs and instance IDs.

2. GRUUsのペアを考えると、彼らが同じAORまたはインスタンスIDまたは別のAORとインスタンスIDのために発行されたかどうかを決定するために計算上実行不可能でなければなりません。

If the contact contained a "temp-gruu" Contact header field parameter, the header field parameter MUST be ignored by the registrar. A UA cannot suggest or otherwise provide a temporary GRUU to the registrar.

連絡先は、「TEMP-GRUU」Contactヘッダーフィールドパラメータが含まれていた場合、ヘッダフィールドパラメータは、レジストラによって無視されなければなりません。 UAは示唆あるいはレジストラへの一時的なGRUUを提供することはできません。

5.2. Generating a REGISTER Response
5.2. REGISTERの応答を生成します

When generating the 200 (OK) response to the REGISTER request, the procedures of step 8 of Section 10.3 of RFC 3261 [1] are followed. Furthermore, for each Contact header field value placed in the response, if the registrar has stored an instance ID associated with that contact, that instance ID is returned as a Contact header field parameter. If the REGISTER request contained a Supported header field that included the "gruu" option tag, and the registrar has at least one temporary GRUU assigned to the instance ID and AOR, the registrar MUST add a "temp-gruu" Contact header field parameter to that Contact header field. The value of the "temp-gruu" parameter is a quoted string, and MUST contain the most recently created temporary GRUU for that AOR and instance ID. In addition, if the registrar has a public GRUU assigned to the instance ID and AOR (and the client supports GRUUs), the registrar MUST add a "pub-gruu" Contact header field parameter to that Contact header field. The value of the "pub-gruu" Contact header field parameter is the public GRUU.

REGISTERリクエストに対する200(OK)応答を生成する場合、RFC 3261のセクション10.3のステップ8の手順は、[1]に従っています。レジストラは、その連絡先に関連付けられたインスタンスIDを記憶している場合はさらに、応答に入れ各コンタクトヘッダフィールド値のために、そのインスタンスIDは、Contactヘッダフィールドパラメータとして返されます。 REGISTERリクエストは「GRUU」オプションタグを含むサポートされているヘッダフィールドを含んでいて、レジストラは、インスタンスIDとAORに割り当てられた少なくとも1つの一時的なGRUUを持って、レジストラはに「TEMP-GRUU」Contactヘッダーフィールドパラメータを追加する必要がある場合そのContactヘッダーフィールド。 「TEMP-GRUU」パラメータの値は引用符で囲まれた文字列で、そのAORとインスタンスIDのための最も最近作成された一時GRUUを含まなければなりません。レジストラは、インスタンスIDとAORに割り当てられたパブリックGRUUを持っている(とクライアントがGRUUsをサポートしている)場合はまた、レジストラは、そのContactヘッダーフィールドに「パブ-GRUU」Contactヘッダーフィールドのパラメータを追加する必要があります。 「パブ-GRUU」Contactヘッダーフィールドパラメータの値は、公開GRUUです。

The registrar SHOULD NOT include the "gruu" option tag in the Require or Supported header field of the response.


5.3. Timing Out a Registration
5.3. 登録のタイムアウト

When a registered contact expires (either due to timeout or explicit de-registration), its binding to the AOR is removed as usual. In addition, its binding to its GRUUs are removed at the same time, as a consequence of the relationships described in Section 5.4


If, as a consequence of the expiration of the contact, a particular GRUU no longer has any registered contacts bound to it, and the GRUU is a temporary GRUU, the GRUU MUST be invalidated. This means that all of the accumulated temporary GRUUs get invalidated once the last contact for a given instance ID expires.


If, however, the GRUU was a public GRUU, the registrar SHOULD continue to treat the GRUU as valid. Consequently, subsequent requests targeted to the GRUU, prior to re-registration of a contact to the GRUU, SHOULD return a 480 (Temporarily Unavailable) response. In addition, since the GRUU remains valid, the rules in Section 5.1 will cause it to be retained when a contact with that instance ID is once again registered to the AOR.


These rules give a public GRUU a semi-permanent property. The intent is that the registrar make every attempt to retain validity of the GRUU for as long as the AOR itself is known within the domain. The requirements for doing so are at SHOULD strength and not MUST strength because of the difficulty in meeting a MUST strength requirement; registrar failures could cause the set of valid GRUUs to be lost, and this specification requires the UA to be robust against such cases. That said, it is possible for a public GRUU to be constructed such that a registrar does not need to retain any additional state for it, yet the GRUU still meets the requirements described here.


5.4. Creation of a GRUU
5.4. GRUUの作成

This section defines additional behaviors associated with the construction and maintenance of a GRUU that are specific to a registrar. These rules do not apply to self-made GRUUs or GRUUs not obtained through registrations.


When a registrar creates a GRUU, it is required to maintain certain information associated with the GRUU, regardless of whether it is a public or temporary GRUU. Every GRUU is associated with a single AOR and a single instance ID. A registrar MUST be able to determine the instance ID and AOR when presented with a GRUU. In addition, the GRUU, like an AOR, resolves to zero or more contacts. While the AOR resolves to all registered contacts for an AOR, a GRUU resolves only to those contacts whose instance ID matches the one associated with the GRUU. For this reason, a contact with an instance ID is always bound to both a GRUU and its AOR, never just an AOR or just a GRUU. This is shown pictorially in Figure 1. The figure shows three contacts registered to a single AOR. One of the contacts has an instance ID of 1, and the other two have an instance ID of 2. There are two GRUUs for this AOR. One is associated with instance ID 1, and the other with instance ID 2. The first GRUU resolves only to contacts whose instance ID is 1, and the second resolves only to contacts whose instance ID is 2. There will typically be multiple contacts for a given instance ID if a UA has crashed, rebooted, and re-registered with the same instance ID, or is using the mechanisms of RFC 5626 [14] to have multiple registrations for redundancy. If the contact for instance ID 1 expires, the AOR would resolve to two contacts, but the GRUU associated with instance ID 1 would resolve to zero.

レジストラは、GRUUを作成すると、関係なく、それがパブリックまたは一時的なGRUUであるかどうかの、GRUUに関連した特定の情報を維持するために必要とされます。すべてのGRUUは、単一のAORと単一インスタンスIDに関連付けられています。レジストラは、GRUUを提示するとき、インスタンスIDとAORを決定できなければなりません。また、GRUUは、AORように、ゼロ以上の接点に解決します。 AORは、AORのために登録されたすべての連絡先に解決しながら、GRUUは、そのインスタンスIDがGRUUに関連付けられたものと一致するそれらの連絡先に解決されます。このため、インスタンスIDとの接触は常にGRUUとそのAOR、決して単なるAORまたはちょうどGRUUの両方にバインドされています。これは図は、単一のAORに登録された3つの接点を示す図1に図式的に示されています。接点の1つは、1のインスタンスIDを持っており、他の2つは、このAORのための2つGRUUsがある2のインスタンスIDを持っています。一つは、インスタンスID 1に関連付けられ、およびインスタンスIDを有する他される前記第1のGRUUは、そのインスタンスIDが1であるコンタクトに解決し、そして第二は、そのインスタンスID 2.典型的にはがあります複数のコンタクトであるコンタクトにのみ解決さUAは、冗長性のために複数の登録を有するように[14]、クラッシュ再起動、および同じインスタンスIDと再登録、またはRFC 5626のメカニズムを使用している場合、インスタンスIDが付与。インスタンスID 1のための接触の有効期限が切れた場合は、AORは二つの接点に解決しますが、インスタンスID 1に関連付けられたGRUUはゼロに解決します。

          +----------+   +----------+  +----------+
          |  GRUU    |   |          |  |  GRUU    |
          |          |   |   AOR    |  |          |
          |Instance:1|   |          |  |Instance:2|
          +----------+   +----------+  +----------+
               |           /  |  \           / |
               |          /   |   \         /  |
               |         /    |    \       /   |
               |        /     |     \     /    |
               |       /      |      \   /     |
               |      /       |       \ /      |
               |     /        |        X       |
               |    /         |       / \      |
               |   /          |      /   \     |
               |  /           |     /     \    |
               V V            V    V       V   V
          +----------+   +----------+  +----------+
          | Contact  |   | Contact  |  | Contact  |
          |          |   |          |  |          |
          |Instance:1|   |Instance:2|  |Instance:2|
          +----------+   +----------+  +----------+

Figure 1


There can be multiple GRUUs with the same instance ID and AOR. Indeed, this specification requires registrars to maintain many -- one that is public, and several that are temporary. However, if two GRUUs are associated with different AORs or different instance IDs or both, the GRUUs MUST be different based on URI equality comparison. A GRUU in a domain MUST NOT be equivalent, based on URI comparison, to any AOR in a domain except for the one associated with the GRUU.

同じインスタンスIDとAORを持つ複数のGRUUsが存在する場合があります。パブリック、および一時的であること、数ある1 - 確かに、この仕様は、多くのを維持するために、レジストラが必要です。 2 GRUUsが異なるのAORまたは異なるインスタンスID、またはその両方に関連付けられている場合は、GRUUsは、URIの等価比較に基づいて異なっていなければなりません。ドメインのGRUUはGRUUに関連する一つを除いて、ドメイン内の任意のAORに、URIの比較に基づいて、同等にすることはできません。

A public GRUU will always be equivalent to the AOR based on URI equality rules. The reason is that the rules in RFC 3261 [1] cause URI parameters that are in one URI, but not in the other, to be ignored for equality purposes. Since a public GRUU differs from an AOR only by the presence of the "gr" URI parameter, the two URIs are equivalent based on those rules.

公衆GRUUは、常にURI平等のルールに基づいて、AORと同等になります。その理由は、RFC 3261でのルールは、[1] 1つのURIにあるURIパラメータを引き起こし、それ以外では、平等のために無視してはならないということです。公衆GRUUのみ「GR」URIパラメータの存在によってAOR異なるため、2つのURIは、それらのルールに基づいて等価です。

Once a temporary GRUU is constructed, it MUST be considered valid by the registrar until invalidated based on the rules described previously. Once a public GRUU is constructed, it MUST be considered valid for the duration that the AOR itself is valid. Once an AOR is no longer valid within a domain, all of its GRUUs MUST be considered invalid as well.

一時的なGRUUが構築されると無効になるまで、それは前述のルールに基づいてレジストラによって有効と見なされなければなりません。公衆GRUUが構築されると、AOR自体が有効であることを継続するために有効であると見なされなければなりません。 AORは、ドメイン内で有効でなくなったら、そのGRUUsのすべてが同様に無効であると見なされなければなりません。

This specification does not mandate a particular mechanism for construction of the GRUU. Example algorithms for public and temporary GRUUs that work well are given in Appendix A. However, in addition to the properties described in Section 3.1, a GRUU constructed by a registrar MUST exhibit the following properties:


o The domain part of the URI is an IP address present on the public Internet, or, if it is a hostname, the resolution procedures of RFC 3263 [2], once applied, result in an IP address on the public Internet.

URIのドメイン部分oをそれがホスト名である場合、RFC 3263の解決手順[2]、一度適用し、公衆インターネット上のIPアドレスをもたらし、公衆インターネット上のIPアドレスが存在しますか。

o When a request is sent to the GRUU, it routes to a proxy that can access the registration data generated by the registrar. Such a proxy is called an authoritative proxy, defined in RFC 5626 [14].

O要求がGRUUに送信されると、レジストラによって生成された登録データにアクセスすることができるプロキシへのルート。そのようなプロキシは、RFC 5626 [14]で定義され、権限のプロキシと呼ばれています。

5.5. Registration Event Support
5.5. 登録イベントのサポート

RFC 3680 [24] defines an event package that allows a client to learn about registration events at the registrar. This package allows registrars to alter registrations forcefully (for example, shortening them to force a re-registration). If a registrar is supporting RFC 3680 [24] and GRUU, it MUST also support RFC 5628 [28].

RFC 3680 [24]は、クライアントがレジストラで登録イベントについて学ぶことを可能にするイベントパッケージを定義します。このパッケージは、(例えば、再登録を強制するためにそれらを短縮)、レジストラは、強制的に登録を変更することができます。レジストラは、RFC 3680 [24]およびGRUUをサポートしている場合、それはまた、RFC 5628 [28]をサポートしなければなりません。

6. Proxy Behavior

Proxy behavior is fully defined in Section 16 of RFC 3261 [1]. GRUU processing impacts that processing in two places -- request targeting at the authoritative proxy and record-routing.

プロキシ挙動は完全にRFC 3261のセクション16で定義されている[1]。要求権限のプロキシとレコードルーティングを標的 - 二箇所での処理は、そのGRUU処理の影響。

6.1. Request Targeting
6.1. ターゲット要求

When a proxy receives a request, owns the domain in the Request-URI, and is supposed to access a location service in order to compute request targets (as specified in Section 16.5 of RFC 3261 [1]), the proxy examines the Request-URI. If it contains the "gr" URI parameter but is not equivalent, based on URI comparison, to a currently valid GRUU within the domain, it SHOULD be rejected with a 404 (Not Found) response; this is the same behavior a proxy would exhibit for any other URI within the domain that is not valid.

プロキシは、要求目標を計算するために、要求を受信したリクエストURI内のドメインを所有し、そして場所サービスにアクセスすることになっている場合(RFC 3261のセクション16.5で指定されるように[1])、プロキシは、要求 - を調べURI。それは、「GR」URIパラメータが含まれていますが、同等でない場合は、URIの比較に基づいて、ドメイン内で現在有効なGRUUに、それは404(Not Found)応答で拒否されるべきです。これは、プロキシが有効でないドメイン内の任意の他のURIのために発揮するのと同じ動作です。

If the Request-URI contains the "gr" URI parameter and is equivalent, based on URI comparison, to a GRUU which is currently valid within the domain, processing proceeds as it would for any other URI present in the location service, as defined in Section 16.5 of RFC 3261 [1], except that the "gr" URI parameter is not removed as part of the canonicalization process. This is the case for both out-of-dialog requests targeted to the GRUU, and mid-dialog requests targeted to the GRUU (in which case the incoming request would have a Route header field value containing the URI that the proxy used for record-routing.).

それはロケーションサービス内の他のURIの存在のために同じように定義されるようにリクエストURIは、ドメイン内で現在有効なGRUUに進むを「GR」URIパラメータを含み、URIの比較に基づいて、等価である場合RFC 3261のセクション16.5 [1]、「GR」URIパラメータが正規化プロセスの一部として除去されないことを除い。これは、GRUUに対して標的化された両方のアウトオブダイアログ要求の場合で、着信要求がプロキシははレコードのために使用したURIを含むRouteヘッダーフィールド値を有するであろうその場合、GRUUに対して標的化された中間ダイアログ要求(ルーティング。)。

Note that the "gr" URI parameter is retained just for the purposes of finding the GRUU in the location service; if a match is found, the Request-URI will be rewritten with the registered contacts, replacing the GRUU and its "gr" URI parameter. The "gr" URI parameter is not carried forward into the rewritten Request-URI.

「GR」URIパラメータはちょうどロケーションサービスにGRUUを見つけることの目的のために保持されていることに注意してください。一致が見つかった場合は、Request-URIがGRUUとその「GR」URIパラメータを交換し、登録された連絡先と書き換えられます。 「GR」URIパラメータを書き換えるのRequest-URIに引き継がれていません。

If there are no registered contacts bound to the GRUU, the server MUST return a 480 (Temporarily Unavailable) response. If there are more than one, there are two cases:

GRUUにバインドされた登録済みの連絡先がない場合、サーバは480(一時的に利用できない)応答を返さなければなりません。 1よりも多い場合には、2つのケースがあります。

1. The client is using RFC 5626 [14] and registering multiple contacts for redundancy. In that case, these contacts contain "reg-id" Contact header field parameters, and the rules described in Section 7 of RFC 5626 [14] for selecting a single registered contact apply.

1.クライアントは、RFC 5626 [14]を使用して冗長性を確保するために複数の連絡先を登録しています。その場合、これらの連絡先は、「REG-ID」Contactヘッダフィールドパラメータを含むルールが適用され、単一の登録連絡先を選択するための[14] RFC 5626のセクション7に記載します。

2. The client was not using RFC 5626 [14], in which case there would only be multiple contacts with the same instance ID if the client had rebooted, restarted, and re-registered. In this case, these contacts would not contain the "reg-id" Contact header field parameter. The proxy MUST select the most recently refreshed contact. As with RFC 5626, if a request to this target fails with a 408 (Request Timeout) or 430 (Flow Failed) response, the proxy SHOULD retry with the next most recently refreshed contact. Furthermore, if the request fails with any other response, the proxy MUST NOT retry on any other contacts for this instance.

2.クライアントは、RFC 5626を使用していなかった[14]、その場合にのみ、クライアントは、再起動、再起動、再登録した場合、同じインスタンスIDを持つ複数の連絡先が存在するであろう。この場合、これらの連絡先は、「REG-ID」Contactヘッダーフィールドパラメータを含んでいないでしょう。プロキシは、最も最近に更新連絡先を選択する必要があります。このターゲットへの要求は408(リクエストタイムアウト)または430で失敗した場合の応答を(フローが失敗しました)RFC 5626と同じように、プロキシは、次の最も最近リフレッシュ接触して再試行する必要があります。要求は、他の応答に失敗した場合はさらに、プロキシは、このインスタンスの他の連絡先に再試行してはなりません。

Any caller preferences in the request (as defined in RFC 3841 [12]) SHOULD be processed against the contacts bound to the GRUU.

(RFC 3841 [12]で定義されるように)要求内の任意の発信者の優先GRUUに結合したコンタクトに対して処理されるべきです。

In essence, to select a registered contact, the GRUU is processed just like it was the AOR, but with only a subset of the contacts bound to the AOR.


Special considerations apply to the processing of any Path headers stored in the registration (see RFC 3327 [3]). If the received request has Route header field values beyond the one pointing to the authoritative proxy itself (this will happen when the request is a mid-dialog request), the Path URI MUST be discarded. This is permitted by RFC 3327 [3] as a matter of local policy; usage of GRUUs will require this policy in order to avoid call spirals and likely call failures.

特別な考慮事項がある(RFC 3327 [3])登録に格納された任意のパスヘッダの処理に適用されます。受信した要求が権威プロキシ自体を指し1(要求が中間ダイアログ要求である場合、これが起こる)を超えRouteヘッダーフィールド値を有する場合、パスURIを捨てなければなりません。これは、ローカルポリシーの問題としてRFC 3327 [3]で許可されています。 GRUUsの使用は、コール・スパイラルと可能性の高いコールの失敗を避けるために、このポリシーが必要になります。

A proxy MAY apply other processing to the request, such as execution of called party features, as it might do for requests targeted to an AOR. For requests that are outside of a dialog, it is RECOMMENDED to apply screening types of functions, both automated (such as blacklist and whitelist screening) and interactive (such as interactive voice response (IVR) applications that confer with the user to determine whether to accept a call). In many cases, the new request is related to an existing dialog, and might be an attempt to join it (using the Join header field defined in RFC 3911 [21]) or replace it (using the Replaces header field defined in RFC 3891 [22]). When the new request is related to an existing dialog, the UA will typically make its own authorization decisions; bypassing screening services at the authoritative proxy might make sense, but needs to be carefully considered by network designers, as the ability to do so depends on the specific type of screening service.

それはAORを対象要求のために行う可能性があるとして、プロキシは、着信側の機能を実行するよう、要求に他の処理を適用することができます。ダイアログの外側にある要求のために、両方の(例えばブラックリストとホワイトリストのスクリーニングのような)自動化(例えばするかどうかを決定するためにユーザに与える対話型音声応答(IVR)アプリケーションなどの対話型機能の種類をスクリーニング適用することをお勧めします)コールを受け入れます。多くの場合、新しい要求は、既存のダイアログに関連して、(RFC 3911で定義された参加ヘッダフィールドを使用して[21])、それに参加しようとする試みであるかもしれないまたはそれを置き換える(RFC 3891で定義されたReplacesヘッダーフィールドを使用して[ 22])。新しい要求が既存のダイアログに関連している場合は、UAは通常、独自の許可決定を行います。正式なプロキシでスクリーニングサービスをバイパスすることは理にかなって、しかし、そうする能力は、スクリーニングサービスの特定の種類に依存するため、慎重にネットワーク設計者によって検討する必要があるかもしれません。

However, forwarding services, such as call forwarding, SHOULD NOT be provided for requests sent to a GRUU. The intent of the GRUU is to target a specific UA instance, and this is incompatible with forwarding operations.

しかし、そのような着信転送などのサービスを、転送、GRUUに送信される要求のために提供されるべきではありません。 GRUUの目的は、特定のUAインスタンスを標的とすることであり、これは、転送操作と互換性がありません。

If the request is a mid-dialog request, a proxy SHOULD only apply services that are meaningful for mid-dialog requests, generally speaking. This excludes screening and forwarding functions.


In addition, a request sent to a GRUU SHOULD NOT be redirected. In many instances, a GRUU is used by a UA in order to assist in the traversal of NATs and firewalls, and a redirection might prevent such a case from working.


6.2. Record-Routing
6.2. レコード・ルーティング

There are two distinct requirements for record-routing -- in the originating domain and in the terminating domain. These requirements avoid unnecessary, and possibly problematic, spirals of requests.

元のドメイン内と終端ドメインで - 記録的なルーティングのための2つの異なる要件があります。これらの要件はリクエストの、不必要な、そしておそらく問題のスパイラルを避けます。



o an originating authoritative proxy receives a dialog-forming request,


o AND the Contact header field contains a GRUU in the domain of the proxy,


o AND that GRUU is a valid one in the domain of the proxy,


o AND that GRUU is associated with the AOR matching the authenticated identity of the requestor (assuming such authentication has been performed),


o AND the request contains Record-Route header fields,


then the authoritative proxy MUST record-route. If all of these conditions are true, except that the GRUU is associated with an AOR that did not match the authenticated identity of the requestor, it is RECOMMENDED that the proxy reject the request with a 403 (Forbidden) response.




o a terminating authoritative proxy receives a dialog-forming request,


o AND the Request-URI contains a URI in the location service (either a GRUU or an AOR),


o AND the contact selected for sending the request has an instance ID and is bound to a GRUU,


o AND the registration contain Path URI,


then the authoritative proxy MUST record-route.


If a proxy is in either the originating or terminating domains but is not an authoritative proxy, the proxy MAY record-route.


If a proxy in the terminating domain requires mid-dialog requests to pass through it for whatever reason (firewall traversal, accounting, etc.), the proxy MUST still record-route, and MUST NOT assume that a UA will utilize its GRUU in the Contact header field of its response (which would cause mid-dialog requests to pass through the proxy without record-routing).


Implementors should note that, if a UA uses a GRUU in its contact, and a proxy inserted itself into the Path header field of a registration, that proxy will be receiving mid-dialog requests regardless of whether it record-routes or not. The only distinction is what URI the proxy will see in the topmost Route header field of mid-dialog requests. If the proxy record-routes, it will see that URI. If it does not, it will see the Path URI it inserted.


7. Grammar

This specification defines two new Contact header field parameters ("temp-gruu" and "pub-gruu") by extending the grammar for "contact-params" as defined in RFC 3261 [1]. It also defines a new SIP URI parameter ("gr") by extending the grammar for "uri-parameter" as defined in RFC 3261 [1]. The ABNF [13] is as follows:

この仕様は、RFC 3261で定義されるように、「接触のparams」のための文法を拡張することにより、2つの新しい連絡先ヘッダフィールドパラメータ(「TEMP-GRUU」および「パブ-GRUU」)を定義する[1]。また、RFC 3261で定義されるように「URIパラメータ」の文法を拡張して新しいSIP URIパラメータ(「GR」)[1]を定義します。次のようにABNF [13]です。

contact-params =/ temp-gruu / pub-gruu temp-gruu = "temp-gruu" EQUAL quoted-string pub-gruu = "pub-gruu" EQUAL quoted-string

連絡-のparams = / TEMP-GRUU /パブ-GRUU TEMP-GRUU = "TEMP-GRUU" EQUAL引用符で囲まれた文字列のパブ-GRUU = "パブ-GRUU" EQUAL引用符で囲まれた文字列

uri-parameter =/ gr-param gr-param = "gr" ["=" pvalue] ; defined in RFC 3261

URIパラメータ= / GR-PARAMのGR-PARAM = "GR" [ "=" p値]。 RFC 3261で定義されています

The quoted strings for temp-gruu and pub-gruu MUST contain a SIP URI. However, they are encoded like all other quoted strings and can therefore contain quoted-pair escapes when represented this way.

TEMP-GRUUとパブ-GRUUのための引用符で囲まれた文字列は、SIP URIを含まなければなりません。しかし、彼らは他のすべての引用文字列のようにエンコードされているため、この方法で表すと引用され、ペアはエスケープ含めることができます。

8. Requirements

This specification was created in order to meet the following requirements:


REQ 1: When a UA invokes a GRUU, it must cause the request to be routed to the specific UA instance to which the GRUU refers.

REQ 1:UAは、GRUUを呼び出すと、それは要求がGRUUが参照する特定のUAインスタンスにルーティングさせなければなりません。

REQ 2: It must be possible for a GRUU to be invoked from anywhere on the Internet, and still cause the request to be routed appropriately. That is, a GRUU must not be restricted to use within a specific addressing realm.

REQ 2:それはGRUUは、インターネット上のどこからでも呼び出すことが可能であること、そしてまだ適切にルーティングされる要求を引き起こす必要があります。それは、GRUUが特定のアドレス指定領域内の使用に限定されてはならない、です。

REQ 3: It must be possible for a GRUU to be constructed without requiring the network to store additional state.

REQ 3:GRUUは、追加の状態を保存するためにネットワークを必要とせずに構築することが可能でなければなりません。

REQ 4: It must be possible for a UA to obtain a multiplicity of GRUUs that each route to that UA instance. For example, this is needed to support ad hoc conferencing where a UA instance needs a different URI for each conference it is hosting. NOTE: This requirement is not met by this specification, and is being addressed in a separate specification (currently, "Delivery of Request-URI Targets to User Agents" [29]).

REQ 4:UAは、そのUAインスタンスへの各経路ことGRUUsの多重度を取得することが可能でなければなりません。例えば、これは、UAのインスタンスは、それがホストしている各会議のために異なるURIを必要とアドホック会議をサポートするために必要とされます。注:この要件は、本明細書によって満たされていない、独立した仕様で対処されている(現在、「ユーザエージェントへのRequest-URIターゲットの配信」[29])。

REQ 5: When a UA receives a request sent to a GRUU, it must be possible for the UA to know the GRUU that was used to invoke the request. This is necessary as a consequence of REQ 4. NOTE: This requirement is not met by this specification, and is being addressed in a separate specification (currently, "Delivery of Request-URI Targets to User Agents" [29]).

REQ 5:UAはGRUUに送信された要求を受信すると、UAはリクエストを呼び出すために使用されたGRUUを知っているため、それが可能でなければなりません。これはREQ 4メモの結果として必要である:この要件は、本明細書によって満たされていない、独立した仕様で対処されている(現在、「ユーザエージェントへのRequest-URIターゲットの配信」[29])。

REQ 6: It must be possible for a UA to add opaque content to a GRUU. This content is not interpreted or altered by the network, and is used only by the UA instance to whom the GRUU refers. This provides a basic cookie type of functionality, allowing a UA to build a GRUU with the state embedded. NOTE: This requirement is not met by this specification, and is being addressed in a separate specification (currently, "Delivery of Request-URI Targets to User Agents" [29]).

REQ 6:UAはGRUUに不透明なコンテンツを追加することが可能でなければなりません。このコンテンツは、解釈またはネットワークによって変更、およびGRUUを意味誰にUAインスタンスでのみ使用されていません。これは、UAが埋め込まれた状態でGRUUを構築することができ、機能の基本的なクッキーの種類を提供します。注:この要件は、本明細書によって満たされていない、独立した仕様で対処されている(現在、「ユーザエージェントへのRequest-URIターゲットの配信」[29])。

REQ 7: It must be possible for a proxy to execute services and features on behalf of a UA instance represented by a GRUU. As an example, if a user has call-blocking features, a proxy might want to apply those call-blocking features to calls made to the GRUU, in addition to calls made to the user's AOR.

REQ 7:プロキシがGRUUによって表されるUAインスタンスに代わってサービスと機能を実行することが可能でなければなりません。ユーザーがコールブロック機能を持っている場合の例として、プロキシは、ユーザーのAORへの呼び出しに加えて、GRUUへの呼び出しにそれらのコールブロック機能を適用したい場合があります。

REQ 8: It must be possible for a UA in a dialog to inform its peer of its GRUU, and for the peer to know that the URI represents a GRUU. This is needed for the conferencing and dialog reuse applications of GRUUs, where the URIs are transferred within a dialog.

REQ 8:それはそのGRUUのピアに通知するダイアログでUAのために可能でなければならない、とピアのURIは、GRUUを表していることを知っています。これは、URIは、ダイアログ内で転送されているGRUUsの会議や対話再利用の用途のために必要とされています。

REQ 9: When transferring a GRUU per REQ 8, it must be possible for the UA receiving the GRUU to be assured of its integrity and authenticity.

REQ 9:REQ 8ごとにGRUUを転送する場合、UAは、その整合性と信頼を保証するためにGRUUを受信するために、それが可能でなければなりません。

REQ 10: It must be possible for a server that is authoritative for a domain to construct a GRUU that routes to a UA instance bound to an AOR in that domain. In other words, the proxy can construct a GRUU, too. This is needed for the presence application.

REQ 10:それはUAインスタンスへのルートは、そのドメイン内のAORにバインドされたGRUUを構築するドメインの権威であるサーバー用可能でなければなりません。言い換えれば、プロキシは、あまりにも、GRUUを構築することができます。これは、プレゼンスアプリケーションのために必要とされます。

9. Example Call Flow

The following call flow, shown in Figure 2, shows a basic registration and call setup, followed by a subscription directed to the GRUU. It then shows a failure of the callee, followed by a re-registration. The conventions of RFC 4475 [17] are used to describe the representation of long message lines.

図2に示される次のコールフローは、GRUUを対象加入続いて基本的な登録と呼設定を示します。その後、再登録に続いて呼び出される側の失敗を示しています。 RFC 4475 [17]の規則は、長いメッセージ行の表現を記述するために使用されます。

       Caller                 Proxy                Callee
       |                     |(1) REGISTER         |
       |                     |<--------------------|
       |                     |(2) 200 OK           |
       |                     |-------------------->|
       |(3) INVITE           |                     |
       |-------------------->|                     |
       |                     |(4) INVITE           |
       |                     |-------------------->|
       |                     |(5) 200 OK           |
       |                     |<--------------------|
       |(6) 200 OK           |                     |
       |<--------------------|                     |
       |(7) ACK              |                     |
       |-------------------->|                     |
       |                     |(8) ACK              |
       |                     |-------------------->|
       |(9) SUBSCRIBE        |                     |
       |-------------------->|                     |
       |                     |(10) SUBSCRIBE       |
       |                     |-------------------->|
       |                     |(11) 200 OK          |
       |                     |<--------------------|
       |(12) 200 OK          |                     |
       |<--------------------|                     |
       |                     |(13) NOTIFY          |
       |                     |<--------------------|
       |(14) NOTIFY          |                     |
       |<--------------------|                     |
       |(15) 200 OK          |                     |
       |-------------------->|                     |
       |                     |(16) 200 OK          |
       |                     |-------------------->|
       |                     |                     |Crashes,
       |                     |(17) REGISTER        | Reboots
       |                     |<--------------------|
       |                     |(18) 200 OK          |
       |                     |-------------------->|

Figure 2


The callee supports the GRUU extension. As such, its REGISTER (1) looks like:


REGISTER SIP/2.0 Via: SIP/2.0/UDP;branch=z9hG4bKnashds7 Max-Forwards: 70 From: Callee <>;tag=a73kszlfl Supported: gruu To: Callee <> Call-ID: 1j9FpLxk3uxtm8tn@ CSeq: 1 REGISTER Contact: <sip:callee@> ;+sip.instance="<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>" Content-Length: 0

タグ= a73kszlflサポート; 5,438:::呼び出し先<callee@example.com一口>:; SIP / 2.0経由:ブランチ= z9hG4bKnashds7マックス・フォワードSIP / 2.0 / UDP SIPを登録GRUUへ:呼び出し先<一口>は、コールIDを:1j9FpLxk3uxtm8tn@のCSeq:1 REGISTER連絡先:<SIP:callee@>; + sip.instance = "<壷:UUID:f81d4fae-7dec-11D0 -a765-00a0c91e6bf6>」コンテンツの長さ:0

The registrar assigns a temporary and a public GRUU. The REGISTER response (message 2) would look like:

レジストラは、一時的、公共GRUUを割り当てます。 REGISTER応答(メッセージ2)は次のようになります。

SIP/2.0 200 OK Via: SIP/2.0/UDP;branch=z9hG4bKnashds7 From: Callee <>;tag=a73kszlfl To: Callee <> ;tag=b88sn Call-ID: 1j9FpLxk3uxtm8tn@ CSeq: 1 REGISTER <allOneLine> Contact: <sip:callee@> ;pub-gruu=" ;gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" ;temp-gruu="sip:tgruu.7hs==;gr" ;+sip.instance="<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>" ;expires=3600 </allOneLine> Content-Length: 0

SIP / 2.0 200 OK経由:SIP / 2.0 / UDP;ブランチ= z9hG4bKnashds7から:呼び出し先<>; = a73kszlflへタグ:呼び出し先<>;タグ=パブ-GRUU = "一口; 1j9FpLxk3uxtm8tn@のCSeq:1つのREGISTER <allOneLine>連絡先:<callee@一口>:コールID b88sn; GR = URN:UUID:f81d4fae- 7dec-11D0-a765-00a0c91e6bf6" ; TEMP-GRUU = "SIP:tgruu.7hs ==; GR"; + sip.instance = "<URN:UUID:f81d4fae-7dec-11D0-a765 -00a0c91e6bf6>」; = 3600 </ allOneLine>コンテンツ長満了:0

The Contact header field in the REGISTER response contains the "pub-gruu" Contact header field parameter with the public GRUU sip:callee@;gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6, and the "temp-gruu" header field parameter with the temporary GRUU;gr. Both are valid GRUUs for the AOR and instance ID, and both translate to the contact sip:callee@

REGISTER応答のContactヘッダーフィールドは、公開GRUUのSIPと "パブ-GRUU" Contactヘッダーフィールドパラメータが含まれます。呼び出し先@ example.comを、GR = URN:UUID:f81d4fae-7dec-11D0-a765-00a0c91e6bf6、および " TEMP-GRUU」一時的GRUUの一口を持つヘッダフィールドパラメータ;グラム。どちらも、AORとインスタンスIDの有効なGRUUsあり、両方とも接触SIPに変換:callee@。

The INVITE from the caller (message 3) is a normal SIP INVITE. However, the 200 OK generated by the callee (message 5) now contains a GRUU as the remote target. The UA has chosen to use its public GRUU.

発呼者(メッセージ3)からINVITE通常のSIP INVITEです。しかし、被呼者によって生成された200 OK(メッセージ5)は現在リモートターゲットとしてGRUUを含んでいます。 UAは、その公開GRUUを使用することを選択しました。

SIP/2.0 200 OK Via: SIP/2.0/UDP;branch=z9hG4bKnaa8 Via: SIP/2.0/UDP;branch=z9hG4bK99a From: Caller <>;tag=n88ah To: Callee <> ;tag=a0z8 Call-ID: CSeq: 1 INVITE Supported: gruu Allow: INVITE, OPTIONS, CANCEL, BYE, ACK, SUBSCRIBE <allOneLine> Contact: < ;gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6> </allOneLine> Content-Length: -- Content-Type: application/sdp

SIP / 2.0 200 OK経由:SIP / 2.0 / UDP;ブランチ= z9hG4bKnaa8経由:SIP / 2.0 / UDP;ブランチ= z9hG4bK99aから:発信者<>。呼び出し先<>へ= n88ahタグ;タグ= a0z8のCall-ID:1j9FpLxk3uxtma7@host.example.comのCSeq:サポートされている1 INVITE:許可GRUU:SUBSCRIBE、ACK、BYE、INVITE、OPTIONS、CANCEL <allOneLine>連絡先:<;グラム= URN:UUID:f81d4fae-7dec-11D0-a765-00a0c91e6bf6> </ allOneLine>コンテンツの長さ: - のContent-Type:アプリケーション/ SDP

[SDP Not shown]


At some point later in the call, the caller decides to subscribe to the dialog event package (defined in [16]) at that specific UA. To do that, it generates a SUBSCRIBE request (message 9), but directs it towards the remote target, which is a GRUU:


<allOneLine> SUBSCRIBE;gr=urn:uuid:f8 1d4fae-7dec-11d0-a765-00a0c91e6bf6 SIP/2.0 </allOneLine> Via: SIP/2.0/UDP;branch=z9hG4bK9zz8 From: Caller <>;tag=kkaz-<allOneLine> To: <;gr=urn:uuid:f8 1d4fae-7dec-11d0-a765-00a0c91e6bf6> </allOneLine> Call-ID: CSeq: 2 SUBSCRIBE Supported: gruu Event: dialog Allow: INVITE, OPTIONS, CANCEL, BYE, ACK, NOTIFY Contact: <;gr=hdg7777ad7aflzig8sf7> Content-Length: 0

<allOneLine> SIP SUBSCRIBE:callee@example.comと、GR = URN:UUID:F8 1d4fae-7dec-11D0-a765-00a0c91e6bf6 SIP / 2.0 </ allOneLine>のVia:SIP / 2.0 / UDP;分岐=発信者<>からz9hG4bK9zz8;タグ= kkaz- <allOneLine>宛先:<;グラム= URN:UUID:F8 1d4fae-7dec-11D0-a765-00a0c91e6bf6> < / allOneLine>コール-IDを:faif9a@host.example.comのCSeq:サポートされているSUBSCRIBE 2:GRUUイベント:ダイアログ許可:連絡先をNOTIFY、ACK、BYE、INVITE、OPTIONS、CANCEL:<; GR = hdg7777ad7aflzig8sf7>のContent-Length:0

In this example, the caller itself supports the GRUU extension and is using its own GRUU to populate its remote target.


This request is routed to the proxy, which proceeds to perform a location lookup on the Request-URI. It is translated into the contact for that instance, and then proxied to that contact.


       SUBSCRIBE sip:callee@ SIP/2.0
       Via: SIP/2.0/UDP;branch=z9hG4bK9555
       Via: SIP/2.0/UDP;branch=z9hG4bK9zz8
       From: Caller <>;tag=kkaz-
       To: <;gr=urn:uuid:f8
       CSeq: 2 SUBSCRIBE
       Supported: gruu
       Event: dialog
       Contact: <;gr=hdg7777ad7aflzig8sf7>
       Content-Length: 0

The SUBSCRIBE generates a 200 response (message 11), which is followed by a NOTIFY (message 13 and 14) and its response (message 15 and 16). At some point after message 16 is received, the callee's machine crashes and recovers. It obtains a new IP address, Unaware that it had previously had an active registration, it creates a new one (message 17 below). Notice how the instance ID remains the same, as it persists across reboot cycles:


REGISTER SIP/2.0 Via: SIP/2.0/UDP;branch=z9hG4bKnasbba Max-Forwards: 70 From: Callee <>;tag=ha8d777f0 Supported: gruu To: Callee <> Call-ID: hf8asxzff8s7f@ CSeq: 1 REGISTER <allOneLine> Contact: <sip:callee@> ;+sip.instance="<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>" </allOneLine> Content-Length: 0

呼び出し先:から70:<>;タグ= ha8d777f0がサポートされている:へGRUU:呼び出し先; SIP / 2.0経由:ブランチ= z9hG4bKnasbbaマックス・フォワードSIP / 2.0 / UDP SIPを登録<一口>コール-IDを:hf8asxzff8s7f@ののCSeq:1つのREGISTER <allOneLine>連絡先:<SIP:callee@>; + sip.instance = "<壷:UUID:f81d4fae- 7dec-11D0-a765-00a0c91e6bf6>」</ allOneLine>のContent-Length:0

The registrar notices that a different contact, sip:callee@, is already associated with the same instance ID. It registers the new one too and returns both in the REGISTER response. Both have the same public GRUUs, but the registrar has generated a second temporary GRUU for this AOR and instance ID combination. Both contacts are included in the REGISTER response, and the temporary GRUU for each is the same -- the most recently created one for the instance ID and AOR. The registrar then generates the following response:

異なる接触、SIPレジストラ通知:callee@は、既に同じインスタンスIDに関連付けられます。それはあまりにも新しいものを登録し、REGISTER応答の両方で返します。どちらも、同じ公開GRUUsを持っていますが、レジストラは、このAORとインスタンスIDの組み合わせのための第二仮GRUUを生成しました。両方の接点は、REGISTER応答に含まれており、それぞれのための一時的なGRUUは同じですされている - 最近、インスタンスIDとAORのための1つを作成しました。レジストラは、その後、次の応答を生成します。

SIP/2.0 200 OK Via: SIP/2.0/UDP;branch=z9hG4bKnasbba From: Callee <>;tag=ha8d777f0 To: Callee <>;tag=99f8f7 Call-ID: hf8asxzff8s7f@ CSeq: 1 REGISTER <allOneLine> Contact: <sip:callee@> ;pub-gruu=";gr=urn: uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" ;temp-gruu="sip:tgruu.7hatz6cn-098shfyq193=;gr" ;+sip.instance="<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>" ;expires=3600 </allOneLine> <allOneLine> Contact: <sip:callee@> ;pub-gruu=";gr=urn: uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" ;temp-gruu="sip:tgruu.7hatz6cn-098shfyq193=;gr" ;+sip.instance="<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>" ;expires=400 </allOneLine> Content-Length: 0

SIP / 2.0 200 OK経由:SIP / 2.0 / UDP;ブランチ= z9hG4bKnasbbaから:呼び出し先<>;タグ= ha8d777f0へ:呼び出し先<>;タグ= 99f8f7コールID:hf8asxzff8s7f@ののCSeq:1つのREGISTER <allOneLine>連絡先:<SIP:callee@>;パブ-GRUU = "一口;グラム= URN:UUID:f81d4fae- 7dec-11D0-a765-00a0c91e6bf6" ; TEMP-GRUU = "SIP:tgruu.7hatz6cn-098shfyq193 =; GR"; + sip.instance = "<URN:UUID:f81d4fae-7dec-11D0-a765- 00a0c91e6bf6> "; = 3600 </ allOneLine> <allOneLine>連絡先期限が切れる:;パブ-GRUU = callee@>:<一口";グラム= URN:UUID:f81d4fae-7dec-11D0を-a765-00a0c91e6bf6" ; TEMP-GRUU = "SIP:tgruu.7hatz6cn-098shfyq193 =; GR"; + sip.instance = "<URN:UUID:f81d4fae-7dec-11D0-a765-00a0c91e6bf6>" ; = 400 </ allOneLine>コンテンツ長満了:0

There is no need for the UA to remove the stale registered contact; the request targeting rules in Section 6.1 will cause the request to be delivered to the most recent one.

古い登録連絡先を削除するUAのための必要はありません。 6.1節でルールをターゲット要求は、要求が最新のものに配信されることになります。

10. Security Considerations

Attacks in SIP networks using GRUUs can be divided into outside attacks (where a third party is trying to attack the system) and inside attacks (where the attacker is a valid participant in the system but is malicious). In addition, there are privacy considerations with using GRUUs.


10.1. Outside Attacks
10.1. 外部からの攻撃

It is important for a UA to be assured of the integrity of a GRUU given in a REGISTER response. If the GRUU is tampered with by an attacker, the result could be denial of service (DoS) to the UA. As a result, it is RECOMMENDED that a UA use the SIPS URI scheme in the

UAはREGISTER応答に与えられたGRUUの整合性を保証することが重要です。 GRUUは、攻撃者によって改ざんされた場合、結果はUAにサービス拒否(DoS)の可能性があります。その結果、UAがでSIPS URIスキームを使用することをお勧めします

Request-URI when registering. Proxies and registrars MUST support the SIPS URI and MUST support TLS. This does not represent a change from the requirements in RFC 3261 [1].

リクエストURI登録します。プロキシおよびレジストラがSIPS URIをサポートしなければならないとTLSをサポートしなければなりません。これは、[1] RFC 3261の要求事項からの変化を表すものではありません。

The example GRUU construction algorithm in Appendix A.1 makes no attempt to create a GRUU that hides the AOR and instance ID associated with the GRUU. In general, determination of the AOR associated with a GRUU is considered a good property, since it allows for easy tracking of the target of a particular call. Learning the instance ID provides little benefit to an attacker. To register or otherwise impact registrations for the user, an attacker would need to obtain the credentials for the user. Knowing the instance ID is insufficient.


The example GRUU construction algorithm in Appendix A.1 makes no attempt to create a GRUU that prevents users from guessing a GRUU based on knowledge of the AOR and instance ID. A user that is able to do that will be able to direct a new request at a particular instance. However, this specification recommends that service treatment (in particular, screening features) be given to requests that are sent to a GRUU. That treatment will make sure that the GRUU does not provide a back door for attackers to contact a user that has tried to block the attacker.


10.2. Inside Attacks
10.2. インサイド攻撃

As a consequence of this specification, a UA will begin using GRUUs in the dialog forming and target refresh requests and responses it emits. These GRUUs will be passed to another UA (called the correspondent), which then uses them in requests that they emit.


If a malicious correspondent removes the "gr" URI parameter, the request will be routed to the authoritative proxy. If the GRUU had been temporary, removal of the "gr" URI parameter produces a URI that is not recognized as a GRUU and is not equal to any AOR. The request will be rejected. If the GRUU had been public, removing the "gr" URI parameter would have produced the AOR. Therefore, the request is treated like a call to the AOR. Since it is a desired goal to allow users to extract the AOR from the GRUU, this is not an attack, and the call will be handled normally.

悪意のある通信員は「GR」URIパラメータを削除した場合、要求は権威プロキシにルーティングされます。 GRUUは一時的であった場合は、「GR」URIパラメータの除去は、GRUUとして認識されていないと任意のAORと等しくないですURIを生成します。要求は拒否されます。 GRUUがパブリックであった場合は、「GR」URIパラメータを削除すると、AORを生産しているだろう。したがって、要求はAORへの呼び出しのように扱われています。それは、ユーザーがGRUUからAORを抽出することができるようにする所望の目的であるので、これは攻撃ではなく、呼び出しが正常に処理されます。

A malicious user in the system might try to use a GRUU for launching a DoS attack against another SIP UA. To do that, it would wait for a call from that UA, and from it, observe their GRUU. Once the GRUU is obtained, the UA would launch a SIP request to an entity, such as a presence server, which will generate many requests back towards the UA. However, the attacker will use the target's GRUU in the Contact header field of that SUBSCRIBE request. This will cause the traffic to be directed towards the target instead. Since the GRUU is globally routable, such traffic is more likely to be delivered to the target than traffic sent to its IP address. This specification helps mitigate this attack by requiring proxies to validate that the GRUU in the Contact of a request matches the authenticated identity of the sender of the request. This check requires the use of an outbound proxy. SIP does not require outbound proxies, and this does leave a potential area of vulnerability. However, in practice, nearly all deployments of SIP utilize an outbound proxy, and therefore this vulnerability is not likely to be a concern.

システム内の悪意のあるユーザーが別のSIP UAに対してDoS攻撃を起動するためのGRUUを使用しようとするかもしれません。これを行うには、それはそのUAから、それからの呼び出しを待って、そのGRUUを観察します。 GRUUが得られると、UAはバックUAへの多くのリクエストを生成します。これは、そのようなプレゼンスサーバとして、エンティティにSIPリクエストを起動します。しかし、攻撃者はそのSUBSCRIBEリクエストのContactヘッダーフィールドにターゲットのGRUUを使用します。これは、トラフィックではなく、目標に向けられるようになります。 GRUUは、グローバルにルーティング可能であるので、このようなトラフィックは、そのIPアドレスに送信されたトラフィックよりも標的に送達される可能性が高いです。この仕様は、要求の連絡先でGRUUは、要求の送信者の認証されたIDと一致することを検証するためにプロキシを必要とすることによって、この攻撃を軽減します。このチェックは、アウトバウンドプロキシを使用する必要があります。 SIPは、アウトバウンドプロキシを必要とせず、これは脆弱性の潜在的な面積を残しありません。しかし、実際には、SIPのほぼすべての展開は、アウトバウンドプロキシを利用するため、この脆弱性が懸念される可能性はほとんどありません。

10.3. Privacy Considerations
10.3. プライバシーの考慮事項

RFC 3323 [15] defines mechanisms for privacy. It distinguishes between network-provided privacy and user-provided privacy. In the former, the user requests privacy services from the network by including a Privacy header field in the request. In the latter, the UA follows a basic set of guidelines for construction of its request, so a certain level of privacy is afforded.

RFC 3323 [15]プライバシーのためのメカニズムを定義します。これは、ネットワークが提供するプライバシーとユーザー提供のプライバシーが区別されます。前者では、ユーザが要求におけるプライバシーヘッダフィールドを含むことにより、ネットワークからのプライバシサービスを要求します。プライバシーの一定レベルが与えられるので、後者では、UAは、そのリクエストの構築のためのガイドラインの基本的なセットに従います。

The guidelines in Section 4.1 of RFC 3323 [15] for user-provided privacy request that a UA construct its Contact header field with a URI that omits a user part, and utilizes the IP address or hostname of the UA. Such recommendations are in conflict with the rules defined in this specification, which require the usage of a GRUU in the Contact header field.

ユーザ部分を省略し、UAのIPアドレスまたはホスト名を利用UAはURIとそのContactヘッダーフィールドを構築し、ユーザーが提供するプライバシー要求のためのRFC 3323のセクション4.1のガイドライン[15]。そのような勧告は、ContactヘッダーフィールドにおけるGRUUの使用を必要とする本明細書で定義された規則と競合しています。

However, the temporary GRUUs provided by the registrar can be used in place of the Contact URI format described in RFC 3323 [15]. A user agent would gather the temporary GRUU returned in each REGISTER response, and keep a small number of them cached. When it makes or receives a call, a temporary GRUU is used to populate the Contact header field.

しかし、レジストラが提供する一時的GRUUsは、RFC 3323 [15]に記載の接触URIフォーマットの代わりに使用することができます。ユーザーエージェントは、各REGISTER応答で返された一時的なGRUUを収集し、キャッシュされたそれらの少数を続けるだろう。それが呼び出しを行うか、受信した場合、一時的なGRUUは、Contactヘッダーフィールドを移入するために使用されます。

A UA can either elect to use the same temporary GRUU in each call, or it can use a different temporary GRUU in each call. The choice depends on the level of privacy desired:


o A UA utilizing the same temporary GRUU for each call will allow a correspondent, based solely on investigation of the Contact header field, to correlate calls as coming from the same UA. This is also true for the user-provided privacy procedures in RFC 3323 [15], since the IP address or hostname in the Contact URI provides a similar correlator.

UAは、コールごとに同じ一時GRUUを利用oをすると、同じUAから来るよう呼び出しを相関させるために、もっぱらContactヘッダーフィールドの調査に基づいて、対応が可能になります。連絡先URIにIPアドレスまたはホスト名が同様の相関を提供するので、これは、また、RFC 3323 [15]において、ユーザ提供プライバシー手順についても同様です。

o A UA utilizing a different temporary GRUU for each call will not allow a correspondent, based solely on investigation of the Contact header field, to correlate calls as coming from the same UA.


o In both cases, absent network-provided privacy, IP address and port information in the Session Description Protocol (SDP) (defined in [10]) will allow a correspondent to correlate calls as coming from the same UA.


o In both cases, if a user makes a call, the correspondent will be able to call back by directing requests towards the GRUU in the Contact header field. Similarly, features such as transfer and digit collection by network application servers (see RFC 4730 [20]), which depend on a Contact with the GRUU property, will also be possible. These kinds of inbound requests will be possible until the registration for that UA lapses. A UA that wishes to invalidate its previous temporary GRUU in order to limit reachability MAY do so by generating a REGISTER refresh with a Call-ID that differs from ones used previously. A UA SHOULD NOT forcefully expire its registration and then re-register in order to invalidate a temporary GRUU; this results in a brief period of unreachability and will often produce excess load on the network. Refreshing with a new Call-ID is more efficient and is meant as the technique for coarse-grained control over the validity of temporary GRUUs. A UA wishing to not be disturbed by a specific call back will need to implement manual or automated call-handling procedures to reject it. This specification does not provide the UA the ability to manually invalidate individual temporary GRUUs. If a UA insists on not receiving any such inbound requests (including ones generated by network applications, such as those used for collecting digits), the UA can place a non-GRUU into the Contact header field. However, this is NOT RECOMMENDED. Usage of a GRUU coupled with automated call rejection features is far superior.

ユーザーが呼び出しを行う場合には、Oどちらの場合も、対応はContactヘッダーフィールドにGRUUへの要求を向けることによって、コールバックすることができるようになります。同様に、GRUUプロパティとの接触に依存して、ネットワークアプリケーションサーバによって転送及びディジット収集などの機能は、(RFC 4730 [20]参照)も可能であろう。インバウンド要求のこれらの種類は、そのUAが経過するための登録まで可能になります。到達可能性を制限するために、その前の一時的なGRUUを無効にしたいUAはREGISTERが以前に使用したものとは異なりコールIDでリフレッシュ生成することによってそれを行うことができます。 UAは、強制的にその登録を期限切れにして、一時的なGRUUを無効にするために、再登録しないでください。これは、到達不能の短い期間になり、多くの場合、ネットワーク上の余分な負荷を生成します。新しいCall-IDを持つリフレッシュは、より効率的で、一時的GRUUsの妥当性に関して大まかな制御するための技術として意図されています。 UAはそれを拒否し、手動または自動コール処理手順を実装する必要があります特定のコールバックによって邪魔されないことを希望します。この仕様は、UAを手動で個々の一時的なGRUUsを無効にする機能を提供していません。 UAは、(そのような数字を収集するために使用されるもののようなネットワークアプリケーションによって生成されたものを含む)は、任意のそのような着信要求を受信して​​いないを主張する場合、UAは、コンタクトヘッダフィールドに非GRUUを置くことができます。ただし、これは推奨されません。自動着信拒否機能と相まってGRUUの使用法は、はるかに優れています。

o As long as a temporary GRUU is used to populate the Contact header field, a correspondent will not be able to ascertain any information about the AOR or instance ID of the UA by inspection of the Contact header field. However, absent a network-provided privacy service, the IP address in the SDP can be used to determine information about the UA, such as its geographic location and ISP.


o In all cases, regardless of whether the UA uses a temporary or public GRUU in the Contact, regardless of whether it utilizes GRUU at all, and regardless of whether it invokes a network-provided privacy service, a correspondent will be able to determine the SIP service provider of the UA.


11. IANA Considerations
11. IANAの考慮事項

This specification defines two new Contact header field parameters, one SIP URI parameter, and a SIP option tag.

この仕様は、2つの新しい連絡先ヘッダフィールドパラメータ、あるSIP URIパラメータ、およびSIPオプションタグを定義します。

11.1. Header Field Parameter
11.1. ヘッダーフィールドパラメータ

This specification defines two new header field parameters, as per the registry created by RFC 3968 [8]. The required information is as follows:

この仕様は、RFC 3968 [8]によって作成されたレジストリの通り、二つの新しいヘッダフィールドパラメータを定義します。次のように必要な情報は以下のとおりです。

Header field in which the parameter can appear: Contact Name of the Parameter: pub-gruu Predefined Values: none RFC Reference: RFC 5627

パラメータが表示されることが可能なヘッダフィールド:パラメータの担当者名:パブ-GRUU事前定義された値:なしRFC参考:RFC 5627

Header field in which the parameter can appear: Contact Name of the Parameter: temp-gruu Predefined Values: none RFC Reference: RFC 5627

パラメータが表示されることが可能なヘッダフィールド:パラメータの担当者名:TEMP-GRUU事前定義された値:なしRFC参考:RFC 5627

11.2. URI Parameter
11.2. URIパラメータ

This specification defines one new SIP URI parameter, as per the registry created by RFC 3969 [9].

この仕様は、RFC 3969によって作成されたレジストリの通り、一つの新たなSIP URIパラメータを定義する[9]。

Name of the Parameter: gr Predefined Values: none RFC Reference: RFC 5627

パラメータの名前:GR事前定義された値:なしRFC参考:RFC 5627

11.3. SIP Option Tag
11.3. SIPオプションタグ

This specification registers a new SIP option tag, as per the guidelines in Section 27.1 of RFC 3261 [1].

この仕様は、RFC 3261のセクション27.1のガイドライン[1]に従って、新しいSIPオプションタグを登録します。

Name: gruu


Description: This option tag is used to identify the Globally Routable User Agent URI (GRUU) extension. When used in a Supported header, it indicates that a User Agent understands the extension. When used in a Require header field of a REGISTER request, it indicates that the registrar is not expected to process the registration unless it supports the GRUU extension.

説明:このオプションタグがグローバルにルーティング可能なユーザエージェントURI(GRUU)の拡張子を識別するために使用されます。 Supportedヘッダで使用される場合、それは、ユーザエージェントが拡張を理解することを示しています。 REGISTER要求の要求ヘッダーフィールドで使用される場合、それは、レジストラは、それがGRUU拡張をサポートしない限り、登録を処理することが期待されていないことを示しています。

12. Acknowledgments

The author would like to thank Eric Rescorla, Robert Sparks, Rohan Mahy, Paul Kyzivat, Alan Johnston, Ya-Ching Tan, Dale Worley, Jeroen van Bemmel, Vijay Gurbani, Andrew Allen, Alan Hawrylyshen, Francois Audet, Fredrik Thulin, Dean Willis, David Hancock, Keith Drage, and Cullen Jennings for their comments and contributions to this work. Eric Rescorla provided the text for the introduction and the GRUU construction algorithm in the appendix.

著者はエリックレスコラ、ロバート・スパークス、ロハンマーイ、ポールKyzivat、アラン・ジョンストン、雅 - チンタン、デイル・ウォーリー、イェルーンバンBemmel、ビジェイGurbani、アンドリュー・アレン、アランHawrylyshen、フランソワAudet、フレドリックThulin、ディーンウィリスに感謝したいと思います、彼らのコメントこの作品への貢献のためのデビッド・ハンコック、キース糖剤、およびカレンジェニングス。エリックレスコラは付録に導入するためのテキストとGRUU構築アルゴリズムを提供します。

13. References
13.1. Normative References
13.1. 引用規格

[1] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002.

[1]ローゼンバーグ、J.、Schulzrinneと、H.、カマリロ、G.、ジョンストン、A.、ピーターソン、J.、スパークス、R.、ハンドレー、M.、およびE.学生、 "SIP:セッション開始プロトコル" 、RFC 3261、2002年6月。

[2] Rosenberg, J. and H. Schulzrinne, "Session Initiation Protocol (SIP): Locating SIP Servers", RFC 3263, June 2002.

[2]ローゼンバーグ、J.、およびH. Schulzrinneと、 "セッション開始プロトコル(SIP):SIPサーバの検索"、RFC 3263、2002年6月。

[3] Willis, D. and B. Hoeneisen, "Session Initiation Protocol (SIP) Extension Header Field for Registering Non-Adjacent Contacts", RFC 3327, December 2002.

[3]ウィリス、D.およびB. Hoeneisenを、 "セッション開始プロトコル(SIP)拡張ヘッダフィールドは非隣接コンタクトを登録するための"、RFC 3327、2002年12月。

[4] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[4]ブラドナーのは、S.は、BCP 14、RFC 2119、1997年3月の "RFCsにおける使用のためのレベルを示すために"。

[5] Roach, A., "Session Initiation Protocol (SIP)-Specific Event Notification", RFC 3265, June 2002.

[5]ローチ、A.、 "セッション開始プロトコル(SIP)特異的イベント通知"、RFC 3265、2002年6月。

[6] Sparks, R., "The Session Initiation Protocol (SIP) Refer Method", RFC 3515, April 2003.

[6] R.、 "セッション開始プロトコル(SIP)メソッドを参照してください"、RFC 3515、2003年4月、火花。

[7] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Indicating User Agent Capabilities in the Session Initiation Protocol (SIP)", RFC 3840, August 2004.

[7]ローゼンバーグ、J.、Schulzrinneと、H.、およびP. Kyzivatを、RFC 3840、2004年8月 "セッション開始プロトコル(SIP)におけるユーザエージェントの能力を示します"。

[8] Camarillo, G., "The Internet Assigned Number Authority (IANA) Header Field Parameter Registry for the Session Initiation Protocol (SIP)", BCP 98, RFC 3968, December 2004.

[8]カマリロ、G.、BCP 98、RFC 3968、2004年12月 "セッション開始プロトコル(SIP)のための番号機関(IANA)ヘッダーフィールドパラメータレジストリの割り当てインターネット"。

[9] Camarillo, G., "The Internet Assigned Number Authority (IANA) Uniform Resource Identifier (URI) Parameter Registry for the Session Initiation Protocol (SIP)", BCP 99, RFC 3969, December 2004.

[9]カマリロ、G.、BCP 99、RFC 3969、2004年12月 "セッション開始プロトコル(SIP)のための番号機関(IANA)のURI(Uniform Resource Identifier)パラメータレジストリの割り当てインターネット"。

[10] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session Description Protocol", RFC 4566, July 2006.

[10]ハンドリー、M.、ヤコブソン、V.、およびC.パーキンス、 "SDP:セッション記述プロトコル"、RFC 4566、2006年7月。

[11] Schulzrinne, H., "The tel URI for Telephone Numbers", RFC 3966, December 2004.

[11] Schulzrinneと、H.、 "電話番号については、TEL URI"、RFC 3966、2004年12月。

[12] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Caller Preferences for the Session Initiation Protocol (SIP)", RFC 3841, August 2004.

[12]ローゼンバーグ、J.、Schulzrinneと、H.、およびP. Kyzivat、 "セッション開始プロトコル(SIP)のための発信者が設定"、RFC 3841、2004年8月。

[13] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.

[13]クロッカー、D.、およびP. Overell、 "構文仕様のための増大しているBNF:ABNF"、STD 68、RFC 5234、2008年1月。

[14] Jennings, C., Ed. and R. Mahy, Ed., "Managing Client-Initiated Connections in the Session Initiation Protocol (SIP)", RFC 5626, October 2009.

[14]ジェニングス、C.、エド。そして、R.マーイ、エド。、RFC 5626、2009年10月「セッション開始プロトコル(SIP)におけるクライアント開始された接続の管理」。

13.2. Informative References
13.2. 参考文献

[15] Peterson, J., "A Privacy Mechanism for the Session Initiation Protocol (SIP)", RFC 3323, November 2002.

[15]ピーターソン、J.、RFC 3323、2002年11月 "セッション開始プロトコル(SIP)のためのプライバシーメカニズム"。

[16] Rosenberg, J., Schulzrinne, H., and R. Mahy, "An INVITE-Initiated Dialog Event Package for the Session Initiation Protocol (SIP)", RFC 4235, November 2005.

[16]、RFC 4235 "セッション開始プロトコル(SIP)のためのINVITEが開始ダイアログイベントパッケージ" ローゼンバーグ、J.、Schulzrinneと、H.、およびR.マーイ、2005年11月。

[17] Sparks, R., Hawrylyshen, A., Johnston, A., Rosenberg, J., and H. Schulzrinne, "Session Initiation Protocol (SIP) Torture Test Messages", RFC 4475, May 2006.

[17]スパークス、R.、Hawrylyshen、A.、ジョンストン、A.、ローゼンバーグ、J.、およびH. Schulzrinneと、 "セッション開始プロトコル(SIP)調教テストメッセージ"、RFC 4475、2006年5月。

[18] Schulzrinne, H., "Dynamic Host Configuration Protocol (DHCP-for-IPv4) Option for Session Initiation Protocol (SIP) Servers", RFC 3361, August 2002.

[18] Schulzrinneと、H.、RFC 3361 "セッション開始プロトコル(SIP)サーバーの動的ホスト構成プロトコル(DHCP-用-IPv4)のオプション"、2002年8月。

[19] Sparks, R., Johnston, A., and D. Petrie, "Session Initiation Protocol (SIP) Call Control - Transfer", BCP 149, RFC 5589, June 2009.

[19]スパークス、R.、ジョンストン、A.、およびD.ペトリーは、 "セッション開始プロトコル(SIP)は、呼制御 - 転送"、BCP 149、RFC 5589、2009年6月。

[20] Burger, E. and M. Dolly, "A Session Initiation Protocol (SIP) Event Package for Key Press Stimulus (KPML)", RFC 4730, November 2006.

[20]バーガー、E.およびM.ドリー、 "Aセッション開始プロトコル(SIP)キーを押して刺激のためのイベントパッケージ(KPML)"、RFC 4730、2006年11月。

[21] Mahy, R. and D. Petrie, "The Session Initiation Protocol (SIP) "Join" Header", RFC 3911, October 2004.

[21]マーイ、R.とD.ペトリー、 "セッション開始プロトコル(SIP)は、 "" ヘッダ"、RFC 3911、2004年10月に参加しましょう。

[22] Mahy, R., Biggs, B., and R. Dean, "The Session Initiation Protocol (SIP) "Replaces" Header", RFC 3891, September 2004.

[22]マーイ、R.、ビッグス、B.、およびR.ディーン、 "ザ・セッション開始プロトコル(SIP) "" ヘッダ" を置き換え、RFC 3891、2004年9月。

[23] Willis, D. and B. Hoeneisen, "Session Initiation Protocol (SIP) Extension Header Field for Service Route Discovery During Registration", RFC 3608, October 2003.

[23]ウィリス、D.とB. Hoeneisen、 "登録時にサービス経路探索のためのセッション開始プロトコル(SIP)拡張ヘッダーフィールド"、RFC 3608、2003年10月。

[24] Rosenberg, J., "A Session Initiation Protocol (SIP) Event Package for Registrations", RFC 3680, March 2004.

[24]ローゼンバーグ、J.、 "Aセッション開始プロトコル(SIP)登録のためのイベントパッケージ"、RFC 3680、2004年3月。

[25] Camarillo, G., "Compressing the Session Initiation Protocol (SIP)", RFC 3486, February 2003.

[25]キャマリロ、G.、RFC 3486 "セッション開始プロトコル(SIP)を圧縮"、2003年2月。

[26] Burger, E., Van Dyke, J., and A. Spitzer, "Basic Network Media Services with SIP", RFC 4240, December 2005.

[26]バーガー、E.、ヴァン・ダイク、J.、およびA.スピッツァー、 "SIPを使用した基本的なネットワークメディアサービス"、RFC 4240、2005年12月。

[27] Jennings, C., Audet, F., and J. Elwell, "Session Initiation Protocol (SIP) URIs for Applications such as Voicemail and Interactive Voice Response (IVR)", RFC 4458, April 2006.

、RFC 4458、2006年4月[27]ジェニングス、C.、Audet、F.、およびJ.エルウェル、 "そのようなボイスメールや対話型音声応答(IVR)などのアプリケーションのためのセッション開始プロトコル(SIP)のURI"。

[28] Kyzivat, P., "Registration Event Package Extension for Session Initiation Protocol (SIP) Globally Routable User Agent URIs (GRUUs)", RFC 5628, October 2009.

、RFC 5628、2009年10月[28] Kyzivat、P.、 "セッション開始プロトコル(SIP)グローバルにルーティング可能なユーザエージェントのURI(GRUUs)の登録イベントパッケージ拡張"。

[29] Rosenberg, J., van Elburg, J., Holmberg, C., Audet, F., and S. Schubert, Ed., "Delivery of Request-URI Targets to User Agents", Work in Progress, June 2009.

[29]ローゼンバーグ、J.、バンElburg、J.、Holmbergの、C.、Audet、F.、およびS.シューベルト、エド。、 "ユーザーエージェントへのRequest-URIターゲットの配信" が進行中で働いて、2009年6月。

Appendix A. Example GRUU Construction Algorithms


The mechanism for constructing a GRUU is not subject to specification. This appendix provides an example that can be used by a registrar to construct a public and a temporary GRUU. Of course, others are permitted, as long as they meet the constraints defined for a GRUU.


A.1. Public GRUU


The most basic approach for constructing a public GRUU is to take the AOR and place the actual value of the instance ID into the contents of the "gr" URI parameter.


A.2. Temporary GRUU


This specification requires a registrar to create a new temporary GRUU on each registration refresh. If a registration is very long lived, this can quickly result in hundreds or even thousands of temporary GRUUs being created and allocated to a UA. Consequently, it is important to have an algorithm for constructing temporary GRUUs that does not require additional storage that grows in size with the number of temporary GRUUs. The following algorithm meets this goal.


The registrar maintains a counter, I. This counter is 48 bits and is initialized to zero. The counter is persistently stored, using a backend database or other similar technique. When the registrar creates the first temporary GRUU for a particular AOR and instance ID, the registrar notes the current value of the counter, I_i, and increments the counter in the database. The registrar then maps I_i to the AOR and instance ID using the database, a persistent hashmap or similar technology. If the registration expires such that there are no longer any contacts with that particular instance ID bound to the GRUU, the registrar removes the mapping. Similarly, if the temporary GRUUs are invalidated due to a change in Call-ID, the registrar removes the current mapping from I_i to the AOR and instance ID, notes the current value of the counter I_j, and stores a mapping from I_j to the AOR and instance ID. Based on these rules, the hashmap will contain a single mapping for each AOR and instance ID for which there is a currently valid registration.


The usage of a counter in a 48-bit space with sequential assignment allows for a compact representation of the hashmap key, which is important for generating GRUUs of reasonable size. The counter starts at zero when the system is initialized. Persistent and reliable storage of the counter is required to avoid misrouting of a GRUU to the wrong AOR and instance ID. Similarly, persistent storage of the hashmap is required, even through proxy and registrar restarts. If the hashmap is reset, all previous temporary GRUUs become invalidated. This might cause dialogs in progress to fail, or future requests towards a temporary GRUU to fail when they normally would not. The same hashmap needs to be accessible by all proxies and registrars that can field requests for a particular AOR and instance ID.


The registrar maintains a pair of local symmetric keys K_e and K_a. These are regenerated every time the counter is reset. When the counter rolls over or is reset, the registrar remembers the old values of K_e and K_a for a time. Like the hashmap itself, these keys need to be shared across all proxy and registrars that can service requests for a particular AOR and instance ID.


To generate a new temporary GRUU, the registrar generates a random 80-bit distinguisher value D. It then computes:


M = D || I_i E = AES-ECB-Encrypt(K_e, M) A = HMAC-SHA256-80(K_a, E)

Mは、Dが= || I_I E = AES-ECB暗号化(K_e、M)A = HMAC-SHA256-80(K_a、E)

Temp-Gruu-userpart = "tgruu." || base64(E) || base64(A)

TEMP-GRUU-userpart = "TGRUU。" || BASE64(E)|| BASE64(A)

where || denotes concatenation, and AES-ECB-Encrypt represents AES encryption in electronic codebook mode. M will be 128 bits long, producing a value of E that is 128 bits and A that is 80 bits. This produces a user part which has 42 characters.

どこ||連結を表し、AES-ECB暗号化は、電子コードブックモードでAES暗号化を表します。 Mは80ビットで128ビットであり、EおよびAの値を生成する、128ビット長であろう。これは、42個の文字を持つユーザーの一部を生成します。

When a proxy receives a request whose user part begins with "tgruu.", it extracts the remaining portion, and splits it into 22 characters (E') and the remaining 14 characters (A'). It then computes A and E by performing a base64 decode of A' and E' respectively. Next, it computes:


Ac = HMAC-SHA256-80(K_a, E)

AC = HMAC-SHA256-80(K_a、E)

If the counter has rolled over or reset, this computation is performed with the current and previous K_a. If the Ac value(s) that are computed do not match the value of A extracted from the GRUU, the GRUU is rejected as invalid. Next, the proxy computes:


M = AES-ECB-Decrypt(K_e, E)

M = AES-ECB-復号化(K_e、E)

If the counter has rolled over, this computation is done using the value of K_e that goes with the value of K_a, which produced a valid Ac in the previous HMAC validation. The leading 80 bits (the distinguisher D) are discarded, leaving an index I_i in the hashmap. This index is looked up. If it exists, the proxy now has the AOR and instance ID corresponding to this temporary GRUU. If there is nothing in the hashmap for the key I_i, the GRUU is no longer valid and the request is rejected.


The usage of a 48-bit counter allows for the registrar to have as many as a billion AORs, with 10 instances per AOR, and cycle through 10,000 Call-ID changes for each instance through the duration of a single registration. These numbers reflect the average; the system works fine if a particular AOR has more than 10 instances or a particular instance cycles through more than 10,000 Call-IDs in its registration, as long as the average meets these constraints.


Appendix B. Network Design Considerations


The GRUU specification works properly based on logic implemented at the user agents and in the authoritative proxies on both sides of a call. Consequently, it is possible to construct network deployments in which GRUUs will not work properly.


One important assumption made by the GRUU mechanism is that, if a request passes through any proxies in the originating domain prior to visiting the terminating domain, one of those proxies will be the authoritative proxy for the User Agent Client (UAC). Administrators of SIP networks will need to make sure that this property is retained. There are several ways it can be accomplished:

GRUUメカニズムによって行われた一つの重要な仮定は、要求が終了ドメインを訪問する前に、元のドメイン内の任意のプロキシを通過した場合、それらのプロキシの1つは、ユーザエージェントクライアント(UAC)のための正式な代理となり、ということです。 SIPネットワークの管理者は、このプロパティが保持されていることを確認する必要があります。それは達成することができますいくつかの方法があります。

1. If the user agents support the service-route mechanism [23], the registrar can implement it and return a service route that points to the authoritative proxy. This will cause requests originated by the user agent to pass through the authoritative proxy.


2. The user agents can be configured to never use an outbound proxy, and send requests directly to the domain of the terminating party. This configuration is not practical in many use cases, but it is a solution to this requirement.


3. The user agents can be configured with an outbound proxy in the same domain as the authoritative proxy, and this outbound proxy forwards requests to the authoritative proxy by default. This works very well in cases where the clients are not roaming; in such cases, the outbound proxy in a visited network may be discovered dynamically through DHCP [18].

前記ユーザエージェントは、信頼プロキシと同じドメインにアウトバウンドプロキシで構成することができ、このアウトバウンドプロキシは、デフォルトで権限のプロキシに要求を転送します。これは、クライアントがローミングされていない場合に非常に適しています。そのような場合には、訪問先ネットワーク内のアウトバウンドプロキシはDHCP [18]を介して動的に発見することができます。

4. In cases where the client discovers a local outbound proxy via a mechanism such as DHCP, and is not implementing the service route mechanism, the UA can be configured to automatically add an additional Route header field after the outbound proxy, which points to a proxy in the home network. This has the same net effect of the service route mechanism, but is accomplished through static configuration.


Author's Address


Jonathan Rosenberg Cisco Systems Edison, NJ US

ジョナサン・ローゼンバーグシスコシステムズエジソン、NJ US

EMail: URI:

電子メール URI: