Subject: [Insipid] 3pcc INSIPID backwards-compat call flows

From: Hadriel Kaplan <[email-masked]>
Date: Sat, 17 Aug 2013 10:08:25 -0400

Howdy,
I was tasked with providing example call flows for a backwards-compatible Session-ID mechanism, for the call flows in the current draft-ietf-insipid-session-id-02.  

For all the email call-flows, a syntax of "{X;Y}" means the Session-ID header value is 'X', while the Session-ID header parameter is 'Y'.  The parameter can change within a dialog, including becoming empty/no-value again, while the Session-ID value cannot change.

For all the email call-flows, the Section heading from the current draft is used, along with a copy of the intro text, to help give context.  The intro text has not been changed.  The call flows have been updated to show the new "{X;Y}" values, and in some cases additional text has been added below the call flow to explain specific events.

This email covers the 3PCC call flow, and the 100 Trying call flow.

---------------------------------------------------------------------------

9.7. Basic 3PCC for two UAs

   External entity sets up call to both Alice and Bob for them to talk
   to each other.

      Session ID
         ---     Alice            B2BUA             Bob            Carol
                   |                |                |
         {X}       |<----INVITE-----|                |
        {X;A}      |-----200 OK---->|                |
         {X}       |                |----INVITE----->|
        {X;B}      |                |<---200 OK------|
 F1     {X;B}      |<-----ACK-------|                |
        {X;B}      |                |------ACK------>|
                   |<==============RTP==============>|

            Figure 8 - 3PCC initiated call between Alice and Bob

F1 - Note that at this point Alice gets a new Session-ID parameter from the B2BUA, and this replaces the 'A' she had previously generated.  The Session-ID value itself of 'X' does not change.

---------------------------------------------------------------------------

9.8.1. Session ID Handling in a 100 Trying SIP Response

   The following 100 Trying response is taken from an existing RFC, from
   
[RFC5359] Section 2.9
 ("Call Forwarding - No Answer").

    Session ID   Alice         SIP Server        Bob-1            Bob-2
                   |                |              |                |
       {A}         |----INVITE----->|              |                |
       {A}         |                |---INVITE---->|                |
       {A}         |<--100 Trying---|              |                |
      {A;B1}       |                |<-180 Ringing-|                |
      {A;B1}       |<--180 Ringing--|              |                |
                   |                |              |                |
                   |                *Request Timeout*               |
                   |                |              |                |
      {A;B1}       |                |---CANCEL---->|                |
      {A;B1}       |                |<--200 OK-----|                |
      {A;B1}       |                |<---487-------|                |
      {A;B1}       |                |---- ACK ---->|                |
                   |                |              |                |
 F1    {A}         |<-181 Call Fwd--|              |                |
                   |                |              |                |
       {A}         |                |------------------INVITE------>|
      {A;B2}       |                |<----------------180 Ringing---|
 F2   {A;B2}       |<-180 Ringing---|              |                |
      {A;B2}       |                |<-----------------200 OK ------|
      {A;B2}       |<--200 OK-------|              |                |
      {A;B2}       |----ACK-------->|              |                |
      {A;B2}       |                |------------------ACK--------->|
                   |                |              |                |
                   |<=========== Both way RTP Established =========>|
                   |                |              |                |
      {A;B2}       |----BYE-------->|              |                |
      {A;B2}       |                |--------------------BYE------->|
      {A;B2}       |                |<------------------200 OK------|
      {A;B2}       |<--200 OK-------|              |                |
                   |                |              |                |

       Figure 9 - Session ID in the 100 Trying and CANCEL Messaging

F1 - Note that at this point Alice gets no Session-ID parameter from the SIP Server, while in a previous 180 there was a 'B1'.  Alice updates her stored Session-ID parameter to be empty.

F2 - Note that at this point Alice gets a new Session-ID parameter from the SIP Server of 'B2'.  Alice updates her stored Session-ID parameter to be 'B2'.

-hadriel