On 11/01/2010 05:24 PM, Vic Jolin wrote:
That's interesting, can you tell me more about that draft?
Hello
I have attached the draft.
There are 2 setups for using end-to-end OPTIONS ping
1. In Dialog... if one of the endpoints is a B2BUA, it can send at
specific interval in-dialog OPTIONS ping (OPTIONS request, increasing
cseq) to the other endpoint. Most well-behaved UAS will respond with a
481 if the dialog not longer exists as per RFC 3261 .
"The response to an OPTIONS is
constructed using the standard rules for a SIP response as discussed
in Section 8.2.6. The response code chosen MUST be the same that
would have been chosen had the request been an INVITE.
"
Other error conditions are on a 408 , 404 etc (as any in-dialog request
is not guaranteed to succeed).
This is already used some production environments.
2. Out of dialog. A proxy keeps sending OPTIONS request (no dialog
involved here) to one of the UA as long as one of these 2 conditions exist:
a. the dialog has not ended via a method specific mean (BYE for INVITE etc)
b. a 408 (or other error codes) was received when generating a BYE.
These where the big two points of the draft.
Marius
On Mon, Nov 1, 2010 at 11:18 PM, marius zbihlei
<marius.zbih...@1and1.ro <mailto:marius.zbih...@1and1.ro>> wrote:
On 11/01/2010 05:13 PM, Vic Jolin wrote:
Hi,
Just want to ask what is the best way to check if calls are
still active especially when we are not handling media?
Thanks
Hello
There is SST (Sip Session Timers RFC 4028), which is implemented
in the SST module, but at least 1 UA must know the extension. Also
I have been working on a IETF draft to use end-to-end OPTIONS
ping to determine the operational status of a UA.(it works well
with B2BUA, relatively well with stateful proxies). If you are
interested I can talk more about the draft and how I propose using
OPTIONS requests for this.(no changes on UAs are necessary)
Marius.
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
list
sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Network Working Group M. Zbihlei
Internet-Draft 1and1 Internet AG
Expires: February 2, 2011 August 2010
Draft-mzbihlei-end-to-end-OPTIONS-ping-01
Abstract
For VoIP providers, a common problem is related with finding the
state of a dialog in certain error conditions that are caused by
network problems, User Agent(UA) crashes etc. This document
describes a procedure for using the Session Initiation Protocol (SIP)
OPTIONS method in order to allow a SIP entity to discover the status
of a UA and decide the state of the dialog.
Status of this Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on February 2, 2011.
Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Zbihlei Expires February 2, 2011 [Page 1]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
1. Introduction
Given the multitude of parties involved in a SIP Call, a common
problem for providers is determining the status of the caller/callee
during a dialog. There are methods for making SIP enabled networks
robust and efficient by providing redundancy at hardware or service
level, but this is not the case for most UAs. Hardware problems,
software crashes, power failures are factors in the way a UA behaves,
affecting billing, QoS etc. These problems have a far greater impact
in the case the error condition happens in-dialog, in most cases the
dialog state on the proxy being affected (BYEs are not sent,
responded etc).
Zbihlei Expires February 2, 2011 [Page 2]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
2. Conventions used in this document
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
[refs.RFC2119]
Zbihlei Expires February 2, 2011 [Page 3]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
3. Required Support
Transmission of the OPTIONS message between any two entities is
optional. The SIP specification requires that all user agents
support the OPTIONS message. To comply with procedures described in
this document, all SIP entities, including SIP user agents and proxy
servers, MUST support the OPTIONS message when received either
outside or inside of a dialog in accordance with this memo.
Zbihlei Expires February 2, 2011 [Page 4]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
4. Problem Statement
It is often necessary(for billing purposes) to query the status of a
User Agent. This can be done by an endpoint of the dialog (an User
Agent or a B2BUA), or by a entity like a stateful proxy(that is, to
servers that maintain the state of calls and dialogs established
through them) found in the path of the communication.
This memo proposes the use of OPTIONS (called an OPTIONS ping) to
determine the operational status of an UA and provides a mechanism to
decide if a session has ended without receiving a BYE (or other
request specific mechanism of ending sessions).
This memo does not replace the use of OPTIONS as describe in RFC 3261
[refs.RFC3261], but does further expand on use of OPTIONS to discover
the status of a UA, as per RFC 3261 Section 11.2. This memo does no
impose any new requirements on the underlying transport protocol.
Zbihlei Expires February 2, 2011 [Page 5]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
5. Procedure for Using OPTIONS to Query for Operational Status
This memo relies on the fact that each SIP entity must respond to a
OPTIONS request. To adhere to this specification, an entity present
MUST also transmit OPTIONS messages as described below.
The Section 5.1 and Section 5.2 sections will describe two methods of
using OPTIONS ping available to SIP entities to determine the status
of a UA.
5.1. Using Out-of-Dialog (OOD) OPTIONS requests
5.1.1. Overview
A stateful proxy or a B2BUA that keeps track of SIP dialogs (as
defined in RFC 3261 Section 12), wants to have the capability to
decide at any time the state of a session. In normal usage, session
are ended by sending a method specific request, most of the times a
BYE request(only method as per RFC 3261).
In an error case that affects a UA, like hardware or software
failure, network errors, power failures, a BYE might never be
generated, and thus the dialog is accounted by the proxy for a longer
time than necessary, resulting in incorrect billing, resource
exhaustion and other possible problems.
When initiating a session(by receiving a 2xx for an INVITE request),
a SIP entity adhering to this memo will query the UA periodically
regarding its status. This is done by generating, at a certain
interval, an OPTIONS requests and waiting for a suitable answer. For
a proxy to be able to send the OPTIONS request, it MUST be stateful
and MUST perform record-routing(so it keeps itself in the path of the
sequential dialog requests).
5.1.2. Generating and Transmitting OPTIONS requests
The OPTIONS requests are generated after a session is established.
The proxy keeps generating OPTIONS requests on a specific interval,
until one the following conditions is true:
o the session has ended through normal means (e.g. A BYE was
received)
o a OPTIONS request is not answered in a timely manner, or a status
code indicating an error has been received (described below)
The OPTIONS request is generated accordingly to RFC 3261 and has the
following particularities:
Zbihlei Expires February 2, 2011 [Page 6]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
o it MUST not have a To-tag (this is an OOD request)
o it SHOULD not have any Accept:, Require:, or Supported: header
fields.
5.1.3. Handling of response status codes
As per RFC 3261 section 12.2, an OPTIONS response code MUST be the
same that would have been chosen had the request been an INVITE.
Response status codes that mark error conditions:
o 404(User not Found), 408(Timeout), 410(Gone), 416(Unsupported URI
Scheme), 485(Ambiguous), 502(Bad Gateway), 604(Does not exist
anywhere)
Response status codes that mark normal conditions:
o 200, 486(Busy Here), other status codes that do not mark error
conditions.
5.1.4. Proxy behavior
When a response to an generated OPTIONS request has a status that
marks an error as described in Section 5.1.3, the proxy MAY remove
associated call state, and MAY free any resources associated with the
call.
5.1.5. Deployment Model
A Home Proxy is defined as a proxy serving as the terminal point for
routing an address-of-record. Intermediate proxies are defined as
proxies in the routing path that are not Home proxies. It is useful
to set up OOD OPTIONS ping on the Home Proxy for a specific user.
This will ensure that only one Proxy handles the OPTIONS ping
transmission for the User Agent.
The Proxy will use the same method for sending OPTIONS ping to the
User Agent as taken when routing the original request. The method
can be either directly, as that proxy knows the Address Of Record
binding and can send it to the specific SIP URI(Contact), or by means
of RFC 3327 [refs.RFC3227] which specifies a Path that all requests
for that specific user must take. This will ensure that the OPTIONS
request will follow the same routing path downstream as the request
which created the dialog. Any error code, as described in
Section 5.1.3, received during the OPTIONS request processing will
mean that the dialog state might not be consistent.
Zbihlei Expires February 2, 2011 [Page 7]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
5.2. Using In-Dialog OPTIONS requests
5.2.1. Overview
As per RFC 3261 Section 11.2 "The response to an OPTIONS is
constructed using the standard rules for a SIP response as discussed
in Section 8.2.6. The response code chosen MUST be the same that
would have been chosen had the request been an INVITE.". This means,
that a in-dialog OPTIONS request generated bye the one of the UAs,
SHOULD be answered with a 481 (Call does not exit) if the other UA
has no state indicating the dialog is still valid.(the same as a re-
INVITE in a dialog that does not exist).
For simplicity's sake, this section of the memo will only consider
OPTIONS request generated by the UA that initiated the dialog(this
might be a B2BUA)
5.2.2. Generating and Transmitting OPTIONS requests
The OPTIONS requests are generated when a dialog is established. The
UAC keeps generating OPTIONS requests on a specific interval, until
one the following conditions is true: * the dialog has ended through
normal means (e.g. A BYE was received) * a OPTIONS request is not
answered in a timely manner, or a status code indicating an error has
been received (described below)
The OPTIONS request are sent in-dialog and they follow the rules
described in RFC 3261 Section 12.2.1.
5.2.3. Handling of response status codes
Response status codes that mark error conditions:
o 404(User not Found), 408(Timeout), 410(Gone), 416(Unsupported URI
Scheme), 485(Ambiguous), 502(Bad Gateway), 604(Does not exist
anywhere), 481(Call does not exit)
Response status codes that mark normal conditions:
o 200, 486(Busy Here), other status codes that do not mark error
conditions.
As opposed to out-of-dialog OPTIONS ping, there is one added error
code, namely 481.
If the OPTIONS ping transaction times out or generates an error
response as described above, then the UAC sends a BYE request as per
Section12.2.1.2 of RFC 3261 [2]. If the OPTIONS request does not
Zbihlei Expires February 2, 2011 [Page 8]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
generate a 2xx response, the UAC SHOULD follow the rules specific to
that response code and retry if possible. For example, if receiving
a 500 or a unknown 5xx reply which contains Retry-After header field
value, the server thinks the condition is temporary, and the request
can be retried after the indicated interval. If the response does
not contain a Retry-After header field value, the UA may decide to
retry after an specific interval.
5.2.4. UAC behavior
In concordance with RFC 3261, a 408 or a 481 received as an answer to
an OPTIONS ping will not cause the dialog to be closed on the UAC,
but instead a BYE MUST be sent (or a method specific request), thus
allowing downstream entities to update their session information.
5.2.5. Deployment models
The recommended usage for In-Dialog OPTIONS ping as described in this
draft is at a B2BUA/SBC level. These SIP entities, part of a SIP
enabled network, play to part of either UAC or UAS in SIP Dialogs.
Zbihlei Expires February 2, 2011 [Page 9]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
6. Frequency of Message Transmission
Any two entities that communicate with each other on a regular basis
MAY be configured to transmit an OPTIONS message from time to time as
provisioned by the network administrator. The frequency with which
an OPTIONS message is transmitted is outside the scope of this
document. Having said that, the frequency with which OPTIONS
messages are transmitted SHOULD NOT place an undue burden on SIP
entities.
The minimum value for the interval is the transaction time-out
interval (defined as 64*T1), as no new OPTIONS transaction should be
created before the previous one was either answered or timed-out.
Zbihlei Expires February 2, 2011 [Page 10]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
7. Security Considerations
All security considerations applicable to RFC 3261 apply to this RFC.
Since an OPTIONS message transmitted outside of a dialog might be
used to probe the network for active SIP user agents or proxy servers
in preparation for an attack, network administrators SHOULD consider
methods that would prevent the reception of OPTIONS messages from
hosts or networks that are not trusted.
Zbihlei Expires February 2, 2011 [Page 11]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
8. IANA Considerations
Zbihlei Expires February 2, 2011 [Page 12]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
9. Acknowledgments
Zbihlei Expires February 2, 2011 [Page 13]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
10. References
[refs.RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", March 1997.
[refs.RFC3261]
Rosenberg, R., "SIP: Session Initiation Protocol",
June 2002.
[refs.RFC3227]
Willis, D., "Session Initiation Protocol (SIP) Extension
Header Field for Registering Non-Adjacent Contacts",
December 2002.
Zbihlei Expires February 2, 2011 [Page 14]
Internet-Draft End-to-end SIP OPTIONS Ping August 2010
Author's Address
Marius Zbihlei
1and1 Internet AG
Zbihlei Expires February 2, 2011 [Page 15]
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users