Re: [sipcore] draft-ietf-sipcore-reinvite-06 and new contact in 2xx to *inital* invite

Taisto Qvist <> Thu, 11 November 2010 09:05 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 4D5D73A6991 for <>; Thu, 11 Nov 2010 01:05:14 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -5.816
X-Spam-Status: No, score=-5.816 tagged_above=-999 required=5 tests=[AWL=-0.417, BAYES_00=-2.599, J_CHICKENPOX_32=0.6, J_CHICKENPOX_73=0.6, RCVD_IN_DNSWL_MED=-4]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id PNfuTMwSVkPh for <>; Thu, 11 Nov 2010 01:05:13 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id B56203A68F1 for <>; Thu, 11 Nov 2010 01:05:12 -0800 (PST)
X-AuditID: c1b4fb3d-b7b28ae00000135b-51-4cdbb1e433b9
Received: from (Unknown_Domain []) by (Symantec Mail Security) with SMTP id 5A.3C.04955.4E1BBDC4; Thu, 11 Nov 2010 10:05:40 +0100 (CET)
Received: from ([]) by ([]) with mapi; Thu, 11 Nov 2010 10:05:40 +0100
From: Taisto Qvist <>
To: Paul Kyzivat <>, "" <>
Date: Thu, 11 Nov 2010 10:05:39 +0100
Thread-Topic: [sipcore] draft-ietf-sipcore-reinvite-06 and new contact in 2xx to *inital* invite
Thread-Index: AcuAwHst7PX6EsP6T7mPpaSwvc4uiQAvYIvA
Message-ID: <>
References: <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: AAAAAA==
Subject: Re: [sipcore] draft-ietf-sipcore-reinvite-06 and new contact in 2xx to *inital* invite
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: SIP Core Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 11 Nov 2010 09:05:14 -0000

Minor comments below

-----Original Message-----
From: [] On Behalf Of Paul Kyzivat
Sent: den 10 november 2010 11:17
Subject: Re: [sipcore] draft-ietf-sipcore-reinvite-06 and new contact in 2xx to *inital* invite

On 11/10/2010 5:31 PM, Taisto Qvist wrote:
> Hi folks,
> A while ago I started a discussion concerning how a client should be have when it receives a new contact in the 2xx of an initial INVITE, compared to the early dialog-establishing 183.
> My reading of chapter, rfc3261, tells me that a client should NOT update its remote target with the Contact of the 2xx.
> The Contact of the 2xx, should be the same as the 1xx.
> I have now read draft-ietf-sipcore-reinvite-06 and I am trying to interpret the results, since even if that document mainly concerns re-invite, chapter 4.9 discusses the early dialog created by an initial request.
> The document does not however mention(?) differences in contact:uri between the initial 1xx, and the final 2xx to the INVITE.
> The draft mandates that a successfull response, a reliable provisional response, or an in-dialog request to the new target implies a successfull change of contact-uri.
> Should I therefore assume that since a 2xx in a normal (initial) invite, is also retransmitted reliably, that a UAC which receives a new contact in the 2xx compared to the contact in a 1xx(wether it has been sent reliably or not), MUST update its remote target?
> Since this (seems to) contradict, I would very much appreciate your views.

I'm interested to hear Gonzalo's take on this.
IMO the most reasonable thing to do in this circumstance is to honor the new contact in the 2xx. This is probably contrary to 3261. Whether it is supported by ...sipcore-reinvite... may be debatable.

>     If the dialog identifier in the 2xx response matches the dialog
>     identifier of an existing dialog, the dialog MUST be transitioned to
>     the "confirmed" state, and the route set for the dialog MUST be
>     recomputed based on the 2xx response using the procedures of Section
>  Otherwise, a new dialog in the "confirmed" state MUST be
>     constructed using the procedures of Section 12.1.2.
>>>     Note that the only piece of state that is recomputed is the route
>>>     set.  Other pieces of state such as the highest sequence numbers
>        (remote and local) sent within the dialog are not recomputed.  The
>        route set only is recomputed for backwards compatibility.  RFC
>        2543 did not mandate mirroring of the Record-Route header field in
>        a 1xx, only 2xx.  However, we cannot update the entire state of
>        the dialog, since mid-dialog requests may have been sent within
>        the early dialog, modifying the sequence numbers, for example.

Note that the route-set doesn't include the contact. Maybe that was your point.
[TQ] Yepp :-)

> Additionally, I was a bit surprised by the following text, in the above draft.
>     Note also that a given UAS can
>     establish additional early dialogs, which can have different targets,
>     by returning additional unreliable provisional responses with
>     different To tags.
> Since rfc3261, chapter says:
>     A UAS MAY send as many provisional responses as it likes.  Each of these MUST
>     indicate the same dialog ID.  However, these will not be delivered reliably.
> Which implies to me, that a *single* UAS can not send multiple 1xx 
> with different tags?

Perhaps this is a matter of terminology.
If you prefer, consider the same box to contain multiple UAs, each of which received a forked copy of the request. Then each returns a single response with a unique to-tag.
There are a number of cases where this is a viable strategy for handling various problems.

It most certainly is. But when I read that paragraph it doesnt indicate a generic endpoint which consists of multiple UAS:es that received several forked requests.
Too me, it claims that a single UAS, that has received a *single* request, can respond to that single transaction, with multiple provisional responses, creating 
multiple early dialogs by using different tags. That seems to completely contradict rfc3261. 

But maybe I'm just beeing a bit to literal, although for interoperability reasons, I think that maybe we should be :-)