Internet DRAFT - draft-gaoyang-sipping-session-state-criterion
draft-gaoyang-sipping-session-state-criterion
sipping Y. Gao
Internet-Draft ZTE
Intended status: Standards Track March 6, 2009
Expires: September 7, 2009
The Criterion of Session State
draft-gaoyang-sipping-session-state-criterion-03.txt
Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79. This document may not be modified,
and derivative works of it may not be created, and it may not be
published except as an Internet-Draft.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
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."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on September 7, 2009.
Copyright Notice
Copyright (c) 2009 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 in effect on the date of
publication of this document (http://trustee.ietf.org/license-info).
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document.
Gao Expires September 7, 2009 [Page 1]
Internet-Draft The Criterion of Session State March 2009
Abstract
There is debate on the topic of "Commit/Rollback of Offer/Answer on
Unsuccessful re-INVITE". The reason of the confusion is some
application/session usages of offer/answer imply the nest
transaction(mean transaction theory, not mean sip transaction)
concept, but whitout unambiguous definition. This paper reveal the
concept of nest transactions in current RFC and other well known
application/session usages. And then clarify that there is no
ambiguous state of session modification using current RFC definition.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Atomicity's semantics . . . . . . . . . . . . . . . . . . . . 4
2.1. Atomicity's semantics of UPDATE . . . . . . . . . . . . . 4
2.2. Atomicity's semantics of Re-INVITE . . . . . . . . . . . . 4
2.3. Combination of the two ones . . . . . . . . . . . . . . . 4
2.3.1. Is precondition use-case violation of RFC3311 . . . . 5
2.4. Dialog state and session state clarification . . . . . . . 5
2.4.1. There is target refresh and session modification
during Re-INVITE . . . . . . . . . . . . . . . . . . . 5
2.4.2. There is only target refresh during Re-INVITE . . . . 5
2.4.3. The UPDATE/200OK has target refresh and refreshing
the precondtion state table . . . . . . . . . . . . . 6
3. Why nested transaction . . . . . . . . . . . . . . . . . . . . 7
3.1. Nested transaction concept in current RFCs . . . . . . . . 7
3.1.1. Precondition . . . . . . . . . . . . . . . . . . . . . 7
3.1.2. Late commitment of Re-INVITE 200OK . . . . . . . . . . 7
3.2. Opened for evolution and extension in the future . . . . . 7
4. The Criterion . . . . . . . . . . . . . . . . . . . . . . . . 9
4.1. Rules for current nested-transaction usages . . . . . . . 9
4.2. Explanation for some concepts . . . . . . . . . . . . . . 9
4.3. This proposal has no racing condition . . . . . . . . . . 9
5. Acknowledgment . . . . . . . . . . . . . . . . . . . . . . . . 12
6. Normative references . . . . . . . . . . . . . . . . . . . . . 13
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 14
Gao Expires September 7, 2009 [Page 2]
Internet-Draft The Criterion of Session State March 2009
1. Introduction
There has been some confusion among dialog state and session state
after unsuccessful Re-INVITE. In this document, we clarify that
there is no ambiguous dialog state and session state by current RFC
definition.
Gao Expires September 7, 2009 [Page 3]
Internet-Draft The Criterion of Session State March 2009
2. Atomicity's semantics
As we know, atomicity's semantics is "all or nothing". And if new
modification is acceptted, the older pending one would be
discarded(that is the semantics of "nothing").
2.1. Atomicity's semantics of UPDATE
In RFC3311, when the UPDATE is accepted by the other side(UPDATE/
200OK), the change of states is committed and effort at once. If the
other side can not accept it at once, it can reject it by 504. The
semantics is clear, and, the states including "dialog state" and
"session state".
2.2. Atomicity's semantics of Re-INVITE
If people want to form everything during Re-INVITE as a big nested
transaction, there are problems as:
o Casecade of the nested transaction must have specific definition at
first.
o Racing condition again(during or not during).
o Violation of the RFC3311: If the session description has changed,
the UAS MUST adjust the session parameters accordingly and generate
an answer in the 2xx response.
So, the modifications associated with Re-INVITE is the ones in Re-
INVITE, not during Re-INVITE. So, I use the words "modification
triggered by Re-INVITE" to distinguish from the later modification
during Re-INVITE. The states including "dialog state" and "session
state".
2.3. Combination of the two ones
Except for later Offer/Answer pairs which are used as "refreshing the
precondtion state table" during suspending state of session, any new
Offer/Answer MUST be treated as a new modification. If a new
modification is acceptted, the older pending one discard(that is the
"nothing").
The discarding of the older pending one(Re-INVITE) obeys RFC3261.
And commitment of the new one obeys RFC3311.
Gao Expires September 7, 2009 [Page 4]
Internet-Draft The Criterion of Session State March 2009
2.3.1. Is precondition use-case violation of RFC3311
In RFC3312, there can be UPDATE/200OK used as "refreshing the
precondtion state table" before failure of Re-INVITE. And the
anticipated session state is the one before Re-INVITE. Is this
violation of Re-INVITE?
First, we should make sure the effect of the later Offer/Answer pairs
which are used as "refreshing the precondtion state table" during
suspending state of session. By RFC3312, these Offer/Answer pairs
just refresh the precondtion state table, but it has no impact on the
commitment of the modification.
Then, as the UAs has adjusted the session parameters(refresh the
precondtion state table) accordingly, it obeys RFC3311.
And as current pending session modification is still the one
triggered by Re-INVITE, and it is discarded for the failure of Re-
INVITE. This obeys RFC3261.
2.4. Dialog state and session state clarification
Let's use some examples to show the concept mentioned above.
2.4.1. There is target refresh and session modification during Re-
INVITE
Re-INVITE failed, nothing in it is committed. This obeys RFC3261.
The committed target refresh and session modification is by UPDATE/
200OK. This obeys RFC3311.
signaling | O/A state | remote target
---------------------+-----------+--------------
init-INVITE/200/ACK | state1 | c1
re-INVITE/183-rel | state2 | c2
PRACK/200OK | [noSDP] | -
UPDATE/200OK | state3 | c3
4xx/ACK | state3 | c3
Figure 1
2.4.2. There is only target refresh during Re-INVITE
Re-INVITE failed, nothing in it is committed. This obeys RFC3261.
The committed target refresh is by UPDATE/200OK. This obeys RFC3311.
Gao Expires September 7, 2009 [Page 5]
Internet-Draft The Criterion of Session State March 2009
signaling | O/A state | remote target
---------------------+-----------+--------------
init-INVITE/200/ACK | state1 | c1
re-INVITE/183-rel | state2 | c2
PRACK/200OK | [noSDP] | -
UPDATE/200OK | [noSDP] | c3
4xx/ACK | state1 | c3
Figure 2
2.4.3. The UPDATE/200OK has target refresh and refreshing the
precondtion state table
Re-INVITE failed, nothing in it is committed. This obeys RFC3261.
The committed target refresh is by UPDATE/200OK. This obeys RFC3311.
The committed "refreshing the precondtion state table" is by UPDATE/
200OK.
But the session state is given up by 4xx of Re-INVITE.
signaling | O/A state | remote target
---------------------+-----------+--------------
init-INVITE/200/ACK | state1 | c1
re-INVITE/183-rel | state2 | c2
PRACK/200OK | [noSDP] | -
UPDATE/200OK | state2.1 | c3
4xx/ACK | state1 | c3
Figure 3
Gao Expires September 7, 2009 [Page 6]
Internet-Draft The Criterion of Session State March 2009
3. Why nested transaction
Chapter 2 reveals the necessity of a new solution for session state.
And this chapter is about why the new solution is based on the
concept of nested-transaction.
3.1. Nested transaction concept in current RFCs
3.1.1. Precondition
As RFC3312(Quality-of-Service precondition)\4032(Precondition
Framework)\5027(Security Preconditions) defines, session
establishment and modification suspended until precondtion is
satisfied. And during the suspended state, there can be Offer/Answer
pairs used as precondition notification.
This is a typical nested transaction using Offer/Answer pairs as sub-
transaction.
3.1.2. Late commitment of Re-INVITE 200OK
As RFC3261 defines, for unsuccessful Re-INVITE, the session
parameters MUST remain unchanged, as if no re-INVITE had been issued.
This is about session modification triggered by Re-INVITE. And the
"Late commitment of Re-INVITE 200OK" just corresponds to the
modification triggered by the Re-INVITE. A new modification during
the Re-INVITE has nothing to do with the final response of Re-INVITE,
such as UPDATE with a new modification.
This is also a typical nested transaction using Offer/Answer pair as
sub-transaction. And it is intuitionistic requirement for rejecting
session modification.
What MUST be pointed out is that, by RFC3262, Offer/Answer of the
modification triggered by Re-INVITE can be exchanged before final
response. In signal level, the modification is in pending state and
waits for late commitment. But in media level, the new session
parameters can be used. And this obeys RFC3264 and RFC3262.
3.2. Opened for evolution and extension in the future
We should accept the idea that using offer/answer as sub-transaction
of modification should be open for the future extension. For
example, in the future we can define a complex application which need
negotiation of session parameter using more than one offer/answer
pairs for one modification, just like "Precondition".
As nested transaction is the natural property of session modification
Gao Expires September 7, 2009 [Page 7]
Internet-Draft The Criterion of Session State March 2009
and it is important for evolution and extension in the future, so the
new solution is based on the concept of nested-transaction.
Gao Expires September 7, 2009 [Page 8]
Internet-Draft The Criterion of Session State March 2009
4. The Criterion
4.1. Rules for current nested-transaction usages
"Late commitment of Re-INVITE 200OK" contains "Precondition". And
that is "Precondition" can be sub-transaction of "Late commitment of
Re-INVITE 200OK" to form a bigger nested-transaction. And this is
practical for session modification with precondition using Re-INVITE.
Rule 1: Late commitment of the modification triggered by Re-INVITE is
200OK. Before the 200OK, the modification is in pending state in the
point of view of signal level. If the Re-INVITE is unsuccessful, the
pending modification MUST rollback.
Rule 2: Precondition notification is part of the original
modification.
Rule 3: when a new modification succeeds during the pending state of
the previous modification, the new one MUST be committed and the
original one discarded.
Rule 4: when a new modification request is rejected during the
pending state of the previous modification, the original one can go
on.
4.2. Explanation for some concepts
Precondition notification is later Offer/Answer pair which is used as
"refreshing the precondtion state table" during suspending state of
session. Except for Precondition notification, any new Offer/Answer
MUST be treated as a new modification.
4.3. This proposal has no racing condition
As the new modification has been committed and its state have nothing
to do with F8, the problem of racing condition(4xx of Re-INVITE and
UPDATE) described in 6.2 of "draft-ietf-sipping-sip-offeranswer" does
not exist.
Gao Expires September 7, 2009 [Page 9]
Internet-Draft The Criterion of Session State March 2009
Racing condition of 4xx of Re-INVITE and UPDATE
UAC UAS
| session established |
|===================|
| |
| F1 re-INVITE (SDP) |
|--------------------|
| F2 1xx-rel (SDP) |
|--------------------|
| F3 PRACK |
|--------------------|
| F4 2xx PRA |
|--------------------|
| |
|F5 UPDATE F6 2xx INV |
|---------\ /--------|
| \/ |
| /\ |
|--------/ \-------| - UPDATE request inclue a new
| | modification
Figure 4
Currently, there are only two cases for the Offer in UPDATE:
o precondtion notification;
o a new modification request.
If it is precondtion notification, the session state is clear. That
is committed state of the modification triggered by F1.
If it is a new modification request, there are only two cases for the
UPDATE:
o accepted by 200OK;
o rejected by 4xx/5xx/6xx, such as 504.
If it is accepted by 200OK, the new modification is committed. And
the session state is committed state of the modification triggered by
F5.
If it is rejected, and the original modification failed, the session
state is one before F1.
Gao Expires September 7, 2009 [Page 10]
Internet-Draft The Criterion of Session State March 2009
So, the session state is clear for this situation. And the solution
is racing condition free.
Gao Expires September 7, 2009 [Page 11]
Internet-Draft The Criterion of Session State March 2009
5. Acknowledgment
Thanks Gonzalo Camarillo, OKUMURA Shinji, Ian Elz and Christer
Holmberg for discussion.
Gao Expires September 7, 2009 [Page 12]
Internet-Draft The Criterion of Session State March 2009
6. Normative references
[I-D.ietf-sipping-sip-offeranswer]
Sawada, T. and P. Kyzivat, "SIP (Session Initiation
Protocol) Usage of the Offer/Answer Model",
draft-ietf-sipping-sip-offeranswer-08 (work in progress),
April 2008.
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261,
June 2002.
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
with Session Description Protocol (SDP)", RFC 3264,
June 2002.
[RFC3311] Rosenberg, J., "The Session Initiation Protocol (SIP)
UPDATE Method", RFC 3311, October 2002.
[RFC3312] Camarillo, G., Marshall, W., and J. Rosenberg,
"Integration of Resource Management and Session Initiation
Protocol (SIP)", RFC 3312, October 2002.
[RFC4032] Camarillo, G. and P. Kyzivat, "Update to the Session
Initiation Protocol (SIP) Preconditions Framework",
RFC 4032, March 2005.
Gao Expires September 7, 2009 [Page 13]
Internet-Draft The Criterion of Session State March 2009
Author's Address
Gao yang
ZTE
CHINA
Email: gao.yang2@zte.com.cn
Gao Expires September 7, 2009 [Page 14]