Senior Fitness - Exercise and Nutrition for Aging Men and Women
FREE Article Feed for your website.
Home Ownership Magazine
Party Planning Information
Article Marketing Resources
Bio-Medical Research Article Database
Informative Articles on Life, Love and Happiness
Tutorials on Business to Writing
Famous Quotes from Famous People
Song Lyric Information
New US Patent Information
Comprehensive List of Content by Category
Online Auctions and Shopping Related Articles
Article Search
Most Recent Articles
 

Weight Loss Tips Healthy Breakfast Recipes
Category:
Health / Fitness  

What are mutual funds
Category:
Finance / Investment  

Dining Out 101
Category:
Sports  

Nokia powers Vodafones HSDPA service in Australia
Category:
Marketing  

Privacy And Your Russian Wife
Category:
Travel  

Eating Out and Loosing Weight
Category:
Health / Fitness  

Is Adsense for every affiliate marketer
Category:
Marketing  

Bad Debt Loans Sub prime Debt Consolidation Loans
Category:
Finance / Investment  

For Managers—Best Practices
Category:
Business  

10 More Steps to Internet Success
Category:
Marketing  

It All Starts With Good Nutrition
Category:
Health / Fitness  

Multiple orgasms
Category:
Health / Fitness  

21 Reasons for exporting a used car from Japan
Category:
Cars And Trucks  

FOREX or Futures Where to Trade
Category:
Finance / Investment  

Breakfast for good healthy
Category:
Health / Fitness  

Caribbean Cruises Paradise Awaits Part Two
Category:
Travel  

Your Golf Score is determined by Feel
Category:
Sports  

Dish Network DVR s and What You Should Know
Category:
Computers  

Students Better Learning Ability Can Be Just a Breath Away
Category:
Education  

How autoresponder can be benefited from this course
Category:
Marketing  

Who Took Your Million Dollar Job
Category:
Education  

Diagnosis and Treatments for Irritable Bowel Syndrome
Category:
Health / Fitness  

Who Else Is Looking to Attract and Retain Hispanic Customers and...
Category:
Business  

Has The Time come For A Work From Home Career
Category:
Business  

Vegetable Gardening
Category:
Hobbies / Pastimes  

The History of London Bridge
Category:
Education  

Why Take Green Tea Concentrate
Category:
Health / Fitness  

Top Electrician Jobs
Category:
Home And Family  

What Was Albert Einstein Thinking
Category:
Self Help  

The Connection Between Best Acne Treatments and Technology
Category:
Health / Fitness  

The Importance of a Trading Plan
Category:
Finance / Investment  

China Auto Industry Running Fast
Category:
Cars And Trucks  

Hi Make Easy Money
Category:
Business  

Learning on the Net Online College Classes
Category:
Education  

Jazz Wedding Music Perfect for Every Wedding Day Event
Category:
Home And Family  

Click fraud
Category:
Marketing  

Pigeon Forge Hotels
Category:
Travel  

Barry Michaels Radio is My Life
Category:
Entertainment / Television  

Liquor Control System The Wireless World of Liquor
Category:
Marketing  

Organize Your Closets
Category:
Business  

Employ Bridging Loans for short term financial gaps
Category:
Finance / Investment  

A quick guide to remortgage
Category:
Finance / Investment  

Work from Home Careers
Category:
Business  

Remove Unwanted Hair
Category:
Health / Fitness  

High Blood Pressure Information
Category:
Health / Fitness  

Credit Card Suggestions For Bad Credit
Category:
Finance / Investment  

Night in Satun Adventures in Southern Thailand
Category:
Travel  

Tenant Loans Loan option when you are not a homeowner
Category:
Finance / Investment  

How to Make Money Online With Only Writing Articles
Category:
Marketing  

How is an online MBA program beneficial
Category:
Education  

Affiliate Marketing Does it Really Pay
Category:
Marketing  

Computer Desks think before you buy
Category:
Business  

Digital Camera Printer Making the Printing Process Easier
Category:
Computers  

The Importance of a Mentor
Category:
Business  

The steps involved in Search engine optimization SEO
Category:
Computers  

Teen Parenting Tips That Strengthen Your Bond
Category:
Home And Family  

How I Cured The Temptation To Binge
Category:
Health / Fitness  

Seeing the Light Laser Eyelid Surgery
Category:
Health / Fitness  

Tango Dance Of Love
Category:
Entertainment / Television  

A House Is for Protection a Home Should Be Protected
Category:
Finance / Investment  

This Powerful Quote Was Earth Shattering
Category:
Real Estate  

Buying Water Filters Let me Tell You Something
Category:
Health / Fitness  

Taking a Cruise Things to Do
Category:
Travel  

HOW YOU CAN ENJOY A CRUISE OF A LIFETIME YOU DESERVE IT
Category:
Travel  

Priceless advice on how to enjoy a bit of luxury without the hig...
Category:
Travel  

Naturally Sweet and Healthy The Wonders of Stevia
Category:
Sports  

Goals Be Open To Possibility
Category:
Self Help  

Euro Travel
Category:
Travel  

7 Ways to Get Traffic to Your Blog
Category:
Marketing  

Breast Enlargement Procedures Breast Enlargement Hypnosis
Category:
Health / Fitness  

Get Ahead with Bad Credit Cash Advance Loans
Category:
Finance / Investment  

Top 5 Questions On Creating Ebooks Answered
Category:
Marketing  

Is Worry Causing your Tossing and Turning
Category:
Health / Fitness  

Diet Comparison
Category:
Health / Fitness  

Weight Loss Tips
Category:
Health / Fitness

Methods and apparatus for storing and serving streaming media data Number:7,076,560 from the United States Patent and Trademark Office (PTO) owispatent

Home    Author Login    Submit Article    Article Search    Add Your Link    Edit Your Link    Contact Us    Advertising    Disclaimer

   

 
Web LinkGrinder.com

Top Breaking News
     Greek, Cypriot Leaders Resume Unification Talks in Nicosia by Nathan Morley
     Indonesia Tobacco Sales Grow, Raising Health Fears
     South Korea Allows Top Defector to Travel Overseas by VOA News

Title: Methods and apparatus for storing and serving streaming media data

Abstract: A method for storing streaming media data in a cache memory includes receiving the streaming media data from a streaming media server, the streaming media data comprising a series of packets of media data, the packets of media data including header data and payload data, separating the header data from payload data, storing a portion of the header data in a session data object in the cache memory, and storing the payload data in a first plurality of data objects in the cache memory, wherein each data object of the first plurality of data objects is directly addressable in the cache memory via an associated object handle, and wherein each data object of the first plurality of data objects stores a portion of the payload data.

Patent Number: 7,076,560 Issued on 07/11/2006 to Lango,   et al.


Inventors: Lango; Jason (Mountain View, CA); Roussos; Konstantinos (Sunnyvale, CA); Tsai; Robert (Atlanta, GA); Wagner; J. Christopher (Langley, WA)
Assignee: Network Appliance, Inc. (Sunnyvale, CA)
Appl. No.: 981673
Filed: October 16, 2001


Current U.S. Class: 709/231 ; 709/213
Current International Class: G06F 15/16 (20060101)
Field of Search: 709/213,231


References Cited [Referenced By]

U.S. Patent Documents
5043885 August 1991 Robinson
5414455 May 1995 Hooper et al.
5422674 June 1995 Hooper et al.
5586264 December 1996 Belknap et al.
5615362 March 1997 Jensen et al.
5671225 September 1997 Hooper et al.
5737747 April 1998 Vishlitzky et al.
5799185 August 1998 Watanabe
5854887 December 1998 Kindell et al.
5884298 March 1999 Smith, II et al.
5918020 June 1999 Blackard et al.
5953506 September 1999 Kalra et al.
5960452 September 1999 Chi
6061504 May 2000 Tzelnic et al.
6085193 July 2000 Malkin et al.
6098096 August 2000 Tsirigotis et al.
6134559 October 2000 Brumme et al.
6351471 February 2002 Robinett et al.
6351474 February 2002 Robinett et al.
6366970 April 2002 Wolff et al.
6407680 June 2002 Lai et al.
6463508 October 2002 Wolf et al.
6484212 November 2002 Markowitz et al.
6505169 January 2003 Bhagavath et al.
6516361 February 2003 Lym et al.
6593860 July 2003 Lai et al.
6594751 July 2003 Leivent
6629153 September 2003 Gupta et al.
6665755 December 2003 Modelski et al.
6697819 February 2004 Boudreau
6708213 March 2004 Bommaiah et al.
6721850 April 2004 Hofmann et al.
6742082 May 2004 Lango et al.
6744763 June 2004 Jones et al.
6747991 June 2004 Hemy et al.
6748481 June 2004 Parry et al.
6760765 July 2004 Asai et al.
6813690 November 2004 Lango et al.
2001/0003193 June 2001 Woodring et al.
2001/0034786 October 2001 Baumeister et al.
2002/0029282 March 2002 Buddhikot et al.
2002/0097750 July 2002 Gunaseelan et al.
2002/0116473 August 2002 Gemmell
2002/0116585 August 2002 Scherr
2002/0162047 October 2002 Peters et al.
2002/0169926 November 2002 Pinckney, III et al.
2002/0181506 December 2002 Loguinov
2003/0217113 November 2003 Katz et al.
2004/0039837 February 2004 Gupta et al.
2004/0177063 September 2004 Weber et al.
2005/0015509 January 2005 Sitaraman
2005/0055425 March 2005 Lango et al.
2005/0071496 March 2005 Singai et al.
2005/0165828 July 2005 Lango et al.

Other References

NetCacheTM 5.1 Accelerator First-Time Configuration Guide, Network Appliance, Inc., Sunnyvale, California, Apr. 2001. cited by other .
NetCacheTM 5.1 Configuration Guide, Network Appliance, Inc., Sunnyvale, California, Apr. 2001. cited by other .
NetCacheTM 5.1 Deployment Planning Guide, Network Appliance, Inc., Sunnyvale, California, Apr. 2001. cited by other .
NetCacheTM 5.1 Features and Configuration Planning Guide, Network Appliance, Inc., Sunnyvale, California, Apr. 2001. cited by other .
NetCacheTM 5.1 Routine Administration Guide, Network Appliance, Inc., Sunnyvale, California, Apr. 2001. cited by other .
NetCacheTM 5.1 Streaming Media Cache First-Time Configuration Guide, Network Appliance, Inc., Sunnyvale, California, Apr. 2001. cited by other .
NetCacheTM 5.1 Web Cache First-Time Configuration Guide, Network Appliance, Inc., Sunnyvale, California, Apr. 2001. cited by other.

Primary Examiner: Verbrugge; Kevin
Attorney, Agent or Firm: Blakely, Sokoloff, Taylor & Zafman LLP

Parent Case Text



CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims priority to Provisional U.S. Patent Application No. 60/297,943, filed on Jun. 12, 2001, entitled, "Streaming Media Payload Storage Method and Apparatus," which is incorporated herein by reference for all purposes. Co-pending U.S. patent application Ser. No. 09/981,668, entitled, "Caching Media Data Using Content-Sensitive Identifiers," filed on Oct. 16, 2001, and issued as U.S. Pat. No. 6,813,690 is also incorporated herein by reference for all purposes.
Claims



What is claimed is:

1. A method for storing streaming media data in a cache memory, the method comprising: receiving the streaming media data from a streaming media server, the streaming media data comprising a series of packets of media data, the packets of media data including header data and payload data; separating the header data from the payload data; storing a portion of the header data in a session data object in the cache memory; and storing the payload data in a first plurality of data objects in the cache memory, wherein each data object of the first plurality of data objects is directly addressable in the cache memory via an associated object handle, and wherein each data object of the first plurality of data objects stores a portion of the payload data.

2. The method of claim 1 wherein a data object of the first plurality of data objects comprises an object meta data portion and a plurality of data chunks; wherein storing the payload data in the first plurality of data objects in the cache memory further comprises: storing a number representing a total number of data chunks in the plurality of data chunks, in the object meta data portion; and storing a subset portion of payload data from a portion of payload data, in the plurality of data chunks.

3. The method of claim 2 wherein a data chunk of the plurality of data chunks comprises a chunk meta data portion, packet meta data portion, and a plurality of packet payloads, wherein storing a subset portion of payload data from the portion of payload data, further comprises: storing a number representing the total number of packet payloads in the plurality of packet payloads, in the chunk meta data portion; storing a presentation time for each packet payload, in the packet meta data portion, and storing a subgroup of payload data from the subset portion of payload data, in the plurality of packet payloads.

4. The method of claim 3 wherein the portion of the payload data are associated with a first logical segment of the streaming media data.

5. The method of claim 1 wherein receiving the streaming media data from the streaming media server comprises receiving the streaming media data from the streaming media server via a port selected from the group: 554, 2001, 1755, 80.

6. The method of claim 1 wherein the method further comprises: storing another portion of the header data into the first plurality of data objects in the cache memory.

7. The method of claim 1 wherein the streaming media data are formatted for playing on a multimedia player.

8. The method of claim 7 wherein the streaming media data are formatted for playing on players selected from the group: RealNetworks Real Player-compatible, Microsoft Media Player-compatible, Apple QuickTime player-compatible.

9. A method for serving streaming media data from a cache memory, the method comprising: retrieving payload data from a first plurality of data objects in the cache memory, wherein each data object of the first plurality of data objects is addressable in the cache memory via an associated object handle, and wherein each data object of the first plurality of data objects stores a portion of the payload data; retrieving header data from a session data object in the cache memory; combining the header data and the payload data to form a stream of media data; and serving the stream of media data to a client.

10. The method of claim 9 wherein a data object of the first plurality of data objects comprises an object meta data portion and a plurality of data chunks; wherein retrieving payload data from the first plurality of data objects in the cache memory further comprises: retrieving a number representing a total number of data chunks in the plurality of data chunks from the object meta data portion; and retrieving a subset portion of payload data from a portion of the payload data from the plurality of data chunks.

11. The method of claim 10 wherein a data chunk of the plurality of data chunks comprises a chunk meta data portion, a packet meta data portion, and a plurality of packet payloads, wherein retrieving the subset portion of the payload data from the portion of the payload data, further comprises: retrieving a number representing the total number of packet payloads in the plurality of packet payloads from the chunk meta data portion; retrieving a presentation time for each packet payload from the packet meta data portion, and retrieving a subgroup of payload data from a subset portion of payload data from the plurality of packet payloads.

12. The method of claim 11 wherein the portion of the payload data are associated with a duration of less than or equal to approximately a time selected from the group: 5 seconds, 10 seconds, 30 seconds, 1 minute.

13. The method of claim 9 wherein serving the stream of media data to the client comprises serving the streaming media data via a port selected from the group: 554,2001, 1755,80.

14. The method of claim 9 wherein the method further comprises: storing another portion of the header data into the first plurality of data objects in the cache.

15. The method of claim 9 wherein the stream of media data is formatted for playing on a multimedia player.

16. The method of claim 15 wherein the stream of media data are formatted for playing on players selected from the group: RealNetworks Real Player-compatible, Microsoft Media Player-compatible, Apple QuickTime player-compatible.

17. A computer program product for a computer system including a processor and a memory, the computer program product comprising: code that directs the processor to receive streaming media data from a streaming media server, the streaming media data comprising a series of packets of media data, the packets of media data including header data and payload data; code that directs the processor to separate the header data from payload data; code that directs the processor to store a portion of the header data in a session data object in the memory; and code that directs the processor to store the payload data in a first plurality of data objects in the memory, wherein each data object of the first plurality of data objects is directly addressable by the processor in the memory via an associated object handle, and wherein each data object of the first plurality of data objects stores a portion of the payload data; wherein the codes reside on at least one tangible medium.

18. The computer program product of claim 17 wherein a data object of the first plurality of data objects comprises an object meta data portion and a plurality of data chunks; wherein code that directs the processor to store the payload data in the first plurality of data objects in the cache memory further comprises: code that directs the processor to store in the object meta data portion, a number representing a total number of data chunks in the plurality of data chunks; and code that directs the processor to store in the plurality of data chunks, a subset portion of payload data from a portion of payload data.

19. The computer program product of claim 18 wherein a data chunk of the plurality of data chunks comprises a chunk meta data portion, packet meta data portion, and a plurality of packet payloads, wherein code that directs the processor to store the subset portion of payload data from the portion of payload data, further comprises: code that directs the processor to store in the chunk meta data portion, a number representing the total number of packet payloads in the plurality of packet payloads, code that directs the processor to store in the packet meta data portion, a presentation time for each packet payload; and code that directs the processor to store in the plurality of packet payloads, a subgroup of payload data from a subset portion of payload data.

20. The computer program product of claim 19 wherein the plurality of data chunks each have an associated payload data duration of less than or equal to approximately a time selected from the group: 10 seconds, 30 seconds, 1 minute.

21. The computer program product of claim 19 wherein the plurality of data chunks each have a size less than or equal to approximately a size selected from the group: 64 Kbytes, 128 Kbytes, 512 Kbytes, 1 Mbyte.

22. The computer program product of claim 17 wherein a format for the streaming media data is compatible for playing on a multimedia player.

23. The computer program product of claim 22 wherein a format for the streaming media data is selected from the group comprising: Microsoft Media Streaming-compatible, Real Time Streaming Protocol-compatible, RealNetworks-compatible, QuickTime-compatible.

24. A cache memory configured to provide streaming media data, the cache memory comprising: a session data file storing header data, wherein the header data are selected from the group: encoding scheme, duration; a plurality of data objects storing payload data, wherein each data object of the first plurality of data objects is addressable in the cache memory via an associated object handle, and wherein each data object of the first plurality of data objects stores a portion of the payload data; code that directs a processor to retrieve header data from the session data object in the cache memory; code that directs the processor to retrieve payload data from the plurality of data objects in the cache memory; code that directs the processor to combine the header data and the payload data to form a stream of media data; and code that directs the processor to serve the stream of media data to a client.

25. The cache memory of claim 24 wherein a data object from the plurality of data objects comprises an object meta data portion and a plurality of data chunks, wherein the object meta data portion stores a number representing a total number of data chunks in the plurality of data chunks, and wherein each data chunk of the plurality data chunks stores a subset of the payload data.

26. The cache memory of claim 25 wherein a data chunk from the plurality of data chunks comprises a chunk meta data portion, a packet meta data portion, and a plurality of packet payloads, wherein the chunk meta data portion stores a number representing a total number of packet payloads in the plurality of packet payloads, wherein the packet meta data portion stores a presentation time for each packet payload, and wherein each of the plurality of packet payloads stores only a smaller subset of the payload data.

27. The cache memory of claim 24 wherein each data object has an associated presentation time.

28. The cache memory of claim 24 wherein code that directs the processor to serve the stream of media data to a client comprises code that directs the processor to serve the stream of media data to a client on a port selected from the group: 554, 2001,1755,80.

29. The cache memory of claim 24 wherein object handle comprises an object pointer.

30. The cache memory of claim 24 wherein the stream of media data has a format compatible for playing on a multimedia player.

31. The cache memory of claim 30 wherein the stream of media data has a format selected from the group: Microsoft Media Streaming-compatible, Real Time Streaming Protocol-compatible, RealNetworks-compatible, QuickTime-compatible.
Description



BACKGROUND OF THE INVENTION

The present invention relates to data caching. More particularly, the present invention relates to apparatus for caching streaming media and to methods of streaming data from media caches.

Typical file caching methods include a cache receiving a file from a file server, and storing the entire file. Later, when a client desires the file, instead of serving the file from the file server, the file is served from the cache. Because the cache is typically a server that is closer to the client or has higher bandwidth than the file server, the file is served to the client quickly from the cache.

It has been discovered by the inventors, that attempting to apply typical file caching methods to files that include streaming media data, raises many new problems. For instance, serving a streaming media data file from a cache requires much more processing by the cache than with classical file transfers over the web. For example, during normal playback, the cache may need to perform a lot of processing such as packet modification, resequencing, and retiming. As another example, the cache may be called upon to perform random access within the streaming media data file as a result of a client "rewind" or "fast forward" operation. Because, classical caching is typically file-based, such a random access would involve moving within a very large data file.

Another drawback is that since streaming media data files are very large, a huge penalty is incurred if the streaming media data file is deleted. Typically if a file cache determines that it needs more disk space for new files, it will first delete older files, regardless of the size. As an example, if an older file is a streaming media data file that stores an hour-long program, the entire hour-long program is deleted even if the cache only needs to free up the equivalent of 1 minute of space.

Another drawback is that many different streaming media formats exist, each with its own specific streaming requirements. This is in contrast to classical file transfer over the web, where the files are essentially opaque to the cache and for streaming data to clients, the cache does not need to process the actual contents of the file beyond storage and retrieval.

Thus what is required are improved methods and apparatus for storing and serving streaming media within a cache. Further, what is required are methods and apparatus for providing such solutions in economical ways.

BRIEF SUMMARY OF THE INVENTION

The present invention relates to streaming media caches and methods of operation. More particularly, the present invention relates to efficient storage of streaming media data, and to streaming of media data stored in a streaming media cache to client systems.

In the present disclosure "Streaming media" data generally refers to media intended to be transported at a select (often, subscribed) bit rate, and with a desired timeliness. The streaming media is adapted for playback in a desired order without regard to the order the streaming media data are received by a client system. Streaming media generally conforms to a real-time delivery protocol, such as, e.g., RTSP, RTP, or the like. The media (media clip) represented in the streaming media data may include static images, video data, audio data, executable files, presentation data, applet data, data files, and the like.

The data that is cached in a streaming media cache may be an entire streaming media clip, portions of a streaming media clip, or the like. In the case where there is a streaming media cache hit, the portion of the streaming media stored in the streaming media cache is served to a client. In the case of a streaming media cache miss, the missing portion of a streaming media clip may be retrieved from a media server, instead of an entire streaming media clip. The missing portion of the streaming media clip that is retrieved from an upstream or origin server is then stored and then served to a client. Storing a streaming media clip in the efficient method described below allows the streaming media cache to maintain portions of a streaming media clip that are often requested, and to flush portions of the streaming media clip that are not often requested.

According to one aspect of the invention, a method for storing streaming media data in a cache memory is disclosed. One techniques includes receiving the streaming media data from a streaming media server, the streaming media data comprising a series of packets of media data, the packets of media data including header data and payload data, separating the header data from payload data, and storing a portion of the header data in a session data object in the cache memory. Other techniques may also include storing the payload data in a first plurality of data objects in the cache memory, wherein each data object of the first plurality of data objects is directly addressable in the cache memory via an associated object handle, and wherein each data object of the first plurality of data objects stores a portion of the payload data.

According to another aspect of the invention, a method for serving streaming media data from a cache memory is disclosed. The method may include retrieving payload data from a first plurality of data objects in the cache memory, wherein each data object of the first plurality of data objects is addressable in the cache memory via an associated object handle, and wherein each data object of the first plurality of data objects stores a portion of the payload data, and retrieving header data from a session data object in the cache memory. Combining the header data and the payload data to form a stream of media data, and serving the stream of media data to a client may also be performed.

According to another aspect of the invention, a computer program product for a computer system including a processor and a memory is described. The memory may include executable code that directs the processor to receive streaming media data from a streaming media server, the streaming media data comprising a series of packets of media data, the packets of media data including header data and payload data, executable code that directs the processor to separate the header data from payload data, and executable code that directs the processor to store a portion of the header data in a session data object in the memory. Additionally executable code that directs the processor to store the payload data in a first plurality of data objects in the memory, wherein each data object of the first plurality of data objects is directly addressable by the processor in the memory via an associated object handle, and wherein each data object of the first plurality of data objects stores a portion of the payload data may also be included in the memory. The memory is typically tangible media such as a hard disk drive, CD-ROM, floppy disk, RAM, and the like.

According to another aspect of the invention, a cache memory is described configured to provide streaming media data. The cache memory may include a session data file storing header data, wherein the header data are selected from the group: encoding scheme, duration, and a plurality of data objects storing payload data, wherein each data object of the first plurality of data objects is addressable in the cache memory via an associated object handle, and wherein each data object of the first plurality of data objects stores a portion of the payload data. The memory may also include executable code that directs the processor to retrieve header data from the session data object in the cache memory, and executable code that directs the processor to retrieve payload data from the plurality of data objects in the cache memory. Additionally, executable code that directs the processor to combine the header data and the payload data to form a stream of media data, and executable code that directs the processor to serve the stream of media data to a client may be included in the memory.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1A B illustrate overview diagrams according to embodiments of the present invention;

FIG. 2 is a simplified block diagram of a computer system according to an embodiment of the present invention;

FIG. 3 illustrates a software hierarchy according to embodiments of the present invention;

FIGS. 4A D illustrate a data format hierarchy according to an embodiment of the present invention;

FIG. 5 illustrates a block diagram of a flow chart according to an embodiment of the present invention;

FIG. 6 illustrates a block diagram of a flowchart according to an embodiment of the present invention; and

FIG. 7 illustrates a block diagram of a flowchart according to an embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1A illustrates a overview diagram according to an embodiment of the present invention. In particular, FIG. 1A includes a client system 10, a streaming media cache (server) 20, media data server 30 (streaming server), and a router 40. The elements of FIG. 1A are coupled as disclosed over computer networks such as a local area network, wide area networks (Internet), wireless networks or the like.

In one embodiment, client system 10 initially makes a request for a stream of streaming media. The media (media clip) may include static images, video data, audio data, executable files, and the like. This request may take the form of a user clicking upon a URL on a web page, or the like. In this embodiment, this request is intercepted by router 40. Router 40 may be embodied as a layer 4 or layer 7 switch, a Web Cache Coordination Protocol (WCCP) router, or any other conventional switch or router. In such embodiments, router 40 would be configured to recognize when a request is made by client system 10 for a stream of streaming media.

If such a request is determined by router 40, that request is redirected to streaming media cache 20, and not media data server 30. Once streaming media cache 20 receives the request, it makes a determination whether the stream (the entire media clip) or the requested portion of the stream (the request portion of the media clip) has already been cached. If the data has been previously stored, streaming media cache 20 provides the streaming media to client system 10.

In the present embodiment, if the data (requested portion of a stream) has not previously been stored in streaming media cache 20, streaming media cache 20 sends a request to media server 30 for a stream of data including the requested portion of a stream. As the requested portion of the stream of data are delivered to streaming media cache 20, it is forwarded to client system 10, and the portion of the stream of data are stored.

For this embodiment, the streaming media traffic is received by media cache 20 from specific ports. In specific embodiments, for RealNetworks RealSystem streaming media, media cache 20 receives streaming media via TCP on port 554; for QuickTime (RTSP) streaming media, media cache 20 receives streaming media via TCP on port 554 and/or via UDP on port 2001; for Microsoft Media Streaming (MMS) streaming media, media cache 20 receives streaming media data via TCP on port 1755; and for HTTP streaming media, media cache 20 receives streaming media data via TCP on port 80, or the like. In other embodiments, other ports for the streaming media may also be used.

The embodiment illustrated above is configured to be accessible from client system 10 via a local area network. It should be understood that streaming media cache 20 may be alternatively positioned at other points in the network, for example, at the edge of a point of presence network on the Internet, and the like. An example is illustrated in FIG. 1B

FIG. 1B illustrates a overview diagram according to another embodiment of the present invention. In particular, FIG. 1B includes a client system 15, a streaming media cache (server) 25, media data server 35 (streaming server), and a router 42. The elements of FIG. 1B are coupled as disclosed over computer networks such as a local area network, wide area networks (Internet), wireless networks or the like. In this embodiment, streaming media cache 25 may be embodied as an accelerator on the edge of a point of presence (POP).

In this embodiment, client system 15 initially makes a request for a stream of streaming media (representing a streaming media clip). This request may take the form of a user clicking upon a URL on a web page, or the like. In this embodiment, the request is passed over the wide area network and is intercepted by router 42. Router 42 may be embodied as a layer 4 or layer 7 switch, a WCCP router, or any other conventional switch or router. In this embodiments, router 42 would be configured to recognize when a request is made by client system 10 for a stream of streaming media.

If such a request is determined by router 42, that request is redirected to streaming media cache 25, and not media data server 35. Once streaming media cache 25 receives the request, it makes a determination whether the streaming media clip or the requested portion of the streaming media clip has already been cached. If the data has been previously stored, streaming media cache 25 provides the streaming media to client system 10.

In the present embodiment, if the data has is not stored in streaming media cache 25, streaming media cache 25 sends a request to media server 35 for the missing data. As the stream of data (including the portion of the streaming media clip) is delivered to streaming media cache 25, it is forwarded to client system 15. The missing portion of the streaming media clip is then stored in streaming media cache 25. Details of the storage format and the process of storing and retrieving the stream of data are described in greater detail below.

For this embodiment, the streaming media traffic is sent by media cache 20 to specific ports. In specific embodiments, for RealSystem streaming media, media cache 20 sends streaming media via TCP on port 554; for QuickTime (RTSP) streaming media, media cache 20 sends streaming media via TCP on port 554 and/or via UDP on port 2001; for Microsoft Media Streaming (MMS) streaming media, media cache 20 sends streaming media data via TCP on port 1755; and for HTTP streaming media, media cache 20 sends streaming media data via TCP on port 80, or the like. In other embodiments, other ports for the streaming media may also be used.

In other embodiments of the present invention, one or more streaming media caches may be positioned simultaneously at the illustrated locations between client system 15 and media server 35. Additional streaming media caches may also be positioned at other locations between client system 15 and media server 35, for example at a user ISP, on an intranet, and the like. In light of this disclosure, it will be apparent that many other network configurations can incorporate embodiments of the present invention.

FIG. 2 is a simplified block diagram of a computer system 45 according to an embodiment of the present invention. Computer system 45 may be used as client system 10, streaming media cache 20, and/or media data server system 30. Computer system 45 may be a stand-alone computer system, a computer "appliance," or the like.

As shown in FIG. 2, computer system 45 includes at least one processor 50, which communicates with a number of peripheral devices via a bus subsystem 55. These peripheral devices may include a storage subsystem 60, comprising a memory subsystem 65 and a file storage subsystem 70 user interface input devices 75, user interface output devices 80, and a network interface subsystem 85. The input and output devices allow user interaction with computer system 45. A user may be a human user, a device, a process, another computer, and the like.

Network interface subsystem 85 provides an interface to other computer systems. Embodiments of network interface subsystem 85 include an Ethernet card, a modem (telephone, satellite, cable, ISDN), (asynchronous) digital subscriber line (DSL) units, and the like. Network interface 250 is coupled to a typical network as shown.

User interface input devices 75 may include a keyboard, pointing devices such as a mouse, trackball, touchpad, or graphics tablet, a scanner, a barcode scanner, a touchscreen incorporated into the display, audio input devices such as voice recognition systems, microphones, and other types of input devices. In general, use of the term "input device" is intended to include all possible types of devices and ways to input information using computer system 50.

User interface output devices 80 may include a display subsystem, a printer, a fax machine, or non-visual displays such as audio output devices. The display subsystem may be a cathode ray tube (CRT), a flat-panel device such as a liquid crystal display (LCD), or a projection device. The display subsystem may also provide non-visual display such as via audio output devices. In general, use of the term "output device" is intended to include all possible types of devices and ways to output information from computer system 45.

Storage subsystem 60 may be configured to store the basic programming and data constructs that provide the functionality of the computer system and of the present invention. For example, according to an embodiment of the present invention, software modules implementing the functionality of the present invention may be stored in storage subsystem 60. These software modules may be executed by processor(s) 50 of computer system 45. In a distributed environment, the software modules may be stored on a plurality of computer systems and executed by processors of the plurality of computer systems. Storage subsystem 60 may also provide a repository for storing various databases that may be used to store information according to the teachings of the present invention. For example, a cache entry hash table, discussed below, may be stored in storage subsystem 60 of media server 30. Storage subsystem may also function as a cache of streaming media cache 20. Storage subsystem 60 may comprise memory subsystem 65 and file storage subsystem 70.

Memory subsystem 65 may include a number of memories including a main random access memory (RAM) 90 for storage of instructions and data during program execution and a read only memory (ROM) 95 in which fixed instructions are stored. RAM 90 is typically also used for execution of programs, storage of data, and the like.

File storage subsystem 70 provides persistent (non-volatile) storage for program and data files, and may include a hard disk drive, a floppy disk drive along with associated removable media, a Compact Digital Read Only Memory (CD-ROM) drive, an optical drive, removable media cartridges, and other like storage media. One or more of the drives may be located at remote locations on other connected computers.

A memory buffer 97 is also provided in storage subsystem 60. In this embodiment, memory buffer 97 is a special buffer memory coupled to file storage subsystem 70. More specifically, memory buffer 97 provides a temporary storage area for data retrieved from and data sent to file storage subsystem 70. Memory buffer 97 may also provide a temporary storage area for data received from a streaming media server (or other upstream server) and for data to be sent to client systems. As will be discussed below, the type of data may include streaming media payload data.

In the present embodiment, computer system 45 typically also includes software that enables it to send and receive data and communications to and from client systems 10 and media data server 30 using communications protocols including, HTTP, S-HTTP, TCP/IP, UDP, SSL, RTP/RTSP and the like. In alternative embodiments of the present invention, other software and transfer and communication protocols may also be used, for example IPX, UDP or the like.

Bus subsystem 55 provides a mechanism for letting the various components and subsystems of computer system 45 communicate with each other as intended. The various subsystems and components of computer system 45 need not be at the same physical location but may be distributed at various locations within a network. Although bus subsystem 55 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple busses.

Computer system 45 itself can be of varying types including a personal computer, a portable computer, a workstation, a computer terminal, a network computer, a mainframe, a kiosk, a personal digital assistant (PDA), a wireless communication device such as a cell phone, an entertainment console (PS2, X-box) or any other data processing system. Due to the ever-changing nature of computers and networks, the description of computer system 45 depicted in FIG. 1B is intended only as a specific example for purposes of illustrating an embodiment of the computer system.

In one embodiment, computer system 45 is embodied as a network cache (appliance) in a product called "NetCache" available from NetworkAppliance, Incorporated. The NetCache family of products currently includes the NetCache C1100, NetCache C3100, and NetCache C6100 including proprietary, but available hardware and software. Embodiments of the present invention may also be implemented in future additions to the NetCache family of products.

It will be readily apparent to one of ordinary skill in the art that many other hardware and software configurations are suitable for use with the present invention. For example, other types of processors are contemplated, such as the Athlon.TM. class microprocessors from AMD, the Pentium.TM. class or Celeron.TM. class microprocessors from Intel Corporation, PowerPC.TM. G3 or G4 microprocessors from Motorola, Inc., Crusoe.TM. processors from Transmeta, Inc. and the like. Further, other types of operating systems are contemplated in alternative embodiments including WindowsNT.TM. from Microsoft, Solaris from Sun Microsystems, LINUX, UNIX, MAC OS X from Apple Computer Corporation, BeOS.TM., and the like. Many other configurations of a computer system are possible having more or fewer components than the computer system depicted in FIG. 1B.

FIG. 3 illustrates a software hierarchy according to embodiments of the present invention. In particular, FIG. 3 includes a three-tiered hierarchy including an operating system level (layer) 100, a data handling level (layer) 110, and a protocol level (layer) 120.

In the present embodiment, as illustrated, operating system level (layer) 100 includes portions of the Berkeley Software Distribution (BSD) operating system. Additionally, operating system level 100 includes software provided by the assignee of the present invention: Data ONTAP.TM., a Network Appliance brand operating system with Write Anywhere File Layout (WAFL.TM.), a Network Appliance brand file system. In the present embodiment, the Data ONTAP.TM. operating system provides efficient file service by using file-system technology and a microkernel design geared towards network data access. The WAFL.TM. file system provides efficient file storage and retrieval based upon efficient access algorithms and data structures. Additionally, network communications using Transmission Control Protocol (TCP) and UDP are also supported at operating system level 100. Of course other types of operating systems can also be used.

As illustrated in FIG. 3, data handling level (layer) 110 includes a packet pacing subsystem (SMPACER) 130 and a streaming disk subsystem (SMDISK) 140. In the present embodiment, streaming disk subsystem 140 is used to retrieve data packets from the file system and to provide the data to SMPACER 130. As will be described below, in one embodiment, SMDISK 140 receives streaming media data packets and in turn SMDISK 140 creates a series of specialized data objects for storing the data. Further, SMDISK 140 receives the specialized data objects from the file system and stores the data packets into a buffer for output as streaming media.

In this embodiment, SMPACER 130 receives data packets (meta-data and payload data) via a pointer to a buffer location or the like from SMDISK 140. In turn, SMPACER 130 sends the pointers to protocol level(layer) 120. As described below, protocol level 120 formats the packets according to the desired streaming protocol. The formatted streaming packets are then received by SMPACER 130. Based upon delivery times for each packet, SMPACER 130 then sends a stream of packets to the client system at the desired rate. In particular, protocol level 120 "filters" or adjusts the "delivery time" of packets to be output to clients, and the like. The adjusted meta-data and the payload data are then output by SMPACER 130 to a client, based upon the adjusted delivery time.

In this embodiment, protocol level 120 includes support for at least one, but typically for more than one streaming media protocols. The support includes encoding of data to form streams of streaming media and decoding of streams of streaming media. In one example, a streaming media protocol is the Microsoft Media Streaming (MMS) protocol. By supporting the MMS protocol, streams of MMS formatted data can be received from a streaming media (upstream or origin) server and the streamed (payload) data can be retrieved. This payload data can be sent to data handling layer 110 via SMDISK 140 for storage. Additionally, payload data determined by SMDISK 140 can be encoded into streams of MMS data. The encoded data are then sent to SMPACER 130 for paced delivery to a client system. The client system may play the encoded data via a player such as Microsoft Windows Media Player, and the like.

In another example, a streaming media protocol is the Real Time Streaming Protocol (RTSP). In addition to RTSP support, one embodiment includes Apple QuickTime format support and RealNetworks RealSystem format support. By supporting these protocols, streams of QuickTime formatted data or RealSystem data can be received from streaming media servers and the respective streaming payload) data are retrieved. These payloads are then sent to data handling layer 110 via SMDISK 140 for storage. Additionally, payload data from SMDISK 140 can be encoded into streams of data and delivered to the client by SMPACER 130. The streaming data can be played on client systems via a QuickTime player or a RealSystem player, and the like. In other embodiments, other types of streaming media encoding schemes may be supported.

The above hierarchy has been described in embodiments as being implemented via software. However, it should be understood that some functions may be implemented in hardware or firmware. Accordingly, additional embodiments of the above may be implemented via hardware, firmware, software, and combinations thereof. Further description of SMPACER 130 will be given below.

FIGS. 4A D illustrate a data format hierarchy according to an embodiment of the present invention. In particular, FIGS. 4A D illustrate an internal storage structure/format used by embodiments for storing data that will be streamed to client systems.

An example of a streaming media cache implementing a data storage structure described below is a NetCache.TM. streaming media cache. NetCache.TM. (latest version 5.2) includes a combination of hardware and software available from the assignee of the present patent application. Embodiments of the present invention may stream data to client systems in a variety of streaming media protocols, including Microsoft Media Streaming (MMS) protocol used by Windows Media Playerm.TM.; Real Time Streaming Protocol (RTSP) used by Quicktime.TM. from Apple Corporation and RealSystem.TM. from RealNetworks; and the like.

As illustrated in FIG. 4A, the present embodiment includes a cache entry table hash table 200 and a plurality of entries wherein each entry includes an object identifier 210. In one embodiment, object identifiers are file names that have been hashed. Further details regarding this aspect of the invention are disclosed in the co-pending application cited above. Cache entry table 200 typically also includes a plurality of object handles 220 for a particular object. In the present embodiment, object handles 220 may be a reference or pointer to an object 230 corresponding to the object identifier and stored in a cache 235.

In the present embodiment, object handles 220 may be used to retrieve the corresponding object 230 from cache 235. According to an embodiment of the present invention, objects 230 are stored as separate data files in cache 235. In this embodiment, each object handle 220 corresponds to a file handle and the object itself is stored as a file. Accordingly, the individual files are each independently accessible in cache 235 by a file system.

FIG. 4B illustrates a session description 250 (stored in a session data file or session data object) and logical streams of data 260 and 270 according to an embodiment. Logical stream 260 represents data for streaming media encoded in a first encoding scheme and logical stream 270 represents data for streaming media encoded in a second encoding scheme.

In the present embodiment, each of the encodings of the data are considered separate streams of data and are stored separately. This is in contrast to cases where multiple encodings of a data stream are packaged and stored within a single data file. An example of the latter is used by RealNetworks. In particular, a data file used by RealSystem may include an encoding of data destined for 56 Kbps clients, and an encoding of data destined for 384 Kbps clients. In the present embodiment, the encoding of data destined for different bit rate clients would be stored separately. For example, a 56 Kbps encoding would be stored in logical stream 260 and a 384 Kbps encoding would be stored in logical stream 270. Other typical types of parameters that may be varied for different encodings may include the bit rate, the content (e.g. abridged, unabridged), the media type (audio and/or video), thinning parameters (frame dropping), and the like.

In FIG. 4B, session description (stored in a session data object or session data file) 250 may include a description of the various streams of data stored in logical streams 260 and 270. The description may include an enumeration of the various encoding schemes (e.g. 56 Kbps, 128 Kbps, ISDN), copyright and authoring data, presentation or play-time(duration) of the stream, version data, and the like.

As an example, a sample session description for RTSP is as follows. In particular, it illustrates extrinsic properties of the media file (author, title, copyright), as well as intrinsic properties of the media file (number of media tracks, length of media file, encoding bitrate, MIME type, and codec of each media track, etc.). All of this data together serves to help uniquely identify a particular version of the URL used to access the streaming media file. v=0 o=-983139433 983139433 IN IP4 172.30.200.154 s=G2 Video Experience i=RealNetworks .COPYRGT.1998 t=0 0 a=SdpplinVersion: 1610642970 a=Flags:integer;2 a=IsRealDataType:integer; 1 a=StreamCount:integer;2 a=Title:buffer;"RzIgVmlkZW8gRXhwZXJpZW5jZQA=" a=Copyright:buffer;"qTE5OTgA" a=Author:buffer;"UmVhbE51dHdvcmtzAA==" . . . a=range:npt=0-0 m=audio 0 RTP/AVP 101 b=AS:6 a=control:streamid=0 a=range:npt=0 59.773000 a=length:npt=59.773000 a=rtpmap:101 x-pn-realaudio a=mimetype:string;"audio/x-pn-realaudio" a=MinimumSwitchOverlap:integer;200 a=StartTime:integer;0 a=AvgBitRate:integer;6000 a=EndOneRuleEndAll:integer;1 a=AvgPacketSize:integer;288 a=SeekGreaterOnSwitch:integer;0 a=Preroll:integer;4608 a=MaxPacketSize:integer;288 a=MaxBitRate:integer;6000 a=RMFF 1.0


Free Web Sudoku Puzzles.
Solve with your browser.
  4   6     9   8
              2  
    1     2      
9   6   3       1
7     5   6     3
3       8   7   6
      7     8    
  2              
6   7     9   1  
What is it?



Add Your Site · Terms Of Service · Privacy Policy


DISCLAIMER
Linkgrinder is a free service that searches the Internet and indexes all files found so that you may search quickly and easily for shared files. These files are created and made available individually by users whose identity we are not aware of and who we have no control over. In essence we function like a search engine tool; these files ARE NOT STORED OR SERVED BY OUR NETWORK. We are not responsible for any materials obtained by using our service. We do not monitor any of the contents of these files. These files may contain viruses, illegal materials, materials inappropriate for minors, offensive files and the like. BY USING OUR SERVICE, YOU ASSUME FULL RESPONSIBILITY FOR DOWNLOADING THESE MATERIALS AND WILL INDEMNIFY US FOR ANY DAMAGES THAT MAY BE INCURRED.

For More Specific Information VIEW OUR TERMS OF SERVICE.

Thank you and Enjoy!