Re: [Sip] INFO use-cases

Jonathan Rosenberg <jdrosen@cisco.com> Thu, 13 December 2007 05:03 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 1J2gE3-0005PJ-1J; Thu, 13 Dec 2007 00:03:11 -0500
Received: from sip by megatron.ietf.org with local (Exim 4.43) id 1J2gE0-0005PD-Q6 for sip-confirm+ok@megatron.ietf.org; Thu, 13 Dec 2007 00:03:08 -0500
Received: from [10.90.34.44] (helo=chiedprmail1.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1J2gE0-0005P5-DE for sip@ietf.org; Thu, 13 Dec 2007 00:03:08 -0500
Received: from sj-iport-2-in.cisco.com ([171.71.176.71] helo=sj-iport-2.cisco.com) by chiedprmail1.ietf.org with esmtp (Exim 4.43) id 1J2gDy-00085G-SA for sip@ietf.org; Thu, 13 Dec 2007 00:03:08 -0500
Received: from sj-dkim-4.cisco.com ([171.71.179.196]) by sj-iport-2.cisco.com with ESMTP; 12 Dec 2007 21:03:06 -0800
Received: from sj-core-5.cisco.com (sj-core-5.cisco.com [171.71.177.238]) by sj-dkim-4.cisco.com (8.12.11/8.12.11) with ESMTP id lBD53653001467; Wed, 12 Dec 2007 21:03:06 -0800
Received: from xbh-sjc-211.amer.cisco.com (xbh-sjc-211.cisco.com [171.70.151.144]) by sj-core-5.cisco.com (8.12.10/8.12.6) with ESMTP id lBD5320i010313; Thu, 13 Dec 2007 05:03:02 GMT
Received: from xfe-sjc-211.amer.cisco.com ([171.70.151.174]) by xbh-sjc-211.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830); Wed, 12 Dec 2007 21:03:01 -0800
Received: from [10.32.241.147] ([10.32.241.147]) by xfe-sjc-211.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830); Wed, 12 Dec 2007 21:03:01 -0800
Message-ID: <4760BD2C.5030506@cisco.com>
Date: Thu, 13 Dec 2007 00:03:40 -0500
From: Jonathan Rosenberg <jdrosen@cisco.com>
User-Agent: Thunderbird 2.0.0.9 (Windows/20071031)
MIME-Version: 1.0
To: Hadriel Kaplan <HKaplan@acmepacket.com>
Subject: Re: [Sip] INFO use-cases
References: <E6C2E8958BA59A4FB960963D475F7AC30273926444@mail.acmepacket.com>
In-Reply-To: <E6C2E8958BA59A4FB960963D475F7AC30273926444@mail.acmepacket.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 13 Dec 2007 05:03:01.0601 (UTC) FILETIME=[6FB1A510:01C83D45]
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; l=12641; t=1197522186; x=1198386186; c=relaxed/simple; s=sjdkim4002; h=Content-Type:From:Subject:Content-Transfer-Encoding:MIME-Version; d=cisco.com; i=jdrosen@cisco.com; z=From:=20Jonathan=20Rosenberg=20<jdrosen@cisco.com> |Subject:=20Re=3A=20[Sip]=20INFO=20use-cases |Sender:=20; bh=D5LZ+xZETqMWOOltYvvbvYYdBLusBGTFWyHCup14Yd4=; b=b4/+J61hZ1tUXrhXzcpYDS4N0X965h3UR/ihwbWv2waVzI0vjL+ju5V9o+ MdhmSj+T2mzfu8A+U9p5AVNDACF93WjXJHbl/SGBXeXwG0woS7wT/QLPgE1x G/kNRa4lIh;
Authentication-Results: sj-dkim-4; header.From=jdrosen@cisco.com; dkim=pass ( sig from cisco.com/sjdkim4002 verified; );
X-Spam-Score: 0.0 (/)
X-Scan-Signature: ba0d4c5f57f7c289496fce758bbf4798
Cc: "sip@ietf.org" <sip@ietf.org>
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

Hadriel,

Thanks much for putting down some use cases. These are helpful for a 
good discussion.

Some comments below, but I will say that I'm now convinced that we 
should go ahead and define an info-framework. The real compelling 
argument, I think, is one you make below. Even if we tell everyone they 
shouldn't, its clear that folks are going to be doing this. So, instead 
of saying no, and leaving us with an non-interoperable mess, lets define 
how it works, and give some guidance on what the issues are and when you 
might want to step back and think about whether something else (SUB/NOT, 
media plane, MESSAGE) would be a better choice.

It is very reminiscent of the NAT discussion. Sure, we all agree NAT is 
bad and it makes things harder for lots of apps, and there are better 
ways (v6). But, the architecturally right thing was not as easily 
deployable as the quick-fix NAT solution, and so the latter won out. In 
hindsight, we would have been much better off had we immediately 
standardized clear behaviors for NAT, and not ignored them and just 
declared them bad.

INFO is the same. Sure, there'll often be better ways. But folks have 
spoken with their implementations, that it is more easily deployable 
than any of the other solutions. So lets not re-do the NAT mistake, lets 
define how it works, and not just say 'they're bad', and then end up 
regretting it in a few years when there are hundreds of INFO usages out 
there.

More below:

Hadriel Kaplan wrote:
> Howdy, Jonathan asked for use-cases for what types of things would
> need an in-dialog SIP message for user-user communication, vs. should
> be done either out of dialog or in the media plane.  If the only
> use-case is DTMF, then we could just document the DTMF
> negotiation/use only and not have to create a general info-events
> framework.  That seems a very reasonable argument to me.  I also
> don't want to do work for no use.
> 
> There is a counter-argument that there are proprietary uses of INFO
> in the wild, and that a framework for negotiation at least removes
> the manual configuration of vendor-specific profiles, which is a
> problem of interop today - even if the IETF should not bless/document
> the specific use cases themselves.  But that would make the draft a
> very different one than it currently is as well, and I will ask that
> in a separate email thread.
> 
> The chairs have asked for 3 use cases, and I assume they mean 3 NEW
> use cases (we already have 3 RFCs which use INFO, as well as DTMF).
> I am not sure if they mean potential future use-cases, or current
> use-cases (i.e., already implemented).  Can I get a clarification on
> that?
> 
> So anyway, taking the shot-gun approach, here's a first go at some
> use-cases, and my personal take on whether they should be in INFO vs.
> SUB/NOT vs. media-plane, FWIW. [apologize for formatting ugliness]
> 
> /*************** *  Already standardized use-cases: ***************/ 
> 1) SIP-T/ISUP/QSIG/PSTN -Documented in RFC 3372 and RFC 4497.
> 
> 2) ECMA TR/87 uaCSTA -Uses INFO to send ECMA-323 XML for monitoring
> and controlling phones from a PC.
> 
> 3) Sending media server control commands. -Documented in RFC4722
> MSCML.
> 
> 
> /**************** *  Use-cases that I think are potentially/possibly
> valid for INFO: ****************/ 1) Sending a vcard asynchronously.
> Alice calls Bob, Alice says "can you send me John's vcard?", Bob
> clicks something and voila it's sent. -Alternatives: send a re-Invite
> or Update with a Call-Info, with either a URL reference, data URI, or
> MIME and CID URL. -Counter-argument: IMO this type of data really
> belongs in MIME for a number of reasons, including length is less
> restricted for mime attachments; one AD has said the Data URL may be
> deprecated.  And sending a re-Invite for this purpose seems odd. 
> -Also, the Call-Info header is really about the caller or callee, and
> thus Bob shouldn't be sending me John's vcard info in it technically.

That argument is bogus since RFC 3261 clearly says call-info is about 
the caller or callee:

    The Call-Info header field provides additional information about the
    caller or callee, depending on whether it is found in a request or
    response.

There is also a purpose parameter (a close cousin to the info-event, 
I'll note), which is specifically about vcard.

That said, I agree data URI is bad so the real use case for call-info is 
when the vcard is to be sent by indirection. But its clear that 
indirection is much more of a pain than just sending the darn thing; you 
need to store it somewhere, get a URL, and then make sure that URL is 
derefenceable from the target, figure out when its retrieved, and then 
delete the content once retrieved at some point. Thats clearly a lot 
harder than just including it.

Another alternative would be MESSAGE, but I think thats wrong. The 
reason is that MESSAGE should only be used when the one and only purpose 
of the content is to *render*. A vcard isn't just rendered; one can 
imagine a UA saying to a user, "bob has sent his vcard, would you like 
to add to your contacts?" and that is NOT rendering. So MESSAGE is wrong.

ANother choice is the media channel. I agree here the overhead is high 
for that relative to the size of the content.

So I think this is a reasonable use case in fact.

> That may sound like a nit, but UA's may well store the call-info
> vcards into their address-books automatically and so tie it to the
> wrong user/call. -Pros of using INFO: it's explicit what you're doing
> when you send the vcard, and you can send it knowing the other end
> can accept it, and you can send it based on user input.
> 
> 2) Sending a user-icon jpeg/bitmap/gif.  Alice calls Bob, Bob has an
> icon that represents himself, sends it when he picks up the phone. 
> -Alternatives: send a 200ok, re-Invite, or Update with call-info,
> which explicitly has a type for icon. -Counter-argument: same as for
> vcard, plus with call-info there is no way to know which picture
> format the far-end supports a priori.  With a supported-package
> negotiation one could know.

Well, here I think the arguments are a bit more compelling for a 
media-path channel. This could be big, very possibly bigger than 1500 
bytes, and this puts us into issues with SIP.

> 
> 3) Sending a vcalendar-type invitation.  Alice calls Bob, Bob says
> "hey let's have a con call at time X", clicks and voila his phone
> sends a vcalendar. -Whether the vcalendar is related to the session
> or not and thus whether it should be sent in an in-dialog request or
> not is certainly debatable.  Message method can already be used for
> this anyway.

Well, I'll disagree with MESSAGE again under the argument that the 
intention here is not to render, but to have some kind of automated 
handling which depends on the purpose of the content (and not just the 
type). But I think this also passes the litmus test for cases where the 
other choices besides INFO are going to add complexity, overhead, or 
latency for no benefit; SUB/NOT is a lot of work when you have no idea 
if you would ever even receive it. Media-path setup would be overly 
complex and a lot of messages for something which is very likely to 
never be sent. The size of these is small, so in the signaling path is 
reasonable.

> 
> 4) Sending an HTTP URL.  Alice calls Bob, a sales guy; Alice asks for
> more info or a datasheet and Bob sends a URL for Alice to open with
> her web-browser. -One could also argue this is just making SIP the
> new SMTP, or this should be sent using MESSAGE (which really is the
> new SMTP).

Well, here we already have something defined - REFER with an http URL. 
See draft-ietf-sipping-app-interaction-framework.


> 
> 5) Sending a session traceroute.  Alice calls Bob, Bob answers, Alice
> does a sip-traceroute to figure out the path to Bob, by sending Info
> with an incrementing max-forwards type header starting at 0 (but not
> really max-forwards),

Max-FOrwards but not really Max-Forwards??

> with a sip-frag type response body or some
> such. -It's debatable if certain types of B2BUA's (ie, SBCs) would
> ever allow this type of thing to happen, due to security concerns,
> but I think they may do it at domain boundary hops.  I think this is
> a reasonable use for INFO though, maybe.

I'm much less convinced here. This would require handling at proxies and 
we haven't been discussing usage of INFO at proxies like this. Only e2e.

> 
> 6) Sending geo-location information after call establishment.  Alice
> calls Bob, a hotel receptionist.  Alice asks for directions to hotel,
> clicks button and sends him location info of her phone (or Bob clicks
> button and sends her his location). -The location conveyance draft
> specifically calls out INFO as acceptable for geo-loc info.  Whether
> this is a real use-case is debatable, and obviously it could be done
> with a sub/not.

SUB/NOT seems a bit better here, I think, since the recipient knows that 
they want it.

> 
> 7) Sending softkey-labels (not digit-match maps, but rather softkey
> button labels).  Alice calls her vmail server.  Vmail server sends
> softkey-labels for the menu items available in the response, Alice
> presses softkeys and sends them in INFO. -This could (and maybe
> should) be done with sub/not, a la KPML, where the vmail server sends
> the softkey labels in the Subscribe, UA sends buttons pressed in
> Notifies.  But this is similar to the DTMF use case so may well have
> the same benefit of lower overhead since buttons are rarely pressed.

Rarely pressed yes, but this is an application specifically looking for 
them. This is squarely in the territory of 
draft-ietf-sipping-app-interaction-framework and is better handled by 
those mechanisms.

> 
> 8) Sending a screen-pop-up message, e.g., "Do you want to continue
> with this session?" -There is a patent for doing screen pop-ups using
> INFO.  I guess Alert-Info could be used for this, but it's not clear
> it should?

See discussion on indirection above. I think this is reasonable for INFO 
also.

> 
> 
> /***************** *  Use-cases which have been proposed by others or
> even implemented, *  which are dubious for INFO (IMHO): 
> *****************/ 1) Sending RTP/RTCP statistics during call. -There
> is an implementation of this, and the rationale is the signaling
> plane box that wants this info is not actually the media plane box
> that gets RTCP.  Again this could (and IMO should) be done with
> sub/not, so it can get stats after the call is over, and since it
> will probably want periodic reports the overhead of the Subscribe
> should be dwarfed by the number of Notifies.

Agree SUB/NOT is better. Its already been defined that way.

> 
> 2) Sending access-location information after call establishment. 
> -There is a P-Access-Network-Info header, and some have proposed to
> send an update for it as a phone roams access points or cells.  But I
> think this is an odd thing to do inside an Invite session, vs. in a
> sub/not or Register (and besides half the time the network inserts
> this header, not the UA).
> 
> 3) Sending media-control indications (ie, remote-control
> "play/pause/etc.") -This is done today by at least one vendor, but is
> debatable if it's the right model.  The argument is it's like SDP
> re-Invite for hold, except at a media content layer above RTP, so not
> done in RTCP nor SDP.

I think this is much better done via a media-plane session. There is a 
requirement for low latency here and there will be a lot of these that 
get sent.

> 
> 4) Sending video fast update command -This is an informational draft,
> which documents what has been implemented, but states it should
> really be done in the media plane.

Agree.


> 
> 5) Sending peripheral control commands (ie, USB commands) -There is
> actually a patent on this, amazingly.  Someone thinks it makes sense
> to create a SIP session to your laptop, or vice-versa, and then send
> USB commands inside MIME in INFO messages.  Methinks this should be
> media-plane, if anything.

Agree.

-Jonathan R.
-- 
Jonathan D. Rosenberg, Ph.D.                   499 Thornall St.
Cisco Fellow                                   Edison, NJ 08837
Cisco, Voice Technology Group
jdrosen@cisco.com
http://www.jdrosen.net                         PHONE: (408) 902-3084
http://www.cisco.com


_______________________________________________
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