INVITE dialogs

Pamela Zave <[email protected]>
Newsgroups gmane.ietf.sip,gmane.ietf.sipping
Message-ID <[email protected]>
The material appended to this note consists of four scenarios.  Each is
(I believe) a race condition not described in
    draft-ietf-sipping-race-examples-06
You will need to view this message in a fixed-width font.

These were discovered by analysis of a formal model of INVITE dialogs,
as posted on
    http://www.research.att.com/~pamela/sip.html

What do you think?

Pamela Zave



SCENARIO 1.  This scenario occurs within a confirmed dialog.

       UAC                                                     UAS

                               re-INVITE 1
         <------------------------------------------------------
                                 no sdp

                             200(re-INVITE 1)
         ------------------------------------------------------>
                                 offer
                                                           ACK 1
                                       -------------------------
                                      /                   answer
                                     /   re-INVITE 2
       ! <--------------------------/---------------------------
                                   /        offer
                                  /
         <------------------------

                             200(re-INVITE 2)
         ------------------------------------------------------>
                                 answer

                                  ACK 2
         <------------------------------------------------------

At the point marked "!", the UAC cannot respond to the re-INVITE
immediately.  It must buffer this request until it receives ACK 1,
which completes the ongoing offer/answer exchange.

SCENARIO 2.

       UAC                                                     UAS

                  ini-INVITE
         ------------------------------------------------------>
                     offer
                                             183(reliable) 1
         <------------------------------------------------------
                                                 answer
                     PRACK 1
         ------------------------------------------------------>
                     no sdp
                                              200(PRACK 1)
         <------------------------------------------------------

                  UPDATE                      183(reliable) 2
         -------------------------     -------------------------
                  offer            \ /            offer
                                    x
                                   / \
       ! <------------------------     ------------------------>

                                491(UPDATE)
         <------------------------------------------------------

                                  PRACK 2
         ------------------------------------------------------>
                                 answer

                                              200(PRACK 2)
         <------------------------------------------------------

At the point marked "!", the UAC cannot respond to the 183 immediately,
although immediate response is required by the standard.  Rather, it  
must
wait until it receives the response to the UPDATE, which will terminate
the ongoing offer/answer exchange.  The UAC CANNOT assume that the  
update
will fail, because it may succeed, as shown in the next scenario.

SCENARIO 3.  This scenario has roughly the same problem as Scenario 2,
although the race condition that causes it is different.

       UAC                                                     UAS

                  ini-INVITE
         ------------------------------------------------------>
                     offer
                                             183(reliable) 1
         <------------------------------------------------------
                                                 answer
                     PRACK 1
         ------------------------------------------------------>
                     no sdp
                                              200(PRACK 1)
         <------------------------------------------------------

                                  UPDATE
         ------------------------------------------------------>
                                  offer

                                              200(UPDATE)
                                       -------------------------
                                      /          answer
                                     /
       ! <--------------------------/---------------------------
                                   /    183(reliable,offer) 2
                                  /
         <------------------------

                                  PRACK 2
         ------------------------------------------------------>
                                  answer

                                200(PRACK 2)
         <------------------------------------------------------

SCENARIO 4.

       UAC                                                     UAS

                  ini-INVITE
         ------------------------------------------------------>
                     offer
                                             183(reliable)
         <------------------------------------------------------
                                                 answer
                     PRACK
         ------------------------------------------------------>
                     offer

                                                  200(PRACK)
                                          ----------------------
                                         /          answer
                                        /
                                       /      200(ini-INVITE)
         <----------------------------/-------------------------
                                     /            no sdp
                                    /
              ACK                  /
         -------------------------/---------------------------->
                                 /
                                /              re-INVITE
       ! <---------------------/--------------------------------
                              /                  offer
                             /
         <-------------------

                                 200(re-INVITE)
         ------------------------------------------------------>
                                     answer

                                                          ACK
         <------------------------------------------------------

At the point marked "!", the UAC cannot respond to the re-INVITE
immediately.  It must buffer this request until it receives 200(PRACK),
which completes the ongoing offer/answer exchange.

_______________________________________________
Sip mailing list  https://www.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [email protected] for questions on current sip
Use [email protected] for new developments on the application of sip
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.