Re: [sipcore] Verify draft-ietf-sipcore-rfc4244bis-callflows-02.txt

worley@ariadne.com (Dale R. Worley) Fri, 01 March 2013 21:19 UTC

Return-Path: <worley@shell01.TheWorld.com>
X-Original-To: sipcore@ietfa.amsl.com
Delivered-To: sipcore@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 66DAE1F0D0B for <sipcore@ietfa.amsl.com>; Fri, 1 Mar 2013 13:19:17 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.767
X-Spam-Level:
X-Spam-Status: No, score=-2.767 tagged_above=-999 required=5 tests=[AWL=0.213, BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1, RCVD_IN_SORBS_WEB=0.619]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TCvt8oXoMvvs for <sipcore@ietfa.amsl.com>; Fri, 1 Mar 2013 13:19:16 -0800 (PST)
Received: from TheWorld.com (pcls5.std.com [192.74.137.145]) by ietfa.amsl.com (Postfix) with ESMTP id D7A6A1F0D0C for <sipcore@ietf.org>; Fri, 1 Mar 2013 13:19:15 -0800 (PST)
Received: from shell.TheWorld.com (svani@shell01.theworld.com [192.74.137.71]) by TheWorld.com (8.14.5/8.14.5) with ESMTP id r21LJ1TP022887 for <sipcore@ietf.org>; Fri, 1 Mar 2013 16:19:03 -0500
Received: from shell01.TheWorld.com (localhost.theworld.com [127.0.0.1]) by shell.TheWorld.com (8.13.6/8.12.8) with ESMTP id r21LJ0852855872 for <sipcore@ietf.org>; Fri, 1 Mar 2013 16:19:00 -0500 (EST)
Received: (from worley@localhost) by shell01.TheWorld.com (8.13.6/8.13.6/Submit) id r21LJ0mg2857344; Fri, 1 Mar 2013 16:19:00 -0500 (EST)
Date: Fri, 01 Mar 2013 16:19:00 -0500
Message-Id: <201303012119.r21LJ0mg2857344@shell01.TheWorld.com>
From: worley@ariadne.com
Sender: worley@ariadne.com
To: sipcore@ietf.org
In-reply-to: <580BEA5E3B99744AB1F5BFF5E9A3C67D16E36595DB@HE111648.emea1.cds.t-internal.com> (R.Jesske@telekom.de)
References: <20130129204912.30730.77135.idtracker@ietfa.amsl.com> <510C4370.6020306@alum.mit.edu> <580BEA5E3B99744AB1F5BFF5E9A3C67D16E36595DB@HE111648.emea1.cds.t-internal.com>
Subject: Re: [sipcore] Verify draft-ietf-sipcore-rfc4244bis-callflows-02.txt
X-BeenThere: sipcore@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: SIP Core Working Group <sipcore.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sipcore>, <mailto:sipcore-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/sipcore>
List-Post: <mailto:sipcore@ietf.org>
List-Help: <mailto:sipcore-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 01 Mar 2013 21:19:17 -0000

I've gone through draft-ietf-sipcore-rfc4244bis-callflows-02.  I
haven't examine everything in the SIP messages.  Instead, I've
concentrated on the History-Info headers in the "final" messages of
the sequences.  In each example, there is a final message that
contains all of the information in all of the History-Info headers.  I
believe that the following amendments should be made in examles 3.1,
3.6, and 3.7.

These amendments include a number of things that have been discussed
on the Sipcore mailing list.

3.1.  Sequentially Forking (History-Info in Response)

   Alice   example.com            Bob     Office    Home
   |            |                  |        |        |
   | INVITE F1  |                  |        |        |
   |----------->|    INVITE F2     |        |        |
   |            |----------------->|        |        |
   | 100 Trying F3                 |        |        |
   |<-----------|  302 Move Temporarily F4  |        |
   |            |<-----------------|        |        |
   |            |   ACK F5         |        |        |
   |            |----------------->|        |        |
   |            |       INVITE F6           |        |
   |            |-------------------------->|        |
   |            |      180 Ringing F7       |        |
   |            |<--------------------------|        |
   |  180 Ringing F8                        |        |
   |<-----------|   retransmit INVITE       |        |
   |            |-------------------------->|        |
   |            |      ( timeout )          |        |
   |            |             INVITE F9              |
   |            |----------------------------------->|
   |            |           100 Trying F10           |
   |            |<-----------------------------------|
   |            |           486 Busy Here F11        |
   |            |<-----------------------------------|
   |  486 Busy Here F12                              |
   |<-----------|             ACK F13                |
   |            |----------------------------------->|
   |  ACK F14   |                                    |
   |----------->|                                    |

In these examples, I have added Reason values to hi-entries that have
effectively received failure responses due to the failure of their
internally redirected targets.  Doing so is optional per draft-4244bis
but it seems to me to be the best practice.

That is, I believe that the results of internal retargeting should be
the same as if the second retargeting was done in a different proxy.

   F12 486 Busy Here example.com -> alice

   History-Info: <sip:bob@example.com>;index=1
   History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\
                 index=1.1;rc=1
-  History-Info: <sip:office@example.com>;index=1.2;mp=1
+  History-Info: <sip:office@example.com?Reason=SIP%3Bcause%3D408>;\
+                index=1.2;mp=1
   History-Info: <sip:office@192.0.2.5?Reason=SIP%3Bcause%3D408>;\
-                index=1.2.1;index=1.2.1;rc=1.2
+                index=1.2.1;rc=1.2
   History-Info: <sip:home@example.com>;index=1.3;mp=1
   History-Info: <sip:home@192.0.2.6>;index=1.3.1;rc=1.3

3.6.  PBX Voicemail Example

  Alice      example.com       Bob          Carol        VM

  | INVITE F1    |              |             |          |
  |------------->|              |             |          |
  |              | INVITE  F2   |             |          |
  |              |------------->|             |          |
  |              |              |             |          |
  |  100 Trying  |              |             |          |
  |<-------------| 302 Moved Temporarily F3   |          |
  |              |<-------------|             |          |
  |              |              |             |          |
  |             ACK             |             |          |
  |---------------------------->|             |          |
  |              |              |             |          |
  |              | INVITE F4    |             |          |
  |              |--------------------------->|          |
  |              |              |             |          |
  |              |         180 Ringing  F5    |          |
  |              |<---------------------------|          |
  |              |              |             |          |
  | 180 Ringing  |              |             |          |
  |<-------------|              |             |          |
  |              |              |             |          |
  |              |       (timeout)            |          |
  |              |              |             |          |
  |              | INVITE  F6   |             |          |
  |              |-------------------------------------->|
  |              |              |             |          |
  |              |               200 OK  F7              |
  |              |<--------------------------------------|
  |   200 OK     |              |             |          |
  |<-------------|              |             |          |
  |              |              |             |          |
  |                         ACK                          |
  |----------------------------------------------------->|

Here, I assume we are using the "cause" URI parameter to indicate
redirection reasons per RFC 4458.  The redirection from Bob to Carol
is "Deflection immediate response", which is translated into the SIP
cause 480.  The redirection from Carol to VM is "No reply", which is
translated into SIP cause 408.  We assume the "cause" parameter is
preserved when AORs are mapped to their contacts.

Here, we choose the "cause" that is sent to VM to be 408, because the
immediately preceeding INVITE failed due to 408.  But the VM box is
Bob's, and the call to Bob failed due to cause=480.  The choice
probably depends on the application logic rather than standards.
(History-Info, however, captures the entire history of the call.)

The Reason value for index 1.2.1 has been corrected to 408.

  F7 200 OK VM -> Example.com

  History-Info: <sip:bob@example.com>;index=1
  History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302>;\
                     index=1.1;rc=1
- History-Info: <sip:carol@example.com>;index=1.2;mp=1
- History-Info: <sip:carol@192.0.2.4?Reason=SIP%3Bcause%3D480>;\
-                    index=1.2.1;rc=1.2
- History-Info: <sip:vm@example.com;\
-                    target=sip:bob%40example.com>;\
-                    index=1.3;mp=1
- History-Info: <sip:vm@192.0.2.6;\
-                    target=sip:bob%40example.com>;\
-                    index=1.3.1;rc=1.3
+ History-Info: <sip:carol@example.com;cause=480?Reason=SIP%3Bcause%3D408>;\
+                    index=1.2;mp=1
+ History-Info: <sip:carol@192.0.2.4;cause=480?Reason=SIP%3Bcause%3D408>;\
+                    index=1.2.1;rc=1.2
+ History-Info: <sip:vm@example.com;\
+                    target=sip:bob%40example.com;cause=408>;\
+                    index=1.3;mp=1
+ History-Info: <sip:vm@192.0.2.6;\
+                    target=sip:bob%40example.com;cause=408>;\
+                    index=1.3.1;rc=1.3

3.7.  Consumer Voicemail Example

   Alice      example.com       Bob          Carol        VM

   | INVITE F1    |              |             |          |
   |------------->|              |             |          |
   |              | INVITE  F2   |             |          |
   |              |------------->|             |          |
   |              |              |             |          |
   |  100 Trying  |              |             |          |
   |<-------------| 302 Moved Temporarily F3   |          |
   |              |<-------------|             |          |
   |              |              |             |          |
   |             ACK             |             |          |
   |---------------------------->|             |          |
   |              |              |             |          |
   |              | INVITE F4    |             |          |
   |              |--------------------------->|          |
   |              |              |             |          |
   |              |         180 Ringing  F5    |          |
   |              |<---------------------------|          |
   |              |              |             |          |
   | 180 Ringing  |              |             |          |
   |<-------------|              |             |          |
   |              |              |             |          |
   |              |       (timeout)            |          |
   |              |              |             |          |
   |              | INVITE  F6   |             |          |
   |              |-------------------------------------->|
   |              |              |             |          |
   |              |               200 OK  F7              |
   |              |<--------------------------------------|
   |   200 OK     |              |             |          |
   |<-------------|              |             |          |
   |              |              |             |          |
   |                         ACK                          |
   |----------------------------------------------------->|

Here, hi-entry 1.2.1 should have a Reason value, but the Reason value
on 1.2 is optional.

Since <sip:vm@example.com;target=sip:carol...> is generated from
<sip:carol@example.com> (index 1.2), it should have index 1.2.2, not
1.3.

   F7 200 OK VM -> Example.com

   History-Info: <sip:bob@example.com>;index=1
   History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302\
-                                                          ;text="Moved Temporarily">\
+                %3Btext%3D%22Moved%20Temporarily%22>\
                 ;index=1.1;rc=1
   History-Info: <sip:carol@example.com?Reason=SIP%3Bcause%3D408>;\
                      index=1.2;mp=1
-  History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2
+  History-Info: <sip:carol@192.0.2.4?Reason=SIP%3Bcause%3D408>;\
+                index=1.2.1;rc=1.2
   History-Info: <sip:vm@example.com;target=sip:carol%40example.com>;\
-                      index=1.3;mp=1.2
+                      index=1.2.2;mp=1.2
   History-Info: <sip:vm@192.0.2.5;target=sip:carol%40example.com>;\
-                      index=1.3.1;rc=1.3
+                      index=1.2.2.1;rc=1.2.1

Dale