Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
EXPANSION OF A STREAM SET AND TRANSCODING OF HTTP ADAPTIVE STREAMING VIDEOS IN A MOBILE NETWORK
Document Type and Number:
WIPO Patent Application WO/2014/058431
Kind Code:
A1
Abstract:
Methods and apparatus, including computer program products, for an expansion of a stream set and transcoding of Hypeliext Transfer Protocol (HTTP) adaptive streaming videos in a mobile network. A method includes, in a mobile content delivery network (CDN) server residing in a mobile network, maintaining a database of mobile subscriber information for mobile subscribers derived from the mobile network, receiving a mobile client request to download a video stream, ingesting a manifest file from a server in the network originating the requested video, deriving characteristics of a mobile device of the mobile client from mobile subscriber information, expanding a set of streams in the manifest file depending on the derived characteristics of the mobile device, transcoding the set of streams from the serve into alternate bit rates suitable for a current mobile network condition, and delivering the set of streams to the mobile client.

Inventors:
VENKATRAMAN SRINIVASAN (US)
SHERER PAUL (US)
Application Number:
PCT/US2012/059784
Publication Date:
April 17, 2014
Filing Date:
October 11, 2012
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
AFFIRMED NETWORKS INC (US)
International Classes:
H04N7/173
Foreign References:
US20110107379A12011-05-05
US20120208512A12012-08-16
US20110107364A12011-05-05
US20110103374A12011-05-05
US20080207182A12008-08-28
US20120233644A12012-09-13
US20080039010A12008-02-14
US20110197237A12011-08-11
US20070276925A12007-11-29
Other References:
XIN, JUN ET AL.: "Digital Video Transcoding", PROCEEDINGS OF THE IEEE, vol. 93, no. 1, January 2005 (2005-01-01), pages 84,97, Retrieved from the Internet [retrieved on 20130228]
CHIOU, HUNG-JYH ET AL.: "Content-aware error-resilient transcoding using prioritized intra-refresh for video streaming", JOURNAL OF VISUAL COMMUNICATION AND IMAGE REPRESENTATION, vol. 16, no. ISS.4-, October 2005 (2005-10-01), pages 563 - 588, ISSN: 1047-3203, Retrieved from the Internet [retrieved on 20130228]
AMRAM, N. ET AL.: "QoE-based transport optimization for video delivery over next generation cellular networks", COMPUTERS AND COMMUNICATIONS (ISCC), 2011 IEEE SYMPOSIUM ON, 28 June 2011 (2011-06-28), pages 19,24, Retrieved from the Internet [retrieved on 20130228]
LIU, JIANGCHUAN ET AL.: "Adaptive video multicast over the Intemet", MULTIMEDIA, vol. 10, no. 1, January 2003 (2003-01-01), pages 22,33, XP011095498, Retrieved from the Internet [retrieved on 20130228], DOI: doi:10.1109/MMUL.2003.1167919
Attorney, Agent or Firm:
HOBGOOD, John V. (60 State StreetBoston, MA, US)
Download PDF:
Claims:
1. A method comprising:

in a mobile content delivery network (CDN) server residing in a mobile network, maintaining a database of mobile subscriber information for mobile subscribers derived from the mobile network;

receiving a mobile client request to download a video stream;

ingesting a manifest file from a server in the network originating the requested video; deriving characteristics of a mobile device of the mobile client from mobile subscriber information derived from the database of mobile subscriber information for mobile subscribers derived from the mobile network;

expanding a set of streams in the manifest file depending on the derived

characteristics of the mobile device;

transcoding the set of streams from the server in the network originating the requested video into alternate bit rates suitable for a current mobile network condition; and

delivering the set of streams to the mobile client.

2. The method of claim 1 wherein delivering is time shifted based upon subscriber policy or mobile network conditions.

3. The method of claim 1 wherein the mobile network is selected from the group consisting of Global System for Mobile (GSM), General Packet Radio Service (GPRS), EDGE, High Speed Downlink Packet Access (HSDPA), Code Division Multiple Access (CDMA), Long Term Evolution (LTE) and LTE Advanced.

4. The method of claim 1 wherein the mobile subscriber information comprises owner information, subscriber device information and subscriber mobile charging and subscription plan information.

5. A mobile content delivery network (CDN) server comprising:

a processor;

a storage device; and

a memory, the memory comprising an operating system, a cache and a transcoding process, the transcoding process comprising: maintaining a database of mobile subscriber information for mobile subscribers derived from the mobile network;

receiving a mobile client request to download a video stream;

ingesting a manifest file from a server in the network originating the requested video; deriving characteristics of a mobile device of the mobile client from mobile subscriber information derived from the database of mobile subscriber information for mobile subscribers derived from the mobile network;

expanding a set of streams in the manifest file depending on the derived

characteristics of the mobile device;

transcoding the set of streams from the server in the network originating the requested video into alternate bit rates suitable for a current mobile network condition; and

delivering the set of streams to the mobile client.

6. The mobile CDN server of claim 5 wherein the mobile network is selected from the group consisting of Global System for Mobile (GSM), General Packet Radio Service (GPRS), EDGE, High Speed Downlink Packet Access (HSDPA), Code Division Multiple Access (CDMA), Long Term Evolution (LTE) and LTE Advanced.

7. The mobile CDN server of claim 5 wherein the mobile subscriber information comprises owner information, subscriber device information and subscriber mobile charging and subscription plan information.

Description:
Expansion of a Stream Set and Transcoding of HTTP

Adaptive Streaming Videos in a Mobile Network

BACKGROUND OF THE INVENTION

[001] The invention generally relates to mobile networks, and more specifically to an expansion of a stream set and transcoding of Hypertext Transfer Protocol (HTTP) adaptive streaming videos in a mobile network.

[002] The use of video streaming is commonly used to deliver video data via the Internet and other networks. Typically, a video server divides a video program into segments, encodes each segment, and transmits the encoded segments via a network to a client device. The client device receives the encoded segments, decodes the segments, and presents the decoded segments in an appropriate sequence to produce a video presentation.

[003] In general, progressive download refers to video delivered by a regular HTTP web server rather than a streaming server. In most instances, video delivered using this technique is stored on a viewer's hard drive as it's received, and then it's played from the hard drive. In contrast, streaming video is usually not stored (also called cached) locally, so if the viewer can't retrieve and play it in real time, he or she cannot play it smoothly at all.

SUMMARY OF THE INVENTION

[004] The following presents a simplified summary of the innovation in order to provide a basic understanding of some aspects of the invention. This summary is not an extensive overview of the invention. It is intended to neither identify key or critical elements of the invention nor delineate the scope of the invention. Its sole purpose is to present some concepts of the invention in a simplified form as a prelude to the more detailed description that is presented later.

[005] The present invention provides methods and apparatus, including computer program products, for expansion of stream set and transcoding of Hypertext Transfer Protocol (HTTP) adaptive streaming videos in a mobile network. [006] In an aspect, the invention features a method including, in a mobile content delivery network (CDN) server residing in a mobile network, maintaining a database of mobile subscriber information for mobile subscribers derived from the mobile network, receiving a mobile client request to download a video stream, ingesting a manifest file from a server in the network originating the requested video, deriving characteristics of a mobile device of the mobile client from mobile subscriber information derived from the database of mobile subscriber information for mobile subscribers derived from the mobile network, expanding a set of streams in the manifest file depending on the derived characteristics of the mobile device, transcoding the set of streams from the server in the network originating the requested video into alternate bit rates suitable for a current mobile network condition, and delivering the set of streams to the mobile client.

[007] In another aspect, the invention features a mobile content delivery network (CDN) server including a processor, a storage device and a memory, the memory including an operating system, a cache and a transcoding process, the transcoding process including maintaining a database of mobile subscriber information for mobile subscribers derived from the mobile network, receiving a mobile client request to download a video stream, ingesting a manifest file from a server in the network originating the requested video, deriving characteristics of a mobile device of the mobile client from mobile subscriber information derived from the database of mobile subscriber information for mobile subscribers derived from the mobile network, expanding a set of streams in the manifest file depending on the derived characteristics of the mobile device, transcoding the set of streams from the server in the network originating the requested video into alternate bit rates suitable for a current mobile network condition, and delivering the set of streams to the mobile client.

[008] Other features and advantages of the invention are apparent from the following description, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

[009] The invention will be more fully understood by reference to the detailed description, in conjunction with the following figures, wherein:

[0010] FIG. 1 is a block diagram of an exemplary network.

[0011 ] FIG. 2 is a block diagram of an exemplary network. [0012] FIG. 3 is a block diagram of a mobile content delivery network server.

[0013] FIG. 4 is a flow diagram.

DETAILED DESCRIPTION

[0014] The subject innovation is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It may be evident, however, that the present invention may be practiced without these specific details. In other instances, well- known structures and devices are shown in block diagram form in order to facilitate describing the present invention.

[0015] As used in this application, the terms "component," "system," "platform," and the like can refer to a computer-related entity or an entity related to an operational machine with one or more specific functionalities. The entities disclosed herein can be either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. Also, these components can execute from various computer readable media having various data structures stored thereon. The components may communicate via local and/or remote processes such as in accordance with a signal having one or more data packets (e.g., data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems via the signal).

[0016] In addition, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or." That is, unless specified otherwise, or clear from context, "X employs A or B" is intended to mean any of the natural inclusive permutations. That is, if X employs A; X employs B; or X employs both A and B, then "X employs A or B" is satisfied under any of the foregoing instances. Moreover, articles "a" and "an" as used in the subject specification and annexed drawings should generally be construed to mean "one or more" unless specified otherwise or clear from context to be directed to a singular form.

[0017] Moreover, terms like "user equipment," "mobile station," "mobile," "subscriber station," "communication device," "access terminal," "terminal," "handset," and similar terminology, refer to a wireless device (e.g., cellular phone, smart phone, computer, personal digital assistant (PDA), set-top box, Internet Protocol Television (IPTV), electronic gaming device, printer, etc.) utilized by a subscriber or user of a wireless communication service to receive or convey data, control, voice, video, sound, gaming, or substantially any data-stream or signaling-stream. The foregoing terms are utilized interchangeably in the subject specification and related drawings. Likewise, the terms "access point," "base station," "Node B," "evolved Node B," "home Node B (HNB)," and the like, are utilized interchangeably in the subject application, and refer to a wireless network component or appliance that serves and receives data, control, voice, video, sound, gaming, or substantially any data-stream or signaling-stream from a set of subscriber stations. Data and signaling streams can be packetized or frame -based flows.

[0018] Furthermore, the terms "user," "subscriber," "customer," and the like are employed interchangeably throughout the subject specification, unless context warrants particular distinction(s) among the terms.

[0019] In traditional Internet-based Content Delivery Networks (CDNs), mobile specific information is not utilized to improve the speed of delivery, quality, and type of content that can or cannot be delivered to a mobile subscriber. The present invention relates to mobile content delivery that radically improves a speed of delivery, a quality of delivery, a time of delivery, and a billing of the content. In addition, the present invention enables a mobile carrier to apply a differentiated billing model for delivery of the content. The present invention facilitates either a mobile subscriber being charged for the content, a content provider being charged, both parties being charged, or free delivery of the content based upon promotional or advertising agreements between a content originator and the mobile carrier.

[0020] As shown in FIG. 1, an exemplary mobile network 10 includes a wireless mobile device 12, a mobile access network infrastructure 14 setup by a mobile service

provider/operator, a mobile content delivery network (mobile CDN) server 16 deployed within the mobile operator network or remotely deployed network, and a content database 18. In operation, the wireless mobile device 12 is coupled to mobile access network infrastructure 14, which is coupled to mobile CDN server 16, which is coupled to content database 18.

[0021] Wireless mobile device 12 can support existing and future wireless technologies supporting wireless mobile communication, including, without limitation, cell phones (mobile phones), Personal Data Assistants (PDAs), personal computers (PCs) such as laptops, palmtops, and tablet PCs, and general purpose mobile computing devices. The wireless mobile device 12 supports wireless communication with mobile operator infrastructure 14 via a wireless link 20. Such wireless communication, characteristics of wireless link 20, and the manner in which wireless link 20 is implemented and maintained can be governed by one or more applicable wireless communication protocols and/or one or more applicable signaling and network protocols. In the example embodiment, wireless mobile device 12 is configured to support Wireless GSM/GPRS/3G/CDMA W-CDMA connectivity in compliance with established European Telecommunications Standards Institute (ETSI) standards, International Telecommunication Union (ITU) standards and Third Generation Partnership Project (3GPP) standards, International Telecommunication Union (ITU) standards and the like. Of course, wireless mobile device 102 may be configured to support alternate or additional wireless data communication protocols, including variations of 3G such as 3.9G or 4G. Wireless mobile device 12 can also utilize other technologies, such as, for example, Bluetooth, IEEE 802.1 la/b/g (WLANs), IEEE 802.16 (WiMAX), IEEE 802.20, and so forth.

[0022] Mobile access network infrastructure 14 is generally deployed and managed by mobile network operators, such as Verizon and AT&T, who provide mobile services to users based on a subscription model in which mobile users pay for voice, data and other supplementary services. The mobile CDN server 16 is an intermediary between the mobile access network infrastructure 14 and the content domain where content is stored in the content database 18. The content residing at content database 18 can be stored locally in the mobile CDN server 16, or in multiple mobile CDNs, and transmitted over the mobile network operator infrastructure 14 to the end mobile subscriber 12.

[0023] The mobile CDN server 16 enhances the delivery of Internet or mobile based content by coupling mobile subscriber information derived from the mobile network 14, the subscriber device 12, the subscribers mobile charging and subscription plans, to the originator of the content, and the type of content being delivered to the mobile subscriber. The content is enhanced by applying these mobile specific characteristics during delivery of the content. The mobile CDN server 16 improves the speed of delivery, the quality of delivery, the time of delivery, and the billing of the content. The mobile CDN server 16 enables the mobile carrier to apply a differentiated billing model for delivery of the content. The mobile CDN server 16 facilitates either the mobile subscriber being charged for the content, the content provider being charged, both parties being charged, or free delivery of the content based upon promotional or advertising agreements between the content originator and the mobile carrier.

[0024] As shown in FIG. 2, an exemplary network 100 illustrates a mobile CDN server 102 interfacing with GSM/GPRS/CDMA 3G mobile access network. It should be noted that the network 100 may include additional components and functions that are unrelated to the mobile content delivery techniques described herein.

[0025] In the exemplary network 100, a mobile device (GSM/GPRS capable) 104 and a mobile device (3G capable) 106 subscribe to mobile operator services and communicate over a wireless link 108 and 110 respectively. The mobile device 104 can send or receive data or voice over the communication link 108 in the GSM/GPRS environment and the mobile device 106 over the communication link 110 in the 3G environment.

[0026] In the GSM/GPRS environment, to send or receive data with the mobile operator network, the mobile device 104 transmits/receives data and voice traffic to the Base

Transceiver Station (BTS) 112. The BTS 112 is coupled with the Base Station Controller (BSC) 114 over a communication link 116. The BSC 114 is coupled with a Mobile Switching Center (MSC) 118 over a communication link 120. The MSC 118 is linked various Mobile operator databases 122, such as a Home Location Register (HLR), Visitor Location Register (VLR), Authentication Center (AUC), Equipment Identity Register (EIR), and forth, over a communication link 124 . The MSC 118 is also linked to a Short Message Service Center (SMSC) 126 and Serving GRPS Support Node (SGSN) 128 over communication links 130 and 132 respectively. SMSC 126 and SGSN 128 are coupled with a link 127.

[0027] Likewise in the 3G environment, the mobile device 106 sends and receives data and voice traffic to NODE-B 134 over the communication link 110. The NODE-B 134 is coupled with Radio Network Controller (RNC) 136 over a communication link 138. The R C 136 is coupled with the 3G-Serving GPRS Support Node (3G-SGSN) 140 over a communication link 142. The 3G-SGSN 140 is coupled with Gateway GPRS Support Node (GGSN) 144 over a communication link 146. The GSM/GPRS network and the 3G network are coupled over a communication link 148. The GGSN 144 exposes the mobile world to the Internet 150 using a communication link 152. A Multimedia Messaging Service Center (MMSC) 154 and a Wireless Application Protocol Gateway (WAP-GW) 156 are coupled with the GGSN 144 over communication links 158 and 160, respectively. Although the schematics shown depict example arrangements of elements, additional intervening elements, devices, or components may be present in an actual embodiment (assuming that the functionality of the system is not adversely affected).

[0028] The mobile CDN server 102 is coupled with the Mobile Operator Databases 122 using a communication link 162. The manner in which the communication channel is established and maintained over communication link 162 may be governed by one or more applicable communication protocols and/or signaling protocols, such as the ETSI GSM MAP protocol specification, for example. The mobile CDN server 102 is coupled with the SMSC 126 to send and receive SMS messages over the mobile network infrastructure using a communication link 164. The manner in which communication is established and maintained over communication link 164 may be governed by one or more applicable communication protocols and/or one or more applicable network protocols, such as SMPP, CIMD2, and so forth. The mobile CDN server 102 is coupled with the Internet 150 using a communication link 166, which can include various standard data communication protocols such as TCP/IP, IEEE 802.3, and so forth. Using the link 166 the mobile CDN 102 can send or receive any content to the mobile world using the Internet 150. The mobile CN server 102 is coupled with the MMSC 154 using a communication link 168 to send and receive MMS messages. The manner in which communication is established and maintained over communication link 168 may be governed by one or more applicable communication protocols and/or one or more applicable network protocols such as the MM7 protocol. The mobile CDN 102 is coupled with the WAP-GW 156 using a communication link 170 to transfer WAP pages and related content. The manner in which communication is established and maintained over communication link 170 may be governed by one or more applicable communication protocols and/or one or more applicable network protocols. [0029] The mobile CDN server 102 is coupled with a content database 172 using a communication link.

[0030] The mobile CDN server 102 communicates with the content database 172 to retrieve and store, e.g., cache, content data to fulfill requests by a user. Using subscriber information obtained from the databases 122, content is formatted by the mobile CDN server 102 for presentation at the wireless mobile device 104 in the GSM/GRPS world or mobile device 106 in the 3G world.

[0031] In addition to content stored within the content database 172, there may be content managed by the mobile CDN server 102 that does not exist in the content database 172 and which is not tracked as individual content assets but as classes of content. In the case where content is not managed as individual assets, content is handled and tracked with respect to a policy associated with the class of content rather than the particular asset.

Examples of this include subscriber real-time video communication, subscriber to subscriber video streaming, machine to machine communications, and so forth. In the case where content is not retrieved from the content database 172, the mobile CDN server 102 may or may not store (e.g., cache) the content, but act as a pass-through.

[0032] The mobile CDN server 102 is coupled with a mobile operator billing systems 176 using a communication link 178. The mobile CDN 102 can generate log files containing transaction details for specific transactions made by the mobile user while accessing certain content which need to be billed to the end mobile user. Such billing events are submitted through this interface to the mobile operator billing system 176 through the communication link 178.

[0033] The mobile CDN server 102 uses a combination of Mobile and Internet Deep Packet Inspection, Mobile Subscriber Database Queries, Mobile Subscriber Policy Queries, Mobile Network conditions, as well as Mobile Device characteristics to apply delivery and billing/charging decisions to either enhance, degrade, store, reformat, deliver, or some combination of each of these capabilities prior to delivering the content to the mobile subscriber, or between mobile subscribers. The mobile CDN server 102 obtains information on the mobile subscribers service subscriptions, the mobile subscribers device characteristics, and the context of the content originator, such as billing relationship with the mobile carrier and the type of content being transmitted, to apply routing and delivery decisions on a per subscriber and per content originator basis. Additionally, mobile network characteristics, such as bandwidth available, network latency, and roamed to network, are used in the decision and routing analysis.

[0034] The mobile CDN server 102 mediates the delivery and billing of value-added content between the content source provider and the mobile subscriber. The coupling of information obtained from the content source to the subscribers content billing and delivery preferences enhances the overall mobile users quality of experience, and the billing/charging experience of content to mobile subscribers. Mobile carriers can leverage the mobile CDN server 102 to grow their revenue base by extending subscriptions to what has typically been Internet-based services, such as Netflix®, Apple®, Pandora® and other paid video and audio delivery platforms.

[0035] As shown in FIG. 3, the mobile CDN server 102 includes a processor 200, a memory 202 and a storage device 204. Memory 202 includes an operating system (OS) 206, such as Linux® or Windows®, and a content aware manager 208 that includes a transcoding process 500. Memory 202 may also include a database management system to manage data stored in the storage device 204. Data includes content downloaded from one or more web servers residing in the Internet 150 and data downloaded from the databases 122 that represent information about individual subscribers. More particularly, data represents information on the mobile subscribers' service subscriptions, the mobile subscribers' device characteristics, and the context of the content originator, such as billing relationship with the mobile carrier and the type of content being transmitted to apply routing and delivery decisions on a per subscriber and per content originator basis. Additionally, data may include mobile network characteristics such as bandwidth available, network latency, and roamed to network that is used in the decision and routing analysis.

[0036] The content aware manager 208 intercepts mobile subscriber requests for services and the transcoding process 500 facilitates Hypertext Transfer Protocol (HTTP) adaptive streaming of video and/or audio. In general, adaptive streaming is a hybrid approach, combining the concept of streaming with HTTP progressive download. Typically, a video or audio segment is cut into smaller segments called "chunks" and encoded to the desired format. Each chunk may be 2-4 seconds long and fall between Group of Pictures (GOP) boundaries. The "adaptive" part of this approach lies in the encoding of each segment at multiple bit rates. A client can choose between chunks of different sizes. Depending on the network bandwidth, the client can choose larger or smaller chunks ahead of time. In all forms of adaptive streaming, such as, for example, Smooth streaming™, Adobe®, Apple® Live Streaming, and DASH®, there is a manifest file that describes the available formats (e.g., bit- rates/ resolution) that the client can choose between for each segment the client downloads.

[0037] One problem encountered with adaptive streaming is that an adaptive bit-rate streaming server chooses a couple of formats based on a population of end devices in the manifest file. Typically, this is either High Definition (HD) or Secured Digital (SD) format for wired networks. However, this is not suitable for mobile devices in mobile networks and radio networks. Depending on the mobile device and a mobile network condition, these formats tend to be "more than the required" bit-rates, resulting in high consumption of radio bandwidth.

[0038] Prior to downloading a desired video, a client device may download from a video server, or otherwise access, the manifest file containing information concerning the desired video, and identify the sequence of video segments associated with the video. Process 500 enables a dynamic expansion of the set of streams in the manifest file depending on characteristics of the mobile device from mobile subscriber information derived from the mobile network. Process 500 provides transcoded streams of alternate bit rates suitable for the current mobile network conditions. In process 500, the set of streams are carefully chosen to suit the mobile network compared to the generic streams used by the servers of origin.

[0039] Process 500 ingests (either proactively or reactively) the original manifest file and changes it to include "mobile-network friendly" bit-rates and streams for the video. Each segment received from the server of origin is transcoded (or transrated) to the bit- rate/ re s o lutio n of the streams added in the manifest file.

[0040] When the client device requests the manifest file, process 500 delivers the modified manifest file, enabling the client to request the streams that are created dynamically by the mobile CDN server 102.

[0041] As shown in FIG. 4, process 500 includes, in a server residing in a mobile network, receiving (502) a mobile client request to download a video stream.

[0042] Process 500 ingests (504) a manifest file from server originating the requested video stream.

[0043] Process 500 derives (506) characteristics of a mobile device of the mobile client from mobile subscriber information derived from the mobile network. [0044] Process 500 expands (508) a set of streams in the manifest file depending on the derived characteristics of the mobile device.

[0045] Process 500 transcodes (510) the set of streams into alternate bit rates suitable for a current mobile network condition.

[0046] Process 500 delivers (512) the set of streams to the mobile client.

[0047] Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs

(application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.

[0048] These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal used to provide machine instructions and/or data to a programmable processor.

[0049] To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback), and input from the user can be received in any form, including acoustic, speech, or tactile input. [0050] The systems and techniques described here can be implemented in a computing system that includes a back-end component (e.g., a data server), or that includes a

middleware component (e.g., an application server), or that includes a front-end component (e.g., a client computer having a graphical user interface or a web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network ("LAN"), a wide area network ("WAN"), and the Internet.

[0051] The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

[0052] The foregoing description does not represent an exhaustive list of all possible implementations consistent with this disclosure or of all possible variations of the

implementations described. A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the systems, devices, methods and techniques described here. For example, various forms of the flows shown above may be used, with steps re-ordered, added, or removed. Accordingly, other implementations are within the scope of the following claims.

[0053] What is claimed is: