Subject: [Sipping] Late comment on draft-ietf-sippping-sip-offeranswer-14

From: "Elwell, John" <[email-masked]>
Date: Tue, 26 Apr 2011 15:37:37 +0200

I know last call finished already, but the following has just been brought to my attention:

In section 5.2.5
"Changing the o-line,
      except version number value, during the session is an error case.
      The behavior when receiving such a non-compliant offer/answer SDP
      body is implementation dependent. "
I would content this is NOT an error situation, or at least not an error in the case where a NEW session is being signalled.

Consider a 3PCC situation along the lines described in section 7 of RFC 3725. The controlling B2BUA converts a session between UA A and UA B into a session between UA B and UA C. Prior to this conversion, UA B has received UA A's SDP (SDP A). As a result of the conversion, UA B receives UA C's SDP (SDP C).

SDP C is likely to be completely different from SDP A. Therefore just a change of version number in the o-line is insufficient and would probably violate RFC 3264. In particular, if SDP A has 2 m-lines and SDP C has only one m-line, the change from 2 m-lines to 1 m-line is not permitted according to RFC 3264. So although RFC 3725 talks about the controlling B2BUA adjusting version numbers, that is insufficient in some cases.

The text of 5.2.5 then goes on to say:
"The behavior when receiving such a non-compliant offer/answer SDP
      body is implementation dependent."
It is not clear what this fails to comply with. I can find nothing in RFC 3264 that stops you sending a new o-line if there is a new session. Yes, it would be non-compliant if only modifying an existing session, but how does the recipient know whether or not it is a new session, and therefore whether or not it is valid?

It then goes on to recommend use of Replaces in this situation (i.e. change of session):
"If a UA needs to negotiate a
      'new' SDP session, it should use the INVITE/Replaces method."
But Replaces is not feasible if the UA concerned does not support it (and hence "should", presumably). So there will still be cases where a controlling B2BUA is forced to change the o-line (not just the version) in order to comply with RFC 3264.

So there needs to be a mechanism for changing to a 'new' session without relying on Replaces. As far as I can see, there is no standards track RFC that forbids changing the o-line to achieve this, so this new Informational draft should not attempt to make that change, and in particular should not do so without proposing an alternative solution.

A simple fix would be to delete the entire bullet beginning "In the o-line, only the version number may change".

John

---

From: Paul Kyzivat <[email-masked]>
Date: Tue, 26 Apr 2011 17:41:53 -0400

John,

> SDP C is likely to be completely different from SDP A. Therefore just a change of version number in the o-line is insufficient and would probably violate RFC 3264. In particular, if SDP A has 2 m-l…

It was precisely issues like this that led to the statements you are 
taking issue with.

As I understand it, what you describe is not permitted - you can't 
reduce the number of m-lines, even by changing the o-line.

This does put a burden on the 3pcc device - to patch up the SDP.
I would actually prefer to have a change that would loosen up what can 
be done in this regard but it would be a normative change with pretty 
severe backward compatibility issues.

> It is not clear what this fails to comply with. I can find nothing in RFC 3264 that stops you sending a new o-line if there is a new session. Yes, it would be non-compliant if only modifying an exi…

I think you are describing "SessionS Initiation Protocol", not the 
"Session Initiation Protocol". AFAIK you only get one session per 
invite-dialog-usage.

> So there needs to be a mechanism for changing to a 'new' session without relying on Replaces. As far as I can see, there is no standards track RFC that forbids changing the o-line to achieve this,…

I think the mechanism requires a normative change to SIP.

But I'm interested to hear what others think about this.

> A simple fix would be to delete the entire bullet beginning "In the o-line, only the version number may change".

Its awfully late - in the category of the "it ain't happening unless you 
lodge a complaint with the IESG".

But regardless of that, it seems we have a difference of opinion here 
about what the standard is, and should discuss it.

	Thanks,
	Paul

---

From: "Elwell, John" <[email-masked]>
Date: Wed, 27 Apr 2011 09:41:35 +0200

> -----Original Message-----
> From: [email-masked] 
> [mailto:[email-masked]] On Behalf Of Paul Kyzivat
> Sent: 26 April 2011 22:42
> To: [email-masked]
> Subject: Re: [Sipping] Late comment on 
> draft-ietf-sippping-sip-offeranswer-14
> 
> John,
> 
> > I would content this is NOT an error situation, or at least 
> not an error in the case where a NEW session is being signalled.
> >
> > Consider a 3PCC situation along the lines described in 
> section 7 of RFC 3725. The controlling B2BUA converts a 
> session between UA A and UA B into a session between UA B and 
> UA C. Prior to this conversion, UA B has received UA A's SDP 
> (SDP A). As a result of the conversion, UA B receives UA C's 
> SDP (SDP C).
> >
> > SDP C is likely to be completely different from SDP A. 
> Therefore just a change of version number in the o-line is 
> insufficient and would probably violate RFC 3264. In 
> particular, if SDP A has 2 m-lines and SDP C has only one 
> m-line, the change from 2 m-lines to 1 m-line is not 
> permitted according to RFC 3264. So although RFC 3725 talks 
> about the controlling B2BUA adjusting version numbers, that 
> is insufficient in some cases.
> 
[JRE] Where is that stated normatively?

> This does put a burden on the 3pcc device - to patch up the SDP.
[JRE] This MIGHT be feasible, but it goes way beyond just manipulating version numbers. Basically the B2BUA would have to retain state about which m-lines are in use in each leg of the call (i.e., to B and to C) and perform mappings each time a SDP is passed through (e.g., the second m-line from B becomes the third m-line to C and vice versa). I wonder how many implementations do this today?

> > It is not clear what this fails to comply with. I can find 
> nothing in RFC 3264 that stops you sending a new o-line if 
> there is a new session. Yes, it would be non-compliant if 
> only modifying an existing session, but how does the 
> recipient know whether or not it is a new session, and 
> therefore whether or not it is valid?
> 
[JRE] Again, where is that stated normatively?

> > But Replaces is not feasible if the UA concerned does not 
> support it (and hence "should", presumably). So there will 
> still be cases where a controlling B2BUA is forced to change 
> the o-line (not just the version) in order to comply with RFC 3264.
> >
> > So there needs to be a mechanism for changing to a 'new' 
> session without relying on Replaces. As far as I can see, 
> there is no standards track RFC that forbids changing the 
> o-line to achieve this, so this new Informational draft 
> should not attempt to make that change, and in particular 
> should not do so without proposing an alternative solution.
> 
[JRE] That depends - it is unclear to me what normative statements are broken by starting a new session with a new o-line.

John

> > A simple fix would be to delete the entire bullet beginning 
> "In the o-line, only the version number may change".
> 
> _______________________________________________
> Sipping mailing list  https://www.ietf.org/mailman/listinfo/sipping
> This list is for NEW development of the application of SIP
> Use [email-masked] for questions on current sip
> Use [email-masked] for new developments of core SIP
>

---

From: "DRAGE, Keith (Keith)" <[email-masked]>
Date: Wed, 27 Apr 2011 11:17:55 +0200

What people should be doing and what people are doing as short cuts are two different things.

If a B2BUA (aka 3PCC) attempts to manipulate the SDP in any way shape or form, then it has to become responsible for the integrity of the SDP that results. It cannot just merge media lines and hope it gets away with it.

And I would not phrase that as patching up the SDP - the 3PCC has to become the SDP protocol entity. After all, RFC 3725 that you reference for this scenario states:

   From here, new parties can be added, removed, transferred, and so on,
   as the controller sees fit.  In many cases, the controller will be
   required to modify the SDP exchanged between the participants in
   order to affect these changes.  In particular, the version number in
   the SDP will need to be changed by the controller in certain cases.
   If the controller should issue an SDP offer on its own (for example,
   to place a call on hold), it will need to increment the version
   number in the SDP offer.  The other participant in the call will not
   know that the controller has done this, and any subsequent offer it
   generates will have the wrong version number as far as its peer is
   concerned.  As a result, the controller will be required to modify
   the version number in SDP messages to match what the recipient is
   expecting.

To me this clearly indicates that the controller has become responsible for the SDP contents.

Regards

Keith

> From: [email-masked] [mailto:[email-masked]] On Behalf
> Of Elwell, John
> Sent: 27 April 2011 08:42
> To: Paul Kyzivat; [email-masked]
> Subject: Re: [Sipping] Late comment on draft-ietf-sippping-sip-
> offeranswer-14
> 
> 
> 
> [JRE] This MIGHT be feasible, but it goes way beyond just manipulating
> version numbers. Basically the B2BUA would have to retain state about
> which m-lines are in use in each leg of the call (i.e., to B and to C) and
> perform mappings each time a SDP is passed through (e.g., the second m-
> line from B becomes the third m-line to C and vice versa). I wonder how
> many implementations do this today?
> 
> [JRE] That depends - it is unclear to me what normative statements are
> broken by starting a new session with a new o-line.
> 
> John
> 
> 
> >

---

From: "Elwell, John" <[email-masked]>
Date: Wed, 27 Apr 2011 14:36:48 +0200

> From: DRAGE, Keith (Keith) [mailto:[email-masked]] 
> Sent: 27 April 2011 10:18
> To: Elwell, John; Paul Kyzivat; [email-masked]
> Subject: RE: [Sipping] Late comment on 
> If a B2BUA (aka 3PCC) attempts to manipulate the SDP in any 
> way shape or form, then it has to become responsible for the 
> integrity of the SDP that results. It cannot just merge media 
> lines and hope it gets away with it.
[JRE] Exactly, so it should do minimal manipulation, ideally none at all. So when B finds itself talking to A and then talking to C, B should receive first of all A's SDP and then C's SDP - these will have different o-lines. If the controller also generates its own SDP from time to time, e.g., for placing a session on hold, this will put the version numbers on the two legs out of step, and the controller will need to compensate for that - this is the example given in RFC 3725. But manipulation beyond that should not be necessary - it should just pass SDP through.

> 
> And I would not phrase that as patching up the SDP - the 3PCC 
> has to become the SDP protocol entity. After all, RFC 3725 
> that you reference for this scenario states:
> 
[JRE] This example talks about modifying version numbers, but I would claim that is not good enough. It would need to modify the rest of the o-line in order to prevent the recipient receiving SDPs with different o-lines. But I don't read that in RFC 3725.

> responsible for the SDP contents.
[JRE] In my opinion the text of RFC 3725 is not clear - it talks about the controller modifying SDP, and the particular example given just talks about modifying the version number. Yet what Keith seems to be claiming is that the controller does more than that - implying that the controller generates its own SDP based on some information received in SDP from the remote party.

John

> [mailto:[email-masked]] On Behalf
> > Of Elwell, John
> > > Sipping mailing list  
> https://www.ietf.org/mailman/listinfo/sipping

---

From: Robert Sparks <[email-masked]>
Date: Wed, 27 Apr 2011 10:43:21 -0500

I believe the current text in the draft reflects the discussion from 2007 at
<http://www.ietf.org/mail-archive/web/sipping/current/msg13812.html>

To summarize, while we think there may be implementations that interpret a change of session-id as a session reset,
RFC3264 doesn't support the notion. The top-level assumption of 3264 is that there is one SDP session associated
with a SIP dialog. (See in particular:
<http://www.ietf.org/mail-archive/web/sipping/current/msg13845.html>
<http://www.ietf.org/mail-archive/web/sipping/current/msg13870.html>
and
<http://www.ietf.org/mail-archive/web/sipping/current/msg13912.html>)

The thread explores places where some folks would like to things to be different, but those
things will need normative updates, probably to more than one RFC.

I believe the text in the draft is consistent with what our current specs say.

For the normative updates we would need to make for this particular topic, I think 
restarting the debate on the RAI list (with pointers to SIPCORE and MMUSIC) is the right thing to do.
	
RjS

On Apr 26, 2011, at 8:37 AM, Elwell, John wrote:

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