<?xml version="1.0" encoding="iso-8859-1"?>
<!-- comment -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"[]>
<?rfc toc="yes" ?>
<?rfc compact="yes" ?>
<?rfc sortrefs="no" ?>
<rfc ipr="trust200902" category="std" docName="draft-holmberg-ecrit-emergency-callback-id-00.txt" obsoletes="" updates="" submissionType="IETF" xml:lang="en">
<front>
    <title abbrev="Emergency GRUU">
		Session Initiation Protocol (SIP) emergency call back identification
	</title>
    <author initials="C.H." surname="Holmberg" fullname="Christer Holmberg">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <street>Hirsalantie 11</street>
          <code>02420</code>
          <city>Jorvas</city>
          <country>Finland</country>
        </postal>
        <email>christer.holmberg@ericsson.com</email>
      </address>
    </author>
    <date year="2011" />
    <area>Transport</area>
    <workgroup>ECRIT Working Group</workgroup>
    <keyword>PSAP</keyword>
    <keyword>Callback</keyword>
    <keyword>Emergency</keyword>
    <keyword>GRUU</keyword>
	<keyword>eGRUU</keyword>
    <abstract>
		<t>
			This specification define a new type of Globally Routable User Agent URI (GRUU) <xref target="RFC5627" 
			pageno="false" format="default"/>, called emergency GRUU (eGRUU). When a User Agent (UA) provides
			makes an emergency call, it can provide the eGRUU to a PSAP, which can then use it to make
			a PSAP callback call. The specification also defines a new URI parameter, "psapcb", which
			can be used to indicate that a URI can be used for PSAP callback calls. A registrar will provide
			the URI parameter as part of the generated eGRUU value. Later, when a PSAP makes a
			PSAP callback call the URI, including the "psapcb" URI parameter, can be used by SIP entities
			to identity callback calls.
		</t>	
    </abstract>
</front>
<middle>
    <section title="Introduction" toc="default">
		<t>
			EDITOR'S NOTE: We can probably add text from an existing draft here, once we decide how to move forward
			documentation wise.
		</t>
		<t>
			This specification define a new type of Globally Routable User Agent URI (GRUU) <xref target="RFC5627" 
			pageno="false" format="default"/>, called emergency GRUU (eGRUU). When a User Agent (UA) provides
			makes an emergnecy call, it can provide the eGRUU to a PSAP, which can then use it to make
			a PSAP callback call. The specification also defines a new URI parameter, "psapcb", which
			can be used to indicate that a URI can be used for PSAP callback calls. A registrar will provide
			the URI parameter as part of the generated eGRUU value. Later, when a PSAP makes a
			PSAP callback call the URI, including the "psapcb" URI parameter, can be used by SIP entities
			to identity callback calls.
		</t>	
    </section>		
    <section title="Terminology" toc="default">
		<t>
			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 
			<xref target="RFC2119" pageno="false" format="default"/>.
		</t>
		<t>
			The terms defined in RFC 5627 apply, with the following additional terms defined in this specification:
		</t>
		<t>
			Public Safety Answering Point (PSAP): A call center responsible for answering calls to an emergency
			telephone number (referred to as emergency call), and dispatching them to the appropriate emergency 
			services (e.g. police, firefighting or ambulance).
		</t>
		<t>
			PSAP callback: A call made back from a PSAP to a user who previously made an emergency call, in case the
			emergency call dropped, or the PSAP needs additional information associated with the emergency call.
		</t>			
	</section>

	<section title="Applicability and Limitation" anchor="sec-app" toc="default">
			<t>
				If a PSAP callback call comes from a Public Switched Telephony Network (PSTN), or from another 
				interworking network, the UAC representing the PSAP will normally be located in a network 
				interworking gateway controller, such as a in a Media Gateway Controller (MGC). The interworking 
				gateway will normally not have knowledge of the eGRUU, neither will it be able to determine that 
				the call is a PSAP callback call.
			</t>
	</section>

	<section title="Overview of operation" anchor="sec-egruu" toc="default">
		<t>
			The procedures defined in section 3 of RFC 5627 apply also to an eGRUU, with the
			following limitations:
		</t>
		<t>
			- An eGRUU MUST be constructed following the same principles and rules that apply 
			for constructing a public GRUU.
		</t>
		<t>
			OPEN ISSUE: It still needs to be decided whether an eGRUU should be constructed as
			a public GRUU, or whether a temporary GRUU is more appropriate.
		</t>
		<t>
			- A UA MUST obtain an eGRUU either as part of a REGISTER transaction, or via some 
			locally specified administrative mechanism. A UA MUST NOT construct an eGRUU locally.
		</t>
		<t>
			- A UA that wants to obtain an eGRUU via its REGISTER request MUST, in addition to 
			providingan instance ID in the "+sip.instance" Contact header field parameter
			of the request, also include an "egruu" option-tag in the Supported header field.
		</t>
		<t>
			NOTE: The "egruu" option-tag will only request for an eGRUU. If a UA also wants to 
			obtain a gruu type defined in RFC 5627, it needs to include an "gruu" option-tag in
			addition to the "egruu" option-tag.
		</t>
		<t>
			- A UA, when not acting a PSAP, MUST NOT use an eGRUU in any other requests than in 
			an initial INVITE requests for a call that the UA determines to be an emergency call.
		</t>
		<t>
			- A UA, when acting a PSAP, MUST NOT use an eGRUU in any other requests than in 
			an initial INVITE requests for a PSAP callback call.
		</t>
		<t>
			- A UA MUST NOT use the "psapcb" URI parameter in any other requests than in an 
			initial INVITE requests for a call that the UA determines to be an emergency call.
		</t>
		<t>
			- Unless a UA is acting as a PSAP, initiating a PSAP callback call, it MUST NOT 
			dereference an eGRUU.
		</t>
	</section>

   	<section title="RFC 5627 Support" anchor="sec-rfc" toc="default">
		<t>
			An entity that requests, or generates, an eGRUU MUST support the procedures defined in RFC 5627.
			However, the "egruu" option-tag only requests an eGRUU. If a UA, in addtion to the eGRUU, also 
			wants to request a gruu type defined in 5627, it also needs to use the "gruu" option-tag, as 
			defined in RFC 5627.
		</t>
		<t>
			The UA, registrar and proxy procedures in this specification are based on the procedures 
			defined in sections 4, 5 and 6 of RFC 5627, with the deviations explicitly described.
		</t>
   	</section>

   	<section title="User Agent Behavior" anchor="sec-ua" toc="default">	
		<section title="General" anchor="sec-ua-gen" toc="default">			
			<t>
				This section defines the normative behavior for user agents.
			</t>
		</section>

		<section title="Generating a REGISTER Request" anchor="sec-ua-req" toc="default">
			<t>
				The general procedures, not associated with a specific type of GRUU, in 
				section 4.1 of RFC 5627 also apply to an eGRUU.
			</t>
			<t>
				When a UA compliant to this specification generates a REGISTER
				request (initial or refresh), it MUST include an "egruu" option-tag in
				the Supported header field in the request. This informs the registrar for the
				domain that the UA supports the eGRUU mechanism.
			</t>
			<t>
				A UA MUST NOT insert an "emg-gruu" header field in the Contact header field
				of a REGISTER request.
			</t>
			<t>
				If the Call-ID changes in a register refresh, the server will invalidate all 
				eGRUUs associated with that UA instance; the only valid one will be the new
				one returned in that REGISTER response. When the mechanism defined in RFC 5626 
				<xref target="RFC5626" pageno="false" format="default" /> is used, 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 eGRUUs associated 
				with that UA instance as a whole. Consequently, if a UA wishes its previously 
				obtained eGRUUs to remain valid, it MUST utilize the same Call-ID in
				REGISTER refreshes.  
			</t>					
			<t>
				A UA SHOULD NOT request a new eGRUU during the lifetime of a 
				registration, as the eGRUU might be used by an PSAP making a PSAP 
				callback call using the previous eGRUU value. However, it MAY change 
				the Call-ID in a refresh if invalidation is the desired objective.
			</t>
			<t>
				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 "egruu" option-tag.  This is in addition to the 
				presence of the Supported header field, also containing the "egruu" 
				option-tag. The use of the Proxy-Require header field is not 
				necessary and is NOT RECOMMENDED.
			</t>
		</section>

		<section title="Learning eGRUUs from REGISTER Responses" anchor="sec-ua-res" toc="default">	
			<t>
				The general procedures, not associated with a specific type of GRUU, in 
				section 4.2 of RFC 5627 also apply to an eGRUU.
			</t>
			<t>		
				If the REGISTER response is a 2xx, each Contact header field that
				contains the "+sip.instance" Contact header field parameter can also
				contain an "emg-gruu" Contact header field parameter.
				This header field parameter conveys the eGRUU for the UA instance.
				The eGRUU will be valid for the duration of the registration (that 
				is, through refreshes). The UA can receive a new eGRUU in 
				each successful REGISTER response. If a UA changed
				its Call-ID in this REGISTER request, or did not include an
				"egruu" option-tag in the Supported header field, compared to a previous 
				REGISTER request for the same contact or reg-id, the UA MUST discard all
				eGRUUs learned through prior REGISTER responses.  A UA MAY
				retain zero, one, some, or all of the eGRUUs that it is
				provided during the time over which at least one contact or reg-id
				remains continuously registered. If a UA stores any eGRUUs
				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.
			</t>
			<t>
				Note that, when the mechanism defined in RFC 5626 is in use, and the UA 
				is utilizing multiple flows for purposes of redundancy, the eGRUUs remain 
				valid as long as at least one flow is registered. Thus, even if the
				registration of one flow expires, the eGRUUs learned
				previously remain valid.
			</t>
			
			<t>
				The mechanism defined in RFC 3680 <xref target="RFC3680" pageno="false" 
				format="default"/> and RFC 5628 <xref target="RFC5628" pageno="false" 
				format="default"/>can not be used for eGRUUs, as RFC 5628 does not define 
				a mechanism for conveying eGRUU information.
			</t>
		</section>

		<section title="Constructing a Self-Made eGRUU" anchor="sec-ua-self" toc="default">			
			<t>
				A UA MUST NOT construct a self-made eGRUU.
			</t>			
		</section>

		<section title="Using One's Own eGRUU" anchor="sec-ua-use" toc="default">			
			<t>
				The procedures defined in section 4.4 of RFC 5627 apply also to an eGRUU, with the
				limitations defined in this section.
			</t>			
			<t>
				When a UAC sends an initial SIP INVITE request <xref target="RFC3261" 
				pageno="false" format="default" /> for an emergency call, it MUST insert 
				the eGRUU in the Contact header field of the request. The UAC MUST use the 
				same eGRUU value that it has obtained for the registration associated with 
				the emergency call.
			</t>
			<t>
				OPEN ISSUE: It still needs to be decided whether a UA can use the "psapcb" parameter
				if it does not support, or is able to retrieve, eGRUU.			
			</t>
			<t>
				A UA MUST NOT insert an eGRUU in the Contact header field of a SIP response, or
				in any other SIP request than an initial INVITE request for calls that it
				determines as emergency calls.
			</t>
			<t>
				NOTE: There might be cases where the UAC does not know that the call it is 
				establishing is an emergency call, and will therefor not include an eGRUU in 
				the initial SIP INVITE request for the call. In some networks suchs calls will 
				be determined as an emergency call by the network.
			</t>
			<section title="Considerations for Multiple AORs" anchor="sec-ua-aor" toc="default">
				<t>
					The procedures in section 4.4.1 of RFC 5627 also apply to an eGRUU.			
				</t>		
			</section>
		</section>

		<section title="Dereferencing an eGRUU" anchor="sec-ua-aor-deref" toc="default">		
			<t>
				The procedures in section 4.5 of RFC 5627 also apply to an eGRUU.			
			</t>
			<t>
				When a UA, representing a PSAP, sends an initial SIP INVITE request for an 
				PSAP callback call, it MUST insert the eGRUU that it received in the associated 
				emergency call in the Request-URI <xref target="RFC3261" pageno="false" 
				format="default" /> of the request.
			</t>
			<t>
				NOTE: If the Contact header field of an initial SIP INVITE request for an
				emergency call did not contain a "psabcb" parameter, a UA, representing 
				a PSAP, can insert the "psapcb" parameter in the Request-URI of the initial 
				SIP INVITE request for an PSAP callback call.
			</t>
			<t>
				If a UA does not represent a PSAP, making a PSAP callback call, it MUST NOT insert
				an eGRUU and a "psapcb" parameter in the Request-URI of the intial SIP INVITE 
				request for the call.
			</t>
		</section>

    	<section title="Rendering eGRUUs on a User Interface" toc="default">
			<t>
				An eGRUU MUST NOT be rendered to a user. The reasons is to prevent a user from
				e.g. using the eGRUU for non-emergency calls.
			</t>
    	</section>
    </section>


    <section title="Registrar Behavior" anchor="sec-reg" toc="default">		
		<section title="General" anchor="sec-reg-gen" toc="default">			
			<t>
				This section defines the normative behavior for registrars.
			</t>
		</section>

   		<section title="Processing a REGISTER Request" toc="default">
			<t>
				A REGISTER request might contain a Require header field with an
   				"egruu" option-tag; this indicates that the registrar has to
   				understand the eGRUU extension in order to process the request. It does
   				not require the registrar to create an eGRUU, however.	
			</t>
			<t>
				Next, the registrar MUST check the Contact header fields, and compare the contact URIs
				with the AOR, as defined in section 5.1 of RFC 5627.
			</t>
			<t>
				Next, the registrar MUST create a new eGRUU for the AOR and instance, according
				to the procedures in section 7.5 of this specification.				
			</t>
			<t>
   				If the contact contained a "emg-gruu" Contact header field parameter, the header 
				field parameter MUST be ignored by the registrar. A UA cannot suggest or otherwise 
				provide an eGRUU to the registrar.
			</t>
   		</section>

   		<section title="Generating a REGISTER Response" toc="default">
			<t>						
				When generating the 200 (OK) response to the REGISTER request, the
   				procedures of step 8 of Section 10.3 of RFC 3261 are followed.
			   	Furthermore, the registrar includes the instance ID in the Contact header
				field, as defined in section 5.2 of RFC 5627.
			</t>
			<t>
				If the REGISTER request contained a Supported header
   				field that with an "egruu" option-tag, and the registrar has an eGRUU 
				assigned to the instance ID and AOR, the registrar MUST add an "emg-gruu" 
				Contact header field parameter to that Contact header field. The value of 
				the "emg-gruu" header field parameter MUST contain and MUST contain 
				the most recently created eGRUU for that AOR and instance ID.			
			</t>
			<t>
				The registrar MUST NOT include an "egruu" option-tag in the Require
   				or Supported header field of the response.		
			</t>
   		</section>

   		<section title="Timing Out a Registration" toc="default">
			<t>
				The procedures in section 5.3 of RFC 5627 that apply to public gruus also apply to an eGRUU.
			</t>
   		</section>

   		<section title="Creation of an eGRUU" toc="default">
			<t>
				The procedures in section 5.4 of RFC 5627 that apply to public gruus also apply to an eGRUU, with
				the following addition:				
			</t>
			<t>
				The eGRUU value MUST contain a SIP-URI <xref target="RFC3261" pageno="false" format="default" />, 
				which includes a "psapcb" SIP-URI parameter.
			</t>
   		</section>

   		<section title="Registration Event Support" toc="default">
			<t>
				The procedures defined in section 5.5 of RFC 5627 also apply to an eGRUU.
			</t>
   		</section>

		<section title="PSAP callback call" anchor="sec-reg-callback" toc="default">			
			<t>
				When a registrar receives an initial SIP INVITE request for a call, and the Request-URI of the
				request contains an eGRUU (including a "psapcb" parameter) that the registrar has previously 
				assigned to the called user, the registrar can decide that the call is a PSAP callback call.
			</t>
			<t>
				NOTE: A registrar might give special treatment to a call identified as a PSAP callback call. Such 
				treatment is outside the scope of this specification.
			</t>
		</section>
    </section>

		
    <section title="Proxy Behavior" anchor="sec-proxy" toc="default">
		<t>
			The procedures defined in section 6 of RFC 5627 also apply to an eGRUU.
		</t>
    </section>

		
	<section title="Grammar" anchor="sec-gram" toc="default">
		<section title="ABNF" anchor="sec-gram-abnf" toc="default">			
			<t>
				This specification defines a new Contact header field parameter, "emg-gruu", by extending 
				the grammar for "contact-params" as defined in RFC 3261. It also defines a new URI parameter, "psapcb",
				by extending the grammar for "uri-parameter" as defined in RFC 3261. The ABNF <xref target="RFC5234" 
				pageno="false" format="default" /> is as follows:
			</t>
			<t>
				contact-params  =/ emg-gruu
			</t>
			<t>
				emg-gruu = "emg-gruu" EQUAL quoted-string	
			</t>
			<t>
				uri-parameter  =/ psap-callback-parameter
			</t>
			<t>
				psap-callback-parameter = "psapcb"	
			</t>
		</section>
    </section>

        		
    <section title="Message Flow Examples" toc="default">
		<section title="Example" toc="default">
			<t>
				TBD
			</t>
			<figure title="Example call flow" anchor="fig-ex1" suppress-title="false" align="left" alt="" width="" height="">
			<artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[ 
 Add example flow
]]></artwork>
			</figure>
		</section>
    </section>
	
    <section title="Security Considerations" anchor="sec-security" toc="default">
		<t>
			The security considerations defined in RFC 5627 also apply to eGRUUs.
		</t>
    </section>
	
    <section title="IANA Considerations" toc="default">
		<section title="General" toc="default">
			<t>
				This specification defines a new Contact header field parameter, a new
				and URI parameter, and a new SIP option-tag.
			</t>
		</section>
		<section title="Header Field Parameter" toc="default">
			<t>
				This specification defines a new header field parameter, as per
				the registry created by RFC 3968 <xref target="RFC3968" pageno="false" 
				format="default"/>. The required information is as follows:
			</t>					
			<artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[ 
    
	Header field in which the parameter can appear:  Contact
    Name of the Parameter:  emg-gruu
    Predefined Values:  none
    RFC Reference:  RFC XXXX [[NOTE TO IANA: Please replace 
	XXXX with the RFC number of this specification]]
]]></artwork>
		</section>
		
		<section title="URI Parameter" toc="default">
			<t>
				This specification defines a new SIP URI parameter, as per
				the registry created by RFC 3968 <xref target="RFC3968" pageno="false" 
				format="default"/>. The required information is as follows:
			</t>					
			<artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[ 
    	
	Name of the Parameter:  psapcb
	Predefined Values:  none
	RFC Reference:  RFC XXXX [[NOTE TO IANA: Please replace 
	XXXX with the RFC number of this specification]]
]]></artwork>
		</section>
		
		
		<section title="SIP option-tag" toc="default">
			<t>
				This specification registers a new SIP option tag, as per the
				guidelines in Section 27.1 of RFC 3261 <xref target="RFC3261" 
				pageno="false" format="default"/>. The required information is 
				as follows:
			</t>					
			<artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[ 
    
	Name:  egruu

    Description:  This option-tag is used to identify the
	  emergency Globally Routable User Agent URI (eGRUU)
	  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 eGRUU
	  extension.
]]></artwork>
		</section>		
    </section>
	
    <section title="Acknowledgements" anchor="sec-acks" toc="default">
		<t>
			The original idea of using a token based mechanism to associate PSAP callback calls with 
			emergency calls was presented by Cullen Jennings.
		</t>
		<t>
			Thanks to Fredrik Lindholm, Jan Holm and Ivo Sedlacek for their comments and feedbacks 
			on the initial draft.
		</t>
		<t>
			Thanks to everyone who took part, and provided input and feedback, in the discussions at 
			the IETF#81 meeting. 
		</t>
    </section>
	
	<section title="Change Log">
		<t>[RFC EDITOR NOTE: Please remove this section when publishing]</t>
		<t>
			Changes from draft-holmberg-ecrit-callback-00
			<list style="symbols">
				<t>Draft file name changed to draft-holmberg-ecrit-emergency-callback-id.</t>
				<t>New type of GRUU, instead of a feature tag, is used as callback identifier.</t>				
        	</list>
		</t>				
	</section>	
	
</middle>
<back>
    <references title="Normative References">
		<?rfc include="reference.RFC.2119"?>		
		<?rfc include="reference.RFC.3261"?>
		<?rfc include="reference.RFC.3968"?>		
		<?rfc include="reference.RFC.5234"?>
		<?rfc include="reference.RFC.5627"?>
    </references>
    <references title="Informational References">
		<?rfc include="reference.RFC.3680"?>		
		<?rfc include="reference.RFC.5626"?>		
		<?rfc include="reference.RFC.5628"?>		
    </references>
</back>
</rfc>
