Re: [Sip] Re: SDP Offer/Counter-offer/Answer

"Mark Watson" <mwatson@nortelnetworks.com> Thu, 20 December 2001 11:33 UTC

Received: from optimus.ietf.org (ietf.org [132.151.1.19] (may be forged)) by ietf.org (8.9.1a/8.9.1a) with ESMTP id GAA05868 for <sip-archive@odin.ietf.org>; Thu, 20 Dec 2001 06:33:03 -0500 (EST)
Received: (from daemon@localhost) by optimus.ietf.org (8.9.1a/8.9.1) id GAA04795 for sip-archive@odin.ietf.org; Thu, 20 Dec 2001 06:33:05 -0500 (EST)
Received: from optimus.ietf.org (localhost [127.0.0.1]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id GAA03774; Thu, 20 Dec 2001 06:13:34 -0500 (EST)
Received: from ietf.org (odin [132.151.1.176]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id GAA03682 for <sip@optimus.ietf.org>; Thu, 20 Dec 2001 06:13:29 -0500 (EST)
Received: from znsgs01r.europe.nortel.com (h50s128a211n47.user.nortelnetworks.com [47.211.128.50]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id GAA05605 for <sip@ietf.org>; Thu, 20 Dec 2001 06:13:24 -0500 (EST)
Received: from znsgy0k8.europe.nortel.com (znsgy0k8.europe.nortel.com [47.165.24.67]) by znsgs01r.europe.nortel.com (Switch-2.2.0/Switch-2.2.0) with ESMTP id fBKBCcu19035; Thu, 20 Dec 2001 11:12:38 GMT
Received: from zwcwd00r.europe.nortel.com ([47.73.112.128]) by znsgy0k8.europe.nortel.com with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2653.13) id YKCY2ATF; Thu, 20 Dec 2001 11:11:21 -0000
Received: from mwatson3 (ansgt1qg.europe.nortel.com [47.160.168.9]) by zwcwd00r.europe.nortel.com with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2653.13) id YZ36G0XP; Thu, 20 Dec 2001 11:11:18 -0000
Message-ID: <000701c18947$5aef4c80$09a8a02f@mwatson3>
X-Sybari-Space: 00000000 00000000 00000000
From: Mark Watson <mwatson@nortelnetworks.com>
To: Jonathan Rosenberg <jdrosen@dynamicsoft.com>, "Fairlie-Cuninghame, Robert" <rfairlie@nuera.com>
Cc: sip@ietf.org
References: <3C20FCEC.3010505@dynamicsoft.com>
Subject: Re: [Sip] Re: SDP Offer/Counter-offer/Answer
Date: Thu, 20 Dec 2001 11:11:55 -0000
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.00.2014.211
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2014.211
Content-Transfer-Encoding: 7bit
Sender: sip-admin@ietf.org
Errors-To: sip-admin@ietf.org
X-Mailman-Version: 1.0
Precedence: bulk
List-Id: Session Initiation Protocol <sip.ietf.org>
X-BeenThere: sip@ietf.org
Content-Transfer-Encoding: 7bit

Jonathan,

Sounds reasonable to me, except the very last part.

We split out the offer/answer model from SIP and input it into mmusic
because it has broader application - i.e. anywhere that you need to use SDP
in this request/response type of way.

Now we have a requirement to make the offer/answer+offer/answer semantics
explicit, but you are suggesting solutions to that which only work for SIP.

Shouldn't this indication be clear from the SDP itself (either implicit or
explicit) ? Alternatively, I guess we could state this requirement in the
offer/answer draft as a requirement on 'whatever is used to carry the SDP'.

Interestingly, ITU-T SG11 in Q.1990 defines a new SDP attribute for almost
exactly this purpose.

Regards...Mark



----- Original Message -----
From: Jonathan Rosenberg <jdrosen@dynamicsoft.com>
To: Fairlie-Cuninghame, Robert <rfairlie@nuera.com>
Cc: <sip@ietf.org>
Sent: Wednesday, December 19, 2001 8:47 PM
Subject: [Sip] Re: SDP Offer/Counter-offer/Answer


> There are LOTS of issues here. Let us take them one step at a time. The
> group has a habit of jumping right into headers or parameters or bodies
> or whatever without understanding the scope of the problem or the
> semantics involved.
>
> First off, I think its important to define a sufficient list of concrete
> problems that require a three-way exchange, so that we don't go too far
> down this path if its not really needed. Some of the ones Robert has
> offered include:
>
>    a. early media (need to be able to refuse/modify an early media stream)
>    b. having the uas add SRTP to its counter-offer when not made in the
> offer
>
> Others I could think of:
>
>    c. in the case of forking, if there are multiple 200 OK, each will go
> to the same port/ip on the caller. This will require knowing
> cname<->dialog mappings to sort out. THe alternative is to use a
> three-way exchange that allows a separate port for each uas
>
>
> Now, let me explain why Robert's (b) is NOT an issue as defined. What is
> special about SRTP? What if the uas wants to use a new codec not offered
> by the uac? Or an additional media stream? They can always be added
> later on through a re-invite. This leads us to the question of the day:
> under what conditions is a three way handshake needed, as opposed to
> simply doing a re-invite once the call is up? The answer to this
> question is critical in determining required semantics.
>
> I would posit that the three way handshake would be needed for those
> cases where we require atomicity, AND the offerer does not have
> sufficient information to exchange all the data in the initial offer.
>
> As an example, consider my problem (c). The UAC wants to make a call,
> but can't offer a port until it knows who its talking to, as there will
> be a separate port for each uas. Thus, the initial offer cannot contain
> sufficient information for the exhcange. Furthermore, we don't want to
> simply do a re-invite after the 2xx, since we'll end up with this
> transitional period where we can't easily associate media with the
> dialogs it was established through. This introduces the atomicity
> requirement. In this case, the atomicity requirement is not that strong;
> I could argue that the few seconds between the 200 OK and the re-invite
> are not so important - you're not losing any media, you just can't
> associate it with the specific dialog.
>
> Robert's SRTP example is one where its not clear to me that atomicity is
> important.
>
>
> OK, now onto the second point. How do we accomplish the three-way
> handshake? I had initially proposed that the counter-offer was nothing
> more than a valid answer to the initial offer, plus a new offer. More
> concretely, we could accomplish a three way handshake by starting with
> the basic four-way handshake:
>
> ----------> OFFER
> ANSWER<------
> OFFER<-------
> ----------->ANSWER
>
> and then making the middle two the SAME SDP, passed in one message:
>
> ------------> OFFER
> <------------ ANSWER/OFFER
> -------------> ANSWER
>
> The semantics would then be: the uac processes the second message FIRST
> as an answer, and THEN as an offer, generating an answer to that. This
> would allow us to do a three-way exchange without specifying any
> additional semantics. This exchange has the very nice property that it
> supports complete subsetting, so that the SDP in message 2 is a subset
> (subset of codecs, of media streams, of directions) of message 1, and
> message 3 is a subset of 2.
>
> However, on further cogitation, I realized this doesn't work. It doesn't
> work since its missing the fundamental atomicity property. The uac, for
> example, needs to be prepared to receive with the codecs in the offer
> (the first messae), even though there will later be another SDP updating
> that information (the third message). Thus, the information provided in
> the initial offer has to be valid and usable in its own right, and based
> on the defined semantics above, the uas could even send using that media
> before receiving message 3. That would violate atomicity.
>
> Thus, to fully specify a three-way handshake, we need to add one
> additional bit - the uas MUST NOT ever send media using the initial
> offer, it MUST wait for the third message (the answer). This introduces
> the required atomicity, and maintains the subsetting property.
>
> Another fun issue is handling error cases. We have the ability today to
> "reject" an offer when there is no overlap in any of the media. If the
> offer is in an INVITE, thats easily done (488 or whatever it is). If the
> offer is in a 2xx, its harder - you still need to include a valid answer
> in the ack, and then BYE later on. That doesn't work for re-invites,
> which is why we have another open issue, which is trying to ensure that
> the offer in a 2xx to a re-invite w/o SDP is always acceptable. Not sure
> how to do that, or if its even possible. Now, how to do that in a
> three-pass model is more complex, since presumably we can "reject" at
> any point and need to back off to the original sdp beforehand (the
> atomicity requirement).
>
> I don't have answers yet for the failure cases. Its not clear to me
> whether these need to be handled in the SDP or in SIP, or whether we
> truly need atomicity in the failure cases or not, and so on.
>
>
> So, my proposal would be that IFF a three-way handshake is truly needed,
> it be accomplished by collapsing a four-way O/A exchange into three by
> making the middle two messages the same, AND furhter specifying that the
> recipient of the initial offer MUST NOT send any media based on
> information in the initial offer.
>
> With this definition, we can then consider what additional data needs to
> be sent in order to properly do this in SIP. My proposal would, in fact,
> require the initial offer from the uac to be marked in some way that
> indicates that its an offer which is expecting a counter-offer. This is
> needed since the uac needs to know whether to expect media on the
> ports/addresses/codecs in the initial message.
> Similarly, the counter-offer needs to be marked as such in order for the
> uac to know it needs to generate an answer.
>
> One of the things I was worried about in explicitly labeling SDP as
> offer/answer/counter-offer was 3pcc. I was worried that SDP which one
> entity provided as an offer was used by the controller as an answer in
> another flow. Interestingly, looking through draft-rosenberg-sip-3pcc,
> only ONE of the flows there does this - flow 2. Its also interesting to
> note that this flow is NOT RECOMMENDED because it doesn't generally
> work, and indeed, the reason it doesn't generally work is that its using
> an answer from one element as an offer to another!
>
> Soooo, I do think it makes sense to be explicit. The requirements we
> have are:
>
> 1. label something as offer/answer/both
> 2. somehow indicate that a 3way handshake is supported when the initial
> offer is made
> 3. somehow indicat that a 3way handshake is required when the initial
> offer is made
>
>
> I would argue that Content-Disposition is right for (1), and
> Require/Supported for (2) and (3).
>
>
> OK, there is a lot to digest and comment on in here. Additional thoughts
> are welcome.
>
> -Jonathan R.
>
>
> Fairlie-Cuninghame, Robert wrote:
>
> > Hello,
> >
> > I'm not sure whether this is more suited to the MMUSIC list (as there is
a
> > answer-offer discussion ensuing presently), however I believe this is
more
> > related to the use of the SDP offer-answer model than its specification.
> > [draft-rosenberg-mmusic-sdp-offer-answer-00.txt]
> >
> > Just a recap: the SDP offer/counter-offer/answer model is where Peer A
makes
> > an offer in the INVITE, that Peer B has decides to make a counter-offer
back
> > to A (in 183 or 200 OK) which A then sends an answers (in PRACK or ACK).
> >
> > We are seeing the offer/counter-offer/answer model becoming more widely
> > used: it is used in the manyfolks resource reservation, it is used in
the
> > early media proposal and it is required in the 3GPP requirements
document.
> > Also when SRTP becomes more prevalent, it will be useful in that
instance.
> > An example of its use with SRTP: A calls B. A offers RTP/AVP in the
INVITE
> > but B requires the use of SRTP/AVP profile, so B counter-offers with
> > SRTP/AVP in the 200 OK. A either answers in ACK or sends empty SDP and
> > rejects call.
> >
> > My aim is not to change the answer-offer model (everything is still
always
> > an offer or answer), early media or resource reservation; my aim merely
to
> > make what is happening EXPLICIT rather than assumed, that is, make it
> > explicit with an SDP is an answer or a counter-offer. Explicit protocol
are
> > just about always better than implicit (IETF mantra right).
> >
> > My proposal (which I made earlier in the year): whenever a response
> > (provisional or final) contains an SDP counter-offer then this fact is
> > EXPLICITly indicated in the Content-Disposition header.
> >
> > For instance: Content-Disposition=newoffer;handling=required
> >
> > I propose that this Content-Disposition token is added to the next SIP
> > draft.
> >
> > Comments?
> >
> > Regards,
> >
> > Robert.
> >
>
>
> --
> Jonathan D. Rosenberg, Ph.D.            72 Eagle Rock Avenue
> Chief Scientist                         First Floor
> dynamicsoft                             East Hanover, NJ 07936
> jdrosen@dynamicsoft.com                 FAX: (973) 952-5050
> http://www.jdrosen.net                  PH:  (973) 952-5000
> http://www.dynamicsoft.com
>
>
> _______________________________________________
> Sip mailing list  http://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
>


_______________________________________________
Sip mailing list  http://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