Issue with "bytes" Range Unit and live streaming

Craig Pratt <craig@ecaspia.com> Thu, 14 April 2016 23:31 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ie@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E50F212E4E8 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 14 Apr 2016 16:31:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.193
X-Spam-Level:
X-Spam-Status: No, score=-7.193 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=0.001, MIME_HTML_ONLY=0.723, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.996, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=ecaspia-com.20150623.gappssmtp.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id W0AmRTs5imT2 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 14 Apr 2016 16:31:40 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E259C12E491 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Thu, 14 Apr 2016 16:31:39 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.80) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1aqqew-0000EZ-RL for ietf-http-wg-dist@listhub.w3.org; Thu, 14 Apr 2016 23:26:50 +0000
Resent-Date: Thu, 14 Apr 2016 23:26:50 +0000
Resent-Message-Id: <E1aqqew-0000EZ-RL@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <craig@caspiaconsulting.com>) id 1aqqer-0000Do-P2 for ietf-http-wg@listhub.w3.org; Thu, 14 Apr 2016 23:26:45 +0000
Received: from mail-io0-f175.google.com ([209.85.223.175]) by maggie.w3.org with esmtps (TLS1.2:RSA_ARCFOUR_SHA1:128) (Exim 4.80) (envelope-from <craig@caspiaconsulting.com>) id 1aqqep-0003Wh-UV for ietf-http-wg@w3.org; Thu, 14 Apr 2016 23:26:45 +0000
Received: by mail-io0-f175.google.com with SMTP id 2so119585364ioy.1 for <ietf-http-wg@w3.org>; Thu, 14 Apr 2016 16:26:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ecaspia-com.20150623.gappssmtp.com; s=20150623; h=from:subject:to:organization:message-id:date:user-agent :mime-version:content-transfer-encoding; bh=8a9sOPyDrU7hYJrUcf/cDMj6yM1UvCY/XziYRYDRFr8=; b=xSlPEDN3EoMMhcxcykRGuPGJRpCsbB9PIVJnl/3kt+bdXGoQkUJui/Fr5zzDdgGRP1 6TvLLf8jICsbhgrfGYtl/mjaHMXtrDQeOGw6XKIFeADgAe060tFFqBgSojme00hwU7tZ 6bFA8CuYip9B5q555fdZSumPL0TYFUQJIQUIA6/2BNlWu7JCmYeUzxZBwnb2eH6yw/8F eFl98efnyVPbJgrzP+ygyyMyeVuvelkX+RQRKhETEVTQMAobIO/OXCYsSCKdi9IBeKll MIpbRB7gNxTOK8i8xFOBzXHUkW4BeS4kueWiqqN5KdVcVXFgBD7LhGKJPYAVizdjYZR8 klRQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:subject:to:organization:message-id:date :user-agent:mime-version:content-transfer-encoding; bh=8a9sOPyDrU7hYJrUcf/cDMj6yM1UvCY/XziYRYDRFr8=; b=QZoZkpAXIBnT86NdrkKH51vBl3sH7nteM1YcPy+w+pY6lOmY89ro610lfd2U+wqyKV YJpa+LcDTnB8IuWLABjDT4GQlPl9P3jmsS2X8ldLCBprGNTBEzkhGXqveSceEkHc4s9j Yjz77BCnymYScE9L5KY3gglzhobt0aL/k1jDnlK6RP6+Tdq9oUDs0o3K9CXIVk0y+5AW oK0KchG5UolSFfL5mirxvm8Rj1E4CIO05LKgKhL3J3xTXAn9RNTxdj0UVm/RIL2ndtTU LCHxs9a8OSB72zRmyoO86gnHMd48nOZzPd58Y3iGXd00ifKjUgvdn+BXZ/+V/U8RJUZ2 YGsw==
X-Gm-Message-State: AOPr4FXZRd+h4vEOV8pBf+hj+F8o8e1bXfI/V1HcilNXqobJG4cZRLutnwcQo5CFlX8UvA==
X-Received: by 10.107.136.140 with SMTP id s12mr21626988ioi.109.1460676377696; Thu, 14 Apr 2016 16:26:17 -0700 (PDT)
Received: from craigp-mbp.local ([2620:0:2b10:210:ecf0:47bb:6b51:f832]) by smtp.googlemail.com with ESMTPSA id qd7sm2886799igb.0.2016.04.14.16.26.16 for <ietf-http-wg@w3.org> (version=TLSv1/SSLv3 cipher=OTHER); Thu, 14 Apr 2016 16:26:16 -0700 (PDT)
From: Craig Pratt <craig@ecaspia.com>
To: IETF HTTP BIS <ietf-http-wg@w3.org>
Organization: Caspia Consulting
Message-ID: <57102718.7010900@ecaspia.com>
Date: Thu, 14 Apr 2016 17:26:16 -0600
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.6.0
MIME-Version: 1.0
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 8bit
Received-SPF: pass client-ip=209.85.223.175; envelope-from=craig@caspiaconsulting.com; helo=mail-io0-f175.google.com
X-W3C-Hub-Spam-Status: No, score=-1.4
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, MIME_HTML_ONLY=0.723, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, W3C_NW=0.5
X-W3C-Scan-Sig: maggie.w3.org 1aqqep-0003Wh-UV 15c2ce5d7d462cc0d23d749fcdb4047c
X-Original-To: ietf-http-wg@w3.org
Subject: Issue with "bytes" Range Unit and live streaming
Archived-At: <http://www.w3.org/mid/57102718.7010900@ecaspia.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/31467
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

Hello all,

We have a use case where we are "live streaming" media over HTTP. As with other (non-segmented) HTTP streaming applications, our live streaming solution has the HTTP client perform a GET on a URI representing the live audio or video content stream and with the server progressively returning data using chunked transfer coding. The data returned to the server is "live" so long as the client reads data as quickly as it's generated - with TCP flow control allowing the client's reading of the response data to be paced to the live chunk generation of the HTTP server.

More recently, use cases have appeared that require a combination of random access and live streaming. For example, an HTTP media server may want to support streaming of an in-progress recording - with the HTTP client using HTTP byte Range requests to access any point within the already-recorded content. But we've run into issues supporting both live content transfer and HTTP byte Range requests on the same resource. There's no good way that we've found to get to this "live point" and also support random access. The use case requires a byte range that ends at an indeterminate point, e.g.

    Range: bytes=1234567-*

However, the ABNF for the bytes Range Unit doesn't allow for this form of request.

Rather than coming up with a proprietary solution, we are proposing a new Range Unit called "bytes-live" as a potential solution to this issue. Support for this new "bytes-live" Range Unit could be exposed by servers (using the Accept-Ranges header) for content that support both byte-wise random access and live streaming. e.g. A server that supports both the standard HTTP/1.1 bytes Range Unit and bytes-live would include the header:

    Accept-Ranges: bytes bytes-live

An HTTP client can use Range requests with the standard "bytes" Range Unit to transfer stored content from a representation. And when the bytes-live Range Unit is supported, an HTTP client can request a byte range that starts or ends at the live point of the content representation. For example, a client could request the transfer of bytes starting at byte 1234567 and transitioning to the live point once all stored content has been transferred using:

    Range: bytes-live=1234567-*

We believe the bytes-live Range Unit could have multiple applications outside of our immediate use cases. For instance, internet-connected video cameras with on-board storage could use bytes-live to support streaming of continuously recording content with lower latencies than can be achieved using HLS, MPEG-DASH, or other segmented video streaming techniques. And there are also applications with on-demand transcoding.

The draft RFC can be found here https://tools.ietf.org/html/draft-pratt-httpbis-bytes-live-range-unit-00" rel="nofollow">https://tools.ietf.org/html/draft-pratt-httpbis-bytes-live-range-unit-00" rel="nofollow">https://tools.ietf.org/html/draft-pratt-httpbis-bytes-live-range-unit-00. Please let me know what you think - and if there are other solutions we haven't considered.

Regards,

craig
--

craig pratt

Caspia Consulting

craig@ecaspia.com

503.746.8008