[Sip] Interesting problem with PRACK and resent INVITEs

Dale.Worley@comcast.net Thu, 17 January 2008 20:23 UTC

Return-path: <sip-bounces@ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1JFbGt-0003Na-Rf; Thu, 17 Jan 2008 15:23:31 -0500
Received: from sip by megatron.ietf.org with local (Exim 4.43) id 1JFbGs-0003NU-Db for sip-confirm+ok@megatron.ietf.org; Thu, 17 Jan 2008 15:23:30 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1JFbGr-0003NL-MQ for sip@ietf.org; Thu, 17 Jan 2008 15:23:29 -0500
Received: from qmta10.westchester.pa.mail.comcast.net ([76.96.62.17]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1JFbGq-0005Ag-DM for sip@ietf.org; Thu, 17 Jan 2008 15:23:29 -0500
Received: from OMTA07.westchester.pa.mail.comcast.net ([76.96.62.59]) by QMTA10.westchester.pa.mail.comcast.net with comcast id eLBW1Y0071GhbT85A01X00; Thu, 17 Jan 2008 20:23:26 +0000
Received: from dragon.ariadne.com ([24.34.79.42]) by OMTA07.westchester.pa.mail.comcast.net with comcast id eLPT1Y00A0umElk3T00000; Thu, 17 Jan 2008 20:23:27 +0000
X-Authority-Analysis: v=1.0 c=1 a=xpOt5dJgty0A:10 a=3nWAbvGqGB97OAlL77MA:9 a=3tr-h1mCgf51HtTwnycA:7 a=I_VZZgPKrPkY9x63Xdf7cfcO-xgA:4 a=gi0PWCVxevcA:10
Received: from dragon.ariadne.com (dragon.ariadne.com [127.0.0.1]) by dragon.ariadne.com (8.12.8/8.12.8) with ESMTP id m0HKNR07008784 for <sip@ietf.org>; Thu, 17 Jan 2008 15:23:27 -0500
Received: (from worley@localhost) by dragon.ariadne.com (8.12.8/8.12.8/Submit) id m0HKNRNa008780; Thu, 17 Jan 2008 15:23:27 -0500
Date: Thu, 17 Jan 2008 15:23:27 -0500
Message-Id: <200801172023.m0HKNRNa008780@dragon.ariadne.com>
To: sip@ietf.org
From: Dale.Worley@comcast.net
X-Spam-Score: 0.0 (/)
X-Scan-Signature: b4a0a5f5992e2a4954405484e7717d8c
Subject: [Sip] Interesting problem with PRACK and resent INVITEs
X-BeenThere: sip@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Session Initiation Protocol <sip.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/sip>, <mailto:sip-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:sip@ietf.org>
List-Help: <mailto:sip-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/sip>, <mailto:sip-request@ietf.org?subject=subscribe>
Errors-To: sip-bounces@ietf.org

I was looking at a problem were were having with a phone and
discovered the following interesting situation with PRACK and INVITEs
that have to be resent with authentication.

Consider an INVITE that gets serially forked to two destinations, the
first one doesn't answer and the second one demands authentication:

    UAC             Proxy           UAS 1           UAS 2

     |                |               |               |
F1   | INVITE CSeq 1  |               |               |
     |--------------->|               |               |
F2   |                | INVITE CSeq 1 |               |
     |                |-------------->|               |
F3   |                | 180 CSeq 1    |               |
     |                | to-tag abc    |               |
     |                |<--------------|               |
F4   | 180 CSeq 1     |               |               |
     | to-tag abc     |               |               |
     |<---------------|               |               |
F5   | PRACK CSeq 2   |               |               |
     | to-tag abc     |               |               |
     |------------------------------->|               |
F6   |                | 200 CSeq 2    |               |
     |                | to-tag abc    |               |
     |<-------------------------------|               |
     |                |               |               |
    ---------------------- delay ------------------------
     |                |               |               |
F7   |                | CANCEL CSq 1  |               |
     |                |-------------->|               |
F8   |                | 200 CANCEL    |               |
     |                |<--------------|               |
F9   |                | 487 CSeq 1    |               |
     |                | to-tag abc    |               |
     |                |<--------------|               |
F10  |                | INVITE CSeq 1 |               |
     |                |------------------------------>|
F11  |                |               | 407 CSeq 1    |
     |                |               | to-tag def    |
     |                |<------------------------------|
F12  | 407 CSeq 1     |               |               |
     | to-tag def     |               |               |
     |<---------------|               |               |
F13  | INVITE CSeq 2  |               |               |
     |--------------->|               |               |
F14  |                | INVITE CSeq 2 |               |
     |                |-------------->|               |
F15  |                | 500 CSeq 2    |               |
     |                | to-tag pqr    |               |
     |                |<--------------|               |
F16  | 500 CSeq 2     |               |               |
     | to-tag pqr     |               |               |
     |<---------------|               |               |
     |                |               |               |

Since the PRACK F5 is sent within a forked dialog, we don't think of
it as using up CSeq number space in the space of out-of-dialog
requests.  So when it comes time to re-send the INVITE F13, it's easy
to think that you can just use a CSeq one higher than the original
INVITE F1.  But transaction processing at UAS 1 is likely to notice
that it's already seen CSeq 2 with that Call-Id.  It looks like one
must make sure that the re-sent INVITE has a CSeq higher than has been
used in any derived dialog of the original INVITE.

Dale


_______________________________________________
Sip mailing list  https://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use sip-implementors@cs.columbia.edu for questions on current sip
Use sipping@ietf.org for new developments on the application of sip