Subject: [sipcore] Copy edits for draft-ietf-sipcore-rfc4244bis-callflows-03

From: [email-masked] (Dale R. Worley)
Date: Fri, 22 Mar 2013 11:57:00 -0400 (EDT)

This is a bunch of copy-edits to
draft-ietf-sipcore-rfc4244bis-callflows-03.  Section pointers are
marked with "*" at the left margin.  Individual items are marked with
"." at the left margin.

(Finding the inconsistencies between the various History-Info values
was made infinitely easier by a Perl script, "hi-consistency", which
is appended.  If you give that script the -03 draft, the output
flags inconsistent values of the H-I headers within each section of
the draft.  The output it generates from -03 is also appended.)

* All of the figure headings have the "figure N" part doubled:

            Figure 1: Figure 1: Example with Sequential Forking
          Figure 2: Figure 2: Example with Privacy Header Fields
    Figure 3: Figure 3: Example with Privacy Header Field for Specific
        Figure 4: Figure 4: Example for Automatic Call Distribution
                     Figure 5: Figure 5: Alias Example
             Figure 6: Figure 6: Enterprise Voivemail Example
              Figure 7: Figure 7: Consumer Voivemail Example
                     Figure 8: Figure 8: GRUU Example
              Figure 9: Figure 9: Limited Use Address Example
               Figure 10: Figure 10: Service Number Example

(I expect the RFC Editor can correct this.)

* Section 3.1

. From F8, I see that the rule is to record 1xx responses as well as
final failure responses:

       History-Info: <sip:[email-masked];Reason=SIP%3Bcause%3D180>;\
                                                         index=1.2.1;rc=1.2

(If recording 1xx responses with Reason is not intended, please modify
the following items by removing any Reason header-value that specifies
a 1xx cause value.)

. Correct the punctuation:

       F8 180 Ringing example.com -> alice

    -  History-Info: <sip:[email-masked];Reason=SIP%3Bcause%3D180>;\
    +  History-Info: <sip:[email-masked]?Reason=SIP%3Bcause%3D180>;\
                                                         index=1.2.1;rc=1.2

. Remove duplicate index parameter:

       F9 INVITE example.com -> home

       History-Info: <sip:[email-masked]?Reason=SIP%3Bcause%3D408>;\
    -                index=1.2.1;index=1.2.1;rc=1.2
    +                index=1.2.1;rc=1.2

. The handling of the Reason on index=1.2 seems to be inconsistent:

Branch 1.2 is first seen in INVITE F6.  (INVITE F6 itself is
index=1.2.1, generated by internal forking from branch 1.2.)

   F6 INVITE example.com -> office

   History-Info: <sip:[email-masked]>;index=1.2;mp=1

INVITE F9 is branch 1.3.1, generated by internal forking from branch
1.3, which was generated due to the failure of INVITE F6 (by the
timeout between F8 and F9).  In F9, index=1.2.1 is shown with a Reason
value (which is mandatory), but index=1.2 is not (which is allowed,
but not best practice).

   F9 INVITE example.com -> home

   History-Info: <sip:[email-masked]>;index=1.2;mp=1
   History-Info: <sip:[email-masked]?Reason=SIP%3Bcause%3D408>;\
                 index=1.2.1;index=1.2.1;rc=1.2

INVITE F11 follows the pattern of F9.

   F11 486 Busy Here home -> example.com

   History-Info: <sip:[email-masked]>;index=1.2;mp=1

But response F12 shows the Reason value on index=1.2 that is best
practice.

   F12 486 Busy Here example.com -> alice

   History-Info: <sip:[email-masked]?Reason=SIP%3Bcause%3D408>;\
                                                           index=1.2;mp=1

I think what is intended is for F8, F9 and F11 to have the Reason
value on
index=1.2 as well.

       F8 180 Ringing example.com -> alice

    -  History-Info: <sip:[email-masked]>;index=1.2;mp=1
    +  History-Info:
    <sip:[email-masked]?Reason=SIP%3Bcause%3D180>;\
    +                                                  index=1.2;mp=1

       F9 INVITE example.com -> home

    -  History-Info: <sip:[email-masked]>;index=1.2;mp=1
    +  History-Info:
    <sip:[email-masked]?Reason=SIP%3Bcause%3D408>;\
    +                                                  index=1.2;mp=1

       F11 486 Busy Here home -> example.com

    -  History-Info: <sip:[email-masked]>;index=1.2;mp=1
    +  History-Info:
    <sip:[email-masked]?Reason=SIP%3Bcause%3D408>;\
    +                                                  index=1.2;mp=1

* Section 3.4

. Make F5 consistent with preceding messages:

       F5 INVITE Silver.Example.com -> Agent

       History-Info:
       <sip:[email-masked]?Reason=SIP%3Bcause%3D302>;\
    -                  index=1.1
    +                  rc=1;index=1.1

Same for F6, F7, and F8.

* Section 3.6

. URIs for 1.2 and 1.2.1 are not consistent:

   F4 INVITE Example.com -> Carol

   History-Info: <sip:[email-masked]>;index=1.2;mp=1
   History-Info: <sip:[email-masked]>;index=1.2.1;rc=1.2

   F5 180 Ringing Carol -> Example.com

   History-Info: <sip:[email-masked]>;index=1.2;mp=1
   History-Info: <sip:[email-masked]>;index=1.2.1;rc=1.2

   F6 INVITE Example.com -> VM

   History-Info: <sip:[email-masked]>;index=1.2;mp=1
   History-Info: <sip:[email-masked];cause=480>;\
                       index=1.2.1;rc=1.2

   F7 200 OK VM -> Example.com

   History-Info:
   <sip:[email-masked];cause=480?Reason=SIP%3Bcause%3D\
                      408>;index=1.2;mp=1
   History-Info: <sip:[email-masked];cause=480?Reason=SIP%3Bcause%3D\
                      408>;index=1.2.1;rc=1.2

My understanding is that the intention is to show use of the cause URI
parameter (not the cause value in Reason!) per RFC 4458.  (See
Marianne Mohali's explanation of the situation at
http://www.ietf.org/mail-archive/web/sipcore/current/msg05514.html.)
If that is so, the URI for branch 1.2 would be generated as shown in
F7, <sip:[email-masked];cause=480>, and presumably the parameter
would be carried into the URI for branch 1.2.1.  That requires the
changes shown below.

. Also, in INVITE F6, the timeout (408) response to branches 1.2
and 1.2.1 would already be recorded, as they are in response F7 (which
is generated from INVITE F6!).  Those changes are also included below.

. Also, in response F7, the cause URI parameter recorded in branches
1.3 and 1.3.1 is not the same as in INVITE F6:  F6 has "cause=480" and
F7 has "cause=408".  Which code to choose depends on the application
logic (see the discussion around Marianne Mohali's message referenced
above), and I have no particular opinion one way or the other, but the
two messages must be consistent.  No change for that is included
below.

       F4 INVITE Example.com -> Carol

    -  History-Info: <sip:[email-masked]>;index=1.2;mp=1
    -  History-Info: <sip:[email-masked]>;index=1.2.1;rc=1.2
    +  History-Info: <sip:[email-masked];cause=480>;index=1.2;mp=1
    +  History-Info:
    -  <sip:[email-masked];cause=480>;index=1.2.1;rc=1.2

       F5 180 Ringing Carol -> Example.com

    -  History-Info: <sip:[email-masked]>;index=1.2;mp=1
    -  History-Info: <sip:[email-masked]>;index=1.2.1;rc=1.2
    +  History-Info: <sip:[email-masked];cause=480>;index=1.2;mp=1
    +  History-Info:
    -  <sip:[email-masked];cause=480>;index=1.2.1;rc=1.2

       F6 INVITE Example.com -> VM

    -  History-Info: <sip:[email-masked]>;index=1.2;mp=1
    -  History-Info: <sip:[email-masked];cause=480>;\
    -                      index=1.2.1;rc=1.2
    +  History-Info:
    -  <sip:[email-masked];cause=480?Reason=SIP%3Bcause%3D\
    +                     408>;index=1.2;mp=1
    +  History-Info:
    -  <sip:[email-masked];cause=480?Reason=SIP%3Bcause%3D\
    +                     408>;index=1.2.1;rc=1.2

       F7 200 OK VM -> Example.com

       History-Info:
       <sip:[email-masked];cause=480?Reason=SIP%3Bcause%3D\
                          408>;index=1.2;mp=1
       History-Info:
       <sip:[email-masked];cause=480?Reason=SIP%3Bcause%3D\
                          408>;index=1.2.1;rc=1.2

* Section 3.7

. There are a number of H-I entries that want to encode a cause text
"Moved Temporarily".  More exactly, they encode a URI header parameter
which represents the header field:

    Reason: SIP;cause=302;text="Moved Temporarily"

Since space, double-quote, semicolon, and equals are reserved in URI
header-parameter values, they must all be escaped.  There is also a
consistent problem with excessive indenting (but the RFC Editor will
clean that up).

The first three instances of the 1.1 H-I entry need to have the marked
line amended to match the final instance (which is correct).

   F4 INVITE Example.com -> Carol

   History-Info: <sip:[email-masked]?Reason=SIP%3Bcause%3D302\
+
%3Btext%3D%22Moved%20Temporarily%22>\
                 ;index=1.1;rc=1

   F5 180 Ringing Carol -> Example.com

   History-Info: <sip:[email-masked]?Reason=SIP%3Bcause%3D302\
+
%3Btext%3D%22Moved%20Temporarily%22>\
                 ;index=1.1;rc=1

   F6 INVITE Example.com -> VM

   History-Info: <sip:[email-masked]?Reason=SIP%3Bcause%3D302\
+
%3Btext%3D%22Moved%20Temporarily%22>\
                 ;index=1.1;rc=1

   F7 200 OK VM -> Example.com

   History-Info: <sip:[email-masked]?Reason=SIP%3Bcause%3D302\
                                     %3Btext%3D%22Moved%20Temporarily%22>\
                 ;index=1.1;rc=1

. There are inconsistencies between INVITE F6 and response F7.  Given
the changes from -02 to -03, the I believe the intention is that the
branch 1.2.2 to <sip:[email-masked];target=sip:carol%40example.com> is
to be a child of the branch 1.2 to <sip:[email-masked]>.  (Which
seems to be the best practice.)  But the change has not been made in
F6.

There is also a ";cause=408" in F6 index 1.3.1 which seems to be
extraneous.  (If it were intended, it would be part of the URI, and
also part of the URI for index 1.3.)

The index value of <sip:[email-masked];...> in F7 should be 1.2.2.1.

   F6 INVITE Example.com -> VM

   History-Info: <sip:[email-masked];target=sip:carol%40example.com>;\
-                      index=1.3;mp=1.2
+                      index=1.2.2;mp=1.2
   History-Info: <sip:[email-masked];target=sip:carol%40example.com>\
-                      ;cause=408;index=1.3.1;rc=1.3
+                      ;index=1.2.2.1;rc=1.2.2

   F7 200 OK VM -> Example.com

   History-Info: <sip:[email-masked];target=sip:carol%40example.com>;\
                       index=1.2.2;mp=1.2
   History-Info: <sip:[email-masked];target=sip:carol%40example.com>;\
-                      index=1.2.2;rc=1.2.1
+                      index=1.2.2.1;rc=1.2.2

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

#! /bin/perl

# Check consistency of History-Info headers.

use strict;

my($section, $section_full);
my($message, $message_full);
my($hi);
my(%history);

my(@input) = <>;

while ($_ = shift(@input)) {
    chomp;
    if (($section_full, $section) = /^\s*((\d|\d[.\d]*\d)\. .*?)\s*$/)
    {
        # This picks up the table of contents lines as well as the
        # section headers.
        print "\n";
        print "Section $section_full\n";
        $message = '(none)';
        # Clear the known history.
        %history = ();
    } elsif (($message_full, $message) = /^\s*((F\d+) .*?)\s*$/) {
        # This picks up the headers for individual messages
        print "Message $message_full\n";
    } elsif (($hi) = /^\s*(history-info:.*)$/i) {
        # Pick up a History-Info header.
        # Check for continuation lines.
        while ($hi =~ /\\\s*$/) {
            # Grab the next input line.
            $_ = shift(@input);
            chomp;
            # Check for page break lines and ignore them.
            if (/^\s*$/ ||
                /^Barnes, et al/ ||
                /^\014/ ||
                /^Internet-Draft/) {
                # Ignore all these.
            } else {
                # Append this line to the History-Info header.
                $hi .= "\n" . $_;
            }
        }
        # Now remove the continuations.
        $hi =~ s/\s*\\\s*\n\s*//g;
        # Check to see if the H-I entry has changed.
        my($index) = ($hi =~ /index=([\d.]+)/);
        my($previous) = $history{$index};
        if ($previous && $previous ne $hi) {
            # Add "!" if the change isn't adding a Reason header
    value.
            my($x) = $hi;
            $x =~ s/\?reason=[^>&]*//i;
            # print "A $hi\n$x\n$previous\n";
            print "! " unless $x eq $previous;
            print "Changed $index\nfrom: $previous\nto: $hi\n";
        }
        $history{$index} = $hi;
    }
}

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

Section 1.  Overview
. . . . . . . . . . . . . . . . . . . . . . . . . . .  3

Section 2.  Conventions and Terminology
. . . . . . . . . . . . . . . . .  3

Section 3.  Detailed call flows
. . . . . . . . . . . . . . . . . . . . .  3

Section 3.1.  Sequentially Forking (History-Info in Response)
. . . . .  3

Section 3.2.  History-Info with Privacy Header Field
. . . . . . . . . . 11

Section 3.3.  Privacy for a Specific History-Info Entry
. . . . . . . . 14

Section 3.4.  Automatic Call Distribution
. . . . . . . . . . . . . . . 18

Section 3.5.  Determining the Alias used.
. . . . . . . . . . . . . . . 23

Section 3.6.  PBX Voicemail Example
. . . . . . . . . . . . . . . . . . 26

Section 3.7.  Consumer Voicemail Example
. . . . . . . . . . . . . . . . 31

Section 3.8.  GRUU
. . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Section 3.9.  Limited Use Address
. . . . . . . . . . . . . . . . . . . 38

Section 3.10. Service Invocation
. . . . . . . . . . . . . . . . . . . . 41

Section 3.11. Toll Free Number
. . . . . . . . . . . . . . . . . . . . . 41

Section 4.  Security Considerations
. . . . . . . . . . . . . . . . . . . 44

Section 5.  IANA Considerations
. . . . . . . . . . . . . . . . . . . . . 44

Section 5.1.  Acknowledgements
. . . . . . . . . . . . . . . . . . . . . 44

Section 6.  Informative References
. . . . . . . . . . . . . . . . . . . . 44

Section 1.  Overview

Section 2.  Conventions and Terminology

Section 3.  Detailed call flows

Section 3.1.  Sequentially Forking (History-Info in Response)
Message F1 INVITE alice -> example.com
Message F2 INVITE  example.com -> Bob
Message F3 100 Trying example.com -> alice
Message F4 302 Moved Temporarily Bob -> example.com
Message F5 ACK example.com -> Bob
Message F6 INVITE example.com -> office
Changed 1.1
from: History-Info: <sip:[email-masked]>;index=1.1;rc=1
to: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D302>;index=1.1;rc=1
Message F7 180 Ringing office -> example.com
Message F8 180 Ringing example.com -> alice
! Changed 1.2.1
from: History-Info: <sip:[email-masked]>;index=1.2.1;rc=1.2
to: History-Info:
<sip:[email-masked];Reason=SIP%3Bcause%3D180>;index=1.2.1;rc=1.2
Message F9 INVITE example.com -> home
! Changed 1.2.1
from: History-Info:
<sip:[email-masked];Reason=SIP%3Bcause%3D180>;index=1.2.1;rc=1.2
to: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D408>;index=1.2.1;index=1.2.1;rc=1.2
Message F10 100 Trying home -> example.com
Message F11 486 Busy Here home -> example.com
Message F12 486 Busy Here example.com -> alice
Changed 1.2
from: History-Info: <sip:[email-masked]>;index=1.2;mp=1
to: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D408>;index=1.2;mp=1
! Changed 1.2.1
from: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D408>;index=1.2.1;index=1.2.1;rc=1.2
to: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D408>;index=1.2.1;rc=1.2
Message F13 ACK example.com -> home
Message F14 ACK alice -> example.com

Section 3.2.  History-Info with Privacy Header Field
Message F1 INVITE alice -> atlanta.example.com
Message F2 INVITE  atlanta.example.com -> biloxi.example.com
! Changed 1
from: History-Info: <sip:[email-masked];p=x>;index=1
to: History-Info: <sip:[email-masked]>;index=1
Message F3 INVITE  biloxi.example.com -> Bob
Message F4 200 OK  Bob -> biloxi.example.com
Message F5 200 OK  biloxi.example.com -> atlanta.example.com
! Changed 1.1.1
from: History-Info:
<sip:[email-masked]?Privacy=history>;index=1.1.1;rc=1.1
to: History-Info: <sip:[email-masked]>;index=1.1.1;rc=1.1
Message F6 200 OK  atlanta.example.com -> Alice

Section 3.3.  Privacy for a Specific History-Info Entry
Message F1 INVITE alice -> atlanta.example.com
Message F2 INVITE  atlanta.example.com -> biloxi.example.com
Message F3 INVITE  biloxi.example.com -> Bob
Message F4 200 OK  Bob -> biloxi.example.com
Message F5 200 OK  biloxi.example.com -> atlanta.example.com
! Changed 1.1.1
from: History-Info:
<sip:[email-masked]?Privacy=history>;index=1.1.1;rc=1.1
to: History-Info: <sip:[email-masked]>;index=1.1.1;rc=1.1
Message F6 200 OK  atlanta.example.com -> Alice

Section 3.4.  Automatic Call Distribution
Message F1 INVITE Alice -> Example.com
Message F2 INVITE Example.com -> Gold.Example.com
Message F3 302 Moved Temporarily Gold.Example.com -> Example.com
Message F4 INVITE Example.com -> Silver.Example.com
Changed 1.1
from: History-Info: <sip:[email-masked]>;rc=1;index=1.1
to: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D302>;rc=1;index=1.1
Message F5 INVITE Silver.Example.com -> Agent
! Changed 1.1
from: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D302>;rc=1;index=1.1
to: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D302>;index=1.1
Message F6 200 OK Agent -> Silver.Example.com
Message F7 200 OK Silver.Example.com -> Example.com
Message F8 200 OK Example.com -> Alice
Message F9 ACK Alice -> Agent

Section 3.5.  Determining the Alias used.
Message F1 REGISTER John -> Example.com
Message F2 200 OK Example.com -> John
Message F3 INVITE Alice -> Example.com
Message F4 INVITE Example.com -> John

Section 3.6.  PBX Voicemail Example
Message F1 INVITE Alice -> Example.com
Message F2 INVITE Example.com -> Bob
Message F3 302 Moved Temporarily Bob -> Example.com
Message F4 INVITE Example.com -> Carol
Changed 1.1
from: History-Info: <sip:[email-masked]>;index=1.1;rc=1
to: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D302>;index=1.1;rc=1
Message F5 180 Ringing Carol -> Example.com
Message F6 INVITE Example.com -> VM
! Changed 1.2.1
from: History-Info: <sip:[email-masked]>;index=1.2.1;rc=1.2
to: History-Info: <sip:[email-masked];cause=480>;index=1.2.1;rc=1.2
Message F7 200 OK VM -> Example.com
! Changed 1.2
from: History-Info: <sip:[email-masked]>;index=1.2;mp=1
to: History-Info:
<sip:[email-masked];cause=480?Reason=SIP%3Bcause%3D408>;index=1.2;mp=1
Changed 1.2.1
from: History-Info: <sip:[email-masked];cause=480>;index=1.2.1;rc=1.2
to: History-Info:
<sip:[email-masked];cause=480?Reason=SIP%3Bcause%3D408>;index=1.2.1;rc=1.2
! Changed 1.3
from: History-Info:
<sip:[email-masked];target=sip:bob%40example.com;cause=480>;index=1.3;mp=1
to: History-Info:
<sip:[email-masked];target=sip:bob%40example.com;cause=408>;index=1.3;mp=1
! Changed 1.3.1
from: History-Info:
<sip:[email-masked];target=sip:bob%40example.com;cause=480>;index=1.3.1;rc=1.3
to: History-Info:
<sip:[email-masked];target=sip:bob%40example.com;cause=408>;index=1.3.1;rc=1.3

Section 3.7.  Consumer Voicemail Example
Message F1 INVITE Alice -> Example.com
Message F2 INVITE Example.com -> Bob
Message F3 302 Moved Temporarily Bob -> Example.com
Message F4 INVITE Example.com -> Carol
Changed 1.1
from: History-Info: <sip:[email-masked]>;index=1.1;rc=1
to: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D302%3Btext%3D"Moved
Temporarily">;index=1.1;rc=1
Message F5 180 Ringing Carol -> Example.com
! Changed 1.1
from: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D302%3Btext%3D"Moved
Temporarily">;index=1.1;rc=1
to: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D302;text="Moved
Temporarily">;index=1.1;rc=1
Message F6 INVITE Example.com -> VM
Changed 1.2
from: History-Info: <sip:[email-masked]>;index=1.2;mp=1
to: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D408>;index=1.2;mp=1
Message F7 200 OK VM -> Example.com
! Changed 1.1
from: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D302;text="Moved
Temporarily">;index=1.1;rc=1
to: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D302%3Btext%3D%22Moved%20Temporarily%22>;index=1.1;rc=1
Changed 1.2.1
from: History-Info: <sip:[email-masked]>;index=1.2.1;rc=1.2
to: History-Info:
<sip:[email-masked]?Reason=SIP%3Bcause%3D408>;index=1.2.1;rc=1.2
! Changed 1.2.2
from: History-Info:
<sip:[email-masked];target=sip:carol%40example.com>;index=1.2.2;mp=1.2
to: History-Info:
<sip:[email-masked];target=sip:carol%40example.com>;index=1.2.2;rc=1.2.1

Section 3.8.  GRUU
Message F1 REGISTER John -> Example.com
Message F2 200 OK Example.com -> John
Message F3 INVITE Alice -> Example.com
Message F4 INVITE Example.com -> John

Section 3.9.  Limited Use Address
Message F1 REGISTER John -> Example.com
Message F2 200 OK Example.com -> John
Message F3 INVITE Alice -> Example.com
Message F4 INVITE Example.com -> John

Section 3.10.  Service Invocation

Section 3.11.  Toll Free Number

Section 4.  Security Considerations

Section 5.  IANA Considerations

Section 5.1.  Acknowledgements

Section 6.  Informative References

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

Dale

---

From: Shida Schubert <[email-masked]>
Date: Fri, 22 Mar 2013 13:48:37 -0700

Hi Dale;

 Thanks for going through the draft once again. 

 I will reflect these and update the draft shortly. 

 Many Thanks
  Shida

On Mar 22, 2013, at 8:57 AM, Dale R. Worley wrote:

> _______________________________________________
> sipcore mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/sipcore