draft-ietf-sipcore-199-05.txt   draft-ietf-sipcore-199-06.txt 
SIPCORE Working Group C. Holmberg SIPCORE Working Group C. Holmberg
Internet-Draft Ericsson Internet-Draft Ericsson
Intended status: Standards Track February 1, 2011 Intended status: Standards Track March 3, 2011
Expires: August 5, 2011 Expires: September 4, 2011
Session Initiation Protocol (SIP) Response Code for Indication of Session Initiation Protocol (SIP) Response Code for Indication of
Terminated Dialog Terminated Dialog
draft-ietf-sipcore-199-05.txt draft-ietf-sipcore-199-06.txt
Abstract Abstract
This specification defines a new Session Initiation Protocol (SIP) This specification defines a new Session Initiation Protocol (SIP)
response code, 199 Early Dialog Terminated, that a SIP forking proxy response code, 199 Early Dialog Terminated, that a SIP forking proxy
and a User Agent Server (UAS) can use to indicate towards upstream and a User Agent Server (UAS) can use to indicate towards upstream
SIP entities (including the User Agent Client (UAC)) that an early SIP entities (including the User Agent Client (UAC)) that an early
dialog has been terminated, before a final response is sent towards dialog has been terminated, before a final response is sent towards
the SIP entities. the SIP entities.
skipping to change at page 1, line 36 skipping to change at page 1, line 36
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on August 5, 2011. This Internet-Draft will expire on September 4, 2011.
Copyright Notice Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the Copyright (c) 2011 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 16 skipping to change at page 2, line 16
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Applicability and Limitation . . . . . . . . . . . . . . . . . 4 3. Applicability and Limitation . . . . . . . . . . . . . . . . . 4
4. User Agent Client behavior . . . . . . . . . . . . . . . . . . 5 4. User Agent Client behavior . . . . . . . . . . . . . . . . . . 5
5. User Agent Server behavior . . . . . . . . . . . . . . . . . . 6 5. User Agent Server behavior . . . . . . . . . . . . . . . . . . 6
6. Proxy behavior . . . . . . . . . . . . . . . . . . . . . . . . 7 6. Proxy behavior . . . . . . . . . . . . . . . . . . . . . . . . 7
7. Backward compatibility . . . . . . . . . . . . . . . . . . . . 9 7. Backward compatibility . . . . . . . . . . . . . . . . . . . . 9
8. Usage with SDP offer/answer . . . . . . . . . . . . . . . . . 9 8. Usage with SDP offer/answer . . . . . . . . . . . . . . . . . 10
9. Message Flow Examples . . . . . . . . . . . . . . . . . . . . 10 9. Message Flow Examples . . . . . . . . . . . . . . . . . . . . 10
9.1. Example with a forking proxy which generates 199 . . . . . 10 9.1. Example with a forking proxy which generates 199 . . . . . 10
9.2. Example with a forking proxy which receives 200 OK . . . . 11 9.2. Example with a forking proxy which receives 200 OK . . . . 11
9.3. Example with two forking proxies, of which one 9.3. Example with two forking proxies, of which one
generates 199 . . . . . . . . . . . . . . . . . . . . . . 11 generates 199 . . . . . . . . . . . . . . . . . . . . . . 12
10. Security Considerations . . . . . . . . . . . . . . . . . . . 12 10. Security Considerations . . . . . . . . . . . . . . . . . . . 13
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13
11.1. IANA Registration of the 199 response code . . . . . . . . 13 11.1. IANA Registration of the 199 response code . . . . . . . . 14
11.2. IANA Registration of the 199 option-tag . . . . . . . . . 13 11.2. IANA Registration of the 199 option-tag . . . . . . . . . 14
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 13 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 14
13. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . 13 13. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . 14
14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 15
14.1. Normative References . . . . . . . . . . . . . . . . . . . 14 14.1. Normative References . . . . . . . . . . . . . . . . . . . 15
14.2. Informational References . . . . . . . . . . . . . . . . . 15 14.2. Informational References . . . . . . . . . . . . . . . . . 16
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 15 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 16
1. Introduction 1. Introduction
As defined in RFC 3261 [RFC3261], a Session Initiation Protocol (SIP) As defined in RFC 3261 [RFC3261], a Session Initiation Protocol (SIP)
early dialog is created when a non-100 provisional response is sent early dialog is created when a non-100 provisional response is sent
to the initial dialog initiation request (e.g. INVITE, outside an to the initial dialog initiation request (e.g. INVITE, outside an
existing dialog). The dialog is considered to be in early state existing dialog). The dialog is considered to be in early state
until a final response is sent. until a final response is sent.
When a proxy receives an initial dialog initiation request, it can When a proxy receives an initial dialog initiation request, it can
skipping to change at page 4, line 23 skipping to change at page 4, line 23
reject. reject.
This specification defines a new SIP response code, 199 Early Dialog This specification defines a new SIP response code, 199 Early Dialog
Terminated. A forking proxy can send a 199 provisional response to Terminated. A forking proxy can send a 199 provisional response to
inform upstream SIP entities that an early dialog has been inform upstream SIP entities that an early dialog has been
terminated. A UAS can send a 199 response code, prior to sending a terminated. A UAS can send a 199 response code, prior to sending a
non-2xx final response, for the same purpose. SIP entities that non-2xx final response, for the same purpose. SIP entities that
receive the 199 response can use it to trigger the release of receive the 199 response can use it to trigger the release of
resources associated with the terminated early dialog. In addition, resources associated with the terminated early dialog. In addition,
SIP entities might also use the 199 response to make policy related SIP entities might also use the 199 response to make policy related
decisions related to early dialogs. decisions related to early dialogs. For example, a media gate
controlling SIP entity might use the 199 response when deciding for
which early dialogs media will be passed.
Section 9 contains signalling examples that show when and how a
forking proxy generates 199 responses in different situations.
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119]. document are to be interpreted as described in RFC 2119 [RFC2119].
3. Applicability and Limitation 3. Applicability and Limitation
The 199 response code is an optimization, and it only optimizes how The 199 response code is an optimization, and it only optimizes how
skipping to change at page 4, line 46 skipping to change at page 5, line 4
not sent reliably by an UAS, and can not be sent reliably when not sent reliably by an UAS, and can not be sent reliably when
generated and sent by a proxy, it is possible that some or all of the generated and sent by a proxy, it is possible that some or all of the
199 responses get lost before they reach the recipients. In such 199 responses get lost before they reach the recipients. In such
cases, recipients will behave the same as if the 199 response code cases, recipients will behave the same as if the 199 response code
were not used at all. were not used at all.
One example for which a UAC could use the 199 response, is that when One example for which a UAC could use the 199 response, is that when
it receives a 199 response it releases resources associated with the it receives a 199 response it releases resources associated with the
terminated early dialog. The UAC could also use the 199 response to terminated early dialog. The UAC could also use the 199 response to
make policy related decisions related to early dialogs. For example, make policy related decisions related to early dialogs. For example,
if a UAC is playing media associated with an early dialog, and the it if a UAC is playing media associated with an early dialog, and it
receives a 199 response indicating the early dialog has been then receives a 199 response indicating the early dialog has been
terminated, it could start playing media associated with a different terminated, it could start playing media associated with a different
early dialog. early dialog.
Applications designers utilizing the 199 response code MUST ensure Applications designers utilizing the 199 response code MUST ensure
that the application's user experience is acceptable if all 199 that the application's user experience is acceptable if all 199
responses are lost, and not delivered to the recipients. responses are lost, and not delivered to the recipients.
4. User Agent Client behavior 4. User Agent Client behavior
When a UAC sends an initial dialog initiation request, and if it is When a UAC sends an initial dialog initiation request, and if it is
willing to receive 199 responses, it MUST insert an "199" option-tag willing to receive 199 responses, it MUST insert a "199" option-tag
in the Supported header field [RFC3261] of the request. The option- in the Supported header field [RFC3261] of the request. The option-
tag indicates that the UAC supports, and is willing to receive, 199 tag indicates that the UAC supports, and is willing to receive, 199
responses. A UAC SHOULD NOT insert an "199" option-tag in the responses. A UAC SHOULD NOT insert a "199" option-tag in the Require
Require or the Proxy-Require header field [RFC3261] of the request, or the Proxy-Require header field [RFC3261] of the request, since in
since in many cases it would result in unnecessary session many cases it would result in unnecessary session establishment
establishment failures. failures.
NOTE: The UAC always needs to insert an "199" option-tag in the NOTE: The UAC always needs to insert a "199" option-tag in the
Supported header field, in order to indicate that it supports, and is Supported header field, in order to indicate that it supports, and is
willing to receive, 199 responses, even if it also inserts the willing to receive, 199 responses, even if it also inserts the
option-tag in the Require or Proxy-Require header field. option-tag in the Require or Proxy-Require header field.
It is RECOMMENDED that a UAC does not insert an "100rel" option-tag It is RECOMMENDED that a UAC does not insert a "100rel" option-tag
[RFC3262] in the Require header field when it also indicates support [RFC3262] in the Require header field when it also indicates support
of 199 responses, unless the UAC also uses some other SIP extension of 199 responses, unless the UAC also uses some other SIP extension
or procedure that mandates it to do so. The reason is that proxies or procedure that mandates it to do so. The reason is that proxies
are not allowed to generate and send 199 responses when the UAC has are not allowed to generate and send 199 responses when the UAC has
required provisional responses to be sent reliably. required provisional responses to be sent reliably.
When a UAC receives a 199 response, it might release resources When a UAC receives a 199 response, it might release resources
associated with the terminated early dialog. A UAC might also use associated with the terminated early dialog. A UAC might also use
the 199 response to make policy related decisions related to early the 199 response to make policy related decisions related to early
dialogs. dialogs.
skipping to change at page 6, line 29 skipping to change at page 6, line 33
early dialog associated session establishment remains, it maintains early dialog associated session establishment remains, it maintains
the "Proceeding" state [RFC3261] and waits for possible subsequent the "Proceeding" state [RFC3261] and waits for possible subsequent
early dialogs to be established, and eventually for a final response early dialogs to be established, and eventually for a final response
to be received. to be received.
5. User Agent Server behavior 5. User Agent Server behavior
If a UAS receives an initial dialog initiation request, with a If a UAS receives an initial dialog initiation request, with a
Supported header field that contains a "199" option-tag, it SHOULD Supported header field that contains a "199" option-tag, it SHOULD
NOT send a 199 response on an early dialog associated with the NOT send a 199 response on an early dialog associated with the
request, before it sends a non-2xx final response, unless it e.g. has request, before it sends a non-2xx final response. Cases where a UAS
been configured to do so due to lack of support of the 199 response might send a 199 response are if it has been configured to do so due
code by forking proxies or other intermediate SIP entities, or it is to lack of support of the 199 response code by forking proxies or
used in an environment that specifies that it shall send a 199 other intermediate SIP entities, or it is used in an environment that
response before sending a non-2xx response. specifies that it shall send a 199 response before sending a non-2xx
response.
NOTE: If a UAS has created multiple early dialogs associated with an NOTE: If a UAS has created multiple early dialogs associated with an
initial dialog initiation request (the UAS is acting similar to a initial dialog initiation request (the UAS is acting similar to a
forking proxy), it does not always intend to send a final response on forking proxy), it does not always intend to send a final response on
all of those early dialogs. all of those early dialogs.
NOTE: If the Require header field of an initial dialog initiation NOTE: If the Require header field of an initial dialog initiation
request contains a "100rel" option-tag, proxies will not be able to request contains a "100rel" option-tag, proxies will not be able to
generate and send 199 responses. In such cases the UAS might choose generate and send 199 responses. In such cases the UAS might choose
to send a 199 response on an early dialog, before it sends a non-2xx to send a 199 response on an early dialog, before it sends a non-2xx
final response, even if it would not do so in other cases. final response, even if it would not do so in other cases.
If the Supported header field of an initial dialog initiation request If the Supported header field of an initial dialog initiation request
does not contain an "199" option-tag, the UAC MUST NOT send a 199 does not contain a "199" option-tag, the UAC MUST NOT send a 199
response on any early dialog associated with the request. response on any early dialog associated with the request.
When a UAS generates a 199 response, the response MUST contain a To When a UAS generates a 199 response, the response MUST contain a To
header field tag parameter [RFC3261], in order for other entities to header field tag parameter [RFC3261], in order for other entities to
identify the early dialog that has been terminated. The UAS MUST identify the early dialog that has been terminated. The UAS MUST
also insert a Reason header field [RFC3326] that contains a response also insert a Reason header field [RFC3326] that contains a response
code which describes the reason why the early dialog was terminated. code which describes the reason why the early dialog was terminated.
The UAS MUST NOT insert a "199" option-tag in the Supported, Require The UAS MUST NOT insert a "199" option-tag in the Supported, Require
or Proxy-Require header field of the 199 response. or Proxy-Require header field of the 199 response.
skipping to change at page 7, line 29 skipping to change at page 7, line 36
offer, and the 199 response is the first reliably sent response offer, and the 199 response is the first reliably sent response
associated with the request, the 199 response is required to contain associated with the request, the 199 response is required to contain
an SDP offer. In this case the UAS SHOULD send the 199 response an SDP offer. In this case the UAS SHOULD send the 199 response
unreliably, or send the 199 response reliably and include an SDP unreliably, or send the 199 response reliably and include an SDP
offer with no m- lines in the response. offer with no m- lines in the response.
Since a 199 response is only used for information purpose, the UAS Since a 199 response is only used for information purpose, the UAS
SHOULD send it unreliably, unless the "100rel" option-tag is present SHOULD send it unreliably, unless the "100rel" option-tag is present
in the Require header field of the associated request. in the Require header field of the associated request.
Once a UAS has sent a 199 response, it MUST NOT send or process any
media associated with the terminated early dialog.
6. Proxy behavior 6. Proxy behavior
When a proxy receives a 199 response to an initial dialog initiation When a proxy receives a 199 response to an initial dialog initiation
request, it MUST process the response as any other non-100 request, it MUST process the response as any other non-100
provisional response. The proxy will forward the response upstream provisional response. The proxy will forward the response upstream
towards the sender of the associated request. The proxy MAY release towards the sender of the associated request. The proxy MAY release
resources it has reserved associated with the early dialog that is resources it has reserved associated with the early dialog that is
terminated. If a proxy receives a 199 response out of dialog, it terminated. If a proxy receives a 199 response out of dialog, it
MUST process it as other non-100 provisional responses received out MUST process it as other non-100 provisional responses received out
of dialog. of dialog.
skipping to change at page 9, line 22 skipping to change at page 9, line 25
response, it MUST forward the 199 response. If a proxy receives an response, it MUST forward the 199 response. If a proxy receives an
unreliably sent 199 response, for which it has previously generated unreliably sent 199 response, for which it has previously generated
and sent a 199 response, it MAY forward the response, or it MAY and sent a 199 response, it MAY forward the response, or it MAY
discard it. discard it.
When a forking proxy generates and sends a 199 response, the response When a forking proxy generates and sends a 199 response, the response
SHOULD NOT contain a Contact header field or a Record-Route header SHOULD NOT contain a Contact header field or a Record-Route header
field [RFC3261]. field [RFC3261].
If the Require header field of an initial dialog initiation request If the Require header field of an initial dialog initiation request
contains an "100rel" option-tag, a proxy MUST NOT generate and send contains a "100rel" option-tag, a proxy MUST NOT generate and send
199 responses associated with that request. The reason is that a 199 responses associated with that request. The reason is that a
proxy is not allowed to generate and send 199 responses reliably. proxy is not allowed to generate and send 199 responses reliably.
7. Backward compatibility 7. Backward compatibility
Since all SIP entities involved in a session setup do not necessarily Since all SIP entities involved in a session setup do not necessarily
support the specific meaning of the 199 Early Dialog Terminated support the specific meaning of the 199 Early Dialog Terminated
provisional response, the sender of the response MUST be prepared to provisional response, the sender of the response MUST be prepared to
receive SIP requests and responses associated with the dialog for receive SIP requests and responses associated with the dialog for
which the 199 response was sent (a proxy can receive SIP messages which the 199 response was sent (a proxy can receive SIP messages
 End of changes. 16 change blocks. 
35 lines changed or deleted 38 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/