Lemonade N. Cook Internet-Draft Cloudmark Intended status: Informational September 9, 2007 Expires: March 12, 2008 Streaming Internet Messaging Attachments draft-ietf-lemonade-streaming-03 Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on March 12, 2008. Copyright Notice Copyright (C) The IETF Trust (2007). Cook Expires March 12, 2008 [Page 1] Internet-Draft Streaming Messaging Attachments September 2007 Abstract This document describes a method for streaming multimedia attachments received by a resource constrained and/or mobile device from an IMAP server. It allows such clients, which often have limits in storage space and bandwidth, to play video and audio e-mail content. The document describes a profile for making use of the IMAP URLAUTH extension (RFC 4467), the Network Announcement SIP Media Service (RFC 4240), and the Media Server Control Markup Language (RFC 4722). The document also defines a new IMAP METADATA entry. Cook Expires March 12, 2008 [Page 2] Internet-Draft Streaming Messaging Attachments September 2007 Conventions Used in this Document The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [8]. In examples, "C:" and "S:" indicate lines sent by the client and server respectively. If a single "C:" or "S:" label applies to multiple lines, then the line breaks between those lines are for editorial clarity only and are not part of the actual protocol exchange. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1. Overview of Mechanism . . . . . . . . . . . . . . . . . . 5 2.2. Client use of GENURLAUTH Command . . . . . . . . . . . . . 7 2.3. Media Server Discovery using the METADATA Extension . . . 8 2.4. Client Determination of Media Server Capabilities . . . . 10 2.5. Client Use of the Media Server Announcement Service . . . 11 2.6. Media Negotiation and Transcoding . . . . . . . . . . . . 12 2.7. Client Use of the Media Server MSCML IVR Service . . . . . 14 2.8. Media Server Use of IMAP Server . . . . . . . . . . . . . 18 2.9. Protocol Diagrams . . . . . . . . . . . . . . . . . . . . 19 2.9.1. Announcement Service Protocol Diagram . . . . . . . . 20 2.9.2. IVR Service Protocol Diagram . . . . . . . . . . . . . 20 3. Security Considerations . . . . . . . . . . . . . . . . . . . 22 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 5. Digital Rights Management (DRM) Issues . . . . . . . . . . . . 24 6. Deployment Considerations . . . . . . . . . . . . . . . . . . 25 7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 26 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 27 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 28 9.1. Normative References . . . . . . . . . . . . . . . . . . . 28 9.2. Informative References . . . . . . . . . . . . . . . . . . 29 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 30 Intellectual Property and Copyright Statements . . . . . . . . . . 31 Cook Expires March 12, 2008 [Page 3] Internet-Draft Streaming Messaging Attachments September 2007 1. Introduction Email clients on resource and/or network constrained devices, such as mobile phones, may have difficulties in retrieving and/or storing large attachments received in a message. For example, on a poor network link, the latency required to download the entire attachment may not be acceptable to the user. Conversely, even on a high-speed network, the device may not have enough storage space to secure the attachment once retrieved. For certain media, such as audio and video, there is a solution: the media can be streamed to the device, using protocols such as RTP [7]. Streaming can be initiated and controlled using protocols such as SIP [5] and particularly the media server profiles as specified in RFC 4240 [1] or MSCML [12]. Streaming the media to the device addresses both the latency issue, since the client can start playing the media relatively quickly, and the storage issue, since the client does not need to store the media locally. A tradeoff is that the media cannot be viewed/played when the device is offline. Examples of the types of media that would benefit from the ability to stream such media to the device include: o Voice or Video mail messages received as an attachment o Audio clips such as ring tones received as an attachment o Video clips, such as movie trailers, received as an attachment The client may wish to present the user with the ability to use simple "VCR"-style controls such as pause, fast-forward and rewind. In consideration of this, the document presents two alternatives for streaming media - a simple mechanism which makes use of the announcement service of RFC 4240, and a more complex mechanism which allows VCR controls, based on MSCML (RFC 4722) [12]. The choice of which mechanism to use is up to the client. The choice may be based on limitations of the client or the configured media server. This document presents suggestions for determining which of these services are available. Cook Expires March 12, 2008 [Page 4] Internet-Draft Streaming Messaging Attachments September 2007 2. Mechanism 2.1. Overview of Mechanism The proposed mechanism for streaming media to messaging clients is a profile for making use of several existing mechanisms, namely: 1. IMAP URLAUTH Extension (RFC 4467) [2] - Providing the ability to generate an IMAP URL [4] that allows anonymous access from external systems to specific message parts; for example, an audio clip. 2. URLFETCH Binary Extension (URLFETCH BINARY) [16] - Providing the ability to specify BINARY and STRUCTURE arguments to the URLFETCH command. 3. Media Server Announcement Service (RFC 4240) [1] - Providing the ability for a media server to stream media using a reference provided by the media server client in a URL. 4. Media Server Interactive Voice Response (IVR) Service (RFC 4722) [12] - Providing the ability to stream media as above, but with VCR-style controls. This document proposes a new attribute for the IMAP METADATA Extension [13], which is used to provide information about zero or more suitable media servers for use with the IMAP [3] server. Cook Expires March 12, 2008 [Page 5] Internet-Draft Streaming Messaging Attachments September 2007 The approach is shown in the following figure: +--------------+ | | | Email Client |^ | | \ +--------------+ \ ^ ^ \ | \ \ (5) | (1), \ \ | (2) \ \ | (3),\ \ | (6) \ \ | \ \ v v v +--------------+ +----------------+ | | (4) | | | IMAP Server |<----->| Media Server | | | | | +--------------+ +----------------+ Figure 1 The proposed mechanism has the following steps: 1. Client determines from MIME headers of a particular message that a particular message part (attachment) should be streamed to the user. Note that no assumptions are made about how/when/if the client contacts the user of the client about this decision. User input MAY be required in order to initiate the proposed mechanism. 2. Client constructs an IMAP URL referencing the message part, and uses the GENURLAUTH [2] command to generate a URLAUTH authorized IMAP URL. Client may optionally use the IMAP server to discover a suitable media server for streaming the media (see Section 2.3. 3. Client connects to a SIP Media Server using the Announcement Service as specified in RFC 4240 [1], or the IVR Service as specified in RFC 4722 [12], and passes the URLAUTH authorized URL to the media server. 4. Media Server connects to the IMAP Server specified in the referenced URL, and uses the IMAP URLFETCH [2] command to retrieve the message part. Cook Expires March 12, 2008 [Page 6] Internet-Draft Streaming Messaging Attachments September 2007 5. Media server streams the retrieved message part to the client using RTP [7]. 6. The media server or the client terminate the media streaming, or the streaming ends naturally. The SIP session is terminated by either client or server. It should be noted that the proposed mechanism makes several assumptions about the mobile device, as well as the network services, namely: o Mobile device is provisioned with, or obtains from the IMAP server, the address or addresses of a media server which supports either RFC 4240 [1] or RFC 4722 [12]. o Media Server(s) used by the mobile device support the IMAP URL [4] scheme for the announcement and/or IVR services o IMAP Server used by the mobile device supports generating anonymous IMAP URLs using the URLAUTH mechanism 2.2. Client use of GENURLAUTH Command The decision to make use of streaming services for a message part will usually be predicated on the content type of the message part. Using the capabilities of the IMAP FETCH command, clients determine the MIME [9] Content-Type of particular message parts and based on local policies or heuristics, decide that streaming for that message part will be attempted. Once the client has determined that a particular message part requires streaming, the client generates an IMAP URL that refers to the message part according to the method described in RFC 2192 [4]. The client then begins the process of generating an URLAUTH URL, by appending ";EXPIRE=" and ";URLAUTH=" to the initial URL. The ";EXPIRE=" parameter is optional, however it SHOULD be used, since the use of anonymous URLAUTH authorized URLs is a security risk, and doing so ensures that at some point in the future, permission to access that URL will cease. The portion of the URLAUTH parameter SHOULD be 'authuser' if the media server discovery mechanism defined in Section 2.3 specifies that the media server is an authorised user of the IMAP server. Without specific prior knowledge of such a configuration (either through the discovery mechanism or by an out of band mechanism), the client MUST use the 'anonymous' access identifier. Cook Expires March 12, 2008 [Page 7] Internet-Draft Streaming Messaging Attachments September 2007 The client uses the URL generated as a parameter to the GENAUTHURL command, using the INTERNAL authorization mechanism. The URL returned by a successful response to this command will then be passed to the media server. If no successful response to the GENURLAUTH command is received, then no further action will be possible with respect to streaming media to the client. Examples: C: a122 UID FETCH 24356 (BODYSTRUCTURE) S: * 26 FETCH (BODYSTRUCTURE (("TEXT" "PLAIN" S: ("CHARSET" "US-ASCII") NIL S: NIL "7BIT" 1152 23)("VIDEO" "MPEG" NIL NIL "BASE64" 655350)) UID 24356) S: a122 OK FETCH completed. C: a123 GENURLAUTH "imap://joe@example.com/INBOX/;uid=24356/; section=1.2;expire=2006-12-19T16:39:57-08:00; urlauth=anonymous" INTERNAL S: * GENURLAUTH "imap://joe@example.com/INBOX/;uid=24356/; section=1.2;expire=2006-12-19T16:39:\57-08:00; urlauth=anonymous: internal:238234982398239898a9898998798b987s87920" S: a123 OK GENURLAUTH completed C: a122 UID FETCH 24359 (BODYSTRUCTURE) S: * 27 FETCH (BODYSTRUCTURE (("TEXT" "PLAIN" S: ("CHARSET" "US-ASCII") NIL S: NIL "7BIT" 1152 23)("AUDIO" "G729" NIL NIL "BASE64" 87256)) UID 24359) S: a122 OK FETCH completed. C: a123 GENURLAUTH "imap://joe@example.com/INBOX/;uid=24359/; section=1.3;expire=2006-12-19T16:39:57-08:00; urlauth=anonymous" INTERNAL S: * GENURLAUTH "imap://joe@example.com/INBOX/;uid=24359/; section=1.3;expire=2006-12-20T18:31:\45-08:00; urlauth=authuser: internal:098230923409284092384092840293480239482" S: a123 OK GENURLAUTH completed 2.3. Media Server Discovery using the METADATA Extension There are two possibilities for clients with regard to determining the hostname and port number information of a suitable media server: 1. No discovery of media servers is required: clients are configured with suitable media server information in an out-of-band manner. Cook Expires March 12, 2008 [Page 8] Internet-Draft Streaming Messaging Attachments September 2007 2. Discovery of media servers is required: clients use the discovery mechanism described in this section to determine a suitable media server to use for streaming multimedia message parts. There are several scenarios where media server discovery would be a requirement for streaming to be successful: o Client is not configured with the address of any media servers. o Client is configured with the address of one or more media servers, but the IMAP server is configured to only accept URLFETCH requests from specific media servers (for security or site policy reasons), and thus streaming would fail due to the media server not being able to retrieve the media from the IMAP server. There is also a scenario where media server location would improve the security of the streaming mechanism, by avoiding the use of completely anonymous URLs. For example, the client could discover a media server address that was an authorised user of the IMAP server, which would allow the client to generate a URL, which was secure in that it could *only* be accessed by a specific (presumably trusted) media server. This document proposes using the IMAP METADATA [13] extension, via the use of an entry that provides the contact information for suitable media servers for use with the IMAP server. Media Server discovery is optional: clients are free to use pre-configured information about media servers, or to fall back to pre-configured information if they encounter IMAP servers that do not support either the METADATA extension or the proposed entry, or that do not provide a value for the entry. The "value" attribute of the /mediaServers entry is formatted according to the formalSyntax specified in Section 7. This consists of a tuple of a URI and optional "authuser", where the URI is surrounded by <> symbols, the URI and "authuser" are separated using a colon ":", and tuples are separated using a ";". For example: ":authuser;;" ";;:authuser" It should be noted that the URI specified in the ABNF is generic, i.e. not restricted to SIP URIs; however this document only specifies Cook Expires March 12, 2008 [Page 9] Internet-Draft Streaming Messaging Attachments September 2007 how to make use of SIP URIs. Additionally, the "userinfo" (known as the "service indicator" in RFC 4240 and 4722) component of the URI is optional; if specified it gives the client additional information about the media server capabilities. For example, a userinfo component of "annc" indicates that the media server supports RFC 4240, and "ivr" indicates support for RFC 4722. Clients SHOULD parse the value of mediaServers, (using either the value.priv or value.shared: whichever is available and/or appropriate), and contact a media server using one of the supplied URIs. The servers are returned in order of preference as suggested by the server, however it is left to the client to decide if a different order is more appropriate when selecting the media server(s) to contact, as well as the selection of alternates under failure conditions. Administrators configuring the values of the /mediaServers entry, who do not know the capabilities of the media servers being configured, SHOULD NOT put the service as part of of the URI, in which case the client will determine which service to use as specified in Section 2.4. Note that if a media server supports multiple services, a URI should be configured for each service. 2.4. Client Determination of Media Server Capabilities Once an authorized IMAP URL has been generated, it is up to the client to pass that URL to a suitable media server that is capable of retrieving the URL via IMAP, and streaming the content to the client using the RTP [7] protocol. This section specifies the behaviour of clients that have not determined, (either statically through configuration, or dynamically through the discovery process specified in Section 2.3), the capabilities of the media server with respect to the services (i.e. RFC 4240 or 4722) supported by that media server. Clients that have determined those capabilities should use the mechanisms described in Section 2.5 or Section 2.7, as appropriate. If the client supports the MSCML IVR service, then it MUST attempt to contact the media server using the MSCML protocol by sending a SIP INVITE which has the service indicator "ivr". Due to issues described in Section 3, the client SHOULD use a suitable end-to-end encryption method, such as S/MIME [6]. Assuming the media server responds to the INVITE without error, the client can carry on using the MSCML IVR service as specified in Section 2.7. If the media server responds with an error indicating that the "ivr" service is not supported, then if the client supports Cook Expires March 12, 2008 [Page 10] Internet-Draft Streaming Messaging Attachments September 2007 it, the client SHOULD attempt to contact the media server using the Announcement Service, as described in Section 2.5. The following example shows an example SIP INVITE using the "ivr" service indicator: C: INVITE sip:ivr@ms2.example.net SIP/2.0 < SIP Header fields omitted for reasons of brevity > 2.5. Client Use of the Media Server Announcement Service Assuming the client or media server does not support use of the MSCML protocol, the media server announcement service is used, as described in RFC 4240 [1]. This service allows the client to send a SIP INVITE to a special username ('annc') at the media server (the "announcement" user), supplying the URL obtained as per Section 2.2. The SIP INVITE is constructed as shown in the examples below; note that as per RFC 4240, the play parameter is mandatory, and specifies the authorized IMAP URL to be played. Examples of valid SIP INVITE URIs sent to the media server announcement service: sip:annc@ms2.example.net; \ play=imap://joe@example.com/INBOX/;uid=24356/;section=1.2;\ expire=2006-12-19T16:39:\57-08:00;urlauth=anonymous:\ internal:238234982398239898a9898998798b987s87920; \ content-type=video/mpeg; \ content-transfer-encoding=base64 sip:annc@ms1.example.net; \ play=imap://fred@example.com/INBOX/;uid=24359/;section=1.3;\ expire=2006-12-20T18:31:\45-08:00;urlauth=authuser:\ internal:098230923409284092384092840293480239482; If the receives a 200 (OK) response, the media server has successfully retrieved the content from the IMAP server and the negotiated RTP stream will shortly begin after the ACK. There are many possible response codes, however a response code of 404 received from the media server indicates that the content could not be found or could not be retrieved for some reason. For example, the media server may not support the use of IMAP URLs. At this point, there are several options to the client, such as using alternate media servers, or giving up in attempting to stream the Cook Expires March 12, 2008 [Page 11] Internet-Draft Streaming Messaging Attachments September 2007 required message part. 2.6. Media Negotiation and Transcoding This document uses standards and protocols from two traditionally separate application areas: Mobile Email (primarily IMAP) and Internet Telephony/Streaming (e.g. SIP/RTP). Since the document primarily addresses enhancing the capabilities of mobile email, it is felt worthwhile to give some examples of simple SIP/SDP exchanges, and discussing capabilities such as media negotiation (using SDP) and media transcoding. In the below example, the client contacts the media server using the SIP INVITE command to contact the Announcement service (see Section 2.5), advertising support for a range of audio and video codecs (using SDP [11]), and in response the media server advertises only a set of audio codecs. This process is identical for the IVR service, except that the IVR service does not use the SIP Request-URI to indicate the content to be played; instead this is carried in a subsequent SIP INFO request. The client and server now know from the SDP advertised by both client and server that communication must be using the subset of audio codecs supported by both client and server (in the example SDP, it is clear that the server does not support any video codecs). The media server may perform transcoding (i.e. converting between codecs) on the media received from the IMAP server in order to satisfy the codecs supported by the client: for example the media server may downgrade the video retrieved from the IMAP server to the audio component only. For clients using the Announcement service, the media server MUST return an error to the INVITE if it cannot find a common codec between the client, server and media, and it cannot transcode to a suitable codec. Similarly, for clients using the MSCML IVR service, the media server MUST return a suitable error response to the request. Example SIP INVITE and SDP Media Negotiation C: INVITE sip:annc@ms2.example.net; \ play=imap://joe@example.com/INBOX/;uid=24356/;section=1.2;\ expire=2006-12-19T16:39:\57-08:00;urlauth=anonymous:\ internal:238234982398239898a9898998798b987s87920; \ content-type=video/mpeg; \ content-transfer-encoding=base64 SIP/2.0 From: UserA To: NetAnn Cook Expires March 12, 2008 [Page 12] Internet-Draft Streaming Messaging Attachments September 2007 Call-ID: 8204589102@example.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 481 v=0 o=UserA 2890844526 2890844526 IN IP4 192.0.2.40 s=Session SDP c=IN IP4 192.0.2.40 t=3034423619 0 m=audio 9224 RTP/AVP 0 8 3 98 101 a=alt:1 1 : 01BB7F04 6CBC7A28 192.0.2.40 9224 a=fmtp:101 0-15 a=rtpmap:98 ilbc/8000 a=rtpmap:101 telephone-event/8000 a=recvonly m=video 9226 RTP/AVP 105 34 120 a=alt:1 1 : 01BCADB3 95DFFD80 192.0.2.40 9226 a=fmtp:105 profile=3;level=20 a=fmtp:34 CIF=2 QCIF=2 MAXBR=5120 a=rtpmap:105 h263-2000/90000 a=rtpmap:120 h263/90000 a=recvonly S: SIP/2.0 200 OK From: UserA To: NetAnn Call-ID: 8204589102@example.com CSeq: 1 INVITE Contact: Content-Type: application/sdp Content-Length: 317 v=0 o=NetAnn 2890844527 2890844527 IN IP4 192.0.2.41 s=Session SDP c=IN IP4 192.0.2.41 t=3034423619 0 m=audio 17684 RTP/AVP 0 8 3 18 98 101 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:3 GSM/8000 a=rtpmap:18 G729/8000 a=fmtp:18 annexb=no a=rtpmap:98 iLBC/8000 a=rtpmap:101 telephone-event/8000 Cook Expires March 12, 2008 [Page 13] Internet-Draft Streaming Messaging Attachments September 2007 a=fmtp:101 0-16 C: ACK sip:netann@192.0.2.41 SIP/2.0 From: UserA To: NetAnn Call-ID: 8204589102@example.com CSeq: 1 ACK Content-Length: 0 2.7. Client Use of the Media Server MSCML IVR Service Once the client has determined that the media server supports the IVR service, it is up to the client to generate a suitable MSCML request to initiate streaming of the required media. When using the IVR service, the initial SIP invite is used only to establish that the media server supports the MSCML IVR service, and to negotiate suitable media codecs. Once the initial SIP INVITE and response to that INVITE have been completed successfully, the client must generate a SIP INFO request with MSCML in the body of the request to initiate streaming. The request is used, as this allows the use of DTMF digits to control playback of the media, such as fast-forward or rewind. Since the playcollect request is used purely for its VCR capabilities, there is no need for the media server to perform DTMF collection, therefore the playcollect attributes "firstdigittimer", "interdigittimer" and "extradigittimer" SHOULD all be set to "0ms", which will have the effect of causing digit collection to cease immediately the media has finished playing. The "ffkey" and "rwkey" attributes of are used to control fast forward and rewind behaviour, with the "skipinterval" attribute being used to control the 'speed' of these actions. The tag is used to specify the media to be played, and SHOULD have a single