This invention relates generally to the field of distributed multimedia streaming and more particularly to media content distribution with performance measurement of content distribution and middleware APIs for enabling service functions which facilitate interaction between a media console or IPTV terminal and other network components in the distributed system.
High bit rate multimedia streaming, particularly high bit rate video streaming has evolved from handling thousands of simultaneous subscriber to millions of subscribers. The conventional system architecture based on a single powerful machine or a cluster system with central control can no longer meet the massive demands.
One of the most important aspects of a content distribution network is its effectiveness, i.e. how it performs better than centralized system and how different content distribution networks perform against one another. To help measure effectiveness of content distribution, a set of quantified indicators is needed.
Additionally, traditional telecom message based interfaces and the related interoperability between a media console or IPTV terminal and the content distribution system becomes a bottleneck restricting new service introduction and development. The messaged based interoperability is inflexible, and is unable to expediently support new service development. A middleware based interoperability between IPTV terminal and distributed components of the IPTV system is therefore desirable to provide a flexible and expandable solution. This is also desirable to allow application vendors to conveniently develop various new service and applications without paying attention to the detailed parameter and message format of the interface, and reduce the time-to-market to launch new services.
A media content distribution system for distributed multimedia streaming communicates over a network and incorporates multiple independent media stations, each having a media director and a number of media engines. Each media engine includes storage for media content, retrieval systems to obtain media content over the network and interconnection for streaming media content over the network. The media director controls the media station and is employed for directing retrieval over the network of media content by a selected media engine and tracking content stored on the media engines. A content request from a media console connected to the network is redirected by the media director to a selected one of the media engines storing content corresponding to the request for streaming.
At least one distribution center communicating over the network is provided and includes media content downloading capability and a media location registry communicating with the media director in each media station. The media location registry stores the location of all media content in the media stations.
Statistical indicators are defined for measuring effectiveness of the content distribution network. Push and pull indicators with additional differentiation for remote and local access to pulled content provide means for efficiency determination of data distribution and storage. In an exemplary embodiment the communications network includes means for pushing media content and a plurality of independent media stations communicate with the network, each having means for storing pushed media content locally, means for retrieving remotely stored media content over the network as pulled content and means for streaming media content over the network, and means for directing a content request from a media console connected to the network for streaming from stored content. measuring efficiency of pushed and pulled content is accomplished by measuring number of requests satisfied by pushed contents, measuring number of requests satisfied by pulled contents; and measuring number of unsatisfied requests for locally present contents In alternative embodiments the efficiency measurement further includes measuring number of requests satisfied by pulling remote contents; measuring number of unsatisfied requests for remote contents; and calculating the number of requests for remote contents. Measuring number of push sessions and calculating the efficiency of push session as a ratio of number of requests satisfied by pushed contents and the number of push sessions are also provided. Similarly, measuring the number of pull sessions and calculating an efficiency of pull sessions as a ratio of number of requests satisfied by pulling remote contents and the number of push sessions. Finally, the means for measuring efficiency in certain embodiments includes measuring a number of pulled bytes; measuring a number of pushed bytes; measuring a number of served bytes; and calculating an efficiency of push/pull as a ratio of the sum of the number of pulled bytes and the number of pushed bytes to the number of served bytes.
A middleware Application Programming Interface (API) structure is provided for flexible interfacing between media consoles and content distribution system components. For the embodiment disclosed herein, a plurality of application programming interface (API) modules are provided for Security and Authentication management; upgrade and download; media play and control; Digital Rights Management (DRM) terminal management; and, Information display and control.
These and other features and advantages of the present invention will be better understood by reference to the following detailed description when considered in connection with the accompanying drawings wherein:
a is a diagram of the hardware interaction and process for streaming data to a subscriber's media console;
b is a flow diagram of the process for streaming data as shown in
a is a block diagram of the high level data flow for the integrated media switch incorporating the invention;
b is a block diagram of Statistical indicators for measuring effectiveness of the content distribution network;
A media content distribution system incorporating the present invention employs two tiers, a media station that covers a district, and the media switch, consisting of a number of media stations, that covers a metropolitan area or several metropolitan areas.
The media station layer 110 provides multiple media stations for data streaming. A Media Station 112 is a self-sufficient streaming unit communicating with a set of subscribers having media consoles/terminals. Media Stations are typically installed in a Central Office (CO) in a broadband network. The placement of Media Stations is determined according to the number of customers to be covered, network topology, and available bandwidth of the backbone network.
As will be described in greater detail subsequently, a Media Station has sufficient storage to store most frequently accessed programs and associated metadata. A subscriber's streaming request is sent to a Media Station. The Media Station will take appropriate actions and start the stream. Other requests from the subscriber such as trick-mode operations and EPG navigations are also sent to Media Station.
Media Stations interact with the Online Support Layer 114 to obtain subscriber information, content management information, billing related information, and EPG related information. They also interact with the Online Support Layer as well as other Media Stations to copy or move program data among the Media Stations and between a Media Station and the Data Center.
Each Media Station has a number of Media Engines 116. A Media Engine can be a blade in a chassis as will be described in greater detail subsequently. The Media Engine is responsible to streaming program data to the subscribers. The specific configuration of the Media Engine depends on the number of subscribers covered and the amount of program data stored in the Media Station.
A Media Director 118 is the control unit of a Media Station. All subscribers' initial streaming requests are sent to Media Director. In addition, the Media Director controls load balance, storage balance, and media data replication within the Media Station. In certain hardware applications as described in greater detail subsequently, one of the Media Engines will be used as a backup Media Director. It mirrors data from the Media Director during normal operation and takes over the role when the Media Director is out of service.
An Online Support layer 114 manages content information for the entire Media Switch system and controls the media data distribution among Media Stations. In exemplary embodiments, the Online Support layer also provides billing and subscriber management services to Media Stations and network management functions.
A Home Media Station 120 in the online support layer stores media data for all programs that are currently in service. A Content Engine 122 in this layer is the introduction point for media data into the system. The Content Engine obtains instructions from the Media Assets Management System (MAM) 124 in the back-office layer 126 and performs necessary encoding, trans-coding, or uploading from various sources such as digital video tapes, DVD, live TV, etc., stores this data in the Home Media Station and distributes it to the Media Stations in the media station layer.
A Customer Self-service system 128 is also incorporated into the online support layer, through which a customer can check account status, pay subscription fees, purchase service plans for special programs, register service requests, as well as configure EPG settings.
The back office layer 126 provides offline support operations and generation of control data for the other layers. The Media Assets Management (MAM) system 124 is used to keep track of and control the life cycle of each media program. It assigns a system-wide unique Program ID for each new media program, and generates work orders for the Media Acquisition Control module 128, which in turn interacts with a human operator to start and control the operation of Content Engine in the online support layer. A Billing System 130 and the Subscriber Management System 132 manage back-end databases, and support user interfaces for setting up billing policies and entering or modifying subscriber information.
The MAM determines when and where to distribute a program. The CM publishes the program at the time specified by the MAM and the MLR identifies the location of the data for distribution. Logically, the resulting content distribution system is hierarchical as shown in
As previously described, a media station is a self-sufficient streaming unit covering a set of subscribers. Media stations in a typical application are installed in a CO of a broadband network. The placement of media stations is determined according to the number of subscribers to be covered, network topology and available bandwidth of the network.
As shown in
Each media program (a movie, a documentary, a TV program, a music clip, etc.) is partitioned into smaller segments. Such partition provides a small granularity for media data units and makes data movement, replications, staging and management much easier and more efficient. Distribution of the content to the media stations is accomplished as shown in
A new program is loaded and distributed by the MAM transferring metadata 502 of the new program to Content Manager (CM) 212. The MAM then instructs Content Engine (CE) 122, by means of a work order 504, to transfer the program data 506 into Home Media Station (HMS) 120. The MAM updates the state of the program to “inactive” and specifies a publish time 508. The MAM sends distribution parameters 510 to the MLR to trigger the distribution of the program 512. The MLR starts the operation sequence to distribute contents to Media Stations 112 as will be described in greater detail subsequently. The CM sends the “publish” commands to all Media Stations at a specified time to start the service of the program 514.
To provide content to the media stations to be available for subscriber access, content is “pushed” to the media stations as shown in
The MLR can plan the push sequence from Media Station to Media Station so the push operation can be done in shortest time to all Media Stations. For example, the logical tree structure shown in
For content which is not yet present on a media stations but published for distribution as shown in
For streaming content to subscribers, the media director in each of the media stations employs a load balancing scheme to keep track of the task load of the media engines in the media station. Load balance is achieved by directing streaming requests according to current system states and load distribution. An example of the communications sequence for data transfer under the command of the media director is shown in
A flow diagram of the sequence described with respect to
As a portion of the load balancing scheme, a rapid replication scheme is used to copy a segment from one media engine to another. When a media engine exceeds its capacity of streaming, a highly demanded segment can be replicated to another media engine and further requests for that segment are directed to the new media engine. The extra delay observed by the streaming request that triggered the replication is less than 30 milliseconds in exemplary embodiments.
The communications sequence is shown in
A stream swapping method is used to exchange two streams of the same segment, one on a first media engine ME2 that has a complete copy of the segment and a second on a second media engine ME1 which is currently receiving the same segment. Where the subscriber attempts a fast-forward while streaming from ME1 with the incomplete segment, the media director swaps the fast-forwarding stream from ME1 to ME2 (with the complete segment). The stream using the same segment running at normal rate is swapped from the first media engine to the second media engine thereby avoiding a failure of the fast forwarding operation.
The media engines in the media station are symmetrical with respect to input and output thereby allowing data to be taken into the media engine substantially as rapidly as streaming data is sent out. Therefore, the media station can be used as a high bit rate, massive storage repository. This architecture is specifically beneficial in live broadcast transmission where the program segments are transferred to the media stations in real time and streamed to the media consoles. Details of an embodiment of the media stations employed in the present invention are disclosed in copending patent application Attorney Docket No. U001 100085 entitled METHOD AND APPARATUS FOR A LOOSELY COUPLED, SCALABLE DISTRIBUTED MULTIMEDIA STREAMING SYSTEM having a common assignee with the present application, the disclosure of which is incorporated by reference as though fully set forth herein.
In addition to acquiring program segments, segments which are not requested from a media station will age out and be removed.
In certain instances, it is desirable to retain one copy of a program being deleted by media stations for storage reasons. This instance is also shown in
High level data flow for the overall media switch is shown in
Statistical indicators for measuring effectiveness of the content distribution network are shown in
Number of requests satisfied by pulling remote contents 1238 is defined by remote contents are not locally present and become locally present as result of the pulling operation triggered by the request. These are the requests that triggered pulling operation. The smaller proportion this number accounts for among total number of requests, the more effective the content push is. An alternative criterion, Number of requests satisfied by locally present contents 1240, is determined by locally present contents including pushed contents and pulled contents. The greater proportion this number accounts for, the more effective the combination of push and pull is. The value of Number of requests satisfied by locally present contents 1242 is the sum of Number of requests satisfied by pushed contents 1234 and Number of requests satisfied by pulled contents 1236.
Number of requests for remote contents 1246 is measured and the smaller proportion this number accounts for among total number of requests, the more effective the content push is. Number of unsatisfied requests for remote contents 1248 is created when the system is overloaded and requests cannot be satisfied regardless of whether the content is locally present or remote. Since content distribution is one of the contributors to system load, the smaller proportion this number accounts for among total number of requests, the less intrusive the overall content distribution is. The value of Number of requests for remote contents 1246 should be sum of Number of requests satisfied by pulling remote contents 1238 and Number of unsatisfied requests for remote contents 1248.
Similarly, Number of unsatisfied requests for locally present contents 1250 is also measured since when the system is overloaded these requests also can not be satisfied regardless of whether the content is locally present or remote. As with unsatisfied requests for remote contents, since content distribution is one of the contributors to system load, the smaller proportion this number accounts for among total number of requests, the less intrusive the overall content distribution is.
The total number of requests, Number of requests for contents 1232, should be sum of Number of requests satisfied by pulling remote contents 1238, Number of requests satisfied by locally present contents 1240, Number of unsatisfied requests for remote contents 1248 and Number of unsatisfied requests for locally present contents 1250.
Number of push sessions 1252 is measured to provide a ratio with Number of requests satisfied by pushed contents 1234 to indicate the effectiveness of content push 1254. The greater the ratio, the more requests a push session satisfies therefore more effective.
Similarly, Number of pull sessions 1256 is measured. A request for remote content may trigger multiple pull sessions. The ratio between Number of requests satisfied by pulled contents 1236 and Number of pull sessions 1256 indicates the effectiveness of content pull 1258. The greater the ratio, the more requests a pull session satisfies, therefore more effective it is.
To measure the total push traffic generated by the content distribution network and the total pull traffic generated by the content distribution network, Number of pushed bytes 1260 and Number of pulled bytes 1262 are measured.
The number of bytes actually consumed by users—the effective bytes, is measured by Number of served bytes 1264. The sum of Number of pushed bytes 1260 and Number of pulled bytes 1262 indicates the number of bytes made available to users. The ratio between the effective bytes and the available bytes indicates effectiveness of content push and pull 1266. The greater the ratio is, the more effective the content push and pull are. The statistical measurements discussed herein are employed for analysis and modification of the storage requirements for the media stations and the amount and timing of cached data for content segments using the various system elements as described to maximize the system efficiency.
Returning to
An integrated billing system 1222 operates similarly through the cache 1216 providing billing data to a distributed billing function 1224 within the media stations, each having a subscriber and billing cache 1226 for data storage. Billing information is then transmitted to the media console for the subscriber.
The customer self care system is also accessible by the subscriber through the media console. The customer self care system communicates through the cache to the billing and subscriber management systems.
A network management system (NMS) 1228 enables control of the hardware elements of the entire system. An exemplary NMS would be UTStarcom's MediaSwitch NMS.
From a hardware standpoint in a representative embodiment, the Media Switch system is hierarchical with four tiers; the entire system as represented in
In the embodiment shown, the Media Station is a level of abstraction, with its state represented by its MD. Therefore, the MS is not an entity in the management structure and a three-tier management system is employed.
Network management is the first level and provides a full set of management functionalities and GUI. System load and other operational parameters such as temperature and fan speed are monitored. Automatic alarms can be configured to send email or call to the system operator.
Chassis management is the second level and provides blade presence detection, automatic blade power up, remote blade power up and power down, managed blade power up to avoid current surge during disk drive spin up, chassis id reading and chassis control fail-over.
Blade self-management and monitoring is the third level and allows temperature, fan speed, and power supply voltage monitoring and alarm through SNMP to the NMS, self-health monitoring including critical threads monitoring, storage level monitoring, load monitoring, etc. All alarm thresholds can be set remotely by NMS. For software related failures, software restart or OS reboot will be attempted automatically, and the event will be reported to NMS.
As shown in
All blades in a chassis are equipped with a control unit or Chassis Blade Controller (CBC) 1406. For the exemplary embodiment, each CBC consists of an Intel 8501 chip implementing the control logic and an FPGA configured to act as the control target. The 8501 chip also communicates with the main board 1408 through a UART interface 1410. The main board can issue control commands or relay control commands received from NMS through the network to the CBC.
For the exemplary embodiment, blades located in slot 5 and 6 are the control blades. One active and one standby determined by the arbitration logic at power up. When the chassis is being powered up, the blades in slots 5 and slot 6 arbitrate and one becomes the active controller. The CBC on the active control blade scans the back-plane and powers up the blades in a controlled sequence with a pre-determined interval to avoid current surge caused by disk drive spin up on the individual blades.
The CBC on the active control blade then scans all slots on the backplane and detects the presence and status of each blade. The standby control blade monitors the status of the active control blade. When the active control blade gives up the control, the standby automatically takes over and become the active control blade.
During normal operation, the CBC on the active control blade periodically scans the backplane. If a new blade is plugged in, it will be automatically powered up.
The active control blade register itself with NMS, and can take commands from NMS for controlling other blades in the chassis, such as checking their presence and status, power up/down or power cycle a blade, etc. The non-controlling blades also register themselves to NMS and can take commands from NMS to reboot or power down.
From the management point of view, each blade is a standalone computer. Besides its application functionalities, each blade has management software to monitor the health of the application software, system load and performance, as well as hardware related parameters such as CPU temperature, fan speed, and power supply voltage. The blade management software functionality is shown in
The streaming application threads 1502 put their health and load information into a shared memory area periodically. The management monitor thread 1504 scans the area to analyze the status of the threads and the system. In addition to periodically reporting the state information to NMS through a SNMP agent 1506, appropriate actions as known in the art are taken when an abnormal state is detected.
As previously described, a service token based authentication scheme is employed as the precursor for any data transfer requested by a subscriber's media console.
A media console possesses two numbers, MC_ID and MC_Key. Those numbers can be either burned into a chip in the box, be on a Smartcard, or be on some form of non-voltile memory in the box. When a subscriber signs up for the service, the Subscriber Management system records the numbers and associates them with the user account. MC_ID and MC_Key will be subsequently passed to the Authentication Server.
A media console 104 when it powers up, after obtaining IP, sends an authentication request 1702 [which for the embodiment disclosed comprises MC_ID, {MC_ID, MC_IP, Other info, salt, checksum}_MC_Key] to the Authentication Server 1218. Note: {x}_k denotes that the message x is encrypted by k.
The Authentication Server finds the record of the media console using MC_ID, decrypts the message, and generates a session key, MC_SK, and an access_token for the media console. For an exemplary embodiment access_token={MC_SK, service code, timestamp, checksum}_MS_SK, where MS_SK is a secret key established previously between the authentication server and the media station that serves the media console; “service code” indicates what services the token can be used for. The Authentication Server calculates the “seed key” for MC_SK. The Authentication Server replies 1704 to the media console with [{access_token, MS_IP, salt, checksum}_MC_Key]. The MC decrypts the message with MC_Key and obtains mc_token and the IP address of the Media Director that it should contact. The mc_token will be kept until the media console shuts down, or the Authentication Server sends a new one. The media console sends 1706 mc_token to the application Server in the media station when requesting a media program, or the EPG server for browsing the EPG.
Middleware Application Programming Interfaces (APIs) are the enabling service functions which facilitate interaction between the media console or IPTV terminal and other content distribution network components. These services employ an open standard program interface, and can be used on different OS and hardware platforms. A middleware API module can be implemented based on various modes, but its basic function is to isolate applications from resources. Any application developed according to a specific middleware and its API can run on that middleware.
Middleware APIs are based on modularized software components. Corresponding middleware functions are implemented through a transplantable sub-layer to call OS resources, drivers and lower layer hardware resources. At the same time, the middleware core modules provide various services to upper application layer, including all services related protocols and service implementation at a client media console, such as media play and control, media stream transmission control, user authentication, system resource management, download service and security management as exemplary functions.
An application is an integration of service functions of the middleware API. The middleware API module isolates the application from the hardware and operation system, enabling portability of the application. The embodiment disclosed herein defines the middleware core module by function. The following are the defining functions: stream rendering and control by different sources; commands and events; User Authentication; system resources, such as file system, timer, etc; hardware resources, such as hard disk, memory, interface, and etc; network and transport protocol management; DRM and security management; startup and initialization; processes for security and authentications; software download and upgrades. Function of the middleware API is also extendable through use of a UltraWideBand (UWB) or WiFi chip in the media console capable of distributing content to a UWB or WiFi enabled home remote programmable device such as a PC or game controller, which operates with similar API stack to enable content distribution over dissimilar media to non-network controlled devices. Elements of the API can be distributed or derived from the signal distribution thus enabling applications at the remote programmable device to interact with the network at some or all of the API layers.
Exemplary API modules for the media content distribution system described are shown in
For the embodiment disclosed herein a Security and Authentication management API module 1802 is provided. The module is responsible for the security mechanism of whole system, including subscriber authentication, network security, software upgrade, and service application security, etc. Its main functions include Subscriber authentication; Service application authorization; Software upgrade and download authentication; Network security policy; Key and token management.
When the media console or IPTV terminal signs on to the content distribution system, the security and authentication management module initiates an IPTV terminal install procedure and subscriber authentication procedure. At the same time, through this procedure, the IPTV terminal receives and manages a corresponding key and token from system as previously described.
When the IPTV terminal upgrades and download software, the security and authentication management module authenticates the software. The user performs a Digital Signature for the application software, and the security and authentication management module checks the Digital Signature and ensures application was not changed. If the application software has not been verified with a digital signature, it will have only basic rights running in the IPTV terminal.
As shown in
A media play and control module 1806 is the streaming service controller. It provides media control and stream service operation functions for upper layer applications, such as play, pause, stop, fast forward, rapid return, etc. It is mainly responsible for screening signalling alternation and media implementation procedures of media console or IPTV terminal and media deliver system, and provide the API interface for upper applications. Consequently, media encapsulation format and signalling alternation procedure are not required by the applications. This module includes functions to create media stream control session, and be responsible for service control procedure of Video on Demand (VOD), multicast live TV, unicast live TV, and time shift; receive and decode media stream; media control, including play, stop, pause, resume, and other trick functions; media buffer management; trigger DRM process; hot key, stream control event and command handling; and Personal Video Recorder (PVR) control command;
A Digital Rights Management (DRM) API Module 1808 provides an unattached interface for upper layer applications, and admits applications to access the DRM system. The low layer DRM module will transparently process right control messages and right management messages, so the DRM module screens the difference between different DRM elements or systems. The DRM module in the exemplary embodiment includes the functions for license management; key management; and decrypting the media stream and data stream.
A terminal management API module 1810 provides IPTV terminal management and configuration functions such as local configuration, remote management, log management, version upgrade, exception management, security management, and Quality of Service policy management, etc. This detail management function includes management and configuring of the IPTV terminal through SNMP or TR069; Command Line Interface (CLI) engine; module and function configuration; system configuration such as various server address, etc; access mode configuration; Audio visual (A/V) parameter configuration; and subscriber configuration such as ADSL access account or IPTV account.
An Information display and control API module 1812 is responsible for providing a user interface (UI) engine for application and receiving, processing and dispatching some special events of the content distribution system from middleware modules to applications. These events include keyboard events, mouse events and remote controller events, including applications on the media console or remote devices communicating through the media console such as the UWB/WiFi enabled home remote programmable device previously described. This API module supports the functionality to receive Information (Price, Program, Metadata, Instant Message, and etc) from the content distribution system and to receive Information from media console remotes (subscribers).
Having now described the invention in detail as required by the patent statutes, those skilled in the art will recognize modifications and substitutions to the specific embodiments disclosed herein. Such modifications are within the scope and intent of the present invention as defined in the following claims.
This application is a continuation-in-part of U.S. patent application Ser. No. 10/826,519 filed on Apr. 16, 2004 entitled METHOD AND APPARATUS FOR A LARGE SCALE DISTRIBUTED MULTIMEDIA STREAMING SYSTEM AND ITS MEDIA CONTENT DISTRIBUTION and having a common assignee with the present application.
Number | Date | Country | |
---|---|---|---|
Parent | 10826519 | Apr 2004 | US |
Child | 11626430 | Jan 2007 | US |