One document matched: draft-hancock-dispatch-sip-interconnect-guidelines-00.xml


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
    	<!ENTITY RFC4566 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4566.xml'>
    	<!ENTITY RFC3261 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3261.xml'>
    	<!ENTITY RFC3265 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3265.xml'>
    	<!ENTITY RFC3323 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3323.xml'>
    	<!ENTITY RFC3325 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3325.xml'>
    	<!ENTITY RFC3515 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3515.xml'>
    	<!ENTITY RFC3891 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3891.xml'>
    	<!ENTITY RFC3966 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3966.xml'>
    	<!ENTITY RFC4694 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4694.xml'>
    	<!ENTITY RFC3264 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3264.xml'>
    	<!ENTITY RFC4244 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4244.xml'>
    	<!ENTITY RFC4235 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4235.xml'>
    	<!ENTITY RFC2119 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
    	<!ENTITY RFC4028 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4028.xml'>
     	<!ENTITY RFC3725 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3725.xml'>
     	<!ENTITY RFC5486 PUBLIC ''        'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5486.xml'>
  	<!ENTITY RFC5627 PUBLIC ''         'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5627.xml'>
	<!ENTITY RFC4458 PUBLIC '' 	    'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4458.xml'>
 	<!ENTITY I-D.ietf-speermint-architecture PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-speermint-architecture-16.xml'>
  	
]>


<rfc category="info" docName="draft-hancock-dispatch-sip-interconnect-guidelines-00"  ipr="trust200902">

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>



<front>
	<title abbrev="SIP Interconnect Guidelines">
	SIP Interconnect Guidelines
	</title>

	<author initials='D.H.' surname="Hancock" fullname='David Hancock'>
		<organization>CableLabs</organization>
		<address>
			<postal>
				<street>858 Coal Creek Circle</street>
				<city>Louisville</city> <region>CO</region> 
				<code>80027</code>
				<country>USA</country>
			</postal>
			<email>d.hancock@cablelabs.com</email>
		</address>
	</author>
	
	<author initials='D.M.' surname="Malas" fullname='Daryl Malas'>
	<organization>CableLabs</organization>
		<address>
			<postal>
				<street>858 Coal Creek Circle</street>
				<city>Louisville</city> <region>CO</region> 
				<code>80027</code>
				<country>USA</country>
			</postal>
			<email>d.malas@cablelabs.com</email>
		</address>
	</author>

	<date month="December" year="2010"/>
	
	<area>Real-time Applications and Interfaces</area>

    <workgroup>Speermint</workgroup>
	
		<abstract>
			<t>As Session Initiation Protocol (SIP) peering becomes more widely accepted by
			service providers the need to define an interconnect guideline becomes of greater
			value.  This document takes into consideration the SIP and commonly
			used SIP extensions, and it defines a fundamental set of requirements for SIP Service Providers (SSPs)
			to implement within their signaling functions (SFs) or Signaling Path Border Elements (SBEs)
			for peering.
			</t>
		</abstract>
</front>


<middle>


   <section title="Introduction" anchor="Introduction">
		
		<t>In the SIP Service Provider (SSP) industry every SSP has their own SIP requirements.  Whether they
		defined it themselves or a vendor's equipment capabilities defined it for them, they have one.  When two SSPs 
		approach one another to establish a peering relationship, one of the first pieces of information they exchange 
		is their respective SIP requirements or profiles. (For the purposes of this draft, we will call it a SIP profile.)  
		After exchanging SIP profiles, each SSP will likely go back to their lab and spend an extended period of time 
            attempting to comply with the other SSP's SIP profile, either by requesting their vendor to implement or 
		change capabilities, by developing "interworking profiles" for manipulating SIP messages at their SF or SBE, or 
            by arguing defiantly that their approach is correct.  While this may seem like a simple and manageable task 
		when establishing a single peering relationship, it can become extremely burdensome as the number of peering 
		relationships increase to four, five, and beyond. 
 		</t>
		
		<t>The overwhelming sentiment is that there is a need to establish a minimum set of requirements
		an SSP can implement within their SF or SBE to peer with any other SSP.  While this may seem like an arduous task,
		there is a belief that a fundamental set of requirements could be established as a baseline guideline to establish
		peering with any SSP.  After the peering is established, the two SSPs may agree on additional SIP parameters or extensions
		that expand the capabilities for many different purposes.  Over time, this document may be extended or updated as
		necessary to maintain consistency with the widely adopted new use of SIP functionality in the industry.
		</t>
		
		<t>
		This document provides an interconnect guideline to address potential SIP interworking issues for peering SIP-based networks. 
		</t>

   		<section title="Scope" anchor="Scope">
			<t>
			This document describes the SIP interconnect procedures between two SIP-based networks for both  
			peering SIP Service Providers networks and peering Enterprise networks. 
			</t>

			<t>
			The document focuses on the interworking procedures required to support basic telephone service,
			including the following capabilities:
			<list style="symbols">
					<t>
							On-net to on-net calls
					</t>
					

					<t>
							Multi-media
					<list style="symbols">
						<t>
								Voice
						</t>
						<t>
								Video
						</t>
						<t>
								Real-time text
						</t>
						
					</list>
							
					</t>
					
					<t>
							Caller ID with Privacy
					</t>

					<t>
							Early media
					</t>

					<t>
							Local Number Portability
					</t>

					<t>
							Call hold/conf/xfer
					</t>

					<t>
							Call forwarding
					</t>

					<t>
							Auto Recall/Callback
					</t>

					<t>
							Problem Isolation - Inter-network keep-alives
							
					</t>

			</list>

			<!-- TIP: This inserts new lines -->
			<vspace blankLines='1' />
			Interworking procedures in support of the following capabilities are not addressed:

			<list style="symbols">
					<t>
							Calls to/from PSTN
					</t>

					<t>
							Operator calls 
					</t>

					<t>
							0+,0-, busy-line-verify
					</t>

					<t>
							Emergency calls
					</t>

					<t>
							Transmission loss plan
					</t>

					<t>
							Operational capabilities
					</t>

					<t>
							Accounting
					</t>

					<t>
							Electronic Surveillance
					</t>

					<t>
							Quality-of-Service
					</t>

					<t>
							Authentication and Security
					</t>
					
					<t>
							Voice, FAX, DTMF-relay
					</t>
					
					<t>
							RTCP VoIP Metrics
					</t>
					
					<t>
					        		SIP RTP Loopback
					</t>
					
				</list>
			
			</t>
   		</section>

   </section>



<section title="Terminology" anchor="Terminology">


<section title="Requirements Language">
        <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 <xref
        target="RFC2119">RFC 2119</xref>.</t>
   
        <t>This draft also uses terms defined in <xref target="RFC5486">
      </xref>.
      </t>
    

</section>


</section>




   <section title="Reference Architecture" anchor="ReferenceArchitecture">
		<t>
		<xref target="PeeringArchitecture"/> shows the peering relationship 
            between two SSPs; SSP-A and SSP-B. The Signaling Path Border Element (SBE)
            serves as the egress/ingress point for SIP signaling into each peers network. 
            The SBE may act as a proxy or a Back-to-Back User Agent (B2BUA). The optional
            Data Path Border Element (DBE) serves as a media relay at the peering interface
            for media interworking, topology hiding and IPv4/6 interworking. 

			<figure title="Peering Architecture" anchor="PeeringArchitecture">
				<artwork>
					<![CDATA[
                                
                                +------+ 
                                | DNS, | 
                    +---------->| Db,  |<---------+ 
                    |           | etc  |          | 
                    |           +------+          | 
                    |                             | 
              ------|--------              -------|------- 
             /      v        \            /       v       \ 
            |    +--LUF-+     |          |     +--LUF-+    | 
            |    |      |     |          |     |      |    | 
            |    |      |     |          |     |      |    | 
            |    |      |     |          |     |      |    | 
            |    +------+     |          |     +------+    | 
            |                 |          |                 | 
            |    +--LRF-+     |          |     +--LRF-+    | 
            |    |      |     |          |     |      |    | 
            |    |      |     |          |     |      |    | 
            |    |      |     |          |     |      |    | 
            |    +------+     |          |     +------+    | 
            |                 |          |                 | 
            |                 |          |                 | 
            |             +---SF--+  +---SF--+             | 
            |             |       |  |       |             | 
            |             |  SBE  |  |  SBE  |             | 
            | Originating |       |  |       |  Target     | 
            |             +---SF--+  +---SF--+             | 
            |    SSP          |          |       SSP       | 
            |             +---MF--+  +---MF--+             | 
            |             |       |  |       |             | 
            |             |  DBE  |  |  DBE  |             | 
            |             |       |  |       |             | 
            |             +---MF--+  +---MF--+             | 
             \               /            \               / 
              ---------------              ---------------

					]]>
				</artwork>
			</figure>
		</t>
		
        		<t>
       		 This document places requirements on the following two entities in the Peering architecture:
       		
       		 <list style="symbols">

			<t>
			the SBE in support of the SIP/SDP interface between two peering networks			
			</t>

			<t>
			the DBE in support of the RTP/RTCP interface between peering networks
			</t>
		</list>
              		</t>
    
		
              		
              		<t>
             		Based on the definition of the SBE in the peering architecture document  
             		<xref target="I-D.ietf-speermint-architecture">
		 </xref>, it's not entirely correct
              		to make the SBE responsible for meeting all the SIP signaling requirements at the peering interface.
              		For example, the SBE
 can play the role of a firewall or a SIP proxy that is largely transparent to the SIP 
              		messages crossing the 
interface. In reality, the responsibility for supporting the peering interface belongs to 
              		all the SIP entities 
in the SIP signaling chain, including the SBE plus the SIP proxies and UAs
              		inside the SSP network. Furthermore, when this network is serving as a transit network, the SIP signaling chain can 
              		extend beyond this network into another network. To resolve this issue, this document extends 
              		the definition of the SBE slightly
 so that when it is specified as the target entity of a normative requirement 
              		on the SIP/SDP peering 
interface, the SBE represents all the SIP entities in the SIP signaling chain within the SSP network 
              		that can affect the SIP/SDP 
peering interface.  
              		</t>
              		
              		<t>
              		
              		
              		</t>
              		
              		<t>
              		Likewise, the DBE can act as a media relay (performing no media encode/decode) 
              		that is transparent to the RTP/RTCP packets exchanged with the peer network. Therefore, this document
              		extends the definition of the DBE so that when it is specified as the target entity of a normative requirement 
              		on the RTP/RTCP interface, it represents the media endpoint in the peering network that terminates the 
              		RTP/RTCP stream. 
        		
              		</t>
   </section>


   <section title="General Procedures" anchor="GeneralProcedures">
		<t>
		</t>

   		<section title="Extension Negotiation" anchor="ExtensionNegotiation">
			<t>
			   It is RECOMMENDED that originating SBEs facing other peer networks be configured in such a way that they do 
			   not require any SIP extensions to be supported by the other end.  The SBE MUST identify all supported
			   SIP extensions in the Supported header field. The SBE MAY support configuration controls to disable certain
			   extensions based on bilateral agreement between peer networks. For example, the SBE could be configured 
			   to remove '100rel' from the Supported  header field in order to disable the use of reliable provisionable response (PRACK). 
			  <vspace blankLines='1' />
			
			</t>
			
			<t>
			    Note: Policies that limit or block the use of SIP extensions should be applied with care, since their application 
			    tends to disable SIP's native extension negotiation mechanism, and therefore inhibit the deployment of new services. 
			</t>		
			  

			<t>

			
			 When sending a dialog-initialing request to a peer network, the SBE MUST identify all supported SIP requests 
			 in the Allow header field. 
			</t>
		</section>

   		<section title="Public User Identities" anchor="PublicUserIdentities">
			<t>
			Users are identified at the peering interface by their Public User Identity. 
			An SBE MUST encode Public User Identities 
			as a SIP URI of the telephone-subscriber syntax form of a Tel URI as indicated 
			by the "user=phone" parameter (see Section 19.1.6 of <xref target="RFC3261">
			</xref>), where the user part of the SIP URI contains a global Tel URI as defined in
			<xref target="RFC3966"></xref>. 

			<vspace blankLines='1' />

			Example:
			<vspace blankLines='1' />

       		sip:+13035551212@example.ssp.com;user=phone

			</t>

   			<section title="Identifying the Called User" anchor="IdentifyingtheCalledUser">
				<t>

				When sending a dialog-initiating request to a peer network, the SBE MUST
:

				<list style="symbols">
					<t>
					identify the called user in the Request-URI of the request,
 using the 
					telephone-subscriber 
syntax 
form of the SIP URI as described above 
					in section 4.2; and
					</t>

					<t>
					if Local Number Portability (LNP) information for the called number 
					was obtained, then 

					<list style="symbols">
						<t>
						include the LNP data in SIP URI in the Request-URI using the Tel URI  
						"npdi" and "rn" parameters as defined in <xref target="RFC4694"></xref>, and
						</t>

						<t>
						if the called number is ported, then identify the routing number using 
						the global form of the "rn" parameter, which is indicated by a leading "+" 
						character followed by the country-code followed by the national number 
						(e.g., "rn=+16132220000").
						</t>
					</list>
					</t>
				</list>

			<vspace blankLines='1' />

			On receiving a dialog-initiating request from a peer network, the SBE MUST:

				<list style="symbols">

					<t>
					identify the called user based on the contents in the Request-URI, where 
					the Request URI contains a SIP URI as described above in section 4.2,
  and
					</t>

					<t>
					obtain the LNP data for the called number based on the presence and contents of the "npdi" and 
					"rn" Tel URI parameters contained in the SIP URI of the Request-URI as defined in <xref target="RFC4694">
					</xref>.
					</t>

					
				</list>
				</t>
   			</section>
<!--
end 4.2.1 Identifying Called User
-->

   			<section title="Identifying the Calling User" anchor="IdentifyingtheCallingUser">
				<t>
				When sending or receiving a dialog-initiating request, the SBE MUST:

				<list style="symbols">

					<t>
					identify the calling user in the P-Asserted-Identity header field using the 
					telephone-subscriber syntax form of the SIP URI as described above in section 4.2; and 
					</t>

					<t>
					identify the calling name display 
information in the display-name component of the 
					P-Asserted-Identity header field 	as described in section 5.2.
					</t>
				</list>
				</t>

   			</section>
<!--
end 4.2.2 Identifying Calling User
-->


   		</section>
<!--
end 4.2 Public User Identities
-->


   		<section title="Trust Domain and Asserted Identities" anchor="TrustDomainandAssertedIdentities">
			<t>
			In a peering relationship, both originating and terminating networks are in the 
			same trust domain. Therefore, per <xref target="RFC3325"></xref>, the terminating network MUST trust 
			an originating peer network to populate the P-Asserted-Identity header field in an 
			incoming INVITE request with the Public User Identity of the originating user. 
			Furthermore, the originating network MUST trust the terminating network to honor 
			the privacy wishes of the originator as indicated in the Privacy header field.
			</t>
		</section>
<!--
end 4.3 Trust Domain and Asserted Identities
-->

<!--
   		<section title="Dummy" anchor="Dummy">
			<t>
			</t>
		</section>
-->

   		<section title="IPv4/6 Interworking" anchor="IPv4/6Interworking">
			<t>
			It is the responsibility of the IPv6 network to perform the IPv4/IPv6 
			interworking function when interworking with an IPv4 network. 
			</t>
		</section>
<!--
end 4.4 IPv4/6 Interworking
-->

   		<section title="Fault Isolation and Recovery" anchor="FaultIsolationandRecovery">
			<t>
			</t>
   			<section title="Interface Failure Detection" anchor="InterfaceFailureDetection">
				<t>
				An SBE MAY periodically send an OPTIONS request containing a Max-Forwards header field set to
				a value of '0' to detect the availability of a peer's ingress point. The ping rate is 
				based on bi-lateral agreement (typically every 5 seconds).  If the sending 
				SBE fails to receive a response to an OPTIONS request, then it will 
				consider that non-responding ingress point into the peer network to have 
				failed, and will remove it from the available set of ingress points to the peer
				network. The network that detected the failure should continue to route calls
				to the peer network over an available alternate ingress point.  In the meantime, 
				it will continue 
to send periodic OPTIONS pings to the failed ingress point in order 
				to detect when 
it has been restored and is available for service.

			<vspace blankLines='1' />

				Note: A possible enhancement to the OPTIONS ping is to declare a well-known SIP URI 
				in the look-up function (LUF) that could be used to test the health of each ingress SF or SBE in a peer 
				network. For example, SIP INVITE (with no SDP) to sip:999999999@examplessp.com would respond 
				with a 200 OK (again no SDP), followed by a BYE/200 OK. 
				</t>
			</section>

   			<section title="Overload Control" anchor="OverloadControl">
				<t>
				SIP does not currently provide an explicit overload control mechanism. 
				However, an SSP may want to impose limits on the number of simultaneous calls, 
				and the incoming call rate it will accept from a peer SSP. On receiving a 
				dialog-initiating request that exceeds such limits, the receiving SBE 
				MUST respond with a 503 (Service Unavailable) response. An SBE receiving 
				a dialog-initiating request from a peer MUST limit the use of the 503 (Service Unavailable) 
				response to reporting overload at the ingress signaling point, and MUST NOT use this 
				response to report overload or other failures internal to the network. 
				
			<vspace blankLines='1' />
				On receiving a 503 (Service Unavailable) response from a peer network, the 
				receiving SBE MUST limit the scope of the response to the call on which 
				it was received (i.e., a 503 response has no affect on the routing of subsequent 
				calls to the peer).  Also, the receiving SBE MUST attempt to consume the 
				503 (Service Unavailable) response from a peer as close to the egress signaling 
				point as possible, and avoid propagating the response back toward the source 
				of the request. Specifically, on receiving a 503 (Service Unavailable) response to a 
				dialog-initiating request that was sent to a peer network, the SBE MUST:

				<list style="symbols">
					<t>
					terminate the current transaction,
					</t>

					<t>
					ignore the Retry-After header if one is present, 
and
					</t>

					<t>
					attempt to route the call via an alternate peering interface (i.e. do not attempt
					to route the call via the same peering interface since it may encounter and aggravate
					the same overload condition).
					</t>
				</list>
				</t>
			</section>

   			<section title="Session Timer" anchor="SessionTimer">
				<t>
				The SBE SHOULD support Session Timer 
				as defined in <xref target="RFC4028"></xref>. 
				</t>
			</section>

		</section>
<!--
end 4.5 Fault Isolation and recovery
-->

	</section>
<!--
end 4 General Procedures
-->


   <section title="Call Features" anchor="CallFeatures">
	<t>
	</t>
   	<section title="Session Establishment" anchor="SessionEstablishment">
		<t>
		</t>

   		<section title="SDP Requirements" anchor="SDPRequirements">
			<t>
			The SBE MUST support the SDP 
			requirements defined in <xref target="RFC4566"></xref>. The SBE  MUST include only one 
			media (m=) descriptor per desired media stream in an SDP offer to a peer network.
			</t>
			
			<t>
			If an SBE receives an SDP offer containing multiple 
			media descriptors, it MUST act on the media descriptors and include all of them in 
			the same order in the response, including non-zero ports and zero ports for the offered
			media according to its capabilities as specified in <xref target="RFC3264"></xref> An Offer/Answer 
			Model with SDP. 
The SBE MUST NOT reject an offered session because it offers more media than the 
			SBE can handle.
			</t>
		</section>
   			
   		<section title="Basic Call Setup" anchor="BasicCallSetup">
			<t>
			This section describes the procedures at the peering interface required 
			to establish a 2-way session for a basic voice call between two users. In this 
			case it is 
assumed that no originating or terminating features are applied (no 
			call 
blocking, forwarding, etc.), and that the called line is available to accept 
			the 
call.  Also, this section describes the session establishment procedures 
			when the call is initiated by 
the originating SIP User Agent itself, and not via a 
			3rd party  in support of features like click-to-call.  Two-way call establishment 
			using 3rd Party Call Control (3PCC) procedures is covered in  
			<xref target="EstablishingCallsUsing3PCC"></xref>.

			<vspace blankLines='1' />
			The SBE MUST support the SDP offer/answer 
			procedures specified in <xref target="RFC3264"></xref>. The originating SBE
			MUST include an SDP offer in the initial INVITE. The terminating SBE MUST include an SDP answer 
			in the first reliable response to INVITE (typically the final 200 (OK) response to the INVITE). 
			The terminating SBE MAY also include 
			an SDP body in a non-reliable provisional 18x response to the INVITE. The SDP contained in a non-reliable 18x 
			provisional response can be considered a "preview" of the actual SDP answer to be 
			sent in the 200 (OK) to INVITE. The originating SBE can act on this "preview" 
			SDP to establish an early media session, as described in 
			<xref target="RingbackTonevsEarlyMedia"></xref>. The
			terminating SBE MUST ensure that the "preview" SDP matches the actual SDP 
			answer contained in the 200 (OK) response to INVITE.

			<vspace blankLines='1' />
			Note: an SDP offer/answer exchange occurs within the context of a single dialog.
			Therefore, the requirement for matching SDPs in the provisional and final 
			responses to INVITE applies only when the provisional and final response 
			are in the same dialog. If the provisional and final response are on different 
			dialogs (say, when the INVITE is forked), the requirement for matching SDPs does 
			not apply. 

			<vspace blankLines='1' />
			The SBE MUST always set the SDP mode attribute 
in the initial offer/answer to "a=sendrecv". 

			<vspace blankLines='1' />
			Note: Setting the mode to "a=sendrecv" on the initial SDP offer/answer exchange 
			avoids an additional SDP offer/answer exchange to update the mode to send-receive 
			after the call is answered. This should help mitigate the problem of voice-clipping 
			on answer. 

			<vspace blankLines='1' />
			A peered originating and terminating SBE that advertise support for different 
but overlapping sets of
			codecs in the SDP offer/answer exchange for a given call MUST negotiate a common codec 
			for the call.  
			</t>
		</section>
		
   		<section title="Ringback Tone vs. Early Media" anchor="RingbackTonevsEarlyMedia">
		 	<t>
			During the call setup phase, while the originating network is waiting for 
			the terminating network to answer the call, the originating line is either 
			playing local ringback tone to the calling user or connected to a receive-only 
			or bi-directional early-media session with the terminating network. For 
			example, early media can be supplied by the terminating endpoint (e.g., custom 
			ringback tone) while waiting for answer. 

			<vspace blankLines='1' />
			During session establishment, an SBE MUST use the following procedures 
			to control whether the originating line applies local ringback tone or 
			establishes an early media session while waiting for the call to be answered:

			<list style="symbols">
				<t>
				The terminating SBE MUST send the following provisional response
				to a call-initiating INVITE:

				<list style="symbols">
					<t>
					a 180 (Alerting) response containing no SDP if the call scenario 
					requires the originating network to apply local ringback tone,
					</t>

					<t>
					a 183 (Progressing) response containing SDP that describes the 
					terminating media endpoint if the call scenario requires the 
					originating network to establish an early-media session with the 
					terminating media endpoint,
					</t>

					<t>
					the provisional response sent for other call scenarios is not 
					specified, as long as the response is not one of those specified 
					above.
					</t>
				</list>
				</t>

				<t>
				The originating SBE MUST perform the following action on receipt of 
				a provisional response to a call-initiating INVITE:
				<list style="symbols">
					<t>
					on receiving a 180 (Alerting) response containing no SDP, apply 
					local ringback tone,
					</t>

					<t>
					on receiving a 180 (Alerting) or 183 (Progressing) response containing SDP, 
					establish an early media session with the media endpoint described 
					by the SDP,
					</t>

					<t>
					on receiving any other provisional response (with or without SDP) do 
					nothing (e.g., continue to apply local ringback tone if it was already 
					being applied when response was received)						
					</t>
				</list>
				</t>
			</list>


			</t>
			</section>
			
   		<section title="Early-Media with Multiple Terminating Endpoints" anchor="Early-MediawithMultipleTerminatingEndpoints">
			<t>
			<vspace blankLines='1' />
			There are some call scenarios that require media sessions to be established 
			(serially) between the originating user agent and one or more intermediate media 
			endpoints before the call is connected to the final target called user agent. 
			For example, the terminating network can insert a media server in the call 
			to interact with the calling user in some way (e.g., to collect a 
			blocking-override PIN) before offering the call to the called user. 
			Another case occurs when the called user fails to answer within an allotted 
			time and the call is redirected to voice-mail, or forwarded to another user 
			via Call Forwarding Don't Answer (CFDA). These different cases can be combined 
			in the same call. 

			<vspace blankLines='1' />
			For each terminating media endpoint that is associated with a call before 
			the call is answered, the terminating network must decide whether to 
			establish an early media session or apply ringback tone at the originating 
			user agent. For example, consider the case where the called user has call blocking 
			with PIN override, and CFDA. First, an early-media session is established 
			with the call-blocking server to collect the PIN, next the originating user agent 
			is instructed to play local ring-back tone while waiting for the called user 
			to answer, and finally an early media session is established with the forward-to 
			party to play custom ringback tone. 

			<vspace blankLines='1' />
			<xref target="RFC3261"></xref> mandates that the SDP included unreliable 
			provisional 18x responses to 
INVITE within the context of a dialog must match the SDP-answer included 
			in the final 200 (OK) response to INVITE. The following sections describe 
			two different mechanisms for supporting multiple terminating media 
			endpoints before answer, within the confines of this requirement.  
			<vspace blankLines='1' />
			</t>
		
   			<section title="Forking the INVITE" anchor="ForkingtheINVITE">
				<t>
				For each terminating media endpoint that requires an early media session 
				to be established with the originating media endpoint, the terminating SBE MUST 
				signal the attributes of the terminating media endpoint to the originating 
				SBE within the SDP of a 183 (Progressing) response. The terminating SBE 
				MUST ensure that 18x responses containing different SDP copies are 
				not sent within the same dialog. The terminating SBE does this by 
				specifying a different To: tag for each provisional response that contains 
				a unique SDP, as if the INVITE had been sequentially forked.  

				<vspace blankLines='1' />
				The originating SBE MUST honor the most recently received 18x response 
				to INVITE, based on the procedures defined in section 5.1.3. 
				</t>
			</section>

   			<section title="Redirecting the INVITE" anchor="RedirectingtheINVITE">
				<t>
				As an alternative to sequentially forking the INVITE, the terminating entity can 
				redirect the originating entity to the next endpoint in the series by sending a 302 
				(Moved Temporarily) response containing a Contact header field that
				identifies the next endpoint. The resulting INVITE from the originating SBE 
				is sent as a dialog-initiating request, and can therefore establish a 
				new early-media session with the next endpoint in the series. The use of 
				this procedure is based on bilateral agreement between peering operators.
					
				<vspace blankLines='1' />
					
			
				On receiving a 302 (Moved Temporarily) response to an INVITE request, and if this
				mechanism is enabled based on local policy, the 
				originating SBE MUST send a new dialog-initiating INVITE with a Request-URI 
				set to the value returned in the Contact header field of the 302 (Moved 
				Temporarily) response, as described in <xref target="RFC3261"></xref>.
					
				</t>
			</section>
		</section>
		
		<section title="Establishing calls using 3PCC" anchor="EstablishingCallsUsing3PCC">
			<t>
			Section <xref target="BasicCallSetup"></xref> describes the procedures that are used to establish 
			basic two-way call
			 when the call is initiated directly by the originating user's endpoint. However, an SSP may 
			 support features such as click-to-call, where the call is initiated by a 3rd party such as an 
			 Application Server on  behalf of the originating user. To support such features, the SBE MUST 
			 support the 3PCC procedures described in <xref target="RFC3725"></xref>.  
			</t>		
		</section>
   		<section title="Hold" anchor="Hold">
				<t>
				An SBE that wishes to place a 
				media stream "on hold" MUST offer an updated SDP to its peer 
				network with an attribute of "a=inactive" or "a=sendonly" in the 
				media description block. An SBE that wishes to place a media stream
				"on hold" MUST NOT set the 
				connection information of the SDP to a null IP address (for example, 
				it MUST NOT set the 'c=' connection line to c=IN IP4 0.0.0.0). 
				An SBE that wants to place a media stream "on hold" SHOULD locally 
				mute the media stream.

			<vspace blankLines='1' />

				An SBE that receives an SDP offer with 
				an attribute of "a=inactive" in the media block MUST place the media stream 
				"on hold", and MUST answer with an updated SDP containing a media attribute 
				of "a=inactive".  An SBE that receives an 
				SDP offer with an attribute of "a=inactive" in the media block MUST NOT set 
				the connection data of the answer SDP to c=0.0.0.0. An SBE operating in IPv4 that 
				receives an SDP offer with no directionality 
attributes but connection data set to 
				c=IN IP4 0.0.0.0 SHOULD place the media stream 
"on hold".
 				</t>
		</section>


		
	</section>

   	<section title="Calling Name and Number Deliver (with Privacy)" anchor="CallingNameandNumber">
		<t>
		An originating SBE MUST provide the calling name and number of the originating 
		user in the P-Asserted-Identity header field of dialog-initiating requests. (The mechanism 
		for obtaining the calling name is out-of-scope of this document.) The calling number 
		is contained in the telephone-subscriber syntax form of the SIP URI, containing an 
		E.164 number as described in section 4.2. The calling name is contained in the 
		display-name component of the P-Asserted-Identity header field.

		<vspace blankLines='1' />
		If the originating user wants to remain anonymous, the originating SBE MUST 
		include a Privacy header field containing the value "id" as specified in <xref target="RFC3323">
		</xref> and <xref target="RFC3325">
		</xref>. In addition, the originating SBE SHOULD obscure the identity of the 
		originating user in other header fields as follows:

		<list style="symbols">
			<t>
			Set the identity information in the 'From' header to "Anonymous sip:anonymous@anonymous.invalid",
			</t>

			<t>
			Set the display-name in the To header to "Anonymous" (since the To display-name 
			selected by the originating user could provide a hint to the originating user's 
			identity).
			</t>

			<t>
			Obscure any information from the Call-ID and Contact headers, such as the originating 
			FQDN, that could provide a hint to the originating user's identity.
			</t>
		</list>

		</t>
	</section>

   	<section title="Call Forwarding" anchor="CallForwarding">
		<t>

		If an SSP offers call-forwarding services to its users, then the forwarding SBE MAY 
		remain in the signaling path of the forwarded call 
in order to support separate billing 
		of forward-from and forward-to legs. This 
is accomplished by 

			<list style="symbols">
				<t>
				remaining in the signaling path as a proxy or B2BUA, or
				</t>
				<t>
				by responding to the initial INVITE with a 302 (Moved Temporarily) response 
				with a Contact header containing a private URI that points back to the forwarding 
				network
				</t>
			</list>
		</t>

				
		<section title="Detecting Call Forwarding Loops" anchor="DetectingCallCallForwardingLoops">
	
			<t>
			A call forwarding loop is defined to be the scenario that occurs when a targeted subscriber for a 
			call forwards the call to another destination. If the forwarded-to destination also has call forwarding 
			configured, the call can forward back (directly or indirectly) to the original targeted subscriber. When 
			a loop is detected, the network that performs the detection rejects the call. An SBE MUST detect call 
			forwarding loops. An SBE MUST support a configurable limit on the number of times an individual 
			call may be subject to forwarding.  If the number of forwarding attempts for a single call exceeds this 
			limit, the SBE MUST reject  the call.   
		<vspace blankLines='1' />
			An SBE SHOULD detect call forwarding loops and limit the number times a call is forwarded 
			by supporting the History-Info header field as defined in <xref target="RFC4244">
</xref>, and 
			by analyzing the History-Info field entries as described in this section.  However, these mechanisms 
			alone may not be sufficient to detect loops when calls are forwarded to networks not supporting 
			these mechanisms.  Therefore an SBE MAY support additional loop prevention and forwarding 
			limit detection methods as long as the requirements of forwarding limit restrictions and loop 
			detection are met.  
		<vspace blankLines='1' />
			
			If the SBE supports the prevention of forwarding loops via analysis of the History-Info header field present 
			in the INVITE request then it MUST compare the forward-to address with the set of targeted-to URI (hi-targeted-to-uri) 
			entries from the History-Info header field.  If there is a match then a loop has occurred. If no History-Info header
 field
			is present then it is not possible to perform loop detection via this mechanism.
		<vspace blankLines='1' />
			 
			If an SBE supports the prevention of forwarding loops by enforcing a maximum number of forwarding 
			attempts, then it MUST calculate the number of forwarding attempts by counting the number of entries 
			in the History-Info header field that were added due to call forwarding (i.e., entries containing a nested Reason 
			header which includes a protocol-cause parameter and a reason-text parameter that indicate the 
			call was forwarded as defined below).  If no History-Info header field is present then it is not possible to 
			determine the number of forwarding attempts via this mechanism.
		<vspace blankLines='1' />
			
			<xref target="RFC4458"></xref> defines the mapping between the forwarding conditions and the coding of the protocol-cause
			parameter in the Reason header field. An SBE MUST populate the Reason header field with a protocol-cause value 
			of "486" and a reason-text value of "CFBL" when the forwarding condition is Call Forwarding Busy Line (CFBL).
			The SBE MUST populate the Reason header field with a protocol-cause value of "408" and a reason-text value of 
			"CFDA" when the forwarding condition is Call Forwarding Don't Answer (CFDA).  The SBE MUST populate the 
			Reason header field with a protocol-cause value of "302" and a reason-text value of "CFV/SCF" when the forwarding 
			condition is Call Forwarding Variable (CFV) or Selective Call Forwarding (SCF). 
			</t>
	
		</section>
	
	</section>

   	<section title="Call Transfer" anchor="CallTransfer">
		<t>
		A user in a peered call can perform the various forms of call-transfer 
		(e.g., consultive transfer, blind transfer). Call-transfer can be supported 
		in one of two ways; either using the REFER request <xref target="RFC3515">
		</xref> and Replaces header <xref target="RFC3891"></xref>, 
		or by manipulating the call legs using 3rd Party Call Control (3PCC) 
		techniques. SBEs that support call 
		transfer MUST support the 3PCC option, and MAY support the REFER/Replaces 
		option. If a network supports both options, then the option that is used 
		when interworking with a specific peer is based on locally configured data 
		that indicates the capabilities of that peer. 
		</t>
   			<section title="Call-Transfer Using REFER/Replaces" anchor="Call-TransferUsingREFER/Replaces">
				<t>
				SBEs that support call-transfer using 
				the procedures described in this section MUST support the SIP REFER extension 
				described in <xref target="RFC3515"></xref>, and the SIP Replaces extension described in
				<xref target="RFC3891"></xref>. 
				Furthermore, <xref target="RFC3515"></xref> requires support of the SIP Event Notification extension 
				described in <xref target="RFC3265"></xref>. 
				
				<vspace blankLines='1' />
				To describe the basic transfer call-flow, consider the case where user-A in 
				SSP-A is in an active call with user-B in peered SSP-B, and user-A 
				decides to transfer user-B to user-C. User-C could be located anywhere in 
				the global network; for example in SSP-A, SSP-B, another peered 
				network, a non-peering IP network, or the PSTN. Here are the basic steps 
				to complete the transfer using REFER/Replaces:

				<list style="symbols">
					<t>
					User-A puts user-B on hold (sends re-INVITE with SDP "a=inactive" as described 
					in 5.1.6)
					</t>

					<t>
					User-A initiates a basic 2-way call to user-C
					</t>

					<t>
					User-A sends an in-dialog REFER to user-B containing a Refer-To header. 
					The Refer-To header instructs user-B to send an INVITE to user-C with 
					an imbedded Replaces header identifying the A-to-C dialog.

					<list style="symbols">
						<t>
						If SSP-A is not required to remain in the signaling path of 
						the transferred call, then it identifies user-C directly in the 
						Refer-To header,
						</t>

						<t>
						If SSP-A is required to remain in the signaling path of the transferred
						call (say to generate events for proper billing of the call), then it identifies
						a private URL pointing to itself in the Refer-To header. The private URL 
						contains a "hostport" that identifies SSP-A, and contains a "userinfo" string 
						that is generated by SSP-A. This "userinfo" string either contains or points 
						to information required by SSP-A to establish the transfer-to leg of the call.						
						</t>
					</list>
					</t>

					<t>
					User-B sends an INVITE containing the Replaces header specified in step-3 
					to the address contained in the Refer-To header  (i.e., the INVITE is routed 
					to user-C either directly from SSP-B, or indirectly via SSP-A using 
					the private URL)
					</t>

					<t>
					User-B sends NOTIFY requests within the original A-to-B dialog, informing 
					user-A of the progress of the B-to-C call
					</t>

					<t>
					At some point user-A drops out of both dialogs (e.g., drops out of A-to-C 
					dialog on receiving BYE from user-C). At this point users B and C are active 
					in a 2-way call.
					</t>
				</list>
				SBEs SHOULD support receiving a GRUU <xref target="RFC5627">
				</xref>
				in the Refer-To header.
				</t>
				
			</section>
   			<section title="Call-Transfer Using 3PCC" anchor="Call-TransferUsing3PCC">
				<t>
				SBEs that support call-transfer using 3PCC techniques 
				MUST act as a B2BUA, and manipulate the call legs using INVITE and re-INVITE requests. 
				It is RECOMMENDED that such techniques follow the guidance presented in <xref target="RFC3725">
				</xref>. 
				</t>
			</section>
	</section>

   	<section title="3-way Conference" anchor="3-wayConference">
		<t>
		The media mixing for 3-way conference calls may be performed by the user agent of the conference 
		control party, or by a conference bridge application server in the peer network serving the conference control 
		party. When mixing is done by the user agent, there are no specific requirements placed on the peering 
		interface other than the support of hold as described in section 5.1.6.  When conference mixing is 
		performed by a network-based server, users are added to the conference using procedures similar 
		to those described for call transfer in section 5.4.
		</t>
	</section>

   	<section title="Auto Recall/Callback" anchor="AutoRecall/Callback">
		<t>
		When a user invokes AC or AR, and the user targeted by the recall/callback feature belongs to a 
		peer network, the originating SBE first attempts to establish a basic 2-way call with the target user.
		If the call completes normally (e.g., the target user answers) then the feature is complete. If the 
		terminating SBE responds with an indication that the target user is busy, then the originating SBE 
		subscribes to the dialog-event package as defined in <xref target="RFC4235">
		</xref> of the target user, as a mechanism to detect when the target user becomes available. 
		When the terminating SBE subsequently notifies the originating SBE that the target user is available, 
		the originating SBE re-attempts to establish a 2-way call to the target user.

		</t>
		
		
		<section title="Originating SBE Sends INVITE to Target" anchor="OriginatingSBESendsINVITEtoTarget">
		<t>
		When a user invokes an AR or AC call, the originating SBE MUST follow the procedures given for a basic call
		as described in <xref target="BasicCallSetup"></xref>, and attempt to establish a 2-way call with the target user.
		In addition, the originating SBE MUST add a Call-Info header field to the INVITE with a purpose of "answer_if_not_busy". 
		
		<vspace blankLines='1' />
	
		If the originating SBE receives a 200-OK response to INVITE, then the AC/AR feature is considered complete,
		and the remainder of the call is handled like a normal 2-way call. If the originating SBE receives a 486-Busy-Here 
		or 600-Busy-Everywhere response to the INVITE, then it MUST follow the AC/AR procedures as defined below. 
		
		If the terminating SBE receives an inbound INVITE with a Call-Info header field declaring purpose= answer_if_not_busy, 
		then the terminating SBE MUST ignore any active Call-Forwarding-Busy-Line (CFBL) service for the target user, 
		not forward the call if the target is busy, and instead handle the call as if CFBL was not active (e.g., offer the call 
		using the call-waiting feature).					
		</t>
		</section>
		
		<section title="Originating SBE Sends SUBSCRIBE to Target" anchor="OriginatingSBESendsSUBSCRIBEtoTarget">
		
		<t>
		On receiving a 486-Busy-Here or 600-Busy-Everywhere response to an AC/AR INVITE request, 
		the originating SBE MUST establish a subscription to the dialog event package of the target endpoint, 
		by sending a SUBSCRIBE request containing an Event header field set to "dialog" to the terminating SBE. 
		The originating SBE MUST populate the SUBSCRIBE Request-URI with the URI returned in the Contact 
		header field of the INVITE response, if that URI is a GRUU.  Otherwise, the originating SBE MUST populate 
		the Request-URI with the identity of the target callback/recall user.  

		</t>		
		</section>
		
		<section title="Target Sends NOTIFY to Originating SBE" anchor="TargetSendsNOTIFYtoOriginatingSBE">
		
		<t>
		On receiving the SUBSCRIBE to the dialog event package, the terminating SBE MUST notify the originating
		SBE of the dialog state of the target user endpoint as described in <xref target="RFC4235">
</xref>. 				
		Upon receiving a NOTIFY message of "target is idle", the originating SBE MUST first cancel the dialog-event 
		subscription by sending a SUBSCRIBE message with an Expires header containing the value "0".  
		Once the subscription is cancelled, the originating SBE MUST send a new INVITE request to establish a 
		call with the target user. If the originating SBE receives a 486-Busy-Here or 600-Busy-Everywhere response 
		to the INVITE, then it MUST automatically re-subscribe to the dialog event package of the target user. (Note, a 
		"busy" response could be returned in this case as a result of a race condition, where the target endpoint 
		sends a NOTIFY of "target is idle", and then becomes busy in a new call before the subsequent INVITE is 
		received). 
		</t>		
		
		</section>		
	</section>

   </section>



   <section title="Security Considerations" anchor="SecurityConsiderations">
		<t>This draft contains no new security considerations that have not already been defined in SIP and the specified
		SIP extensions in this draft.
		</t>
   </section>


   <section title="Acknowledgements" anchor="Acknowledgements">
	 	<t>The authors of this draft wish to thank Tom Creighton, Jack Burton, Matt Cannon, Robert Diande, Jean-Francois Mule, 
		and Kevin Johns for their contributions to this draft.
		</t>
   </section>
 
 <section anchor="IANA" title="IANA Considerations">
      <t>This draft contains no IANA considerations.</t>
      </section>

</middle>


<back>
	<references title="Normative References">
			&RFC4566; 
			&RFC3261; 
			&RFC3265; 
			&RFC3323; 
			&RFC3325; 
			&RFC3515; 
			&RFC3891; 
			&RFC3966; 
			&RFC4694; 
			&RFC4244; 
			&RFC4235; 
			&RFC2119;
			&RFC4028;
			&RFC3264;
			&RFC3725;
			&RFC5486;
			&RFC5627;
			&RFC4458;
			&I-D.ietf-speermint-architecture;
		
		
		</references>


</back>


</rfc>




PAFTECH AB 2003-20262026-04-23 14:17:40